1 /* { dg-do compile } */
2 /* { dg-options "-O" } */
3 /* { dg-final { check-function-bodies "**" "" "" { target lp64 } } } */
15 int32x2_t
s32_1(int32_t a0
, int32_t a1
) {
16 if (__BYTE_ORDER__
== __ORDER_BIG_ENDIAN__
)
17 return (int32x2_t
) { a1
, a0
};
19 return (int32x2_t
) { a0
, a1
};
24 ** ld1 {v0\.s}\[1\], \[x1\]
27 int32x2_t
s32_2(int32_t a0
, int32_t *ptr
) {
28 if (__BYTE_ORDER__
== __ORDER_BIG_ENDIAN__
)
29 return (int32x2_t
) { ptr
[0], a0
};
31 return (int32x2_t
) { a0
, ptr
[0] };
39 int32x2_t
s32_3(int32_t *ptr
, int32_t a1
) {
40 if (__BYTE_ORDER__
== __ORDER_BIG_ENDIAN__
)
41 return (int32x2_t
) { a1
, ptr
[0] };
43 return (int32x2_t
) { ptr
[0], a1
};
50 void s32_4(int32x2_t
*res
, int32_t a0
, int32_t a1
) {
51 res
[0] = (int32x2_t
) { a0
, a1
};
55 ** stp w1, w2, \[x0, #?4\]
58 void s32_5(uintptr_t res
, int32_t a0
, int32_t a1
) {
59 *(int32x2_t
*)(res
+ 4) = (int32x2_t
) { a0
, a1
};
61 /* Currently uses d8 to hold res across the call. */
62 int32x2_t
s32_6(int32_t a0
, int32_t a1
) {
63 int32x2_t res
= { a0
, a1
};
70 ** uzp1 v0\.2s, v0\.2s, v1\.2s
73 float32x2_t
f32_1(float32_t a0
, float32_t a1
) {
74 if (__BYTE_ORDER__
== __ORDER_BIG_ENDIAN__
)
75 return (float32x2_t
) { a1
, a0
};
77 return (float32x2_t
) { a0
, a1
};
81 ** ld1 {v0\.s}\[1\], \[x0\]
84 float32x2_t
f32_2(float32_t a0
, float32_t
*ptr
) {
85 if (__BYTE_ORDER__
== __ORDER_BIG_ENDIAN__
)
86 return (float32x2_t
) { ptr
[0], a0
};
88 return (float32x2_t
) { a0
, ptr
[0] };
93 ** uzp1 v0\.2s, v0\.2s, v1\.2s
96 float32x2_t
f32_3(float32_t a0
, float32_t a1
, float32_t
*ptr
) {
97 if (__BYTE_ORDER__
== __ORDER_BIG_ENDIAN__
)
98 return (float32x2_t
) { a1
, ptr
[0] };
100 return (float32x2_t
) { ptr
[0], a1
};
104 ** stp s0, s1, \[x0\]
107 void f32_4(float32x2_t
*res
, float32_t a0
, float32_t a1
) {
108 res
[0] = (float32x2_t
) { a0
, a1
};
112 ** stp s0, s1, \[x0, #?4\]
115 void f32_5(uintptr_t res
, float32_t a0
, float32_t a1
) {
116 *(float32x2_t
*)(res
+ 4) = (float32x2_t
) { a0
, a1
};
118 /* Currently uses d8 to hold res across the call. */
119 float32x2_t
f32_6(float32_t a0
, float32_t a1
) {
120 float32x2_t res
= { a0
, a1
};