diff options
Diffstat (limited to 'contrib/llvm/utils/llvm.grm')
-rw-r--r-- | contrib/llvm/utils/llvm.grm | 418 |
1 files changed, 0 insertions, 418 deletions
diff --git a/contrib/llvm/utils/llvm.grm b/contrib/llvm/utils/llvm.grm deleted file mode 100644 index 9d6bdf7..0000000 --- a/contrib/llvm/utils/llvm.grm +++ /dev/null @@ -1,418 +0,0 @@ -(* - -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 - | "linker_private" - | "linker_private_weak" - ; - -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 - ; - -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 ; |