Skip to content

Commit 7d28a5d

Browse files
jayfoadronlieb
authored andcommitted
[AMDGPU] Disallow null for more resource operands (llvm#121941)
Following on from llvm#115200, disallow the null sgpr as a resource operand in some instructions that were missed. Change-Id: I5068403999a04613b3826801bb2f4a1d55b2e9e7
1 parent 01f91d6 commit 7d28a5d

File tree

9 files changed

+415
-12
lines changed

9 files changed

+415
-12
lines changed

llvm/lib/Target/AMDGPU/BUFInstructions.td

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -680,7 +680,7 @@ multiclass MUBUF_Pseudo_Stores<string opName, ValueType store_vt = i32> {
680680
class MUBUF_Pseudo_Store_Lds<string opName>
681681
: MUBUF_Pseudo<opName,
682682
(outs),
683-
(ins SReg_128:$srsrc, SCSrc_b32:$soffset, Offset:$offset, CPol:$cpol, i1imm:$swz),
683+
(ins SReg_128_XNULL:$srsrc, SCSrc_b32:$soffset, Offset:$offset, CPol:$cpol, i1imm:$swz),
684684
" $srsrc, $soffset$offset lds$cpol"> {
685685
let LGKM_CNT = 1;
686686
let mayLoad = 1;

llvm/lib/Target/AMDGPU/MIMGInstructions.td

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1524,21 +1524,21 @@ class MIMG_IntersectRay_Helper<bit Is64, bit IsA16> {
15241524

15251525
class MIMG_IntersectRay_gfx10<mimgopc op, string opcode, RegisterClass AddrRC>
15261526
: MIMG_gfx10<op.GFX10M, (outs VReg_128:$vdata), "GFX10"> {
1527-
let InOperandList = (ins AddrRC:$vaddr0, SReg_128:$srsrc, A16:$a16);
1527+
let InOperandList = (ins AddrRC:$vaddr0, SReg_128_XNULL:$srsrc, A16:$a16);
15281528
let AsmString = opcode#" $vdata, $vaddr0, $srsrc$a16";
15291529

15301530
let nsa = 0;
15311531
}
15321532

15331533
class MIMG_IntersectRay_nsa_gfx10<mimgopc op, string opcode, int num_addrs>
15341534
: MIMG_nsa_gfx10<op.GFX10M, (outs VReg_128:$vdata), num_addrs, "GFX10"> {
1535-
let InOperandList = !con(nsah.AddrIns, (ins SReg_128:$srsrc, A16:$a16));
1535+
let InOperandList = !con(nsah.AddrIns, (ins SReg_128_XNULL:$srsrc, A16:$a16));
15361536
let AsmString = opcode#" $vdata, "#nsah.AddrAsm#", $srsrc$a16";
15371537
}
15381538

15391539
class MIMG_IntersectRay_gfx11<mimgopc op, string opcode, RegisterClass AddrRC>
15401540
: MIMG_gfx11<op.GFX11, (outs VReg_128:$vdata), "GFX11"> {
1541-
let InOperandList = (ins AddrRC:$vaddr0, SReg_128:$srsrc, A16:$a16);
1541+
let InOperandList = (ins AddrRC:$vaddr0, SReg_128_XNULL:$srsrc, A16:$a16);
15421542
let AsmString = opcode#" $vdata, $vaddr0, $srsrc$a16";
15431543

15441544
let nsa = 0;
@@ -1548,15 +1548,15 @@ class MIMG_IntersectRay_nsa_gfx11<mimgopc op, string opcode, int num_addrs,
15481548
list<RegisterClass> addr_types>
15491549
: MIMG_nsa_gfx11<op.GFX11, (outs VReg_128:$vdata), num_addrs, "GFX11",
15501550
addr_types> {
1551-
let InOperandList = !con(nsah.AddrIns, (ins SReg_128:$srsrc, A16:$a16));
1551+
let InOperandList = !con(nsah.AddrIns, (ins SReg_128_XNULL:$srsrc, A16:$a16));
15521552
let AsmString = opcode#" $vdata, "#nsah.AddrAsm#", $srsrc$a16";
15531553
}
15541554

15551555
class VIMAGE_IntersectRay_gfx12<mimgopc op, string opcode, int num_addrs,
15561556
list<RegisterClass> addr_types>
15571557
: VIMAGE_gfx12<op.GFX12, (outs VReg_128:$vdata),
15581558
num_addrs, "GFX12", addr_types> {
1559-
let InOperandList = !con(nsah.AddrIns, (ins SReg_128:$rsrc, A16:$a16));
1559+
let InOperandList = !con(nsah.AddrIns, (ins SReg_128_XNULL:$rsrc, A16:$a16));
15601560
let AsmString = opcode#" $vdata, "#nsah.AddrAsm#", $rsrc$a16";
15611561
}
15621562

llvm/lib/Target/AMDGPU/SMInstructions.td

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -341,10 +341,10 @@ let SubtargetPredicate = HasScalarDwordx3Loads in
341341
defm S_BUFFER_LOAD_DWORDX4 : SM_Pseudo_Loads <SReg_128_XNULL, SReg_128>;
342342
defm S_BUFFER_LOAD_DWORDX8 : SM_Pseudo_Loads <SReg_128_XNULL, SReg_256>;
343343
defm S_BUFFER_LOAD_DWORDX16 : SM_Pseudo_Loads <SReg_128_XNULL, SReg_512>;
344-
defm S_BUFFER_LOAD_I8 : SM_Pseudo_Loads <SReg_128, SReg_32_XM0_XEXEC>;
345-
defm S_BUFFER_LOAD_U8 : SM_Pseudo_Loads <SReg_128, SReg_32_XM0_XEXEC>;
346-
defm S_BUFFER_LOAD_I16 : SM_Pseudo_Loads <SReg_128, SReg_32_XM0_XEXEC>;
347-
defm S_BUFFER_LOAD_U16 : SM_Pseudo_Loads <SReg_128, SReg_32_XM0_XEXEC>;
344+
defm S_BUFFER_LOAD_I8 : SM_Pseudo_Loads <SReg_128_XNULL, SReg_32_XM0_XEXEC>;
345+
defm S_BUFFER_LOAD_U8 : SM_Pseudo_Loads <SReg_128_XNULL, SReg_32_XM0_XEXEC>;
346+
defm S_BUFFER_LOAD_I16 : SM_Pseudo_Loads <SReg_128_XNULL, SReg_32_XM0_XEXEC>;
347+
defm S_BUFFER_LOAD_U16 : SM_Pseudo_Loads <SReg_128_XNULL, SReg_32_XM0_XEXEC>;
348348
}
349349

350350
let SubtargetPredicate = HasScalarStores in {
@@ -375,7 +375,7 @@ def S_DCACHE_WB_VOL : SM_Inval_Pseudo <"s_dcache_wb_vol", int_amdgcn_s_dcache_wb
375375

376376
defm S_ATC_PROBE : SM_Pseudo_Probe <SReg_64>;
377377
let is_buffer = 1 in {
378-
defm S_ATC_PROBE_BUFFER : SM_Pseudo_Probe <SReg_128>;
378+
defm S_ATC_PROBE_BUFFER : SM_Pseudo_Probe <SReg_128_XNULL>;
379379
}
380380
} // SubtargetPredicate = isGFX8Plus
381381

@@ -470,7 +470,7 @@ def S_PREFETCH_INST : SM_Prefetch_Pseudo <"s_prefetch_inst", SReg_64, 1>;
470470
def S_PREFETCH_INST_PC_REL : SM_Prefetch_Pseudo <"s_prefetch_inst_pc_rel", SReg_64, 0>;
471471
def S_PREFETCH_DATA : SM_Prefetch_Pseudo <"s_prefetch_data", SReg_64, 1>;
472472
def S_PREFETCH_DATA_PC_REL : SM_Prefetch_Pseudo <"s_prefetch_data_pc_rel", SReg_64, 0>;
473-
def S_BUFFER_PREFETCH_DATA : SM_Prefetch_Pseudo <"s_buffer_prefetch_data", SReg_128, 1> {
473+
def S_BUFFER_PREFETCH_DATA : SM_Prefetch_Pseudo <"s_buffer_prefetch_data", SReg_128_XNULL, 1> {
474474
let is_buffer = 1;
475475
}
476476
} // end let SubtargetPredicate = isGFX12Plus

0 commit comments

Comments
 (0)