@@ -16,78 +16,79 @@ define <8 x float> @powi_v8f32(<8 x float> %va, i32 %b) nounwind {
1616; CHECK-NEXT: move $a0, $fp
1717; CHECK-NEXT: pcaddu18i $ra, %call36(__powisf2)
1818; CHECK-NEXT: jirl $ra, $ra, 0
19- ; CHECK-NEXT: movfr2gr.s $a0, $fa0
20- ; CHECK-NEXT: xvinsgr2vr .w $xr0, $a0 , 0
19+ ; CHECK-NEXT: # kill: def $f0 killed $f0 def $xr0
20+ ; CHECK-NEXT: xvinsve0 .w $xr0, $xr0 , 0
2121; CHECK-NEXT: xvst $xr0, $sp, 32 # 32-byte Folded Spill
2222; CHECK-NEXT: xvld $xr0, $sp, 0 # 32-byte Folded Reload
2323; CHECK-NEXT: xvpickve2gr.w $a0, $xr0, 1
2424; CHECK-NEXT: movgr2fr.w $fa0, $a0
2525; CHECK-NEXT: move $a0, $fp
2626; CHECK-NEXT: pcaddu18i $ra, %call36(__powisf2)
2727; CHECK-NEXT: jirl $ra, $ra, 0
28- ; CHECK-NEXT: movfr2gr.s $a0, $fa0
29- ; CHECK-NEXT: xvld $xr0 , $sp, 32 # 32-byte Folded Reload
30- ; CHECK-NEXT: xvinsgr2vr .w $xr0 , $a0 , 1
31- ; CHECK-NEXT: xvst $xr0 , $sp, 32 # 32-byte Folded Spill
28+ ; CHECK-NEXT: # kill: def $f0 killed $f0 def $xr0
29+ ; CHECK-NEXT: xvld $xr1 , $sp, 32 # 32-byte Folded Reload
30+ ; CHECK-NEXT: xvinsve0 .w $xr1 , $xr0 , 1
31+ ; CHECK-NEXT: xvst $xr1 , $sp, 32 # 32-byte Folded Spill
3232; CHECK-NEXT: xvld $xr0, $sp, 0 # 32-byte Folded Reload
3333; CHECK-NEXT: xvpickve2gr.w $a0, $xr0, 2
3434; CHECK-NEXT: movgr2fr.w $fa0, $a0
3535; CHECK-NEXT: move $a0, $fp
3636; CHECK-NEXT: pcaddu18i $ra, %call36(__powisf2)
3737; CHECK-NEXT: jirl $ra, $ra, 0
38- ; CHECK-NEXT: movfr2gr.s $a0, $fa0
39- ; CHECK-NEXT: xvld $xr0 , $sp, 32 # 32-byte Folded Reload
40- ; CHECK-NEXT: xvinsgr2vr .w $xr0 , $a0 , 2
41- ; CHECK-NEXT: xvst $xr0 , $sp, 32 # 32-byte Folded Spill
38+ ; CHECK-NEXT: # kill: def $f0 killed $f0 def $xr0
39+ ; CHECK-NEXT: xvld $xr1 , $sp, 32 # 32-byte Folded Reload
40+ ; CHECK-NEXT: xvinsve0 .w $xr1 , $xr0 , 2
41+ ; CHECK-NEXT: xvst $xr1 , $sp, 32 # 32-byte Folded Spill
4242; CHECK-NEXT: xvld $xr0, $sp, 0 # 32-byte Folded Reload
4343; CHECK-NEXT: xvpickve2gr.w $a0, $xr0, 3
4444; CHECK-NEXT: movgr2fr.w $fa0, $a0
4545; CHECK-NEXT: move $a0, $fp
4646; CHECK-NEXT: pcaddu18i $ra, %call36(__powisf2)
4747; CHECK-NEXT: jirl $ra, $ra, 0
48- ; CHECK-NEXT: movfr2gr.s $a0, $fa0
49- ; CHECK-NEXT: xvld $xr0 , $sp, 32 # 32-byte Folded Reload
50- ; CHECK-NEXT: xvinsgr2vr .w $xr0 , $a0 , 3
51- ; CHECK-NEXT: xvst $xr0 , $sp, 32 # 32-byte Folded Spill
48+ ; CHECK-NEXT: # kill: def $f0 killed $f0 def $xr0
49+ ; CHECK-NEXT: xvld $xr1 , $sp, 32 # 32-byte Folded Reload
50+ ; CHECK-NEXT: xvinsve0 .w $xr1 , $xr0 , 3
51+ ; CHECK-NEXT: xvst $xr1 , $sp, 32 # 32-byte Folded Spill
5252; CHECK-NEXT: xvld $xr0, $sp, 0 # 32-byte Folded Reload
5353; CHECK-NEXT: xvpickve2gr.w $a0, $xr0, 4
5454; CHECK-NEXT: movgr2fr.w $fa0, $a0
5555; CHECK-NEXT: move $a0, $fp
5656; CHECK-NEXT: pcaddu18i $ra, %call36(__powisf2)
5757; CHECK-NEXT: jirl $ra, $ra, 0
58- ; CHECK-NEXT: movfr2gr.s $a0, $fa0
59- ; CHECK-NEXT: xvld $xr0 , $sp, 32 # 32-byte Folded Reload
60- ; CHECK-NEXT: xvinsgr2vr .w $xr0 , $a0 , 4
61- ; CHECK-NEXT: xvst $xr0 , $sp, 32 # 32-byte Folded Spill
58+ ; CHECK-NEXT: # kill: def $f0 killed $f0 def $xr0
59+ ; CHECK-NEXT: xvld $xr1 , $sp, 32 # 32-byte Folded Reload
60+ ; CHECK-NEXT: xvinsve0 .w $xr1 , $xr0 , 4
61+ ; CHECK-NEXT: xvst $xr1 , $sp, 32 # 32-byte Folded Spill
6262; CHECK-NEXT: xvld $xr0, $sp, 0 # 32-byte Folded Reload
6363; CHECK-NEXT: xvpickve2gr.w $a0, $xr0, 5
6464; CHECK-NEXT: movgr2fr.w $fa0, $a0
6565; CHECK-NEXT: move $a0, $fp
6666; CHECK-NEXT: pcaddu18i $ra, %call36(__powisf2)
6767; CHECK-NEXT: jirl $ra, $ra, 0
68- ; CHECK-NEXT: movfr2gr.s $a0, $fa0
69- ; CHECK-NEXT: xvld $xr0 , $sp, 32 # 32-byte Folded Reload
70- ; CHECK-NEXT: xvinsgr2vr .w $xr0 , $a0 , 5
71- ; CHECK-NEXT: xvst $xr0 , $sp, 32 # 32-byte Folded Spill
68+ ; CHECK-NEXT: # kill: def $f0 killed $f0 def $xr0
69+ ; CHECK-NEXT: xvld $xr1 , $sp, 32 # 32-byte Folded Reload
70+ ; CHECK-NEXT: xvinsve0 .w $xr1 , $xr0 , 5
71+ ; CHECK-NEXT: xvst $xr1 , $sp, 32 # 32-byte Folded Spill
7272; CHECK-NEXT: xvld $xr0, $sp, 0 # 32-byte Folded Reload
7373; CHECK-NEXT: xvpickve2gr.w $a0, $xr0, 6
7474; CHECK-NEXT: movgr2fr.w $fa0, $a0
7575; CHECK-NEXT: move $a0, $fp
7676; CHECK-NEXT: pcaddu18i $ra, %call36(__powisf2)
7777; CHECK-NEXT: jirl $ra, $ra, 0
78- ; CHECK-NEXT: movfr2gr.s $a0, $fa0
79- ; CHECK-NEXT: xvld $xr0 , $sp, 32 # 32-byte Folded Reload
80- ; CHECK-NEXT: xvinsgr2vr .w $xr0 , $a0 , 6
81- ; CHECK-NEXT: xvst $xr0 , $sp, 32 # 32-byte Folded Spill
78+ ; CHECK-NEXT: # kill: def $f0 killed $f0 def $xr0
79+ ; CHECK-NEXT: xvld $xr1 , $sp, 32 # 32-byte Folded Reload
80+ ; CHECK-NEXT: xvinsve0 .w $xr1 , $xr0 , 6
81+ ; CHECK-NEXT: xvst $xr1 , $sp, 32 # 32-byte Folded Spill
8282; CHECK-NEXT: xvld $xr0, $sp, 0 # 32-byte Folded Reload
8383; CHECK-NEXT: xvpickve2gr.w $a0, $xr0, 7
8484; CHECK-NEXT: movgr2fr.w $fa0, $a0
8585; CHECK-NEXT: move $a0, $fp
8686; CHECK-NEXT: pcaddu18i $ra, %call36(__powisf2)
8787; CHECK-NEXT: jirl $ra, $ra, 0
88- ; CHECK-NEXT: movfr2gr.s $a0, $fa0
89- ; CHECK-NEXT: xvld $xr0, $sp, 32 # 32-byte Folded Reload
90- ; CHECK-NEXT: xvinsgr2vr.w $xr0, $a0, 7
88+ ; CHECK-NEXT: # kill: def $f0 killed $f0 def $xr0
89+ ; CHECK-NEXT: xvld $xr1, $sp, 32 # 32-byte Folded Reload
90+ ; CHECK-NEXT: xvinsve0.w $xr1, $xr0, 7
91+ ; CHECK-NEXT: xvori.b $xr0, $xr1, 0
9192; CHECK-NEXT: ld.d $fp, $sp, 64 # 8-byte Folded Reload
9293; CHECK-NEXT: ld.d $ra, $sp, 72 # 8-byte Folded Reload
9394; CHECK-NEXT: addi.d $sp, $sp, 80
@@ -112,38 +113,39 @@ define <4 x double> @powi_v4f64(<4 x double> %va, i32 %b) nounwind {
112113; CHECK-NEXT: move $a0, $fp
113114; CHECK-NEXT: pcaddu18i $ra, %call36(__powidf2)
114115; CHECK-NEXT: jirl $ra, $ra, 0
115- ; CHECK-NEXT: movfr2gr.d $a0, $fa0
116- ; CHECK-NEXT: xvinsgr2vr .d $xr0, $a0 , 0
116+ ; CHECK-NEXT: # kill: def $f0_64 killed $f0_64 def $xr0
117+ ; CHECK-NEXT: xvinsve0 .d $xr0, $xr0 , 0
117118; CHECK-NEXT: xvst $xr0, $sp, 32 # 32-byte Folded Spill
118119; CHECK-NEXT: xvld $xr0, $sp, 0 # 32-byte Folded Reload
119120; CHECK-NEXT: xvpickve2gr.d $a0, $xr0, 1
120121; CHECK-NEXT: movgr2fr.d $fa0, $a0
121122; CHECK-NEXT: move $a0, $fp
122123; CHECK-NEXT: pcaddu18i $ra, %call36(__powidf2)
123124; CHECK-NEXT: jirl $ra, $ra, 0
124- ; CHECK-NEXT: movfr2gr.d $a0, $fa0
125- ; CHECK-NEXT: xvld $xr0 , $sp, 32 # 32-byte Folded Reload
126- ; CHECK-NEXT: xvinsgr2vr .d $xr0 , $a0 , 1
127- ; CHECK-NEXT: xvst $xr0 , $sp, 32 # 32-byte Folded Spill
125+ ; CHECK-NEXT: # kill: def $f0_64 killed $f0_64 def $xr0
126+ ; CHECK-NEXT: xvld $xr1 , $sp, 32 # 32-byte Folded Reload
127+ ; CHECK-NEXT: xvinsve0 .d $xr1 , $xr0 , 1
128+ ; CHECK-NEXT: xvst $xr1 , $sp, 32 # 32-byte Folded Spill
128129; CHECK-NEXT: xvld $xr0, $sp, 0 # 32-byte Folded Reload
129130; CHECK-NEXT: xvpickve2gr.d $a0, $xr0, 2
130131; CHECK-NEXT: movgr2fr.d $fa0, $a0
131132; CHECK-NEXT: move $a0, $fp
132133; CHECK-NEXT: pcaddu18i $ra, %call36(__powidf2)
133134; CHECK-NEXT: jirl $ra, $ra, 0
134- ; CHECK-NEXT: movfr2gr.d $a0, $fa0
135- ; CHECK-NEXT: xvld $xr0 , $sp, 32 # 32-byte Folded Reload
136- ; CHECK-NEXT: xvinsgr2vr .d $xr0 , $a0 , 2
137- ; CHECK-NEXT: xvst $xr0 , $sp, 32 # 32-byte Folded Spill
135+ ; CHECK-NEXT: # kill: def $f0_64 killed $f0_64 def $xr0
136+ ; CHECK-NEXT: xvld $xr1 , $sp, 32 # 32-byte Folded Reload
137+ ; CHECK-NEXT: xvinsve0 .d $xr1 , $xr0 , 2
138+ ; CHECK-NEXT: xvst $xr1 , $sp, 32 # 32-byte Folded Spill
138139; CHECK-NEXT: xvld $xr0, $sp, 0 # 32-byte Folded Reload
139140; CHECK-NEXT: xvpickve2gr.d $a0, $xr0, 3
140141; CHECK-NEXT: movgr2fr.d $fa0, $a0
141142; CHECK-NEXT: move $a0, $fp
142143; CHECK-NEXT: pcaddu18i $ra, %call36(__powidf2)
143144; CHECK-NEXT: jirl $ra, $ra, 0
144- ; CHECK-NEXT: movfr2gr.d $a0, $fa0
145- ; CHECK-NEXT: xvld $xr0, $sp, 32 # 32-byte Folded Reload
146- ; CHECK-NEXT: xvinsgr2vr.d $xr0, $a0, 3
145+ ; CHECK-NEXT: # kill: def $f0_64 killed $f0_64 def $xr0
146+ ; CHECK-NEXT: xvld $xr1, $sp, 32 # 32-byte Folded Reload
147+ ; CHECK-NEXT: xvinsve0.d $xr1, $xr0, 3
148+ ; CHECK-NEXT: xvori.b $xr0, $xr1, 0
147149; CHECK-NEXT: ld.d $fp, $sp, 64 # 8-byte Folded Reload
148150; CHECK-NEXT: ld.d $ra, $sp, 72 # 8-byte Folded Reload
149151; CHECK-NEXT: addi.d $sp, $sp, 80
0 commit comments