[llvm] [AMDGPU][GlobalISel] Combine (or s64, zext(s32)) (PR #151519)

Mirko BrkuĊĦanin via llvm-commits llvm-commits at lists.llvm.org
Fri Aug 1 10:05:30 PDT 2025


================
@@ -516,3 +516,29 @@ bool AMDGPUCombinerHelper::matchCombineFmulWithSelectToFldexp(
 
   return true;
 }
+
+void AMDGPUCombinerHelper::applyCombineOrS64S32(MachineInstr &MI,
+                                                Register SrcS64,
+                                                Register SrcS32) const {
+  Register DstReg = MI.getOperand(0).getReg();
+
+  auto UnmergeParts = Builder.buildUnmerge(LLT::scalar(32), SrcS64);
+  Register SrcS64Lo = UnmergeParts.getReg(0);
+  Register SrcS64Hi = UnmergeParts.getReg(1);
+
+  auto Or = Builder.buildOr(LLT::scalar(32), SrcS64Lo, SrcS32).getReg(0);
+  Builder.buildMergeValues(DstReg, {Or, SrcS64Hi});
+  MI.eraseFromParent();
----------------
mbrkusanin wrote:

Rewritten in tablegen

https://github.com/llvm/llvm-project/pull/151519


More information about the llvm-commits mailing list