Skip to content

Commit cda317a

Browse files
authored
[AMDGPU] Disallow null for tensor load/store resource operands (#155074)
1 parent 954097d commit cda317a

File tree

2 files changed

+63
-3
lines changed

2 files changed

+63
-3
lines changed

llvm/lib/Target/AMDGPU/MIMGInstructions.td

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2044,9 +2044,9 @@ class VIMAGE_TENSOR_Pseudo<string opName, bit _UpTo2D = 0> :
20442044
let hasSideEffects = 0;
20452045

20462046
bit UpTo2D = _UpTo2D;
2047-
let InOperandList = !if(UpTo2D, (ins SReg_128:$vaddr0, SReg_256:$vaddr1, R128A16:$r128, CPol:$cpol),
2048-
(ins SReg_128:$vaddr0, SReg_256:$vaddr1, SReg_128:$vaddr2,
2049-
SReg_128:$vaddr3, R128A16:$r128, CPol:$cpol));
2047+
let InOperandList = !if(UpTo2D, (ins SReg_128_XNULL:$vaddr0, SReg_256_XNULL:$vaddr1, R128A16:$r128, CPol:$cpol),
2048+
(ins SReg_128_XNULL:$vaddr0, SReg_256_XNULL:$vaddr1, SReg_128_XNULL:$vaddr2,
2049+
SReg_128_XNULL:$vaddr3, R128A16:$r128, CPol:$cpol));
20502050
string AsmOperands = " $vaddr0, $vaddr1"#!if(UpTo2D, "", ", $vaddr2, $vaddr3")#"$r128$cpol";
20512051
}
20522052

llvm/test/MC/AMDGPU/gfx1250_asm_vimage_err.s

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,3 +23,63 @@ tensor_store_from_lds s[0:3], s[4:11], s[12:15], s[16:19] r128
2323

2424
tensor_store_from_lds s[0:3], s[4:11], s[12:15], s[16:19] th:TH_LOAD_NT_HT scope:SCOPE_DEV
2525
// GFX1250-ERR: :[[@LINE-1]]:{{[0-9]+}}: error: invalid th value for store instructions
26+
27+
tensor_load_to_lds null, s[4:11]
28+
// GFX1250-ERR: :[[@LINE-1]]:{{[0-9]+}}: error: invalid operand for instruction
29+
// GFX1250-ERR: tensor_load_to_lds null, s[4:11]
30+
// GFX1250-ERR: ^
31+
32+
tensor_load_to_lds s[0:3], null
33+
// GFX1250-ERR: :[[@LINE-1]]:{{[0-9]+}}: error: invalid operand for instruction
34+
// GFX1250-ERR: tensor_load_to_lds s[0:3], null
35+
// GFX1250-ERR: ^
36+
37+
tensor_load_to_lds null, s[4:11], s[12:15], s[16:19]
38+
// GFX1250-ERR: :[[@LINE-1]]:{{[0-9]+}}: error: invalid operand for instruction
39+
// GFX1250-ERR: tensor_load_to_lds null, s[4:11], s[12:15], s[16:19]
40+
// GFX1250-ERR: ^
41+
42+
tensor_load_to_lds s[0:3], null, s[12:15], s[16:19]
43+
// GFX1250-ERR: :[[@LINE-1]]:{{[0-9]+}}: error: invalid operand for instruction
44+
// GFX1250-ERR: tensor_load_to_lds s[0:3], null, s[12:15], s[16:19]
45+
// GFX1250-ERR: ^
46+
47+
tensor_load_to_lds s[0:3], s[4:11], null, s[16:19]
48+
// GFX1250-ERR: :[[@LINE-1]]:{{[0-9]+}}: error: invalid operand for instruction
49+
// GFX1250-ERR: tensor_load_to_lds s[0:3], s[4:11], null, s[16:19]
50+
// GFX1250-ERR: ^
51+
52+
tensor_load_to_lds s[0:3], s[4:11], s[12:15], null
53+
// GFX1250-ERR: :[[@LINE-1]]:{{[0-9]+}}: error: invalid operand for instruction
54+
// GFX1250-ERR: tensor_load_to_lds s[0:3], s[4:11], s[12:15], null
55+
// GFX1250-ERR: ^
56+
57+
tensor_store_from_lds null, s[4:11]
58+
// GFX1250-ERR: :[[@LINE-1]]:{{[0-9]+}}: error: invalid operand for instruction
59+
// GFX1250-ERR: tensor_store_from_lds null, s[4:11]
60+
// GFX1250-ERR: ^
61+
62+
tensor_store_from_lds s[0:3], null
63+
// GFX1250-ERR: :[[@LINE-1]]:{{[0-9]+}}: error: invalid operand for instruction
64+
// GFX1250-ERR: tensor_store_from_lds s[0:3], null
65+
// GFX1250-ERR: ^
66+
67+
tensor_store_from_lds null, s[4:11], s[12:15], s[16:19]
68+
// GFX1250-ERR: :[[@LINE-1]]:{{[0-9]+}}: error: invalid operand for instruction
69+
// GFX1250-ERR: tensor_store_from_lds null, s[4:11], s[12:15], s[16:19]
70+
// GFX1250-ERR: ^
71+
72+
tensor_store_from_lds s[0:3], null, s[12:15], s[16:19]
73+
// GFX1250-ERR: :[[@LINE-1]]:{{[0-9]+}}: error: invalid operand for instruction
74+
// GFX1250-ERR: tensor_store_from_lds s[0:3], null, s[12:15], s[16:19]
75+
// GFX1250-ERR: ^
76+
77+
tensor_store_from_lds s[0:3], s[4:11], null, s[16:19]
78+
// GFX1250-ERR: :[[@LINE-1]]:{{[0-9]+}}: error: invalid operand for instruction
79+
// GFX1250-ERR: tensor_store_from_lds s[0:3], s[4:11], null, s[16:19]
80+
// GFX1250-ERR: ^
81+
82+
tensor_store_from_lds s[0:3], s[4:11], s[12:15], null
83+
// GFX1250-ERR: :[[@LINE-1]]:{{[0-9]+}}: error: invalid operand for instruction
84+
// GFX1250-ERR: tensor_store_from_lds s[0:3], s[4:11], s[12:15], null
85+
// GFX1250-ERR: ^

0 commit comments

Comments
 (0)