blob: 55db3ddb1f27e1f6700add98c6eada15c7923bae [file] [log] [blame]
// RUN: llvm-tblgen -gen-register-info -I %p/../../include -I %p/Common %s | FileCheck %s
// Configure and test TSFlags for a target.
include "llvm/Target/Target.td"
let Namespace = "MyTarget" in {
def R : Register<"r">;
def D : Register<"d">;
def S : Register<"s">;
}
class MyClass <int size, list<ValueType> types, dag regList>
: RegisterClass <"MyTarget", types, size, regList> {
// Define the target bitfields.
field bit A = 0;
field bits<2> B = 0;
// Associate the defined bitfields to unique bit positions in TSFlags.
let TSFlags{0} = A;
let TSFlags{2-1} = B;
}
// Default value for TSFlags.
def MyRegs : MyClass<32, [i32], (add R)>;
def SRegs : MyClass<32, [i32], (add S)> {
let A = 1;
}
def DRegs : MyClass<32, [i32], (add D)>{
let B = 3;
}
def SDRegs : MyClass<32, [i32], (add D, S)>{
let A = 1;
let B = 3;
}
def MyTarget : Target;
// CHECK: extern const TargetRegisterClass SDRegsRegClass = {
// CHECK: 0x07, /* TSFlags */
// CHECK: extern const TargetRegisterClass DRegsRegClass = {
// CHECK: 0x06, /* TSFlags */
// CHECK: extern const TargetRegisterClass MyRegsRegClass = {
// CHECK: 0x00, /* TSFlags */
// CHECK: extern const TargetRegisterClass SRegsRegClass = {
// CHECK: 0x01, /* TSFlags */