[llvm] [RISCV][ISel] Fold trunc (lshr (add (zext X), (zext Y)), 1) -> vaaddu X, Y (PR #76550)

Luke Lau via llvm-commits llvm-commits at lists.llvm.org
Mon Jan 8 02:28:54 PST 2024


================
@@ -2338,6 +2348,20 @@ defm : VPatBinaryVL_VV_VX_VI<riscv_uaddsat_vl, "PseudoVSADDU">;
 defm : VPatBinaryVL_VV_VX<riscv_ssubsat_vl, "PseudoVSSUB">;
 defm : VPatBinaryVL_VV_VX<riscv_usubsat_vl, "PseudoVSSUBU">;
 
+// 12.2. Vector Single-Width Averaging Add and Subtract
+foreach vti = AllIntegerVectors in {
+  let Predicates = GetVTypePredicates<vti>.Predicates in {
+    def : Pat<(riscv_uavgadd_vl (vti.Vector vti.RegClass:$rs1),
+                            (vti.Vector vti.RegClass:$rs2),
+                            vti.RegClass:$merge, (vti.Mask V0), VLOpFrag,
+                            (XLenVT timm:$rounding_mode)),
+              (!cast<Instruction>("PseudoVAADDU_VV_"# vti.LMul.MX#"_MASK")
----------------
lukel97 wrote:

Nit, extra space
```suggestion
              (!cast<Instruction>("PseudoVAADDU_VV_"#vti.LMul.MX#"_MASK")
```

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


More information about the llvm-commits mailing list