[llvm-branch-commits] [llvm] [AMDGPU][GlobalISel] Combine (sext (trunc (sext_in_reg x))) (PR #131312)

Pierre van Houtryve via llvm-branch-commits llvm-branch-commits at lists.llvm.org
Fri Mar 14 05:07:00 PDT 2025


================
@@ -258,6 +258,14 @@ def sext_trunc_sextload : GICombineRule<
          [{ return Helper.matchSextTruncSextLoad(*${d}); }]),
   (apply [{ Helper.applySextTruncSextLoad(*${d}); }])>;
 
+def sext_trunc_sextinreg : GICombineRule<
+  (defs root:$dst),
+  (match (G_SEXT_INREG $sir, $src, $width),
+         (G_TRUNC $trunc, $sir),
+         (G_SEXT $dst, $trunc),
+         [{ return (MRI.getType(${trunc}.getReg()).getScalarSizeInBits() >= ${width}.getImm()); }]),
----------------
Pierre-vh wrote:

Apply isn't allowed to fail. It's just that the presence of `GIReplaceReg` triggers emission of a `canReplaceReg` call during the matching portion of the match table rule.

> On a related note, couldn't you split this whole combine into two independently useful parts:

Good idea, I can try that


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


More information about the llvm-branch-commits mailing list