coldcc |
"x86_stdcallcc" |
"x86_fastcallcc" |
+ "x86_ssecallcc" |
cc EUINT64VAL ;
ParamAttr ::= zeroext
OptFuncAttrs ::= + _ | OptFuncAttrs FuncAttr ;
+FuncNoteList ::= FuncNote
+ | FuncNoteList ^ "," FuncNote
+ ;
+
+FuncNote ::= inline ^ "=" ^ never
+ | inline ^ "=" ^ always
+ | "opt_size"
+ ;
+
+OptFuncNotes ::= _
+ | notes ^ "(" ^ FuncNoteList ^ ")"
+ ;
+
OptGC ::= + _ | gc STRINGCONSTANT ;
OptAlign ::= + _ | align EUINT64VAL ;
| "[" ^ EUINT64VAL "x" Types ^ "]"
| "<" ^ EUINT64VAL "x" Types ^ ">"
| "{" TypeListI "}"
- | "{" "}"
+ | "{" ^ "}"
| "<" ^ "{" TypeListI "}" ^ ">"
- | "<" ^ "{" "}" ^ ">"
+ | "<" ^ "{" ^ "}" ^ ">"
;
ArgType ::= Types OptParamAttrs ;
TypeListI ::= Types | TypeListI ^ "," Types ;
ConstVal::= Types "[" ^ ConstVector ^ "]"
- | Types "[" "]"
+ | Types "[" ^ "]"
| Types "c" ^ STRINGCONSTANT
| Types "<" ^ ConstVector ^ ">"
| Types "{" ConstVector "}"
- | Types "{" "}"
+ | Types "{" ^ "}"
| Types "<" ^ "{" ConstVector "}" ^ ">"
- | Types "<" ^ "{" "}" ^ ">"
+ | Types "<" ^ "{" ^ "}" ^ ">"
| Types null
| Types undef
| Types SymbolicValueRef
| vfcmp FPredicates "(" ^ ConstVal ^ "," ConstVal ^ ")"
| extractelement "(" ^ ConstVal ^ "," ConstVal ^ ")"
| insertelement "(" ^ ConstVal ^ "," ConstVal ^ "," ConstVal ^ ")"
- | shufflevector "(" ^ ConstVal ^ "," ConstVal ^ "," ConstVal ^ ")" ;
+ | shufflevector "(" ^ ConstVal ^ "," ConstVal ^ "," ConstVal ^ ")"
+ | extractvalue "(" ^ ConstVal ^ ConstantIndexList ^ ")"
+ | insertvalue "(" ^ ConstVal ^ "," ConstVal ^ ConstantIndexList ^ ")" ;
ConstVector ::= ConstVector ^ "," ConstVal | ConstVal ;
ArgList ::= ArgListH | ArgListH ^ "," "..." | "..." | _ ;
FunctionHeaderH ::= OptCallingConv ResultTypes GlobalName "(" ^ ArgList ^ ")"
- OptFuncAttrs OptSection OptAlign OptGC ;
+ OptFuncAttrs OptSection OptAlign OptGC OptFuncNotes ;
BEGIN ::= ( begin | "{" ) ^ "\n";
| undef
| zeroinitializer
| "<" ConstVector ">"
+ | "[" ConstVector "]"
+ | "[" ^ "]"
+ | "c" ^ STRINGCONSTANT
+ | "{" ConstVector "}"
+ | "{" ^ "}"
+ | "<" ^ "{" ConstVector "}" ^ ">"
+ | "<" ^ "{" ^ "}" ^ ">"
| ConstExpr
| asm OptSideEffect STRINGCONSTANT ^ "," STRINGCONSTANT ;
| 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
+ | switch IntType ValueRef ^ "," label ValueRef "[" ^ "]"
+ | invoke OptCallingConv ResultTypes ValueRef ^ "(" ^ ParamList ^ ")"
+ OptFuncAttrs
to label ValueRef unwind label ValueRef
| unwind
| unreachable ) ^ "\n";
IndexList ::= _ | IndexList ^ "," ResolvedVal ;
+ConstantIndexList ::= "," EUINT64VAL | ConstantIndexList ^ "," EUINT64VAL ;
+
OptTailCall ::= tail call | call ;
InstVal ::=
| vfcmp FPredicates Types ValueRef ^ "," ValueRef
| CastOps ResolvedVal to Types
| select ResolvedVal ^ "," ResolvedVal ^ "," ResolvedVal
- | vaarg ResolvedVal ^ "," Types
+ | "va_arg" ResolvedVal ^ "," Types
| extractelement ResolvedVal ^ "," ResolvedVal
| insertelement ResolvedVal ^ "," ResolvedVal ^ "," ResolvedVal
| shufflevector ResolvedVal ^ "," ResolvedVal ^ "," ResolvedVal
| phi PHIList
- | OptTailCall OptCallingConv ResultTypes ValueRef "(" ^ ParamList ^ ")"
+ | OptTailCall OptCallingConv ResultTypes ValueRef ^ "(" ^ ParamList ^ ")"
OptFuncAttrs
| MemoryInst ;
| OptVolatile load Types ValueRef OptCAlign
| OptVolatile store ResolvedVal ^ "," Types ValueRef OptCAlign
| getresult Types ValueRef ^ "," EUINT64VAL
- | getelementptr Types ValueRef IndexList ;
+ | getelementptr Types ValueRef IndexList
+ | extractvalue Types ValueRef ^ ConstantIndexList
+ | insertvalue Types ValueRef ^ "," Types ValueRef ^ ConstantIndexList ;