include "llvm/Target/Target.td"
def T : Target;
def A : Register<"">;
def B : Register<"">;
def R1 : RegisterClass<"", [i1], 0, (add B)>;
def R8 : RegisterClass<"", [i8], 0, (add A)>;
def FOO1 : Instruction {
let OutOperandList = (outs);
let InOperandList = (ins);
let Pattern = [(set A, (add A, 1))];
}
let Defs = [B] in
def FOO2 : Instruction {
let OutOperandList = (outs);
let InOperandList = (ins);
let Pattern = [(set A, (add A, 1))];
}
./bin/llvm-tblgen -gen-global-isel -I ../llvm/include ./test.td
Type set is empty for each HW mode:
possible type contradiction in the pattern below (use -print-records with llvm-tblgen to see all expanded records).
FOO2: (FOO2:{ *:[i1] })
// record omitted for brevity
./test.td:18:5: error: Type set is empty for each HW mode in 'FOO2'
def FOO2 : Instruction {
^