[llvm] [CGP]: Optimize mul.overflow. (PR #148343)
Hassnaa Hamdi via llvm-commits
llvm-commits at lists.llvm.org
Fri Aug 1 16:59:34 PDT 2025
================
@@ -261,21 +261,33 @@ define i128 @u128_mul(i128 %x, i128 %y) {
define { i128, i8 } @u128_checked_mul(i128 %x, i128 %y) {
; CHECK-LABEL: u128_checked_mul:
-; CHECK: // %bb.0:
+; CHECK: // %bb.0: // %overflow.entry
+; CHECK-NEXT: orr x8, x1, x3
+; CHECK-NEXT: cbz x8, .LBB17_2
+; CHECK-NEXT: // %bb.1: // %overflow
; CHECK-NEXT: mul x9, x3, x0
; CHECK-NEXT: cmp x1, #0
; CHECK-NEXT: ccmp x3, #0, #4, ne
-; CHECK-NEXT: umulh x8, x1, x2
-; CHECK-NEXT: umulh x10, x3, x0
+; CHECK-NEXT: umulh x10, x1, x2
+; CHECK-NEXT: umulh x8, x3, x0
; CHECK-NEXT: madd x9, x1, x2, x9
-; CHECK-NEXT: ccmp xzr, x8, #0, eq
-; CHECK-NEXT: umulh x11, x0, x2
; CHECK-NEXT: ccmp xzr, x10, #0, eq
+; CHECK-NEXT: umulh x11, x0, x2
+; CHECK-NEXT: ccmp xzr, x8, #0, eq
; CHECK-NEXT: mul x0, x0, x2
; CHECK-NEXT: cset w8, ne
; CHECK-NEXT: adds x1, x11, x9
; CHECK-NEXT: csinc w8, w8, wzr, lo
-; CHECK-NEXT: eor w2, w8, #0x1
+; CHECK-NEXT: b .LBB17_3
+; CHECK-NEXT: .LBB17_2: // %overflow.no
+; CHECK-NEXT: umulh x8, x0, x2
+; CHECK-NEXT: madd x8, x0, x3, x8
----------------
hassnaaHamdi wrote:
fixed.
About the `bic`, it's in the overflow.res BB, not the fast path, correct?
https://github.com/llvm/llvm-project/pull/148343
More information about the llvm-commits
mailing list