@@ -31,19 +31,24 @@ entry:
3131define arm_aapcs_vfpcc <4 x i16 > @complex_add_v4i16 (<4 x i16 > %a , <4 x i16 > %b ) {
3232; CHECK-LABEL: complex_add_v4i16:
3333; CHECK: @ %bb.0: @ %entry
34- ; CHECK-NEXT: .save {r4, lr}
35- ; CHECK-NEXT: push {r4, lr}
36- ; CHECK-NEXT: vmov r12, r1, d1
37- ; CHECK-NEXT: vmov r2, lr, d3
38- ; CHECK-NEXT: vmov r3, r4, d2
34+ ; CHECK-NEXT: vrev64.32 q2, q0
35+ ; CHECK-NEXT: vmov r1, s6
36+ ; CHECK-NEXT: vmov r0, s10
37+ ; CHECK-NEXT: vrev64.32 q3, q1
38+ ; CHECK-NEXT: vmov r2, s4
39+ ; CHECK-NEXT: subs r0, r1, r0
40+ ; CHECK-NEXT: vmov r1, s8
3941; CHECK-NEXT: subs r1, r2, r1
40- ; CHECK-NEXT: vmov r2, r0, d0
41- ; CHECK-NEXT: subs r0, r3, r0
42- ; CHECK-NEXT: vmov q0[2], q0[0], r0, r1
43- ; CHECK-NEXT: add.w r0, lr, r12
44- ; CHECK-NEXT: adds r1, r4, r2
45- ; CHECK-NEXT: vmov q0[3], q0[1], r1, r0
46- ; CHECK-NEXT: pop {r4, pc}
42+ ; CHECK-NEXT: vmov r2, s0
43+ ; CHECK-NEXT: vmov q2[2], q2[0], r1, r0
44+ ; CHECK-NEXT: vmov r0, s14
45+ ; CHECK-NEXT: vmov r1, s2
46+ ; CHECK-NEXT: add r0, r1
47+ ; CHECK-NEXT: vmov r1, s12
48+ ; CHECK-NEXT: add r1, r2
49+ ; CHECK-NEXT: vmov q2[3], q2[1], r1, r0
50+ ; CHECK-NEXT: vmov q0, q2
51+ ; CHECK-NEXT: bx lr
4752entry:
4853 %a.real = shufflevector <4 x i16 > %a , <4 x i16 > zeroinitializer , <2 x i32 > <i32 0 , i32 2 >
4954 %a.imag = shufflevector <4 x i16 > %a , <4 x i16 > zeroinitializer , <2 x i32 > <i32 1 , i32 3 >
0 commit comments