summaryrefslogtreecommitdiffstats
path: root/contrib/llvm/utils/llvm.grm
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/llvm/utils/llvm.grm')
-rw-r--r--contrib/llvm/utils/llvm.grm418
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 ;
OpenPOWER on IntegriCloud