blob: 8a9995a54a6e3f59fc0d650c3618d528b35b3277 [file] [edit]
// RUN: llvm-tblgen -gen-searchable-tables -I %p/../../include %s | FileCheck %s
include "llvm/TableGen/SearchableTable.td"
class MyTableEntry<string first, string second, int val> {
string First = first;
string Second = second;
bits<8> Val = val;
}
def : MyTableEntry<"foo", "baz", 1>;
def : MyTableEntry<"foo", "quux", 2>;
def : MyTableEntry<"bar", "baz", 3>;
def MyTable : GenericTable {
let FilterClass = "MyTableEntry";
let Fields = ["First", "Second", "Val"];
}
def lookupMyTableByFirstAndSecond : SearchIndex {
let Table = MyTable;
let Key = ["First", "Second"];
}
// CHECK-LABEL: const MyTableEntry *lookupMyTableByFirstAndSecond(StringRef First, StringRef Second)
// CHECK: struct Comp {
// CHECK-NEXT: bool operator()(const IndexType &LHS, const KeyType &RHS) const {
// CHECK-NEXT: StringRef LHSFirstStr = MyTableStrings[LHS.First];
// CHECK-NEXT: StringRef RHSFirstStr = RHS.First;
// CHECK-NEXT: int CmpFirst = LHSFirstStr.compare(RHSFirstStr);
// CHECK-NEXT: if (CmpFirst < 0) return true;
// CHECK-NEXT: if (CmpFirst > 0) return false;
// CHECK-NEXT: StringRef LHSSecondStr = MyTableStrings[LHS.Second];
// CHECK-NEXT: StringRef RHSSecondStr = RHS.Second;
// CHECK-NEXT: int CmpSecond = LHSSecondStr.compare(RHSSecondStr);
// CHECK-NEXT: if (CmpSecond < 0) return true;
// CHECK-NEXT: if (CmpSecond > 0) return false;
// CHECK-NEXT: return false;
// CHECK-NEXT: }
// CHECK-NEXT: };