64 lines · plain
1// RUN: llvm-tblgen -gen-searchable-tables -I %p/../../include -DTEST_INTRINSICS_SUPPRESS_DEFS %s | FileCheck %s2// XFAIL: vg_leak3 4include "llvm/TableGen/SearchableTable.td"5include "llvm/Target/Target.td"6 7def DummyTarget : Target;8 9def int_abc : Intrinsic<[llvm_anyint_ty]>;10def int_xyz : Intrinsic<[llvm_anyint_ty]>;11 12let TargetPrefix = "gtarget" in {13 def int_gtarget_def : Intrinsic<[llvm_anyint_ty]>;14 def int_gtarget_defg : Intrinsic<[llvm_anyint_ty]>;15 def int_gtarget_uvw : Intrinsic<[llvm_anyint_ty]>;16}17 18let TargetPrefix = "ftarget" in {19 def int_ftarget_ghi : Intrinsic<[llvm_anyint_ty]>;20 def int_ftarget_ghi_x : Intrinsic<[llvm_anyint_ty]>;21 def int_ftarget_rst : Intrinsic<[llvm_anyint_ty]>;22}23 24class Table<Intrinsic intr, int payload> : SearchableTable {25 let SearchableFields = ["Intr"];26 let EnumNameField = ?;27 28 Intrinsic Intr = !cast<Intrinsic>(intr);29 bits<16> Payload = payload;30}31 32// CHECK-LABEL: TablesList[] = {33// CHECK-DAG: { Intrinsic::abc, 0x0 },34// CHECK-DAG: { Intrinsic::xyz, 0x1 },35// CHECK-DAG: { Intrinsic::gtarget_def, 0x10 },36// CHECK-DAG: { Intrinsic::gtarget_defg, 0x11 },37// CHECK-DAG: { Intrinsic::gtarget_uvw, 0x12 },38// CHECK-DAG: { Intrinsic::ftarget_ghi, 0x20 },39// CHECK-DAG: { Intrinsic::ftarget_ghi_x, 0x21 },40// CHECK-DAG: { Intrinsic::ftarget_rst, 0x22 },41 42// Check that the index is in the correct order, consistent with the ordering43// of enums: alphabetically, but target intrinsics after generic intrinsics44//45// CHECK-LABEL: lookupTableByIntr(unsigned Intr) {46// CHECK: Index[] = {47// CHECK-NEXT: Intrinsic::abc48// CHECK-NEXT: Intrinsic::xyz49// CHECK-NEXT: Intrinsic::ftarget_ghi50// CHECK-NEXT: Intrinsic::ftarget_ghi_x51// CHECK-NEXT: Intrinsic::ftarget_rst52// CHECK-NEXT: Intrinsic::gtarget_def53// CHECK-NEXT: Intrinsic::gtarget_defg54// CHECK-NEXT: Intrinsic::gtarget_uvw55 56def : Table<int_abc, 0x0>;57def : Table<int_xyz, 0x1>;58def : Table<int_gtarget_def, 0x10>;59def : Table<int_gtarget_defg, 0x11>;60def : Table<int_gtarget_uvw, 0x12>;61def : Table<int_ftarget_ghi, 0x20>;62def : Table<int_ftarget_ghi_x, 0x21>;63def : Table<int_ftarget_rst, 0x22>;64