[llvm] [MIPS] [MSA] Widen v2i8, v216 and v2i32 vectors (PR #123040)
YunQiang Su via llvm-commits
llvm-commits at lists.llvm.org
Thu Jan 23 19:23:13 PST 2025
================
@@ -48,102 +48,86 @@ define <2 x i8> @i8_2(<2 x i8> %a, <2 x i8> %b) {
;
; MIPS32R5EB-LABEL: i8_2:
; MIPS32R5EB: # %bb.0:
-; MIPS32R5EB-NEXT: addiu $sp, $sp, -64
-; MIPS32R5EB-NEXT: .cfi_def_cfa_offset 64
-; MIPS32R5EB-NEXT: sw $ra, 60($sp) # 4-byte Folded Spill
-; MIPS32R5EB-NEXT: sw $fp, 56($sp) # 4-byte Folded Spill
+; MIPS32R5EB-NEXT: addiu $sp, $sp, -48
+; MIPS32R5EB-NEXT: .cfi_def_cfa_offset 48
+; MIPS32R5EB-NEXT: sw $ra, 44($sp) # 4-byte Folded Spill
+; MIPS32R5EB-NEXT: sw $fp, 40($sp) # 4-byte Folded Spill
; MIPS32R5EB-NEXT: .cfi_offset 31, -4
; MIPS32R5EB-NEXT: .cfi_offset 30, -8
; MIPS32R5EB-NEXT: move $fp, $sp
; MIPS32R5EB-NEXT: .cfi_def_cfa_register 30
; MIPS32R5EB-NEXT: addiu $1, $zero, -16
; MIPS32R5EB-NEXT: and $sp, $sp, $1
-; MIPS32R5EB-NEXT: sh $5, 48($sp)
-; MIPS32R5EB-NEXT: sh $4, 52($sp)
-; MIPS32R5EB-NEXT: lbu $1, 49($sp)
-; MIPS32R5EB-NEXT: sw $1, 28($sp)
-; MIPS32R5EB-NEXT: lbu $1, 48($sp)
-; MIPS32R5EB-NEXT: sw $1, 20($sp)
-; MIPS32R5EB-NEXT: lbu $1, 53($sp)
-; MIPS32R5EB-NEXT: sw $1, 12($sp)
-; MIPS32R5EB-NEXT: lbu $1, 52($sp)
-; MIPS32R5EB-NEXT: sw $1, 4($sp)
-; MIPS32R5EB-NEXT: ld.d $w0, 16($sp)
-; MIPS32R5EB-NEXT: ld.d $w1, 0($sp)
-; MIPS32R5EB-NEXT: addv.d $w0, $w1, $w0
-; MIPS32R5EB-NEXT: shf.w $w0, $w0, 177
-; MIPS32R5EB-NEXT: copy_s.w $1, $w0[1]
-; MIPS32R5EB-NEXT: copy_s.w $2, $w0[3]
-; MIPS32R5EB-NEXT: sb $2, 45($sp)
-; MIPS32R5EB-NEXT: sb $1, 44($sp)
-; MIPS32R5EB-NEXT: lhu $2, 44($sp)
+; MIPS32R5EB-NEXT: sh $5, 16($sp)
+; MIPS32R5EB-NEXT: sh $4, 0($sp)
+; MIPS32R5EB-NEXT: ld.b $w0, 16($sp)
+; MIPS32R5EB-NEXT: ld.b $w1, 0($sp)
+; MIPS32R5EB-NEXT: addv.b $w0, $w1, $w0
+; MIPS32R5EB-NEXT: shf.b $w0, $w0, 177
+; MIPS32R5EB-NEXT: copy_u.h $2, $w0[0]
; MIPS32R5EB-NEXT: move $sp, $fp
-; MIPS32R5EB-NEXT: lw $fp, 56($sp) # 4-byte Folded Reload
-; MIPS32R5EB-NEXT: lw $ra, 60($sp) # 4-byte Folded Reload
-; MIPS32R5EB-NEXT: addiu $sp, $sp, 64
+; MIPS32R5EB-NEXT: lw $fp, 40($sp) # 4-byte Folded Reload
+; MIPS32R5EB-NEXT: lw $ra, 44($sp) # 4-byte Folded Reload
+; MIPS32R5EB-NEXT: addiu $sp, $sp, 48
; MIPS32R5EB-NEXT: jr $ra
; MIPS32R5EB-NEXT: nop
;
-; MIPS64R5-LABEL: i8_2:
-; MIPS64R5: # %bb.0:
-; MIPS64R5-NEXT: daddiu $sp, $sp, -16
-; MIPS64R5-NEXT: .cfi_def_cfa_offset 16
-; MIPS64R5-NEXT: sh $5, 8($sp)
-; MIPS64R5-NEXT: sh $4, 12($sp)
-; MIPS64R5-NEXT: lb $1, 9($sp)
-; MIPS64R5-NEXT: lb $2, 8($sp)
-; MIPS64R5-NEXT: insert.d $w0[0], $2
-; MIPS64R5-NEXT: insert.d $w0[1], $1
-; MIPS64R5-NEXT: lb $1, 13($sp)
-; MIPS64R5-NEXT: lb $2, 12($sp)
-; MIPS64R5-NEXT: insert.d $w1[0], $2
-; MIPS64R5-NEXT: insert.d $w1[1], $1
-; MIPS64R5-NEXT: addv.d $w0, $w1, $w0
-; MIPS64R5-NEXT: copy_s.d $1, $w0[0]
-; MIPS64R5-NEXT: copy_s.d $2, $w0[1]
-; MIPS64R5-NEXT: sb $2, 5($sp)
-; MIPS64R5-NEXT: sb $1, 4($sp)
-; MIPS64R5-NEXT: lh $2, 4($sp)
-; MIPS64R5-NEXT: daddiu $sp, $sp, 16
-; MIPS64R5-NEXT: jr $ra
-; MIPS64R5-NEXT: nop
-;
; MIPS32R5EL-LABEL: i8_2:
; MIPS32R5EL: # %bb.0:
-; MIPS32R5EL-NEXT: addiu $sp, $sp, -64
-; MIPS32R5EL-NEXT: .cfi_def_cfa_offset 64
-; MIPS32R5EL-NEXT: sw $ra, 60($sp) # 4-byte Folded Spill
-; MIPS32R5EL-NEXT: sw $fp, 56($sp) # 4-byte Folded Spill
+; MIPS32R5EL-NEXT: addiu $sp, $sp, -48
+; MIPS32R5EL-NEXT: .cfi_def_cfa_offset 48
+; MIPS32R5EL-NEXT: sw $ra, 44($sp) # 4-byte Folded Spill
+; MIPS32R5EL-NEXT: sw $fp, 40($sp) # 4-byte Folded Spill
; MIPS32R5EL-NEXT: .cfi_offset 31, -4
; MIPS32R5EL-NEXT: .cfi_offset 30, -8
; MIPS32R5EL-NEXT: move $fp, $sp
; MIPS32R5EL-NEXT: .cfi_def_cfa_register 30
; MIPS32R5EL-NEXT: addiu $1, $zero, -16
; MIPS32R5EL-NEXT: and $sp, $sp, $1
-; MIPS32R5EL-NEXT: sh $5, 48($sp)
-; MIPS32R5EL-NEXT: sh $4, 52($sp)
-; MIPS32R5EL-NEXT: lbu $1, 49($sp)
-; MIPS32R5EL-NEXT: sw $1, 24($sp)
-; MIPS32R5EL-NEXT: lbu $1, 48($sp)
-; MIPS32R5EL-NEXT: sw $1, 16($sp)
-; MIPS32R5EL-NEXT: lbu $1, 53($sp)
-; MIPS32R5EL-NEXT: sw $1, 8($sp)
-; MIPS32R5EL-NEXT: lbu $1, 52($sp)
-; MIPS32R5EL-NEXT: sw $1, 0($sp)
-; MIPS32R5EL-NEXT: ld.d $w0, 16($sp)
-; MIPS32R5EL-NEXT: ld.d $w1, 0($sp)
-; MIPS32R5EL-NEXT: addv.d $w0, $w1, $w0
-; MIPS32R5EL-NEXT: copy_s.w $1, $w0[0]
-; MIPS32R5EL-NEXT: copy_s.w $2, $w0[2]
-; MIPS32R5EL-NEXT: sb $2, 45($sp)
-; MIPS32R5EL-NEXT: sb $1, 44($sp)
-; MIPS32R5EL-NEXT: lhu $2, 44($sp)
+; MIPS32R5EL-NEXT: sh $5, 16($sp)
+; MIPS32R5EL-NEXT: sh $4, 0($sp)
+; MIPS32R5EL-NEXT: ld.b $w0, 16($sp)
+; MIPS32R5EL-NEXT: ld.b $w1, 0($sp)
+; MIPS32R5EL-NEXT: addv.b $w0, $w1, $w0
+; MIPS32R5EL-NEXT: copy_u.h $2, $w0[0]
; MIPS32R5EL-NEXT: move $sp, $fp
-; MIPS32R5EL-NEXT: lw $fp, 56($sp) # 4-byte Folded Reload
-; MIPS32R5EL-NEXT: lw $ra, 60($sp) # 4-byte Folded Reload
-; MIPS32R5EL-NEXT: addiu $sp, $sp, 64
+; MIPS32R5EL-NEXT: lw $fp, 40($sp) # 4-byte Folded Reload
+; MIPS32R5EL-NEXT: lw $ra, 44($sp) # 4-byte Folded Reload
+; MIPS32R5EL-NEXT: addiu $sp, $sp, 48
; MIPS32R5EL-NEXT: jr $ra
; MIPS32R5EL-NEXT: nop
+;
+; MIPS64R5EB-LABEL: i8_2:
+; MIPS64R5EB: # %bb.0:
+; MIPS64R5EB-NEXT: daddiu $sp, $sp, -48
+; MIPS64R5EB-NEXT: .cfi_def_cfa_offset 48
+; MIPS64R5EB-NEXT: sh $5, 16($sp)
+; MIPS64R5EB-NEXT: sh $4, 0($sp)
+; MIPS64R5EB-NEXT: ld.b $w0, 16($sp)
+; MIPS64R5EB-NEXT: ld.b $w1, 0($sp)
----------------
wzssyqa wrote:
Not a bug of this problem:
`SH` & `LD.B` may be optimistic with `FILL` or `INSERT`
https://github.com/llvm/llvm-project/pull/123040
More information about the llvm-commits
mailing list