xref: /aosp_15_r20/external/llvm/utils/llvm.grm (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard Worker(*
2*9880d681SAndroid Build Coastguard Worker
3*9880d681SAndroid Build Coastguard Workerpolygen grammar for LLVM assembly language.
4*9880d681SAndroid Build Coastguard Worker
5*9880d681SAndroid Build Coastguard WorkerThis file defines an LLVM assembly language grammar for polygen,
6*9880d681SAndroid Build Coastguard Workerwhich is a tool for generating random text based on a grammar.
7*9880d681SAndroid Build Coastguard WorkerIt is strictly syntax-based, and makes no attempt to generate
8*9880d681SAndroid Build Coastguard WorkerIR that is semantically valid. Most of the IR produced doesn't
9*9880d681SAndroid Build Coastguard Workerpass the Verifier.
10*9880d681SAndroid Build Coastguard Worker
11*9880d681SAndroid Build Coastguard WorkerTODO: Metadata, in all its forms
12*9880d681SAndroid Build Coastguard Worker
13*9880d681SAndroid Build Coastguard Worker*)
14*9880d681SAndroid Build Coastguard Worker
15*9880d681SAndroid Build Coastguard WorkerI ::=   "title:    LLVM assembly language\n"
16*9880d681SAndroid Build Coastguard Worker      ^ "status:   experimental\n"
17*9880d681SAndroid Build Coastguard Worker      ^ "audience: LLVM developers\n"
18*9880d681SAndroid Build Coastguard Worker;
19*9880d681SAndroid Build Coastguard Worker
20*9880d681SAndroid Build Coastguard WorkerS ::= Module ;
21*9880d681SAndroid Build Coastguard Worker
22*9880d681SAndroid Build Coastguard Worker(*
23*9880d681SAndroid Build Coastguard WorkerDefine rules for non-keyword tokens. This is currently just a bunch
24*9880d681SAndroid Build Coastguard Workerof hacks. They don't cover many valid forms of tokens, and they also
25*9880d681SAndroid Build Coastguard Workergenerate some invalid forms of tokens. The LLVM parser has custom
26*9880d681SAndroid Build Coastguard WorkerC++ code to lex these; custom C++ code for emitting them would be
27*9880d681SAndroid Build Coastguard Workerconvenient, but polygen doesn't support that.
28*9880d681SAndroid Build Coastguard Worker*)
29*9880d681SAndroid Build Coastguard WorkerNonZeroDecimalDigit ::=     1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 ;
30*9880d681SAndroid Build Coastguard WorkerDecimalDigit        ::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 ;
31*9880d681SAndroid Build Coastguard WorkerDecimalDigitSeq     ::= DecimalDigit [^ DecimalDigitSeq ];
32*9880d681SAndroid Build Coastguard WorkerHexDigit            ::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
33*9880d681SAndroid Build Coastguard Worker                      | a | b | c | d | e | f ;
34*9880d681SAndroid Build Coastguard WorkerHexDigitSeq         ::= HexDigit [^ HexDigitSeq ];
35*9880d681SAndroid Build Coastguard WorkerStringChar          ::= a | b | c | d | e | f | g | h | i | j | k | l | m
36*9880d681SAndroid Build Coastguard Worker                      | n | o | p | q | r | s | t | u | v | w | x | y | z ;
37*9880d681SAndroid Build Coastguard WorkerStringConstantSeq   ::= StringChar [^ StringConstantSeq ];
38*9880d681SAndroid Build Coastguard WorkerStringConstant      ::= StringChar [^ StringConstantSeq ];
39*9880d681SAndroid Build Coastguard WorkerEUINT64VAL          ::= NonZeroDecimalDigit [^ DecimalDigitSeq ];
40*9880d681SAndroid Build Coastguard WorkerESINT64VAL          ::= [ "-" ] ^ EUINT64VAL ;
41*9880d681SAndroid Build Coastguard WorkerEUAPINTVAL          ::= EUINT64VAL ;
42*9880d681SAndroid Build Coastguard WorkerESAPINTVAL          ::= ESINT64VAL ;
43*9880d681SAndroid Build Coastguard WorkerLOCALVALID          ::= "%" ^ DecimalDigitSeq ;
44*9880d681SAndroid Build Coastguard WorkerGLOBALVALID         ::= "@" ^ DecimalDigitSeq ;
45*9880d681SAndroid Build Coastguard WorkerINTTYPE             ::= "i" ^ EUINT64VAL ;
46*9880d681SAndroid Build Coastguard WorkerGLOBALVAR           ::= "@" ^ StringConstant ;
47*9880d681SAndroid Build Coastguard WorkerLOCALVAR            ::= "%" ^ StringConstant ;
48*9880d681SAndroid Build Coastguard WorkerSTRINGCONSTANT      ::= "\"" ^ StringConstant ^ "\"" ;
49*9880d681SAndroid Build Coastguard WorkerATSTRINGCONSTANT    ::= "@" ^ STRINGCONSTANT ;
50*9880d681SAndroid Build Coastguard WorkerPCTSTRINGCONSTANT   ::= "%" ^ STRINGCONSTANT ;
51*9880d681SAndroid Build Coastguard WorkerLABELSTR            ::= StringConstant ;
52*9880d681SAndroid Build Coastguard WorkerFPVAL               ::= ESAPINTVAL ^ "." ^ EUAPINTVAL | "0x" ^ HexDigitSeq ;
53*9880d681SAndroid Build Coastguard Worker
54*9880d681SAndroid Build Coastguard Worker(*
55*9880d681SAndroid Build Coastguard WorkerThe rest of this file is derived directly from llvmAsmParser.y.
56*9880d681SAndroid Build Coastguard Worker*)
57*9880d681SAndroid Build Coastguard Worker
58*9880d681SAndroid Build Coastguard WorkerArithmeticOps ::= + OptNW add | fadd | OptNW sub | fsub | OptNW mul | fmul |
59*9880d681SAndroid Build Coastguard Worker                  udiv | OptExact sdiv | fdiv | urem | srem | frem ;
60*9880d681SAndroid Build Coastguard WorkerLogicalOps    ::= shl | lshr | ashr | and | or | xor;
61*9880d681SAndroid Build Coastguard WorkerCastOps       ::= trunc | zext | sext | fptrunc | fpext | bitcast |
62*9880d681SAndroid Build Coastguard Worker                  uitofp | sitofp | fptoui | fptosi | inttoptr | ptrtoint ;
63*9880d681SAndroid Build Coastguard Worker
64*9880d681SAndroid Build Coastguard WorkerIPredicates ::= eq | ne | slt | sgt | sle | sge | ult | ugt | ule | uge ;
65*9880d681SAndroid Build Coastguard Worker
66*9880d681SAndroid Build Coastguard WorkerFPredicates ::= oeq | one | olt | ogt | ole | oge | ord | uno | ueq | une
67*9880d681SAndroid Build Coastguard Worker              | ult | ugt | ule | uge | true | false ;
68*9880d681SAndroid Build Coastguard Worker
69*9880d681SAndroid Build Coastguard WorkerIntType ::= INTTYPE;
70*9880d681SAndroid Build Coastguard WorkerFPType  ::= float | double | "ppc_fp128" | fp128 | "x86_fp80";
71*9880d681SAndroid Build Coastguard Worker
72*9880d681SAndroid Build Coastguard WorkerLocalName ::= LOCALVAR | STRINGCONSTANT | PCTSTRINGCONSTANT ;
73*9880d681SAndroid Build Coastguard WorkerOptLocalName ::= LocalName | _ ;
74*9880d681SAndroid Build Coastguard Worker
75*9880d681SAndroid Build Coastguard WorkerOptAddrSpace ::= - addrspace ^ "(" ^ EUINT64VAL ^ ")" | _ ;
76*9880d681SAndroid Build Coastguard Worker
77*9880d681SAndroid Build Coastguard WorkerOptLocalAssign ::= LocalName "=" | _ ;
78*9880d681SAndroid Build Coastguard Worker
79*9880d681SAndroid Build Coastguard WorkerGlobalName ::= GLOBALVAR | ATSTRINGCONSTANT ;
80*9880d681SAndroid Build Coastguard Worker
81*9880d681SAndroid Build Coastguard WorkerOptGlobalAssign ::= GlobalAssign | _ ;
82*9880d681SAndroid Build Coastguard Worker
83*9880d681SAndroid Build Coastguard WorkerGlobalAssign ::= GlobalName "=" ;
84*9880d681SAndroid Build Coastguard Worker
85*9880d681SAndroid Build Coastguard WorkerGVInternalLinkage
86*9880d681SAndroid Build Coastguard Worker  ::= + internal
87*9880d681SAndroid Build Coastguard Worker | weak
88*9880d681SAndroid Build Coastguard Worker | "weak_odr"
89*9880d681SAndroid Build Coastguard Worker | linkonce
90*9880d681SAndroid Build Coastguard Worker | "linkonce_odr"
91*9880d681SAndroid Build Coastguard Worker | appending
92*9880d681SAndroid Build Coastguard Worker | dllexport
93*9880d681SAndroid Build Coastguard Worker | common
94*9880d681SAndroid Build Coastguard Worker | private
95*9880d681SAndroid Build Coastguard Worker ;
96*9880d681SAndroid Build Coastguard Worker
97*9880d681SAndroid Build Coastguard WorkerGVExternalLinkage
98*9880d681SAndroid Build Coastguard Worker  ::= dllimport
99*9880d681SAndroid Build Coastguard Worker | "extern_weak"
100*9880d681SAndroid Build Coastguard Worker | + external
101*9880d681SAndroid Build Coastguard Worker ;
102*9880d681SAndroid Build Coastguard Worker
103*9880d681SAndroid Build Coastguard WorkerGVVisibilityStyle
104*9880d681SAndroid Build Coastguard Worker  ::= + _
105*9880d681SAndroid Build Coastguard Worker | default
106*9880d681SAndroid Build Coastguard Worker | hidden
107*9880d681SAndroid Build Coastguard Worker | protected
108*9880d681SAndroid Build Coastguard Worker ;
109*9880d681SAndroid Build Coastguard Worker
110*9880d681SAndroid Build Coastguard WorkerFunctionDeclareLinkage
111*9880d681SAndroid Build Coastguard Worker  ::= + _
112*9880d681SAndroid Build Coastguard Worker | dllimport
113*9880d681SAndroid Build Coastguard Worker | "extern_weak"
114*9880d681SAndroid Build Coastguard Worker ;
115*9880d681SAndroid Build Coastguard Worker
116*9880d681SAndroid Build Coastguard WorkerFunctionDefineLinkage
117*9880d681SAndroid Build Coastguard Worker  ::= + _
118*9880d681SAndroid Build Coastguard Worker | internal
119*9880d681SAndroid Build Coastguard Worker | linkonce
120*9880d681SAndroid Build Coastguard Worker | "linkonce_odr"
121*9880d681SAndroid Build Coastguard Worker | weak
122*9880d681SAndroid Build Coastguard Worker | "weak_odr"
123*9880d681SAndroid Build Coastguard Worker | dllexport
124*9880d681SAndroid Build Coastguard Worker ;
125*9880d681SAndroid Build Coastguard Worker
126*9880d681SAndroid Build Coastguard WorkerAliasLinkage ::= + _ | weak | "weak_odr" | internal ;
127*9880d681SAndroid Build Coastguard Worker
128*9880d681SAndroid Build Coastguard WorkerOptCallingConv ::= + _ |
129*9880d681SAndroid Build Coastguard Worker                 ccc |
130*9880d681SAndroid Build Coastguard Worker                 fastcc |
131*9880d681SAndroid Build Coastguard Worker                 coldcc |
132*9880d681SAndroid Build Coastguard Worker                 "x86_stdcallcc" |
133*9880d681SAndroid Build Coastguard Worker                 "x86_fastcallcc" |
134*9880d681SAndroid Build Coastguard Worker                 cc EUINT64VAL ;
135*9880d681SAndroid Build Coastguard Worker
136*9880d681SAndroid Build Coastguard WorkerParamAttr ::= zeroext
137*9880d681SAndroid Build Coastguard Worker | signext
138*9880d681SAndroid Build Coastguard Worker | inreg
139*9880d681SAndroid Build Coastguard Worker | sret
140*9880d681SAndroid Build Coastguard Worker | noalias
141*9880d681SAndroid Build Coastguard Worker | nocapture
142*9880d681SAndroid Build Coastguard Worker | byval
143*9880d681SAndroid Build Coastguard Worker | nest
144*9880d681SAndroid Build Coastguard Worker | align EUINT64VAL
145*9880d681SAndroid Build Coastguard Worker ;
146*9880d681SAndroid Build Coastguard Worker
147*9880d681SAndroid Build Coastguard WorkerOptParamAttrs ::= + _ | OptParamAttrs ParamAttr ;
148*9880d681SAndroid Build Coastguard Worker
149*9880d681SAndroid Build Coastguard WorkerRetAttr       ::= inreg
150*9880d681SAndroid Build Coastguard Worker              | zeroext
151*9880d681SAndroid Build Coastguard Worker              | signext
152*9880d681SAndroid Build Coastguard Worker              | noalias
153*9880d681SAndroid Build Coastguard Worker              ;
154*9880d681SAndroid Build Coastguard Worker
155*9880d681SAndroid Build Coastguard WorkerOptRetAttrs  ::= _
156*9880d681SAndroid Build Coastguard Worker             | OptRetAttrs RetAttr
157*9880d681SAndroid Build Coastguard Worker             ;
158*9880d681SAndroid Build Coastguard Worker
159*9880d681SAndroid Build Coastguard WorkerFuncAttr      ::= noreturn
160*9880d681SAndroid Build Coastguard Worker | nounwind
161*9880d681SAndroid Build Coastguard Worker | inreg
162*9880d681SAndroid Build Coastguard Worker | zeroext
163*9880d681SAndroid Build Coastguard Worker | signext
164*9880d681SAndroid Build Coastguard Worker | readnone
165*9880d681SAndroid Build Coastguard Worker | readonly
166*9880d681SAndroid Build Coastguard Worker | inlinehint
167*9880d681SAndroid Build Coastguard Worker | alignstack
168*9880d681SAndroid Build Coastguard Worker | noinline
169*9880d681SAndroid Build Coastguard Worker | alwaysinline
170*9880d681SAndroid Build Coastguard Worker | optsize
171*9880d681SAndroid Build Coastguard Worker | ssp
172*9880d681SAndroid Build Coastguard Worker | sspreq
173*9880d681SAndroid Build Coastguard Worker | returns_twice
174*9880d681SAndroid Build Coastguard Worker | nonlazybind
175*9880d681SAndroid Build Coastguard Worker | sanitize_address
176*9880d681SAndroid Build Coastguard Worker | sanitize_thread
177*9880d681SAndroid Build Coastguard Worker | sanitize_memory
178*9880d681SAndroid Build Coastguard Worker ;
179*9880d681SAndroid Build Coastguard Worker
180*9880d681SAndroid Build Coastguard WorkerOptFuncAttrs  ::= + _ | OptFuncAttrs FuncAttr ;
181*9880d681SAndroid Build Coastguard Worker
182*9880d681SAndroid Build Coastguard WorkerOptGC         ::= + _ | gc STRINGCONSTANT ;
183*9880d681SAndroid Build Coastguard Worker
184*9880d681SAndroid Build Coastguard WorkerOptAlign      ::= + _ | align EUINT64VAL ;
185*9880d681SAndroid Build Coastguard WorkerOptCAlign     ::= + _ | ^ "," align EUINT64VAL ;
186*9880d681SAndroid Build Coastguard Worker
187*9880d681SAndroid Build Coastguard WorkerSectionString ::= section STRINGCONSTANT ;
188*9880d681SAndroid Build Coastguard Worker
189*9880d681SAndroid Build Coastguard WorkerOptSection    ::= + _ | SectionString ;
190*9880d681SAndroid Build Coastguard Worker
191*9880d681SAndroid Build Coastguard WorkerGlobalVarAttributes ::= + _ | ^ "," GlobalVarAttribute GlobalVarAttributes ;
192*9880d681SAndroid Build Coastguard WorkerGlobalVarAttribute  ::= SectionString | align EUINT64VAL ;
193*9880d681SAndroid Build Coastguard Worker
194*9880d681SAndroid Build Coastguard WorkerPrimType ::= INTTYPE | float | double | "ppc_fp128" | fp128 | "x86_fp80"
195*9880d681SAndroid Build Coastguard Worker          | - label ;
196*9880d681SAndroid Build Coastguard Worker
197*9880d681SAndroid Build Coastguard WorkerTypes
198*9880d681SAndroid Build Coastguard Worker  ::= opaque
199*9880d681SAndroid Build Coastguard Worker | PrimType
200*9880d681SAndroid Build Coastguard Worker | Types OptAddrSpace ^ "*"
201*9880d681SAndroid Build Coastguard Worker | SymbolicValueRef
202*9880d681SAndroid Build Coastguard Worker | "\\" ^ EUINT64VAL
203*9880d681SAndroid Build Coastguard Worker | Types "(" ^ ArgTypeListI ^ ")" OptFuncAttrs
204*9880d681SAndroid Build Coastguard Worker | void "(" ^ ArgTypeListI ^ ")" OptFuncAttrs
205*9880d681SAndroid Build Coastguard Worker | "[" ^ EUINT64VAL "x" Types ^ "]"
206*9880d681SAndroid Build Coastguard Worker | "<" ^ EUINT64VAL "x" Types ^ ">"
207*9880d681SAndroid Build Coastguard Worker | "{" TypeListI "}"
208*9880d681SAndroid Build Coastguard Worker | "{" ^ "}"
209*9880d681SAndroid Build Coastguard Worker | "<" ^ "{" TypeListI "}" ^ ">"
210*9880d681SAndroid Build Coastguard Worker | "<" ^ "{" ^ "}" ^ ">"
211*9880d681SAndroid Build Coastguard Worker ;
212*9880d681SAndroid Build Coastguard Worker
213*9880d681SAndroid Build Coastguard WorkerArgType ::= Types OptParamAttrs ;
214*9880d681SAndroid Build Coastguard Worker
215*9880d681SAndroid Build Coastguard WorkerResultTypes ::= Types | void ;
216*9880d681SAndroid Build Coastguard Worker
217*9880d681SAndroid Build Coastguard WorkerArgTypeList ::= ArgType | ArgTypeList ^ "," ArgType ;
218*9880d681SAndroid Build Coastguard Worker
219*9880d681SAndroid Build Coastguard WorkerArgTypeListI ::= ArgTypeList | ArgTypeList ^ "," "..." | "..." | _ ;
220*9880d681SAndroid Build Coastguard Worker
221*9880d681SAndroid Build Coastguard WorkerTypeListI ::= Types | TypeListI ^ "," Types ;
222*9880d681SAndroid Build Coastguard Worker
223*9880d681SAndroid Build Coastguard WorkerConstVal::= Types "[" ^ ConstVector ^ "]"
224*9880d681SAndroid Build Coastguard Worker | Types "[" ^ "]"
225*9880d681SAndroid Build Coastguard Worker | Types "c" ^ STRINGCONSTANT
226*9880d681SAndroid Build Coastguard Worker | Types "<" ^ ConstVector ^ ">"
227*9880d681SAndroid Build Coastguard Worker | Types "{" ConstVector "}"
228*9880d681SAndroid Build Coastguard Worker | Types "{" ^ "}"
229*9880d681SAndroid Build Coastguard Worker | Types "<" ^ "{" ConstVector "}" ^ ">"
230*9880d681SAndroid Build Coastguard Worker | Types "<" ^ "{" ^ "}" ^ ">"
231*9880d681SAndroid Build Coastguard Worker | Types null
232*9880d681SAndroid Build Coastguard Worker | Types undef
233*9880d681SAndroid Build Coastguard Worker | Types SymbolicValueRef
234*9880d681SAndroid Build Coastguard Worker | Types ConstExpr
235*9880d681SAndroid Build Coastguard Worker | Types zeroinitializer
236*9880d681SAndroid Build Coastguard Worker | Types ESINT64VAL
237*9880d681SAndroid Build Coastguard Worker | Types ESAPINTVAL
238*9880d681SAndroid Build Coastguard Worker | Types EUINT64VAL
239*9880d681SAndroid Build Coastguard Worker | Types EUAPINTVAL
240*9880d681SAndroid Build Coastguard Worker | Types true
241*9880d681SAndroid Build Coastguard Worker | Types false
242*9880d681SAndroid Build Coastguard Worker | Types FPVAL ;
243*9880d681SAndroid Build Coastguard Worker
244*9880d681SAndroid Build Coastguard WorkerConstExpr::= CastOps "(" ^ ConstVal to Types ^ ")"
245*9880d681SAndroid Build Coastguard Worker | getelementptr OptInBounds "(" ^ ConstVal IndexList ^ ")"
246*9880d681SAndroid Build Coastguard Worker | select "(" ^ ConstVal ^ "," ConstVal ^ "," ConstVal ^ ")"
247*9880d681SAndroid Build Coastguard Worker | ArithmeticOps "(" ^ ConstVal ^ "," ConstVal ^ ")"
248*9880d681SAndroid Build Coastguard Worker | LogicalOps "(" ^ ConstVal ^ "," ConstVal ^ ")"
249*9880d681SAndroid Build Coastguard Worker | icmp IPredicates "(" ^ ConstVal ^ "," ConstVal ^ ")"
250*9880d681SAndroid Build Coastguard Worker | fcmp FPredicates "(" ^ ConstVal ^ "," ConstVal ^ ")"
251*9880d681SAndroid Build Coastguard Worker | extractelement "(" ^ ConstVal ^ "," ConstVal ^ ")"
252*9880d681SAndroid Build Coastguard Worker | insertelement "(" ^ ConstVal ^ "," ConstVal ^ "," ConstVal ^ ")"
253*9880d681SAndroid Build Coastguard Worker | shufflevector "(" ^ ConstVal ^ "," ConstVal ^ "," ConstVal ^ ")"
254*9880d681SAndroid Build Coastguard Worker | extractvalue "(" ^ ConstVal ^ ConstantIndexList ^ ")"
255*9880d681SAndroid Build Coastguard Worker | insertvalue "(" ^ ConstVal ^ "," ConstVal ^ ConstantIndexList ^ ")" ;
256*9880d681SAndroid Build Coastguard Worker
257*9880d681SAndroid Build Coastguard WorkerConstVector ::= ConstVector ^ "," ConstVal | ConstVal ;
258*9880d681SAndroid Build Coastguard Worker
259*9880d681SAndroid Build Coastguard WorkerGlobalType ::= global | constant ;
260*9880d681SAndroid Build Coastguard Worker
261*9880d681SAndroid Build Coastguard WorkerThreadLocal ::= - "thread_local" | _ ;
262*9880d681SAndroid Build Coastguard Worker
263*9880d681SAndroid Build Coastguard WorkerAliaseeRef ::= ResultTypes SymbolicValueRef
264*9880d681SAndroid Build Coastguard Worker | bitcast "(" ^ AliaseeRef to Types ^ ")" ;
265*9880d681SAndroid Build Coastguard Worker
266*9880d681SAndroid Build Coastguard WorkerModule ::= +++ DefinitionList | --- _ ;
267*9880d681SAndroid Build Coastguard Worker
268*9880d681SAndroid Build Coastguard WorkerDefinitionList ::= - Definition | + DefinitionList Definition ;
269*9880d681SAndroid Build Coastguard Worker
270*9880d681SAndroid Build Coastguard WorkerDefinition
271*9880d681SAndroid Build Coastguard Worker  ::= ^ ( +++++ define Function
272*9880d681SAndroid Build Coastguard Worker | declare FunctionProto
273*9880d681SAndroid Build Coastguard Worker | - module asm AsmBlock
274*9880d681SAndroid Build Coastguard Worker | OptLocalAssign type Types
275*9880d681SAndroid Build Coastguard Worker | OptGlobalAssign GVVisibilityStyle ThreadLocal OptAddrSpace GlobalType
276*9880d681SAndroid Build Coastguard Worker   ConstVal GlobalVarAttributes
277*9880d681SAndroid Build Coastguard Worker | OptGlobalAssign GVInternalLinkage GVVisibilityStyle ThreadLocal OptAddrSpace
278*9880d681SAndroid Build Coastguard Worker   GlobalType ConstVal GlobalVarAttributes
279*9880d681SAndroid Build Coastguard Worker | OptGlobalAssign GVExternalLinkage GVVisibilityStyle ThreadLocal OptAddrSpace
280*9880d681SAndroid Build Coastguard Worker   GlobalType Types GlobalVarAttributes
281*9880d681SAndroid Build Coastguard Worker | OptGlobalAssign GVVisibilityStyle alias AliasLinkage AliaseeRef
282*9880d681SAndroid Build Coastguard Worker | target TargetDefinition
283*9880d681SAndroid Build Coastguard Worker | deplibs "=" LibrariesDefinition
284*9880d681SAndroid Build Coastguard Worker ) ^ "\n";
285*9880d681SAndroid Build Coastguard Worker
286*9880d681SAndroid Build Coastguard WorkerAsmBlock ::= STRINGCONSTANT ;
287*9880d681SAndroid Build Coastguard Worker
288*9880d681SAndroid Build Coastguard WorkerTargetDefinition ::= triple "=" STRINGCONSTANT
289*9880d681SAndroid Build Coastguard Worker | datalayout "=" STRINGCONSTANT ;
290*9880d681SAndroid Build Coastguard Worker
291*9880d681SAndroid Build Coastguard WorkerLibrariesDefinition ::= "[" ( LibList | _ ) "]";
292*9880d681SAndroid Build Coastguard Worker
293*9880d681SAndroid Build Coastguard WorkerLibList ::= LibList ^ "," STRINGCONSTANT | STRINGCONSTANT ;
294*9880d681SAndroid Build Coastguard Worker
295*9880d681SAndroid Build Coastguard WorkerArgListH ::= ArgListH ^ "," Types OptParamAttrs OptLocalName
296*9880d681SAndroid Build Coastguard Worker | Types OptParamAttrs OptLocalName ;
297*9880d681SAndroid Build Coastguard Worker
298*9880d681SAndroid Build Coastguard WorkerArgList ::= ArgListH | ArgListH ^ "," "..." | "..." | _ ;
299*9880d681SAndroid Build Coastguard Worker
300*9880d681SAndroid Build Coastguard WorkerFunctionHeaderH ::= OptCallingConv OptRetAttrs ResultTypes
301*9880d681SAndroid Build Coastguard Worker                  GlobalName ^ "(" ^ ArgList ^ ")"
302*9880d681SAndroid Build Coastguard Worker                  OptFuncAttrs OptSection OptAlign OptGC ;
303*9880d681SAndroid Build Coastguard Worker
304*9880d681SAndroid Build Coastguard WorkerBEGIN ::= ( begin | "{" ) ^ "\n";
305*9880d681SAndroid Build Coastguard Worker
306*9880d681SAndroid Build Coastguard WorkerFunctionHeader ::=
307*9880d681SAndroid Build Coastguard Worker  FunctionDefineLinkage GVVisibilityStyle FunctionHeaderH BEGIN ;
308*9880d681SAndroid Build Coastguard Worker
309*9880d681SAndroid Build Coastguard WorkerEND ::= ^ ( end | "}" ) ^ "\n";
310*9880d681SAndroid Build Coastguard Worker
311*9880d681SAndroid Build Coastguard WorkerFunction ::= BasicBlockList END ;
312*9880d681SAndroid Build Coastguard Worker
313*9880d681SAndroid Build Coastguard WorkerFunctionProto ::= FunctionDeclareLinkage GVVisibilityStyle FunctionHeaderH ;
314*9880d681SAndroid Build Coastguard Worker
315*9880d681SAndroid Build Coastguard WorkerOptSideEffect ::= _ | sideeffect ;
316*9880d681SAndroid Build Coastguard Worker
317*9880d681SAndroid Build Coastguard WorkerConstValueRef ::= ESINT64VAL
318*9880d681SAndroid Build Coastguard Worker | EUINT64VAL
319*9880d681SAndroid Build Coastguard Worker | FPVAL
320*9880d681SAndroid Build Coastguard Worker | true
321*9880d681SAndroid Build Coastguard Worker | false
322*9880d681SAndroid Build Coastguard Worker | null
323*9880d681SAndroid Build Coastguard Worker | undef
324*9880d681SAndroid Build Coastguard Worker | zeroinitializer
325*9880d681SAndroid Build Coastguard Worker | "<" ConstVector ">"
326*9880d681SAndroid Build Coastguard Worker | "[" ConstVector "]"
327*9880d681SAndroid Build Coastguard Worker | "[" ^ "]"
328*9880d681SAndroid Build Coastguard Worker | "c" ^ STRINGCONSTANT
329*9880d681SAndroid Build Coastguard Worker | "{" ConstVector "}"
330*9880d681SAndroid Build Coastguard Worker | "{" ^ "}"
331*9880d681SAndroid Build Coastguard Worker | "<" ^ "{" ConstVector "}" ^ ">"
332*9880d681SAndroid Build Coastguard Worker | "<" ^ "{" ^ "}" ^ ">"
333*9880d681SAndroid Build Coastguard Worker | ConstExpr
334*9880d681SAndroid Build Coastguard Worker | asm OptSideEffect STRINGCONSTANT ^ "," STRINGCONSTANT ;
335*9880d681SAndroid Build Coastguard Worker
336*9880d681SAndroid Build Coastguard WorkerSymbolicValueRef ::= LOCALVALID
337*9880d681SAndroid Build Coastguard Worker | GLOBALVALID
338*9880d681SAndroid Build Coastguard Worker | LocalName
339*9880d681SAndroid Build Coastguard Worker | GlobalName ;
340*9880d681SAndroid Build Coastguard Worker
341*9880d681SAndroid Build Coastguard WorkerValueRef ::= SymbolicValueRef | ConstValueRef;
342*9880d681SAndroid Build Coastguard Worker
343*9880d681SAndroid Build Coastguard WorkerResolvedVal ::= Types ValueRef ;
344*9880d681SAndroid Build Coastguard Worker
345*9880d681SAndroid Build Coastguard WorkerReturnedVal ::= ResolvedVal | ReturnedVal ^ "," ResolvedVal ;
346*9880d681SAndroid Build Coastguard Worker
347*9880d681SAndroid Build Coastguard WorkerBasicBlockList ::= BasicBlockList BasicBlock | FunctionHeader BasicBlock ;
348*9880d681SAndroid Build Coastguard Worker
349*9880d681SAndroid Build Coastguard WorkerBasicBlock ::= InstructionList OptLocalAssign BBTerminatorInst ;
350*9880d681SAndroid Build Coastguard Worker
351*9880d681SAndroid Build Coastguard WorkerInstructionList ::= +++ InstructionList Inst
352*9880d681SAndroid Build Coastguard Worker | - _
353*9880d681SAndroid Build Coastguard Worker | ^ LABELSTR ^ ":\n" ;
354*9880d681SAndroid Build Coastguard Worker
355*9880d681SAndroid Build Coastguard WorkerBBTerminatorInst ::= ^ "  " ^
356*9880d681SAndroid Build Coastguard Worker ( ret ReturnedVal
357*9880d681SAndroid Build Coastguard Worker | ret void
358*9880d681SAndroid Build Coastguard Worker | br label ValueRef
359*9880d681SAndroid Build Coastguard Worker | br INTTYPE ValueRef ^ "," label ValueRef ^ "," label ValueRef
360*9880d681SAndroid Build Coastguard Worker | switch IntType ValueRef ^ "," label ValueRef "[" JumpTable "]"
361*9880d681SAndroid Build Coastguard Worker | switch IntType ValueRef ^ "," label ValueRef "[" ^ "]"
362*9880d681SAndroid Build Coastguard Worker | invoke OptCallingConv ResultTypes ValueRef ^ "(" ^ ParamList ^ ")"
363*9880d681SAndroid Build Coastguard Worker   OptFuncAttrs
364*9880d681SAndroid Build Coastguard Worker   to label ValueRef unwind label ValueRef
365*9880d681SAndroid Build Coastguard Worker | unwind
366*9880d681SAndroid Build Coastguard Worker | unreachable ) ^ "\n";
367*9880d681SAndroid Build Coastguard Worker
368*9880d681SAndroid Build Coastguard WorkerJumpTable ::= JumpTable IntType ConstValueRef ^ "," label ValueRef
369*9880d681SAndroid Build Coastguard Worker | IntType ConstValueRef ^ "," label ValueRef ;
370*9880d681SAndroid Build Coastguard Worker
371*9880d681SAndroid Build Coastguard WorkerInst ::= ^ "  " ^ OptLocalAssign InstVal ^ "\n";
372*9880d681SAndroid Build Coastguard Worker
373*9880d681SAndroid Build Coastguard WorkerPHIList ::= Types "[" ValueRef ^ "," ValueRef "]"
374*9880d681SAndroid Build Coastguard Worker | PHIList ^ "," "[" ValueRef ^ "," ValueRef "]" ;
375*9880d681SAndroid Build Coastguard Worker
376*9880d681SAndroid Build Coastguard WorkerParamList ::= Types OptParamAttrs ValueRef OptParamAttrs
377*9880d681SAndroid Build Coastguard Worker | label OptParamAttrs ValueRef OptParamAttrs
378*9880d681SAndroid Build Coastguard Worker | ParamList ^ "," Types OptParamAttrs ValueRef OptParamAttrs
379*9880d681SAndroid Build Coastguard Worker | ParamList ^ "," label OptParamAttrs ValueRef OptParamAttrs
380*9880d681SAndroid Build Coastguard Worker | - _ ;
381*9880d681SAndroid Build Coastguard Worker
382*9880d681SAndroid Build Coastguard WorkerIndexList ::= _ | IndexList ^ "," ResolvedVal ;
383*9880d681SAndroid Build Coastguard Worker
384*9880d681SAndroid Build Coastguard WorkerConstantIndexList ::= "," EUINT64VAL | ConstantIndexList ^ "," EUINT64VAL ;
385*9880d681SAndroid Build Coastguard Worker
386*9880d681SAndroid Build Coastguard WorkerOptTailCall ::= tail call | call ;
387*9880d681SAndroid Build Coastguard Worker
388*9880d681SAndroid Build Coastguard WorkerInstVal ::=
389*9880d681SAndroid Build Coastguard Worker   ArithmeticOps Types ValueRef ^ "," ValueRef
390*9880d681SAndroid Build Coastguard Worker | LogicalOps Types ValueRef ^ "," ValueRef
391*9880d681SAndroid Build Coastguard Worker | icmp IPredicates Types ValueRef ^ "," ValueRef
392*9880d681SAndroid Build Coastguard Worker | fcmp FPredicates Types ValueRef ^ "," ValueRef
393*9880d681SAndroid Build Coastguard Worker | CastOps ResolvedVal to Types
394*9880d681SAndroid Build Coastguard Worker | select ResolvedVal ^ "," ResolvedVal ^ "," ResolvedVal
395*9880d681SAndroid Build Coastguard Worker | "va_arg" ResolvedVal ^ "," Types
396*9880d681SAndroid Build Coastguard Worker | extractelement ResolvedVal ^ "," ResolvedVal
397*9880d681SAndroid Build Coastguard Worker | insertelement ResolvedVal ^ "," ResolvedVal ^ "," ResolvedVal
398*9880d681SAndroid Build Coastguard Worker | shufflevector ResolvedVal ^ "," ResolvedVal ^ "," ResolvedVal
399*9880d681SAndroid Build Coastguard Worker | phi PHIList
400*9880d681SAndroid Build Coastguard Worker | OptTailCall OptCallingConv ResultTypes ValueRef ^ "(" ^ ParamList ^ ")"
401*9880d681SAndroid Build Coastguard Worker   OptFuncAttrs
402*9880d681SAndroid Build Coastguard Worker | MemoryInst ;
403*9880d681SAndroid Build Coastguard Worker
404*9880d681SAndroid Build Coastguard WorkerOptVolatile ::= - volatile | _ ;
405*9880d681SAndroid Build Coastguard WorkerOptExact ::= - exact | _ ;
406*9880d681SAndroid Build Coastguard WorkerOptNSW ::= - nsw | _ ;
407*9880d681SAndroid Build Coastguard WorkerOptNUW ::= - nuw | _ ;
408*9880d681SAndroid Build Coastguard WorkerOptNW  ::= OptNUW OptNSW | OptNSW OptNUW ;
409*9880d681SAndroid Build Coastguard WorkerOptInBounds  ::= - inbounds | _ ;
410*9880d681SAndroid Build Coastguard Worker
411*9880d681SAndroid Build Coastguard WorkerMemoryInst ::= malloc Types OptCAlign
412*9880d681SAndroid Build Coastguard Worker | malloc Types ^ "," INTTYPE ValueRef OptCAlign
413*9880d681SAndroid Build Coastguard Worker | alloca Types OptCAlign
414*9880d681SAndroid Build Coastguard Worker | alloca Types ^ "," INTTYPE ValueRef OptCAlign
415*9880d681SAndroid Build Coastguard Worker | free ResolvedVal
416*9880d681SAndroid Build Coastguard Worker | OptVolatile load Types ValueRef OptCAlign
417*9880d681SAndroid Build Coastguard Worker | OptVolatile store ResolvedVal ^ "," Types ValueRef OptCAlign
418*9880d681SAndroid Build Coastguard Worker | getresult Types ValueRef ^ "," EUINT64VAL
419*9880d681SAndroid Build Coastguard Worker | getelementptr OptInBounds Types ValueRef IndexList
420*9880d681SAndroid Build Coastguard Worker | extractvalue Types ValueRef ^ ConstantIndexList
421*9880d681SAndroid Build Coastguard Worker | insertvalue Types ValueRef ^ "," Types ValueRef ^ ConstantIndexList ;
422