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