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