1 /* { dg-do compile } */
2 /* { dg-options "-O" } */
3 /* { dg-final { check-function-bodies "**" "" "" { target lp64 } } } */
15 int64x2_t
s64q_1(int64_t a0
, int64_t a1
) {
16 if (__BYTE_ORDER__
== __ORDER_BIG_ENDIAN__
)
17 return (int64x2_t
) { a1
, a0
};
19 return (int64x2_t
) { a0
, a1
};
24 ** ld1 {v0\.d}\[1\], \[x1\]
27 int64x2_t
s64q_2(int64_t a0
, int64_t *ptr
) {
28 if (__BYTE_ORDER__
== __ORDER_BIG_ENDIAN__
)
29 return (int64x2_t
) { ptr
[0], a0
};
31 return (int64x2_t
) { a0
, ptr
[0] };
39 int64x2_t
s64q_3(int64_t *ptr
, int64_t a1
) {
40 if (__BYTE_ORDER__
== __ORDER_BIG_ENDIAN__
)
41 return (int64x2_t
) { a1
, ptr
[0] };
43 return (int64x2_t
) { ptr
[0], a1
};
50 void s64q_4(int64x2_t
*res
, int64_t a0
, int64_t a1
) {
51 res
[0] = (int64x2_t
) { a0
, a1
};
55 ** stp x1, x2, \[x0, #?8\]
58 void s64q_5(uintptr_t res
, int64_t a0
, int64_t a1
) {
59 *(int64x2_t
*)(res
+ 8) = (int64x2_t
) { a0
, a1
};
70 int64x2_t
s64q_6(int64_t a0
, int64_t a1
) {
71 int64x2_t res
= { a0
, a1
};
78 ** uzp1 v0\.2d, v0\.2d, v1\.2d
81 float64x2_t
f64q_1(float64_t a0
, float64_t a1
) {
82 if (__BYTE_ORDER__
== __ORDER_BIG_ENDIAN__
)
83 return (float64x2_t
) { a1
, a0
};
85 return (float64x2_t
) { a0
, a1
};
89 ** ld1 {v0\.d}\[1\], \[x0\]
92 float64x2_t
f64q_2(float64_t a0
, float64_t
*ptr
) {
93 if (__BYTE_ORDER__
== __ORDER_BIG_ENDIAN__
)
94 return (float64x2_t
) { ptr
[0], a0
};
96 return (float64x2_t
) { a0
, ptr
[0] };
101 ** uzp1 v0\.2d, v0\.2d, v1\.2d
104 float64x2_t
f64q_3(float64_t a0
, float64_t a1
, float64_t
*ptr
) {
105 if (__BYTE_ORDER__
== __ORDER_BIG_ENDIAN__
)
106 return (float64x2_t
) { a1
, ptr
[0] };
108 return (float64x2_t
) { ptr
[0], a1
};
112 ** stp d0, d1, \[x0\]
115 void f64q_4(float64x2_t
*res
, float64_t a0
, float64_t a1
) {
116 res
[0] = (float64x2_t
) { a0
, a1
};
120 ** stp d0, d1, \[x0, #?8\]
123 void f64q_5(uintptr_t res
, float64_t a0
, float64_t a1
) {
124 *(float64x2_t
*)(res
+ 8) = (float64x2_t
) { a0
, a1
};
135 float64x2_t
f64q_6(float64_t a0
, float64_t a1
) {
136 float64x2_t res
= { a0
, a1
};
143 ** uzp1 v0\.2d, v0\.2d, v1\.2d
146 int32x4_t
s32q_1(int32x2_t a0
, int32x2_t a1
) {
147 return vcombine_s32 (a0
, a1
);
151 ** ld1 {v0\.d}\[1\], \[x0\]
154 int32x4_t
s32q_2(int32x2_t a0
, int32x2_t
*ptr
) {
155 return vcombine_s32 (a0
, ptr
[0]);
160 ** uzp1 v0\.2d, v0\.2d, v1\.2d
163 int32x4_t
s32q_3(int32x2_t a0
, int32x2_t a1
, int32x2_t
*ptr
) {
164 return vcombine_s32 (ptr
[0], a1
);
168 ** stp d0, d1, \[x0\]
171 void s32q_4(int32x4_t
*res
, int32x2_t a0
, int32x2_t a1
) {
172 if (__BYTE_ORDER__
== __ORDER_BIG_ENDIAN__
)
173 res
[0] = vcombine_s32 (a1
, a0
);
175 res
[0] = vcombine_s32 (a0
, a1
);
179 ** stp d0, d1, \[x0, #?8\]
182 void s32q_5(uintptr_t res
, int32x2_t a0
, int32x2_t a1
) {
183 if (__BYTE_ORDER__
== __ORDER_BIG_ENDIAN__
)
184 *(int32x4_t
*)(res
+ 8) = vcombine_s32 (a1
, a0
);
186 *(int32x4_t
*)(res
+ 8) = vcombine_s32 (a0
, a1
);
197 int32x4_t
s32q_6(int32x2_t a0
, int32x2_t a1
) {
198 int32x4_t res
= (__BYTE_ORDER__
== __ORDER_BIG_ENDIAN__
199 ? vcombine_s32 (a1
, a0
)
200 : vcombine_s32 (a0
, a1
));
207 ** uzp1 v0\.2d, v0\.2d, v1\.2d
210 float32x4_t
f32q_1(float32x2_t a0
, float32x2_t a1
) {
211 return vcombine_f32 (a0
, a1
);
215 ** ld1 {v0\.d}\[1\], \[x0\]
218 float32x4_t
f32q_2(float32x2_t a0
, float32x2_t
*ptr
) {
219 return vcombine_f32 (a0
, ptr
[0]);
224 ** uzp1 v0\.2d, v0\.2d, v1\.2d
227 float32x4_t
f32q_3(float32x2_t a0
, float32x2_t a1
, float32x2_t
*ptr
) {
228 return vcombine_f32 (ptr
[0], a1
);
232 ** stp d0, d1, \[x0\]
235 void f32q_4(float32x4_t
*res
, float32x2_t a0
, float32x2_t a1
) {
236 if (__BYTE_ORDER__
== __ORDER_BIG_ENDIAN__
)
237 res
[0] = vcombine_f32 (a1
, a0
);
239 res
[0] = vcombine_f32 (a0
, a1
);
243 ** stp d0, d1, \[x0, #?8\]
246 void f32q_5(uintptr_t res
, float32x2_t a0
, float32x2_t a1
) {
247 if (__BYTE_ORDER__
== __ORDER_BIG_ENDIAN__
)
248 *(float32x4_t
*)(res
+ 8) = vcombine_f32 (a1
, a0
);
250 *(float32x4_t
*)(res
+ 8) = vcombine_f32 (a0
, a1
);
261 float32x4_t
f32q_6(float32x2_t a0
, float32x2_t a1
) {
262 float32x4_t res
= (__BYTE_ORDER__
== __ORDER_BIG_ENDIAN__
263 ? vcombine_f32 (a1
, a0
)
264 : vcombine_f32 (a0
, a1
));