(*

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  ::= 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
 ;

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 | float | double | "ppc_fp128" | fp128 | "x86_fp80"
          | - 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 ;
