(*

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
 ;

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 ;
