regression: +71 insts: lshr_16bytes_wordOff (wide-scalar-shift-by-byte-multiple-legalization.ll)
| Run: | main-bc8218b282-20261015-074651 |
| Kind: | regression |
| Category: | +71 insts: lshr_16bytes_wordOff (wide-scalar-shift-by-byte-multiple-legalization.ll) |
| Occurrences: | 1 in 1 configs, 1 test files |
| Snippet from: | wide-scalar-shift-by-byte-multiple-legalization.ll @lshr_16bytes_wordOff via llvm-extract |
| Config: | -mtriple=riscv32 -verify-machineinstrs |
| Local check: | reproduces at bc8218b282 |
| Compiler Explorer: | not uploaded (over --godbolt-limit or disabled) |
Snippet:
; Function Attrs: nounwind
define void @lshr_16bytes_wordOff(ptr %src.ptr, ptr %wordOff.ptr, ptr %dst) #0 {
%src = load i128, ptr %src.ptr, align 1
%wordOff = load i128, ptr %wordOff.ptr, align 1
%bitOff = shl i128 %wordOff, 5
%res = lshr i128 %src, %bitOff
store i128 %res, ptr %dst, align 1
ret void
}
attributes #0 = { nounwind }
Reproduce:
llc -mtriple=riscv32 -verify-machineinstrs -global-isel snippet.ll -o -
llc -mtriple=riscv32 -verify-machineinstrs -global-isel=0 snippet.ll -o -
Assembly diff (SelectionDAG vs GlobalISel):
--- sdag
+++ gisel
@@ -1,88 +1,179 @@
-addi sp, sp, -32
-lbu a1, 0(a1)
-lbu a3, 1(a0)
-lbu a4, 2(a0)
-lbu a5, 3(a0)
-lbu a6, 0(a0)
-slli a3, a3, 8
+addi sp, sp, -16
+sw s0, 12(sp)
+sw s1, 8(sp)
+sw s2, 4(sp)
+lbu a5, 0(a0)
+lbu a4, 1(a0)
+lbu a3, 2(a0)
+lbu a7, 3(a0)
+lbu a6, 4(a0)
+lbu t0, 5(a0)
+lbu t1, 7(a0)
+lbu t2, 6(a0)
+lbu t4, 11(a0)
+lbu t5, 9(a0)
+lbu t6, 10(a0)
+lbu s0, 8(a0)
+slli a7, a7, 8
+or t3, a7, a3
+slli t1, t1, 8
+or t1, t1, t2
+slli t4, t4, 8
+slli t5, t5, 8
+or a3, t4, t6
+or a7, t5, s0
+slli a3, a3, 16
+lbu t2, 12(a0)
+lbu t4, 13(a0)
+lbu t5, 14(a0)
+lbu a0, 15(a0)
+lbu t6, 0(a1)
+lbu s0, 1(a1)
+lbu s1, 2(a1)
+lbu s2, 3(a1)
+or a3, a3, a7
+slli t4, t4, 8
+or a7, t4, t2
+slli a0, a0, 8
+or t2, a0, t5
+slli a1, a4, 8
+slli a0, t0, 8
+slli s2, s2, 8
+slli s0, s0, 8
+or a4, s2, s1
+or t0, s0, t6
slli a4, a4, 16
-slli a5, a5, 24
-lbu a7, 4(a0)
-lbu t0, 5(a0)
-lbu t1, 6(a0)
-lbu t2, 7(a0)
-or a3, a3, a6
-or a4, a5, a4
-or a3, a4, a3
-slli t0, t0, 8
-lbu a4, 9(a0)
+slli t2, t2, 16
+or a4, a4, t0
+or a7, t2, a7
+slli a4, a4, 5
+li t0, 32
+neg t4, a4
+srl t2, a3, a4
+sll t5, a7, t4
+bltu a4, t0, .L0
+srl t6, a7, a4
+j .L1
+.L0:
+or t6, t2, t5
+.L1:
+or a1, a1, a5
+slli t3, t3, 16
+or a5, a0, a6
slli t1, t1, 16
-slli t2, t2, 24
-or a5, t0, a7
-or a6, t2, t1
-lbu a7, 8(a0)
-lbu t0, 10(a0)
-lbu t1, 11(a0)
-slli a4, a4, 8
-lbu t2, 12(a0)
-lbu t3, 13(a0)
-lbu t4, 14(a0)
-lbu a0, 15(a0)
-or a5, a6, a5
-or a4, a4, a7
-slli t0, t0, 16
-slli t1, t1, 24
-or a6, t1, t0
-slli t3, t3, 8
-slli t4, t4, 16
-slli a0, a0, 24
-or a7, t3, t2
-or a0, a0, t4
-or a4, a6, a4
-or a0, a0, a7
-slli a1, a1, 2
-sw zero, 16(sp)
-sw zero, 20(sp)
-sw zero, 24(sp)
-sw zero, 28(sp)
-andi a1, a1, 12
-mv a6, sp
-sw a3, 0(sp)
-sw a5, 4(sp)
-sw a4, 8(sp)
-sw a0, 12(sp)
-add a1, a6, a1
-lw a0, 8(a1)
-lw a3, 4(a1)
-lw a4, 0(a1)
-lw a1, 12(a1)
-srli a5, a0, 16
+mv a0, a3
+beqz a4, .L2
+mv a0, t6
+.L2:
+or a6, t3, a1
+or a5, t1, a5
+bltu a4, t0, .L3
+li a1, 0
+srl t6, a5, a4
+j .L4
+.L3:
+srl t1, a6, a4
+sll t3, a5, t4
+srl a1, a7, a4
+or t6, t1, t3
+.L4:
+li t1, 64
+mv t3, a6
+beqz a4, .L5
+mv t3, t6
+.L5:
+sub s0, t1, a4
+bltu a4, t0, .L6
+li t6, 0
+bgeu s0, t0, .L7
+.L8:
+neg s1, s0
+srl s1, a3, s1
+sll t4, a3, t4
+or s2, s1, t5
+j .L9
+.L6:
+srl t6, a5, a4
+bltu s0, t0, .L8
+.L7:
+li t4, 0
+sll s2, a3, s0
+.L9:
+addi s1, a4, -64
+mv t5, a7
+beqz s0, .L10
+mv t5, s2
+.L10:
+bltu s1, t0, .L11
+srl t2, a7, s1
+bnez s1, .L12
+j .L13
+.L11:
+neg s0, s1
+sll s0, a7, s0
+or t2, t2, s0
+beqz s1, .L13
+.L12:
+mv a3, t2
+.L13:
+bltu s1, t0, .L14
+li a7, 0
+bltu a4, t1, .L15
+j .L16
+.L14:
+srl a7, a7, a4
+bgeu a4, t1, .L16
+.L15:
+or a3, t3, t4
+or a7, t6, t5
+.L16:
+bnez a4, .L17
+bltu a4, t1, .L18
+.L19:
+li a0, 0
+li a1, 0
+.L18:
+lui a3, 16
+addi a3, a3, -1
+srli a4, a6, 16
+and a7, a6, a3
+srli t0, a6, 24
+srli a7, a7, 8
+sb a6, 0(a2)
+sb a7, 1(a2)
+sb a4, 2(a2)
+sb t0, 3(a2)
+srli a4, a5, 16
+and a6, a5, a3
+srli a6, a6, 8
+srli a7, a5, 24
+sb a5, 4(a2)
+sb a6, 5(a2)
+sb a4, 6(a2)
+sb a7, 7(a2)
+srli a4, a0, 16
+and a5, a0, a3
+srli a5, a5, 8
srli a6, a0, 24
-srli a7, a0, 8
sb a0, 8(a2)
-sb a7, 9(a2)
-sb a5, 10(a2)
+sb a5, 9(a2)
+sb a4, 10(a2)
sb a6, 11(a2)
srli a0, a1, 16
-srli a5, a1, 24
-srli a6, a1, 8
+and a3, a1, a3
+srli a3, a3, 8
+srli a4, a1, 24
sb a1, 12(a2)
-sb a6, 13(a2)
+sb a3, 13(a2)
sb a0, 14(a2)
-sb a5, 15(a2)
-srli a0, a4, 16
-srli a1, a4, 24
-srli a5, a4, 8
-sb a4, 0(a2)
-sb a5, 1(a2)
-sb a0, 2(a2)
-sb a1, 3(a2)
-srli a0, a3, 16
-srli a1, a3, 24
-srli a4, a3, 8
-sb a3, 4(a2)
-sb a4, 5(a2)
-sb a0, 6(a2)
-sb a1, 7(a2)
-addi sp, sp, 32
+sb a4, 15(a2)
+lw s0, 12(sp)
+lw s1, 8(sp)
+lw s2, 4(sp)
+addi sp, sp, 16
ret
+.L17:
+mv a6, a3
+mv a5, a7
+bgeu a4, t1, .L19
+j .L18
Occurrences (1):
Generated 2026-10-15 08:05 UTC.