Mercurial > hg > CbC > CbC_gcc
comparison gcc/testsuite/gcc.target/aarch64/sve/pcs/struct.h @ 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 #ifndef STRUCT_H | |
2 #define STRUCT_H 1 | |
3 | |
4 #include <arm_sve.h> | |
5 | |
6 #ifndef __ARM_FEATURE_SVE_BITS | |
7 #error "__ARM_FEATURE_SVE_BITS should be defined" | |
8 #endif | |
9 | |
10 #define FIXED_ATTR \ | |
11 __attribute__ ((arm_sve_vector_bits (__ARM_FEATURE_SVE_BITS))) | |
12 | |
13 #define SVE_BYTES (__ARM_FEATURE_SVE_BITS / 8) | |
14 | |
15 typedef __SVInt8_t fixed_int8_t FIXED_ATTR; | |
16 typedef __SVInt16_t fixed_int16_t FIXED_ATTR; | |
17 typedef __SVInt32_t fixed_int32_t FIXED_ATTR; | |
18 typedef __SVInt64_t fixed_int64_t FIXED_ATTR; | |
19 | |
20 typedef __SVUint8_t fixed_uint8_t FIXED_ATTR; | |
21 typedef __SVUint16_t fixed_uint16_t FIXED_ATTR; | |
22 typedef __SVUint32_t fixed_uint32_t FIXED_ATTR; | |
23 typedef __SVUint64_t fixed_uint64_t FIXED_ATTR; | |
24 | |
25 typedef __SVBfloat16_t fixed_bfloat16_t FIXED_ATTR; | |
26 typedef __SVFloat16_t fixed_float16_t FIXED_ATTR; | |
27 typedef __SVFloat32_t fixed_float32_t FIXED_ATTR; | |
28 typedef __SVFloat64_t fixed_float64_t FIXED_ATTR; | |
29 | |
30 typedef __SVBool_t fixed_bool_t FIXED_ATTR; | |
31 | |
32 /* Define an asm function called NAME with return type RET_TYPE and | |
33 argument list ARG_TYPES. INSNS contains the body of the function, | |
34 except for the final "ret". | |
35 | |
36 Conservatively mark the function as a variant PCS function, | |
37 since many uses are. */ | |
38 #define ASM_FUNCTION(NAME, RET_TYPE, ARG_TYPES, INSNS) \ | |
39 extern RET_TYPE NAME ARG_TYPES; \ | |
40 asm( \ | |
41 " .type " #NAME ", %function\n" \ | |
42 #NAME ":\n" \ | |
43 " " INSNS "\n" \ | |
44 " ret\n" \ | |
45 " .size " #NAME ", .-" #NAME "\n" \ | |
46 " .variant_pcs " #NAME "\n" \ | |
47 ) | |
48 | |
49 /* Set the argument registers to fixed values. */ | |
50 #define CLEANSE \ | |
51 asm volatile ("mov\tx0, #-1\n\t" \ | |
52 "mov\tx1, #-1\n\t" \ | |
53 "mov\tx2, #-1\n\t" \ | |
54 "mov\tx3, #-1\n\t" \ | |
55 "mov\tx4, #-1\n\t" \ | |
56 "mov\tx5, #-1\n\t" \ | |
57 "mov\tx6, #-1\n\t" \ | |
58 "mov\tx7, #-1\n\t" \ | |
59 "mov\tx8, #-1\n\t" \ | |
60 "mov\tz0.b, #0xaf\n\t" \ | |
61 "mov\tz1.b, #0xaf\n\t" \ | |
62 "mov\tz2.b, #0xaf\n\t" \ | |
63 "mov\tz3.b, #0xaf\n\t" \ | |
64 "mov\tz4.b, #0xaf\n\t" \ | |
65 "mov\tz5.b, #0xaf\n\t" \ | |
66 "mov\tz6.b, #0xaf\n\t" \ | |
67 "mov\tz7.b, #0xaf\n\t" \ | |
68 "pfalse\tp0.b\n\t" \ | |
69 "pfalse\tp1.b\n\t" \ | |
70 "pfalse\tp2.b\n\t" \ | |
71 "pfalse\tp3.b" \ | |
72 ::: \ | |
73 "x0", "x1", "x2", "x3", "x4", "x5", "x6", "x7", "x8", \ | |
74 "z0", "z1", "z2", "z3", "z4", "z5", "z6", "z7", \ | |
75 "p0", "p1", "p2", "p3") | |
76 | |
77 #endif |