regression: +61 insts: test_urem_7 (split-urem-by-constant.ll)
| Run: | main-bc8218b282-20261015-074651 |
| Kind: | regression |
| Category: | +61 insts: test_urem_7 (split-urem-by-constant.ll) |
| Occurrences: | 1 in 1 configs, 1 test files |
| Snippet from: | split-urem-by-constant.e0aad5675e.ll (mutant of split-urem-by-constant.ll) @test_urem_7 via llvm-extract |
| Config: | -mtriple=riscv64 -mattr=+m |
| Local check: | reproduces at bc8218b282 |
| Compiler Explorer: | not uploaded (over --godbolt-limit or disabled) |
Snippet:
; Function Attrs: nounwind
define i128 @test_urem_7(i128 %x) #0 {
%A = alloca i128, align 8
store i128 poison, ptr %A, align 4
%a = urem i128 %x, 7
%B = ashr i128 %a, %a
store i128 %B, ptr %A, align 4
ret i128 %a
}
attributes #0 = { nounwind }
Reproduce:
llc -mtriple=riscv64 -mattr=+m -global-isel snippet.ll -o -
llc -mtriple=riscv64 -mattr=+m -global-isel=0 snippet.ll -o -
Assembly diff (SelectionDAG vs GlobalISel):
--- sdag
+++ gisel
@@ -1,25 +1,91 @@
+lui a2, %hi(.L0)
+lui a3, %hi(.L1)
+ld a2, %lo(.L0)(a2)
+ld a3, %lo(.L1)(a3)
+mulhu a6, a1, a3
+mulhu a7, a0, a2
+mul t0, a0, a3
+mulhu t1, a1, a2
+mulhu t2, a0, a3
+mul a2, a1, a2
+mul a3, a1, a3
+mv a4, a6
+add a7, a7, t0
+add t1, t1, t2
+sltu a5, a7, t0
+add a7, a7, a2
+sltu a6, t1, t2
+sltu a2, a7, a2
+sltiu a7, t1, 0
+add t1, t1, a3
+add a6, a6, a7
+sltu a3, t1, a3
+sltiu a7, t1, 0
+add a2, a5, a2
+add a3, a6, a3
+add t1, t1, a2
+add a3, a3, a7
+sltu a2, t1, a2
+sltu a5, a0, t1
+add a2, a3, a2
+sub a3, a1, a5
+add a2, a4, a2
+sub a4, a0, t1
+sub a3, a3, a2
+srli a4, a4, 1
+slli a5, a3, 63
+li a6, -7
+or a4, a4, a5
+srli a3, a3, 1
+add a4, a4, t1
+add a2, a3, a2
+sltu a3, a4, t1
+li a5, -1
+add a2, a2, a3
+srli a4, a4, 2
+slli a3, a2, 62
+srli a2, a2, 2
+or a3, a4, a3
+mul a2, a2, a6
+mul a4, a3, a6
+mulhu a6, a3, a6
+mul a3, a3, a5
+add a1, a1, a2
+add a0, a0, a4
+add a3, a6, a3
+sltu a4, a0, a4
+add a1, a1, a3
+li a2, 64
+add a1, a1, a4
+bltu a0, a2, .L2
+sub a3, a0, a2
+sra a4, a1, a3
+mv a3, a0
+bnez a0, .L3
+j .L4
+.L2:
+neg a3, a0
+srl a4, a0, a0
+sll a3, a1, a3
+or a4, a4, a3
+mv a3, a0
+beqz a0, .L4
+.L3:
+mv a3, a4
+.L4:
addi sp, sp, -16
-mv a2, a1
-li a1, 0
-li a3, -1
-slli a4, a2, 4
-srli a5, a0, 60
-or a4, a5, a4
-lui a5, %hi(.L0)
-srli a3, a3, 4
-ld a5, %lo(.L0)(a5)
-and a0, a0, a3
-and a3, a4, a3
-add a0, a0, a3
-srli a2, a2, 56
-add a0, a0, a2
-mulhu a2, a0, a5
-srli a2, a2, 1
-slli a3, a2, 3
-sub a2, a2, a3
-add a0, a0, a2
-srl a2, a0, a0
-sd a2, 0(sp)
-sd zero, 8(sp)
+mv a4, sp
+bltu a0, a2, .L5
+srai a2, a1, 63
+j .L6
+.L5:
+sra a2, a1, a0
+.L6:
+srli a5, a3, 32
+srli a6, a2, 32
+sw a6, 12(a4)
+sw a3, 0(sp)
+sw a5, 4(sp)
+sw a2, 8(sp)
addi sp, sp, 16
ret
Occurrences (1):
| Input | Function | Config |
|---|
| split-urem-by-constant.e0aad5675e.ll (mutant of split-urem-by-constant.ll) | test_urem_7 | -mtriple=riscv64 -mattr=+m |
Generated 2026-10-15 08:05 UTC.