Rebase.
[official-gcc.git] / gcc / testsuite / gcc.target / aarch64 / aapcs64 / test_25.c
blob2febb79914eeabf61bfb34b316fbd672ca234921
1 /* Test AAPCS64 layout
3 Test homogeneous floating-point aggregates and homogeneous short-vector
4 aggregates, which should be passed in SIMD/FP registers or via the
5 stack. */
7 /* { dg-do run { target aarch64*-*-* } } */
9 #ifndef IN_FRAMEWORK
10 #define TESTFILE "test_25.c"
12 typedef float vf2_t __attribute__((vector_size (8)));
13 struct x0
15 vf2_t v;
16 } s0;
17 struct x3
19 vf2_t v[2];
20 } s3;
21 struct x4
23 vf2_t v[3];
24 } s4;
26 typedef float vf4_t __attribute__((vector_size(16)));
27 struct x1
29 vf4_t v;
30 } s1;
32 struct x2
34 double df[3];
35 } s2;
37 #define HAS_DATA_INIT_FUNC
38 void init_data ()
40 s0.v = (vf2_t){ 17.f, 18.f };
41 s1.v = (vf4_t){ 567.890f, 678.901f, 789.012f, 890.123f };
42 s2.df[0] = 123.456;
43 s2.df[1] = 234.567;
44 s2.df[2] = 345.678;
45 s3.v[0] = (vf2_t){ 19.f, 20.f };
46 s3.v[1] = (vf2_t){ 23.f, 24.f };
47 s4.v[0] = (vf2_t){ 27.f, 28.f };
48 s4.v[1] = (vf2_t){ 31.f, 32.f };
49 s4.v[2] = (vf2_t){ 35.f, 36.f };
52 #include "abitest.h"
53 #else
54 ARG (struct x0, s0, D0)
55 ARG (struct x2, s2, D1)
56 ARG (struct x1, s1, Q4)
57 ARG (struct x3, s3, D5)
58 ARG (struct x4, s4, STACK)
59 ARG (int, 0xdeadbeef, W0)
60 LAST_ARG (double, 456.789, STACK+24)
61 #endif