// 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 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 */