def llvm_v4f32_ty : LLVMPackedType<v4f32, 4, llvm_float_ty>; // 4 x float
def llvm_v2f64_ty : LLVMPackedType<v2f64, 2, llvm_double_ty>;// 2 x double
+def ... : LLVMType<isVoid, "...">; // vararg
+
//===----------------------------------------------------------------------===//
// Intrinsic Definitions.
//===----------------------------------------------------------------------===//
def int_dbg_declare : Intrinsic<[llvm_void_ty, llvm_ptr_ty,
llvm_descriptor_ty]>;
+//===------------------ Exception Handling Intrinsics----------------------===//
+//
+def int_eh_exception : Intrinsic<[llvm_ptr_ty]>;
+def int_eh_handlers : Intrinsic<[llvm_ptr_ty, llvm_ptr_ty, ...]>;
+
//===----------------------------------------------------------------------===//
// Target-specific intrinsics
//===----------------------------------------------------------------------===//
for (unsigned ArgNo = 0; 1; ++ArgNo) {
int TypeID = va_arg(VA, int);
+ if (TypeID == -2) {
+ break;
+ }
+
if (TypeID == -1) {
if (ArgNo != FTy->getNumParams()+1)
CheckFailed("Intrinsic prototype has too many arguments!", F);
Comment \/\/.*
-Identifier [a-zA-Z_][0-9a-zA-Z_]*
+Identifier [a-zA-Z_][0-9a-zA-Z_]*|\.\.\.
Integer [-+]?[0-9]+|0x[0-9a-fA-F]+|0b[01]+
CodeFragment \[\{([^}]+|\}[^\]])*\}\]
StringVal \"[^"]*\"
}
static void EmitTypeVerify(std::ostream &OS, Record *ArgType) {
+ if (ArgType->getValueAsString("TypeVal") == "...") {
+ OS << "-2, ";
+ return;
+ }
+
OS << "(int)" << ArgType->getValueAsString("TypeVal") << ", ";
// If this is an integer type, check the width is correct.
if (ArgType->isSubClassOf("LLVMIntegerType"))