Skip to content

Commit 54f5eb7

Browse files
Sisyphakadutta
authored andcommitted
[AMDGPU] Use RegisterOperand instead of RegisterClass in MIMGNSAHelper (llvm#162911)
NFC
1 parent 84d60e0 commit 54f5eb7

File tree

1 file changed

+16
-12
lines changed

1 file changed

+16
-12
lines changed

llvm/lib/Target/AMDGPU/MIMGInstructions.td

Lines changed: 16 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -260,8 +260,12 @@ class NSAHelper {
260260
}
261261

262262
class MIMGNSAHelper<int num_addrs,
263-
list<RegisterClass> addr_types=!listsplat(VGPR_32, num_addrs)>
264-
: NSAHelper<> {
263+
list<RegisterOperand> addr_types_in=[]>
264+
: NSAHelper<> {
265+
list<RegisterOperand> addr_types =
266+
!if(!empty(addr_types_in), !listsplat(VGPROp_32, num_addrs),
267+
addr_types_in);
268+
265269
list<string> AddrAsmNames = !foreach(i, !range(num_addrs), "vaddr" # i);
266270
let AddrIns = !dag(ins, addr_types, AddrAsmNames);
267271
let AddrAsm = "[$" # !interleave(AddrAsmNames, ", $") # "]";
@@ -358,7 +362,7 @@ class MIMG_gfx11<int op, dag outs, string dns = "">
358362
// Base class for all NSA MIMG instructions.
359363
// Note that 1-dword addresses always use non-NSA variants.
360364
class MIMG_nsa_gfx11<int op, dag outs, int num_addrs, string dns="",
361-
list<RegisterClass> addr_types=[],
365+
list<RegisterOperand> addr_types=[],
362366
RegisterOperand LastAddrRC = VGPROp_32>
363367
: MIMG<outs, dns>, MIMGe_gfx11<op> {
364368
let SubtargetPredicate = isGFX11Only;
@@ -378,7 +382,7 @@ class MIMG_nsa_gfx11<int op, dag outs, int num_addrs, string dns="",
378382
}
379383

380384
class VIMAGE_gfx12<int op, dag outs, int num_addrs, string dns="",
381-
list<RegisterClass> addr_types=[]>
385+
list<RegisterOperand> addr_types=[]>
382386
: VIMAGE<outs, dns>, VIMAGEe<op> {
383387
let SubtargetPredicate = isGFX12Plus;
384388
let AssemblerPredicate = isGFX12Plus;
@@ -1521,12 +1525,12 @@ class MIMG_IntersectRay_Helper<bit Is64, bit IsA16, bit isDual, bit isBVH8> {
15211525
int VAddrDwords = !srl(Size, 5);
15221526

15231527
int GFX11PlusNSAAddrs = !if(IsA16, 4, 5);
1524-
RegisterClass node_ptr_type = !if(Is64, VReg_64, VGPR_32);
1525-
list<RegisterClass> GFX11PlusAddrTypes =
1526-
!cond(isBVH8 : [node_ptr_type, VReg_64, VReg_96, VReg_96, VGPR_32],
1527-
isDual : [node_ptr_type, VReg_64, VReg_96, VReg_96, VReg_64],
1528-
IsA16 : [node_ptr_type, VGPR_32, VReg_96, VReg_96],
1529-
true : [node_ptr_type, VGPR_32, VReg_96, VReg_96, VReg_96]);
1528+
RegisterOperand node_ptr_type = !if(Is64, VGPROp_64, VGPROp_32);
1529+
list<RegisterOperand> GFX11PlusAddrTypes =
1530+
!cond(isBVH8 : [node_ptr_type, VGPROp_64, VGPROp_96, VGPROp_96, VGPROp_32],
1531+
isDual : [node_ptr_type, VGPROp_64, VGPROp_96, VGPROp_96, VGPROp_64],
1532+
IsA16 : [node_ptr_type, VGPROp_32, VGPROp_96, VGPROp_96],
1533+
true : [node_ptr_type, VGPROp_32, VGPROp_96, VGPROp_96, VGPROp_96]);
15301534
}
15311535

15321536
class MIMG_IntersectRay_gfx10<mimgopc op, string opcode, RegisterOperand AddrRC>
@@ -1552,7 +1556,7 @@ class MIMG_IntersectRay_gfx11<mimgopc op, string opcode, RegisterOperand AddrRC>
15521556
}
15531557

15541558
class MIMG_IntersectRay_nsa_gfx11<mimgopc op, string opcode, int num_addrs,
1555-
list<RegisterClass> addr_types>
1559+
list<RegisterOperand> addr_types>
15561560
: MIMG_nsa_gfx11<op.GFX11, (outs VReg_128:$vdata), num_addrs, "GFX11",
15571561
addr_types> {
15581562
let InOperandList = !con(nsah.AddrIns, (ins SReg_128_XNULL:$srsrc, A16:$a16));
@@ -1561,7 +1565,7 @@ class MIMG_IntersectRay_nsa_gfx11<mimgopc op, string opcode, int num_addrs,
15611565

15621566
class VIMAGE_IntersectRay_gfx12<mimgopc op, string opcode, int num_addrs,
15631567
bit isDual, bit isBVH8,
1564-
list<RegisterClass> addr_types>
1568+
list<RegisterOperand> addr_types>
15651569
: VIMAGE_gfx12<op.GFX12, !if(!or(isDual, isBVH8),
15661570
(outs VReg_320:$vdata, VReg_96:$ray_origin_out,
15671571
VReg_96:$ray_dir_out),

0 commit comments

Comments
 (0)