annotate gcc/testsuite/gcc.target/aarch64/sve/acle/general/attributes_1.c @ 152:2b5abeee2509

update gcc11
author anatofuz
date Mon, 25 May 2020 07:50:57 +0900
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
152
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1 /* { dg-options "-msve-vector-bits=256" } */
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
2
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
3 #include <arm_sve.h>
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
4
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
5 #ifndef __ARM_FEATURE_SVE_BITS
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
6 #error "__ARM_FEATURE_SVE_BITS is not defined but should be"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
7 #endif
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
8
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
9 #if __ARM_FEATURE_SVE_VECTOR_OPERATIONS != 1
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
10 #error "__ARM_FEATURE_SVE_VECTOR_OPERATIONS should be equal to 1"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
11 #endif
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
12
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
13 #ifndef __cplusplus
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
14 #define alignof _Alignof
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
15 #endif
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
16
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
17 #define N __ARM_FEATURE_SVE_BITS
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
18 #define FIXED_ATTR __attribute__ ((arm_sve_vector_bits (N)))
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
19 #define GNU_ATTR __attribute__ ((vector_size (N / 8)))
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
20
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
21 typedef svint8_t fixed_int8_t FIXED_ATTR;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
22 typedef svint16_t fixed_int16_t FIXED_ATTR;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
23 typedef svint32_t fixed_int32_t FIXED_ATTR;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
24 typedef svint64_t fixed_int64_t FIXED_ATTR;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
25
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
26 typedef svuint8_t fixed_uint8_t FIXED_ATTR;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
27 typedef svuint16_t fixed_uint16_t FIXED_ATTR;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
28 typedef svuint32_t fixed_uint32_t FIXED_ATTR;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
29 typedef svuint64_t fixed_uint64_t FIXED_ATTR;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
30
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
31 typedef svbfloat16_t fixed_bfloat16_t FIXED_ATTR;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
32 typedef svfloat16_t fixed_float16_t FIXED_ATTR;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
33 typedef svfloat32_t fixed_float32_t FIXED_ATTR;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
34 typedef svfloat64_t fixed_float64_t FIXED_ATTR;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
35
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
36 typedef svbool_t fixed_bool_t FIXED_ATTR;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
37
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
38 typedef int8_t gnu_int8_t GNU_ATTR;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
39 typedef int16_t gnu_int16_t GNU_ATTR;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
40 typedef int32_t gnu_int32_t GNU_ATTR;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
41 typedef int64_t gnu_int64_t GNU_ATTR;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
42
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
43 typedef uint8_t gnu_uint8_t GNU_ATTR;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
44 typedef uint16_t gnu_uint16_t GNU_ATTR;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
45 typedef uint32_t gnu_uint32_t GNU_ATTR;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
46 typedef uint64_t gnu_uint64_t GNU_ATTR;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
47
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
48 typedef bfloat16_t gnu_bfloat16_t GNU_ATTR;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
49 typedef float16_t gnu_float16_t GNU_ATTR;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
50 typedef float32_t gnu_float32_t GNU_ATTR;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
51 typedef float64_t gnu_float64_t GNU_ATTR;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
52
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
53 void f() {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
54 #define TEST_VECTOR(TYPE) \
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
55 do \
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
56 { \
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
57 int assert_sizeof[sizeof (TYPE) == N / 8 ? 1 : -1]; \
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
58 int assert_alignof[alignof (TYPE) == 16 ? 1 : -1]; \
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
59 } \
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
60 while (0)
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
61
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
62 TEST_VECTOR (fixed_int8_t);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
63 TEST_VECTOR (fixed_int16_t);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
64 TEST_VECTOR (fixed_int32_t);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
65 TEST_VECTOR (fixed_int64_t);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
66
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
67 TEST_VECTOR (fixed_uint8_t);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
68 TEST_VECTOR (fixed_uint16_t);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
69 TEST_VECTOR (fixed_uint32_t);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
70 TEST_VECTOR (fixed_uint64_t);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
71
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
72 TEST_VECTOR (fixed_bfloat16_t);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
73 TEST_VECTOR (fixed_float16_t);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
74 TEST_VECTOR (fixed_float32_t);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
75 TEST_VECTOR (fixed_float64_t);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
76
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
77 #undef TEST_VECTOR
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
78
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
79 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
80 int assert_sizeof[sizeof(fixed_bool_t) == N / 64 ? 1 : -1];
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
81 int assert_alignof[alignof(fixed_bool_t) == 2 ? 1 : -1];
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
82 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
83 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
84
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
85 #define TEST_GLOBAL(TYPE) \
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
86 extern fixed_##TYPE extern_##TYPE; \
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
87 fixed_##TYPE global_##TYPE;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
88
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
89 #define TEST_STRUCT(TYPE) \
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
90 struct struct_##TYPE \
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
91 { \
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
92 fixed_##TYPE a, b, c[3]; \
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
93 }; \
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
94 \
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
95 union union_##TYPE \
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
96 { \
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
97 fixed_##TYPE a, b, c[3]; \
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
98 };
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
99
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
100 #define TEST_CONVERT(TYPE, PREFIX) \
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
101 PREFIX##TYPE \
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
102 to_##PREFIX##TYPE (fixed_##TYPE x) \
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
103 { \
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
104 return x; \
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
105 } \
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
106 \
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
107 fixed_##TYPE \
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
108 from_##PREFIX##TYPE (PREFIX##TYPE x) \
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
109 { \
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
110 return x; \
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
111 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
112
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
113 #define TEST_UNARY(TYPE, NAME, OP) \
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
114 fixed_##TYPE \
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
115 NAME##_##TYPE (fixed_##TYPE x) \
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
116 { \
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
117 return OP x; \
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
118 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
119
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
120 #define TEST_BINARY(TYPE, NAME, OP) \
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
121 fixed_##TYPE \
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
122 NAME##_##TYPE (fixed_##TYPE x, fixed_##TYPE y) \
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
123 { \
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
124 return x OP y; \
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
125 } \
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
126 \
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
127 fixed_##TYPE \
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
128 NAME##_##TYPE##_eq (fixed_##TYPE x, fixed_##TYPE y) \
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
129 { \
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
130 x OP##= y; return x; \
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
131 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
132
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
133 #define TEST_COMPARISON(TYPE, NAME, OP) \
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
134 fixed_##TYPE \
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
135 NAME##_##TYPE (fixed_##TYPE x, fixed_##TYPE y) \
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
136 { \
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
137 return x OP y; \
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
138 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
139
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
140 #define TEST_CALL(TYPE) \
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
141 fixed_##TYPE \
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
142 call_##TYPE##_ff (svbool_t pg, fixed_##TYPE x, fixed_##TYPE y) \
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
143 { \
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
144 return svsel (pg, x, y); \
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
145 } \
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
146 \
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
147 fixed_##TYPE \
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
148 call_##TYPE##_sf (svbool_t pg, sv##TYPE x, fixed_##TYPE y) \
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
149 { \
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
150 return svsel (pg, x, y); \
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
151 } \
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
152 \
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
153 fixed_##TYPE \
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
154 call_##TYPE##_fs (svbool_t pg, fixed_##TYPE x, sv##TYPE y) \
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
155 { \
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
156 return svsel (pg, x, y); \
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
157 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
158
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
159 #define TEST_COMMON(TYPE) \
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
160 TEST_GLOBAL (TYPE) \
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
161 TEST_STRUCT (TYPE) \
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
162 TEST_CONVERT (TYPE, sv) \
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
163 TEST_CALL (TYPE)
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
164
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
165 #define TEST_VECTOR(TYPE) \
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
166 TEST_COMMON (TYPE) \
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
167 TEST_CONVERT (TYPE, gnu_) \
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
168 TEST_UNARY (TYPE, nop, +) \
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
169 TEST_UNARY (TYPE, neg, -) \
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
170 TEST_BINARY (TYPE, add, +) \
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
171 TEST_BINARY (TYPE, sub, -) \
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
172 TEST_BINARY (TYPE, mul, *) \
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
173 TEST_BINARY (TYPE, div, /) \
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
174
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
175 #define TEST_INT_VECTOR(TYPE) \
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
176 TEST_VECTOR (TYPE) \
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
177 TEST_UNARY (TYPE, inv, ~) \
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
178 TEST_BINARY (TYPE, mod, %) \
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
179 TEST_BINARY (TYPE, shl, <<) \
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
180 TEST_BINARY (TYPE, shr, >>) \
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
181 TEST_BINARY (TYPE, and, &) \
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
182 TEST_BINARY (TYPE, ior, |) \
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
183 TEST_BINARY (TYPE, xor, ^) \
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
184 TEST_COMPARISON (TYPE, eq, =) \
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
185 TEST_COMPARISON (TYPE, ne, !=) \
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
186 TEST_COMPARISON (TYPE, lt, <) \
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
187 TEST_COMPARISON (TYPE, le, <=) \
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
188 TEST_COMPARISON (TYPE, ge, >=) \
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
189 TEST_COMPARISON (TYPE, gt, >)
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
190
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
191 TEST_INT_VECTOR (int8_t);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
192 TEST_INT_VECTOR (int16_t);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
193 TEST_INT_VECTOR (int32_t);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
194 TEST_INT_VECTOR (int64_t);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
195
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
196 TEST_INT_VECTOR (uint8_t);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
197 TEST_INT_VECTOR (uint16_t);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
198 TEST_INT_VECTOR (uint32_t);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
199 TEST_INT_VECTOR (uint64_t);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
200
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
201 TEST_VECTOR (float16_t);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
202 TEST_VECTOR (float32_t);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
203 TEST_VECTOR (float64_t);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
204
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
205 TEST_COMMON (bool_t)