@@ -66,6 +66,7 @@ define <2 x double> @pow_v2f64(<2 x double> %a, <2 x double> %b) {
6666; CHECK-SD-NEXT: mov d0, v0.d[1]
6767; CHECK-SD-NEXT: mov d1, v1.d[1]
6868; CHECK-SD-NEXT: bl pow
69+ ; CHECK-SD-NEXT: // kill: def $d0 killed $d0 def $q0
6970; CHECK-SD-NEXT: str q0, [sp, #32] // 16-byte Folded Spill
7071; CHECK-SD-NEXT: ldp q0, q1, [sp] // 32-byte Folded Reload
7172; CHECK-SD-NEXT: // kill: def $d0 killed $d0 killed $q0
@@ -92,9 +93,10 @@ define <2 x double> @pow_v2f64(<2 x double> %a, <2 x double> %b) {
9293; CHECK-GI-NEXT: // kill: def $d0 killed $d0 killed $q0
9394; CHECK-GI-NEXT: // kill: def $d1 killed $d1 killed $q1
9495; CHECK-GI-NEXT: bl pow
96+ ; CHECK-GI-NEXT: // kill: def $d0 killed $d0 def $q0
9597; CHECK-GI-NEXT: str q0, [sp] // 16-byte Folded Spill
96- ; CHECK-GI-NEXT: fmov d0, d8
9798; CHECK-GI-NEXT: fmov d1, d9
99+ ; CHECK-GI-NEXT: fmov d0, d8
98100; CHECK-GI-NEXT: bl pow
99101; CHECK-GI-NEXT: ldr q1, [sp] // 16-byte Folded Reload
100102; CHECK-GI-NEXT: // kill: def $d0 killed $d0 def $q0
@@ -198,6 +200,7 @@ define <4 x double> @pow_v4f64(<4 x double> %a, <4 x double> %b) {
198200; CHECK-SD-NEXT: stp q1, q3, [sp, #48] // 32-byte Folded Spill
199201; CHECK-SD-NEXT: mov d1, v2.d[1]
200202; CHECK-SD-NEXT: bl pow
203+ ; CHECK-SD-NEXT: // kill: def $d0 killed $d0 def $q0
201204; CHECK-SD-NEXT: str q0, [sp, #32] // 16-byte Folded Spill
202205; CHECK-SD-NEXT: ldp q0, q1, [sp] // 32-byte Folded Reload
203206; CHECK-SD-NEXT: // kill: def $d0 killed $d0 killed $q0
@@ -211,6 +214,7 @@ define <4 x double> @pow_v4f64(<4 x double> %a, <4 x double> %b) {
211214; CHECK-SD-NEXT: mov d0, v0.d[1]
212215; CHECK-SD-NEXT: mov d1, v1.d[1]
213216; CHECK-SD-NEXT: bl pow
217+ ; CHECK-SD-NEXT: // kill: def $d0 killed $d0 def $q0
214218; CHECK-SD-NEXT: str q0, [sp, #16] // 16-byte Folded Spill
215219; CHECK-SD-NEXT: ldp q0, q1, [sp, #48] // 32-byte Folded Reload
216220; CHECK-SD-NEXT: // kill: def $d0 killed $d0 killed $q0
@@ -246,19 +250,22 @@ define <4 x double> @pow_v4f64(<4 x double> %a, <4 x double> %b) {
246250; CHECK-GI-NEXT: // kill: def $d1 killed $d1 killed $q1
247251; CHECK-GI-NEXT: mov d9, v4.d[1]
248252; CHECK-GI-NEXT: bl pow
253+ ; CHECK-GI-NEXT: // kill: def $d0 killed $d0 def $q0
249254; CHECK-GI-NEXT: str q0, [sp, #48] // 16-byte Folded Spill
250- ; CHECK-GI-NEXT: fmov d0, d8
251255; CHECK-GI-NEXT: fmov d1, d10
256+ ; CHECK-GI-NEXT: fmov d0, d8
252257; CHECK-GI-NEXT: bl pow
258+ ; CHECK-GI-NEXT: // kill: def $d0 killed $d0 def $q0
253259; CHECK-GI-NEXT: str q0, [sp, #16] // 16-byte Folded Spill
254- ; CHECK-GI-NEXT: ldr q0, [sp, #32] // 16-byte Folded Reload
255260; CHECK-GI-NEXT: ldr q1, [sp] // 16-byte Folded Reload
256- ; CHECK-GI-NEXT: // kill: def $d0 killed $d0 killed $q0
261+ ; CHECK-GI-NEXT: ldr q0, [sp, #32] // 16-byte Folded Reload
257262; CHECK-GI-NEXT: // kill: def $d1 killed $d1 killed $q1
263+ ; CHECK-GI-NEXT: // kill: def $d0 killed $d0 killed $q0
258264; CHECK-GI-NEXT: bl pow
265+ ; CHECK-GI-NEXT: // kill: def $d0 killed $d0 def $q0
259266; CHECK-GI-NEXT: str q0, [sp, #32] // 16-byte Folded Spill
260- ; CHECK-GI-NEXT: fmov d0, d9
261267; CHECK-GI-NEXT: fmov d1, d11
268+ ; CHECK-GI-NEXT: fmov d0, d9
262269; CHECK-GI-NEXT: bl pow
263270; CHECK-GI-NEXT: ldr q2, [sp, #48] // 16-byte Folded Reload
264271; CHECK-GI-NEXT: ldr q1, [sp, #16] // 16-byte Folded Reload
@@ -290,7 +297,8 @@ define <2 x float> @pow_v2f32(<2 x float> %a, <2 x float> %b) {
290297; CHECK-SD-NEXT: mov s0, v0.s[1]
291298; CHECK-SD-NEXT: mov s1, v1.s[1]
292299; CHECK-SD-NEXT: bl powf
293- ; CHECK-SD-NEXT: str d0, [sp, #32] // 16-byte Folded Spill
300+ ; CHECK-SD-NEXT: // kill: def $s0 killed $s0 def $q0
301+ ; CHECK-SD-NEXT: str q0, [sp, #32] // 16-byte Folded Spill
294302; CHECK-SD-NEXT: ldp q0, q1, [sp] // 32-byte Folded Reload
295303; CHECK-SD-NEXT: // kill: def $s0 killed $s0 killed $q0
296304; CHECK-SD-NEXT: // kill: def $s1 killed $s1 killed $q1
@@ -319,9 +327,10 @@ define <2 x float> @pow_v2f32(<2 x float> %a, <2 x float> %b) {
319327; CHECK-GI-NEXT: // kill: def $s0 killed $s0 killed $q0
320328; CHECK-GI-NEXT: // kill: def $s1 killed $s1 killed $q1
321329; CHECK-GI-NEXT: bl powf
322- ; CHECK-GI-NEXT: str d0, [sp] // 16-byte Folded Spill
323- ; CHECK-GI-NEXT: fmov s0, s8
330+ ; CHECK-GI-NEXT: // kill: def $s0 killed $s0 def $q0
331+ ; CHECK-GI-NEXT: str q0, [sp] // 16-byte Folded Spill
324332; CHECK-GI-NEXT: fmov s1, s9
333+ ; CHECK-GI-NEXT: fmov s0, s8
325334; CHECK-GI-NEXT: bl powf
326335; CHECK-GI-NEXT: ldr q1, [sp] // 16-byte Folded Reload
327336; CHECK-GI-NEXT: // kill: def $s0 killed $s0 def $q0
@@ -347,7 +356,8 @@ define <3 x float> @pow_v3f32(<3 x float> %a, <3 x float> %b) {
347356; CHECK-SD-NEXT: mov s0, v0.s[1]
348357; CHECK-SD-NEXT: mov s1, v1.s[1]
349358; CHECK-SD-NEXT: bl powf
350- ; CHECK-SD-NEXT: str d0, [sp] // 16-byte Folded Spill
359+ ; CHECK-SD-NEXT: // kill: def $s0 killed $s0 def $q0
360+ ; CHECK-SD-NEXT: str q0, [sp] // 16-byte Folded Spill
351361; CHECK-SD-NEXT: ldp q0, q1, [sp, #16] // 32-byte Folded Reload
352362; CHECK-SD-NEXT: // kill: def $s0 killed $s0 killed $q0
353363; CHECK-SD-NEXT: // kill: def $s1 killed $s1 killed $q1
@@ -387,13 +397,15 @@ define <3 x float> @pow_v3f32(<3 x float> %a, <3 x float> %b) {
387397; CHECK-GI-NEXT: mov s11, v1.s[2]
388398; CHECK-GI-NEXT: // kill: def $s1 killed $s1 killed $q1
389399; CHECK-GI-NEXT: bl powf
390- ; CHECK-GI-NEXT: str d0, [sp, #16] // 16-byte Folded Spill
391- ; CHECK-GI-NEXT: fmov s0, s8
400+ ; CHECK-GI-NEXT: // kill: def $s0 killed $s0 def $q0
401+ ; CHECK-GI-NEXT: str q0, [sp, #16] // 16-byte Folded Spill
392402; CHECK-GI-NEXT: fmov s1, s10
403+ ; CHECK-GI-NEXT: fmov s0, s8
393404; CHECK-GI-NEXT: bl powf
394- ; CHECK-GI-NEXT: str d0, [sp] // 16-byte Folded Spill
395- ; CHECK-GI-NEXT: fmov s0, s9
405+ ; CHECK-GI-NEXT: // kill: def $s0 killed $s0 def $q0
406+ ; CHECK-GI-NEXT: str q0, [sp] // 16-byte Folded Spill
396407; CHECK-GI-NEXT: fmov s1, s11
408+ ; CHECK-GI-NEXT: fmov s0, s9
397409; CHECK-GI-NEXT: bl powf
398410; CHECK-GI-NEXT: ldp q2, q1, [sp] // 32-byte Folded Reload
399411; CHECK-GI-NEXT: // kill: def $s0 killed $s0 def $q0
@@ -422,7 +434,8 @@ define <4 x float> @pow_v4f32(<4 x float> %a, <4 x float> %b) {
422434; CHECK-SD-NEXT: mov s0, v0.s[1]
423435; CHECK-SD-NEXT: mov s1, v1.s[1]
424436; CHECK-SD-NEXT: bl powf
425- ; CHECK-SD-NEXT: str d0, [sp] // 16-byte Folded Spill
437+ ; CHECK-SD-NEXT: // kill: def $s0 killed $s0 def $q0
438+ ; CHECK-SD-NEXT: str q0, [sp] // 16-byte Folded Spill
426439; CHECK-SD-NEXT: ldp q0, q1, [sp, #16] // 32-byte Folded Reload
427440; CHECK-SD-NEXT: // kill: def $s0 killed $s0 killed $q0
428441; CHECK-SD-NEXT: // kill: def $s1 killed $s1 killed $q1
@@ -475,17 +488,20 @@ define <4 x float> @pow_v4f32(<4 x float> %a, <4 x float> %b) {
475488; CHECK-GI-NEXT: mov s13, v1.s[3]
476489; CHECK-GI-NEXT: // kill: def $s1 killed $s1 killed $q1
477490; CHECK-GI-NEXT: bl powf
478- ; CHECK-GI-NEXT: str d0, [sp, #32] // 16-byte Folded Spill
479- ; CHECK-GI-NEXT: fmov s0, s8
491+ ; CHECK-GI-NEXT: // kill: def $s0 killed $s0 def $q0
492+ ; CHECK-GI-NEXT: str q0, [sp, #32] // 16-byte Folded Spill
480493; CHECK-GI-NEXT: fmov s1, s11
494+ ; CHECK-GI-NEXT: fmov s0, s8
481495; CHECK-GI-NEXT: bl powf
482- ; CHECK-GI-NEXT: str d0, [sp, #16] // 16-byte Folded Spill
483- ; CHECK-GI-NEXT: fmov s0, s9
496+ ; CHECK-GI-NEXT: // kill: def $s0 killed $s0 def $q0
497+ ; CHECK-GI-NEXT: str q0, [sp, #16] // 16-byte Folded Spill
484498; CHECK-GI-NEXT: fmov s1, s12
499+ ; CHECK-GI-NEXT: fmov s0, s9
485500; CHECK-GI-NEXT: bl powf
486- ; CHECK-GI-NEXT: str d0, [sp] // 16-byte Folded Spill
487- ; CHECK-GI-NEXT: fmov s0, s10
501+ ; CHECK-GI-NEXT: // kill: def $s0 killed $s0 def $q0
502+ ; CHECK-GI-NEXT: str q0, [sp] // 16-byte Folded Spill
488503; CHECK-GI-NEXT: fmov s1, s13
504+ ; CHECK-GI-NEXT: fmov s0, s10
489505; CHECK-GI-NEXT: bl powf
490506; CHECK-GI-NEXT: ldp q2, q1, [sp, #16] // 32-byte Folded Reload
491507; CHECK-GI-NEXT: // kill: def $s0 killed $s0 def $q0
@@ -517,7 +533,8 @@ define <8 x float> @pow_v8f32(<8 x float> %a, <8 x float> %b) {
517533; CHECK-SD-NEXT: stp q1, q3, [sp, #32] // 32-byte Folded Spill
518534; CHECK-SD-NEXT: mov s1, v2.s[1]
519535; CHECK-SD-NEXT: bl powf
520- ; CHECK-SD-NEXT: str d0, [sp, #64] // 16-byte Folded Spill
536+ ; CHECK-SD-NEXT: // kill: def $s0 killed $s0 def $q0
537+ ; CHECK-SD-NEXT: str q0, [sp, #64] // 16-byte Folded Spill
521538; CHECK-SD-NEXT: ldp q0, q1, [sp] // 32-byte Folded Reload
522539; CHECK-SD-NEXT: // kill: def $s0 killed $s0 killed $q0
523540; CHECK-SD-NEXT: // kill: def $s1 killed $s1 killed $q1
@@ -546,7 +563,8 @@ define <8 x float> @pow_v8f32(<8 x float> %a, <8 x float> %b) {
546563; CHECK-SD-NEXT: mov s0, v0.s[1]
547564; CHECK-SD-NEXT: mov s1, v1.s[1]
548565; CHECK-SD-NEXT: bl powf
549- ; CHECK-SD-NEXT: str d0, [sp, #16] // 16-byte Folded Spill
566+ ; CHECK-SD-NEXT: // kill: def $s0 killed $s0 def $q0
567+ ; CHECK-SD-NEXT: str q0, [sp, #16] // 16-byte Folded Spill
550568; CHECK-SD-NEXT: ldp q0, q1, [sp, #32] // 32-byte Folded Reload
551569; CHECK-SD-NEXT: // kill: def $s0 killed $s0 killed $q0
552570; CHECK-SD-NEXT: // kill: def $s1 killed $s1 killed $q1
@@ -614,32 +632,39 @@ define <8 x float> @pow_v8f32(<8 x float> %a, <8 x float> %b) {
614632; CHECK-GI-NEXT: mov s2, v3.s[3]
615633; CHECK-GI-NEXT: stp s2, s5, [sp, #200] // 8-byte Folded Spill
616634; CHECK-GI-NEXT: bl powf
617- ; CHECK-GI-NEXT: str d0, [sp, #96] // 16-byte Folded Spill
618- ; CHECK-GI-NEXT: fmov s0, s8
635+ ; CHECK-GI-NEXT: // kill: def $s0 killed $s0 def $q0
636+ ; CHECK-GI-NEXT: str q0, [sp, #96] // 16-byte Folded Spill
619637; CHECK-GI-NEXT: fmov s1, s14
638+ ; CHECK-GI-NEXT: fmov s0, s8
620639; CHECK-GI-NEXT: bl powf
621- ; CHECK-GI-NEXT: str d0, [sp, #32] // 16-byte Folded Spill
622- ; CHECK-GI-NEXT: fmov s0, s9
640+ ; CHECK-GI-NEXT: // kill: def $s0 killed $s0 def $q0
641+ ; CHECK-GI-NEXT: str q0, [sp, #32] // 16-byte Folded Spill
623642; CHECK-GI-NEXT: fmov s1, s15
643+ ; CHECK-GI-NEXT: fmov s0, s9
624644; CHECK-GI-NEXT: bl powf
625- ; CHECK-GI-NEXT: str d0, [sp, #80] // 16-byte Folded Spill
626- ; CHECK-GI-NEXT: fmov s0, s10
645+ ; CHECK-GI-NEXT: // kill: def $s0 killed $s0 def $q0
646+ ; CHECK-GI-NEXT: str q0, [sp, #80] // 16-byte Folded Spill
627647; CHECK-GI-NEXT: fmov s1, s13
648+ ; CHECK-GI-NEXT: fmov s0, s10
628649; CHECK-GI-NEXT: bl powf
629- ; CHECK-GI-NEXT: str d0, [sp, #64] // 16-byte Folded Spill
650+ ; CHECK-GI-NEXT: // kill: def $s0 killed $s0 def $q0
651+ ; CHECK-GI-NEXT: str q0, [sp, #64] // 16-byte Folded Spill
630652; CHECK-GI-NEXT: ldp q1, q0, [sp] // 32-byte Folded Reload
631653; CHECK-GI-NEXT: // kill: def $s0 killed $s0 killed $q0
632654; CHECK-GI-NEXT: // kill: def $s1 killed $s1 killed $q1
633655; CHECK-GI-NEXT: bl powf
634656; CHECK-GI-NEXT: fmov s1, s12
635- ; CHECK-GI-NEXT: str d0, [sp, #16] // 16-byte Folded Spill
657+ ; CHECK-GI-NEXT: // kill: def $s0 killed $s0 def $q0
658+ ; CHECK-GI-NEXT: str q0, [sp, #16] // 16-byte Folded Spill
636659; CHECK-GI-NEXT: ldr s0, [sp, #48] // 4-byte Folded Reload
637660; CHECK-GI-NEXT: bl powf
638661; CHECK-GI-NEXT: fmov s1, s11
639- ; CHECK-GI-NEXT: str d0, [sp, #48] // 16-byte Folded Spill
662+ ; CHECK-GI-NEXT: // kill: def $s0 killed $s0 def $q0
663+ ; CHECK-GI-NEXT: str q0, [sp, #48] // 16-byte Folded Spill
640664; CHECK-GI-NEXT: ldr s0, [sp, #112] // 4-byte Folded Reload
641665; CHECK-GI-NEXT: bl powf
642- ; CHECK-GI-NEXT: str d0, [sp, #112] // 16-byte Folded Spill
666+ ; CHECK-GI-NEXT: // kill: def $s0 killed $s0 def $q0
667+ ; CHECK-GI-NEXT: str q0, [sp, #112] // 16-byte Folded Spill
643668; CHECK-GI-NEXT: ldp s1, s0, [sp, #200] // 8-byte Folded Reload
644669; CHECK-GI-NEXT: bl powf
645670; CHECK-GI-NEXT: ldp q3, q2, [sp, #16] // 32-byte Folded Reload
0 commit comments