[llvm] [SelectionDAG][AArch64][X86] Don't scalarize vector smul.fix.sat/umul.fix.sat (PR #209351)
David Green via llvm-commits
llvm-commits at lists.llvm.org
Tue Jul 14 05:30:12 PDT 2026
================
@@ -107,29 +106,32 @@ define <2 x i32> @vec(<2 x i32> %x, <2 x i32> %y) nounwind {
define <4 x i32> @vec2(<4 x i32> %x, <4 x i32> %y) nounwind {
; CHECK-LABEL: vec2:
; CHECK: // %bb.0:
-; CHECK-NEXT: mov w8, v1.s[1]
-; CHECK-NEXT: mov w9, v0.s[1]
-; CHECK-NEXT: fmov w10, s0
-; CHECK-NEXT: mov w11, v0.s[2]
-; CHECK-NEXT: mov w13, v0.s[3]
-; CHECK-NEXT: mov w12, v1.s[3]
-; CHECK-NEXT: umull x8, w9, w8
-; CHECK-NEXT: fmov w9, s1
-; CHECK-NEXT: umull x9, w10, w9
-; CHECK-NEXT: tst x8, #0xffffffff00000000
-; CHECK-NEXT: mov w10, v1.s[2]
-; CHECK-NEXT: csinv w8, w8, wzr, eq
-; CHECK-NEXT: tst x9, #0xffffffff00000000
+; CHECK-NEXT: umull2 v2.2d, v0.4s, v1.4s
+; CHECK-NEXT: umull v3.2d, v0.2s, v1.2s
+; CHECK-NEXT: mul v0.4s, v0.4s, v1.4s
+; CHECK-NEXT: uzp2 v2.4s, v3.4s, v2.4s
+; CHECK-NEXT: add v3.4s, v2.4s, v2.4s
+; CHECK-NEXT: mov w8, v2.s[1]
+; CHECK-NEXT: shl v1.4s, v3.4s, #31
+; CHECK-NEXT: cmp w8, #0
+; CHECK-NEXT: fmov w8, s2
+; CHECK-NEXT: orr v1.16b, v1.16b, v0.16b
+; CHECK-NEXT: mov w9, v1.s[1]
+; CHECK-NEXT: fmov w10, s1
+; CHECK-NEXT: mov w11, v1.s[2]
; CHECK-NEXT: csinv w9, w9, wzr, eq
-; CHECK-NEXT: fmov s0, w9
-; CHECK-NEXT: umull x9, w11, w10
-; CHECK-NEXT: mov v0.s[1], w8
-; CHECK-NEXT: tst x9, #0xffffffff00000000
-; CHECK-NEXT: csinv w8, w9, wzr, eq
-; CHECK-NEXT: umull x9, w13, w12
-; CHECK-NEXT: mov v0.s[2], w8
-; CHECK-NEXT: tst x9, #0xffffffff00000000
-; CHECK-NEXT: csinv w8, w9, wzr, eq
+; CHECK-NEXT: cmp w8, #0
+; CHECK-NEXT: mov w8, v2.s[2]
+; CHECK-NEXT: csinv w10, w10, wzr, eq
+; CHECK-NEXT: fmov s0, w10
+; CHECK-NEXT: cmp w8, #0
+; CHECK-NEXT: mov w8, v1.s[3]
+; CHECK-NEXT: mov v0.s[1], w9
+; CHECK-NEXT: mov w9, v2.s[3]
+; CHECK-NEXT: csinv w10, w11, wzr, eq
+; CHECK-NEXT: mov v0.s[2], w10
+; CHECK-NEXT: cmp w9, #0
+; CHECK-NEXT: csinv w8, w8, wzr, eq
----------------
davemgreen wrote:
It looks like this is still expanding the select_cc?
https://github.com/llvm/llvm-project/pull/209351
More information about the llvm-commits
mailing list