(*

polygen grammar for LLVM assembly language.

This file defines an LLVM assembly language grammar for polygen,
which is a tool for generating random text based on a grammar.
It is strictly syntax-based, and makes no attempt to generate
IR that is semantically valid. Most of the IR produced doesn't
pass the Verifier.

TODO: Metadata, in all its forms

*)

I ::=   "title:    LLVM assembly language\n"
      ^ "status:   experimental\n"
      ^ "audience: LLVM developers\n"
;

S ::= Module ;

(*
Define rules for non-keyword tokens. This is currently just a bunch
of hacks. They don't cover many valid forms of tokens, and they also
generate some invalid forms of tokens. The LLVM parser has custom
C++ code to lex these; custom C++ code for emitting them would be
convenient, but polygen doesn't support that.
*)
NonZeroDecimalDigit ::=     1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 ;
DecimalDigit        ::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 ;
DecimalDigitSeq     ::= DecimalDigit [^ DecimalDigitSeq ];
HexDigit            ::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
                      | a | b | c | d | e | f ;
HexDigitSeq         ::= HexDigit [^ HexDigitSeq ];
StringChar          ::= a | b | c | d | e | f | g | h | i | j | k | l | m
                      | n | o | p | q | r | s | t | u | v | w | x | y | z ;
StringConstantSeq   ::= StringChar [^ StringConstantSeq ];
StringConstant      ::= StringChar [^ StringConstantSeq ];
EUINT64VAL          ::= NonZeroDecimalDigit [^ DecimalDigitSeq ];
ESINT64VAL          ::= [ "-" ] ^ EUINT64VAL ;
EUAPINTVAL          ::= EUINT64VAL ;
ESAPINTVAL          ::= ESINT64VAL ;
LOCALVALID          ::= "%" ^ DecimalDigitSeq ;
GLOBALVALID         ::= "@" ^ DecimalDigitSeq ;
INTTYPE             ::= "i" ^ EUINT64VAL ;
GLOBALVAR           ::= "@" ^ StringConstant ;
LOCALVAR            ::= "%" ^ StringConstant ;
STRINGCONSTANT      ::= "\"" ^ StringConstant ^ "\"" ;
ATSTRINGCONSTANT    ::= "@" ^ STRINGCONSTANT ;
PCTSTRINGCONSTANT   ::= "%" ^ STRINGCONSTANT ;
LABELSTR            ::= StringConstant ;
FPVAL               ::= ESAPINTVAL ^ "." ^ EUAPINTVAL | "0x" ^ HexDigitSeq ;

(*
The rest of this file is derived directly from llvmAsmParser.y.
*)

ArithmeticOps ::= + OptNW add | fadd | OptNW sub | fsub | OptNW mul | fmul |
                  udiv | OptExact sdiv | fdiv | urem | srem | frem ;
LogicalOps    ::= shl | lshr | ashr | and | or | xor;
CastOps       ::= trunc | zext | sext | fptrunc | fpext | bitcast |
                  uitofp | sitofp | fptoui | fptosi | inttoptr | ptrtoint ;

IPredicates ::= eq | ne | slt | sgt | sle | sge | ult | ugt | ule | uge ;

FPredicates ::= oeq | one | olt | ogt | ole | oge | ord | uno | ueq | une
              | ult | ugt | ule | uge | true | false ;

IntType ::= INTTYPE;
FPType  ::= half | bfloat | float | double | "ppc_fp128" | fp128 | "x86_fp80";

LocalName ::= LOCALVAR | STRINGCONSTANT | PCTSTRINGCONSTANT ;
OptLocalName ::= LocalName | _ ;

OptAddrSpace ::= - addrspace ^ "(" ^ EUINT64VAL ^ ")" | _ ;

OptLocalAssign ::= LocalName "=" | _ ;

GlobalName ::= GLOBALVAR | ATSTRINGCONSTANT ;

OptGlobalAssign ::= GlobalAssign | _ ;

GlobalAssign ::= GlobalName "=" ;

GVInternalLinkage
  ::= + internal
 | weak
 | "weak_odr"
 | linkonce
 | "linkonce_odr"
 | appending
 | dllexport
 | common
 | private
 ;

GVExternalLinkage
  ::= dllimport
 | "extern_weak"
 | + external
 ;

GVVisibilityStyle
  ::= + _
 | default
 | hidden
 | protected
 ;

FunctionDeclareLinkage
  ::= + _
 | dllimport
 | "extern_weak"
 ;

FunctionDefineLinkage
  ::= + _
 | internal
 | linkonce
 | "linkonce_odr"
 | weak
 | "weak_odr"
 | dllexport
 ;

AliasLinkage ::= + _ | weak | "weak_odr" | internal ;

OptCallingConv ::= + _ |
                 ccc |
                 fastcc |
                 coldcc |
                 "x86_stdcallcc" |
                 "x86_fastcallcc" |
                 cc EUINT64VAL ;

ParamAttr ::= zeroext
 | signext
 | inreg
 | sret
 | noalias
 | nocapture
 | byval
 | nest
 | align EUINT64VAL
 ;

OptParamAttrs ::= + _ | OptParamAttrs ParamAttr ;

RetAttr       ::= inreg
              | zeroext
              | signext
              | noalias
              ;

OptRetAttrs  ::= _
             | OptRetAttrs RetAttr
             ;

FuncAttr      ::= noreturn
 | nounwind
 | inreg
 | zeroext
 | signext
 | readnone
 | readonly
 | inlinehint
 | alignstack
 | noinline
 | alwaysinline
 | optsize
 | ssp
 | sspreq
 | returns_twice
 | nonlazybind
 | sanitize_address
 | sanitize_thread
 | sanitize_memory
 | mustprogress
 | nosanitize_coverage
 ;

OptFuncAttrs  ::= + _ | OptFuncAttrs FuncAttr ;

OptGC         ::= + _ | gc STRINGCONSTANT ;

OptAlign      ::= + _ | align EUINT64VAL ;
OptCAlign     ::= + _ | ^ "," align EUINT64VAL ;

SectionString ::= section STRINGCONSTANT ;

OptSection    ::= + _ | SectionString ;

GlobalVarAttributes ::= + _ | ^ "," GlobalVarAttribute GlobalVarAttributes ;
GlobalVarAttribute  ::= SectionString | align EUINT64VAL ;

PrimType ::= INTTYPE | half | bfloat | float | double | "ppc_fp128" | fp128
          | "x86_fp80" | "x86_mmx" | "x86_amx" | - label ;

Types
  ::= opaque
 | PrimType
 | Types OptAddrSpace ^ "*"
 | SymbolicValueRef
 | "\\" ^ EUINT64VAL
 | Types "(" ^ ArgTypeListI ^ ")" OptFuncAttrs
 | void "(" ^ ArgTypeListI ^ ")" OptFuncAttrs
 | "[" ^ EUINT64VAL "x" Types ^ "]"
 | "<" ^ EUINT64VAL "x" Types ^ ">"
 | "{" TypeListI "}"
 | "{" ^ "}"
 | "<" ^ "{" TypeListI "}" ^ ">"
 | "<" ^ "{" ^ "}" ^ ">"
 ;

ArgType ::= Types OptParamAttrs ;

ResultTypes ::= Types | void ;

ArgTypeList ::= ArgType | ArgTypeList ^ "," ArgType ;

ArgTypeListI ::= ArgTypeList | ArgTypeList ^ "," "..." | "..." | _ ;

TypeListI ::= Types | TypeListI ^ "," Types ;

ConstVal::= Types "[" ^ ConstVector ^ "]"
 | Types "[" ^ "]"
 | Types "c" ^ STRINGCONSTANT
 | Types "<" ^ ConstVector ^ ">"
 | Types "{" ConstVector "}"
 | Types "{" ^ "}"
 | Types "<" ^ "{" ConstVector "}" ^ ">"
 | Types "<" ^ "{" ^ "}" ^ ">"
 | Types null
 | Types undef
 | Types SymbolicValueRef
 | Types ConstExpr
 | Types zeroinitializer
 | Types ESINT64VAL
 | Types ESAPINTVAL
 | Types EUINT64VAL
 | Types EUAPINTVAL
 | Types true
 | Types false
 | Types FPVAL ;

ConstExpr::= CastOps "(" ^ ConstVal to Types ^ ")"
 | getelementptr OptInBounds "(" ^ ConstVal IndexList ^ ")"
 | select "(" ^ ConstVal ^ "," ConstVal ^ "," ConstVal ^ ")"
 | ArithmeticOps "(" ^ ConstVal ^ "," ConstVal ^ ")"
 | LogicalOps "(" ^ ConstVal ^ "," ConstVal ^ ")"
 | icmp IPredicates "(" ^ ConstVal ^ "," ConstVal ^ ")"
 | fcmp FPredicates "(" ^ ConstVal ^ "," ConstVal ^ ")"
 | extractelement "(" ^ ConstVal ^ "," ConstVal ^ ")"
 | insertelement "(" ^ ConstVal ^ "," ConstVal ^ "," ConstVal ^ ")"
 | shufflevector "(" ^ ConstVal ^ "," ConstVal ^ "," ConstVal ^ ")"
 | extractvalue "(" ^ ConstVal ^ ConstantIndexList ^ ")"
 | insertvalue "(" ^ ConstVal ^ "," ConstVal ^ ConstantIndexList ^ ")" ;

ConstVector ::= ConstVector ^ "," ConstVal | ConstVal ;

GlobalType ::= global | constant ;

ThreadLocal ::= - "thread_local" | _ ;

AliaseeRef ::= ResultTypes SymbolicValueRef
 | bitcast "(" ^ AliaseeRef to Types ^ ")" ;

Module ::= +++ DefinitionList | --- _ ;

DefinitionList ::= - Definition | + DefinitionList Definition ;

Definition
  ::= ^ ( +++++ define Function
 | declare FunctionProto
 | - module asm AsmBlock
 | OptLocalAssign type Types
 | OptGlobalAssign GVVisibilityStyle ThreadLocal OptAddrSpace GlobalType
   ConstVal GlobalVarAttributes
 | OptGlobalAssign GVInternalLinkage GVVisibilityStyle ThreadLocal OptAddrSpace
   GlobalType ConstVal GlobalVarAttributes
 | OptGlobalAssign GVExternalLinkage GVVisibilityStyle ThreadLocal OptAddrSpace
   GlobalType Types GlobalVarAttributes
 | OptGlobalAssign GVVisibilityStyle alias AliasLinkage AliaseeRef
 | target TargetDefinition
 | deplibs "=" LibrariesDefinition
 ) ^ "\n";

AsmBlock ::= STRINGCONSTANT ;

TargetDefinition ::= triple "=" STRINGCONSTANT
 | datalayout "=" STRINGCONSTANT ;

LibrariesDefinition ::= "[" ( LibList | _ ) "]";

LibList ::= LibList ^ "," STRINGCONSTANT | STRINGCONSTANT ;

ArgListH ::= ArgListH ^ "," Types OptParamAttrs OptLocalName
 | Types OptParamAttrs OptLocalName ;

ArgList ::= ArgListH | ArgListH ^ "," "..." | "..." | _ ;

FunctionHeaderH ::= OptCallingConv OptRetAttrs ResultTypes
                  GlobalName ^ "(" ^ ArgList ^ ")"
                  OptFuncAttrs OptSection OptAlign OptGC ;

BEGIN ::= ( begin | "{" ) ^ "\n";

FunctionHeader ::=
  FunctionDefineLinkage GVVisibilityStyle FunctionHeaderH BEGIN ;

END ::= ^ ( end | "}" ) ^ "\n";

Function ::= BasicBlockList END ;

FunctionProto ::= FunctionDeclareLinkage GVVisibilityStyle FunctionHeaderH ;

OptSideEffect ::= _ | sideeffect ;

ConstValueRef ::= ESINT64VAL
 | EUINT64VAL
 | FPVAL
 | true
 | false
 | null
 | undef
 | zeroinitializer
 | "<" ConstVector ">"
 | "[" ConstVector "]"
 | "[" ^ "]"
 | "c" ^ STRINGCONSTANT
 | "{" ConstVector "}"
 | "{" ^ "}"
 | "<" ^ "{" ConstVector "}" ^ ">"
 | "<" ^ "{" ^ "}" ^ ">"
 | ConstExpr
 | asm OptSideEffect STRINGCONSTANT ^ "," STRINGCONSTANT ;

SymbolicValueRef ::= LOCALVALID
 | GLOBALVALID
 | LocalName
 | GlobalName ;

ValueRef ::= SymbolicValueRef | ConstValueRef;

ResolvedVal ::= Types ValueRef ;

ReturnedVal ::= ResolvedVal | ReturnedVal ^ "," ResolvedVal ;

BasicBlockList ::= BasicBlockList BasicBlock | FunctionHeader BasicBlock ;

BasicBlock ::= InstructionList OptLocalAssign BBTerminatorInst ;

InstructionList ::= +++ InstructionList Inst
 | - _
 | ^ LABELSTR ^ ":\n" ;

BBTerminatorInst ::= ^ "  " ^
 ( ret ReturnedVal
 | ret void
 | br label ValueRef
 | br INTTYPE ValueRef ^ "," label ValueRef ^ "," label ValueRef
 | switch IntType ValueRef ^ "," label ValueRef "[" JumpTable "]"
 | switch IntType ValueRef ^ "," label ValueRef "[" ^ "]"
 | invoke OptCallingConv ResultTypes ValueRef ^ "(" ^ ParamList ^ ")"
   OptFuncAttrs
   to label ValueRef unwind label ValueRef
 | unwind
 | unreachable ) ^ "\n";

JumpTable ::= JumpTable IntType ConstValueRef ^ "," label ValueRef
 | IntType ConstValueRef ^ "," label ValueRef ;

Inst ::= ^ "  " ^ OptLocalAssign InstVal ^ "\n";

PHIList ::= Types "[" ValueRef ^ "," ValueRef "]"
 | PHIList ^ "," "[" ValueRef ^ "," ValueRef "]" ;

ParamList ::= Types OptParamAttrs ValueRef OptParamAttrs
 | label OptParamAttrs ValueRef OptParamAttrs
 | ParamList ^ "," Types OptParamAttrs ValueRef OptParamAttrs
 | ParamList ^ "," label OptParamAttrs ValueRef OptParamAttrs
 | - _ ;

IndexList ::= _ | IndexList ^ "," ResolvedVal ;

ConstantIndexList ::= "," EUINT64VAL | ConstantIndexList ^ "," EUINT64VAL ;

OptTailCall ::= tail call | call ;

InstVal ::=
   ArithmeticOps Types ValueRef ^ "," ValueRef
 | LogicalOps Types ValueRef ^ "," ValueRef
 | icmp IPredicates Types ValueRef ^ "," ValueRef
 | fcmp FPredicates Types ValueRef ^ "," ValueRef
 | CastOps ResolvedVal to Types
 | select ResolvedVal ^ "," ResolvedVal ^ "," ResolvedVal
 | "va_arg" ResolvedVal ^ "," Types
 | extractelement ResolvedVal ^ "," ResolvedVal
 | insertelement ResolvedVal ^ "," ResolvedVal ^ "," ResolvedVal
 | shufflevector ResolvedVal ^ "," ResolvedVal ^ "," ResolvedVal
 | phi PHIList
 | OptTailCall OptCallingConv ResultTypes ValueRef ^ "(" ^ ParamList ^ ")"
   OptFuncAttrs
 | MemoryInst ;

OptVolatile ::= - volatile | _ ;
OptExact ::= - exact | _ ;
OptNSW ::= - nsw | _ ;
OptNUW ::= - nuw | _ ;
OptNW  ::= OptNUW OptNSW | OptNSW OptNUW ;
OptInBounds  ::= - inbounds | _ ;

MemoryInst ::= malloc Types OptCAlign
 | malloc Types ^ "," INTTYPE ValueRef OptCAlign
 | alloca Types OptCAlign
 | alloca Types ^ "," INTTYPE ValueRef OptCAlign
 | free ResolvedVal
 | OptVolatile load Types ValueRef OptCAlign
 | OptVolatile store ResolvedVal ^ "," Types ValueRef OptCAlign
 | getresult Types ValueRef ^ "," EUINT64VAL
 | getelementptr OptInBounds Types ValueRef IndexList
 | extractvalue Types ValueRef ^ ConstantIndexList 
 | insertvalue Types ValueRef ^ "," Types ValueRef ^ ConstantIndexList ;
