mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-15 04:30:12 +00:00
563a9cf7ba
For two intrinsics 'llvm.nvvm.texsurf.handle' and 'llvm.nvvm.texsurf.handle.internal', TableGen was emitting matching code like: if (Name.startswith("llvm.nvvm.texsurf.handle")) ... if (Name.startswith("llvm.nvvm.texsurf.handle.internal")) ... We can never match "llvm.nvvm.texsurf.handle.internal" here because it will always be erroneously matched by the first condition. The fix is to sort the intrinsic names and emit them in reverse order. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@187119 91177308-0d34-0410-b5e6-96231b3b80d8
36 lines
915 B
TableGen
36 lines
915 B
TableGen
// RUN: llvm-tblgen -gen-intrinsic %s | FileCheck %s
|
|
|
|
class IntrinsicProperty;
|
|
|
|
class ValueType<int size, int value> {
|
|
string Namespace = "MVT";
|
|
int Size = size;
|
|
int Value = value;
|
|
}
|
|
|
|
class LLVMType<ValueType vt> {
|
|
ValueType VT = vt;
|
|
}
|
|
|
|
class Intrinsic<string name, list<LLVMType> param_types = []> {
|
|
string LLVMName = name;
|
|
bit isTarget = 0;
|
|
string TargetPrefix = "";
|
|
list<LLVMType> RetTypes = [];
|
|
list<LLVMType> ParamTypes = param_types;
|
|
list<IntrinsicProperty> Properties = [];
|
|
}
|
|
|
|
def iAny : ValueType<0, 254>;
|
|
def llvm_anyint_ty : LLVMType<iAny>;
|
|
|
|
|
|
// Make sure an intrinsic name that is a prefix of another is checked after the
|
|
// other.
|
|
|
|
// CHECK: if (NameR.startswith("oo.bar.")) return Intrinsic::foo_bar;
|
|
// CHECK: if (NameR.startswith("oo.")) return Intrinsic::foo;
|
|
|
|
def int_foo : Intrinsic<"llvm.foo", [llvm_anyint_ty]>;
|
|
def int_foo_bar : Intrinsic<"llvm.foo.bar", [llvm_anyint_ty]>;
|