(*

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.

*)

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 ::= add | sub | mul | udiv | 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
 | linkonce
 | appending
 | dllexport
 | common
 ;

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

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

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

FunctionDefineLinkage
  ::= + _
 | internal
 | linkonce
 | weak
 | dllexport
 ;

AliasLinkage ::= + _ | weak | internal ;

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

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

OptParamAttrs ::= + _ | OptParamAttrs ParamAttr ;

FuncAttr      ::= noreturn
 | nounwind
 | zeroext
 | signext
 | readnone
 | readonly
 ;

OptFuncAttrs  ::= + _ | OptFuncAttrs FuncAttr ;

FuncNoteList  ::= FuncNote
              | FuncNoteList ^ "," FuncNote
              ;

FuncNote      ::= inline ^ "=" ^ never
              | inline ^ "=" ^ always
              | "opt_size"
              ;

OptFuncNotes  ::= _
              | notes ^ "(" ^ FuncNoteList ^ ")"
              ;

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
 | IntType ESINT64VAL
 | IntType ESAPINTVAL
 | IntType EUINT64VAL
 | IntType EUAPINTVAL
 | INTTYPE true
 | INTTYPE false
 | FPType FPVAL ;

ConstExpr::= CastOps "(" ^ ConstVal to Types ^ ")"
 | getelementptr "(" ^ ConstVal IndexList ^ ")"
 | select "(" ^ ConstVal ^ "," ConstVal ^ "," ConstVal ^ ")"
 | ArithmeticOps "(" ^ ConstVal ^ "," ConstVal ^ ")"
 | LogicalOps "(" ^ ConstVal ^ "," ConstVal ^ ")"
 | icmp IPredicates "(" ^ ConstVal ^ "," ConstVal ^ ")"
 | fcmp FPredicates "(" ^ ConstVal ^ "," ConstVal ^ ")"
 | vicmp IPredicates "(" ^ ConstVal ^ "," ConstVal ^ ")"
 | vfcmp 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
 | OptLocalAssign type void
 | OptGlobalAssign GVVisibilityStyle ThreadLocal GlobalType ConstVal
   OptAddrSpace GlobalVarAttributes
 | OptGlobalAssign GVInternalLinkage GVVisibilityStyle ThreadLocal GlobalType
   ConstVal OptAddrSpace GlobalVarAttributes
 | OptGlobalAssign GVExternalLinkage GVVisibilityStyle ThreadLocal GlobalType
   Types OptAddrSpace 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 ResultTypes GlobalName "(" ^ ArgList ^ ")"
                  OptFuncAttrs OptSection OptAlign OptGC OptFuncNotes ;

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
 | vicmp IPredicates Types ValueRef ^ "," ValueRef
 | vfcmp 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 | _ ;

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 Types ValueRef IndexList
 | extractvalue Types ValueRef ^ ConstantIndexList 
 | insertvalue Types ValueRef ^ "," Types ValueRef ^ ConstantIndexList ;
