@@ -145,3 +145,60 @@ define <4 x i64> @cfunc4(<4 x i16> %v0) nounwind {
145
145
%r = sext <4 x i16 > %v0 to <4 x i64 >
146
146
ret <4 x i64 > %r
147
147
}
148
+
149
+ define <4 x i64 > @zext_v4i8_to_v4i64 (<4 x i8 > %v0 ) nounwind {
150
+ ; CHECK-LABEL: zext_v4i8_to_v4i64:
151
+ ; CHECK-NEXT: bic.4h v0, #255, lsl #8
152
+ ; CHECK-NEXT: ushll.4s v0, v0, #0
153
+ ; CHECK-NEXT: ushll2.2d v1, v0, #0
154
+ ; CHECK-NEXT: ushll.2d v0, v0, #0
155
+ ; CHECK-NEXT: ret
156
+ ;
157
+ %r = zext <4 x i8 > %v0 to <4 x i64 >
158
+ ret <4 x i64 > %r
159
+ }
160
+
161
+ define <4 x i64 > @sext_v4i8_to_v4i64 (<4 x i8 > %v0 ) nounwind {
162
+ ; CHECK-LABEL: sext_v4i8_to_v4i64:
163
+ ; CHECK-NEXT: ushll.4s v0, v0, #0
164
+ ; CHECK-NEXT: ushll.2d v1, v0, #0
165
+ ; CHECK-NEXT: ushll2.2d v0, v0, #0
166
+ ; CHECK-NEXT: shl.2d v0, v0, #56
167
+ ; CHECK-NEXT: shl.2d v2, v1, #56
168
+ ; CHECK-NEXT: sshr.2d v1, v0, #56
169
+ ; CHECK-NEXT: sshr.2d v0, v2, #56
170
+ ; CHECK-NEXT: ret
171
+ ;
172
+ %r = sext <4 x i8 > %v0 to <4 x i64 >
173
+ ret <4 x i64 > %r
174
+ }
175
+
176
+ define <8 x i64 > @zext_v8i8_to_v8i64 (<8 x i8 > %v0 ) nounwind {
177
+ ; CHECK-LABEL: zext_v8i8_to_v8i64:
178
+ ; CHECK-NEXT: ushll.8h v0, v0, #0
179
+ ; CHECK-NEXT: ushll2.4s v2, v0, #0
180
+ ; CHECK-NEXT: ushll.4s v0, v0, #0
181
+ ; CHECK-NEXT: ushll2.2d v3, v2, #0
182
+ ; CHECK-NEXT: ushll2.2d v1, v0, #0
183
+ ; CHECK-NEXT: ushll.2d v2, v2, #0
184
+ ; CHECK-NEXT: ushll.2d v0, v0, #0
185
+ ; CHECK-NEXT: ret
186
+ ;
187
+ %r = zext <8 x i8 > %v0 to <8 x i64 >
188
+ ret <8 x i64 > %r
189
+ }
190
+
191
+ define <8 x i64 > @sext_v8i8_to_v8i64 (<8 x i8 > %v0 ) nounwind {
192
+ ; CHECK-LABEL: sext_v8i8_to_v8i64:
193
+ ; CHECK-NEXT: sshll.8h v0, v0, #0
194
+ ; CHECK-NEXT: sshll2.4s v2, v0, #0
195
+ ; CHECK-NEXT: sshll.4s v0, v0, #0
196
+ ; CHECK-NEXT: sshll2.2d v3, v2, #0
197
+ ; CHECK-NEXT: sshll2.2d v1, v0, #0
198
+ ; CHECK-NEXT: sshll.2d v2, v2, #0
199
+ ; CHECK-NEXT: sshll.2d v0, v0, #0
200
+ ; CHECK-NEXT: ret
201
+ ;
202
+ %r = sext <8 x i8 > %v0 to <8 x i64 >
203
+ ret <8 x i64 > %r
204
+ }
0 commit comments