@@ -9,12 +9,12 @@ define <8 x i8> @vtrni8(<8 x i8>* %A, <8 x i8>* %B) nounwind {
9
9
; CHECK-NEXT: vadd.i8 d16, d17, d16
10
10
; CHECK-NEXT: vmov r0, r1, d16
11
11
; CHECK-NEXT: mov pc, lr
12
- %tmp1 = load <8 x i8 >, <8 x i8 >* %A
13
- %tmp2 = load <8 x i8 >, <8 x i8 >* %B
14
- %tmp3 = shufflevector <8 x i8 > %tmp1 , <8 x i8 > %tmp2 , <8 x i32 > <i32 0 , i32 8 , i32 2 , i32 10 , i32 4 , i32 12 , i32 6 , i32 14 >
15
- %tmp4 = shufflevector <8 x i8 > %tmp1 , <8 x i8 > %tmp2 , <8 x i32 > <i32 1 , i32 9 , i32 3 , i32 11 , i32 5 , i32 13 , i32 7 , i32 15 >
16
- %tmp5 = add <8 x i8 > %tmp3 , %tmp4
17
- ret <8 x i8 > %tmp5
12
+ %tmp1 = load <8 x i8 >, <8 x i8 >* %A
13
+ %tmp2 = load <8 x i8 >, <8 x i8 >* %B
14
+ %tmp3 = shufflevector <8 x i8 > %tmp1 , <8 x i8 > %tmp2 , <8 x i32 > <i32 0 , i32 8 , i32 2 , i32 10 , i32 4 , i32 12 , i32 6 , i32 14 >
15
+ %tmp4 = shufflevector <8 x i8 > %tmp1 , <8 x i8 > %tmp2 , <8 x i32 > <i32 1 , i32 9 , i32 3 , i32 11 , i32 5 , i32 13 , i32 7 , i32 15 >
16
+ %tmp5 = add <8 x i8 > %tmp3 , %tmp4
17
+ ret <8 x i8 > %tmp5
18
18
}
19
19
20
20
define <16 x i8 > @vtrni8_Qres (<8 x i8 >* %A , <8 x i8 >* %B ) nounwind {
@@ -26,10 +26,10 @@ define <16 x i8> @vtrni8_Qres(<8 x i8>* %A, <8 x i8>* %B) nounwind {
26
26
; CHECK-NEXT: vmov r0, r1, [[LDR0]]
27
27
; CHECK-NEXT: vmov r2, r3, [[LDR1]]
28
28
; CHECK-NEXT: mov pc, lr
29
- %tmp1 = load <8 x i8 >, <8 x i8 >* %A
30
- %tmp2 = load <8 x i8 >, <8 x i8 >* %B
31
- %tmp3 = shufflevector <8 x i8 > %tmp1 , <8 x i8 > %tmp2 , <16 x i32 > <i32 0 , i32 8 , i32 2 , i32 10 , i32 4 , i32 12 , i32 6 , i32 14 , i32 1 , i32 9 , i32 3 , i32 11 , i32 5 , i32 13 , i32 7 , i32 15 >
32
- ret <16 x i8 > %tmp3
29
+ %tmp1 = load <8 x i8 >, <8 x i8 >* %A
30
+ %tmp2 = load <8 x i8 >, <8 x i8 >* %B
31
+ %tmp3 = shufflevector <8 x i8 > %tmp1 , <8 x i8 > %tmp2 , <16 x i32 > <i32 0 , i32 8 , i32 2 , i32 10 , i32 4 , i32 12 , i32 6 , i32 14 , i32 1 , i32 9 , i32 3 , i32 11 , i32 5 , i32 13 , i32 7 , i32 15 >
32
+ ret <16 x i8 > %tmp3
33
33
}
34
34
35
35
define <4 x i16 > @vtrni16 (<4 x i16 >* %A , <4 x i16 >* %B ) nounwind {
@@ -41,12 +41,12 @@ define <4 x i16> @vtrni16(<4 x i16>* %A, <4 x i16>* %B) nounwind {
41
41
; CHECK-NEXT: vadd.i16 d16, d17, d16
42
42
; CHECK-NEXT: vmov r0, r1, d16
43
43
; CHECK-NEXT: mov pc, lr
44
- %tmp1 = load <4 x i16 >, <4 x i16 >* %A
45
- %tmp2 = load <4 x i16 >, <4 x i16 >* %B
46
- %tmp3 = shufflevector <4 x i16 > %tmp1 , <4 x i16 > %tmp2 , <4 x i32 > <i32 0 , i32 4 , i32 2 , i32 6 >
47
- %tmp4 = shufflevector <4 x i16 > %tmp1 , <4 x i16 > %tmp2 , <4 x i32 > <i32 1 , i32 5 , i32 3 , i32 7 >
48
- %tmp5 = add <4 x i16 > %tmp3 , %tmp4
49
- ret <4 x i16 > %tmp5
44
+ %tmp1 = load <4 x i16 >, <4 x i16 >* %A
45
+ %tmp2 = load <4 x i16 >, <4 x i16 >* %B
46
+ %tmp3 = shufflevector <4 x i16 > %tmp1 , <4 x i16 > %tmp2 , <4 x i32 > <i32 0 , i32 4 , i32 2 , i32 6 >
47
+ %tmp4 = shufflevector <4 x i16 > %tmp1 , <4 x i16 > %tmp2 , <4 x i32 > <i32 1 , i32 5 , i32 3 , i32 7 >
48
+ %tmp5 = add <4 x i16 > %tmp3 , %tmp4
49
+ ret <4 x i16 > %tmp5
50
50
}
51
51
52
52
define <8 x i16 > @vtrni16_Qres (<4 x i16 >* %A , <4 x i16 >* %B ) nounwind {
@@ -58,10 +58,10 @@ define <8 x i16> @vtrni16_Qres(<4 x i16>* %A, <4 x i16>* %B) nounwind {
58
58
; CHECK-NEXT: vmov r0, r1, [[LDR0]]
59
59
; CHECK-NEXT: vmov r2, r3, [[LDR1]]
60
60
; CHECK-NEXT: mov pc, lr
61
- %tmp1 = load <4 x i16 >, <4 x i16 >* %A
62
- %tmp2 = load <4 x i16 >, <4 x i16 >* %B
63
- %tmp3 = shufflevector <4 x i16 > %tmp1 , <4 x i16 > %tmp2 , <8 x i32 > <i32 0 , i32 4 , i32 2 , i32 6 , i32 1 , i32 5 , i32 3 , i32 7 >
64
- ret <8 x i16 > %tmp3
61
+ %tmp1 = load <4 x i16 >, <4 x i16 >* %A
62
+ %tmp2 = load <4 x i16 >, <4 x i16 >* %B
63
+ %tmp3 = shufflevector <4 x i16 > %tmp1 , <4 x i16 > %tmp2 , <8 x i32 > <i32 0 , i32 4 , i32 2 , i32 6 , i32 1 , i32 5 , i32 3 , i32 7 >
64
+ ret <8 x i16 > %tmp3
65
65
}
66
66
67
67
define <2 x i32 > @vtrni32 (<2 x i32 >* %A , <2 x i32 >* %B ) nounwind {
@@ -73,12 +73,12 @@ define <2 x i32> @vtrni32(<2 x i32>* %A, <2 x i32>* %B) nounwind {
73
73
; CHECK-NEXT: vmul.i32 d16, d17, d16
74
74
; CHECK-NEXT: vmov r0, r1, d16
75
75
; CHECK-NEXT: mov pc, lr
76
- %tmp1 = load <2 x i32 >, <2 x i32 >* %A
77
- %tmp2 = load <2 x i32 >, <2 x i32 >* %B
78
- %tmp3 = shufflevector <2 x i32 > %tmp1 , <2 x i32 > %tmp2 , <2 x i32 > <i32 0 , i32 2 >
79
- %tmp4 = shufflevector <2 x i32 > %tmp1 , <2 x i32 > %tmp2 , <2 x i32 > <i32 1 , i32 3 >
80
- %tmp5 = mul <2 x i32 > %tmp3 , %tmp4
81
- ret <2 x i32 > %tmp5
76
+ %tmp1 = load <2 x i32 >, <2 x i32 >* %A
77
+ %tmp2 = load <2 x i32 >, <2 x i32 >* %B
78
+ %tmp3 = shufflevector <2 x i32 > %tmp1 , <2 x i32 > %tmp2 , <2 x i32 > <i32 0 , i32 2 >
79
+ %tmp4 = shufflevector <2 x i32 > %tmp1 , <2 x i32 > %tmp2 , <2 x i32 > <i32 1 , i32 3 >
80
+ %tmp5 = mul <2 x i32 > %tmp3 , %tmp4
81
+ ret <2 x i32 > %tmp5
82
82
}
83
83
84
84
define <4 x i32 > @vtrni32_Qres (<2 x i32 >* %A , <2 x i32 >* %B ) nounwind {
@@ -90,10 +90,10 @@ define <4 x i32> @vtrni32_Qres(<2 x i32>* %A, <2 x i32>* %B) nounwind {
90
90
; CHECK-NEXT: vmov r0, r1, [[LDR0]]
91
91
; CHECK-NEXT: vmov r2, r3, [[LDR1]]
92
92
; CHECK-NEXT: mov pc, lr
93
- %tmp1 = load <2 x i32 >, <2 x i32 >* %A
94
- %tmp2 = load <2 x i32 >, <2 x i32 >* %B
95
- %tmp3 = shufflevector <2 x i32 > %tmp1 , <2 x i32 > %tmp2 , <4 x i32 > <i32 0 , i32 2 , i32 1 , i32 3 >
96
- ret <4 x i32 > %tmp3
93
+ %tmp1 = load <2 x i32 >, <2 x i32 >* %A
94
+ %tmp2 = load <2 x i32 >, <2 x i32 >* %B
95
+ %tmp3 = shufflevector <2 x i32 > %tmp1 , <2 x i32 > %tmp2 , <4 x i32 > <i32 0 , i32 2 , i32 1 , i32 3 >
96
+ ret <4 x i32 > %tmp3
97
97
}
98
98
99
99
define <2 x float > @vtrnf (<2 x float >* %A , <2 x float >* %B ) nounwind {
@@ -105,12 +105,12 @@ define <2 x float> @vtrnf(<2 x float>* %A, <2 x float>* %B) nounwind {
105
105
; CHECK-NEXT: vadd.f32 d16, d17, d16
106
106
; CHECK-NEXT: vmov r0, r1, d16
107
107
; CHECK-NEXT: mov pc, lr
108
- %tmp1 = load <2 x float >, <2 x float >* %A
109
- %tmp2 = load <2 x float >, <2 x float >* %B
110
- %tmp3 = shufflevector <2 x float > %tmp1 , <2 x float > %tmp2 , <2 x i32 > <i32 0 , i32 2 >
111
- %tmp4 = shufflevector <2 x float > %tmp1 , <2 x float > %tmp2 , <2 x i32 > <i32 1 , i32 3 >
112
- %tmp5 = fadd <2 x float > %tmp3 , %tmp4
113
- ret <2 x float > %tmp5
108
+ %tmp1 = load <2 x float >, <2 x float >* %A
109
+ %tmp2 = load <2 x float >, <2 x float >* %B
110
+ %tmp3 = shufflevector <2 x float > %tmp1 , <2 x float > %tmp2 , <2 x i32 > <i32 0 , i32 2 >
111
+ %tmp4 = shufflevector <2 x float > %tmp1 , <2 x float > %tmp2 , <2 x i32 > <i32 1 , i32 3 >
112
+ %tmp5 = fadd <2 x float > %tmp3 , %tmp4
113
+ ret <2 x float > %tmp5
114
114
}
115
115
116
116
define <4 x float > @vtrnf_Qres (<2 x float >* %A , <2 x float >* %B ) nounwind {
@@ -122,10 +122,10 @@ define <4 x float> @vtrnf_Qres(<2 x float>* %A, <2 x float>* %B) nounwind {
122
122
; CHECK-NEXT: vmov r0, r1, [[LDR0]]
123
123
; CHECK-NEXT: vmov r2, r3, [[LDR1]]
124
124
; CHECK-NEXT: mov pc, lr
125
- %tmp1 = load <2 x float >, <2 x float >* %A
126
- %tmp2 = load <2 x float >, <2 x float >* %B
127
- %tmp3 = shufflevector <2 x float > %tmp1 , <2 x float > %tmp2 , <4 x i32 > <i32 0 , i32 2 , i32 1 , i32 3 >
128
- ret <4 x float > %tmp3
125
+ %tmp1 = load <2 x float >, <2 x float >* %A
126
+ %tmp2 = load <2 x float >, <2 x float >* %B
127
+ %tmp3 = shufflevector <2 x float > %tmp1 , <2 x float > %tmp2 , <4 x i32 > <i32 0 , i32 2 , i32 1 , i32 3 >
128
+ ret <4 x float > %tmp3
129
129
}
130
130
131
131
define <16 x i8 > @vtrnQi8 (<16 x i8 >* %A , <16 x i8 >* %B ) nounwind {
@@ -138,12 +138,12 @@ define <16 x i8> @vtrnQi8(<16 x i8>* %A, <16 x i8>* %B) nounwind {
138
138
; CHECK-NEXT: vmov r0, r1, d16
139
139
; CHECK-NEXT: vmov r2, r3, d17
140
140
; CHECK-NEXT: mov pc, lr
141
- %tmp1 = load <16 x i8 >, <16 x i8 >* %A
142
- %tmp2 = load <16 x i8 >, <16 x i8 >* %B
143
- %tmp3 = shufflevector <16 x i8 > %tmp1 , <16 x i8 > %tmp2 , <16 x i32 > <i32 0 , i32 16 , i32 2 , i32 18 , i32 4 , i32 20 , i32 6 , i32 22 , i32 8 , i32 24 , i32 10 , i32 26 , i32 12 , i32 28 , i32 14 , i32 30 >
144
- %tmp4 = shufflevector <16 x i8 > %tmp1 , <16 x i8 > %tmp2 , <16 x i32 > <i32 1 , i32 17 , i32 3 , i32 19 , i32 5 , i32 21 , i32 7 , i32 23 , i32 9 , i32 25 , i32 11 , i32 27 , i32 13 , i32 29 , i32 15 , i32 31 >
145
- %tmp5 = add <16 x i8 > %tmp3 , %tmp4
146
- ret <16 x i8 > %tmp5
141
+ %tmp1 = load <16 x i8 >, <16 x i8 >* %A
142
+ %tmp2 = load <16 x i8 >, <16 x i8 >* %B
143
+ %tmp3 = shufflevector <16 x i8 > %tmp1 , <16 x i8 > %tmp2 , <16 x i32 > <i32 0 , i32 16 , i32 2 , i32 18 , i32 4 , i32 20 , i32 6 , i32 22 , i32 8 , i32 24 , i32 10 , i32 26 , i32 12 , i32 28 , i32 14 , i32 30 >
144
+ %tmp4 = shufflevector <16 x i8 > %tmp1 , <16 x i8 > %tmp2 , <16 x i32 > <i32 1 , i32 17 , i32 3 , i32 19 , i32 5 , i32 21 , i32 7 , i32 23 , i32 9 , i32 25 , i32 11 , i32 27 , i32 13 , i32 29 , i32 15 , i32 31 >
145
+ %tmp5 = add <16 x i8 > %tmp3 , %tmp4
146
+ ret <16 x i8 > %tmp5
147
147
}
148
148
149
149
define <32 x i8 > @vtrnQi8_QQres (<16 x i8 >* %A , <16 x i8 >* %B ) nounwind {
@@ -155,10 +155,10 @@ define <32 x i8> @vtrnQi8_QQres(<16 x i8>* %A, <16 x i8>* %B) nounwind {
155
155
; CHECK-NEXT: vst1.8 {d18, d19}, [r0:128]!
156
156
; CHECK-NEXT: vst1.64 {d16, d17}, [r0:128]
157
157
; CHECK-NEXT: mov pc, lr
158
- %tmp1 = load <16 x i8 >, <16 x i8 >* %A
159
- %tmp2 = load <16 x i8 >, <16 x i8 >* %B
160
- %tmp3 = shufflevector <16 x i8 > %tmp1 , <16 x i8 > %tmp2 , <32 x i32 > <i32 0 , i32 16 , i32 2 , i32 18 , i32 4 , i32 20 , i32 6 , i32 22 , i32 8 , i32 24 , i32 10 , i32 26 , i32 12 , i32 28 , i32 14 , i32 30 , i32 1 , i32 17 , i32 3 , i32 19 , i32 5 , i32 21 , i32 7 , i32 23 , i32 9 , i32 25 , i32 11 , i32 27 , i32 13 , i32 29 , i32 15 , i32 31 >
161
- ret <32 x i8 > %tmp3
158
+ %tmp1 = load <16 x i8 >, <16 x i8 >* %A
159
+ %tmp2 = load <16 x i8 >, <16 x i8 >* %B
160
+ %tmp3 = shufflevector <16 x i8 > %tmp1 , <16 x i8 > %tmp2 , <32 x i32 > <i32 0 , i32 16 , i32 2 , i32 18 , i32 4 , i32 20 , i32 6 , i32 22 , i32 8 , i32 24 , i32 10 , i32 26 , i32 12 , i32 28 , i32 14 , i32 30 , i32 1 , i32 17 , i32 3 , i32 19 , i32 5 , i32 21 , i32 7 , i32 23 , i32 9 , i32 25 , i32 11 , i32 27 , i32 13 , i32 29 , i32 15 , i32 31 >
161
+ ret <32 x i8 > %tmp3
162
162
}
163
163
164
164
define <8 x i16 > @vtrnQi16 (<8 x i16 >* %A , <8 x i16 >* %B ) nounwind {
@@ -171,12 +171,12 @@ define <8 x i16> @vtrnQi16(<8 x i16>* %A, <8 x i16>* %B) nounwind {
171
171
; CHECK-NEXT: vmov r0, r1, d16
172
172
; CHECK-NEXT: vmov r2, r3, d17
173
173
; CHECK-NEXT: mov pc, lr
174
- %tmp1 = load <8 x i16 >, <8 x i16 >* %A
175
- %tmp2 = load <8 x i16 >, <8 x i16 >* %B
176
- %tmp3 = shufflevector <8 x i16 > %tmp1 , <8 x i16 > %tmp2 , <8 x i32 > <i32 0 , i32 8 , i32 2 , i32 10 , i32 4 , i32 12 , i32 6 , i32 14 >
177
- %tmp4 = shufflevector <8 x i16 > %tmp1 , <8 x i16 > %tmp2 , <8 x i32 > <i32 1 , i32 9 , i32 3 , i32 11 , i32 5 , i32 13 , i32 7 , i32 15 >
178
- %tmp5 = add <8 x i16 > %tmp3 , %tmp4
179
- ret <8 x i16 > %tmp5
174
+ %tmp1 = load <8 x i16 >, <8 x i16 >* %A
175
+ %tmp2 = load <8 x i16 >, <8 x i16 >* %B
176
+ %tmp3 = shufflevector <8 x i16 > %tmp1 , <8 x i16 > %tmp2 , <8 x i32 > <i32 0 , i32 8 , i32 2 , i32 10 , i32 4 , i32 12 , i32 6 , i32 14 >
177
+ %tmp4 = shufflevector <8 x i16 > %tmp1 , <8 x i16 > %tmp2 , <8 x i32 > <i32 1 , i32 9 , i32 3 , i32 11 , i32 5 , i32 13 , i32 7 , i32 15 >
178
+ %tmp5 = add <8 x i16 > %tmp3 , %tmp4
179
+ ret <8 x i16 > %tmp5
180
180
}
181
181
182
182
define <16 x i16 > @vtrnQi16_QQres (<8 x i16 >* %A , <8 x i16 >* %B ) nounwind {
@@ -188,10 +188,10 @@ define <16 x i16> @vtrnQi16_QQres(<8 x i16>* %A, <8 x i16>* %B) nounwind {
188
188
; CHECK-NEXT: vst1.16 {d18, d19}, [r0:128]!
189
189
; CHECK-NEXT: vst1.64 {d16, d17}, [r0:128]
190
190
; CHECK-NEXT: mov pc, lr
191
- %tmp1 = load <8 x i16 >, <8 x i16 >* %A
192
- %tmp2 = load <8 x i16 >, <8 x i16 >* %B
193
- %tmp3 = shufflevector <8 x i16 > %tmp1 , <8 x i16 > %tmp2 , <16 x i32 > <i32 0 , i32 8 , i32 2 , i32 10 , i32 4 , i32 12 , i32 6 , i32 14 , i32 1 , i32 9 , i32 3 , i32 11 , i32 5 , i32 13 , i32 7 , i32 15 >
194
- ret <16 x i16 > %tmp3
191
+ %tmp1 = load <8 x i16 >, <8 x i16 >* %A
192
+ %tmp2 = load <8 x i16 >, <8 x i16 >* %B
193
+ %tmp3 = shufflevector <8 x i16 > %tmp1 , <8 x i16 > %tmp2 , <16 x i32 > <i32 0 , i32 8 , i32 2 , i32 10 , i32 4 , i32 12 , i32 6 , i32 14 , i32 1 , i32 9 , i32 3 , i32 11 , i32 5 , i32 13 , i32 7 , i32 15 >
194
+ ret <16 x i16 > %tmp3
195
195
}
196
196
197
197
define <4 x i32 > @vtrnQi32 (<4 x i32 >* %A , <4 x i32 >* %B ) nounwind {
@@ -204,12 +204,12 @@ define <4 x i32> @vtrnQi32(<4 x i32>* %A, <4 x i32>* %B) nounwind {
204
204
; CHECK-NEXT: vmov r0, r1, d16
205
205
; CHECK-NEXT: vmov r2, r3, d17
206
206
; CHECK-NEXT: mov pc, lr
207
- %tmp1 = load <4 x i32 >, <4 x i32 >* %A
208
- %tmp2 = load <4 x i32 >, <4 x i32 >* %B
209
- %tmp3 = shufflevector <4 x i32 > %tmp1 , <4 x i32 > %tmp2 , <4 x i32 > <i32 0 , i32 4 , i32 2 , i32 6 >
210
- %tmp4 = shufflevector <4 x i32 > %tmp1 , <4 x i32 > %tmp2 , <4 x i32 > <i32 1 , i32 5 , i32 3 , i32 7 >
211
- %tmp5 = add <4 x i32 > %tmp3 , %tmp4
212
- ret <4 x i32 > %tmp5
207
+ %tmp1 = load <4 x i32 >, <4 x i32 >* %A
208
+ %tmp2 = load <4 x i32 >, <4 x i32 >* %B
209
+ %tmp3 = shufflevector <4 x i32 > %tmp1 , <4 x i32 > %tmp2 , <4 x i32 > <i32 0 , i32 4 , i32 2 , i32 6 >
210
+ %tmp4 = shufflevector <4 x i32 > %tmp1 , <4 x i32 > %tmp2 , <4 x i32 > <i32 1 , i32 5 , i32 3 , i32 7 >
211
+ %tmp5 = add <4 x i32 > %tmp3 , %tmp4
212
+ ret <4 x i32 > %tmp5
213
213
}
214
214
215
215
define <8 x i32 > @vtrnQi32_QQres (<4 x i32 >* %A , <4 x i32 >* %B ) nounwind {
@@ -221,10 +221,10 @@ define <8 x i32> @vtrnQi32_QQres(<4 x i32>* %A, <4 x i32>* %B) nounwind {
221
221
; CHECK-NEXT: vst1.32 {d18, d19}, [r0:128]!
222
222
; CHECK-NEXT: vst1.64 {d16, d17}, [r0:128]
223
223
; CHECK-NEXT: mov pc, lr
224
- %tmp1 = load <4 x i32 >, <4 x i32 >* %A
225
- %tmp2 = load <4 x i32 >, <4 x i32 >* %B
226
- %tmp3 = shufflevector <4 x i32 > %tmp1 , <4 x i32 > %tmp2 , <8 x i32 > <i32 0 , i32 4 , i32 2 , i32 6 , i32 1 , i32 5 , i32 3 , i32 7 >
227
- ret <8 x i32 > %tmp3
224
+ %tmp1 = load <4 x i32 >, <4 x i32 >* %A
225
+ %tmp2 = load <4 x i32 >, <4 x i32 >* %B
226
+ %tmp3 = shufflevector <4 x i32 > %tmp1 , <4 x i32 > %tmp2 , <8 x i32 > <i32 0 , i32 4 , i32 2 , i32 6 , i32 1 , i32 5 , i32 3 , i32 7 >
227
+ ret <8 x i32 > %tmp3
228
228
}
229
229
230
230
define <4 x float > @vtrnQf (<4 x float >* %A , <4 x float >* %B ) nounwind {
@@ -237,12 +237,12 @@ define <4 x float> @vtrnQf(<4 x float>* %A, <4 x float>* %B) nounwind {
237
237
; CHECK-NEXT: vmov r0, r1, d16
238
238
; CHECK-NEXT: vmov r2, r3, d17
239
239
; CHECK-NEXT: mov pc, lr
240
- %tmp1 = load <4 x float >, <4 x float >* %A
241
- %tmp2 = load <4 x float >, <4 x float >* %B
242
- %tmp3 = shufflevector <4 x float > %tmp1 , <4 x float > %tmp2 , <4 x i32 > <i32 0 , i32 4 , i32 2 , i32 6 >
243
- %tmp4 = shufflevector <4 x float > %tmp1 , <4 x float > %tmp2 , <4 x i32 > <i32 1 , i32 5 , i32 3 , i32 7 >
244
- %tmp5 = fadd <4 x float > %tmp3 , %tmp4
245
- ret <4 x float > %tmp5
240
+ %tmp1 = load <4 x float >, <4 x float >* %A
241
+ %tmp2 = load <4 x float >, <4 x float >* %B
242
+ %tmp3 = shufflevector <4 x float > %tmp1 , <4 x float > %tmp2 , <4 x i32 > <i32 0 , i32 4 , i32 2 , i32 6 >
243
+ %tmp4 = shufflevector <4 x float > %tmp1 , <4 x float > %tmp2 , <4 x i32 > <i32 1 , i32 5 , i32 3 , i32 7 >
244
+ %tmp5 = fadd <4 x float > %tmp3 , %tmp4
245
+ ret <4 x float > %tmp5
246
246
}
247
247
248
248
define <8 x float > @vtrnQf_QQres (<4 x float >* %A , <4 x float >* %B ) nounwind {
@@ -254,10 +254,10 @@ define <8 x float> @vtrnQf_QQres(<4 x float>* %A, <4 x float>* %B) nounwind {
254
254
; CHECK-NEXT: vst1.32 {d18, d19}, [r0:128]!
255
255
; CHECK-NEXT: vst1.64 {d16, d17}, [r0:128]
256
256
; CHECK-NEXT: mov pc, lr
257
- %tmp1 = load <4 x float >, <4 x float >* %A
258
- %tmp2 = load <4 x float >, <4 x float >* %B
259
- %tmp3 = shufflevector <4 x float > %tmp1 , <4 x float > %tmp2 , <8 x i32 > <i32 0 , i32 4 , i32 2 , i32 6 , i32 1 , i32 5 , i32 3 , i32 7 >
260
- ret <8 x float > %tmp3
257
+ %tmp1 = load <4 x float >, <4 x float >* %A
258
+ %tmp2 = load <4 x float >, <4 x float >* %B
259
+ %tmp3 = shufflevector <4 x float > %tmp1 , <4 x float > %tmp2 , <8 x i32 > <i32 0 , i32 4 , i32 2 , i32 6 , i32 1 , i32 5 , i32 3 , i32 7 >
260
+ ret <8 x float > %tmp3
261
261
}
262
262
263
263
@@ -270,12 +270,12 @@ define <8 x i8> @vtrni8_undef(<8 x i8>* %A, <8 x i8>* %B) nounwind {
270
270
; CHECK-NEXT: vadd.i8 d16, d17, d16
271
271
; CHECK-NEXT: vmov r0, r1, d16
272
272
; CHECK-NEXT: mov pc, lr
273
- %tmp1 = load <8 x i8 >, <8 x i8 >* %A
274
- %tmp2 = load <8 x i8 >, <8 x i8 >* %B
275
- %tmp3 = shufflevector <8 x i8 > %tmp1 , <8 x i8 > %tmp2 , <8 x i32 > <i32 0 , i32 undef , i32 2 , i32 10 , i32 undef , i32 12 , i32 6 , i32 14 >
276
- %tmp4 = shufflevector <8 x i8 > %tmp1 , <8 x i8 > %tmp2 , <8 x i32 > <i32 1 , i32 9 , i32 3 , i32 11 , i32 5 , i32 undef , i32 undef , i32 15 >
277
- %tmp5 = add <8 x i8 > %tmp3 , %tmp4
278
- ret <8 x i8 > %tmp5
273
+ %tmp1 = load <8 x i8 >, <8 x i8 >* %A
274
+ %tmp2 = load <8 x i8 >, <8 x i8 >* %B
275
+ %tmp3 = shufflevector <8 x i8 > %tmp1 , <8 x i8 > %tmp2 , <8 x i32 > <i32 0 , i32 undef , i32 2 , i32 10 , i32 undef , i32 12 , i32 6 , i32 14 >
276
+ %tmp4 = shufflevector <8 x i8 > %tmp1 , <8 x i8 > %tmp2 , <8 x i32 > <i32 1 , i32 9 , i32 3 , i32 11 , i32 5 , i32 undef , i32 undef , i32 15 >
277
+ %tmp5 = add <8 x i8 > %tmp3 , %tmp4
278
+ ret <8 x i8 > %tmp5
279
279
}
280
280
281
281
define <16 x i8 > @vtrni8_undef_Qres (<8 x i8 >* %A , <8 x i8 >* %B ) nounwind {
@@ -287,10 +287,10 @@ define <16 x i8> @vtrni8_undef_Qres(<8 x i8>* %A, <8 x i8>* %B) nounwind {
287
287
; CHECK-NEXT: vmov r0, r1, [[LDR0]]
288
288
; CHECK-NEXT: vmov r2, r3, [[LDR1]]
289
289
; CHECK-NEXT: mov pc, lr
290
- %tmp1 = load <8 x i8 >, <8 x i8 >* %A
291
- %tmp2 = load <8 x i8 >, <8 x i8 >* %B
292
- %tmp3 = shufflevector <8 x i8 > %tmp1 , <8 x i8 > %tmp2 , <16 x i32 > <i32 0 , i32 undef , i32 2 , i32 10 , i32 undef , i32 12 , i32 6 , i32 14 , i32 1 , i32 9 , i32 3 , i32 11 , i32 5 , i32 undef , i32 undef , i32 15 >
293
- ret <16 x i8 > %tmp3
290
+ %tmp1 = load <8 x i8 >, <8 x i8 >* %A
291
+ %tmp2 = load <8 x i8 >, <8 x i8 >* %B
292
+ %tmp3 = shufflevector <8 x i8 > %tmp1 , <8 x i8 > %tmp2 , <16 x i32 > <i32 0 , i32 undef , i32 2 , i32 10 , i32 undef , i32 12 , i32 6 , i32 14 , i32 1 , i32 9 , i32 3 , i32 11 , i32 5 , i32 undef , i32 undef , i32 15 >
293
+ ret <16 x i8 > %tmp3
294
294
}
295
295
296
296
define <8 x i16 > @vtrnQi16_undef (<8 x i16 >* %A , <8 x i16 >* %B ) nounwind {
@@ -303,12 +303,12 @@ define <8 x i16> @vtrnQi16_undef(<8 x i16>* %A, <8 x i16>* %B) nounwind {
303
303
; CHECK-NEXT: vmov r0, r1, d16
304
304
; CHECK-NEXT: vmov r2, r3, d17
305
305
; CHECK-NEXT: mov pc, lr
306
- %tmp1 = load <8 x i16 >, <8 x i16 >* %A
307
- %tmp2 = load <8 x i16 >, <8 x i16 >* %B
308
- %tmp3 = shufflevector <8 x i16 > %tmp1 , <8 x i16 > %tmp2 , <8 x i32 > <i32 0 , i32 8 , i32 undef , i32 undef , i32 4 , i32 12 , i32 6 , i32 14 >
309
- %tmp4 = shufflevector <8 x i16 > %tmp1 , <8 x i16 > %tmp2 , <8 x i32 > <i32 1 , i32 undef , i32 3 , i32 11 , i32 5 , i32 13 , i32 undef , i32 undef >
310
- %tmp5 = add <8 x i16 > %tmp3 , %tmp4
311
- ret <8 x i16 > %tmp5
306
+ %tmp1 = load <8 x i16 >, <8 x i16 >* %A
307
+ %tmp2 = load <8 x i16 >, <8 x i16 >* %B
308
+ %tmp3 = shufflevector <8 x i16 > %tmp1 , <8 x i16 > %tmp2 , <8 x i32 > <i32 0 , i32 8 , i32 undef , i32 undef , i32 4 , i32 12 , i32 6 , i32 14 >
309
+ %tmp4 = shufflevector <8 x i16 > %tmp1 , <8 x i16 > %tmp2 , <8 x i32 > <i32 1 , i32 undef , i32 3 , i32 11 , i32 5 , i32 13 , i32 undef , i32 undef >
310
+ %tmp5 = add <8 x i16 > %tmp3 , %tmp4
311
+ ret <8 x i16 > %tmp5
312
312
}
313
313
314
314
define <16 x i16 > @vtrnQi16_undef_QQres (<8 x i16 >* %A , <8 x i16 >* %B ) nounwind {
@@ -320,10 +320,10 @@ define <16 x i16> @vtrnQi16_undef_QQres(<8 x i16>* %A, <8 x i16>* %B) nounwind {
320
320
; CHECK-NEXT: vst1.16 {d18, d19}, [r0:128]!
321
321
; CHECK-NEXT: vst1.64 {d16, d17}, [r0:128]
322
322
; CHECK-NEXT: mov pc, lr
323
- %tmp1 = load <8 x i16 >, <8 x i16 >* %A
324
- %tmp2 = load <8 x i16 >, <8 x i16 >* %B
325
- %tmp3 = shufflevector <8 x i16 > %tmp1 , <8 x i16 > %tmp2 , <16 x i32 > <i32 0 , i32 8 , i32 undef , i32 undef , i32 4 , i32 12 , i32 6 , i32 14 , i32 1 , i32 undef , i32 3 , i32 11 , i32 5 , i32 13 , i32 undef , i32 undef >
326
- ret <16 x i16 > %tmp3
323
+ %tmp1 = load <8 x i16 >, <8 x i16 >* %A
324
+ %tmp2 = load <8 x i16 >, <8 x i16 >* %B
325
+ %tmp3 = shufflevector <8 x i16 > %tmp1 , <8 x i16 > %tmp2 , <16 x i32 > <i32 0 , i32 8 , i32 undef , i32 undef , i32 4 , i32 12 , i32 6 , i32 14 , i32 1 , i32 undef , i32 3 , i32 11 , i32 5 , i32 13 , i32 undef , i32 undef >
326
+ ret <16 x i16 > %tmp3
327
327
}
328
328
329
329
define <8 x i16 > @vtrn_lower_shufflemask_undef (<4 x i16 >* %A , <4 x i16 >* %B ) {
0 commit comments