blob: ec450f8945b490b319181851e62f271521201d2a [file] [log] [blame]
// RUN: llvm-tblgen -gen-register-info -register-info-debug -I %p/../../include %s -o /dev/null 2>&1 | FileCheck %s
include "llvm/Target/Target.td"
def TestTarget : Target;
def lo : SubRegIndex<32, 0>;
def hi : SubRegIndex<32, 32>;
// One superreg with two subregs.
def Alo : Register<"">;
def Ahi : Register<"">;
def A : Register<""> {
let SubRegs = [Alo, Ahi];
let SubRegIndices = [lo, hi];
}
// Same but the subregs alias.
def Blo : Register<"">;
def Bhi : Register<""> {
let Aliases = [Blo];
}
def B : Register<""> {
let SubRegs = [Blo, Bhi];
let SubRegIndices = [lo, hi];
}
// Same but the superreg has an alias.
def Clo : Register<"">;
def Chi : Register<"">;
def D : Register<"">;
def C : Register<""> {
let SubRegs = [Clo, Chi];
let SubRegIndices = [lo, hi];
let Aliases = [D];
}
def TestRC : RegisterClass<"Test", [i64], 0, (add A, B)>;
// CHECK-LABEL: Register A:
// CHECK: SubReg hi = Ahi
// CHECK: SubReg lo = Alo
// CHECK: RegUnit 0
// CHECK: RegUnit 1
// CHECK-LABEL: Register Ahi:
// CHECK: RegUnit 1
// CHECK-LABEL: Register Alo:
// CHECK: RegUnit 0
// CHECK-LABEL: Register B:
// CHECK: SubReg hi = Bhi
// CHECK: SubReg lo = Blo
// CHECK: RegUnit 2
// CHECK: RegUnit 3
// CHECK: RegUnit 4
// CHECK-LABEL: Register Bhi:
// CHECK: RegUnit 3
// CHECK: RegUnit 4
// CHECK-LABEL: Register Blo:
// CHECK: RegUnit 2
// CHECK: RegUnit 3
// CHECK-LABEL: Register C:
// CHECK: SubReg hi = Chi
// CHECK: SubReg lo = Clo
// CHECK: RegUnit 5
// CHECK: RegUnit 6
// CHECK: RegUnit 7
// CHECK-LABEL: Register Chi:
// CHECK: RegUnit 6
// CHECK-LABEL: Register Clo:
// CHECK: RegUnit 5
// CHECK-LABEL: Register D:
// CHECK: RegUnit 7
// CHECK: RegUnit 8