[PATCH] D122489: [AMDGPU] Fix adding modifiers when creating v_cmpx instructions.

Thomas Symalla via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Fri Mar 25 09:35:11 PDT 2022


tsymalla created this revision.
tsymalla added reviewers: foad, critson.
Herald added subscribers: hsmhsm, kerbowa, hiraditya, t-tye, tpr, dstuttard, yaxunl, nhaehnle, jvesely, kzhuravl, arsenm.
Herald added a project: All.
tsymalla requested review of this revision.
Herald added subscribers: llvm-commits, wdng.
Herald added a project: LLVM.

Revision https://reviews.llvm.org/D122332 added a pattern transformation
where v_cmpx instructions are introduced. However, the modifiers are
not correctly inherited from the original operands. The patch
adds the source modifiers, if they are exist, or sets them to 0.


Repository:
  rG LLVM Github Monorepo

https://reviews.llvm.org/D122489

Files:
  llvm/lib/Target/AMDGPU/SIOptimizeExecMasking.cpp


Index: llvm/lib/Target/AMDGPU/SIOptimizeExecMasking.cpp
===================================================================
--- llvm/lib/Target/AMDGPU/SIOptimizeExecMasking.cpp
+++ llvm/lib/Target/AMDGPU/SIOptimizeExecMasking.cpp
@@ -451,20 +451,23 @@
   auto Builder = BuildMI(*VCmp.getParent(), std::next(InsertPosIt),
                          VCmp.getDebugLoc(), TII->get(NewOpcode));
 
-  if (AMDGPU::getNamedOperandIdx(NewOpcode, AMDGPU::OpName::src0_modifiers) !=
-      -1)
-    Builder.addImm(0);
+  auto AddModifierOrZero = [&](unsigned OperandName) -> void {
+    if (AMDGPU::getNamedOperandIdx(NewOpcode, OperandName) != -1) {
+      if (auto *Mod = TII->getNamedOperand(VCmp, OperandName)) {
+        Builder.addImm(Mod->getImm());
+      } else {
+        Builder.addImm(0);
+      }
+    }
+  };
 
+  AddModifierOrZero(AMDGPU::OpName::src0_modifiers);
   Builder.add(*Src0);
 
-  if (AMDGPU::getNamedOperandIdx(NewOpcode, AMDGPU::OpName::src1_modifiers) !=
-      -1)
-    Builder.addImm(0);
-
+  AddModifierOrZero(AMDGPU::OpName::src1_modifiers);
   Builder.add(*Src1);
 
-  if (AMDGPU::getNamedOperandIdx(NewOpcode, AMDGPU::OpName::clamp) != -1)
-    Builder.addImm(0);
+  AddModifierOrZero(AMDGPU::OpName::clamp);
 
   return true;
 }


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D122489.418253.patch
Type: text/x-patch
Size: 1253 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20220325/48687a20/attachment.bin>


More information about the llvm-commits mailing list