Index: llvm/test/TableGen/intrinsic-pointer-to-any.td =================================================================== --- /dev/null +++ llvm/test/TableGen/intrinsic-pointer-to-any.td @@ -0,0 +1,51 @@ +// RUN: llvm-tblgen -gen-intrinsic-impl %s | FileCheck %s + +class IntrinsicProperty; +class SDNodeProperty; + +class ValueType { + string Namespace = "MVT"; + int Size = size; + int Value = value; +} + +def iPTR : ValueType<0 , 254>; +def Any : ValueType<0 , 255>; + +class LLVMType { + ValueType VT = vt; + int isAny = 0; +} + + +class Intrinsic ret_types, + list param_types = [], + list intr_properties = [], + string name = ""> { + string LLVMName = name; + string TargetPrefix = ""; // Set to a prefix for target-specific intrinsics. + list RetTypes = ret_types; + list ParamTypes = param_types; + list IntrProperties = intr_properties; + list Properties = []; + + bit isTarget = 0; +} + +class LLVMQualPointerType + : LLVMType{ + LLVMType ElTy = elty; + int AddrSpace = addrspace; +} + +class LLVMPointerType + : LLVMQualPointerType; + +let isAny = 1 in { + def llvm_any_ty : LLVMType; +} +def i8 : ValueType<8, 3>; +def llvm_i8_ty : LLVMType; + +def int_has_ptr_to_any : Intrinsic<[LLVMPointerType, llvm_i8_ty]>; +// CHECK: /* 0 */ 21, 14, 15, 0, 2, 0 Index: llvm/utils/TableGen/IntrinsicEmitter.cpp =================================================================== --- llvm/utils/TableGen/IntrinsicEmitter.cpp +++ llvm/utils/TableGen/IntrinsicEmitter.cpp @@ -372,6 +372,9 @@ unsigned Tmp = 0; switch (getValueType(R->getValueAsDef("VT"))) { default: break; + case MVT::iPTR: + UpdateArgCodes(R->getValueAsDef("ElTy"), ArgCodes, NumInserted, Mapping); + break; case MVT::iPTRAny: ++Tmp; LLVM_FALLTHROUGH;