@@ -1879,6 +1879,7 @@ define void @insert_v16i8_vidx(i32 signext %a) nounwind {
18791879; O32-NEXT: addu $1, $2, $25
18801880; O32-NEXT: lw $2, %got(i32)($1)
18811881; O32-NEXT: lw $2, 0($2)
1882+ ; O32-NEXT: andi $2, $2, 15
18821883; O32-NEXT: lw $1, %got(v16i8)($1)
18831884; O32-NEXT: addu $1, $1, $2
18841885; O32-NEXT: jr $ra
@@ -1891,6 +1892,7 @@ define void @insert_v16i8_vidx(i32 signext %a) nounwind {
18911892; N32-NEXT: addiu $1, $1, %lo(%neg(%gp_rel(insert_v16i8_vidx)))
18921893; N32-NEXT: lw $2, %got_disp(i32)($1)
18931894; N32-NEXT: lw $2, 0($2)
1895+ ; N32-NEXT: andi $2, $2, 15
18941896; N32-NEXT: lw $1, %got_disp(v16i8)($1)
18951897; N32-NEXT: addu $1, $1, $2
18961898; N32-NEXT: jr $ra
@@ -1902,7 +1904,8 @@ define void @insert_v16i8_vidx(i32 signext %a) nounwind {
19021904; N64-NEXT: daddu $1, $1, $25
19031905; N64-NEXT: daddiu $1, $1, %lo(%neg(%gp_rel(insert_v16i8_vidx)))
19041906; N64-NEXT: ld $2, %got_disp(i32)($1)
1905- ; N64-NEXT: lwu $2, 0($2)
1907+ ; N64-NEXT: lw $2, 0($2)
1908+ ; N64-NEXT: andi $2, $2, 15
19061909; N64-NEXT: ld $1, %got_disp(v16i8)($1)
19071910; N64-NEXT: daddu $1, $1, $2
19081911; N64-NEXT: jr $ra
@@ -1925,6 +1928,7 @@ define void @insert_v8i16_vidx(i32 signext %a) nounwind {
19251928; O32-NEXT: addu $1, $2, $25
19261929; O32-NEXT: lw $2, %got(i32)($1)
19271930; O32-NEXT: lw $2, 0($2)
1931+ ; O32-NEXT: andi $2, $2, 7
19281932; O32-NEXT: lw $1, %got(v8i16)($1)
19291933; O32-NEXT: lsa $1, $2, $1, 1
19301934; O32-NEXT: jr $ra
@@ -1937,6 +1941,7 @@ define void @insert_v8i16_vidx(i32 signext %a) nounwind {
19371941; N32-NEXT: addiu $1, $1, %lo(%neg(%gp_rel(insert_v8i16_vidx)))
19381942; N32-NEXT: lw $2, %got_disp(i32)($1)
19391943; N32-NEXT: lw $2, 0($2)
1944+ ; N32-NEXT: andi $2, $2, 7
19401945; N32-NEXT: lw $1, %got_disp(v8i16)($1)
19411946; N32-NEXT: lsa $1, $2, $1, 1
19421947; N32-NEXT: jr $ra
@@ -1948,7 +1953,8 @@ define void @insert_v8i16_vidx(i32 signext %a) nounwind {
19481953; N64-NEXT: daddu $1, $1, $25
19491954; N64-NEXT: daddiu $1, $1, %lo(%neg(%gp_rel(insert_v8i16_vidx)))
19501955; N64-NEXT: ld $2, %got_disp(i32)($1)
1951- ; N64-NEXT: lwu $2, 0($2)
1956+ ; N64-NEXT: lw $2, 0($2)
1957+ ; N64-NEXT: andi $2, $2, 7
19521958; N64-NEXT: ld $1, %got_disp(v8i16)($1)
19531959; N64-NEXT: dlsa $1, $2, $1, 1
19541960; N64-NEXT: jr $ra
@@ -1971,6 +1977,7 @@ define void @insert_v4i32_vidx(i32 signext %a) nounwind {
19711977; O32-NEXT: addu $1, $2, $25
19721978; O32-NEXT: lw $2, %got(i32)($1)
19731979; O32-NEXT: lw $2, 0($2)
1980+ ; O32-NEXT: andi $2, $2, 3
19741981; O32-NEXT: lw $1, %got(v4i32)($1)
19751982; O32-NEXT: lsa $1, $2, $1, 2
19761983; O32-NEXT: jr $ra
@@ -1983,6 +1990,7 @@ define void @insert_v4i32_vidx(i32 signext %a) nounwind {
19831990; N32-NEXT: addiu $1, $1, %lo(%neg(%gp_rel(insert_v4i32_vidx)))
19841991; N32-NEXT: lw $2, %got_disp(i32)($1)
19851992; N32-NEXT: lw $2, 0($2)
1993+ ; N32-NEXT: andi $2, $2, 3
19861994; N32-NEXT: lw $1, %got_disp(v4i32)($1)
19871995; N32-NEXT: lsa $1, $2, $1, 2
19881996; N32-NEXT: jr $ra
@@ -1994,7 +2002,8 @@ define void @insert_v4i32_vidx(i32 signext %a) nounwind {
19942002; N64-NEXT: daddu $1, $1, $25
19952003; N64-NEXT: daddiu $1, $1, %lo(%neg(%gp_rel(insert_v4i32_vidx)))
19962004; N64-NEXT: ld $2, %got_disp(i32)($1)
1997- ; N64-NEXT: lwu $2, 0($2)
2005+ ; N64-NEXT: lw $2, 0($2)
2006+ ; N64-NEXT: andi $2, $2, 3
19982007; N64-NEXT: ld $1, %got_disp(v4i32)($1)
19992008; N64-NEXT: dlsa $1, $2, $1, 2
20002009; N64-NEXT: jr $ra
@@ -2018,6 +2027,7 @@ define void @insert_v2i64_vidx(i64 signext %a) nounwind {
20182027; O32-NEXT: addu $1, $2, $25
20192028; O32-NEXT: lw $2, %got(i32)($1)
20202029; O32-NEXT: lw $2, 0($2)
2030+ ; O32-NEXT: andi $2, $2, 1
20212031; O32-NEXT: lw $1, %got(v2i64)($1)
20222032; O32-NEXT: lsa $1, $2, $1, 3
20232033; O32-NEXT: sw $5, 4($1)
@@ -2031,6 +2041,7 @@ define void @insert_v2i64_vidx(i64 signext %a) nounwind {
20312041; N32-NEXT: addiu $1, $1, %lo(%neg(%gp_rel(insert_v2i64_vidx)))
20322042; N32-NEXT: lw $2, %got_disp(i32)($1)
20332043; N32-NEXT: lw $2, 0($2)
2044+ ; N32-NEXT: andi $2, $2, 1
20342045; N32-NEXT: lw $1, %got_disp(v2i64)($1)
20352046; N32-NEXT: lsa $1, $2, $1, 3
20362047; N32-NEXT: jr $ra
@@ -2042,7 +2053,8 @@ define void @insert_v2i64_vidx(i64 signext %a) nounwind {
20422053; N64-NEXT: daddu $1, $1, $25
20432054; N64-NEXT: daddiu $1, $1, %lo(%neg(%gp_rel(insert_v2i64_vidx)))
20442055; N64-NEXT: ld $2, %got_disp(i32)($1)
2045- ; N64-NEXT: lwu $2, 0($2)
2056+ ; N64-NEXT: lw $2, 0($2)
2057+ ; N64-NEXT: andi $2, $2, 1
20462058; N64-NEXT: ld $1, %got_disp(v2i64)($1)
20472059; N64-NEXT: dlsa $1, $2, $1, 3
20482060; N64-NEXT: jr $ra
0 commit comments