1 /* { dg-do compile } */
2 /* { dg-options "-O" } */
3 /* { dg-final { check-function-bodies "**" "" "" { target lp64 } } } */
4
5 #include <arm_neon.h>
6
7 /*
8 ** s32_1:
9 ** ldr q0, \[x0\]
10 ** ret
11 */
12 int32x4_t s32_1(int32x2_t *ptr) {
13 if (__BYTE_ORDER__ == __ORDER_BIG_ENDIAN__)
14 return vcombine_s32 (ptr[1], ptr[0]);
15 else
16 return vcombine_s32 (ptr[0], ptr[1]);
17 }
18 /*
19 ** s32_2:
20 ** add x([0-9])+, x0, #?8
21 ** ld1 {v0\.d}\[1\], \[x\1\]
22 ** ret
23 */
24 int32x4_t s32_2(int32x2_t a0, int32x2_t *ptr) {
25 return vcombine_s32 (a0, ptr[1]);
26 }
27 /*
28 ** s32_3:
29 ** ldr d0, \[x0\], #?16
30 ** ld1 {v0\.d}\[1\], \[x0\]
31 ** ret
32 */
33 int32x4_t s32_3(int32x2_t *ptr) {
34 return vcombine_s32 (ptr[0], ptr[2]);
35 }
36
37 /*
38 ** f32_1:
39 ** ldr q0, \[x0\]
40 ** ret
41 */
42 float32x4_t f32_1(float32x2_t *ptr) {
43 if (__BYTE_ORDER__ == __ORDER_BIG_ENDIAN__)
44 return vcombine_f32 (ptr[1], ptr[0]);
45 else
46 return vcombine_f32 (ptr[0], ptr[1]);
47 }
48 /*
49 ** f32_2:
50 ** add x([0-9])+, x0, #?8
51 ** ld1 {v0\.d}\[1\], \[x\1\]
52 ** ret
53 */
54 float32x4_t f32_2(float32x2_t a0, float32x2_t *ptr) {
55 return vcombine_f32 (a0, ptr[1]);
56 }
57 /*
58 ** f32_3:
59 ** ldr d0, \[x0\], #?16
60 ** ld1 {v0\.d}\[1\], \[x0\]
61 ** ret
62 */
63 float32x4_t f32_3(float32x2_t *ptr) {
64 return vcombine_f32 (ptr[0], ptr[2]);
65 }