[llvm] [AMDGPU] Support image atomic no return instructions (PR #150742)
Mirko BrkuĊĦanin via llvm-commits
llvm-commits at lists.llvm.org
Fri Sep 12 10:22:03 PDT 2025
================
@@ -883,6 +883,17 @@ class MIMG_Atomic_gfx6789_base <bits<8> op, string asm, RegisterOperand data_rc,
let AsmString = asm#" $vdst, $vaddr, $srsrc$dmask$unorm$cpol$r128$tfe$lwe$da";
}
+class MIMG_Atomic_NoReturn_gfx6789_base <bits<8> op, string asm, RegisterOperand data_rc,
+ RegisterClass addr_rc, string dns="">
+ : MIMG_gfx6789 <op, (outs), dns> {
+ let isCodeGenOnly = 1;
+ let InOperandList = (ins data_rc:$vdata, addr_rc:$vaddr, SReg_256_XNULL:$srsrc,
+ DMask:$dmask, UNorm:$unorm, CPol_0:$cpol,
+ R128A16:$r128, TFE:$tfe, LWE:$lwe, DA:$da);
+
+ let AsmString = asm#" $vdata, $vaddr, $srsrc$dmask$unorm$cpol$r128$tfe$lwe$da";
+}
----------------
mbrkusanin wrote:
Instead of making a _NoReturn version, you can just add an argument to existing class, something like "bit noRet" and make changes based on that. Something like:
```
!if(noRtn, (outs), (outs data_rc:$vdst))
```
```
let Constraints = !if(noRtn, "", "$vdst = $vdata");
```
for every difference.
("noRet" should be passed all the way from top MIMG_Atomic class, see other inline comment)
https://github.com/llvm/llvm-project/pull/150742
More information about the llvm-commits
mailing list