[llvm] cda317a - [AMDGPU] Disallow null for tensor load/store resource operands (#155074)

via llvm-commits llvm-commits at lists.llvm.org
Sat Aug 23 14:06:42 PDT 2025


Author: Changpeng Fang
Date: 2025-08-23T14:06:39-07:00
New Revision: cda317a8bbc8010c7e7877656a718c33ca400728

URL: https://github.com/llvm/llvm-project/commit/cda317a8bbc8010c7e7877656a718c33ca400728
DIFF: https://github.com/llvm/llvm-project/commit/cda317a8bbc8010c7e7877656a718c33ca400728.diff

LOG: [AMDGPU] Disallow null for tensor load/store resource operands (#155074)

Added: 
    

Modified: 
    llvm/lib/Target/AMDGPU/MIMGInstructions.td
    llvm/test/MC/AMDGPU/gfx1250_asm_vimage_err.s

Removed: 
    


################################################################################
diff  --git a/llvm/lib/Target/AMDGPU/MIMGInstructions.td b/llvm/lib/Target/AMDGPU/MIMGInstructions.td
index 531fae3ceff59..ff5321df6452d 100644
--- a/llvm/lib/Target/AMDGPU/MIMGInstructions.td
+++ b/llvm/lib/Target/AMDGPU/MIMGInstructions.td
@@ -2044,9 +2044,9 @@ class VIMAGE_TENSOR_Pseudo<string opName, bit _UpTo2D = 0> :
   let hasSideEffects = 0;
 
   bit UpTo2D = _UpTo2D;
-  let InOperandList = !if(UpTo2D, (ins SReg_128:$vaddr0, SReg_256:$vaddr1, R128A16:$r128, CPol:$cpol),
-                                      (ins SReg_128:$vaddr0, SReg_256:$vaddr1, SReg_128:$vaddr2,
-                                       SReg_128:$vaddr3, R128A16:$r128, CPol:$cpol));
+  let InOperandList = !if(UpTo2D, (ins SReg_128_XNULL:$vaddr0, SReg_256_XNULL:$vaddr1, R128A16:$r128, CPol:$cpol),
+                                      (ins SReg_128_XNULL:$vaddr0, SReg_256_XNULL:$vaddr1, SReg_128_XNULL:$vaddr2,
+                                       SReg_128_XNULL:$vaddr3, R128A16:$r128, CPol:$cpol));
   string AsmOperands = " $vaddr0, $vaddr1"#!if(UpTo2D, "", ", $vaddr2, $vaddr3")#"$r128$cpol";
 }
 

diff  --git a/llvm/test/MC/AMDGPU/gfx1250_asm_vimage_err.s b/llvm/test/MC/AMDGPU/gfx1250_asm_vimage_err.s
index 3b2e03f1d4b9e..5ce9da1019498 100644
--- a/llvm/test/MC/AMDGPU/gfx1250_asm_vimage_err.s
+++ b/llvm/test/MC/AMDGPU/gfx1250_asm_vimage_err.s
@@ -23,3 +23,63 @@ tensor_store_from_lds s[0:3], s[4:11], s[12:15], s[16:19] r128
 
 tensor_store_from_lds s[0:3], s[4:11], s[12:15], s[16:19] th:TH_LOAD_NT_HT scope:SCOPE_DEV
 // GFX1250-ERR: :[[@LINE-1]]:{{[0-9]+}}: error: invalid th value for store instructions
+
+tensor_load_to_lds null, s[4:11]
+// GFX1250-ERR: :[[@LINE-1]]:{{[0-9]+}}: error: invalid operand for instruction
+// GFX1250-ERR: tensor_load_to_lds null, s[4:11]
+// GFX1250-ERR:                    ^
+
+tensor_load_to_lds s[0:3], null
+// GFX1250-ERR: :[[@LINE-1]]:{{[0-9]+}}: error: invalid operand for instruction
+// GFX1250-ERR: tensor_load_to_lds s[0:3], null
+// GFX1250-ERR:                            ^
+
+tensor_load_to_lds null, s[4:11], s[12:15], s[16:19]
+// GFX1250-ERR: :[[@LINE-1]]:{{[0-9]+}}: error: invalid operand for instruction
+// GFX1250-ERR: tensor_load_to_lds null, s[4:11], s[12:15], s[16:19]
+// GFX1250-ERR:                    ^
+
+tensor_load_to_lds s[0:3], null, s[12:15], s[16:19]
+// GFX1250-ERR: :[[@LINE-1]]:{{[0-9]+}}: error: invalid operand for instruction
+// GFX1250-ERR: tensor_load_to_lds s[0:3], null, s[12:15], s[16:19]
+// GFX1250-ERR:                            ^
+
+tensor_load_to_lds s[0:3], s[4:11], null, s[16:19]
+// GFX1250-ERR: :[[@LINE-1]]:{{[0-9]+}}: error: invalid operand for instruction
+// GFX1250-ERR: tensor_load_to_lds s[0:3], s[4:11], null, s[16:19]
+// GFX1250-ERR:                                     ^
+
+tensor_load_to_lds s[0:3], s[4:11], s[12:15], null
+// GFX1250-ERR: :[[@LINE-1]]:{{[0-9]+}}: error: invalid operand for instruction
+// GFX1250-ERR: tensor_load_to_lds s[0:3], s[4:11], s[12:15], null
+// GFX1250-ERR:                                               ^
+
+tensor_store_from_lds null, s[4:11]
+// GFX1250-ERR: :[[@LINE-1]]:{{[0-9]+}}: error: invalid operand for instruction
+// GFX1250-ERR: tensor_store_from_lds null, s[4:11]
+// GFX1250-ERR:                       ^
+
+tensor_store_from_lds s[0:3], null
+// GFX1250-ERR: :[[@LINE-1]]:{{[0-9]+}}: error: invalid operand for instruction
+// GFX1250-ERR: tensor_store_from_lds s[0:3], null
+// GFX1250-ERR:                               ^
+
+tensor_store_from_lds null, s[4:11], s[12:15], s[16:19]
+// GFX1250-ERR: :[[@LINE-1]]:{{[0-9]+}}: error: invalid operand for instruction
+// GFX1250-ERR: tensor_store_from_lds null, s[4:11], s[12:15], s[16:19]
+// GFX1250-ERR:                       ^
+
+tensor_store_from_lds s[0:3], null, s[12:15], s[16:19]
+// GFX1250-ERR: :[[@LINE-1]]:{{[0-9]+}}: error: invalid operand for instruction
+// GFX1250-ERR: tensor_store_from_lds s[0:3], null, s[12:15], s[16:19]
+// GFX1250-ERR:                               ^
+
+tensor_store_from_lds s[0:3], s[4:11], null, s[16:19]
+// GFX1250-ERR: :[[@LINE-1]]:{{[0-9]+}}: error: invalid operand for instruction
+// GFX1250-ERR: tensor_store_from_lds s[0:3], s[4:11], null, s[16:19]
+// GFX1250-ERR:                                        ^
+
+tensor_store_from_lds s[0:3], s[4:11], s[12:15], null
+// GFX1250-ERR: :[[@LINE-1]]:{{[0-9]+}}: error: invalid operand for instruction
+// GFX1250-ERR: tensor_store_from_lds s[0:3], s[4:11], s[12:15], null
+// GFX1250-ERR:                                                  ^


        


More information about the llvm-commits mailing list