annotate gcc/config/arm/arm_cde.h @ 158:494b0b89df80 default tip

...
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Mon, 25 May 2020 18:13:55 +0900
parents 2b5abeee2509
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
152
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1 /* Arm Custom Datapath Extension (CDE) intrinsics include file.
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
2
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
3 Copyright (C) 2020 Free Software Foundation, Inc.
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
4 Contributed by Arm Ltd.
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
5
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
6 This file is part of GCC.
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
7
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
8 GCC is free software; you can redistribute it and/or modify it
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
9 under the terms of the GNU General Public License as published
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
10 by the Free Software Foundation; either version 3, or (at your
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
11 option) any later version.
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
12
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
13 GCC is distributed in the hope that it will be useful, but WITHOUT
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
14 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
15 or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
16 License for more details.
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
17
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
18 Under Section 7 of GPL version 3, you are granted additional
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
19 permissions described in the GCC Runtime Library Exception, version
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
20 3.1, as published by the Free Software Foundation.
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
21
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
22 You should have received a copy of the GNU General Public License and
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
23 a copy of the GCC Runtime Library Exception along with this program;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
24 see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
25 <http://www.gnu.org/licenses/>. */
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
26
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
27 #ifndef _GCC_ARM_CDE_H
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
28 #define _GCC_ARM_CDE_H 1
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
29
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
30 #include <stdint.h>
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
31
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
32 #if defined (__ARM_FEATURE_CDE)
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
33
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
34 #define __arm_cx1(coproc, imm) \
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
35 __builtin_arm_cx1si(coproc, imm)
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
36
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
37 #define __arm_cx1a(coproc, acc, imm) \
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
38 __builtin_arm_cx1asi(coproc, acc, imm)
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
39
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
40 #define __arm_cx2(coproc, n, imm) \
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
41 __builtin_arm_cx2si(coproc, n, imm)
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
42
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
43 #define __arm_cx2a(coproc, acc, n, imm) \
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
44 __builtin_arm_cx2asi(coproc, acc, n, imm)
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
45
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
46 #define __arm_cx3(coproc, n, m, imm) \
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
47 __builtin_arm_cx3si(coproc, n, m, imm)
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
48
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
49 #define __arm_cx3a(coproc, acc, n, m, imm) \
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
50 __builtin_arm_cx3asi(coproc, acc, n, m, imm)
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
51
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
52 #define __arm_cx1d(coproc, imm) \
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
53 __builtin_arm_cx1di(coproc, imm)
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
54
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
55 #define __arm_cx1da(coproc, acc, imm) \
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
56 __builtin_arm_cx1adi(coproc, acc, imm)
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
57
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
58 #define __arm_cx2d(coproc, n, imm) \
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
59 __builtin_arm_cx2di(coproc, n, imm)
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
60
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
61 #define __arm_cx2da(coproc, acc, n, imm) \
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
62 __builtin_arm_cx2adi(coproc, acc, n, imm)
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
63
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
64 #define __arm_cx3d(coproc, n, m, imm) \
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
65 __builtin_arm_cx3di(coproc, n, m, imm)
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
66
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
67 #define __arm_cx3da(coproc, acc, n, m, imm) \
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
68 __builtin_arm_cx3adi(coproc, acc, n, m, imm)
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
69
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
70 #if defined (__ARM_FP) || defined (__ARM_FEATURE_MVE)
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
71
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
72 /* CDE builtins using FPU/MVE registers. */
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
73
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
74 /* uint32_t
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
75 __arm_vcx1_u32(int coproc, uint32_t imm); */
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
76 #define __arm_vcx1_u32(coproc, imm) \
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
77 __builtin_arm_vcx1si(coproc, imm)
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
78
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
79 /* uint32_t
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
80 __arm_vcx1a_u32(int coproc, uint32_t acc, uint32_t imm); */
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
81 #define __arm_vcx1a_u32(coproc, acc, imm) \
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
82 __builtin_arm_vcx1asi(coproc, acc, imm)
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
83
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
84 /* uint32_t
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
85 __arm_vcx2_u32(int coproc, uint32_t n, uint32_t imm); */
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
86 #define __arm_vcx2_u32(coproc, n, imm) \
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
87 __builtin_arm_vcx2si(coproc, n, imm)
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
88
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
89 /* uint32_t
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
90 __arm_vcx2a_u32(int coproc, uint32_t acc, uint32_t n, uint32_t imm); */
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
91 #define __arm_vcx2a_u32(coproc, acc, n, imm) \
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
92 __builtin_arm_vcx2asi(coproc, acc, n, imm)
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
93
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
94 /* uint32_t
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
95 __arm_vcx3_u32(int coproc, uint32_t n, uint32_t m, uint32_t imm); */
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
96 #define __arm_vcx3_u32(coproc, n, m, imm) \
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
97 __builtin_arm_vcx3si(coproc, n, m, imm)
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
98
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
99 /* uint32_t
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
100 __arm_vcx3a_u32(int coproc, uint32_t acc, uint32_t n, uint32_t m,
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
101 uint32_t imm); */
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
102 #define __arm_vcx3a_u32(coproc, acc, n, m, imm) \
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
103 __builtin_arm_vcx3asi(coproc, acc, n, m, imm)
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
104
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
105 /* uint64_t
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
106 __arm_vcx1d_u64(int coproc, uint32_t imm); */
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
107 #define __arm_vcx1d_u64(coproc, imm) \
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
108 __builtin_arm_vcx1di(coproc, imm)
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
109
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
110 /* uint64_t
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
111 __arm_vcx1da_u64(int coproc, uint64_t acc, uint32_t imm); */
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
112 #define __arm_vcx1da_u64(coproc, acc, imm) \
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
113 __builtin_arm_vcx1adi(coproc, acc, imm)
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
114
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
115 /* uint64_t
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
116 __arm_vcx2d_u64(int coproc, uint64_t m, uint32_t imm); */
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
117 #define __arm_vcx2d_u64(coproc, m, imm) \
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
118 __builtin_arm_vcx2di(coproc, m, imm)
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
119
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
120 /* uint64_t
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
121 __arm_vcx2da_u64(int coproc, uint64_t acc, uint64_t m, uint32_t imm); */
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
122 #define __arm_vcx2da_u64(coproc, acc, m, imm) \
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
123 __builtin_arm_vcx2adi(coproc, acc, m, imm)
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
124
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
125 /* uint64_t
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
126 __arm_vcx3d_u64(int coproc, uint64_t n, uint64_t m, uint32_t imm); */
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
127 #define __arm_vcx3d_u64(coproc, n, m, imm) \
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
128 __builtin_arm_vcx3di(coproc, n, m, imm)
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
129
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
130 /* uint64_t
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
131 __arm_vcx3da_u64(int coproc, uint64_t acc, uint64_t n, uint64_t m,
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
132 uint32_t imm); */
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
133 #define __arm_vcx3da_u64(coproc, acc, n, m, imm) \
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
134 __builtin_arm_vcx3adi(coproc, acc, n, m, imm)
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
135
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
136 #endif /* __ARM_FP || __ARM_FEATURE_MVE. */
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
137 #endif /* __ARM_FEATURE_CDE. */
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
138
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
139 #if __ARM_FEATURE_MVE
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
140 #include "arm_mve_types.h"
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
141
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
142 #define __arm_vcx1q_u8(coproc, imm) \
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
143 (uint8x16_t)__builtin_arm_vcx1qv16qi(coproc, imm)
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
144 #define __arm_vcx1qa(coproc, acc, imm) \
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
145 __builtin_arm_vcx1qav16qi(coproc, acc, imm)
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
146 #define __arm_vcx2q(coproc, n, imm) \
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
147 __builtin_arm_vcx2qv16qi(coproc, n, imm)
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
148 #define __arm_vcx2q_u8(coproc, n, imm) \
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
149 (uint8x16_t)__builtin_arm_vcx2qv16qi(coproc, n, imm)
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
150 #define __arm_vcx2qa(coproc, acc, n, imm) \
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
151 __builtin_arm_vcx2qav16qi(coproc, acc, n, imm)
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
152 #define __arm_vcx3q(coproc, n, m, imm) \
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
153 __builtin_arm_vcx3qv16qi(coproc, n, m, imm)
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
154 #define __arm_vcx3q_u8(coproc, n, m, imm) \
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
155 (uint8x16_t)__builtin_arm_vcx3qv16qi(coproc, n, m, imm)
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
156 #define __arm_vcx3qa(coproc, acc, n, m, imm) \
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
157 __builtin_arm_vcx3qav16qi(coproc, acc, n, m, imm)
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
158
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
159 #define __arm_vcx1q_m(coproc, inactive, imm, pred) \
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
160 __builtin_arm_vcx1q_p_v16qi(coproc, inactive, imm, pred)
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
161 #define __arm_vcx1qa_m(coproc, acc, imm, pred) \
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
162 __builtin_arm_vcx1qa_p_v16qi(coproc, acc, imm, pred)
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
163
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
164 #define __arm_vcx2q_m(coproc, inactive, n, imm, pred) \
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
165 __builtin_arm_vcx2q_p_v16qi(coproc, inactive, n, imm, pred)
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
166 #define __arm_vcx2qa_m(coproc, acc, n, imm, pred) \
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
167 __builtin_arm_vcx2qa_p_v16qi(coproc, acc, n, imm, pred)
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
168
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
169 #define __arm_vcx3q_m(coproc, inactive, n, m, imm, pred) \
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
170 __builtin_arm_vcx3q_p_v16qi(coproc, inactive, n, m, imm, pred)
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
171 #define __arm_vcx3qa_m(coproc, acc, n, m, imm, pred) \
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
172 __builtin_arm_vcx3qa_p_v16qi(coproc, acc, n, m, imm, pred)
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
173
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
174 #endif
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
175
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
176 #endif