regression: +188 insts: muloti_test (umulo-128-legalisation-lowering.ll)
| Run: | explore-04ca53e65f-20261014-114124 |
| Kind: | regression |
| Category: | +188 insts: muloti_test (umulo-128-legalisation-lowering.ll) |
| Occurrences: | 1 in 1 configs, 1 test files |
| Snippet from: | umulo-128-legalisation-lowering.d70c8390f4.ll (mutant of umulo-128-legalisation-lowering.ll) @muloti_test via llvm-extract |
| Config: | -mtriple=riscv32 -mattr=+m |
| Local check: | reproduces at 04ca53e65f |
| Compiler Explorer: | not uploaded (over --godbolt-limit or disabled) |
Snippet:
@G = external global i128
@G.1 = external global i1
; Function Attrs: nounwind memory(none)
define { i128, i8 } @muloti_test(i128 %l, i128 %r) #0 {
start:
%LGV = load i128, ptr @G, align 4
%0 = tail call { i128, i1 } @llvm.umul.with.overflow.i128(i128 %l, i128 %r) #2
%B = lshr i128 %r, %LGV
%1 = extractvalue { i128, i1 } %0, 0
%2 = extractvalue { i128, i1 } %0, 1
%3 = zext i1 %2 to i8
%C = icmp sle i128 %l, %LGV
%4 = insertvalue { i128, i8 } poison, i128 %1, 0
%5 = insertvalue { i128, i8 } %4, i8 %3, 1
store i1 %C, ptr @G.1, align 1
store i128 %B, ptr poison, align 4
ret { i128, i8 } %5
}
; Function Attrs: nocallback nocreateundeforpoison nofree nosync nounwind speculatable willreturn memory(none)
declare { i128, i1 } @llvm.umul.with.overflow.i128(i128, i128) #1
attributes #0 = { nounwind memory(none) }
attributes #1 = { nocallback nocreateundeforpoison nofree nosync nounwind speculatable willreturn memory(none) }
attributes #2 = { nounwind }
Reproduce:
llc -mtriple=riscv32 -mattr=+m -global-isel snippet.ll -o -
llc -mtriple=riscv32 -mattr=+m -global-isel=0 snippet.ll -o -
Assembly diff (SelectionDAG vs GlobalISel):
--- sdag
+++ gisel
@@ -1,174 +1,379 @@
-addi sp, sp, -80
-sw s0, 76(sp)
-sw s1, 72(sp)
-sw s2, 68(sp)
-sw s3, 64(sp)
-sw s4, 60(sp)
-sw s5, 56(sp)
-sw s6, 52(sp)
-sw s7, 48(sp)
-sw s8, 44(sp)
-sw s9, 40(sp)
-sw s10, 36(sp)
-lw a4, 0(a2)
-lw a5, 0(a1)
-lw a6, 4(a1)
-lw a3, 8(a1)
-lw a1, 12(a1)
-lw t5, 4(a2)
-lw t4, 8(a2)
-lw t3, 12(a2)
-mulhu a2, a5, a4
-mul a7, a6, a4
-lui t6, %hi(G)
-addi t6, t6, %lo(G)
-mulhu t0, a6, a4
-mul t1, a5, t5
-mulhu t2, a5, t5
-mul s0, a6, t5
-mul s3, t4, a5
-mul s5, a3, a4
-mulhu s4, a6, t5
-mul s6, a6, t4
-mul s7, t3, a5
-add a2, a7, a2
-mul s8, t5, a3
-sltu a7, a2, a7
-add a2, t1, a2
-add a7, t0, a7
-sltu t0, a2, t1
-mul s9, a1, a4
-add t0, t2, t0
-mulhu s2, t4, a5
-add t0, a7, t0
-mulhu s1, a3, a4
-sltu a7, t0, a7
+addi sp, sp, -144
+sw ra, 140(sp)
+sw s0, 136(sp)
+sw s1, 132(sp)
+sw s2, 128(sp)
+sw s3, 124(sp)
+sw s4, 120(sp)
+sw s5, 116(sp)
+sw s6, 112(sp)
+sw s7, 108(sp)
+sw s8, 104(sp)
+sw s9, 100(sp)
+sw s10, 96(sp)
+sw s11, 92(sp)
+sw a0, 72(sp)
+lw s6, 0(a1)
+lw a5, 0(a2)
+lw a3, 4(a2)
+lw a7, 4(a1)
+lw a6, 8(a1)
+lw s7, 12(a1)
+lw s3, 8(a2)
+lw s0, 12(a2)
+mulhu a0, s6, a5
+mul a1, s6, a3
+mulhu a4, a7, a5
+mulhu t0, s6, a3
+mul t1, a7, a5
+mul t2, s6, s3
+mul t3, a7, a3
+lui a2, %hi(G)
+mul t4, a6, a5
+add a0, a0, a1
+add a4, a4, t0
+sltu a1, a0, a1
+add t5, a0, t1
+sltu a0, a4, t0
+add a4, a4, t2
+sw t5, 64(sp)
+sltu t0, t5, t1
+sltu t1, a4, t2
+add a4, a4, t3
+add a1, a1, t0
+add a0, a0, t1
+sltu t0, a4, t3
+mulhu t1, a6, a5
+mulhu t2, a7, a3
+add a4, a4, t4
+mulhu t3, s6, s3
+add a0, a0, t0
+sltu t0, a4, t4
+add a0, a0, t0
+add a4, a4, a1
+sw a4, 60(sp)
+sltu a1, a4, a1
+mul t4, s6, s0
+add a0, a0, a1
+sw a0, 80(sp)
+mul t5, a7, s3
+mul s1, a6, a3
+add a1, t1, t2
+sltu a0, a1, t2
+sw a1, 56(sp)
+add a1, a1, t3
+mulhu a4, s7, a5
+mulhu t0, a6, a3
+sw t3, 52(sp)
+sltu t1, a1, t3
+mulhu t2, a7, s3
+add a0, a0, t1
+add a1, a1, t4
+sw t4, 48(sp)
+sltu t1, a1, t4
+add a1, a1, t5
+add a0, a0, t1
+sw t5, 44(sp)
+sltu t1, a1, t5
+mul s2, s7, a5
+add t1, a0, t1
+mulhu t3, s6, s0
+add a0, a4, t0
+mul a4, a7, s0
+add s5, a0, t2
+sltu t6, a0, t0
+sltu a0, s5, t2
+li s9, 0
+mulhu t2, s7, a3
+add t6, t6, a0
+mulhu t5, a6, s3
+addi a2, a2, %lo(G)
+add a0, a1, s1
+sw a2, 36(sp)
+lw s4, 0(a2)
+sw s1, 40(sp)
+sltu s8, a0, s1
+mul t4, a6, s3
+mulhu ra, a7, s0
+sw s2, 76(sp)
+add a0, a0, s2
+add s5, s5, t3
+sltu s2, s5, t3
+mv s1, t2
+add a2, s5, a4
+add t0, t2, t5
+li a1, 32
+neg s10, s4
+srl t3, s3, s4
+sw s10, 24(sp)
+sll s10, s0, s10
+sw t3, 20(sp)
+sw s10, 16(sp)
+bltu s4, a1, .L0
+srl a1, s0, s4
+j .L1
+.L0:
+or a1, t3, s10
+.L1:
+sw s7, 84(sp)
+mul s11, s7, a3
+sw s6, 68(sp)
+sw zero, 88(sp)
+li s10, 0
+add t1, t1, s8
+lw t3, 76(sp)
+sltu t3, a0, t3
+lw s6, 80(sp)
+add a0, a0, s6
+add t6, t6, s2
+sltiu s2, s5, 0
+add s5, a2, t4
+sltu s7, s1, t2
+sltu s6, t0, t5
+add s8, t0, ra
+mv t0, s3
+beqz s4, .L2
+mv t0, a1
+.L2:
+sw t0, 32(sp)
+mul s1, a6, s0
+lw a1, 84(sp)
+mulhu t2, a1, s3
+add t3, t1, t3
+add s2, t6, s2
+lw a1, 80(sp)
+sltu t6, a0, a1
+sltu t5, a2, a4
+add a2, s5, s11
add s6, s7, s6
-add s7, s4, a7
-lw t1, 0(t6)
-lw t2, 12(t6)
-add t0, s0, t0
-add s10, s5, s3
-add s3, s9, s8
-add a7, t0, s10
-sltu s0, t0, s0
-add s4, s2, s6
-add s3, s1, s3
-sltu s6, s10, s5
-add s8, s3, s4
-add s5, s7, s0
-add s6, s8, s6
-sltu s0, a7, t0
-add t0, s5, s6
-add t0, t0, s0
-beq t0, s5, .L0
-sltu s0, t0, s5
-.L0:
-mulhu s5, t3, a5
-mulhu s6, a6, t4
-sltu s2, s4, s2
-snez s4, a6
-snez s7, t3
-sltu s3, s3, s1
-mulhu s8, a1, a4
-mulhu s9, t5, a3
-snez s1, t5
-snez s10, a1
-and s4, s7, s4
-and s7, s10, s1
-snez s1, s5
-snez s5, s6
-or s6, s4, s1
-or s5, s5, s2
-lw s1, 4(t6)
-lw t6, 8(t6)
-snez s2, s8
-snez s4, s9
-or s2, s7, s2
-or s3, s4, s3
-or s4, t4, t3
-or s7, a3, a1
-snez s4, s4
-snez s7, s7
-or s8, s2, s3
-and s7, s7, s4
-srli s2, t1, 3
-sw zero, 16(sp)
-sw zero, 20(sp)
-sw zero, 24(sp)
+sltu t0, s8, ra
+lw t1, 88(sp)
+add t1, s8, t1
+add s9, s9, s10
+li a0, 32
+bltu s4, a0, .L3
sw zero, 28(sp)
-andi s2, s2, 12
-mv s3, sp
-sw a4, 0(sp)
-sw t5, 4(sp)
-sw t4, 8(sp)
-sw t3, 12(sp)
-add t3, s3, s2
-lw s3, 0(t3)
-lw s2, 4(t3)
-lw s4, 8(t3)
-lw t3, 12(t3)
-or t4, s6, s5
-or t5, s7, s8
-or s5, t4, s0
-andi t4, t1, 31
-slli s6, s2, 1
-xori s0, t4, 31
-slli s9, s4, 1
-slli s8, t3, 1
-beq a1, t2, .L1
-slt t4, t2, a1
-j .L2
-.L1:
-sltu t4, t6, a3
-.L2:
-or t5, t5, s5
-srl s5, s3, t1
-sll s6, s6, s0
-srl s7, s2, t1
-sll s9, s9, s0
-srl s2, s4, t1
-sll s3, s8, s0
-beq a6, s1, .L3
-sltu a6, s1, a6
+srl a0, a3, s4
j .L4
.L3:
-sltu a6, t1, a5
+srl a0, a5, s4
+lw a1, 24(sp)
+sll a1, a3, a1
+srl a4, s0, s4
+sw a4, 28(sp)
+or a0, a0, a1
.L4:
-mul a4, a5, a4
-or a5, s5, s6
-or s0, s7, s9
-xor a1, a1, t2
-xor t2, a3, t6
-or a3, s2, s3
-or t2, t2, a1
-srl t1, t3, t1
-andi a1, t5, 1
-beqz t2, .L5
-mv a6, t4
+add ra, t3, t6
+add s2, s2, t5
+lw a1, 84(sp)
+mul t5, a1, s3
+mulhu t6, a6, s0
+sltu t3, s5, t4
+sltu a4, a2, s11
+sltiu t4, a2, 0
+add t0, s6, t0
+lw a1, 88(sp)
+sltu s8, t1, a1
+sltiu s7, t1, 0
+add t1, t1, s1
+add a1, s9, t2
+mv s6, a5
+beqz s4, .L5
+mv s6, a0
.L5:
-xori a6, a6, 1
-lui t2, %hi(G.1)
-sw t1, 0(a0)
-sb a6, %lo(G.1)(t2)
-sw a3, 0(a0)
-sw s0, 0(a0)
+li s5, 0
+add a0, s2, t3
+add t3, a4, t4
+add t4, a2, ra
+add t0, t0, s8
+add s7, s7, s7
+add a2, t1, t5
+sltu s8, s9, s10
+sltu a4, a1, t2
+add a1, a1, t6
+li t2, 64
+sub s11, t2, s4
+li t2, 32
+bltu s4, t2, .L6
+sw zero, 12(sp)
+j .L7
+.L6:
+srl t2, a3, s4
+sw t2, 12(sp)
+.L7:
+add a0, a0, t3
+sltu s2, t4, ra
+add t0, t0, s7
+sltu s1, t1, s1
+sltu t5, a2, t5
+sltiu t2, a2, 0
+add s8, s8, a4
+sltu ra, a1, t6
+add t6, a1, s5
+li a1, 32
+bltu s11, a1, .L8
+li t1, 0
+sll s10, s3, s11
+j .L9
+.L8:
+neg a1, s11
+srl a1, s3, a1
+lw a4, 24(sp)
+sll t1, s3, a4
+lw a4, 16(sp)
+or s10, a1, a4
+.L9:
+lw a1, 84(sp)
+mul t3, a1, s0
+add a0, a0, s2
+add a1, t0, s1
+add s2, t5, t2
+add a4, s8, ra
+sltu s1, t6, s5
+lw t0, 88(sp)
+add t6, t6, t0
+addi t5, s4, -64
+mv t0, s0
+beqz s11, .L10
+mv t0, s10
+.L10:
+add a1, a1, s2
+add a2, a2, a0
+add a4, a4, s1
+lw s1, 88(sp)
+sltu s2, t6, s1
+sltiu s1, t6, 0
+add t6, t6, t3
+li s7, 32
+bltu t5, s7, .L11
+srl s7, s0, t5
+j .L12
+.L11:
+neg s7, t5
+sll s7, s0, s7
+lw s8, 20(sp)
+or s7, s8, s7
+.L12:
+lw s11, 84(sp)
+add a1, a1, t2
+sltu a0, a2, a0
+add s2, a4, s2
+add s10, s1, s1
+sltu s8, t6, t3
+sltiu t2, t6, 0
+mv t3, s3
+beqz t5, .L13
+mv t3, s7
+.L13:
+li a4, 0
+mulhu s3, s11, s0
+li s7, 0
+add a0, a1, a0
+add a1, s2, s10
+add s1, s1, s8
+add s2, t2, t2
+li s8, 32
+bltu t5, s8, .L14
+li t5, 0
+j .L15
+.L14:
+srl t5, s0, s4
+.L15:
+add a1, a1, s1
+add s0, s2, t2
+add t2, t6, a0
+add s3, a4, s3
+add s5, s7, s5
+li a4, 64
+bgeu s4, a4, .L16
+or t3, s6, t1
+lw a4, 12(sp)
+or t5, a4, t0
+.L16:
+lw t6, 68(sp)
+lw s1, 32(sp)
+add a1, a1, s0
+sltu a4, t2, a0
+add s9, s9, s3
+lw a0, 88(sp)
+add s5, s5, a0
+mv t0, a5
+beqz s4, .L17
+mv t0, t3
+mv a3, t5
+.L17:
+lw s0, 36(sp)
+lw a0, 4(s0)
+add a1, a1, a4
+add a4, s9, s5
+lw t1, 52(sp)
+lw t3, 48(sp)
+add t1, t1, t3
+lw t5, 44(sp)
+lw t3, 40(sp)
+add t5, t5, t3
+or t3, t4, a2
+lw t4, 28(sp)
+li a2, 64
+bltu s4, a2, .L18
+li s1, 0
+li t4, 0
+.L18:
+lw a2, 8(s0)
+add a4, a4, a1
+lw a1, 56(sp)
+add t1, a1, t1
+lw a1, 76(sp)
+add t5, t5, a1
+or t2, t3, t2
+beq a7, a0, .L19
+sltu a0, a0, a7
+j .L20
+.L19:
+sltu a0, s4, t6
+.L20:
+xori a0, a0, 1
+lw a7, 12(s0)
+lui a1, %hi(G.1)
+add t5, t1, t5
+or t1, t2, a4
+beq a6, a2, .L21
+sltu a0, a2, a6
+xori a0, a0, 1
+.L21:
+mul a5, t6, a5
+lw a4, 80(sp)
+add a4, t5, a4
+snez a2, t1
+beq s11, a7, .L22
+slt a0, a7, s11
+xori a0, a0, 1
+.L22:
+sb a0, %lo(G.1)(a1)
+sw t0, 0(a0)
+sw a3, 4(a0)
+sw s1, 8(a0)
+sw t4, 12(a0)
+lw a0, 72(sp)
sw a5, 0(a0)
-sw a4, 0(a0)
-sw a2, 4(a0)
-sw a7, 8(a0)
-sw t0, 12(a0)
-sb a1, 16(a0)
-lw s0, 76(sp)
-lw s1, 72(sp)
-lw s2, 68(sp)
-lw s3, 64(sp)
-lw s4, 60(sp)
-lw s5, 56(sp)
-lw s6, 52(sp)
-lw s7, 48(sp)
-lw s8, 44(sp)
-lw s9, 40(sp)
-lw s10, 36(sp)
-addi sp, sp, 80
+lw a1, 64(sp)
+sw a1, 4(a0)
+lw a1, 60(sp)
+sw a1, 8(a0)
+sw a4, 12(a0)
+sb a2, 16(a0)
+lw ra, 140(sp)
+lw s0, 136(sp)
+lw s1, 132(sp)
+lw s2, 128(sp)
+lw s3, 124(sp)
+lw s4, 120(sp)
+lw s5, 116(sp)
+lw s6, 112(sp)
+lw s7, 108(sp)
+lw s8, 104(sp)
+lw s9, 100(sp)
+lw s10, 96(sp)
+lw s11, 92(sp)
+addi sp, sp, 144
ret
Occurrences (1):
Generated 2026-10-15 08:05 UTC.