regression: +75 insts: shl_16bytes_wordOff (wide-scalar-shift-by-byte-multiple-legalization.ll)

Run:explore-04ca53e65f-20261014-114124
Kind:regression
Category:+75 insts: shl_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.2a0954e1de.ll (mutant of wide-scalar-shift-by-byte-multiple-legalization.ll) @shl_16bytes_wordOff via llvm-extract
Config:-mtriple=riscv32 -verify-machineinstrs
Local check:reproduces at 04ca53e65f
Compiler Explorer:not uploaded (over --godbolt-limit or disabled)

Snippet:

@G = external global i128

; Function Attrs: nounwind
define void @shl_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
  %B = sub i128 %src, %src
  store i128 %B, ptr @G, align 4
  %bitOff = shl i128 %wordOff, 5
  %res = shl 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,94 +1,186 @@
 addi sp, sp, -32
-lbu a1, 0(a1)
-lbu a3, 1(a0)
-lbu a4, 2(a0)
-lbu a5, 3(a0)
-lbu a6, 0(a0)
-lbu a7, 5(a0)
-slli a3, a3, 8
+sw s0, 28(sp)
+sw s1, 24(sp)
+sw s2, 20(sp)
+sw s3, 16(sp)
+sw s4, 12(sp)
+sw s5, 8(sp)
+sw s6, 4(sp)
+lbu a3, 0(a0)
+lbu a4, 1(a0)
+lbu a5, 2(a0)
+lbu a6, 3(a0)
+lui a7, %hi(G)
+lbu t0, 4(a0)
+lbu t1, 5(a0)
+lbu t2, 7(a0)
+lbu t3, 6(a0)
+addi a7, a7, %lo(G)
+slli a4, a4, 8
+slli a6, a6, 8
+or a3, a4, a3
+or a4, a6, a5
 slli a4, a4, 16
-slli a5, a5, 24
-lbu t0, 4(a0)
-lbu t1, 6(a0)
-lbu t2, 7(a0)
-or a3, a3, a6
-or a4, a5, a4
+slli t2, t2, 8
+slli t1, t1, 8
+or a5, t2, t3
+or a6, t1, t0
+slli t0, a5, 16
+lbu t1, 0(a1)
+lbu t2, 1(a1)
+lbu t4, 2(a1)
+lbu t6, 3(a1)
+or a5, a4, a3
+or a1, t0, a6
+lbu a6, 8(a0)
+lbu t5, 9(a0)
+lbu t3, 10(a0)
+lbu s1, 11(a0)
+slli t2, t2, 8
+slli t6, t6, 8
+or a3, t2, t1
+or a4, t6, t4
+slli a4, a4, 16
+lbu t0, 12(a0)
+lbu s0, 13(a0)
+lbu t6, 14(a0)
+lbu s3, 15(a0)
 or a3, a4, a3
-slli a7, a7, 8
-or a4, a7, t0
-lbu a5, 9(a0)
-slli t1, t1, 16
-slli t2, t2, 24
-or a6, t2, t1
-lbu a7, 8(a0)
-lbu t0, 10(a0)
-lbu t1, 11(a0)
-or a4, a6, a4
-slli a5, a5, 8
-lbu a6, 12(a0)
-lbu t2, 13(a0)
-lbu t3, 14(a0)
-lbu a0, 15(a0)
-slli t0, t0, 16
-slli t1, t1, 24
-or a5, a5, a7
-or a7, t1, t0
-or a5, a7, a5
-slli t2, t2, 8
-slli t3, t3, 16
-slli a0, a0, 24
-or a6, t2, a6
-or a0, a0, t3
-or a0, a0, a6
-lui a6, %hi(G)
-addi a6, a6, %lo(G)
-sw zero, 0(a6)
-sw zero, 4(a6)
-sw zero, 8(a6)
-sw zero, 12(a6)
-slli a1, a1, 2
-sw zero, 0(sp)
-sw zero, 4(sp)
-sw zero, 8(sp)
-sw zero, 12(sp)
-andi a1, a1, 12
-addi a6, sp, 16
-sw a3, 16(sp)
-sw a4, 20(sp)
-sw a5, 24(sp)
-sw a0, 28(sp)
-sub a0, a6, a1
-lw a1, 8(a0)
-lw a3, 4(a0)
-lw a4, 0(a0)
-lw a0, 12(a0)
-srli a5, a1, 24
-srli a6, a1, 16
-srli a7, a1, 8
-sb a1, 8(a2)
-sb a7, 9(a2)
-sb a6, 10(a2)
-sb a5, 11(a2)
-srli a1, a0, 24
-srli a5, a0, 16
-srli a6, a0, 8
-sb a0, 12(a2)
-sb a6, 13(a2)
-sb a5, 14(a2)
-sb a1, 15(a2)
-srli a0, a4, 24
-srli a1, a4, 16
-srli a5, a4, 8
-sb a4, 0(a2)
+sw zero, 0(a7)
+sw zero, 4(a7)
+sw zero, 8(a7)
+sw zero, 12(a7)
+slli a4, a3, 5
+li a7, 64
+li t2, 32
+neg t4, a4
+srl s4, a5, t4
+sll t1, a1, a4
+bltu a4, t2, .L0
+li a0, 0
+sll s5, a5, a4
+j .L1
+.L0:
+sll a0, a5, a4
+or s5, s4, t1
+.L1:
+sub s2, a7, a4
+mv a3, a1
+beqz a4, .L2
+mv a3, s5
+.L2:
+slli s1, s1, 8
+slli s3, s3, 8
+bltu s2, t2, .L3
+srl s4, a1, s2
+j .L4
+.L3:
+neg s5, s2
+sll s5, a1, s5
+or s4, s4, s5
+.L4:
+slli s6, t5, 8
+or s5, s1, t3
+slli t5, s0, 8
+or s1, s3, t6
+mv t3, a5
+beqz s2, .L5
+mv t3, s4
+.L5:
+or a6, s6, a6
+slli s0, s5, 16
+or t6, t5, t0
+slli s1, s1, 16
+bltu s2, t2, .L6
+li t5, 0
+j .L7
+.L6:
+srl t5, a1, t4
+.L7:
+or t0, s0, a6
+or a6, s1, t6
+bltu a4, t2, .L8
+li t4, 0
+sll s1, t0, a4
+j .L9
+.L8:
+srl t6, t0, t4
+sll s0, a6, a4
+sll t4, t0, a4
+or s1, t6, s0
+.L9:
+addi s0, a4, -64
+mv t6, a6
+beqz a4, .L10
+mv t6, s1
+.L10:
+bltu s0, t2, .L11
+li t2, 0
+sll a5, a5, s0
+bnez s0, .L12
+j .L13
+.L11:
+neg t2, s0
+srl s1, a5, t2
+sll t2, a5, a4
+or a5, s1, t1
+beqz s0, .L13
+.L12:
+mv a1, a5
+.L13:
+bltu a4, a7, .L14
+li a0, 0
+li a3, 0
+bnez a4, .L15
+j .L16
+.L14:
+or t2, t3, t4
+or a1, t5, t6
+beqz a4, .L16
+.L15:
+mv t0, t2
+mv a6, a1
+.L16:
+lui a1, 16
+addi a1, a1, -1
+srli a4, a0, 16
+and a5, a0, a1
+srli a7, a0, 24
+srli a5, a5, 8
+sb a0, 0(a2)
 sb a5, 1(a2)
-sb a1, 2(a2)
-sb a0, 3(a2)
-srli a0, a3, 24
-srli a1, a3, 16
-srli a4, a3, 8
+sb a4, 2(a2)
+sb a7, 3(a2)
+srli a0, a3, 16
+and a4, a3, a1
+srli a4, a4, 8
+srli a5, a3, 24
 sb a3, 4(a2)
 sb a4, 5(a2)
-sb a1, 6(a2)
-sb a0, 7(a2)
+sb a0, 6(a2)
+sb a5, 7(a2)
+srli a0, t0, 16
+and a3, t0, a1
+srli a3, a3, 8
+srli a4, t0, 24
+sb t0, 8(a2)
+sb a3, 9(a2)
+sb a0, 10(a2)
+sb a4, 11(a2)
+srli a0, a6, 16
+and a1, a6, a1
+srli a1, a1, 8
+srli a3, a6, 24
+sb a6, 12(a2)
+sb a1, 13(a2)
+sb a0, 14(a2)
+sb a3, 15(a2)
+lw s0, 28(sp)
+lw s1, 24(sp)
+lw s2, 20(sp)
+lw s3, 16(sp)
+lw s4, 12(sp)
+lw s5, 8(sp)
+lw s6, 4(sp)
 addi sp, sp, 32
 ret

Occurrences (1):

InputFunctionConfig
wide-scalar-shift-by-byte-multiple-legalization.2a0954e1de.ll (mutant of wide-scalar-shift-by-byte-multiple-legalization.ll)shl_16bytes_wordOff-mtriple=riscv32 -verify-machineinstrs

Generated 2026-10-15 08:05 UTC.