brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.1 KiB · ab26261 Raw
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