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

Run:main-04ca53e65f-20261014-113325
Kind:regression
Category:+431 insts: shl_32bytes_dwordOff (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 @shl_32bytes_dwordOff via llvm-extract
Config:-mtriple=riscv32 -verify-machineinstrs
Local check:reproduces at 04ca53e65f
Compiler Explorer:not uploaded (over --godbolt-limit or disabled)

Snippet:

; Function Attrs: nounwind
define void @shl_32bytes_dwordOff(ptr %src.ptr, ptr %dwordOff.ptr, ptr %dst) #0 {
  %src = load i256, ptr %src.ptr, align 1
  %dwordOff = load i256, ptr %dwordOff.ptr, align 1
  %bitOff = shl i256 %dwordOff, 6
  %res = shl i256 %src, %bitOff
  store i256 %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,172 +1,746 @@
 addi sp, sp, -80
-sw s0, 76(sp)
-sw s1, 72(sp)
-lbu a1, 0(a1)
+sw ra, 76(sp)
+sw s0, 72(sp)
+sw s1, 68(sp)
+sw s2, 64(sp)
+sw s3, 60(sp)
+sw s4, 56(sp)
+sw s5, 52(sp)
+sw s6, 48(sp)
+sw s7, 44(sp)
+sw s8, 40(sp)
+sw s9, 36(sp)
+sw s10, 32(sp)
+sw s11, 28(sp)
 lbu a3, 1(a0)
 lbu a4, 0(a0)
-lbu a5, 2(a0)
-lbu a6, 3(a0)
+lbu a5, 3(a0)
+lbu a6, 2(a0)
+lbu a7, 3(a1)
+lbu t0, 1(a1)
+lbu t1, 2(a1)
+lbu a1, 0(a1)
 slli a3, a3, 8
-lbu a7, 5(a0)
-lbu t0, 6(a0)
-lbu t1, 7(a0)
-lbu t2, 4(a0)
 or a3, a3, a4
+slli a5, a5, 8
+or a4, a5, a6
+slli a7, a7, 8
+slli t0, t0, 8
+or a5, a7, t1
+or a1, t0, a1
 slli a5, a5, 16
-slli a6, a6, 24
-or a4, a6, a5
-slli a7, a7, 8
-slli t0, t0, 16
-slli t1, t1, 24
-lbu a5, 8(a0)
-lbu a6, 9(a0)
-lbu t3, 10(a0)
-lbu t4, 11(a0)
-or a7, a7, t2
-or t0, t1, t0
-or a3, a4, a3
-or a4, t0, a7
-slli a6, a6, 8
-lbu a7, 13(a0)
-slli t3, t3, 16
-slli t4, t4, 24
-or a5, a6, a5
-or a6, t4, t3
-lbu t0, 12(a0)
-lbu t1, 14(a0)
+slli a4, a4, 16
+or a1, a5, a1
+or a5, a4, a3
+slli a1, a1, 6
+srli a4, a1, 5
+sll t4, a5, a1
+li s4, 1
+mv a3, t4
+beqz a4, .L0
+li a3, 0
+.L0:
+li a6, 0
+li t6, 2
+beq a4, s4, .L1
+mv a6, a3
+.L1:
+li a7, 0
+beq a4, t6, .L2
+mv a7, a6
+.L2:
+li a6, 0
+li s8, 3
+li s10, 4
+beq a4, s8, .L3
+mv a6, a7
+.L3:
+li t0, 0
+li s0, 5
+beq a4, s10, .L4
+mv t0, a6
+.L4:
+li a7, 0
+lbu t2, 7(a0)
+li s6, 6
+beq a4, s0, .L5
+mv a7, t0
+.L5:
+li a6, 0
+lbu t0, 5(a0)
+lbu t1, 6(a0)
+slli t2, t2, 8
+beq a4, s6, .L6
+mv a6, a7
+.L6:
+li a7, 0
+lbu t3, 4(a0)
+li ra, 7
+or a3, t2, t1
+slli t0, t0, 8
+beq a4, ra, .L7
+mv a7, a6
+.L7:
+or t1, t0, t3
+slli a3, a3, 16
+andi t5, a1, 31
+mv a6, a5
+beqz a1, .L8
+mv a6, a7
+.L8:
+li t0, 0
+neg s2, t5
+or a7, a3, t1
+srl s3, a5, s2
+beqz t5, .L9
+mv t0, s3
+.L9:
+sll s9, a7, a1
+beqz a4, .L10
+li a3, 0
+mv a5, t4
+bne a4, s4, .L11
+j .L12
+.L10:
+or a3, s9, t0
+mv a5, t4
+beq a4, s4, .L12
+.L11:
+mv a5, a3
+.L12:
+li a3, 0
+bne a4, t6, .L13
+li a5, 0
+bne a4, s8, .L14
+.L15:
+li a3, 0
+beq a4, s10, .L16
+.L17:
+mv a3, a5
+.L16:
+lbu t2, 11(a0)
+li t0, 0
+beq a4, s0, .L18
+mv t0, a3
+.L18:
+li a5, 0
+lbu t1, 9(a0)
+lbu a3, 10(a0)
+slli t2, t2, 8
+beq a4, s6, .L19
+mv a5, t0
+.L19:
+li t0, 0
+lbu t3, 8(a0)
+or t2, t2, a3
+slli t1, t1, 8
+beq a4, ra, .L20
+mv t0, a5
+.L20:
+or a3, t1, t3
+slli a5, t2, 16
+mv s1, a7
+beqz a1, .L21
+mv s1, t0
+.L21:
+li t0, 0
+or a5, a5, a3
+srl a3, a7, s2
+sw a3, 24(sp)
+beqz t5, .L22
+lw t0, 24(sp)
+.L22:
+sll s7, a5, a1
+beqz a4, .L23
+li a7, 0
+li a3, 0
+bnez t5, .L24
+j .L25
+.L13:
+mv a3, a5
+li a5, 0
+beq a4, s8, .L15
+.L14:
+mv a5, a3
+li a3, 0
+bne a4, s10, .L17
+j .L16
+.L23:
+or a7, s7, t0
+li a3, 0
+beqz t5, .L25
+.L24:
+mv a3, s3
+.L25:
+beq a4, s4, .L26
+mv a3, t4
+bne a4, t6, .L27
+.L28:
+li a7, 0
+bne a4, s8, .L29
+.L30:
+li a3, 0
+beq a4, s10, .L31
+.L32:
+mv a3, a7
+.L31:
 lbu t2, 15(a0)
-slli a7, a7, 8
+li t0, 0
+beq a4, s0, .L33
+mv t0, a3
+.L33:
+li a7, 0
+lbu t1, 13(a0)
+lbu a3, 14(a0)
+slli t2, t2, 8
+beq a4, s6, .L34
+mv a7, t0
+.L34:
+li t0, 0
+lbu t3, 12(a0)
+or t2, t2, a3
+slli t1, t1, 8
+beq a4, ra, .L35
+mv t0, a7
+.L35:
+or a3, t1, t3
+slli t2, t2, 16
+mv s5, a5
+beqz a1, .L36
+mv s5, t0
+.L36:
+li t0, 0
+or a7, t2, a3
+srl a3, a5, s2
+sw a3, 20(sp)
+beqz t5, .L37
+lw t0, 20(sp)
+.L37:
+sll a3, a7, a1
+sw a3, 16(sp)
+beqz a4, .L38
+li a5, 0
+li a3, 0
+bnez t5, .L39
+j .L40
+.L26:
+or a7, s9, a3
+mv a3, t4
+beq a4, t6, .L28
+.L27:
+mv a3, a7
+li a7, 0
+beq a4, s8, .L30
+.L29:
+mv a7, a3
+li a3, 0
+bne a4, s10, .L32
+j .L31
+.L38:
+or a5, a3, t0
+li a3, 0
+beqz t5, .L40
+.L39:
+lw a3, 24(sp)
+.L40:
+beq a4, s4, .L41
+li a3, 0
+bnez t5, .L42
+.L43:
+beq a4, t6, .L44
+.L45:
+mv t0, t4
+bne a4, s8, .L46
+.L47:
+li a3, 0
+beq a4, s10, .L48
+.L49:
+mv a3, t0
+.L48:
+lbu t2, 19(a0)
+li t0, 0
+beq a4, s0, .L50
+mv t0, a3
+.L50:
+li a5, 0
+lbu t1, 17(a0)
+lbu a3, 18(a0)
+slli t2, t2, 8
+beq a4, s6, .L51
+mv a5, t0
+.L51:
+li t0, 0
 lbu t3, 16(a0)
-lbu t4, 17(a0)
-lbu t5, 18(a0)
-lbu t6, 19(a0)
-or a5, a6, a5
-or a6, a7, t0
-slli t1, t1, 16
-slli t2, t2, 24
-or a7, t2, t1
-slli t4, t4, 8
-slli t5, t5, 16
-slli t6, t6, 24
-lbu t0, 20(a0)
+or t2, t2, a3
+slli t1, t1, 8
+beq a4, ra, .L52
+mv t0, a5
+.L52:
+or a3, t1, t3
+slli a5, t2, 16
+mv s6, a7
+beqz a1, .L53
+mv s6, t0
+.L53:
+li t0, 0
+or a5, a5, a3
+srl s10, a7, s2
+beqz t5, .L54
+mv t0, s10
+.L54:
+sll s11, a5, a1
+beqz a4, .L55
+li a7, 0
+li a3, 0
+bnez t5, .L56
+j .L57
+.L41:
+or a5, s7, a3
+li a3, 0
+beqz t5, .L43
+.L42:
+mv a3, s3
+bne a4, t6, .L45
+.L44:
+or a5, s9, a3
+mv t0, t4
+beq a4, s8, .L47
+.L46:
+mv t0, a5
+li a3, 0
+bne a4, s10, .L49
+j .L48
+.L55:
+or a7, s11, t0
+li a3, 0
+beqz t5, .L57
+.L56:
+lw a3, 20(sp)
+.L57:
+beq a4, s4, .L58
+li a3, 0
+bnez t5, .L59
+.L60:
+beq a4, t6, .L61
+.L62:
+li a3, 0
+bnez t5, .L63
+.L64:
+bne a4, s8, .L65
+.L66:
+or a7, s9, a3
+.L65:
+mv a3, t4
+li t0, 4
+beq a4, t0, .L67
+mv a3, a7
+.L67:
+lbu t2, 23(a0)
+li t0, 0
+beq a4, s0, .L68
+mv t0, a3
+.L68:
+li a7, 0
 lbu t1, 21(a0)
-lbu t2, 22(a0)
-lbu s0, 23(a0)
-or t3, t4, t3
-or t4, t6, t5
-or a6, a7, a6
-or a7, t4, t3
+lbu a3, 22(a0)
+slli t2, t2, 8
+li t3, 6
+beq a4, t3, .L69
+mv a7, t0
+.L69:
+sw s9, 8(sp)
+sw s3, 12(sp)
+li t0, 0
+lbu t3, 20(a0)
+or t2, t2, a3
 slli t1, t1, 8
+beq a4, ra, .L70
+mv t0, a7
+.L70:
+or a3, t1, t3
+slli t2, t2, 16
+mv s9, a5
+beqz a1, .L71
+mv s9, t0
+.L71:
+li t1, 0
+or t0, t2, a3
+srl a5, a5, s2
+beqz t5, .L72
+mv t1, a5
+.L72:
+sll a7, t0, a1
+beqz a4, .L73
+li t1, 0
+li a3, 0
+bnez t5, .L74
+j .L75
+.L58:
+lw a7, 16(sp)
+or a7, a7, a3
+li a3, 0
+beqz t5, .L60
+.L59:
+lw a3, 24(sp)
+bne a4, t6, .L62
+.L61:
+or a7, s7, a3
+li a3, 0
+beqz t5, .L64
+.L63:
+mv a3, s3
+beq a4, s8, .L66
+j .L65
+.L73:
+or t1, a7, t1
+li a3, 0
+beqz t5, .L75
+.L74:
+mv a3, s10
+.L75:
+beq a4, s4, .L76
+li a3, 0
+bnez t5, .L77
+.L78:
+beq a4, t6, .L79
+.L80:
+li a3, 0
+bnez t5, .L81
+.L82:
+bne a4, s8, .L83
+.L84:
+or t1, s7, a3
+.L83:
+li s3, 1
+li a3, 0
+beqz t5, .L85
+lw a3, 12(sp)
+.L85:
+li s4, 3
+li s8, 2
+li t2, 4
+bne a4, t2, .L86
+lw t1, 8(sp)
+or t1, t1, a3
+.L86:
+lbu t6, 27(a0)
+mv t2, t4
+beq a4, s0, .L87
+mv t2, t1
+.L87:
+li t1, 0
 lbu t3, 25(a0)
-slli t2, t2, 16
-slli s0, s0, 24
-or t0, t1, t0
-or t1, s0, t2
-lbu t2, 24(a0)
-lbu t4, 26(a0)
-lbu t5, 27(a0)
-slli t3, t3, 8
-lbu t6, 28(a0)
-lbu s0, 29(a0)
-lbu s1, 30(a0)
-lbu a0, 31(a0)
-or t0, t1, t0
-or t1, t3, t2
-slli t4, t4, 16
-slli t5, t5, 24
-or t2, t5, t4
-slli s0, s0, 8
-slli s1, s1, 16
-slli a0, a0, 24
-or t3, s0, t6
-or a0, a0, s1
-or t1, t2, t1
-or a0, a0, t3
-sw zero, 24(sp)
-sw zero, 28(sp)
-sw zero, 32(sp)
-sw zero, 36(sp)
-sw zero, 8(sp)
-sw zero, 12(sp)
-sw zero, 16(sp)
-sw zero, 20(sp)
-slli a1, a1, 3
-sw a7, 56(sp)
-sw t0, 60(sp)
-sw t1, 64(sp)
-sw a0, 68(sp)
-andi a1, a1, 24
-addi a0, sp, 40
-sw a3, 40(sp)
-sw a4, 44(sp)
-sw a5, 48(sp)
-sw a6, 52(sp)
-sub a4, a0, a1
-lw a5, 24(a4)
-lw a1, 0(a4)
-lw a0, 4(a4)
-lw a6, 8(a4)
-lw a3, 12(a4)
-lw a7, 20(a4)
-lw t0, 16(a4)
-lw a4, 28(a4)
-srli t1, a5, 24
-srli t2, a5, 16
-srli t3, a5, 8
-sb a5, 24(a2)
-sb t3, 25(a2)
-sb t2, 26(a2)
-sb t1, 27(a2)
-srli a5, a4, 24
-srli t1, a4, 16
-srli t2, a4, 8
-sb a4, 28(a2)
-sb t2, 29(a2)
-sb t1, 30(a2)
-sb a5, 31(a2)
-srli a4, t0, 24
-srli a5, t0, 16
-srli t1, t0, 8
-sb t0, 16(a2)
-sb t1, 17(a2)
-sb a5, 18(a2)
-sb a4, 19(a2)
-srli a4, a7, 24
-srli a5, a7, 16
-srli t0, a7, 8
-sb a7, 20(a2)
-sb t0, 21(a2)
-sb a5, 22(a2)
-sb a4, 23(a2)
-srli a4, a6, 24
-srli a5, a6, 16
-srli a7, a6, 8
-sb a6, 8(a2)
-sb a7, 9(a2)
-sb a5, 10(a2)
-sb a4, 11(a2)
-srli a4, a3, 24
-srli a5, a3, 16
-srli a6, a3, 8
-sb a3, 12(a2)
-sb a6, 13(a2)
-sb a5, 14(a2)
-sb a4, 15(a2)
-srli a3, a1, 24
-srli a4, a1, 16
-srli a5, a1, 8
-sb a1, 0(a2)
-sb a5, 1(a2)
-sb a4, 2(a2)
-sb a3, 3(a2)
-srli a1, a0, 24
-srli a3, a0, 16
-srli a4, a0, 8
-sb a0, 4(a2)
+lbu a3, 26(a0)
+slli t6, t6, 8
+li s0, 6
+beq a4, s0, .L88
+mv t1, t2
+.L88:
+li t2, 0
+lbu s0, 24(a0)
+or t6, t6, a3
+slli a3, t3, 8
+beq a4, ra, .L89
+mv t2, t1
+.L89:
+or a3, a3, s0
+slli t6, t6, 16
+mv ra, t0
+beqz a1, .L90
+mv ra, t2
+.L90:
+li t3, 0
+or t2, t6, a3
+srl t0, t0, s2
+li t6, 5
+beqz t5, .L91
+mv t3, t0
+.L91:
+sll t1, t2, a1
+beqz a4, .L92
+li t3, 0
+li a3, 0
+bnez t5, .L93
+j .L94
+.L76:
+or t1, s11, a3
+li a3, 0
+beqz t5, .L78
+.L77:
+lw a3, 20(sp)
+bne a4, t6, .L80
+.L79:
+lw t1, 16(sp)
+or t1, t1, a3
+li a3, 0
+beqz t5, .L82
+.L81:
+lw a3, 24(sp)
+beq a4, s8, .L84
+j .L83
+.L92:
+or t3, t1, t3
+li a3, 0
+beqz t5, .L94
+.L93:
+mv a3, a5
+.L94:
+beq a4, s3, .L95
+li a3, 0
+bnez t5, .L96
+.L97:
+beq a4, s8, .L98
+.L99:
+li a3, 0
+bnez t5, .L100
+.L101:
+beq a4, s4, .L102
+.L103:
+li a3, 0
+bnez t5, .L104
+.L105:
+li s0, 4
+beq a4, s0, .L106
+.L107:
+li a3, 0
+bnez t5, .L108
+.L109:
+bne a4, t6, .L110
+.L111:
+lw t3, 8(sp)
+or t3, t3, a3
+.L110:
+lbu t6, 31(a0)
+mv a3, t4
+li s0, 6
+beq a4, s0, .L112
+mv a3, t3
+.L112:
+li t3, 0
+lbu s4, 29(a0)
+lbu s0, 30(a0)
+slli t6, t6, 8
+li s3, 7
+beq a4, s3, .L113
+mv t3, a3
+.L113:
+lbu a3, 28(a0)
+slli s4, s4, 8
+or t6, t6, s0
+mv a0, t2
+beqz a1, .L114
+mv a0, t3
+.L114:
+li t3, 0
+or a3, s4, a3
+slli t6, t6, 16
+li s0, 5
+li s3, 4
+beqz t5, .L115
+srl t3, t2, s2
+.L115:
+or s2, t6, a3
+li t6, 6
+li s4, 1
+beqz a4, .L116
+li t2, 0
+li a3, 0
+bnez t5, .L117
+j .L118
+.L95:
+or t3, a7, a3
+li a3, 0
+beqz t5, .L97
+.L96:
+mv a3, s10
+bne a4, s8, .L99
+.L98:
+or t3, s11, a3
+li a3, 0
+beqz t5, .L101
+.L100:
+lw a3, 20(sp)
+bne a4, s4, .L103
+.L102:
+lw t3, 16(sp)
+or t3, t3, a3
+li a3, 0
+beqz t5, .L105
+.L104:
+lw a3, 24(sp)
+li s0, 4
+bne a4, s0, .L107
+.L106:
+or t3, s7, a3
+li a3, 0
+beqz t5, .L109
+.L108:
+lw a3, 12(sp)
+beq a4, t6, .L111
+j .L110
+.L116:
+sll a3, s2, a1
+or t2, a3, t3
+li a3, 0
+beqz t5, .L118
+.L117:
+mv a3, t0
+.L118:
+beq a4, s4, .L119
+li a3, 0
+bnez t5, .L120
+.L121:
+bne a4, s8, .L122
+.L123:
+or t2, a7, a3
+.L122:
+li a3, 0
+li a5, 3
+bnez t5, .L124
+beq a4, a5, .L125
+.L126:
+li a3, 0
+bnez t5, .L127
+.L128:
+beq a4, s3, .L129
+.L130:
+li a3, 0
+bnez t5, .L131
+.L132:
+beq a4, s0, .L133
+.L134:
+li a3, 0
+bnez t5, .L135
+.L136:
+beq a4, t6, .L137
+.L138:
+li a3, 7
+bne a4, a3, .L139
+.L140:
+beqz a1, .L141
+.L142:
+mv s2, t4
+.L141:
+lui a1, 16
+addi a1, a1, -1
+srli a3, a6, 16
+and a4, a6, a1
+srli a5, a6, 24
+srli a4, a4, 8
+sb a6, 0(a2)
+sb a4, 1(a2)
+sb a3, 2(a2)
+sb a5, 3(a2)
+srli a3, s1, 16
+and a4, s1, a1
+srli a4, a4, 8
+srli a5, s1, 24
+sb s1, 4(a2)
 sb a4, 5(a2)
 sb a3, 6(a2)
-sb a1, 7(a2)
-lw s0, 76(sp)
-lw s1, 72(sp)
+sb a5, 7(a2)
+srli a3, s5, 16
+and a4, s5, a1
+srli a4, a4, 8
+srli a5, s5, 24
+sb s5, 8(a2)
+sb a4, 9(a2)
+sb a3, 10(a2)
+sb a5, 11(a2)
+srli a3, s6, 16
+and a4, s6, a1
+srli a4, a4, 8
+srli a5, s6, 24
+sb s6, 12(a2)
+sb a4, 13(a2)
+sb a3, 14(a2)
+sb a5, 15(a2)
+srli a3, s9, 16
+and a4, s9, a1
+srli a4, a4, 8
+srli a5, s9, 24
+sb s9, 16(a2)
+sb a4, 17(a2)
+sb a3, 18(a2)
+sb a5, 19(a2)
+srli a3, ra, 16
+and a4, ra, a1
+srli a4, a4, 8
+srli a5, ra, 24
+sb ra, 20(a2)
+sb a4, 21(a2)
+sb a3, 22(a2)
+sb a5, 23(a2)
+srli a3, a0, 16
+and a4, a0, a1
+srli a4, a4, 8
+srli a5, a0, 24
+sb a0, 24(a2)
+sb a4, 25(a2)
+sb a3, 26(a2)
+sb a5, 27(a2)
+srli a0, s2, 16
+and a1, s2, a1
+srli a1, a1, 8
+srli a3, s2, 24
+sb s2, 28(a2)
+sb a1, 29(a2)
+sb a0, 30(a2)
+sb a3, 31(a2)
+lw ra, 76(sp)
+lw s0, 72(sp)
+lw s1, 68(sp)
+lw s2, 64(sp)
+lw s3, 60(sp)
+lw s4, 56(sp)
+lw s5, 52(sp)
+lw s6, 48(sp)
+lw s7, 44(sp)
+lw s8, 40(sp)
+lw s9, 36(sp)
+lw s10, 32(sp)
+lw s11, 28(sp)
 addi sp, sp, 80
 ret
+.L119:
+or t2, t1, a3
+li a3, 0
+beqz t5, .L121
+.L120:
+mv a3, a5
+beq a4, s8, .L123
+j .L122
+.L124:
+mv a3, s10
+bne a4, a5, .L126
+.L125:
+or t2, s11, a3
+li a3, 0
+beqz t5, .L128
+.L127:
+lw a3, 20(sp)
+bne a4, s3, .L130
+.L129:
+lw a5, 16(sp)
+or t2, a5, a3
+li a3, 0
+beqz t5, .L132
+.L131:
+lw a3, 24(sp)
+bne a4, s0, .L134
+.L133:
+or t2, s7, a3
+li a3, 0
+beqz t5, .L136
+.L135:
+lw a3, 12(sp)
+bne a4, t6, .L138
+.L137:
+lw a5, 8(sp)
+or t2, a5, a3
+li a3, 7
+beq a4, a3, .L140
+.L139:
+mv t4, t2
+bnez a1, .L142
+j .L141

Occurrences (1):

InputFunctionConfig
wide-scalar-shift-by-byte-multiple-legalization.llshl_32bytes_dwordOff-mtriple=riscv32 -verify-machineinstrs

Generated 2026-10-15 08:05 UTC.