@@ -95,51 +95,38 @@ define <2 x i64> @vector_add_i64(<2 x i64> %lhs, <2 x i64> %rhs) {
95
95
; CHECK-MVE: @ %bb.0: @ %entry
96
96
; CHECK-MVE-NEXT: .save {r7, lr}
97
97
; CHECK-MVE-NEXT: push {r7, lr}
98
- ; CHECK-MVE-NEXT: vmov d1, r2, r3
99
- ; CHECK-MVE-NEXT: add r2, sp, #8
100
- ; CHECK-MVE-NEXT: vldrw.u32 q1, [r2]
101
- ; CHECK-MVE-NEXT: vmov d0, r0, r1
102
- ; CHECK-MVE-NEXT: vmov r1, s2
103
- ; CHECK-MVE-NEXT: vmov r3, s6
104
- ; CHECK-MVE-NEXT: vmov r0, s3
105
- ; CHECK-MVE-NEXT: vmov r2, s7
106
- ; CHECK-MVE-NEXT: adds.w lr, r1, r3
98
+ ; CHECK-MVE-NEXT: add.w r12, sp, #8
99
+ ; CHECK-MVE-NEXT: vldrw.u32 q0, [r12]
100
+ ; CHECK-MVE-NEXT: vmov lr, s2
101
+ ; CHECK-MVE-NEXT: vmov r12, s3
102
+ ; CHECK-MVE-NEXT: adds.w r2, r2, lr
103
+ ; CHECK-MVE-NEXT: adc.w r12, r12, r3
107
104
; CHECK-MVE-NEXT: vmov r3, s0
108
- ; CHECK-MVE-NEXT: vmov r1, s4
109
- ; CHECK-MVE-NEXT: adc.w r12, r0, r2
110
- ; CHECK-MVE-NEXT: vmov r2, s1
111
- ; CHECK-MVE-NEXT: vmov r0, s5
112
- ; CHECK-MVE-NEXT: adds r1, r1, r3
113
- ; CHECK-MVE-NEXT: vmov q0[2], q0[0], r1, lr
114
- ; CHECK-MVE-NEXT: adcs r0, r2
115
- ; CHECK-MVE-NEXT: vmov q0[3], q0[1], r0, r12
116
- ; CHECK-MVE-NEXT: vmov r0, r1, d0
117
- ; CHECK-MVE-NEXT: vmov r2, r3, d1
105
+ ; CHECK-MVE-NEXT: adds r0, r0, r3
106
+ ; CHECK-MVE-NEXT: vmov q1[2], q1[0], r0, r2
107
+ ; CHECK-MVE-NEXT: vmov r0, s1
108
+ ; CHECK-MVE-NEXT: adcs r0, r1
109
+ ; CHECK-MVE-NEXT: vmov q1[3], q1[1], r0, r12
110
+ ; CHECK-MVE-NEXT: vmov r0, r1, d2
111
+ ; CHECK-MVE-NEXT: vmov r2, r3, d3
118
112
; CHECK-MVE-NEXT: pop {r7, pc}
119
113
;
120
114
; CHECK-BE-LABEL: vector_add_i64:
121
115
; CHECK-BE: @ %bb.0: @ %entry
122
116
; CHECK-BE-NEXT: .save {r7, lr}
123
117
; CHECK-BE-NEXT: push {r7, lr}
124
- ; CHECK-BE-NEXT: vmov d1, r3, r2
125
- ; CHECK-BE-NEXT: add r2, sp, #8
126
- ; CHECK-BE-NEXT: vmov d0, r1, r0
127
- ; CHECK-BE-NEXT: vrev64.32 q1, q0
128
- ; CHECK-BE-NEXT: vldrw.u32 q0, [r2]
129
- ; CHECK-BE-NEXT: vmov r1, s7
130
- ; CHECK-BE-NEXT: vmov r3, s3
131
- ; CHECK-BE-NEXT: vmov r0, s6
132
- ; CHECK-BE-NEXT: vmov r2, s2
133
- ; CHECK-BE-NEXT: adds.w r12, r1, r3
134
- ; CHECK-BE-NEXT: vmov r3, s5
135
- ; CHECK-BE-NEXT: vmov r1, s0
136
- ; CHECK-BE-NEXT: adc.w lr, r0, r2
137
- ; CHECK-BE-NEXT: vmov r0, s1
138
- ; CHECK-BE-NEXT: vmov r2, s4
139
- ; CHECK-BE-NEXT: adds r0, r0, r3
140
- ; CHECK-BE-NEXT: adcs r1, r2
141
- ; CHECK-BE-NEXT: vmov q0[2], q0[0], r1, lr
142
- ; CHECK-BE-NEXT: vmov q0[3], q0[1], r0, r12
118
+ ; CHECK-BE-NEXT: add.w r12, sp, #8
119
+ ; CHECK-BE-NEXT: vldrw.u32 q0, [r12]
120
+ ; CHECK-BE-NEXT: vmov lr, s3
121
+ ; CHECK-BE-NEXT: vmov r12, s2
122
+ ; CHECK-BE-NEXT: adds.w lr, lr, r3
123
+ ; CHECK-BE-NEXT: vmov r3, s0
124
+ ; CHECK-BE-NEXT: adc.w r12, r12, r2
125
+ ; CHECK-BE-NEXT: vmov r2, s1
126
+ ; CHECK-BE-NEXT: adds r1, r1, r2
127
+ ; CHECK-BE-NEXT: adcs r0, r3
128
+ ; CHECK-BE-NEXT: vmov q0[2], q0[0], r0, r12
129
+ ; CHECK-BE-NEXT: vmov q0[3], q0[1], r1, lr
143
130
; CHECK-BE-NEXT: vrev64.32 q1, q0
144
131
; CHECK-BE-NEXT: vmov r1, r0, d2
145
132
; CHECK-BE-NEXT: vmov r3, r2, d3
@@ -149,24 +136,18 @@ define <2 x i64> @vector_add_i64(<2 x i64> %lhs, <2 x i64> %rhs) {
149
136
; CHECK-FP: @ %bb.0: @ %entry
150
137
; CHECK-FP-NEXT: .save {r7, lr}
151
138
; CHECK-FP-NEXT: push {r7, lr}
152
- ; CHECK-FP-NEXT: vmov d1, r2, r3
153
- ; CHECK-FP-NEXT: vmov d0, r0, r1
154
- ; CHECK-FP-NEXT: add r0, sp, #8
155
- ; CHECK-FP-NEXT: vldrw.u32 q1, [r0]
156
- ; CHECK-FP-NEXT: vmov r1, s2
157
- ; CHECK-FP-NEXT: vmov r0, s3
158
- ; CHECK-FP-NEXT: vmov r3, s6
159
- ; CHECK-FP-NEXT: vmov r2, s7
160
- ; CHECK-FP-NEXT: adds.w lr, r1, r3
161
- ; CHECK-FP-NEXT: vmov r3, s0
162
- ; CHECK-FP-NEXT: vmov r1, s4
163
- ; CHECK-FP-NEXT: adc.w r12, r0, r2
164
- ; CHECK-FP-NEXT: vmov r2, s1
165
- ; CHECK-FP-NEXT: vmov r0, s5
166
- ; CHECK-FP-NEXT: adds r1, r1, r3
167
- ; CHECK-FP-NEXT: vmov q0[2], q0[0], r1, lr
168
- ; CHECK-FP-NEXT: adcs r0, r2
169
- ; CHECK-FP-NEXT: vmov q0[3], q0[1], r0, r12
139
+ ; CHECK-FP-NEXT: add.w r12, sp, #8
140
+ ; CHECK-FP-NEXT: vldrw.u32 q0, [r12]
141
+ ; CHECK-FP-NEXT: vmov lr, s2
142
+ ; CHECK-FP-NEXT: vmov r12, s3
143
+ ; CHECK-FP-NEXT: adds.w lr, lr, r2
144
+ ; CHECK-FP-NEXT: vmov r2, s0
145
+ ; CHECK-FP-NEXT: adc.w r12, r12, r3
146
+ ; CHECK-FP-NEXT: vmov r3, s1
147
+ ; CHECK-FP-NEXT: adds r0, r0, r2
148
+ ; CHECK-FP-NEXT: adcs r1, r3
149
+ ; CHECK-FP-NEXT: vmov q0[2], q0[0], r0, lr
150
+ ; CHECK-FP-NEXT: vmov q0[3], q0[1], r1, r12
170
151
; CHECK-FP-NEXT: vmov r0, r1, d0
171
152
; CHECK-FP-NEXT: vmov r2, r3, d1
172
153
; CHECK-FP-NEXT: pop {r7, pc}
0 commit comments