xref: /minix3/external/bsd/llvm/dist/clang/test/CodeGen/aarch64-poly64.c (revision 0a6a1f1d05b60e214de2f05a7310ddd1f0e590e7)
1f4a2713aSLionel Sambuc // REQUIRES: aarch64-registered-target
2*0a6a1f1dSLionel Sambuc // RUN: %clang_cc1 -triple arm64-none-linux-gnu -target-feature +neon \
3*0a6a1f1dSLionel Sambuc // RUN:  -ffp-contract=fast -S -O3 -o - %s | FileCheck %s --check-prefix=CHECK \
4*0a6a1f1dSLionel Sambuc // RUN:  --check-prefix=CHECK-ARM64
5f4a2713aSLionel Sambuc 
6f4a2713aSLionel Sambuc // Test new aarch64 intrinsics with poly64
7f4a2713aSLionel Sambuc 
8f4a2713aSLionel Sambuc #include <arm_neon.h>
9f4a2713aSLionel Sambuc 
test_vceq_p64(poly64x1_t a,poly64x1_t b)10f4a2713aSLionel Sambuc uint64x1_t test_vceq_p64(poly64x1_t a, poly64x1_t b) {
11*0a6a1f1dSLionel Sambuc   // CHECK-LABEL: test_vceq_p64
12f4a2713aSLionel Sambuc   return vceq_p64(a, b);
13f4a2713aSLionel Sambuc   // CHECK: cmeq {{d[0-9]+}}, {{d[0-9]+}}, {{d[0-9]+}}
14f4a2713aSLionel Sambuc }
15f4a2713aSLionel Sambuc 
test_vceqq_p64(poly64x2_t a,poly64x2_t b)16f4a2713aSLionel Sambuc uint64x2_t test_vceqq_p64(poly64x2_t a, poly64x2_t b) {
17*0a6a1f1dSLionel Sambuc   // CHECK-LABEL: test_vceqq_p64
18f4a2713aSLionel Sambuc   return vceqq_p64(a, b);
19f4a2713aSLionel Sambuc   // CHECK: cmeq {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, {{v[0-9]+}}.2d
20f4a2713aSLionel Sambuc }
21f4a2713aSLionel Sambuc 
test_vtst_p64(poly64x1_t a,poly64x1_t b)22f4a2713aSLionel Sambuc uint64x1_t test_vtst_p64(poly64x1_t a, poly64x1_t b) {
23*0a6a1f1dSLionel Sambuc   // CHECK-LABEL: test_vtst_p64
24f4a2713aSLionel Sambuc   return vtst_p64(a, b);
25f4a2713aSLionel Sambuc   // CHECK: cmtst {{d[0-9]+}}, {{d[0-9]+}}, {{d[0-9]+}}
26f4a2713aSLionel Sambuc }
27f4a2713aSLionel Sambuc 
test_vtstq_p64(poly64x2_t a,poly64x2_t b)28f4a2713aSLionel Sambuc uint64x2_t test_vtstq_p64(poly64x2_t a, poly64x2_t b) {
29*0a6a1f1dSLionel Sambuc   // CHECK-LABEL: test_vtstq_p64
30f4a2713aSLionel Sambuc   return vtstq_p64(a, b);
31f4a2713aSLionel Sambuc   // CHECK: cmtst {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, {{v[0-9]+}}.2d
32f4a2713aSLionel Sambuc }
33f4a2713aSLionel Sambuc 
test_vbsl_p64(poly64x1_t a,poly64x1_t b,poly64x1_t c)34f4a2713aSLionel Sambuc poly64x1_t test_vbsl_p64(poly64x1_t a, poly64x1_t b, poly64x1_t c) {
35*0a6a1f1dSLionel Sambuc   // CHECK-LABEL: test_vbsl_p64
36f4a2713aSLionel Sambuc   return vbsl_p64(a, b, c);
37f4a2713aSLionel Sambuc   // CHECK: bsl {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
38f4a2713aSLionel Sambuc }
39f4a2713aSLionel Sambuc 
test_vbslq_p64(poly64x2_t a,poly64x2_t b,poly64x2_t c)40f4a2713aSLionel Sambuc poly64x2_t test_vbslq_p64(poly64x2_t a, poly64x2_t b, poly64x2_t c) {
41*0a6a1f1dSLionel Sambuc   // CHECK-LABEL: test_vbslq_p64
42f4a2713aSLionel Sambuc   return vbslq_p64(a, b, c);
43f4a2713aSLionel Sambuc   // CHECK: bsl {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
44f4a2713aSLionel Sambuc }
45f4a2713aSLionel Sambuc 
test_vget_lane_p64(poly64x1_t v)46f4a2713aSLionel Sambuc poly64_t test_vget_lane_p64(poly64x1_t v) {
47*0a6a1f1dSLionel Sambuc   // CHECK-LABEL: test_vget_lane_p64
48f4a2713aSLionel Sambuc   return vget_lane_p64(v, 0);
49f4a2713aSLionel Sambuc   // CHECK: fmov  {{x[0-9]+}}, {{d[0-9]+}}
50f4a2713aSLionel Sambuc }
51f4a2713aSLionel Sambuc 
test_vgetq_lane_p64(poly64x2_t v)52f4a2713aSLionel Sambuc poly64_t test_vgetq_lane_p64(poly64x2_t v) {
53*0a6a1f1dSLionel Sambuc   // CHECK-LABEL: test_vgetq_lane_p64
54f4a2713aSLionel Sambuc   return vgetq_lane_p64(v, 1);
55*0a6a1f1dSLionel Sambuc   // CHECK: {{mov|umov}}  {{x[0-9]+}}, {{v[0-9]+}}.d[1]
56f4a2713aSLionel Sambuc }
57f4a2713aSLionel Sambuc 
test_vset_lane_p64(poly64_t a,poly64x1_t v)58f4a2713aSLionel Sambuc poly64x1_t test_vset_lane_p64(poly64_t a, poly64x1_t v) {
59*0a6a1f1dSLionel Sambuc   // CHECK-LABEL: test_vset_lane_p64
60f4a2713aSLionel Sambuc   return vset_lane_p64(a, v, 0);
61f4a2713aSLionel Sambuc   // CHECK: fmov  {{d[0-9]+}}, {{x[0-9]+}}
62f4a2713aSLionel Sambuc }
63f4a2713aSLionel Sambuc 
test_vsetq_lane_p64(poly64_t a,poly64x2_t v)64f4a2713aSLionel Sambuc poly64x2_t test_vsetq_lane_p64(poly64_t a, poly64x2_t v) {
65*0a6a1f1dSLionel Sambuc   // CHECK-LABEL: test_vsetq_lane_p64
66f4a2713aSLionel Sambuc   return vsetq_lane_p64(a, v, 1);
67f4a2713aSLionel Sambuc   // CHECK: ins  {{v[0-9]+}}.d[1], {{x[0-9]+}}
68f4a2713aSLionel Sambuc }
69f4a2713aSLionel Sambuc 
test_vcopy_lane_p64(poly64x1_t a,poly64x1_t b)70f4a2713aSLionel Sambuc poly64x1_t test_vcopy_lane_p64(poly64x1_t a, poly64x1_t b) {
71*0a6a1f1dSLionel Sambuc   // CHECK-LABEL: test_vcopy_lane_p64
72f4a2713aSLionel Sambuc   return vcopy_lane_p64(a, 0, b, 0);
73*0a6a1f1dSLionel Sambuc 
74*0a6a1f1dSLionel Sambuc   // CHECK-ARM64: mov v0.16b, v1.16b
75f4a2713aSLionel Sambuc }
76f4a2713aSLionel Sambuc 
test_vcopyq_lane_p64(poly64x2_t a,poly64x1_t b)77f4a2713aSLionel Sambuc poly64x2_t test_vcopyq_lane_p64(poly64x2_t a, poly64x1_t b) {
78*0a6a1f1dSLionel Sambuc   // CHECK-LABEL: test_vcopyq_lane_p64
79f4a2713aSLionel Sambuc   return vcopyq_lane_p64(a, 1, b, 0);
80f4a2713aSLionel Sambuc   // CHECK: ins  {{v[0-9]+}}.d[1], {{v[0-9]+}}.d[0]
81f4a2713aSLionel Sambuc }
82f4a2713aSLionel Sambuc 
test_vcopyq_laneq_p64(poly64x2_t a,poly64x2_t b)83f4a2713aSLionel Sambuc poly64x2_t test_vcopyq_laneq_p64(poly64x2_t a, poly64x2_t b) {
84*0a6a1f1dSLionel Sambuc   // CHECK-LABEL: test_vcopyq_laneq_p64
85f4a2713aSLionel Sambuc   return vcopyq_laneq_p64(a, 1, b, 1);
86f4a2713aSLionel Sambuc }
87f4a2713aSLionel Sambuc 
test_vcreate_p64(uint64_t a)88f4a2713aSLionel Sambuc poly64x1_t test_vcreate_p64(uint64_t a) {
89*0a6a1f1dSLionel Sambuc   // CHECK-LABEL: test_vcreate_p64
90f4a2713aSLionel Sambuc   return vcreate_p64(a);
91f4a2713aSLionel Sambuc   // CHECK: fmov  {{d[0-9]+}}, {{x[0-9]+}}
92f4a2713aSLionel Sambuc }
93f4a2713aSLionel Sambuc 
test_vdup_n_p64(poly64_t a)94f4a2713aSLionel Sambuc poly64x1_t test_vdup_n_p64(poly64_t a) {
95*0a6a1f1dSLionel Sambuc   // CHECK-LABEL: test_vdup_n_p64
96f4a2713aSLionel Sambuc   return vdup_n_p64(a);
97f4a2713aSLionel Sambuc   // CHECK: fmov {{d[0-9]+}}, {{x[0-9]+}}
98f4a2713aSLionel Sambuc }
test_vdupq_n_p64(poly64_t a)99f4a2713aSLionel Sambuc poly64x2_t test_vdupq_n_p64(poly64_t a) {
100*0a6a1f1dSLionel Sambuc   // CHECK-LABEL: test_vdupq_n_p64
101f4a2713aSLionel Sambuc   return vdupq_n_p64(a);
102f4a2713aSLionel Sambuc   // CHECK: dup {{v[0-9]+}}.2d, {{x[0-9]+}}
103f4a2713aSLionel Sambuc }
104f4a2713aSLionel Sambuc 
test_vmov_n_p64(poly64_t a)105*0a6a1f1dSLionel Sambuc poly64x1_t test_vmov_n_p64(poly64_t a) {
106*0a6a1f1dSLionel Sambuc   // CHECK-LABEL: test_vmov_n_p64
107*0a6a1f1dSLionel Sambuc   return vmov_n_p64(a);
108*0a6a1f1dSLionel Sambuc   // CHECK: fmov {{d[0-9]+}}, {{x[0-9]+}}
109*0a6a1f1dSLionel Sambuc }
110*0a6a1f1dSLionel Sambuc 
test_vmovq_n_p64(poly64_t a)111*0a6a1f1dSLionel Sambuc poly64x2_t test_vmovq_n_p64(poly64_t a) {
112*0a6a1f1dSLionel Sambuc   // CHECK-LABEL: test_vmovq_n_p64
113*0a6a1f1dSLionel Sambuc   return vmovq_n_p64(a);
114*0a6a1f1dSLionel Sambuc   // CHECK: dup {{v[0-9]+}}.2d, {{x[0-9]+}}
115*0a6a1f1dSLionel Sambuc }
116*0a6a1f1dSLionel Sambuc 
test_vdup_lane_p64(poly64x1_t vec)117f4a2713aSLionel Sambuc poly64x1_t test_vdup_lane_p64(poly64x1_t vec) {
118*0a6a1f1dSLionel Sambuc   // CHECK-LABEL: test_vdup_lane_p64
119f4a2713aSLionel Sambuc   return vdup_lane_p64(vec, 0);
120f4a2713aSLionel Sambuc   // CHECK: ret
121f4a2713aSLionel Sambuc }
122f4a2713aSLionel Sambuc 
test_vdupq_lane_p64(poly64x1_t vec)123f4a2713aSLionel Sambuc poly64x2_t test_vdupq_lane_p64(poly64x1_t vec) {
124*0a6a1f1dSLionel Sambuc   // CHECK-LABEL: test_vdupq_lane_p64
125f4a2713aSLionel Sambuc   return vdupq_lane_p64(vec, 0);
126f4a2713aSLionel Sambuc   // CHECK: dup {{v[0-9]+}}.2d, {{v[0-9]+}}.d[0]
127f4a2713aSLionel Sambuc }
128f4a2713aSLionel Sambuc 
test_vdupq_laneq_p64(poly64x2_t vec)129f4a2713aSLionel Sambuc poly64x2_t test_vdupq_laneq_p64(poly64x2_t vec) {
130*0a6a1f1dSLionel Sambuc   // CHECK-LABEL: test_vdupq_laneq_p64
131f4a2713aSLionel Sambuc   return vdupq_laneq_p64(vec, 1);
132f4a2713aSLionel Sambuc   // CHECK: dup {{v[0-9]+}}.2d, {{v[0-9]+}}.d[1]
133f4a2713aSLionel Sambuc }
134f4a2713aSLionel Sambuc 
test_vcombine_p64(poly64x1_t low,poly64x1_t high)135f4a2713aSLionel Sambuc poly64x2_t test_vcombine_p64(poly64x1_t low, poly64x1_t high) {
136*0a6a1f1dSLionel Sambuc   // CHECK-LABEL: test_vcombine_p64
137f4a2713aSLionel Sambuc   return vcombine_p64(low, high);
138f4a2713aSLionel Sambuc   // CHECK: ins {{v[0-9]+}}.d[1], {{v[0-9]+}}.d[0]
139f4a2713aSLionel Sambuc }
140f4a2713aSLionel Sambuc 
test_vld1_p64(poly64_t const * ptr)141f4a2713aSLionel Sambuc poly64x1_t test_vld1_p64(poly64_t const * ptr) {
142*0a6a1f1dSLionel Sambuc   // CHECK-LABEL: test_vld1_p64
143f4a2713aSLionel Sambuc   return vld1_p64(ptr);
144*0a6a1f1dSLionel Sambuc   // CHECK-ARM64: ldr {{d[0-9]+}}, [{{x[0-9]+|sp}}]
145f4a2713aSLionel Sambuc }
146f4a2713aSLionel Sambuc 
test_vld1q_p64(poly64_t const * ptr)147f4a2713aSLionel Sambuc poly64x2_t test_vld1q_p64(poly64_t const * ptr) {
148*0a6a1f1dSLionel Sambuc   // CHECK-LABEL: test_vld1q_p64
149f4a2713aSLionel Sambuc   return vld1q_p64(ptr);
150*0a6a1f1dSLionel Sambuc   // CHECK-ARM64: ldr {{q[0-9]+}}, [{{x[0-9]+|sp}}]
151f4a2713aSLionel Sambuc }
152f4a2713aSLionel Sambuc 
test_vst1_p64(poly64_t * ptr,poly64x1_t val)153f4a2713aSLionel Sambuc void test_vst1_p64(poly64_t * ptr, poly64x1_t val) {
154*0a6a1f1dSLionel Sambuc   // CHECK-LABEL: test_vst1_p64
155f4a2713aSLionel Sambuc   return vst1_p64(ptr, val);
156*0a6a1f1dSLionel Sambuc   // CHECK-ARM64: str {{d[0-9]+}}, [{{x[0-9]+|sp}}]
157f4a2713aSLionel Sambuc }
158f4a2713aSLionel Sambuc 
test_vst1q_p64(poly64_t * ptr,poly64x2_t val)159f4a2713aSLionel Sambuc void test_vst1q_p64(poly64_t * ptr, poly64x2_t val) {
160*0a6a1f1dSLionel Sambuc   // CHECK-LABEL: test_vst1q_p64
161f4a2713aSLionel Sambuc   return vst1q_p64(ptr, val);
162*0a6a1f1dSLionel Sambuc   // CHECK-ARM64: str {{q[0-9]+}}, [{{x[0-9]+|sp}}]
163f4a2713aSLionel Sambuc }
164f4a2713aSLionel Sambuc 
test_vld2_p64(poly64_t const * ptr)165f4a2713aSLionel Sambuc poly64x1x2_t test_vld2_p64(poly64_t const * ptr) {
166*0a6a1f1dSLionel Sambuc   // CHECK-LABEL: test_vld2_p64
167f4a2713aSLionel Sambuc   return vld2_p64(ptr);
168*0a6a1f1dSLionel Sambuc   // CHECK: ld1 {{{ *v[0-9]+.1d, v[0-9]+.1d *}}}, [{{x[0-9]+|sp}}]
169f4a2713aSLionel Sambuc }
170f4a2713aSLionel Sambuc 
test_vld2q_p64(poly64_t const * ptr)171f4a2713aSLionel Sambuc poly64x2x2_t test_vld2q_p64(poly64_t const * ptr) {
172*0a6a1f1dSLionel Sambuc   // CHECK-LABEL: test_vld2q_p64
173f4a2713aSLionel Sambuc   return vld2q_p64(ptr);
174*0a6a1f1dSLionel Sambuc   // CHECK: ld2 {{{ *v[0-9]+.2d, v[0-9]+.2d *}}}, [{{x[0-9]+|sp}}]
175f4a2713aSLionel Sambuc }
176f4a2713aSLionel Sambuc 
test_vld3_p64(poly64_t const * ptr)177f4a2713aSLionel Sambuc poly64x1x3_t test_vld3_p64(poly64_t const * ptr) {
178*0a6a1f1dSLionel Sambuc   // CHECK-LABEL: test_vld3_p64
179f4a2713aSLionel Sambuc   return vld3_p64(ptr);
180*0a6a1f1dSLionel Sambuc   // CHECK: ld1 {{{ *v[0-9]+.1d, v[0-9]+.1d, v[0-9]+.1d *}}}, [{{x[0-9]+|sp}}]
181f4a2713aSLionel Sambuc }
182f4a2713aSLionel Sambuc 
test_vld3q_p64(poly64_t const * ptr)183f4a2713aSLionel Sambuc poly64x2x3_t test_vld3q_p64(poly64_t const * ptr) {
184*0a6a1f1dSLionel Sambuc   // CHECK-LABEL: test_vld3q_p64
185f4a2713aSLionel Sambuc   return vld3q_p64(ptr);
186*0a6a1f1dSLionel Sambuc   // CHECK: ld3 {{{ *v[0-9]+.2d, v[0-9]+.2d, v[0-9]+.2d *}}}, [{{x[0-9]+|sp}}]
187f4a2713aSLionel Sambuc }
188f4a2713aSLionel Sambuc 
test_vld4_p64(poly64_t const * ptr)189f4a2713aSLionel Sambuc poly64x1x4_t test_vld4_p64(poly64_t const * ptr) {
190*0a6a1f1dSLionel Sambuc   // CHECK-LABEL: test_vld4_p64
191f4a2713aSLionel Sambuc   return vld4_p64(ptr);
192*0a6a1f1dSLionel Sambuc   // CHECK: ld1 {{{ *v[0-9]+.1d, v[0-9]+.1d, v[0-9]+.1d, v[0-9]+.1d *}}}, [{{x[0-9]+|sp}}]
193f4a2713aSLionel Sambuc }
194f4a2713aSLionel Sambuc 
test_vld4q_p64(poly64_t const * ptr)195f4a2713aSLionel Sambuc poly64x2x4_t test_vld4q_p64(poly64_t const * ptr) {
196*0a6a1f1dSLionel Sambuc   // CHECK-LABEL: test_vld4q_p64
197f4a2713aSLionel Sambuc   return vld4q_p64(ptr);
198*0a6a1f1dSLionel Sambuc   // CHECK: ld4 {{{ *v[0-9]+.2d, v[0-9]+.2d, v[0-9]+.2d, v[0-9]+.2d *}}}, [{{x[0-9]+|sp}}]
199f4a2713aSLionel Sambuc }
200f4a2713aSLionel Sambuc 
test_vst2_p64(poly64_t * ptr,poly64x1x2_t val)201f4a2713aSLionel Sambuc void test_vst2_p64(poly64_t * ptr, poly64x1x2_t val) {
202*0a6a1f1dSLionel Sambuc   // CHECK-LABEL: test_vst2_p64
203f4a2713aSLionel Sambuc   return vst2_p64(ptr, val);
204*0a6a1f1dSLionel Sambuc   // CHECK:  st1 {{{ *v[0-9]+.1d, v[0-9]+.1d *}}}, [{{x[0-9]+|sp}}]
205f4a2713aSLionel Sambuc }
206f4a2713aSLionel Sambuc 
test_vst2q_p64(poly64_t * ptr,poly64x2x2_t val)207f4a2713aSLionel Sambuc void test_vst2q_p64(poly64_t * ptr, poly64x2x2_t val) {
208*0a6a1f1dSLionel Sambuc   // CHECK-LABEL: test_vst2q_p64
209f4a2713aSLionel Sambuc   return vst2q_p64(ptr, val);
210*0a6a1f1dSLionel Sambuc   // CHECK:  st2 {{{ *v[0-9]+.2d, v[0-9]+.2d *}}}, [{{x[0-9]+|sp}}]
211f4a2713aSLionel Sambuc }
212f4a2713aSLionel Sambuc 
test_vst3_p64(poly64_t * ptr,poly64x1x3_t val)213f4a2713aSLionel Sambuc void test_vst3_p64(poly64_t * ptr, poly64x1x3_t val) {
214*0a6a1f1dSLionel Sambuc   // CHECK-LABEL: test_vst3_p64
215f4a2713aSLionel Sambuc   return vst3_p64(ptr, val);
216*0a6a1f1dSLionel Sambuc   // CHECK:  st1 {{{ *v[0-9]+.1d, v[0-9]+.1d, v[0-9]+.1d *}}}, [{{x[0-9]+|sp}}]
217f4a2713aSLionel Sambuc }
218f4a2713aSLionel Sambuc 
test_vst3q_p64(poly64_t * ptr,poly64x2x3_t val)219f4a2713aSLionel Sambuc void test_vst3q_p64(poly64_t * ptr, poly64x2x3_t val) {
220*0a6a1f1dSLionel Sambuc   // CHECK-LABEL: test_vst3q_p64
221f4a2713aSLionel Sambuc   return vst3q_p64(ptr, val);
222*0a6a1f1dSLionel Sambuc   // CHECK:  st3 {{{ *v[0-9]+.2d, v[0-9]+.2d, v[0-9]+.2d *}}}, [{{x[0-9]+|sp}}]
223f4a2713aSLionel Sambuc }
224f4a2713aSLionel Sambuc 
test_vst4_p64(poly64_t * ptr,poly64x1x4_t val)225f4a2713aSLionel Sambuc void test_vst4_p64(poly64_t * ptr, poly64x1x4_t val) {
226*0a6a1f1dSLionel Sambuc   // CHECK-LABEL: test_vst4_p64
227f4a2713aSLionel Sambuc   return vst4_p64(ptr, val);
228*0a6a1f1dSLionel Sambuc   // CHECK:  st1 {{{ *v[0-9]+.1d, v[0-9]+.1d, v[0-9]+.1d, v[0-9]+.1d *}}}, [{{x[0-9]+|sp}}]
229f4a2713aSLionel Sambuc }
230f4a2713aSLionel Sambuc 
test_vst4q_p64(poly64_t * ptr,poly64x2x4_t val)231f4a2713aSLionel Sambuc void test_vst4q_p64(poly64_t * ptr, poly64x2x4_t val) {
232*0a6a1f1dSLionel Sambuc   // CHECK-LABEL: test_vst4q_p64
233f4a2713aSLionel Sambuc   return vst4q_p64(ptr, val);
234*0a6a1f1dSLionel Sambuc   // CHECK:  st4 {{{ *v[0-9]+.2d, v[0-9]+.2d, v[0-9]+.2d, v[0-9]+.2d *}}}, [{{x[0-9]+|sp}}]
235f4a2713aSLionel Sambuc }
236f4a2713aSLionel Sambuc 
test_vext_p64(poly64x1_t a,poly64x1_t b)237f4a2713aSLionel Sambuc poly64x1_t test_vext_p64(poly64x1_t a, poly64x1_t b) {
238*0a6a1f1dSLionel Sambuc   // CHECK-LABEL: test_vext_p64
239f4a2713aSLionel Sambuc   return vext_u64(a, b, 0);
240f4a2713aSLionel Sambuc 
241f4a2713aSLionel Sambuc }
242f4a2713aSLionel Sambuc 
test_vextq_p64(poly64x2_t a,poly64x2_t b)243f4a2713aSLionel Sambuc poly64x2_t test_vextq_p64(poly64x2_t a, poly64x2_t b) {
244*0a6a1f1dSLionel Sambuc   // CHECK-LABEL: test_vextq_p64
245f4a2713aSLionel Sambuc   return vextq_p64(a, b, 1);
246*0a6a1f1dSLionel Sambuc   // CHECK: ext {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{#0x8|#8}}
247f4a2713aSLionel Sambuc }
248f4a2713aSLionel Sambuc 
test_vzip1q_p64(poly64x2_t a,poly64x2_t b)249f4a2713aSLionel Sambuc poly64x2_t test_vzip1q_p64(poly64x2_t a, poly64x2_t b) {
250*0a6a1f1dSLionel Sambuc   // CHECK-LABEL: test_vzip1q_p64
251f4a2713aSLionel Sambuc   return vzip1q_p64(a, b);
252*0a6a1f1dSLionel Sambuc   // CHECK-ARM64: zip1 {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, {{v[0-9]+}}.2d
253f4a2713aSLionel Sambuc }
254f4a2713aSLionel Sambuc 
test_vzip2q_p64(poly64x2_t a,poly64x2_t b)255f4a2713aSLionel Sambuc poly64x2_t test_vzip2q_p64(poly64x2_t a, poly64x2_t b) {
256*0a6a1f1dSLionel Sambuc   // CHECK-LABEL: test_vzip2q_p64
257f4a2713aSLionel Sambuc   return vzip2q_u64(a, b);
258*0a6a1f1dSLionel Sambuc   // CHECK-ARM64: zip2 {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, {{v[0-9]+}}.2d
259f4a2713aSLionel Sambuc }
260f4a2713aSLionel Sambuc 
test_vuzp1q_p64(poly64x2_t a,poly64x2_t b)261f4a2713aSLionel Sambuc poly64x2_t test_vuzp1q_p64(poly64x2_t a, poly64x2_t b) {
262*0a6a1f1dSLionel Sambuc   // CHECK-LABEL: test_vuzp1q_p64
263f4a2713aSLionel Sambuc   return vuzp1q_p64(a, b);
264*0a6a1f1dSLionel Sambuc   // CHECK-ARM64: zip1 {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, {{v[0-9]+}}.2d
265f4a2713aSLionel Sambuc }
266f4a2713aSLionel Sambuc 
test_vuzp2q_p64(poly64x2_t a,poly64x2_t b)267f4a2713aSLionel Sambuc poly64x2_t test_vuzp2q_p64(poly64x2_t a, poly64x2_t b) {
268*0a6a1f1dSLionel Sambuc   // CHECK-LABEL: test_vuzp2q_p64
269f4a2713aSLionel Sambuc   return vuzp2q_u64(a, b);
270*0a6a1f1dSLionel Sambuc   // CHECK-ARM64: zip2 {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, {{v[0-9]+}}.2d
271f4a2713aSLionel Sambuc }
272f4a2713aSLionel Sambuc 
test_vtrn1q_p64(poly64x2_t a,poly64x2_t b)273f4a2713aSLionel Sambuc poly64x2_t test_vtrn1q_p64(poly64x2_t a, poly64x2_t b) {
274*0a6a1f1dSLionel Sambuc   // CHECK-LABEL: test_vtrn1q_p64
275f4a2713aSLionel Sambuc   return vtrn1q_p64(a, b);
276*0a6a1f1dSLionel Sambuc   // CHECK-ARM64: zip1 {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, {{v[0-9]+}}.2d
277f4a2713aSLionel Sambuc }
278f4a2713aSLionel Sambuc 
test_vtrn2q_p64(poly64x2_t a,poly64x2_t b)279f4a2713aSLionel Sambuc poly64x2_t test_vtrn2q_p64(poly64x2_t a, poly64x2_t b) {
280*0a6a1f1dSLionel Sambuc   // CHECK-LABEL: test_vtrn2q_p64
281f4a2713aSLionel Sambuc   return vtrn2q_u64(a, b);
282*0a6a1f1dSLionel Sambuc   // CHECK-ARM64: zip2 {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, {{v[0-9]+}}.2d
283f4a2713aSLionel Sambuc }
284f4a2713aSLionel Sambuc 
test_vsri_n_p64(poly64x1_t a,poly64x1_t b)285f4a2713aSLionel Sambuc poly64x1_t test_vsri_n_p64(poly64x1_t a, poly64x1_t b) {
286*0a6a1f1dSLionel Sambuc   // CHECK-LABEL: test_vsri_n_p64
287f4a2713aSLionel Sambuc   return vsri_n_p64(a, b, 33);
288f4a2713aSLionel Sambuc   // CHECK: sri {{d[0-9]+}}, {{d[0-9]+}}, #33
289f4a2713aSLionel Sambuc }
290f4a2713aSLionel Sambuc 
test_vsriq_n_p64(poly64x2_t a,poly64x2_t b)291f4a2713aSLionel Sambuc poly64x2_t test_vsriq_n_p64(poly64x2_t a, poly64x2_t b) {
292*0a6a1f1dSLionel Sambuc   // CHECK-LABEL: test_vsriq_n_p64
293f4a2713aSLionel Sambuc   return vsriq_n_p64(a, b, 64);
294f4a2713aSLionel Sambuc   // CHECK: sri {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, #64
295f4a2713aSLionel Sambuc }
296f4a2713aSLionel Sambuc 
297