regression: +67 insts: shl_cttz_constant_i64 (shl-cttz.ll)
| Run: | explore-bc8218b282-20261015-075519 |
| Kind: | regression |
| Category: | +67 insts: shl_cttz_constant_i64 (shl-cttz.ll) |
| Occurrences: | 1 in 1 configs, 1 test files |
| Snippet from: | shl-cttz.048faed466.ll (mutant of shl-cttz.ll) @shl_cttz_constant_i64 via llvm-extract |
| Config: | -mtriple=riscv32 -mattr=+m |
| Local check: | reproduces at bc8218b282 |
| Compiler Explorer: | not uploaded (over --godbolt-limit or disabled) |
Snippet:
@G = external global i1
define i64 @shl_cttz_constant_i64(i64 %y) {
entry:
%A = alloca i128, align 8
store i128 1, ptr %A, align 4
%cttz = call i64 @llvm.cttz.i64(i64 %y, i1 true)
%L = load i128, ptr %A, align 4
switch i128 %L, label %SW_D [
i128 318930731163887670, label %SW_C
i128 12474326081712352415, label %SW_C1
i128 9242542644793105854, label %SW_C2
i128 4830656226561388135, label %SW_C3
i128 13108546695445346743, label %SW_C4
i128 12270436321526771585, label %SW_C5
]
BB: ; preds = %SW_C5, %SW_C4, %SW_C3, %SW_C2, %SW_C1
%res = shl i64 4, %cttz
ret i64 %res
SW_D: ; preds = %entry
ret i64 -1
SW_C: ; preds = %entry
ret i64 %cttz
SW_C1: ; preds = %entry
br label %BB
SW_C2: ; preds = %entry
br label %BB
SW_C3: ; preds = %entry
br label %BB
SW_C4: ; preds = %entry
br label %BB
SW_C5: ; preds = %SW_C5, %entry
%LGV = load i1, ptr @G, align 1
br i1 %LGV, label %SW_C5, label %BB
}
; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i64 @llvm.cttz.i64(i64, i1 immarg) #0
attributes #0 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
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,88 +1,164 @@
addi sp, sp, -16
-li a2, 1
-sw a2, 0(sp)
-sw zero, 4(sp)
-sw zero, 8(sp)
-sw zero, 12(sp)
-lui a4, 30667
-addi a4, a4, 1329
-lui a3, %hi(.L0)
-addi a3, a3, %lo(.L0)
-bnez a0, .L1
-neg a0, a1
-and a0, a1, a0
+mv a2, a1
+li a1, 0
+li a4, 1
+lui a5, 686711
+lui a3, 697494
+addi a3, a3, -1838
+mv a6, sp
+sw zero, 4(a6)
+sw zero, 8(a6)
+sw zero, 12(a6)
+sw a4, 0(sp)
+lui a4, 349525
+lui a6, 209715
+addi t0, a4, 1365
+addi a7, a6, 819
+lui a4, 61681
+lui t1, 4112
+addi a6, a4, -241
+addi a4, t1, 257
+beqz a0, .L0
+not a2, a0
+addi a0, a0, -1
+and a0, a2, a0
+srli a2, a0, 1
+and a2, a2, t0
+sub a0, a0, a2
+srli a2, a0, 2
+and a2, a2, a7
+and a0, a0, a7
+add a0, a2, a0
+srli a2, a0, 4
+add a0, a2, a0
+and a0, a0, a6
mul a0, a0, a4
-srli a0, a0, 27
-add a0, a3, a0
-lbu a0, 0(a0)
+srli a0, a0, 24
+j .L1
+.L0:
+not a0, a2
+addi a2, a2, -1
+and a0, a0, a2
+srli a2, a0, 1
+and a2, a2, t0
+sub a0, a0, a2
+srli a2, a0, 2
+and a2, a2, a7
+and a0, a0, a7
+add a0, a2, a0
+srli a2, a0, 4
+add a0, a2, a0
+and a0, a0, a6
+mul a0, a0, a4
+srli a0, a0, 24
addi a0, a0, 32
-j .L2
-lui a1, 270353
-addi a1, a1, 51
-lui a3, 745135
-xor a1, a2, a1
-addi a3, a3, -1596
-or a1, a1, a3
-beqz a1, .L3
-lui a1, 265253
-addi a1, a1, -1915
-lui a3, 709083
-xor a1, a2, a1
-addi a3, a3, 1402
-or a1, a1, a3
-beqz a1, .L3
-lui a1, 23138
-addi a1, a1, 1793
-lui a3, 697494
-xor a1, a2, a1
-addi a2, a3, -1838
-or a1, a1, a2
-bnez a1, .L4
-lui a1, %hi(G)
-lbu a1, %lo(G)(a1)
+.L1:
+lw a2, 4(sp)
+lw a4, 0(sp)
+lw a6, 8(sp)
+addi a5, a5, -127
+beq a2, a3, .L2
+sltu a7, a2, a3
+j .L3
+.L2:
+sltu a7, a4, a5
+.L3:
+xori t0, a7, 1
+lw a7, 12(sp)
+bne a6, a1, .L4
+bne a7, a1, .L5
+.L6:
+bnez t0, .L7
+.L8:
+lui a3, 438187
+lui a5, 18129
+addi a3, a3, -1994
+addi a5, a5, 463
+xor a3, a4, a3
+xor a5, a2, a5
+or a5, a3, a5
+or a3, a6, a7
+or a5, a5, a3
+beqz a5, .L9
+lui a5, 525191
+lui a6, 274591
+addi a5, a5, -409
+addi a6, a6, 62
+xor a5, a4, a5
+xor a6, a2, a6
+or a5, a5, a6
+or a5, a5, a3
+beqz a5, .L10
+lui a5, 1033390
+lui a6, 525378
+addi a5, a5, -578
+addi a6, a6, -1136
+xor a4, a4, a5
+xor a2, a2, a6
+or a2, a4, a2
+or a2, a2, a3
+beqz a2, .L10
+j .L11
+.L4:
+sltiu t0, a6, 0
+xori t0, t0, 1
+beq a7, a1, .L6
.L5:
-bnez a1, .L5
-j .L3
-.L1:
-neg a1, a0
-and a0, a0, a1
-mul a0, a0, a4
-srli a0, a0, 27
-add a0, a3, a0
-lbu a0, 0(a0)
-.L2:
-lui a1, 525057
-addi a1, a1, -447
-lui a3, 274591
-xor a1, a2, a1
-addi a3, a3, 62
-or a1, a1, a3
-beqz a1, .L3
-lui a1, 1033454
-addi a1, a1, -66
-or a1, a2, a1
-bnez a1, .L4
-.L3:
-li a1, 4
-addi a3, a0, -32
-sll a2, a1, a0
-bltz a3, .L6
-mv a1, a2
-j .L7
-.L6:
-not a0, a0
-li a1, 2
-srl a1, a1, a0
+slti t0, a7, 0
+xori t0, t0, 1
+beqz t0, .L8
.L7:
-srai a0, a3, 31
-and a0, a0, a2
+lui t0, 490048
+lui t1, 745135
+addi t0, t0, -1609
+addi t1, t1, -1596
+xor t0, a4, t0
+xor t1, a2, t1
+or t0, t0, t1
+or a6, a6, a7
+or a7, t0, a6
+beqz a7, .L10
+lui a7, 789935
+lui t0, 709083
+addi a7, a7, -865
+addi t0, t0, 1402
+xor a7, a4, a7
+xor t0, a2, t0
+or a7, a7, t0
+or a7, a7, a6
+beqz a7, .L10
+xor a4, a4, a5
+xor a2, a2, a3
+or a2, a4, a2
+or a2, a2, a6
+bnez a2, .L11
+lui a2, %hi(G)
+lbu a2, %lo(G)(a2)
+andi a2, a2, 1
+.L12:
+bnez a2, .L12
+.L10:
+li a2, 32
+li a3, 4
+bltu a0, a2, .L13
+li a2, 0
+sll a3, a3, a0
+bnez a0, .L14
+j .L15
+.L13:
+neg a4, a0
+sll a2, a3, a0
+srl a3, a3, a4
+beqz a0, .L15
+.L14:
+mv a1, a3
+.L15:
+mv a0, a2
addi sp, sp, 16
ret
-li a1, 0
+.L11:
+li a0, -1
+li a1, -1
+.L9:
addi sp, sp, 16
ret
-.L4:
-li a0, -1
-li a1, -1
-addi sp, sp, 16
-ret
Occurrences (1):
| Input | Function | Config |
|---|
| shl-cttz.048faed466.ll (mutant of shl-cttz.ll) | shl_cttz_constant_i64 | -mtriple=riscv32 -mattr=+m |
Generated 2026-10-15 08:05 UTC.