[SubZero] Fix code generation issues occurred in Cross-test and PNaCL smoke-tests
The patch fixes various code generation issues found during testing of Cross-test and PNaCL smoke-test framework.
1) To keep track of branches to same label, relative position of the branch from previous branch is used.
2) Fixed encoding of conditional mov instructions
3) Added MovFP64ToI64 instruction for f64 to i64 move
4) Handled vector-types in Phi nodes
5) Fixed alignment of spilled vector arguments on stack
6) Save-restore FP registers
7) Fixed code generation for Zext and Sext operations
8) Fixed InsertElement for vi16x8 type
R=stichnot@chromium.org
Patch from Jaydeep Patil <jaydeep.patil@imgtec.com>.
Review-Url: https://codereview.chromium.org/2619943003 .
diff --git a/tests_lit/assembler/mips32/encoding_intrinsics.ll b/tests_lit/assembler/mips32/encoding_intrinsics.ll
index 503826e..7d18f3e 100644
--- a/tests_lit/assembler/mips32/encoding_intrinsics.ll
+++ b/tests_lit/assembler/mips32/encoding_intrinsics.ll
@@ -41,6 +41,7 @@
; ASM-LABEL: encBswap16
; ASM-NEXT: .LencBswap16$entry:
+; ASM-NEXT: andi $a0, $a0, 65535
; ASM-NEXT: sll $v0, $a0, 8
; ASM-NEXT: lui $v1, 255
; ASM-NEXT: and $v0, $v0, $v1
@@ -51,6 +52,7 @@
; ASM-NEXT: jr $ra
; DIS-LABEL: <encBswap16>:
+; DIS-NEXT: 3084ffff andi a0,a0,0xffff
; DIS-NEXT: 00041200 sll v0,a0,0x8
; DIS-NEXT: 3c0300ff lui v1,0xff
; DIS-NEXT: 00431024 and v0,v0,v1
@@ -62,6 +64,10 @@
; IASM-LABEL: encBswap16
; IASM-NEXT: .LencBswap16$entry:
+; IASM-NEXT: .byte 0xff
+; IASM-NEXT: .byte 0xff
+; IASM-NEXT: .byte 0x84
+; IASM-NEXT: .byte 0x30
; IASM-NEXT: .byte 0x0
; IASM-NEXT: .byte 0x12
; IASM-NEXT: .byte 0x4
@@ -576,7 +582,7 @@
; ASM-NEXT: clz $a0, $a0
; ASM-NEXT: addiu $a0, $a0, 32
; ASM-NEXT: movn $a0, $v0, $a1
-; ASM-NEXT: addiu $v0, $zero, 0
+; ASM: addiu $v0, $zero, 0
; ASM-NEXT: move $v1, $v0
; ASM-NEXT: move $v0, $a0
; ASM-NEXT: jr $ra
@@ -705,10 +711,10 @@
; ASM-LABEL: encCttz32
; ASM-NEXT: .LencCttz32$entry:
; ASM-NEXT: addiu $v0, $a0, -1
-; ASM-NEXT: nor $a0, $a0, $zero
+; ASM: nor $a0, $a0, $zero
; ASM-NEXT: and $a0, $a0, $v0
; ASM-NEXT: clz $a0, $a0
-; ASM-NEXT: addiu $v0, $zero, 32
+; ASM: addiu $v0, $zero, 32
; ASM-NEXT: subu $v0, $v0, $a0
; ASM-NEXT: jr $ra
@@ -763,10 +769,10 @@
; ASM-NEXT: lui $v0, 1
; ASM-NEXT: ori $v0, $v0, 57920
; ASM-NEXT: addiu $v1, $v0, -1
-; ASM-NEXT: nor $v0, $v0, $zero
+; ASM: nor $v0, $v0, $zero
; ASM-NEXT: and $v0, $v0, $v1
; ASM-NEXT: clz $v0, $v0
-; ASM-NEXT: addiu $v1, $zero, 32
+; ASM: addiu $v1, $zero, 32
; ASM-NEXT: subu $v1, $v1, $v0
; ASM-NEXT: move $v0, $v1
; ASM-NEXT: jr $ra
@@ -835,19 +841,19 @@
; ASM-LABEL: encCttz64
; ASM-NEXT: .LencCttz64$entry:
; ASM-NEXT: addiu $v0, $a1, -1
-; ASM-NEXT: nor $a1, $a1, $zero
+; ASM: nor $a1, $a1, $zero
; ASM-NEXT: and $a1, $a1, $v0
; ASM-NEXT: clz $a1, $a1
-; ASM-NEXT: addiu $v0, $zero, 64
+; ASM: addiu $v0, $zero, 64
; ASM-NEXT: subu $v0, $v0, $a1
; ASM-NEXT: addiu $v1, $a0, -1
-; ASM-NEXT: nor $a1, $a0, $zero
+; ASM: nor $a1, $a0, $zero
; ASM-NEXT: and $a1, $a1, $v1
; ASM-NEXT: clz $a1, $a1
-; ASM-NEXT: addiu $v1, $zero, 32
+; ASM: addiu $v1, $zero, 32
; ASM-NEXT: subu $v1, $v1, $a1
; ASM-NEXT: movn $v0, $v1, $a0
-; ASM-NEXT: addiu $v1, $zero, 0
+; ASM: addiu $v1, $zero, 0
; ASM-NEXT: jr $ra
; DIS-LABEL: <encCttz64>:
@@ -944,19 +950,19 @@
; ASM-NEXT: lui $v1, 48793
; ASM-NEXT: ori $v1, $v1, 6676
; ASM-NEXT: addiu $a0, $v0, -1
-; ASM-NEXT: nor $v0, $v0, $zero
+; ASM: nor $v0, $v0, $zero
; ASM-NEXT: and $v0, $v0, $a0
; ASM-NEXT: clz $v0, $v0
-; ASM-NEXT: addiu $a0, $zero, 64
+; ASM: addiu $a0, $zero, 64
; ASM-NEXT: subu $a0, $a0, $v0
; ASM-NEXT: addiu $v0, $v1, -1
-; ASM-NEXT: nor $a1, $v1, $zero
+; ASM: nor $a1, $v1, $zero
; ASM-NEXT: and $a1, $a1, $v0
; ASM-NEXT: clz $a1, $a1
-; ASM-NEXT: addiu $v0, $zero, 32
+; ASM: addiu $v0, $zero, 32
; ASM-NEXT: subu $v0, $v0, $a1
; ASM-NEXT: movn $a0, $v0, $v1
-; ASM-NEXT: addiu $v0, $zero, 0
+; ASM: addiu $v0, $zero, 0
; ASM-NEXT: move $v1, $v0
; ASM-NEXT: move $v0, $a0
; ASM-NEXT: jr $ra
@@ -1072,7 +1078,7 @@
; ASM-LABEL: encTrap
; ASM-NEXT: .LencTrap$__0:
-; ASM-NEXT: teq $zero, $zero, 0
+; ASM: teq $zero, $zero, 0
; DIS-LABEL: <encTrap>:
; DIS-NEXT: 00000034 teq zero,zero
diff --git a/tests_lit/assembler/mips32/encoding_test_arith_fp.ll b/tests_lit/assembler/mips32/encoding_test_arith_fp.ll
index 91fb8da..4e2ea84 100644
--- a/tests_lit/assembler/mips32/encoding_test_arith_fp.ll
+++ b/tests_lit/assembler/mips32/encoding_test_arith_fp.ll
@@ -478,25 +478,41 @@
}
; ASM-LABEL: cast_d2ll_const
; ASM-LABEL: .Lcast_d2ll_const$entry:
-; ASM-NEXT: lui $[[REG:.*]], %hi({{.*}})
+; ASM: lui $[[REG:.*]], %hi({{.*}})
; ASM-NEXT: ldc1 $[[FREG:.*]], %lo({{.*}})($[[REG]])
-; DIS-LABEL: 000000c0 <cast_d2ll_const>:
-; DIS-NEXT: c0: 3c020000 lui v0,0x0
-; DIS-NEXT: c4: d4400000 ldc1 $f0,0(v0)
+; DIS-LABEL: <cast_d2ll_const>:
+; DIS: 3c020000 lui v0,0x0
+; DIS-NEXT: d4400000 ldc1 $f0,0(v0)
; IASM-LABEL: cast_d2ll_const:
; IASM-LABEL: .Lcast_d2ll_const$entry:
+; IASM-NEXT: .byte 0xf0
+; IASM-NEXT: .byte 0xff
+; IASM-NEXT: .byte 0xbd
+; IASM-NEXT: .byte 0x27
; IASM-NEXT: .word 0x3c020000 # R_MIPS_HI16 [[LAB:.*]]
; IASM-NEXT: .word 0xd4400000 # R_MIPS_LO16 [[LAB]]
; IASM-NEXT: .byte 0x0
-; IASM-NEXT: .byte 0x8
-; IASM-NEXT: .byte 0x3
-; IASM-NEXT: .byte 0x44
+; IASM-NEXT: .byte 0x0
+; IASM-NEXT: .byte 0xa1
+; IASM-NEXT: .byte 0xe7
+; IASM-NEXT: .byte 0x4
+; IASM-NEXT: .byte 0x0
+; IASM-NEXT: .byte 0xa0
+; IASM-NEXT: .byte 0xe7
+; IASM-NEXT: .byte 0x4
+; IASM-NEXT: .byte 0x0
+; IASM-NEXT: .byte 0xa2
+; IASM-NEXT: .byte 0x8f
; IASM-NEXT: .byte 0x0
; IASM-NEXT: .byte 0x0
-; IASM-NEXT: .byte 0x2
-; IASM-NEXT: .byte 0x44
+; IASM-NEXT: .byte 0xa3
+; IASM-NEXT: .byte 0x8f
+; IASM-NEXT: .byte 0x10
+; IASM-NEXT: .byte 0x0
+; IASM-NEXT: .byte 0xbd
+; IASM-NEXT: .byte 0x27
; IASM-NEXT: .byte 0x8
; IASM-NEXT: .byte 0x0
; IASM-NEXT: .byte 0xe0
@@ -505,7 +521,14 @@
; IASM-NEXT: .byte 0x0
; IASM-NEXT: .byte 0x0
; IASM-NEXT: .byte 0x0
-
+; IASM-NEXT: .byte 0x34
+; IASM-NEXT: .byte 0x0
+; IASM-NEXT: .byte 0x0
+; IASM-NEXT: .byte 0x0
+; IASM-NEXT: .byte 0x34
+; IASM-NEXT: .byte 0x0
+; IASM-NEXT: .byte 0x0
+; IASM-NEXT: .byte 0x0
declare void @bar(i32 %a1, i32 %a2)
define internal void @Call() {
@@ -515,8 +538,8 @@
; ASM-LABEL: Call
; ASM: jal bar
-; DIS-LABEL: 000000e0 <Call>:
-; DIS: f0: 0c000000 jal 0
+; DIS-LABEL: 000000f0 <Call>:
+; DIS: 100: 0c000000 jal 0
; IASM-LABEL: Call:
; IASM: .word 0xc000000 # R_MIPS_26 bar
diff --git a/tests_lit/assembler/mips32/encoding_test_fcmp.ll b/tests_lit/assembler/mips32/encoding_test_fcmp.ll
index f03d7f9..4a2bc81 100644
--- a/tests_lit/assembler/mips32/encoding_test_fcmp.ll
+++ b/tests_lit/assembler/mips32/encoding_test_fcmp.ll
@@ -31,7 +31,7 @@
; ASM-LABEL: fcmpFalseFloat:
; ASM-NEXT: .LfcmpFalseFloat$entry:
-; ASM-NEXT: addiu $v0, $zero, 0
+; ASM: addiu $v0, $zero, 0
; ASM-NEXT: andi $v0, $v0, 1
; ASM-NEXT: jr $ra
@@ -64,7 +64,7 @@
; ASM-LABEL: fcmpFalseDouble:
; ASM-NEXT: .LfcmpFalseDouble$entry:
-; ASM-NEXT: addiu $v0, $zero, 0
+; ASM: addiu $v0, $zero, 0
; ASM-NEXT: andi $v0, $v0, 1
; ASM-NEXT: jr $ra
@@ -97,9 +97,9 @@
; ASM-LABEL: fcmpOeqFloat
; ASM-NEXT: .LfcmpOeqFloat$entry:
-; ASM-NEXT: c.eq.s $f12, $f14
-; ASM-NEXT: addiu $v0, $zero, 1
-; ASM-NEXT: movf $v0, $zero, $fcc0
+; ASM: c.eq.s $f12, $f14
+; ASM: addiu $v0, $zero, 1
+; ASM: movf $v0, $zero, $fcc0
; ASM-NEXT: andi $v0, $v0, 1
; ASM-NEXT: jr $ra
@@ -142,9 +142,9 @@
; ASM-LABEL: fcmpOeqDouble
; ASM-NEXT: .LfcmpOeqDouble$entry:
-; ASM-NEXT: c.eq.d $f12, $f14
-; ASM-NEXT: addiu $v0, $zero, 1
-; ASM-NEXT: movf $v0, $zero, $fcc0
+; ASM: c.eq.d $f12, $f14
+; ASM: addiu $v0, $zero, 1
+; ASM: movf $v0, $zero, $fcc0
; ASM-NEXT: andi $v0, $v0, 1
; ASM-NEXT: jr $ra
@@ -187,9 +187,9 @@
; ASM-LABEL: fcmpOgtFloat
; ASM-NEXT: .LfcmpOgtFloat$entry:
-; ASM-NEXT: c.ule.s $f12, $f14
-; ASM-NEXT: addiu $v0, $zero, 1
-; ASM-NEXT: movt $v0, $zero, $fcc0
+; ASM: c.ule.s $f12, $f14
+; ASM: addiu $v0, $zero, 1
+; ASM: movt $v0, $zero, $fcc0
; ASM-NEXT: andi $v0, $v0, 1
; ASM-NEXT: jr $ra
@@ -232,9 +232,9 @@
; ASM-LABEL: fcmpOgtDouble
; ASM-NEXT: .LfcmpOgtDouble$entry:
-; ASM-NEXT: c.ule.d $f12, $f14
-; ASM-NEXT: addiu $v0, $zero, 1
-; ASM-NEXT: movt $v0, $zero, $fcc0
+; ASM: c.ule.d $f12, $f14
+; ASM: addiu $v0, $zero, 1
+; ASM: movt $v0, $zero, $fcc0
; ASM-NEXT: andi $v0, $v0, 1
; ASM-NEXT: jr $ra
@@ -277,9 +277,9 @@
; ASM-LABEL: fcmpOgeFloat
; ASM-NEXT: .LfcmpOgeFloat$entry:
-; ASM-NEXT: c.ult.s $f12, $f14
-; ASM-NEXT: addiu $v0, $zero, 1
-; ASM-NEXT: movt $v0, $zero, $fcc0
+; ASM: c.ult.s $f12, $f14
+; ASM: addiu $v0, $zero, 1
+; ASM: movt $v0, $zero, $fcc0
; ASM-NEXT: andi $v0, $v0, 1
; ASM-NEXT: jr $ra
@@ -322,9 +322,9 @@
; ASM-LABEL: fcmpOgeDouble
; ASM-NEXT: .LfcmpOgeDouble$entry:
-; ASM-NEXT: c.ult.d $f12, $f14
-; ASM-NEXT: addiu $v0, $zero, 1
-; ASM-NEXT: movt $v0, $zero, $fcc0
+; ASM: c.ult.d $f12, $f14
+; ASM: addiu $v0, $zero, 1
+; ASM: movt $v0, $zero, $fcc0
; ASM-NEXT: andi $v0, $v0, 1
; ASM-NEXT: jr $ra
@@ -367,9 +367,9 @@
; ASM-LABEL: fcmpOltFloat
; ASM-NEXT: .LfcmpOltFloat$entry:
-; ASM-NEXT: c.olt.s $f12, $f14
-; ASM-NEXT: addiu $v0, $zero, 1
-; ASM-NEXT: movf $v0, $zero, $fcc0
+; ASM: c.olt.s $f12, $f14
+; ASM: addiu $v0, $zero, 1
+; ASM: movf $v0, $zero, $fcc0
; ASM-NEXT: andi $v0, $v0, 1
; ASM-NEXT: jr $ra
@@ -412,9 +412,9 @@
; ASM-LABEL: fcmpOltDouble
; ASM-NEXT: .LfcmpOltDouble$entry:
-; ASM-NEXT: c.olt.d $f12, $f14
-; ASM-NEXT: addiu $v0, $zero, 1
-; ASM-NEXT: movf $v0, $zero, $fcc0
+; ASM: c.olt.d $f12, $f14
+; ASM: addiu $v0, $zero, 1
+; ASM: movf $v0, $zero, $fcc0
; ASM-NEXT: andi $v0, $v0, 1
; ASM-NEXT: jr $ra
@@ -457,9 +457,9 @@
; ASM-LABEL: fcmpOleFloat
; ASM-NEXT: .LfcmpOleFloat$entry:
-; ASM-NEXT: c.ole.s $f12, $f14
-; ASM-NEXT: addiu $v0, $zero, 1
-; ASM-NEXT: movf $v0, $zero, $fcc0
+; ASM: c.ole.s $f12, $f14
+; ASM: addiu $v0, $zero, 1
+; ASM: movf $v0, $zero, $fcc0
; ASM-NEXT: andi $v0, $v0, 1
; ASM-NEXT: jr $ra
@@ -502,9 +502,9 @@
; ASM-LABEL: fcmpOleDouble
; ASM-NEXT: .LfcmpOleDouble$entry:
-; ASM-NEXT: c.ole.d $f12, $f14
-; ASM-NEXT: addiu $v0, $zero, 1
-; ASM-NEXT: movf $v0, $zero, $fcc0
+; ASM: c.ole.d $f12, $f14
+; ASM: addiu $v0, $zero, 1
+; ASM: movf $v0, $zero, $fcc0
; ASM-NEXT: andi $v0, $v0, 1
; ASM-NEXT: jr $ra
@@ -547,9 +547,9 @@
; ASM-LABEL: fcmpOneFloat
; ASM-NEXT: .LfcmpOneFloat$entry:
-; ASM-NEXT: c.ueq.s $f12, $f14
-; ASM-NEXT: addiu $v0, $zero, 1
-; ASM-NEXT: movt $v0, $zero, $fcc0
+; ASM: c.ueq.s $f12, $f14
+; ASM: addiu $v0, $zero, 1
+; ASM: movt $v0, $zero, $fcc0
; ASM-NEXT: andi $v0, $v0, 1
; ASM-NEXT: jr $ra
@@ -592,9 +592,9 @@
; ASM-LABEL: fcmpOneDouble
; ASM-NEXT: .LfcmpOneDouble$entry:
-; ASM-NEXT: c.ueq.d $f12, $f14
-; ASM-NEXT: addiu $v0, $zero, 1
-; ASM-NEXT: movt $v0, $zero, $fcc0
+; ASM: c.ueq.d $f12, $f14
+; ASM: addiu $v0, $zero, 1
+; ASM: movt $v0, $zero, $fcc0
; ASM-NEXT: andi $v0, $v0, 1
; ASM-NEXT: jr $ra
@@ -637,9 +637,9 @@
; ASM-LABEL: fcmpOrdFloat:
; ASM-NEXT: .LfcmpOrdFloat$entry:
-; ASM-NEXT: c.un.s $f12, $f14
-; ASM-NEXT: addiu $v0, $zero, 1
-; ASM-NEXT: movt $v0, $zero, $fcc0
+; ASM: c.un.s $f12, $f14
+; ASM: addiu $v0, $zero, 1
+; ASM: movt $v0, $zero, $fcc0
; ASM-NEXT: andi $v0, $v0, 1
; ASM-NEXT: jr $ra
@@ -682,9 +682,9 @@
; ASM-LABEL: fcmpOrdDouble:
; ASM-NEXT: .LfcmpOrdDouble$entry:
-; ASM-NEXT: c.un.d $f12, $f14
-; ASM-NEXT: addiu $v0, $zero, 1
-; ASM-NEXT: movt $v0, $zero, $fcc0
+; ASM: c.un.d $f12, $f14
+; ASM: addiu $v0, $zero, 1
+; ASM: movt $v0, $zero, $fcc0
; ASM-NEXT: andi $v0, $v0, 1
; ASM-NEXT: jr $ra
@@ -727,9 +727,9 @@
; ASM-LABEL: fcmpUeqFloat
; ASM-NEXT: .LfcmpUeqFloat$entry:
-; ASM-NEXT: c.ueq.s $f12, $f14
-; ASM-NEXT: addiu $v0, $zero, 1
-; ASM-NEXT: movf $v0, $zero, $fcc0
+; ASM: c.ueq.s $f12, $f14
+; ASM: addiu $v0, $zero, 1
+; ASM: movf $v0, $zero, $fcc0
; ASM-NEXT: andi $v0, $v0, 1
; ASM-NEXT: jr $ra
@@ -772,9 +772,9 @@
; ASM-LABEL: fcmpUeqDouble
; ASM-NEXT: .LfcmpUeqDouble$entry:
-; ASM-NEXT: c.ueq.d $f12, $f14
-; ASM-NEXT: addiu $v0, $zero, 1
-; ASM-NEXT: movf $v0, $zero, $fcc0
+; ASM: c.ueq.d $f12, $f14
+; ASM: addiu $v0, $zero, 1
+; ASM: movf $v0, $zero, $fcc0
; ASM-NEXT: andi $v0, $v0, 1
; ASM-NEXT: jr $ra
@@ -817,9 +817,9 @@
; ASM-LABEL: fcmpUgtFloat
; ASM-NEXT: .LfcmpUgtFloat$entry:
-; ASM-NEXT: c.ole.s $f12, $f14
-; ASM-NEXT: addiu $v0, $zero, 1
-; ASM-NEXT: movt $v0, $zero, $fcc0
+; ASM: c.ole.s $f12, $f14
+; ASM: addiu $v0, $zero, 1
+; ASM: movt $v0, $zero, $fcc0
; ASM-NEXT: andi $v0, $v0, 1
; ASM-NEXT: jr $ra
@@ -862,9 +862,9 @@
; ASM-LABEL: fcmpUgtDouble
; ASM-NEXT: .LfcmpUgtDouble$entry:
-; ASM-NEXT: c.ole.d $f12, $f14
-; ASM-NEXT: addiu $v0, $zero, 1
-; ASM-NEXT: movt $v0, $zero, $fcc0
+; ASM: c.ole.d $f12, $f14
+; ASM: addiu $v0, $zero, 1
+; ASM: movt $v0, $zero, $fcc0
; ASM-NEXT: andi $v0, $v0, 1
; ASM-NEXT: jr $ra
@@ -907,9 +907,9 @@
; ASM-LABEL: fcmpUgeFloat
; ASM-NEXT: .LfcmpUgeFloat$entry:
-; ASM-NEXT: c.olt.s $f12, $f14
-; ASM-NEXT: addiu $v0, $zero, 1
-; ASM-NEXT: movt $v0, $zero, $fcc0
+; ASM: c.olt.s $f12, $f14
+; ASM: addiu $v0, $zero, 1
+; ASM: movt $v0, $zero, $fcc0
; ASM-NEXT: andi $v0, $v0, 1
; ASM-NEXT: jr $ra
@@ -952,9 +952,9 @@
; ASM-LABEL: fcmpUgeDouble
; ASM-NEXT: .LfcmpUgeDouble$entry:
-; ASM-NEXT: c.olt.d $f12, $f14
-; ASM-NEXT: addiu $v0, $zero, 1
-; ASM-NEXT: movt $v0, $zero, $fcc0
+; ASM: c.olt.d $f12, $f14
+; ASM: addiu $v0, $zero, 1
+; ASM: movt $v0, $zero, $fcc0
; ASM-NEXT: andi $v0, $v0, 1
; ASM-NEXT: jr $ra
@@ -997,9 +997,9 @@
; ASM-LABEL: fcmpUltFloat
; ASM-NEXT: .LfcmpUltFloat$entry:
-; ASM-NEXT: c.ult.s $f12, $f14
-; ASM-NEXT: addiu $v0, $zero, 1
-; ASM-NEXT: movf $v0, $zero, $fcc0
+; ASM: c.ult.s $f12, $f14
+; ASM: addiu $v0, $zero, 1
+; ASM: movf $v0, $zero, $fcc0
; ASM-NEXT: andi $v0, $v0, 1
; ASM-NEXT: jr $ra
@@ -1042,9 +1042,9 @@
; ASM-LABEL: fcmpUltDouble
; ASM-NEXT: .LfcmpUltDouble$entry:
-; ASM-NEXT: c.ult.d $f12, $f14
-; ASM-NEXT: addiu $v0, $zero, 1
-; ASM-NEXT: movf $v0, $zero, $fcc0
+; ASM: c.ult.d $f12, $f14
+; ASM: addiu $v0, $zero, 1
+; ASM: movf $v0, $zero, $fcc0
; ASM-NEXT: andi $v0, $v0, 1
; ASM-NEXT: jr $ra
@@ -1087,9 +1087,9 @@
; ASM-LABEL: fcmpUleFloat
; ASM-NEXT: .LfcmpUleFloat$entry:
-; ASM-NEXT: c.ule.s $f12, $f14
-; ASM-NEXT: addiu $v0, $zero, 1
-; ASM-NEXT: movf $v0, $zero, $fcc0
+; ASM: c.ule.s $f12, $f14
+; ASM: addiu $v0, $zero, 1
+; ASM: movf $v0, $zero, $fcc0
; ASM-NEXT: andi $v0, $v0, 1
; ASM-NEXT: jr $ra
@@ -1132,9 +1132,9 @@
; ASM-LABEL: fcmpUleDouble
; ASM-NEXT: .LfcmpUleDouble$entry:
-; ASM-NEXT: c.ule.d $f12, $f14
-; ASM-NEXT: addiu $v0, $zero, 1
-; ASM-NEXT: movf $v0, $zero, $fcc0
+; ASM: c.ule.d $f12, $f14
+; ASM: addiu $v0, $zero, 1
+; ASM: movf $v0, $zero, $fcc0
; ASM-NEXT: andi $v0, $v0, 1
; ASM-NEXT: jr $ra
@@ -1177,9 +1177,9 @@
; ASM-LABEL: fcmpUneFloat
; ASM-NEXT: .LfcmpUneFloat$entry:
-; ASM-NEXT: c.eq.s $f12, $f14
-; ASM-NEXT: addiu $v0, $zero, 1
-; ASM-NEXT: movt $v0, $zero, $fcc0
+; ASM: c.eq.s $f12, $f14
+; ASM: addiu $v0, $zero, 1
+; ASM: movt $v0, $zero, $fcc0
; ASM-NEXT: andi $v0, $v0, 1
; ASM-NEXT: jr $ra
@@ -1222,9 +1222,9 @@
; ASM-LABEL: fcmpUneDouble
; ASM-NEXT: .LfcmpUneDouble$entry:
-; ASM-NEXT: c.eq.d $f12, $f14
-; ASM-NEXT: addiu $v0, $zero, 1
-; ASM-NEXT: movt $v0, $zero, $fcc0
+; ASM: c.eq.d $f12, $f14
+; ASM: addiu $v0, $zero, 1
+; ASM: movt $v0, $zero, $fcc0
; ASM-NEXT: andi $v0, $v0, 1
; ASM-NEXT: jr $ra
@@ -1267,9 +1267,9 @@
; ASM-LABEL: fcmpUnoFloat
; ASM-NEXT: .LfcmpUnoFloat$entry:
-; ASM-NEXT: c.un.s $f12, $f14
-; ASM-NEXT: addiu $v0, $zero, 1
-; ASM-NEXT: movf $v0, $zero, $fcc0
+; ASM: c.un.s $f12, $f14
+; ASM: addiu $v0, $zero, 1
+; ASM: movf $v0, $zero, $fcc0
; ASM-NEXT: andi $v0, $v0, 1
; ASM-NEXT: jr $ra
@@ -1312,9 +1312,9 @@
; ASM-LABEL: fcmpUnoDouble
; ASM-NEXT: .LfcmpUnoDouble$entry:
-; ASM-NEXT: c.un.d $f12, $f14
-; ASM-NEXT: addiu $v0, $zero, 1
-; ASM-NEXT: movf $v0, $zero, $fcc0
+; ASM: c.un.d $f12, $f14
+; ASM: addiu $v0, $zero, 1
+; ASM: movf $v0, $zero, $fcc0
; ASM-NEXT: andi $v0, $v0, 1
; ASM-NEXT: jr $ra
@@ -1357,7 +1357,7 @@
; ASM-LABEL: fcmpTrueFloat
; ASM-NEXT: .LfcmpTrueFloat$entry:
-; ASM-NEXT: addiu $v0, $zero, 1
+; ASM: addiu $v0, $zero, 1
; ASM-NEXT: andi $v0, $v0, 1
; ASM-NEXT: jr $ra
@@ -1390,7 +1390,7 @@
; ASM-LABEL: fcmpTrueDouble
; ASM-NEXT: .LfcmpTrueDouble$entry:
-; ASM-NEXT: addiu $v0, $zero, 1
+; ASM: addiu $v0, $zero, 1
; ASM-NEXT: andi $v0, $v0, 1
; ASM-NEXT: jr $ra
diff --git a/tests_lit/assembler/mips32/encoding_trap.ll b/tests_lit/assembler/mips32/encoding_trap.ll
index 83c0ee5..a65e6a3 100644
--- a/tests_lit/assembler/mips32/encoding_trap.ll
+++ b/tests_lit/assembler/mips32/encoding_trap.ll
@@ -28,7 +28,7 @@
; ASM-LABEL: encTrap
; ASM-NEXT: .LencTrap$__0:
-; ASM-NEXT: teq $zero, $zero, 0
+; ASM: teq $zero, $zero, 0
; DIS-LABEL: 00000000 <encTrap>:
; DIS-NEXT: 0: 00000034 teq zero,zero
diff --git a/tests_lit/llvm2ice_tests/alloc.ll b/tests_lit/llvm2ice_tests/alloc.ll
index 8600054..04e5b96 100644
--- a/tests_lit/llvm2ice_tests/alloc.ll
+++ b/tests_lit/llvm2ice_tests/alloc.ll
@@ -62,9 +62,9 @@
; ARM32: bl {{.*}} R_{{.*}} f1
; MIPS32-LABEL: fixed_416_align_16
-; MIPS32-OPT2: addiu sp,sp,-436
+; MIPS32-OPT2: addiu sp,sp,-448
; MIPS32-OPT2: addiu a0,sp,16
-; MIPS32-OPTM1: addiu sp,sp,-456
+; MIPS32-OPTM1: addiu sp,sp,-464
; MIPS32-OPTM1: addiu [[REG:.*]],sp,16
; MIPS32-OPTM1: sw [[REG]],{{.*}}
; MIPS32-OPTM1: lw a0,{{.*}}
@@ -93,9 +93,9 @@
; ARM32: bl {{.*}} R_{{.*}} f1
; MIPS32-LABEL: fixed_416_align_32
-; MIPS32-OPT2: addiu sp,sp,-440
-; MIPS32-OPT2: addiu a0,sp,32
-; MIPS32-OPTM1: addiu sp,sp,-456
+; MIPS32-OPT2: addiu sp,sp,-448
+; MIPS32-OPT2: addiu a0,sp,16
+; MIPS32-OPTM1: addiu sp,sp,-464
; MIPS32-OPTM1: addiu [[REG:.*]],sp,32
; MIPS32-OPTM1: sw [[REG]],{{.*}}
; MIPS32-OPTM1: lw a0,{{.*}}
@@ -127,9 +127,9 @@
; ARM32: bl {{.*}} R_{{.*}} f1
; MIPS32-LABEL: fixed_351_align_16
-; MIPS32-OPT2: addiu sp,sp,-372
+; MIPS32-OPT2: addiu sp,sp,-384
; MIPS32-OPT2: addiu a0,sp,16
-; MIPS32-OPTM1: addiu sp,sp,-392
+; MIPS32-OPTM1: addiu sp,sp,-400
; MIPS32-OPTM1: addiu [[REG:.*]],sp,16
; MIPS32-OPTM1: sw [[REG]],{{.*}}
; MIPS32-OPTM1: lw a0,{{.*}}
@@ -158,9 +158,9 @@
; ARM32: bl {{.*}} R_{{.*}} f1
; MIPS32-LABEL: fixed_351_align_32
-; MIPS32-OPT2: addiu sp,sp,-376
-; MIPS32-OPT2: addiu a0,sp,32
-; MIPS32-OPTM1: addiu sp,sp,-392
+; MIPS32-OPT2: addiu sp,sp,-384
+; MIPS32-OPT2: addiu a0,sp,16
+; MIPS32-OPTM1: addiu sp,sp,-400
; MIPS32-OPTM1: addiu [[REG:.*]],sp,32
; MIPS32-OPTM1: sw [[REG]],{{.*}}
; MIPS32-OPTM1: lw a0,{{.*}}
diff --git a/tests_lit/llvm2ice_tests/bitcast.ll b/tests_lit/llvm2ice_tests/bitcast.ll
index 8358a2d..1a38a76 100644
--- a/tests_lit/llvm2ice_tests/bitcast.ll
+++ b/tests_lit/llvm2ice_tests/bitcast.ll
@@ -65,8 +65,10 @@
; ARM32-LABEL: cast_d2ll
; ARM32: vmov r{{[0-9]+}}, r{{[0-9]+}}, d{{[0-9]+}}
; MIPS32-LABEL: cast_d2ll
-; MIPS32-O2: mfc1 $v1, $f{{[0-9]+}}
-; MIPS32-O2: mfc1 $v0, $f{{[0-9]+}}
+; MIPS32-O2: swc1 $f13, {{.*}}
+; MIPS32-O2: swc1 $f12, {{.*}}
+; MIPS32-O2: lw $v0, {{.*}}
+; MIPS32-O2: lw $v1, {{.*}}
; MIPS32-OM1: sdc1
; MIPS32-OM1: lw
; MIPS32-OM1: lw
@@ -87,12 +89,10 @@
; MIPS32-LABEL: cast_d2ll_const
; MIPS32: lui {{.*}}, %hi(.L$double$0012345678901234)
; MIPS32: ldc1 {{.*}}, %lo(.L$double$0012345678901234)({{.*}})
-; MIPS32-O2: mfc1 $v1, $f{{[0-9]+}}
-; MIPS32-O2: mfc1 $v0, $f{{[0-9]+}}
-; MIPS32-OM1: mfc1
-; MIPS32-OM1: mfc1
-; MIPS32-OM1: lw
-; MIPS32-OM1: lw
+; MIPS32: swc1 $f{{[0-9]+}}, {{.*}}
+; MIPS32: swc1 $f{{[0-9]+}}, {{.*}}
+; MIPS32: lw $v0, {{.*}}
+; MIPS32: lw $v1, {{.*}}
define internal double @cast_ll2d(i64 %ll) {
entry:
diff --git a/tests_lit/llvm2ice_tests/fp.call_ret.ll b/tests_lit/llvm2ice_tests/fp.call_ret.ll
index 833b9a6..460d70c 100644
--- a/tests_lit/llvm2ice_tests/fp.call_ret.ll
+++ b/tests_lit/llvm2ice_tests/fp.call_ret.ll
@@ -59,16 +59,16 @@
; CHECK: mov DWORD PTR [esp+0x4],0x7b
; CHECK: call {{.*}} R_{{.*}} ignoreFpArgsNoInline
; MIPS32-LABEL: passFpArgs
-; MIPS32: mfc1 a2,$f15
-; MIPS32: mfc1 a3,$f14
+; MIPS32: mfc1 a2,$f{{[0-9]+}}
+; MIPS32: mfc1 a3,$f{{[0-9]+}}
; MIPS32: li a1,123
; MIPS32: jal {{.*}} ignoreFpArgsNoInline
-; MIPS32: mfc1 a2,$f23
-; MIPS32: mfc1 a3,$f22
+; MIPS32: mfc1 a2,$f{{[0-9]+}}
+; MIPS32: mfc1 a3,$f{{[0-9]+}}
; MIPS32: li a1,123
; MIPS32: jal {{.*}} ignoreFpArgsNoInline
-; MIPS32: mfc1 a2,$f25
-; MIPS32: mfc1 a3,$f24
+; MIPS32: mfc1 a2,$f{{[0-9]+}}
+; MIPS32: mfc1 a3,$f{{[0-9]+}}
; MIPS32: li a1,123
; MIPS32: jal {{.*}} ignoreFpArgsNoInline
@@ -83,8 +83,8 @@
; CHECK: mov DWORD PTR [esp+0x4],0x7b
; CHECK: call {{.*}} R_{{.*}} ignoreFpArgsNoInline
; MIPS32-LABEL: passFpConstArg
-; MIPS32: mfc1 a2,$f1
-; MIPS32: mfc1 a3,$f0
+; MIPS32: mfc1 a2,$f{{[0-9]+}}
+; MIPS32: mfc1 a3,$f{{[0-9]+}}
; MIPS32: li a1,123
; MIPS32: jal {{.*}} ignoreFpArgsNoInline
@@ -131,8 +131,8 @@
; CHECK-LABEL: returnFloatConst
; CHECK: fld
; MIPS32-LABEL: returnFloatConst
-; MIPS32: lui v0,0x0 160: R_MIPS_HI16 .L$float$3f9d70a4
-; MIPS32: lwc1 $f0,0(v0) 164: R_MIPS_LO16 .L$float$3f9d70a4
+; MIPS32: lui v0,0x0 {{.*}} .L$float$3f9d70a4
+; MIPS32: lwc1 $f0,0(v0) {{.*}} .L$float$3f9d70a4
; MIPS32: jr ra
define internal double @returnDoubleConst() {
@@ -142,6 +142,6 @@
; CHECK-LABEL: returnDoubleConst
; CHECK: fld
; MIPS32-LABEL: returnDoubleConst
-; MIPS32: lui v0,0x0 170: R_MIPS_HI16 .L$double$3ff3ae147ae147ae
-; MIPS32: ldc1 $f0,0(v0) 174: R_MIPS_LO16 .L$double$3ff3ae147ae147ae
+; MIPS32: lui v0,0x0 {{.*}} .L$double$3ff3ae147ae147ae
+; MIPS32: ldc1 $f0,0(v0) {{.*}} .L$double$3ff3ae147ae147ae
; MIPS32: jr ra
diff --git a/tests_lit/llvm2ice_tests/vector-cast.ll b/tests_lit/llvm2ice_tests/vector-cast.ll
index a23a1cd..13c2acd 100644
--- a/tests_lit/llvm2ice_tests/vector-cast.ll
+++ b/tests_lit/llvm2ice_tests/vector-cast.ll
@@ -70,7 +70,7 @@
; MIPS32: andi a0,a0,0x1
; MIPS32: sll a0,a0,0x1f
; MIPS32: sra a0,a0,0x1f
-; MIPS32: srl a0,a0,0x18
+; MIPS32: sll a0,a0,0x18
; MIPS32: sll t2,t2,0x8
; MIPS32: srl t2,t2,0x8
; MIPS32: or a0,a0,t2
@@ -111,7 +111,7 @@
; MIPS32: andi a1,a1,0x1
; MIPS32: sll a1,a1,0x1f
; MIPS32: sra a1,a1,0x1f
-; MIPS32: srl a1,a1,0x18
+; MIPS32: sll a1,a1,0x18
; MIPS32: sll v0,v0,0x8
; MIPS32: srl v0,v0,0x8
; MIPS32: or a1,a1,v0
@@ -152,7 +152,7 @@
; MIPS32: andi a2,a2,0x1
; MIPS32: sll a2,a2,0x1f
; MIPS32: sra a2,a2,0x1f
-; MIPS32: srl a2,a2,0x18
+; MIPS32: sll a2,a2,0x18
; MIPS32: sll v0,v0,0x8
; MIPS32: srl v0,v0,0x8
; MIPS32: or a2,a2,v0
@@ -193,7 +193,7 @@
; MIPS32: andi a3,a3,0x1
; MIPS32: sll a3,a3,0x1f
; MIPS32: sra a3,a3,0x1f
-; MIPS32: srl a3,a3,0x18
+; MIPS32: sll a3,a3,0x18
; MIPS32: sll v0,v0,0x8
; MIPS32: srl v0,v0,0x8
; MIPS32: or a3,a3,v0
@@ -354,7 +354,7 @@
; MIPS32: srl a0,a0,0x18
; MIPS32: andi a0,a0,0x1
; MIPS32: andi a0,a0,0x1
-; MIPS32: srl a0,a0,0x18
+; MIPS32: sll a0,a0,0x18
; MIPS32: sll t2,t2,0x8
; MIPS32: srl t2,t2,0x8
; MIPS32: or a0,a0,t2
@@ -391,7 +391,7 @@
; MIPS32: srl a1,a1,0x18
; MIPS32: andi a1,a1,0x1
; MIPS32: andi a1,a1,0x1
-; MIPS32: srl a1,a1,0x18
+; MIPS32: sll a1,a1,0x18
; MIPS32: sll v0,v0,0x8
; MIPS32: srl v0,v0,0x8
; MIPS32: or a1,a1,v0
@@ -428,7 +428,7 @@
; MIPS32: srl a2,a2,0x18
; MIPS32: andi a2,a2,0x1
; MIPS32: andi a2,a2,0x1
-; MIPS32: srl a2,a2,0x18
+; MIPS32: sll a2,a2,0x18
; MIPS32: sll v0,v0,0x8
; MIPS32: srl v0,v0,0x8
; MIPS32: or a2,a2,v0
@@ -465,7 +465,7 @@
; MIPS32: srl a3,a3,0x18
; MIPS32: andi a3,a3,0x1
; MIPS32: andi a3,a3,0x1
-; MIPS32: srl a3,a3,0x18
+; MIPS32: sll a3,a3,0x18
; MIPS32: sll v0,v0,0x8
; MIPS32: srl v0,v0,0x8
; MIPS32: or a3,a3,v0
@@ -581,6 +581,7 @@
; X8632: pand
; MIPS32: move t2,a0
; MIPS32: andi t2,t2,0xff
+; MIPS32: andi t2,t2,0x1
; MIPS32: andi t2,t2,0xff
; MIPS32: srl v0,v0,0x8
; MIPS32: sll v0,v0,0x8
@@ -588,6 +589,7 @@
; MIPS32: move v0,a0
; MIPS32: srl v0,v0,0x8
; MIPS32: andi v0,v0,0xff
+; MIPS32: andi v0,v0,0x1
; MIPS32: andi v0,v0,0xff
; MIPS32: sll v0,v0,0x8
; MIPS32: lui t3,0xffff
@@ -597,6 +599,7 @@
; MIPS32: move t2,a0
; MIPS32: srl t2,t2,0x10
; MIPS32: andi t2,t2,0xff
+; MIPS32: andi t2,t2,0x1
; MIPS32: andi t2,t2,0xff
; MIPS32: sll t2,t2,0x10
; MIPS32: lui t3,0xff00
@@ -604,12 +607,14 @@
; MIPS32: and v0,v0,t3
; MIPS32: or t2,t2,v0
; MIPS32: srl a0,a0,0x18
-; MIPS32: srl a0,a0,0x18
+; MIPS32: andi a0,a0,0x1
+; MIPS32: sll a0,a0,0x18
; MIPS32: sll t2,t2,0x8
; MIPS32: srl t2,t2,0x8
; MIPS32: or a0,a0,t2
; MIPS32: move v0,a1
; MIPS32: andi v0,v0,0xff
+; MIPS32: andi v0,v0,0x1
; MIPS32: andi v0,v0,0xff
; MIPS32: srl v1,v1,0x8
; MIPS32: sll v1,v1,0x8
@@ -617,6 +622,7 @@
; MIPS32: move v1,a1
; MIPS32: srl v1,v1,0x8
; MIPS32: andi v1,v1,0xff
+; MIPS32: andi v1,v1,0x1
; MIPS32: andi v1,v1,0xff
; MIPS32: sll v1,v1,0x8
; MIPS32: lui t2,0xffff
@@ -626,6 +632,7 @@
; MIPS32: move v0,a1
; MIPS32: srl v0,v0,0x10
; MIPS32: andi v0,v0,0xff
+; MIPS32: andi v0,v0,0x1
; MIPS32: andi v0,v0,0xff
; MIPS32: sll v0,v0,0x10
; MIPS32: lui t2,0xff00
@@ -633,12 +640,14 @@
; MIPS32: and v1,v1,t2
; MIPS32: or v0,v0,v1
; MIPS32: srl a1,a1,0x18
-; MIPS32: srl a1,a1,0x18
+; MIPS32: andi a1,a1,0x1
+; MIPS32: sll a1,a1,0x18
; MIPS32: sll v0,v0,0x8
; MIPS32: srl v0,v0,0x8
; MIPS32: or a1,a1,v0
; MIPS32: move v0,a2
; MIPS32: andi v0,v0,0xff
+; MIPS32: andi v0,v0,0x1
; MIPS32: andi v0,v0,0xff
; MIPS32: srl t0,t0,0x8
; MIPS32: sll t0,t0,0x8
@@ -646,6 +655,7 @@
; MIPS32: move v1,a2
; MIPS32: srl v1,v1,0x8
; MIPS32: andi v1,v1,0xff
+; MIPS32: andi v1,v1,0x1
; MIPS32: andi v1,v1,0xff
; MIPS32: sll v1,v1,0x8
; MIPS32: lui t0,0xffff
@@ -655,6 +665,7 @@
; MIPS32: move v0,a2
; MIPS32: srl v0,v0,0x10
; MIPS32: andi v0,v0,0xff
+; MIPS32: andi v0,v0,0x1
; MIPS32: andi v0,v0,0xff
; MIPS32: sll v0,v0,0x10
; MIPS32: lui t0,0xff00
@@ -662,12 +673,14 @@
; MIPS32: and v1,v1,t0
; MIPS32: or v0,v0,v1
; MIPS32: srl a2,a2,0x18
-; MIPS32: srl a2,a2,0x18
+; MIPS32: andi a2,a2,0x1
+; MIPS32: sll a2,a2,0x18
; MIPS32: sll v0,v0,0x8
; MIPS32: srl v0,v0,0x8
; MIPS32: or a2,a2,v0
; MIPS32: move v0,a3
; MIPS32: andi v0,v0,0xff
+; MIPS32: andi v0,v0,0x1
; MIPS32: andi v0,v0,0xff
; MIPS32: srl t1,t1,0x8
; MIPS32: sll t1,t1,0x8
@@ -675,6 +688,7 @@
; MIPS32: move v1,a3
; MIPS32: srl v1,v1,0x8
; MIPS32: andi v1,v1,0xff
+; MIPS32: andi v1,v1,0x1
; MIPS32: andi v1,v1,0xff
; MIPS32: sll v1,v1,0x8
; MIPS32: lui t0,0xffff
@@ -684,6 +698,7 @@
; MIPS32: move v0,a3
; MIPS32: srl v0,v0,0x10
; MIPS32: andi v0,v0,0xff
+; MIPS32: andi v0,v0,0x1
; MIPS32: andi v0,v0,0xff
; MIPS32: sll v0,v0,0x10
; MIPS32: lui t0,0xff00
@@ -691,7 +706,8 @@
; MIPS32: and v1,v1,t0
; MIPS32: or v0,v0,v1
; MIPS32: srl a3,a3,0x18
-; MIPS32: srl a3,a3,0x18
+; MIPS32: andi a3,a3,0x1
+; MIPS32: sll a3,a3,0x18
; MIPS32: sll v0,v0,0x8
; MIPS32: srl v0,v0,0x8
; MIPS32: or a3,a3,v0
diff --git a/tests_lit/llvm2ice_tests/vector-icmp.ll b/tests_lit/llvm2ice_tests/vector-icmp.ll
index 95c0961..54fba56 100644
--- a/tests_lit/llvm2ice_tests/vector-icmp.ll
+++ b/tests_lit/llvm2ice_tests/vector-icmp.ll
@@ -2758,7 +2758,7 @@
; MIPS32: sll [[T0]],[[T0]],0x18
; MIPS32: xor [[T10]],[[T10]],[[T0]]
; MIPS32: sltiu [[T10]],[[T10]],1
-; MIPS32: srl [[T10]],[[T10]],0x18
+; MIPS32: sll [[T10]],[[T10]],0x18
; MIPS32: sll [[T8]],[[T8]],0x8
; MIPS32: srl [[T8]],[[T8]],0x8
; MIPS32: or [[T10]],[[T10]],[[T8]]
@@ -2812,7 +2812,7 @@
; MIPS32: sll [[T1]],[[T1]],0x18
; MIPS32: xor [[T11]],[[T11]],[[T1]]
; MIPS32: sltiu [[T11]],[[T11]],1
-; MIPS32: srl [[T11]],[[T11]],0x18
+; MIPS32: sll [[T11]],[[T11]],0x18
; MIPS32: sll [[T0]],[[T0]],0x8
; MIPS32: srl [[T0]],[[T0]],0x8
; MIPS32: or [[T11]],[[T11]],[[T0]]
@@ -2866,7 +2866,7 @@
; MIPS32: sll [[T2]],[[T2]],0x18
; MIPS32: xor [[T12]],[[T12]],[[T2]]
; MIPS32: sltiu [[T12]],[[T12]],1
-; MIPS32: srl [[T12]],[[T12]],0x18
+; MIPS32: sll [[T12]],[[T12]],0x18
; MIPS32: sll [[T0]],[[T0]],0x8
; MIPS32: srl [[T0]],[[T0]],0x8
; MIPS32: or [[T12]],[[T12]],[[T0]]
@@ -2920,7 +2920,7 @@
; MIPS32: sll [[T3]],[[T3]],0x18
; MIPS32: xor [[T13]],[[T13]],[[T3]]
; MIPS32: sltiu [[T13]],[[T13]],1
-; MIPS32: srl [[T13]],[[T13]],0x18
+; MIPS32: sll [[T13]],[[T13]],0x18
; MIPS32: sll [[T0]],[[T0]],0x8
; MIPS32: srl [[T0]],[[T0]],0x8
; MIPS32: or [[T13]],[[T13]],[[T0]]
@@ -2997,7 +2997,7 @@
; MIPS32: sll [[T0]],[[T0]],0x18
; MIPS32: xor [[T10]],[[T10]],[[T0]]
; MIPS32: sltu [[T10]],zero,[[T10]]
-; MIPS32: srl [[T10]],[[T10]],0x18
+; MIPS32: sll [[T10]],[[T10]],0x18
; MIPS32: sll [[T8]],[[T8]],0x8
; MIPS32: srl [[T8]],[[T8]],0x8
; MIPS32: or [[T10]],[[T10]],[[T8]]
@@ -3051,7 +3051,7 @@
; MIPS32: sll [[T1]],[[T1]],0x18
; MIPS32: xor [[T11]],[[T11]],[[T1]]
; MIPS32: sltu [[T11]],zero,[[T11]]
-; MIPS32: srl [[T11]],[[T11]],0x18
+; MIPS32: sll [[T11]],[[T11]],0x18
; MIPS32: sll [[T0]],[[T0]],0x8
; MIPS32: srl [[T0]],[[T0]],0x8
; MIPS32: or [[T11]],[[T11]],[[T0]]
@@ -3105,7 +3105,7 @@
; MIPS32: sll [[T2]],[[T2]],0x18
; MIPS32: xor [[T12]],[[T12]],[[T2]]
; MIPS32: sltu [[T12]],zero,[[T12]]
-; MIPS32: srl [[T12]],[[T12]],0x18
+; MIPS32: sll [[T12]],[[T12]],0x18
; MIPS32: sll [[T0]],[[T0]],0x8
; MIPS32: srl [[T0]],[[T0]],0x8
; MIPS32: or [[T12]],[[T12]],[[T0]]
@@ -3159,7 +3159,7 @@
; MIPS32: sll [[T3]],[[T3]],0x18
; MIPS32: xor [[T13]],[[T13]],[[T3]]
; MIPS32: sltu [[T13]],zero,[[T13]]
-; MIPS32: srl [[T13]],[[T13]],0x18
+; MIPS32: sll [[T13]],[[T13]],0x18
; MIPS32: sll [[T0]],[[T0]],0x8
; MIPS32: srl [[T0]],[[T0]],0x8
; MIPS32: or [[T13]],[[T13]],[[T0]]
@@ -3231,7 +3231,7 @@
; MIPS32: sll [[T10]],[[T10]],0x18
; MIPS32: sll [[T0]],[[T0]],0x18
; MIPS32: slt [[T0]],[[T0]],[[T10]]
-; MIPS32: srl [[T0]],[[T0]],0x18
+; MIPS32: sll [[T0]],[[T0]],0x18
; MIPS32: sll [[T9]],[[T9]],0x8
; MIPS32: srl [[T9]],[[T9]],0x8
; MIPS32: or v0,[[T0]],[[T9]]
@@ -3281,7 +3281,7 @@
; MIPS32: sll [[T11]],[[T11]],0x18
; MIPS32: sll [[T1]],[[T1]],0x18
; MIPS32: slt [[T1]],[[T1]],[[T11]]
-; MIPS32: srl [[T1]],[[T1]],0x18
+; MIPS32: sll [[T1]],[[T1]],0x18
; MIPS32: sll [[T4]],[[T4]],0x8
; MIPS32: srl [[T4]],[[T4]],0x8
; MIPS32: or v1,[[T1]],[[T4]]
@@ -3331,7 +3331,7 @@
; MIPS32: sll [[T12]],[[T12]],0x18
; MIPS32: sll [[T2]],[[T2]],0x18
; MIPS32: slt [[T2]],[[T2]],[[T12]]
-; MIPS32: srl [[T2]],[[T2]],0x18
+; MIPS32: sll [[T2]],[[T2]],0x18
; MIPS32: sll [[T11]],[[T11]],0x8
; MIPS32: srl [[T11]],[[T11]],0x8
; MIPS32: or [[T2]],[[T2]],[[T11]]
@@ -3381,7 +3381,7 @@
; MIPS32: sll [[T13]],[[T13]],0x18
; MIPS32: sll [[T3]],[[T3]],0x18
; MIPS32: slt [[T3]],[[T3]],[[T13]]
-; MIPS32: srl [[T3]],[[T3]],0x18
+; MIPS32: sll [[T3]],[[T3]],0x18
; MIPS32: sll [[T11]],[[T11]],0x8
; MIPS32: srl [[T11]],[[T11]],0x8
; MIPS32: or [[T3]],[[T3]],[[T11]]
@@ -3456,7 +3456,7 @@
; MIPS32: sll [[T0]],[[T0]],0x18
; MIPS32: slt [[T0]],[[T0]],[[T10]]
; MIPS32: xori [[T0]],[[T0]],0x1
-; MIPS32: srl [[T0]],[[T0]],0x18
+; MIPS32: sll [[T0]],[[T0]],0x18
; MIPS32: sll [[T9]],[[T9]],0x8
; MIPS32: srl [[T9]],[[T9]],0x8
; MIPS32: or v0,[[T0]],[[T9]]
@@ -3510,7 +3510,7 @@
; MIPS32: sll [[T1]],[[T1]],0x18
; MIPS32: slt [[T1]],[[T1]],[[T11]]
; MIPS32: xori [[T1]],[[T1]],0x1
-; MIPS32: srl [[T1]],[[T1]],0x18
+; MIPS32: sll [[T1]],[[T1]],0x18
; MIPS32: sll [[T4]],[[T4]],0x8
; MIPS32: srl [[T4]],[[T4]],0x8
; MIPS32: or v1,[[T1]],[[T4]]
@@ -3564,7 +3564,7 @@
; MIPS32: sll [[T2]],[[T2]],0x18
; MIPS32: slt [[T2]],[[T2]],[[T12]]
; MIPS32: xori [[T2]],[[T2]],0x1
-; MIPS32: srl [[T2]],[[T2]],0x18
+; MIPS32: sll [[T2]],[[T2]],0x18
; MIPS32: sll [[T11]],[[T11]],0x8
; MIPS32: srl [[T11]],[[T11]],0x8
; MIPS32: or [[T2]],[[T2]],[[T11]]
@@ -3618,7 +3618,7 @@
; MIPS32: sll [[T3]],[[T3]],0x18
; MIPS32: slt [[T3]],[[T3]],[[T13]]
; MIPS32: xori [[T3]],[[T3]],0x1
-; MIPS32: srl [[T3]],[[T3]],0x18
+; MIPS32: sll [[T3]],[[T3]],0x18
; MIPS32: sll [[T11]],[[T11]],0x8
; MIPS32: srl [[T11]],[[T11]],0x8
; MIPS32: or [[T3]],[[T3]],[[T11]]
@@ -3688,7 +3688,7 @@
; MIPS32: sll [[T10]],[[T10]],0x18
; MIPS32: sll [[T0]],[[T0]],0x18
; MIPS32: slt [[T10]],[[T10]],[[T0]]
-; MIPS32: srl [[T10]],[[T10]],0x18
+; MIPS32: sll [[T10]],[[T10]],0x18
; MIPS32: sll [[T8]],[[T8]],0x8
; MIPS32: srl [[T8]],[[T8]],0x8
; MIPS32: or [[T10]],[[T10]],[[T8]]
@@ -3738,7 +3738,7 @@
; MIPS32: sll [[T11]],[[T11]],0x18
; MIPS32: sll [[T1]],[[T1]],0x18
; MIPS32: slt [[T11]],[[T11]],[[T1]]
-; MIPS32: srl [[T11]],[[T11]],0x18
+; MIPS32: sll [[T11]],[[T11]],0x18
; MIPS32: sll [[T0]],[[T0]],0x8
; MIPS32: srl [[T0]],[[T0]],0x8
; MIPS32: or [[T11]],[[T11]],[[T0]]
@@ -3788,7 +3788,7 @@
; MIPS32: sll [[T12]],[[T12]],0x18
; MIPS32: sll [[T2]],[[T2]],0x18
; MIPS32: slt [[T12]],[[T12]],[[T2]]
-; MIPS32: srl [[T12]],[[T12]],0x18
+; MIPS32: sll [[T12]],[[T12]],0x18
; MIPS32: sll [[T0]],[[T0]],0x8
; MIPS32: srl [[T0]],[[T0]],0x8
; MIPS32: or [[T12]],[[T12]],[[T0]]
@@ -3838,7 +3838,7 @@
; MIPS32: sll [[T13]],[[T13]],0x18
; MIPS32: sll [[T3]],[[T3]],0x18
; MIPS32: slt [[T13]],[[T13]],[[T3]]
-; MIPS32: srl [[T13]],[[T13]],0x18
+; MIPS32: sll [[T13]],[[T13]],0x18
; MIPS32: sll [[T0]],[[T0]],0x8
; MIPS32: srl [[T0]],[[T0]],0x8
; MIPS32: or [[T13]],[[T13]],[[T0]]
@@ -3916,7 +3916,7 @@
; MIPS32: sll [[T0]],[[T0]],0x18
; MIPS32: sltu [[T10]],[[T10]],[[T0]]
; MIPS32: xori [[T10]],[[T10]],0x1
-; MIPS32: srl [[T10]],[[T10]],0x18
+; MIPS32: sll [[T10]],[[T10]],0x18
; MIPS32: sll [[T8]],[[T8]],0x8
; MIPS32: srl [[T8]],[[T8]],0x8
; MIPS32: or [[T10]],[[T10]],[[T8]]
@@ -3970,7 +3970,7 @@
; MIPS32: sll [[T1]],[[T1]],0x18
; MIPS32: sltu [[T11]],[[T11]],[[T1]]
; MIPS32: xori [[T11]],[[T11]],0x1
-; MIPS32: srl [[T11]],[[T11]],0x18
+; MIPS32: sll [[T11]],[[T11]],0x18
; MIPS32: sll [[T0]],[[T0]],0x8
; MIPS32: srl [[T0]],[[T0]],0x8
; MIPS32: or [[T11]],[[T11]],[[T0]]
@@ -4024,7 +4024,7 @@
; MIPS32: sll [[T2]],[[T2]],0x18
; MIPS32: sltu [[T12]],[[T12]],[[T2]]
; MIPS32: xori [[T12]],[[T12]],0x1
-; MIPS32: srl [[T12]],[[T12]],0x18
+; MIPS32: sll [[T12]],[[T12]],0x18
; MIPS32: sll [[T0]],[[T0]],0x8
; MIPS32: srl [[T0]],[[T0]],0x8
; MIPS32: or [[T12]],[[T12]],[[T0]]
@@ -4078,7 +4078,7 @@
; MIPS32: sll [[T3]],[[T3]],0x18
; MIPS32: sltu [[T13]],[[T13]],[[T3]]
; MIPS32: xori [[T13]],[[T13]],0x1
-; MIPS32: srl [[T13]],[[T13]],0x18
+; MIPS32: sll [[T13]],[[T13]],0x18
; MIPS32: sll [[T0]],[[T0]],0x8
; MIPS32: srl [[T0]],[[T0]],0x8
; MIPS32: or [[T13]],[[T13]],[[T0]]
@@ -4151,7 +4151,7 @@
; MIPS32: sll [[T10]],[[T10]],0x18
; MIPS32: sll [[T0]],[[T0]],0x18
; MIPS32: sltu [[T0]],[[T0]],[[T10]]
-; MIPS32: srl [[T0]],[[T0]],0x18
+; MIPS32: sll [[T0]],[[T0]],0x18
; MIPS32: sll [[T9]],[[T9]],0x8
; MIPS32: srl [[T9]],[[T9]],0x8
; MIPS32: or v0,[[T0]],[[T9]]
@@ -4201,7 +4201,7 @@
; MIPS32: sll [[T11]],[[T11]],0x18
; MIPS32: sll [[T1]],[[T1]],0x18
; MIPS32: sltu [[T1]],[[T1]],[[T11]]
-; MIPS32: srl [[T1]],[[T1]],0x18
+; MIPS32: sll [[T1]],[[T1]],0x18
; MIPS32: sll [[T4]],[[T4]],0x8
; MIPS32: srl [[T4]],[[T4]],0x8
; MIPS32: or v1,[[T1]],[[T4]]
@@ -4251,7 +4251,7 @@
; MIPS32: sll [[T12]],[[T12]],0x18
; MIPS32: sll [[T2]],[[T2]],0x18
; MIPS32: sltu [[T2]],[[T2]],[[T12]]
-; MIPS32: srl [[T2]],[[T2]],0x18
+; MIPS32: sll [[T2]],[[T2]],0x18
; MIPS32: sll [[T11]],[[T11]],0x8
; MIPS32: srl [[T11]],[[T11]],0x8
; MIPS32: or [[T2]],[[T2]],[[T11]]
@@ -4301,7 +4301,7 @@
; MIPS32: sll [[T13]],[[T13]],0x18
; MIPS32: sll [[T3]],[[T3]],0x18
; MIPS32: sltu [[T3]],[[T3]],[[T13]]
-; MIPS32: srl [[T3]],[[T3]],0x18
+; MIPS32: sll [[T3]],[[T3]],0x18
; MIPS32: sll [[T11]],[[T11]],0x8
; MIPS32: srl [[T11]],[[T11]],0x8
; MIPS32: or [[T3]],[[T3]],[[T11]]
@@ -4377,7 +4377,7 @@
; MIPS32: sll [[T0]],[[T0]],0x18
; MIPS32: sltu [[T0]],[[T0]],[[T10]]
; MIPS32: xori [[T0]],[[T0]],0x1
-; MIPS32: srl [[T0]],[[T0]],0x18
+; MIPS32: sll [[T0]],[[T0]],0x18
; MIPS32: sll [[T9]],[[T9]],0x8
; MIPS32: srl [[T9]],[[T9]],0x8
; MIPS32: or v0,[[T0]],[[T9]]
@@ -4431,7 +4431,7 @@
; MIPS32: sll [[T1]],[[T1]],0x18
; MIPS32: sltu [[T1]],[[T1]],[[T11]]
; MIPS32: xori [[T1]],[[T1]],0x1
-; MIPS32: srl [[T1]],[[T1]],0x18
+; MIPS32: sll [[T1]],[[T1]],0x18
; MIPS32: sll [[T4]],[[T4]],0x8
; MIPS32: srl [[T4]],[[T4]],0x8
; MIPS32: or v1,[[T1]],[[T4]]
@@ -4485,7 +4485,7 @@
; MIPS32: sll [[T2]],[[T2]],0x18
; MIPS32: sltu [[T2]],[[T2]],[[T12]]
; MIPS32: xori [[T2]],[[T2]],0x1
-; MIPS32: srl [[T2]],[[T2]],0x18
+; MIPS32: sll [[T2]],[[T2]],0x18
; MIPS32: sll [[T11]],[[T11]],0x8
; MIPS32: srl [[T11]],[[T11]],0x8
; MIPS32: or [[T2]],[[T2]],[[T11]]
@@ -4539,7 +4539,7 @@
; MIPS32: sll [[T3]],[[T3]],0x18
; MIPS32: sltu [[T3]],[[T3]],[[T13]]
; MIPS32: xori [[T3]],[[T3]],0x1
-; MIPS32: srl [[T3]],[[T3]],0x18
+; MIPS32: sll [[T3]],[[T3]],0x18
; MIPS32: sll [[T11]],[[T11]],0x8
; MIPS32: srl [[T11]],[[T11]],0x8
; MIPS32: or [[T3]],[[T3]],[[T11]]
@@ -4610,7 +4610,7 @@
; MIPS32: sll [[T10]],[[T10]],0x18
; MIPS32: sll [[T0]],[[T0]],0x18
; MIPS32: sltu [[T10]],[[T10]],[[T0]]
-; MIPS32: srl [[T10]],[[T10]],0x18
+; MIPS32: sll [[T10]],[[T10]],0x18
; MIPS32: sll [[T8]],[[T8]],0x8
; MIPS32: srl [[T8]],[[T8]],0x8
; MIPS32: or [[T10]],[[T10]],[[T8]]
@@ -4660,7 +4660,7 @@
; MIPS32: sll [[T11]],[[T11]],0x18
; MIPS32: sll [[T1]],[[T1]],0x18
; MIPS32: sltu [[T11]],[[T11]],[[T1]]
-; MIPS32: srl [[T11]],[[T11]],0x18
+; MIPS32: sll [[T11]],[[T11]],0x18
; MIPS32: sll [[T0]],[[T0]],0x8
; MIPS32: srl [[T0]],[[T0]],0x8
; MIPS32: or [[T11]],[[T11]],[[T0]]
@@ -4710,7 +4710,7 @@
; MIPS32: sll [[T12]],[[T12]],0x18
; MIPS32: sll [[T2]],[[T2]],0x18
; MIPS32: sltu [[T12]],[[T12]],[[T2]]
-; MIPS32: srl [[T12]],[[T12]],0x18
+; MIPS32: sll [[T12]],[[T12]],0x18
; MIPS32: sll [[T0]],[[T0]],0x8
; MIPS32: srl [[T0]],[[T0]],0x8
; MIPS32: or [[T12]],[[T12]],[[T0]]
@@ -4760,7 +4760,7 @@
; MIPS32: sll [[T13]],[[T13]],0x18
; MIPS32: sll [[T3]],[[T3]],0x18
; MIPS32: sltu [[T13]],[[T13]],[[T3]]
-; MIPS32: srl [[T13]],[[T13]],0x18
+; MIPS32: sll [[T13]],[[T13]],0x18
; MIPS32: sll [[T0]],[[T0]],0x8
; MIPS32: srl [[T0]],[[T0]],0x8
; MIPS32: or [[T13]],[[T13]],[[T0]]
@@ -4844,7 +4844,7 @@
; MIPS32: sll [[T0]],[[T0]],0x1f
; MIPS32: xor [[T10]],[[T10]],[[T0]]
; MIPS32: sltiu [[T10]],[[T10]],1
-; MIPS32: srl [[T10]],[[T10]],0x18
+; MIPS32: sll [[T10]],[[T10]],0x18
; MIPS32: sll [[T8]],[[T8]],0x8
; MIPS32: srl [[T8]],[[T8]],0x8
; MIPS32: or [[T10]],[[T10]],[[T8]]
@@ -4906,7 +4906,7 @@
; MIPS32: sll [[T1]],[[T1]],0x1f
; MIPS32: xor [[T11]],[[T11]],[[T1]]
; MIPS32: sltiu [[T11]],[[T11]],1
-; MIPS32: srl [[T11]],[[T11]],0x18
+; MIPS32: sll [[T11]],[[T11]],0x18
; MIPS32: sll [[T0]],[[T0]],0x8
; MIPS32: srl [[T0]],[[T0]],0x8
; MIPS32: or [[T11]],[[T11]],[[T0]]
@@ -4968,7 +4968,7 @@
; MIPS32: sll [[T2]],[[T2]],0x1f
; MIPS32: xor [[T12]],[[T12]],[[T2]]
; MIPS32: sltiu [[T12]],[[T12]],1
-; MIPS32: srl [[T12]],[[T12]],0x18
+; MIPS32: sll [[T12]],[[T12]],0x18
; MIPS32: sll [[T0]],[[T0]],0x8
; MIPS32: srl [[T0]],[[T0]],0x8
; MIPS32: or [[T12]],[[T12]],[[T0]]
@@ -5030,7 +5030,7 @@
; MIPS32: sll [[T3]],[[T3]],0x1f
; MIPS32: xor [[T13]],[[T13]],[[T3]]
; MIPS32: sltiu [[T13]],[[T13]],1
-; MIPS32: srl [[T13]],[[T13]],0x18
+; MIPS32: sll [[T13]],[[T13]],0x18
; MIPS32: sll [[T0]],[[T0]],0x8
; MIPS32: srl [[T0]],[[T0]],0x8
; MIPS32: or [[T13]],[[T13]],[[T0]]
@@ -5115,7 +5115,7 @@
; MIPS32: sll [[T0]],[[T0]],0x1f
; MIPS32: xor [[T10]],[[T10]],[[T0]]
; MIPS32: sltu [[T10]],zero,[[T10]]
-; MIPS32: srl [[T10]],[[T10]],0x18
+; MIPS32: sll [[T10]],[[T10]],0x18
; MIPS32: sll [[T8]],[[T8]],0x8
; MIPS32: srl [[T8]],[[T8]],0x8
; MIPS32: or [[T10]],[[T10]],[[T8]]
@@ -5177,7 +5177,7 @@
; MIPS32: sll [[T1]],[[T1]],0x1f
; MIPS32: xor [[T11]],[[T11]],[[T1]]
; MIPS32: sltu [[T11]],zero,[[T11]]
-; MIPS32: srl [[T11]],[[T11]],0x18
+; MIPS32: sll [[T11]],[[T11]],0x18
; MIPS32: sll [[T0]],[[T0]],0x8
; MIPS32: srl [[T0]],[[T0]],0x8
; MIPS32: or [[T11]],[[T11]],[[T0]]
@@ -5239,7 +5239,7 @@
; MIPS32: sll [[T2]],[[T2]],0x1f
; MIPS32: xor [[T12]],[[T12]],[[T2]]
; MIPS32: sltu [[T12]],zero,[[T12]]
-; MIPS32: srl [[T12]],[[T12]],0x18
+; MIPS32: sll [[T12]],[[T12]],0x18
; MIPS32: sll [[T0]],[[T0]],0x8
; MIPS32: srl [[T0]],[[T0]],0x8
; MIPS32: or [[T12]],[[T12]],[[T0]]
@@ -5301,7 +5301,7 @@
; MIPS32: sll [[T3]],[[T3]],0x1f
; MIPS32: xor [[T13]],[[T13]],[[T3]]
; MIPS32: sltu [[T13]],zero,[[T13]]
-; MIPS32: srl [[T13]],[[T13]],0x18
+; MIPS32: sll [[T13]],[[T13]],0x18
; MIPS32: sll [[T0]],[[T0]],0x8
; MIPS32: srl [[T0]],[[T0]],0x8
; MIPS32: or [[T13]],[[T13]],[[T0]]
@@ -5381,7 +5381,7 @@
; MIPS32: sll [[T10]],[[T10]],0x1f
; MIPS32: sll [[T0]],[[T0]],0x1f
; MIPS32: slt [[T0]],[[T0]],[[T10]]
-; MIPS32: srl [[T0]],[[T0]],0x18
+; MIPS32: sll [[T0]],[[T0]],0x18
; MIPS32: sll [[T9]],[[T9]],0x8
; MIPS32: srl [[T9]],[[T9]],0x8
; MIPS32: or v0,[[T0]],[[T9]]
@@ -5439,7 +5439,7 @@
; MIPS32: sll [[T11]],[[T11]],0x1f
; MIPS32: sll [[T1]],[[T1]],0x1f
; MIPS32: slt [[T1]],[[T1]],[[T11]]
-; MIPS32: srl [[T1]],[[T1]],0x18
+; MIPS32: sll [[T1]],[[T1]],0x18
; MIPS32: sll [[T4]],[[T4]],0x8
; MIPS32: srl [[T4]],[[T4]],0x8
; MIPS32: or v1,[[T1]],[[T4]]
@@ -5497,7 +5497,7 @@
; MIPS32: sll [[T12]],[[T12]],0x1f
; MIPS32: sll [[T2]],[[T2]],0x1f
; MIPS32: slt [[T2]],[[T2]],[[T12]]
-; MIPS32: srl [[T2]],[[T2]],0x18
+; MIPS32: sll [[T2]],[[T2]],0x18
; MIPS32: sll [[T11]],[[T11]],0x8
; MIPS32: srl [[T11]],[[T11]],0x8
; MIPS32: or [[T2]],[[T2]],[[T11]]
@@ -5555,7 +5555,7 @@
; MIPS32: sll [[T13]],[[T13]],0x1f
; MIPS32: sll [[T3]],[[T3]],0x1f
; MIPS32: slt [[T3]],[[T3]],[[T13]]
-; MIPS32: srl [[T3]],[[T3]],0x18
+; MIPS32: sll [[T3]],[[T3]],0x18
; MIPS32: sll [[T11]],[[T11]],0x8
; MIPS32: srl [[T11]],[[T11]],0x8
; MIPS32: or [[T3]],[[T3]],[[T11]]
@@ -5638,7 +5638,7 @@
; MIPS32: sll [[T0]],[[T0]],0x1f
; MIPS32: slt [[T0]],[[T0]],[[T10]]
; MIPS32: xori [[T0]],[[T0]],0x1
-; MIPS32: srl [[T0]],[[T0]],0x18
+; MIPS32: sll [[T0]],[[T0]],0x18
; MIPS32: sll [[T9]],[[T9]],0x8
; MIPS32: srl [[T9]],[[T9]],0x8
; MIPS32: or v0,[[T0]],[[T9]]
@@ -5700,7 +5700,7 @@
; MIPS32: sll [[T1]],[[T1]],0x1f
; MIPS32: slt [[T1]],[[T1]],[[T11]]
; MIPS32: xori [[T1]],[[T1]],0x1
-; MIPS32: srl [[T1]],[[T1]],0x18
+; MIPS32: sll [[T1]],[[T1]],0x18
; MIPS32: sll [[T4]],[[T4]],0x8
; MIPS32: srl [[T4]],[[T4]],0x8
; MIPS32: or v1,[[T1]],[[T4]]
@@ -5762,7 +5762,7 @@
; MIPS32: sll [[T2]],[[T2]],0x1f
; MIPS32: slt [[T2]],[[T2]],[[T12]]
; MIPS32: xori [[T2]],[[T2]],0x1
-; MIPS32: srl [[T2]],[[T2]],0x18
+; MIPS32: sll [[T2]],[[T2]],0x18
; MIPS32: sll [[T11]],[[T11]],0x8
; MIPS32: srl [[T11]],[[T11]],0x8
; MIPS32: or [[T2]],[[T2]],[[T11]]
@@ -5824,7 +5824,7 @@
; MIPS32: sll [[T3]],[[T3]],0x1f
; MIPS32: slt [[T3]],[[T3]],[[T13]]
; MIPS32: xori [[T3]],[[T3]],0x1
-; MIPS32: srl [[T3]],[[T3]],0x18
+; MIPS32: sll [[T3]],[[T3]],0x18
; MIPS32: sll [[T11]],[[T11]],0x8
; MIPS32: srl [[T11]],[[T11]],0x8
; MIPS32: or [[T3]],[[T3]],[[T11]]
@@ -5902,7 +5902,7 @@
; MIPS32: sll [[T10]],[[T10]],0x1f
; MIPS32: sll [[T0]],[[T0]],0x1f
; MIPS32: slt [[T10]],[[T10]],[[T0]]
-; MIPS32: srl [[T10]],[[T10]],0x18
+; MIPS32: sll [[T10]],[[T10]],0x18
; MIPS32: sll [[T8]],[[T8]],0x8
; MIPS32: srl [[T8]],[[T8]],0x8
; MIPS32: or [[T10]],[[T10]],[[T8]]
@@ -5960,7 +5960,7 @@
; MIPS32: sll [[T11]],[[T11]],0x1f
; MIPS32: sll [[T1]],[[T1]],0x1f
; MIPS32: slt [[T11]],[[T11]],[[T1]]
-; MIPS32: srl [[T11]],[[T11]],0x18
+; MIPS32: sll [[T11]],[[T11]],0x18
; MIPS32: sll [[T0]],[[T0]],0x8
; MIPS32: srl [[T0]],[[T0]],0x8
; MIPS32: or [[T11]],[[T11]],[[T0]]
@@ -6018,7 +6018,7 @@
; MIPS32: sll [[T12]],[[T12]],0x1f
; MIPS32: sll [[T2]],[[T2]],0x1f
; MIPS32: slt [[T12]],[[T12]],[[T2]]
-; MIPS32: srl [[T12]],[[T12]],0x18
+; MIPS32: sll [[T12]],[[T12]],0x18
; MIPS32: sll [[T0]],[[T0]],0x8
; MIPS32: srl [[T0]],[[T0]],0x8
; MIPS32: or [[T12]],[[T12]],[[T0]]
@@ -6076,7 +6076,7 @@
; MIPS32: sll [[T13]],[[T13]],0x1f
; MIPS32: sll [[T3]],[[T3]],0x1f
; MIPS32: slt [[T13]],[[T13]],[[T3]]
-; MIPS32: srl [[T13]],[[T13]],0x18
+; MIPS32: sll [[T13]],[[T13]],0x18
; MIPS32: sll [[T0]],[[T0]],0x8
; MIPS32: srl [[T0]],[[T0]],0x8
; MIPS32: or [[T13]],[[T13]],[[T0]]
@@ -6162,7 +6162,7 @@
; MIPS32: sll [[T0]],[[T0]],0x1f
; MIPS32: sltu [[T10]],[[T10]],[[T0]]
; MIPS32: xori [[T10]],[[T10]],0x1
-; MIPS32: srl [[T10]],[[T10]],0x18
+; MIPS32: sll [[T10]],[[T10]],0x18
; MIPS32: sll [[T8]],[[T8]],0x8
; MIPS32: srl [[T8]],[[T8]],0x8
; MIPS32: or [[T10]],[[T10]],[[T8]]
@@ -6224,7 +6224,7 @@
; MIPS32: sll [[T1]],[[T1]],0x1f
; MIPS32: sltu [[T11]],[[T11]],[[T1]]
; MIPS32: xori [[T11]],[[T11]],0x1
-; MIPS32: srl [[T11]],[[T11]],0x18
+; MIPS32: sll [[T11]],[[T11]],0x18
; MIPS32: sll [[T0]],[[T0]],0x8
; MIPS32: srl [[T0]],[[T0]],0x8
; MIPS32: or [[T11]],[[T11]],[[T0]]
@@ -6286,7 +6286,7 @@
; MIPS32: sll [[T2]],[[T2]],0x1f
; MIPS32: sltu [[T12]],[[T12]],[[T2]]
; MIPS32: xori [[T12]],[[T12]],0x1
-; MIPS32: srl [[T12]],[[T12]],0x18
+; MIPS32: sll [[T12]],[[T12]],0x18
; MIPS32: sll [[T0]],[[T0]],0x8
; MIPS32: srl [[T0]],[[T0]],0x8
; MIPS32: or [[T12]],[[T12]],[[T0]]
@@ -6348,7 +6348,7 @@
; MIPS32: sll [[T3]],[[T3]],0x1f
; MIPS32: sltu [[T13]],[[T13]],[[T3]]
; MIPS32: xori [[T13]],[[T13]],0x1
-; MIPS32: srl [[T13]],[[T13]],0x18
+; MIPS32: sll [[T13]],[[T13]],0x18
; MIPS32: sll [[T0]],[[T0]],0x8
; MIPS32: srl [[T0]],[[T0]],0x8
; MIPS32: or [[T13]],[[T13]],[[T0]]
@@ -6429,7 +6429,7 @@
; MIPS32: sll [[T10]],[[T10]],0x1f
; MIPS32: sll [[T0]],[[T0]],0x1f
; MIPS32: sltu [[T0]],[[T0]],[[T10]]
-; MIPS32: srl [[T0]],[[T0]],0x18
+; MIPS32: sll [[T0]],[[T0]],0x18
; MIPS32: sll [[T9]],[[T9]],0x8
; MIPS32: srl [[T9]],[[T9]],0x8
; MIPS32: or v0,[[T0]],[[T9]]
@@ -6487,7 +6487,7 @@
; MIPS32: sll [[T11]],[[T11]],0x1f
; MIPS32: sll [[T1]],[[T1]],0x1f
; MIPS32: sltu [[T1]],[[T1]],[[T11]]
-; MIPS32: srl [[T1]],[[T1]],0x18
+; MIPS32: sll [[T1]],[[T1]],0x18
; MIPS32: sll [[T4]],[[T4]],0x8
; MIPS32: srl [[T4]],[[T4]],0x8
; MIPS32: or v1,[[T1]],[[T4]]
@@ -6545,7 +6545,7 @@
; MIPS32: sll [[T12]],[[T12]],0x1f
; MIPS32: sll [[T2]],[[T2]],0x1f
; MIPS32: sltu [[T2]],[[T2]],[[T12]]
-; MIPS32: srl [[T2]],[[T2]],0x18
+; MIPS32: sll [[T2]],[[T2]],0x18
; MIPS32: sll [[T11]],[[T11]],0x8
; MIPS32: srl [[T11]],[[T11]],0x8
; MIPS32: or [[T2]],[[T2]],[[T11]]
@@ -6603,7 +6603,7 @@
; MIPS32: sll [[T13]],[[T13]],0x1f
; MIPS32: sll [[T3]],[[T3]],0x1f
; MIPS32: sltu [[T3]],[[T3]],[[T13]]
-; MIPS32: srl [[T3]],[[T3]],0x18
+; MIPS32: sll [[T3]],[[T3]],0x18
; MIPS32: sll [[T11]],[[T11]],0x8
; MIPS32: srl [[T11]],[[T11]],0x8
; MIPS32: or [[T3]],[[T3]],[[T11]]
@@ -6687,7 +6687,7 @@
; MIPS32: sll [[T0]],[[T0]],0x1f
; MIPS32: sltu [[T0]],[[T0]],[[T10]]
; MIPS32: xori [[T0]],[[T0]],0x1
-; MIPS32: srl [[T0]],[[T0]],0x18
+; MIPS32: sll [[T0]],[[T0]],0x18
; MIPS32: sll [[T9]],[[T9]],0x8
; MIPS32: srl [[T9]],[[T9]],0x8
; MIPS32: or v0,[[T0]],[[T9]]
@@ -6749,7 +6749,7 @@
; MIPS32: sll [[T1]],[[T1]],0x1f
; MIPS32: sltu [[T1]],[[T1]],[[T11]]
; MIPS32: xori [[T1]],[[T1]],0x1
-; MIPS32: srl [[T1]],[[T1]],0x18
+; MIPS32: sll [[T1]],[[T1]],0x18
; MIPS32: sll [[T4]],[[T4]],0x8
; MIPS32: srl [[T4]],[[T4]],0x8
; MIPS32: or v1,[[T1]],[[T4]]
@@ -6811,7 +6811,7 @@
; MIPS32: sll [[T2]],[[T2]],0x1f
; MIPS32: sltu [[T2]],[[T2]],[[T12]]
; MIPS32: xori [[T2]],[[T2]],0x1
-; MIPS32: srl [[T2]],[[T2]],0x18
+; MIPS32: sll [[T2]],[[T2]],0x18
; MIPS32: sll [[T11]],[[T11]],0x8
; MIPS32: srl [[T11]],[[T11]],0x8
; MIPS32: or [[T2]],[[T2]],[[T11]]
@@ -6873,7 +6873,7 @@
; MIPS32: sll [[T3]],[[T3]],0x1f
; MIPS32: sltu [[T3]],[[T3]],[[T13]]
; MIPS32: xori [[T3]],[[T3]],0x1
-; MIPS32: srl [[T3]],[[T3]],0x18
+; MIPS32: sll [[T3]],[[T3]],0x18
; MIPS32: sll [[T11]],[[T11]],0x8
; MIPS32: srl [[T11]],[[T11]],0x8
; MIPS32: or [[T3]],[[T3]],[[T11]]
@@ -6952,7 +6952,7 @@
; MIPS32: sll [[T10]],[[T10]],0x1f
; MIPS32: sll [[T0]],[[T0]],0x1f
; MIPS32: sltu [[T10]],[[T10]],[[T0]]
-; MIPS32: srl [[T10]],[[T10]],0x18
+; MIPS32: sll [[T10]],[[T10]],0x18
; MIPS32: sll [[T8]],[[T8]],0x8
; MIPS32: srl [[T8]],[[T8]],0x8
; MIPS32: or [[T10]],[[T10]],[[T8]]
@@ -7010,7 +7010,7 @@
; MIPS32: sll [[T11]],[[T11]],0x1f
; MIPS32: sll [[T1]],[[T1]],0x1f
; MIPS32: sltu [[T11]],[[T11]],[[T1]]
-; MIPS32: srl [[T11]],[[T11]],0x18
+; MIPS32: sll [[T11]],[[T11]],0x18
; MIPS32: sll [[T0]],[[T0]],0x8
; MIPS32: srl [[T0]],[[T0]],0x8
; MIPS32: or [[T11]],[[T11]],[[T0]]
@@ -7068,7 +7068,7 @@
; MIPS32: sll [[T12]],[[T12]],0x1f
; MIPS32: sll [[T2]],[[T2]],0x1f
; MIPS32: sltu [[T12]],[[T12]],[[T2]]
-; MIPS32: srl [[T12]],[[T12]],0x18
+; MIPS32: sll [[T12]],[[T12]],0x18
; MIPS32: sll [[T0]],[[T0]],0x8
; MIPS32: srl [[T0]],[[T0]],0x8
; MIPS32: or [[T12]],[[T12]],[[T0]]
@@ -7126,7 +7126,7 @@
; MIPS32: sll [[T13]],[[T13]],0x1f
; MIPS32: sll [[T3]],[[T3]],0x1f
; MIPS32: sltu [[T13]],[[T13]],[[T3]]
-; MIPS32: srl [[T13]],[[T13]],0x18
+; MIPS32: sll [[T13]],[[T13]],0x18
; MIPS32: sll [[T0]],[[T0]],0x8
; MIPS32: srl [[T0]],[[T0]],0x8
; MIPS32: or [[T13]],[[T13]],[[T0]]
diff --git a/tests_lit/llvm2ice_tests/vector-select.ll b/tests_lit/llvm2ice_tests/vector-select.ll
index 0555ddf..0d1fa92 100644
--- a/tests_lit/llvm2ice_tests/vector-select.ll
+++ b/tests_lit/llvm2ice_tests/vector-select.ll
@@ -29,7 +29,7 @@
; SSE41: pblendvb xmm{{[0-7]}},{{xmm[0-7]|XMMWORD}}
; MIPS32-LABEL: test_select_v16i8
-; MIPS32: addiu [[T0:.*]],sp,-20
+; MIPS32: addiu [[T0:.*]],sp,-32
; MIPS32: sw [[T1:.*]],
; MIPS32: sw [[T2:.*]],
; MIPS32: sw [[T3:.*]],
@@ -98,7 +98,7 @@
; MIPS32: srl [[T6]],[[T6]],0x18
; MIPS32: srl [[T10]],[[T10]],0x18
; MIPS32: movn [[T10]],[[T6]],[[T16]]
-; MIPS32: srl [[T10]],[[T10]],0x18
+; MIPS32: sll [[T10]],[[T10]],0x18
; MIPS32: sll [[T1]],[[T1]],0x8
; MIPS32: srl [[T1]],[[T1]],0x8
; MIPS32: or [[T10]],[[T10]],[[T1]]
@@ -153,7 +153,7 @@
; MIPS32: srl [[T7]],[[T7]],0x18
; MIPS32: srl [[T11]],[[T11]],0x18
; MIPS32: movn [[T11]],[[T7]],[[T17]]
-; MIPS32: srl [[T11]],[[T11]],0x18
+; MIPS32: sll [[T11]],[[T11]],0x18
; MIPS32: sll [[T14]],[[T14]],0x8
; MIPS32: srl [[T14]],[[T14]],0x8
; MIPS32: or [[T11]],[[T11]],[[T14]]
@@ -208,7 +208,7 @@
; MIPS32: srl [[T8]],[[T8]],0x18
; MIPS32: srl [[T12]],[[T12]],0x18
; MIPS32: movn [[T12]],[[T8]],[[T18]]
-; MIPS32: srl [[T12]],[[T12]],0x18
+; MIPS32: sll [[T12]],[[T12]],0x18
; MIPS32: sll [[T16]],[[T16]],0x8
; MIPS32: srl [[T16]],[[T16]],0x8
; MIPS32: or [[T12]],[[T12]],[[T16]]
@@ -263,7 +263,7 @@
; MIPS32: srl [[T9]],[[T9]],0x18
; MIPS32: srl [[T13]],[[T13]],0x18
; MIPS32: movn [[T13]],[[T9]],[[T19]]
-; MIPS32: srl [[T13]],[[T13]],0x18
+; MIPS32: sll [[T13]],[[T13]],0x18
; MIPS32: sll [[T16]],[[T16]],0x8
; MIPS32: srl [[T16]],[[T16]],0x8
; MIPS32: or [[T13]],[[T13]],[[T16]]
@@ -276,7 +276,7 @@
; MIPS32: lw [[T3]],
; MIPS32: lw [[T2]],
; MIPS32: lw [[T1]],
-; MIPS32: addiu [[T0]],sp,20
+; MIPS32: addiu [[T0]],sp,32
}
define internal <16 x i1> @test_select_v16i1(<16 x i1> %cond, <16 x i1> %arg1,
@@ -293,7 +293,7 @@
; SSE41: pblendvb xmm{{[0-7]}},{{xmm[0-7]|XMMWORD}}
; MIPS32-LABEL: test_select_v16i1
-; MIPS32: addiu [[T0:.*]],sp,-20
+; MIPS32: addiu [[T0:.*]],sp,-32
; MIPS32: sw [[T1:.*]],
; MIPS32: sw [[T2:.*]],
; MIPS32: sw [[T3:.*]],
@@ -370,7 +370,7 @@
; MIPS32: srl [[T10]],[[T10]],0x18
; MIPS32: andi [[T10]],[[T10]],0x1
; MIPS32: movn [[T10]],[[T6]],[[T16]]
-; MIPS32: srl [[T10]],[[T10]],0x18
+; MIPS32: sll [[T10]],[[T10]],0x18
; MIPS32: sll [[T1]],[[T1]],0x8
; MIPS32: srl [[T1]],[[T1]],0x8
; MIPS32: or [[T10]],[[T10]],[[T1]]
@@ -433,7 +433,7 @@
; MIPS32: srl [[T11]],[[T11]],0x18
; MIPS32: andi [[T11]],[[T11]],0x1
; MIPS32: movn [[T11]],[[T7]],[[T17]]
-; MIPS32: srl [[T11]],[[T11]],0x18
+; MIPS32: sll [[T11]],[[T11]],0x18
; MIPS32: sll [[T14]],[[T14]],0x8
; MIPS32: srl [[T14]],[[T14]],0x8
; MIPS32: or [[T11]],[[T11]],[[T14]]
@@ -496,7 +496,7 @@
; MIPS32: srl [[T12]],[[T12]],0x18
; MIPS32: andi [[T12]],[[T12]],0x1
; MIPS32: movn [[T12]],[[T8]],[[T18]]
-; MIPS32: srl [[T12]],[[T12]],0x18
+; MIPS32: sll [[T12]],[[T12]],0x18
; MIPS32: sll [[T16]],[[T16]],0x8
; MIPS32: srl [[T16]],[[T16]],0x8
; MIPS32: or [[T12]],[[T12]],[[T16]]
@@ -559,7 +559,7 @@
; MIPS32: srl [[T13]],[[T13]],0x18
; MIPS32: andi [[T13]],[[T13]],0x1
; MIPS32: movn [[T13]],[[T9]],[[T19]]
-; MIPS32: srl [[T13]],[[T13]],0x18
+; MIPS32: sll [[T13]],[[T13]],0x18
; MIPS32: sll [[T16]],[[T16]],0x8
; MIPS32: srl [[T16]],[[T16]],0x8
; MIPS32: or [[T13]],[[T13]],[[T16]]
@@ -572,7 +572,7 @@
; MIPS32: lw [[T3]],
; MIPS32: lw [[T2]],
; MIPS32: lw [[T1]],
-; MIPS32: addiu [[T0]],sp,20
+; MIPS32: addiu [[T0]],sp,32
}
define internal <8 x i16> @test_select_v8i16(<8 x i1> %cond, <8 x i16> %arg1,
@@ -589,7 +589,7 @@
; SSE41: pblendvb xmm{{[0-7]}},{{xmm[0-7]|XMMWORD}}
; MIPS32-LABEL: test_select_v8i16
-; MIPS32: addiu [[T0:.*]],sp,-20
+; MIPS32: addiu [[T0:.*]],sp,-32
; MIPS32: sw [[T1:.*]],
; MIPS32: sw [[T2:.*]],
; MIPS32: sw [[T3:.*]],
@@ -700,7 +700,7 @@
; MIPS32: lw [[T3]],
; MIPS32: lw [[T2]],
; MIPS32: lw [[T1]],
-; MIPS32: addiu [[T0]],sp,20
+; MIPS32: addiu [[T0]],sp,32
}
define internal <8 x i1> @test_select_v8i1(<8 x i1> %cond, <8 x i1> %arg1,
@@ -717,7 +717,7 @@
; SSE41: pblendvb xmm{{[0-7]}},{{xmm[0-7]|XMMWORD}}
; MIPS32-LABEL: test_select_v8i1
-; MIPS32: addiu [[T0:.*]],sp,-20
+; MIPS32: addiu [[T0:.*]],sp,-32
; MIPS32: sw [[T1:.*]],
; MIPS32: sw [[T2:.*]],
; MIPS32: sw [[T3:.*]],
@@ -844,7 +844,7 @@
; MIPS32: lw [[T3]],
; MIPS32: lw [[T2]],
; MIPS32: lw [[T1]],
-; MIPS32: addiu [[T0]],sp,20
+; MIPS32: addiu [[T0]],sp,32
}
define internal <4 x i32> @test_select_v4i32(<4 x i1> %cond, <4 x i32> %arg1,