1 /* Intrinsic definitions of Andes NDS32 cpu for GNU compiler
2    Copyright (C) 2012-2021 Free Software Foundation, Inc.
3    Contributed by Andes Technology Corporation.
4 
5    This file is part of GCC.
6 
7    GCC is free software; you can redistribute it and/or modify it
8    under the terms of the GNU General Public License as published
9    by the Free Software Foundation; either version 3, or (at your
10    option) any later version.
11 
12    GCC is distributed in the hope that it will be useful, but WITHOUT
13    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
14    or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public
15    License for more details.
16 
17    Under Section 7 of GPL version 3, you are granted additional
18    permissions described in the GCC Runtime Library Exception, version
19    3.1, as published by the Free Software Foundation.
20 
21    You should have received a copy of the GNU General Public License and
22    a copy of the GCC Runtime Library Exception along with this program;
23    see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
24    <http://www.gnu.org/licenses/>.  */
25 
26 #ifndef _NDS32_INTRINSIC_H
27 #define _NDS32_INTRINSIC_H
28 
29 typedef signed char int8x4_t __attribute ((vector_size(4)));
30 typedef short int16x2_t __attribute ((vector_size(4)));
31 typedef int int32x2_t __attribute__((vector_size(8)));
32 typedef unsigned char uint8x4_t __attribute__ ((vector_size (4)));
33 typedef unsigned short uint16x2_t __attribute__ ((vector_size (4)));
34 typedef unsigned int uint32x2_t __attribute__((vector_size(8)));
35 
36 /* General instrinsic register names.  */
37 enum nds32_intrinsic_registers
38 {
39   __NDS32_REG_CPU_VER__ = 1024,
40   __NDS32_REG_ICM_CFG__,
41   __NDS32_REG_DCM_CFG__,
42   __NDS32_REG_MMU_CFG__,
43   __NDS32_REG_MSC_CFG__,
44   __NDS32_REG_MSC_CFG2__,
45   __NDS32_REG_CORE_ID__,
46   __NDS32_REG_FUCOP_EXIST__,
47 
48   __NDS32_REG_PSW__,
49   __NDS32_REG_IPSW__,
50   __NDS32_REG_P_IPSW__,
51   __NDS32_REG_IVB__,
52   __NDS32_REG_EVA__,
53   __NDS32_REG_P_EVA__,
54   __NDS32_REG_ITYPE__,
55   __NDS32_REG_P_ITYPE__,
56 
57   __NDS32_REG_MERR__,
58   __NDS32_REG_IPC__,
59   __NDS32_REG_P_IPC__,
60   __NDS32_REG_OIPC__,
61   __NDS32_REG_P_P0__,
62   __NDS32_REG_P_P1__,
63 
64   __NDS32_REG_INT_MASK__,
65   __NDS32_REG_INT_MASK2__,
66   __NDS32_REG_INT_MASK3__,
67   __NDS32_REG_INT_PEND__,
68   __NDS32_REG_INT_PEND2__,
69   __NDS32_REG_INT_PEND3__,
70   __NDS32_REG_SP_USR__,
71   __NDS32_REG_SP_PRIV__,
72   __NDS32_REG_INT_PRI__,
73   __NDS32_REG_INT_PRI2__,
74   __NDS32_REG_INT_PRI3__,
75   __NDS32_REG_INT_PRI4__,
76   __NDS32_REG_INT_CTRL__,
77   __NDS32_REG_INT_TRIGGER__,
78   __NDS32_REG_INT_TRIGGER2__,
79   __NDS32_REG_INT_GPR_PUSH_DIS__,
80 
81   __NDS32_REG_MMU_CTL__,
82   __NDS32_REG_L1_PPTB__,
83   __NDS32_REG_TLB_VPN__,
84   __NDS32_REG_TLB_DATA__,
85   __NDS32_REG_TLB_MISC__,
86   __NDS32_REG_VLPT_IDX__,
87   __NDS32_REG_ILMB__,
88   __NDS32_REG_DLMB__,
89 
90   __NDS32_REG_CACHE_CTL__,
91   __NDS32_REG_HSMP_SADDR__,
92   __NDS32_REG_HSMP_EADDR__,
93   __NDS32_REG_SDZ_CTL__,
94   __NDS32_REG_N12MISC_CTL__,
95   __NDS32_REG_MISC_CTL__,
96   __NDS32_REG_ECC_MISC__,
97 
98   __NDS32_REG_BPC0__,
99   __NDS32_REG_BPC1__,
100   __NDS32_REG_BPC2__,
101   __NDS32_REG_BPC3__,
102   __NDS32_REG_BPC4__,
103   __NDS32_REG_BPC5__,
104   __NDS32_REG_BPC6__,
105   __NDS32_REG_BPC7__,
106 
107   __NDS32_REG_BPA0__,
108   __NDS32_REG_BPA1__,
109   __NDS32_REG_BPA2__,
110   __NDS32_REG_BPA3__,
111   __NDS32_REG_BPA4__,
112   __NDS32_REG_BPA5__,
113   __NDS32_REG_BPA6__,
114   __NDS32_REG_BPA7__,
115 
116   __NDS32_REG_BPAM0__,
117   __NDS32_REG_BPAM1__,
118   __NDS32_REG_BPAM2__,
119   __NDS32_REG_BPAM3__,
120   __NDS32_REG_BPAM4__,
121   __NDS32_REG_BPAM5__,
122   __NDS32_REG_BPAM6__,
123   __NDS32_REG_BPAM7__,
124 
125   __NDS32_REG_BPV0__,
126   __NDS32_REG_BPV1__,
127   __NDS32_REG_BPV2__,
128   __NDS32_REG_BPV3__,
129   __NDS32_REG_BPV4__,
130   __NDS32_REG_BPV5__,
131   __NDS32_REG_BPV6__,
132   __NDS32_REG_BPV7__,
133 
134   __NDS32_REG_BPCID0__,
135   __NDS32_REG_BPCID1__,
136   __NDS32_REG_BPCID2__,
137   __NDS32_REG_BPCID3__,
138   __NDS32_REG_BPCID4__,
139   __NDS32_REG_BPCID5__,
140   __NDS32_REG_BPCID6__,
141   __NDS32_REG_BPCID7__,
142 
143   __NDS32_REG_EDM_CFG__,
144   __NDS32_REG_EDMSW__,
145   __NDS32_REG_EDM_CTL__,
146   __NDS32_REG_EDM_DTR__,
147   __NDS32_REG_BPMTC__,
148   __NDS32_REG_DIMBR__,
149 
150   __NDS32_REG_TECR0__,
151   __NDS32_REG_TECR1__,
152   __NDS32_REG_PFMC0__,
153   __NDS32_REG_PFMC1__,
154   __NDS32_REG_PFMC2__,
155   __NDS32_REG_PFM_CTL__,
156   __NDS32_REG_PFT_CTL__,
157   __NDS32_REG_HSP_CTL__,
158   __NDS32_REG_SP_BOUND__,
159   __NDS32_REG_SP_BOUND_PRIV__,
160   __NDS32_REG_SP_BASE__,
161   __NDS32_REG_SP_BASE_PRIV__,
162   __NDS32_REG_FUCOP_CTL__,
163   __NDS32_REG_PRUSR_ACC_CTL__,
164 
165   __NDS32_REG_DMA_CFG__,
166   __NDS32_REG_DMA_GCSW__,
167   __NDS32_REG_DMA_CHNSEL__,
168   __NDS32_REG_DMA_ACT__,
169   __NDS32_REG_DMA_SETUP__,
170   __NDS32_REG_DMA_ISADDR__,
171   __NDS32_REG_DMA_ESADDR__,
172   __NDS32_REG_DMA_TCNT__,
173   __NDS32_REG_DMA_STATUS__,
174   __NDS32_REG_DMA_2DSET__,
175   __NDS32_REG_DMA_2DSCTL__,
176   __NDS32_REG_DMA_RCNT__,
177   __NDS32_REG_DMA_HSTATUS__,
178 
179   __NDS32_REG_PC__,
180   __NDS32_REG_SP_USR1__,
181   __NDS32_REG_SP_USR2__,
182   __NDS32_REG_SP_USR3__,
183   __NDS32_REG_SP_PRIV1__,
184   __NDS32_REG_SP_PRIV2__,
185   __NDS32_REG_SP_PRIV3__,
186   __NDS32_REG_BG_REGION__,
187   __NDS32_REG_SFCR__,
188   __NDS32_REG_SIGN__,
189   __NDS32_REG_ISIGN__,
190   __NDS32_REG_P_ISIGN__,
191   __NDS32_REG_IFC_LP__,
192   __NDS32_REG_ITB__
193 };
194 
195 /* The cctl subtype for intrinsic.  */
196 enum nds32_cctl_valck
197 {
198   __NDS32_CCTL_L1D_VA_FILLCK__,
199   __NDS32_CCTL_L1D_VA_ULCK__,
200   __NDS32_CCTL_L1I_VA_FILLCK__,
201   __NDS32_CCTL_L1I_VA_ULCK__
202 };
203 
204 enum nds32_cctl_idxwbinv
205 {
206   __NDS32_CCTL_L1D_IX_WBINVAL__,
207   __NDS32_CCTL_L1D_IX_INVAL__,
208   __NDS32_CCTL_L1D_IX_WB__,
209   __NDS32_CCTL_L1I_IX_INVAL__
210 };
211 
212 enum nds32_cctl_vawbinv
213 {
214   __NDS32_CCTL_L1D_VA_INVAL__,
215   __NDS32_CCTL_L1D_VA_WB__,
216   __NDS32_CCTL_L1D_VA_WBINVAL__,
217   __NDS32_CCTL_L1I_VA_INVAL__
218 };
219 
220 enum nds32_cctl_idxread
221 {
222   __NDS32_CCTL_L1D_IX_RTAG__,
223   __NDS32_CCTL_L1D_IX_RWD__,
224   __NDS32_CCTL_L1I_IX_RTAG__,
225   __NDS32_CCTL_L1I_IX_RWD__
226 };
227 
228 enum nds32_cctl_idxwrite
229 {
230   __NDS32_CCTL_L1D_IX_WTAG__,
231   __NDS32_CCTL_L1D_IX_WWD__,
232   __NDS32_CCTL_L1I_IX_WTAG__,
233   __NDS32_CCTL_L1I_IX_WWD__
234 };
235 
236 enum nds32_dpref
237 {
238   __NDS32_DPREF_SRD__,
239   __NDS32_DPREF_MRD__,
240   __NDS32_DPREF_SWR__,
241   __NDS32_DPREF_MWR__,
242   __NDS32_DPREF_PTE__,
243   __NDS32_DPREF_CLWR__
244 };
245 
246 /* ------------------------------------------------------------------------ */
247 
248 /* Define interrupt number for intrinsic function.  */
249 #define NDS32_INT_H0 0
250 #define NDS32_INT_H1 1
251 #define NDS32_INT_H2 2
252 #define NDS32_INT_H3 3
253 #define NDS32_INT_H4 4
254 #define NDS32_INT_H5 5
255 #define NDS32_INT_H6 6
256 #define NDS32_INT_H7 7
257 #define NDS32_INT_H8 8
258 #define NDS32_INT_H9 9
259 #define NDS32_INT_H10 10
260 #define NDS32_INT_H11 11
261 #define NDS32_INT_H12 12
262 #define NDS32_INT_H13 13
263 #define NDS32_INT_H14 14
264 #define NDS32_INT_H15 15
265 #define NDS32_INT_H16 16
266 #define NDS32_INT_H17 17
267 #define NDS32_INT_H18 18
268 #define NDS32_INT_H19 19
269 #define NDS32_INT_H20 20
270 #define NDS32_INT_H21 21
271 #define NDS32_INT_H22 22
272 #define NDS32_INT_H23 23
273 #define NDS32_INT_H24 24
274 #define NDS32_INT_H25 25
275 #define NDS32_INT_H26 26
276 #define NDS32_INT_H27 27
277 #define NDS32_INT_H28 28
278 #define NDS32_INT_H29 29
279 #define NDS32_INT_H30 30
280 #define NDS32_INT_H31 31
281 #define NDS32_INT_H32 32
282 #define NDS32_INT_H33 33
283 #define NDS32_INT_H34 34
284 #define NDS32_INT_H35 35
285 #define NDS32_INT_H36 36
286 #define NDS32_INT_H37 37
287 #define NDS32_INT_H38 38
288 #define NDS32_INT_H39 39
289 #define NDS32_INT_H40 40
290 #define NDS32_INT_H41 41
291 #define NDS32_INT_H42 42
292 #define NDS32_INT_H43 43
293 #define NDS32_INT_H44 44
294 #define NDS32_INT_H45 45
295 #define NDS32_INT_H46 46
296 #define NDS32_INT_H47 47
297 #define NDS32_INT_H48 48
298 #define NDS32_INT_H49 49
299 #define NDS32_INT_H50 50
300 #define NDS32_INT_H51 51
301 #define NDS32_INT_H52 52
302 #define NDS32_INT_H53 53
303 #define NDS32_INT_H54 54
304 #define NDS32_INT_H55 55
305 #define NDS32_INT_H56 56
306 #define NDS32_INT_H57 57
307 #define NDS32_INT_H58 58
308 #define NDS32_INT_H59 59
309 #define NDS32_INT_H60 60
310 #define NDS32_INT_H61 61
311 #define NDS32_INT_H62 62
312 #define NDS32_INT_H63 63
313 #define NDS32_INT_SWI 64
314 #define NDS32_INT_ALZ 65
315 #define NDS32_INT_IDIVZE 66
316 #define NDS32_INT_DSSIM 67
317 
318 /* ------------------------------------------------------------------------ */
319 
320 /* Define intrinsic register name macro for compatibility.  */
321 #define NDS32_SR_CPU_VER               __NDS32_REG_CPU_VER__
322 #define NDS32_SR_ICM_CFG               __NDS32_REG_ICM_CFG__
323 #define NDS32_SR_DCM_CFG               __NDS32_REG_DCM_CFG__
324 #define NDS32_SR_MMU_CFG               __NDS32_REG_MMU_CFG__
325 #define NDS32_SR_MSC_CFG               __NDS32_REG_MSC_CFG__
326 #define NDS32_SR_MSC_CFG2              __NDS32_REG_MSC_CFG2__
327 #define NDS32_SR_CORE_ID               __NDS32_REG_CORE_ID__
328 #define NDS32_SR_FUCOP_EXIST           __NDS32_REG_FUCOP_EXIST__
329 #define NDS32_SR_PSW                   __NDS32_REG_PSW__
330 #define NDS32_SR_IPSW                  __NDS32_REG_IPSW__
331 #define NDS32_SR_P_IPSW                __NDS32_REG_P_IPSW__
332 #define NDS32_SR_IVB                   __NDS32_REG_IVB__
333 #define NDS32_SR_EVA                   __NDS32_REG_EVA__
334 #define NDS32_SR_P_EVA                 __NDS32_REG_P_EVA__
335 #define NDS32_SR_ITYPE                 __NDS32_REG_ITYPE__
336 #define NDS32_SR_P_ITYPE               __NDS32_REG_P_ITYPE__
337 #define NDS32_SR_MERR                  __NDS32_REG_MERR__
338 #define NDS32_SR_IPC                   __NDS32_REG_IPC__
339 #define NDS32_SR_P_IPC                 __NDS32_REG_P_IPC__
340 #define NDS32_SR_OIPC                  __NDS32_REG_OIPC__
341 #define NDS32_SR_P_P0                  __NDS32_REG_P_P0__
342 #define NDS32_SR_P_P1                  __NDS32_REG_P_P1__
343 #define NDS32_SR_INT_MASK              __NDS32_REG_INT_MASK__
344 #define NDS32_SR_INT_MASK2             __NDS32_REG_INT_MASK2__
345 #define NDS32_SR_INT_MASK3             __NDS32_REG_INT_MASK3__
346 #define NDS32_SR_INT_PEND              __NDS32_REG_INT_PEND__
347 #define NDS32_SR_INT_PEND2             __NDS32_REG_INT_PEND2__
348 #define NDS32_SR_INT_PEND3             __NDS32_REG_INT_PEND3__
349 #define NDS32_SR_SP_USR                __NDS32_REG_SP_USR__
350 #define NDS32_SR_SP_PRIV               __NDS32_REG_SP_PRIV__
351 #define NDS32_SR_INT_PRI               __NDS32_REG_INT_PRI__
352 #define NDS32_SR_INT_PRI2              __NDS32_REG_INT_PRI2__
353 #define NDS32_SR_INT_PRI3              __NDS32_REG_INT_PRI3__
354 #define NDS32_SR_INT_PRI4              __NDS32_REG_INT_PRI4__
355 #define NDS32_SR_INT_CTRL              __NDS32_REG_INT_CTRL__
356 #define NDS32_SR_INT_TRIGGER           __NDS32_REG_INT_TRIGGER__
357 #define NDS32_SR_INT_TRIGGER2          __NDS32_REG_INT_TRIGGER2__
358 #define NDS32_SR_INT_GPR_PUSH_DIS      __NDS32_REG_INT_GPR_PUSH_DIS__
359 #define NDS32_SR_MMU_CTL               __NDS32_REG_MMU_CTL__
360 #define NDS32_SR_L1_PPTB               __NDS32_REG_L1_PPTB__
361 #define NDS32_SR_TLB_VPN               __NDS32_REG_TLB_VPN__
362 #define NDS32_SR_TLB_DATA              __NDS32_REG_TLB_DATA__
363 #define NDS32_SR_TLB_MISC              __NDS32_REG_TLB_MISC__
364 #define NDS32_SR_VLPT_IDX              __NDS32_REG_VLPT_IDX__
365 #define NDS32_SR_ILMB                  __NDS32_REG_ILMB__
366 #define NDS32_SR_DLMB                  __NDS32_REG_DLMB__
367 #define NDS32_SR_CACHE_CTL             __NDS32_REG_CACHE_CTL__
368 #define NDS32_SR_HSMP_SADDR            __NDS32_REG_HSMP_SADDR__
369 #define NDS32_SR_HSMP_EADDR            __NDS32_REG_HSMP_EADDR__
370 #define NDS32_SR_SDZ_CTL               __NDS32_REG_SDZ_CTL__
371 #define NDS32_SR_N12MISC_CTL           __NDS32_REG_N12MISC_CTL__
372 #define NDS32_SR_MISC_CTL              __NDS32_REG_MISC_CTL__
373 #define NDS32_SR_ECC_MISC              __NDS32_REG_ECC_MISC__
374 #define NDS32_SR_BPC0                  __NDS32_REG_BPC0__
375 #define NDS32_SR_BPC1                  __NDS32_REG_BPC1__
376 #define NDS32_SR_BPC2                  __NDS32_REG_BPC2__
377 #define NDS32_SR_BPC3                  __NDS32_REG_BPC3__
378 #define NDS32_SR_BPC4                  __NDS32_REG_BPC4__
379 #define NDS32_SR_BPC5                  __NDS32_REG_BPC5__
380 #define NDS32_SR_BPC6                  __NDS32_REG_BPC6__
381 #define NDS32_SR_BPC7                  __NDS32_REG_BPC7__
382 #define NDS32_SR_BPA0                  __NDS32_REG_BPA0__
383 #define NDS32_SR_BPA1                  __NDS32_REG_BPA1__
384 #define NDS32_SR_BPA2                  __NDS32_REG_BPA2__
385 #define NDS32_SR_BPA3                  __NDS32_REG_BPA3__
386 #define NDS32_SR_BPA4                  __NDS32_REG_BPA4__
387 #define NDS32_SR_BPA5                  __NDS32_REG_BPA5__
388 #define NDS32_SR_BPA6                  __NDS32_REG_BPA6__
389 #define NDS32_SR_BPA7                  __NDS32_REG_BPA7__
390 #define NDS32_SR_BPAM0                 __NDS32_REG_BPAM0__
391 #define NDS32_SR_BPAM1                 __NDS32_REG_BPAM1__
392 #define NDS32_SR_BPAM2                 __NDS32_REG_BPAM2__
393 #define NDS32_SR_BPAM3                 __NDS32_REG_BPAM3__
394 #define NDS32_SR_BPAM4                 __NDS32_REG_BPAM4__
395 #define NDS32_SR_BPAM5                 __NDS32_REG_BPAM5__
396 #define NDS32_SR_BPAM6                 __NDS32_REG_BPAM6__
397 #define NDS32_SR_BPAM7                 __NDS32_REG_BPAM7__
398 #define NDS32_SR_BPV0                  __NDS32_REG_BPV0__
399 #define NDS32_SR_BPV1                  __NDS32_REG_BPV1__
400 #define NDS32_SR_BPV2                  __NDS32_REG_BPV2__
401 #define NDS32_SR_BPV3                  __NDS32_REG_BPV3__
402 #define NDS32_SR_BPV4                  __NDS32_REG_BPV4__
403 #define NDS32_SR_BPV5                  __NDS32_REG_BPV5__
404 #define NDS32_SR_BPV6                  __NDS32_REG_BPV6__
405 #define NDS32_SR_BPV7                  __NDS32_REG_BPV7__
406 #define NDS32_SR_BPCID0                __NDS32_REG_BPCID0__
407 #define NDS32_SR_BPCID1                __NDS32_REG_BPCID1__
408 #define NDS32_SR_BPCID2                __NDS32_REG_BPCID2__
409 #define NDS32_SR_BPCID3                __NDS32_REG_BPCID3__
410 #define NDS32_SR_BPCID4                __NDS32_REG_BPCID4__
411 #define NDS32_SR_BPCID5                __NDS32_REG_BPCID5__
412 #define NDS32_SR_BPCID6                __NDS32_REG_BPCID6__
413 #define NDS32_SR_BPCID7                __NDS32_REG_BPCID7__
414 #define NDS32_SR_EDM_CFG               __NDS32_REG_EDM_CFG__
415 #define NDS32_SR_EDMSW                 __NDS32_REG_EDMSW__
416 #define NDS32_SR_EDM_CTL               __NDS32_REG_EDM_CTL__
417 #define NDS32_SR_EDM_DTR               __NDS32_REG_EDM_DTR__
418 #define NDS32_SR_BPMTC                 __NDS32_REG_BPMTC__
419 #define NDS32_SR_DIMBR                 __NDS32_REG_DIMBR__
420 #define NDS32_SR_TECR0                 __NDS32_REG_TECR0__
421 #define NDS32_SR_TECR1                 __NDS32_REG_TECR1__
422 #define NDS32_SR_PFMC0                 __NDS32_REG_PFMC0__
423 #define NDS32_SR_PFMC1                 __NDS32_REG_PFMC1__
424 #define NDS32_SR_PFMC2                 __NDS32_REG_PFMC2__
425 #define NDS32_SR_PFM_CTL               __NDS32_REG_PFM_CTL__
426 #define NDS32_SR_HSP_CTL               __NDS32_REG_HSP_CTL__
427 #define NDS32_SR_SP_BOUND              __NDS32_REG_SP_BOUND__
428 #define NDS32_SR_SP_BOUND_PRIV         __NDS32_REG_SP_BOUND_PRIV__
429 #define NDS32_SR_SP_BASE               __NDS32_REG_SP_BASE__
430 #define NDS32_SR_SP_BASE_PRIV          __NDS32_REG_SP_BASE_PRIV__
431 #define NDS32_SR_FUCOP_CTL             __NDS32_REG_FUCOP_CTL__
432 #define NDS32_SR_PRUSR_ACC_CTL         __NDS32_REG_PRUSR_ACC_CTL__
433 #define NDS32_SR_DMA_CFG               __NDS32_REG_DMA_CFG__
434 #define NDS32_SR_DMA_GCSW              __NDS32_REG_DMA_GCSW__
435 #define NDS32_SR_DMA_CHNSEL            __NDS32_REG_DMA_CHNSEL__
436 #define NDS32_SR_DMA_ACT               __NDS32_REG_DMA_ACT__
437 #define NDS32_SR_DMA_SETUP             __NDS32_REG_DMA_SETUP__
438 #define NDS32_SR_DMA_ISADDR            __NDS32_REG_DMA_ISADDR__
439 #define NDS32_SR_DMA_ESADDR            __NDS32_REG_DMA_ESADDR__
440 #define NDS32_SR_DMA_TCNT              __NDS32_REG_DMA_TCNT__
441 #define NDS32_SR_DMA_STATUS            __NDS32_REG_DMA_STATUS__
442 #define NDS32_SR_DMA_2DSET             __NDS32_REG_DMA_2DSET__
443 #define NDS32_SR_DMA_2DSCTL            __NDS32_REG_DMA_2DSCTL__
444 #define NDS32_SR_DMA_RCNT              __NDS32_REG_DMA_RCNT__
445 #define NDS32_SR_DMA_HSTATUS           __NDS32_REG_DMA_HSTATUS__
446 #define NDS32_SR_SP_USR1               __NDS32_REG_SP_USR1__
447 #define NDS32_SR_SP_USR2               __NDS32_REG_SP_USR2__
448 #define NDS32_SR_SP_USR3               __NDS32_REG_SP_USR3__
449 #define NDS32_SR_SP_PRIV1              __NDS32_REG_SP_PRIV1__
450 #define NDS32_SR_SP_PRIV2              __NDS32_REG_SP_PRIV2__
451 #define NDS32_SR_SP_PRIV3              __NDS32_REG_SP_PRIV3__
452 #define NDS32_SR_BG_REGION             __NDS32_REG_BG_REGION__
453 #define NDS32_SR_SFCR                  __NDS32_REG_SFCR__
454 #define NDS32_SR_SIGN                  __NDS32_REG_SIGN__
455 #define NDS32_SR_ISIGN                 __NDS32_REG_ISIGN__
456 #define NDS32_SR_P_ISIGN               __NDS32_REG_P_ISIGN__
457 
458 #define NDS32_USR_PC                    __NDS32_REG_PC__
459 #define NDS32_USR_DMA_CFG               __NDS32_REG_DMA_CFG__
460 #define NDS32_USR_DMA_GCSW              __NDS32_REG_DMA_GCSW__
461 #define NDS32_USR_DMA_CHNSEL            __NDS32_REG_DMA_CHNSEL__
462 #define NDS32_USR_DMA_ACT               __NDS32_REG_DMA_ACT__
463 #define NDS32_USR_DMA_SETUP             __NDS32_REG_DMA_SETUP__
464 #define NDS32_USR_DMA_ISADDR            __NDS32_REG_DMA_ISADDR__
465 #define NDS32_USR_DMA_ESADDR            __NDS32_REG_DMA_ESADDR__
466 #define NDS32_USR_DMA_TCNT              __NDS32_REG_DMA_TCNT__
467 #define NDS32_USR_DMA_STATUS            __NDS32_REG_DMA_STATUS__
468 #define NDS32_USR_DMA_2DSET             __NDS32_REG_DMA_2DSET__
469 #define NDS32_USR_DMA_2DSCTL            __NDS32_REG_DMA_2DSCTL__
470 #define NDS32_USR_PFMC0                 __NDS32_REG_PFMC0__
471 #define NDS32_USR_PFMC1                 __NDS32_REG_PFMC1__
472 #define NDS32_USR_PFMC2                 __NDS32_REG_PFMC2__
473 #define NDS32_USR_PFM_CTL               __NDS32_REG_PFM_CTL__
474 #define NDS32_USR_IFC_LP                __NDS32_REG_IFC_LP__
475 #define NDS32_USR_ITB                   __NDS32_REG_ITB__
476 
477 #define NDS32_CCTL_L1D_VA_FILLCK        __NDS32_CCTL_L1D_VA_FILLCK__
478 #define NDS32_CCTL_L1D_VA_ULCK          __NDS32_CCTL_L1D_VA_ULCK__
479 #define NDS32_CCTL_L1I_VA_FILLCK        __NDS32_CCTL_L1I_VA_FILLCK__
480 #define NDS32_CCTL_L1I_VA_ULCK          __NDS32_CCTL_L1I_VA_ULCK__
481 
482 #define NDS32_CCTL_L1D_IX_WBINVAL       __NDS32_CCTL_L1D_IX_WBINVAL__
483 #define NDS32_CCTL_L1D_IX_INVAL         __NDS32_CCTL_L1D_IX_INVAL__
484 #define NDS32_CCTL_L1D_IX_WB            __NDS32_CCTL_L1D_IX_WB__
485 #define NDS32_CCTL_L1I_IX_INVAL         __NDS32_CCTL_L1I_IX_INVAL__
486 
487 #define NDS32_CCTL_L1D_VA_INVAL         __NDS32_CCTL_L1D_VA_INVAL__
488 #define NDS32_CCTL_L1D_VA_WB            __NDS32_CCTL_L1D_VA_WB__
489 #define NDS32_CCTL_L1D_VA_WBINVAL       __NDS32_CCTL_L1D_VA_WBINVAL__
490 #define NDS32_CCTL_L1I_VA_INVAL         __NDS32_CCTL_L1I_VA_INVAL__
491 
492 #define NDS32_CCTL_L1D_IX_RTAG          __NDS32_CCTL_L1D_IX_RTAG__
493 #define NDS32_CCTL_L1D_IX_RWD           __NDS32_CCTL_L1D_IX_RWD__
494 #define NDS32_CCTL_L1I_IX_RTAG          __NDS32_CCTL_L1I_IX_RTAG__
495 #define NDS32_CCTL_L1I_IX_RWD           __NDS32_CCTL_L1I_IX_RWD__
496 
497 #define NDS32_CCTL_L1D_IX_WTAG          __NDS32_CCTL_L1D_IX_WTAG__
498 #define NDS32_CCTL_L1D_IX_WWD           __NDS32_CCTL_L1D_IX_WWD__
499 #define NDS32_CCTL_L1I_IX_WTAG          __NDS32_CCTL_L1I_IX_WTAG__
500 #define NDS32_CCTL_L1I_IX_WWD           __NDS32_CCTL_L1I_IX_WWD__
501 
502 #define NDS32_DPREF_SRD                 __NDS32_DPREF_SRD__
503 #define NDS32_DPREF_MRD                 __NDS32_DPREF_MRD__
504 #define NDS32_DPREF_SWR                 __NDS32_DPREF_SWR__
505 #define NDS32_DPREF_MWR                 __NDS32_DPREF_MWR__
506 #define NDS32_DPREF_PTE                 __NDS32_DPREF_PTE__
507 #define NDS32_DPREF_CLWR                __NDS32_DPREF_CLWR__
508 
509 /* ------------------------------------------------------------------------ */
510 
511 
512 /* Map __nds32__xxx() to __builtin_xxx() functions for compatibility.  */
513 #define __nds32__llw(a) \
514   (__builtin_nds32_llw ((a)))
515 #define __nds32__lwup(a) \
516   (__builtin_nds32_lwup ((a)))
517 #define __nds32__lbup(a) \
518   (__builtin_nds32_lbup ((a)))
519 #define __nds32__scw(a, b) \
520   (__builtin_nds32_scw ((a), (b)))
521 #define __nds32__swup(a, b) \
522   (__builtin_nds32_swup ((a), (b)))
523 #define __nds32__sbup(a, b) \
524   (__builtin_nds32_sbup ((a), (b)))
525 
526 #define __nds32__mfsr(srname) \
527   (__builtin_nds32_mfsr ((srname)))
528 #define __nds32__mfusr(usrname) \
529   (__builtin_nds32_mfusr ((usrname)))
530 #define __nds32__mtsr(val, srname) \
531   (__builtin_nds32_mtsr ((val), (srname)))
532 #define __nds32__mtsr_isb(val, srname) \
533   (__builtin_nds32_mtsr_isb ((val), (srname)))
534 #define __nds32__mtsr_dsb(val, srname) \
535   (__builtin_nds32_mtsr_dsb ((val), (srname)))
536 #define __nds32__mtusr(val, usrname) \
537   (__builtin_nds32_mtusr ((val), (usrname)))
538 
539 #define __nds32__break(swid) \
540   (__builtin_nds32_break(swid))
541 #define __nds32__cctlva_lck(subtype, va) \
542   (__builtin_nds32_cctl_va_lck ((subtype), (va)))
543 #define __nds32__cctlidx_wbinval(subtype, idx) \
544   (__builtin_nds32_cctl_idx_wbinval ((subtype), (idx)))
545 #define __nds32__cctlva_wbinval_alvl(subtype, va) \
546   (__builtin_nds32_cctl_va_wbinval_la ((subtype), (va)))
547 #define __nds32__cctlva_wbinval_one_lvl(subtype, va) \
548   (__builtin_nds32_cctl_va_wbinval_l1 ((subtype), (va)))
549 #define __nds32__cctlidx_read(subtype, idx) \
550   (__builtin_nds32_cctl_idx_read ((subtype), (idx)))
551 #define __nds32__cctlidx_write(subtype, b, idxw) \
552   (__builtin_nds32_cctl_idx_write ((subtype), (b), (idxw)))
553 #define __nds32__cctl_l1d_invalall()  \
554   (__builtin_nds32_cctl_l1d_invalall())
555 #define __nds32__cctl_l1d_wball_alvl() \
556   (__builtin_nds32_cctl_l1d_wball_alvl())
557 #define __nds32__cctl_l1d_wball_one_lvl() \
558   (__builtin_nds32_cctl_l1d_wball_one_lvl())
559 
560 #define __nds32__dsb() \
561   (__builtin_nds32_dsb())
562 #define __nds32__isb() \
563   (__builtin_nds32_isb())
564 #define __nds32__msync_store() \
565   (__builtin_nds32_msync_store())
566 #define __nds32__msync_all() \
567   (__builtin_nds32_msync_all())
568 #define __nds32__nop() \
569   (__builtin_nds32_nop())
570 
571 #define __nds32__standby_wait_done() \
572   (__builtin_nds32_standby_wait_done())
573 #define __nds32__standby_no_wake_grant() \
574   (__builtin_nds32_standby_no_wake_grant())
575 #define __nds32__standby_wake_grant() \
576   (__builtin_nds32_standby_wake_grant())
577 #define __nds32__schedule_barrier() \
578   (__builtin_nds32_schedule_barrier())
579 #define __nds32__setend_big() \
580   (__builtin_nds32_setend_big())
581 #define __nds32__setend_little() \
582   (__builtin_nds32_setend_little())
583 #define __nds32__setgie_en() \
584   (__builtin_nds32_setgie_en())
585 #define __nds32__setgie_dis() \
586   (__builtin_nds32_setgie_dis())
587 
588 #define __nds32__jr_itoff(a) \
589   (__builtin_nds32_jr_itoff ((a)))
590 #define __nds32__jr_toff(a) \
591   (__builtin_nds32_jr_toff ((a)))
592 #define __nds32__jral_iton(a) \
593   (__builtin_nds32_jral_iton ((a)))
594 #define __nds32__jral_ton(a) \
595   (__builtin_nds32_jral_ton ((a)))
596 #define __nds32__ret_itoff(a) \
597   (__builtin_nds32_ret_itoff ((a)))
598 #define __nds32__ret_toff(a) \
599   (__builtin_nds32_ret_toff ((a)))
600 #define __nds32__svs(a, b) \
601   (__builtin_nds32_svs ((a), (b)))
602 #define __nds32__sva(a, b) \
603   (__builtin_nds32_sva ((a), (b)))
604 #define __nds32__dpref_qw(a, b, subtype) \
605   (__builtin_nds32_dpref_qw ((a), (b), (subtype)))
606 #define __nds32__dpref_hw(a, b, subtype) \
607   (__builtin_nds32_dpref_hw ((a), (b), (subtype)))
608 #define __nds32__dpref_w(a, b, subtype) \
609   (__builtin_nds32_dpref_w ((a), (b), (subtype)))
610 #define __nds32__dpref_dw(a, b, subtype) \
611   (__builtin_nds32_dpref_dw ((a), (b), (subtype)))
612 
613 #define __nds32__teqz(a, swid) \
614   (__builtin_nds32_teqz ((a), (swid)))
615 #define __nds32__tnez(a, swid) \
616   ( __builtin_nds32_tnez ((a), (swid)))
617 #define __nds32__trap(swid) \
618   (__builtin_nds32_trap ((swid)))
619 #define __nds32__isync(a) \
620   (__builtin_nds32_isync ((a)))
621 #define __nds32__rotr(val, ror) \
622   (__builtin_nds32_rotr ((val), (ror)))
623 #define __nds32__wsbh(a) \
624   (__builtin_nds32_wsbh ((a)))
625 #define __nds32__syscall(a) \
626   (__builtin_nds32_syscall ((a)))
627 #define __nds32__return_address() \
628   (__builtin_nds32_return_address())
629 #define __nds32__get_current_sp() \
630   (__builtin_nds32_get_current_sp())
631 #define __nds32__set_current_sp(a) \
632   (__builtin_nds32_set_current_sp ((a)))
633 #define __nds32__abs(a) \
634   (__builtin_nds32_pe_abs ((a)))
635 #define __nds32__ave(a, b) \
636   (__builtin_nds32_pe_ave ((a), (b)))
637 #define __nds32__bclr(a, pos) \
638   (__builtin_nds32_pe_bclr ((a), (pos)))
639 #define __nds32__bset(a, pos) \
640   (__builtin_nds32_pe_bset ((a), (pos)))
641 #define __nds32__btgl(a, pos) \
642   (__builtin_nds32_pe_btgl ((a), (pos)))
643 #define __nds32__btst(a, pos) \
644   (__builtin_nds32_pe_btst ((a), (pos)))
645 
646 #define __nds32__clip(a, imm) \
647   (__builtin_nds32_pe_clip ((a), (imm)))
648 #define __nds32__clips(a, imm) \
649   (__builtin_nds32_pe_clips ((a), (imm)))
650 #define __nds32__clz(a) \
651   (__builtin_nds32_pe_clz ((a)))
652 #define __nds32__clo(a) \
653   (__builtin_nds32_pe_clo ((a)))
654 #define __nds32__bse(r, a, b) \
655   (__builtin_nds32_pe2_bse ((r), (a), (b)))
656 #define __nds32__bsp(r, a, b) \
657   (__builtin_nds32_pe2_bsp ((r), (a), (b)))
658 #define __nds32__pbsad(a, b) \
659   (__builtin_nds32_pe2_pbsad ((a), (b)))
660 #define __nds32__pbsada(acc, a, b) \
661   (__builtin_nds32_pe2_pbsada ((acc), (a), (b)))
662 
663 #define __nds32__ffb(a, b) \
664   (__builtin_nds32_se_ffb ((a), (b)))
665 #define __nds32__ffmism(a, b) \
666   (__builtin_nds32_se_ffmism ((a), (b)))
667 #define __nds32__flmism(a, b) \
668   (__builtin_nds32_se_flmism ((a), (b)))
669 #define __nds32__fcpynsd(a, b) \
670   (__builtin_nds32_fcpynsd ((a), (b)))
671 #define __nds32__fcpynss(a, b) \
672   (__builtin_nds32_fcpynss ((a), (b)))
673 #define __nds32__fcpysd(a, b) \
674   (__builtin_nds32_fcpysd ((a), (b)))
675 #define __nds32__fcpyss(a, b) \
676   (__builtin_nds32_fcpyss ((a), (b)))
677 #define __nds32__fmfcsr() \
678   (__builtin_nds32_fmfcsr())
679 #define __nds32__fmtcsr(fpcsr) \
680   (__builtin_nds32_fmtcsr ((fpcsr)))
681 #define __nds32__fmfcfg() \
682   (__builtin_nds32_fmfcfg())
683 
684 #define __nds32__tlbop_trd(a) \
685   (__builtin_nds32_tlbop_trd ((a)))
686 #define __nds32__tlbop_twr(a) \
687   (__builtin_nds32_tlbop_twr ((a)))
688 #define __nds32__tlbop_rwr(a) \
689   (__builtin_nds32_tlbop_rwr ((a)))
690 #define __nds32__tlbop_rwlk(a) \
691   (__builtin_nds32_tlbop_rwlk ((a)))
692 #define __nds32__tlbop_unlk(a) \
693   (__builtin_nds32_tlbop_unlk ((a)))
694 #define __nds32__tlbop_pb(a) \
695   (__builtin_nds32_tlbop_pb ((a)))
696 #define __nds32__tlbop_inv(a) \
697   (__builtin_nds32_tlbop_inv ((a)))
698 #define __nds32__tlbop_flua() \
699 (__builtin_nds32_tlbop_flua())
700 
701 #define __nds32__kaddw(a, b) \
702   (__builtin_nds32_kaddw ((a), (b)))
703 #define __nds32__kaddh(a, b) \
704   (__builtin_nds32_kaddh ((a), (b)))
705 #define __nds32__ksubw(a, b) \
706   (__builtin_nds32_ksubw ((a), (b)))
707 #define __nds32__ksubh(a, b) \
708   (__builtin_nds32_ksubh ((a), (b)))
709 #define __nds32__kdmbb(a, b) \
710   (__builtin_nds32_kdmbb ((a), (b)))
711 #define __nds32__v_kdmbb(a, b) \
712   (__builtin_nds32_v_kdmbb ((a), (b)))
713 #define __nds32__kdmbt(a, b) \
714   (__builtin_nds32_kdmbt ((a), (b)))
715 #define __nds32__v_kdmbt(a, b) \
716   (__builtin_nds32_v_kdmbt ((a), (b)))
717 #define __nds32__kdmtb(a, b) \
718   (__builtin_nds32_kdmtb ((a), (b)))
719 #define __nds32__v_kdmtb(a, b) \
720   (__builtin_nds32_v_kdmtb ((a), (b)))
721 #define __nds32__kdmtt(a, b) \
722   (__builtin_nds32_kdmtt ((a), (b)))
723 #define __nds32__v_kdmtt(a, b) \
724   (__builtin_nds32_v_kdmtt ((a), (b)))
725 #define __nds32__khmbb(a, b) \
726   (__builtin_nds32_khmbb ((a), (b)))
727 #define __nds32__v_khmbb(a, b) \
728   (__builtin_nds32_v_khmbb ((a), (b)))
729 #define __nds32__khmbt(a, b) \
730   (__builtin_nds32_khmbt ((a), (b)))
731 #define __nds32__v_khmbt(a, b) \
732   (__builtin_nds32_v_khmbt ((a), (b)))
733 #define __nds32__khmtb(a, b) \
734   (__builtin_nds32_khmtb ((a), (b)))
735 #define __nds32__v_khmtb(a, b) \
736   (__builtin_nds32_v_khmtb ((a), (b)))
737 #define __nds32__khmtt(a, b) \
738   (__builtin_nds32_khmtt ((a), (b)))
739 #define __nds32__v_khmtt(a, b) \
740   (__builtin_nds32_v_khmtt ((a), (b)))
741 #define __nds32__kslraw(a, b) \
742   (__builtin_nds32_kslraw ((a), (b)))
743 #define __nds32__kslraw_u(a, b) \
744   (__builtin_nds32_kslraw_u ((a), (b)))
745 
746 #define __nds32__rdov() \
747   (__builtin_nds32_rdov())
748 #define __nds32__clrov() \
749   (__builtin_nds32_clrov())
750 #define __nds32__gie_dis() \
751   (__builtin_nds32_gie_dis())
752 #define __nds32__gie_en() \
753   (__builtin_nds32_gie_en())
754 #define __nds32__enable_int(a) \
755   (__builtin_nds32_enable_int ((a)))
756 #define __nds32__disable_int(a) \
757   (__builtin_nds32_disable_int ((a)))
758 #define __nds32__set_pending_swint() \
759   (__builtin_nds32_set_pending_swint())
760 #define __nds32__clr_pending_swint() \
761   (__builtin_nds32_clr_pending_swint())
762 #define __nds32__clr_pending_hwint(a) \
763   (__builtin_nds32_clr_pending_hwint(a))
764 #define __nds32__get_all_pending_int() \
765   (__builtin_nds32_get_all_pending_int())
766 #define __nds32__get_pending_int(a) \
767   (__builtin_nds32_get_pending_int ((a)))
768 #define __nds32__set_int_priority(a, b) \
769   (__builtin_nds32_set_int_priority ((a), (b)))
770 #define __nds32__get_int_priority(a) \
771   (__builtin_nds32_get_int_priority ((a)))
772 #define __nds32__set_trig_type_level(a) \
773   (__builtin_nds32_set_trig_level(a))
774 #define __nds32__set_trig_type_edge(a) \
775   (__builtin_nds32_set_trig_edge(a))
776 #define __nds32__get_trig_type(a) \
777   (__builtin_nds32_get_trig_type ((a)))
778 
779 #define __nds32__get_unaligned_hw(a) \
780   (__builtin_nds32_unaligned_load_hw ((a)))
781 #define __nds32__get_unaligned_w(a) \
782   (__builtin_nds32_unaligned_load_w ((a)))
783 #define __nds32__get_unaligned_dw(a) \
784   (__builtin_nds32_unaligned_load_dw ((a)))
785 #define __nds32__put_unaligned_hw(a, data) \
786   (__builtin_nds32_unaligned_store_hw ((a), (data)))
787 #define __nds32__put_unaligned_w(a, data) \
788   (__builtin_nds32_unaligned_store_w ((a), (data)))
789 #define __nds32__put_unaligned_dw(a, data) \
790   (__builtin_nds32_unaligned_store_dw ((a), (data)))
791 
792 #define __nds32__add16(a, b) \
793   (__builtin_nds32_add16 ((a), (b)))
794 #define __nds32__v_uadd16(a, b) \
795   (__builtin_nds32_v_uadd16 ((a), (b)))
796 #define __nds32__v_sadd16(a, b) \
797   (__builtin_nds32_v_sadd16 ((a), (b)))
798 #define __nds32__radd16(a, b) \
799   (__builtin_nds32_radd16 ((a), (b)))
800 #define __nds32__v_radd16(a, b) \
801   (__builtin_nds32_v_radd16 ((a), (b)))
802 #define __nds32__uradd16(a, b) \
803   (__builtin_nds32_uradd16 ((a), (b)))
804 #define __nds32__v_uradd16(a, b) \
805   (__builtin_nds32_v_uradd16 ((a), (b)))
806 #define __nds32__kadd16(a, b) \
807   (__builtin_nds32_kadd16 ((a), (b)))
808 #define __nds32__v_kadd16(a, b) \
809   (__builtin_nds32_v_kadd16 ((a), (b)))
810 #define __nds32__ukadd16(a, b) \
811   (__builtin_nds32_ukadd16 ((a), (b)))
812 #define __nds32__v_ukadd16(a, b) \
813   (__builtin_nds32_v_ukadd16 ((a), (b)))
814 #define __nds32__sub16(a, b) \
815   (__builtin_nds32_sub16 ((a), (b)))
816 #define __nds32__v_usub16(a, b) \
817   (__builtin_nds32_v_usub16 ((a), (b)))
818 #define __nds32__v_ssub16(a, b) \
819   (__builtin_nds32_v_ssub16 ((a), (b)))
820 #define __nds32__rsub16(a, b) \
821   (__builtin_nds32_rsub16 ((a), (b)))
822 #define __nds32__v_rsub16(a, b) \
823   (__builtin_nds32_v_rsub16 ((a), (b)))
824 #define __nds32__ursub16(a, b) \
825   (__builtin_nds32_ursub16 ((a), (b)))
826 #define __nds32__v_ursub16(a, b) \
827   (__builtin_nds32_v_ursub16 ((a), (b)))
828 #define __nds32__ksub16(a, b) \
829   (__builtin_nds32_ksub16 ((a), (b)))
830 #define __nds32__v_ksub16(a, b) \
831   (__builtin_nds32_v_ksub16 ((a), (b)))
832 #define __nds32__uksub16(a, b) \
833   (__builtin_nds32_uksub16 ((a), (b)))
834 #define __nds32__v_uksub16(a, b) \
835   (__builtin_nds32_v_uksub16 ((a), (b)))
836 #define __nds32__cras16(a, b) \
837   (__builtin_nds32_cras16 ((a), (b)))
838 #define __nds32__v_ucras16(a, b) \
839   (__builtin_nds32_v_ucras16 ((a), (b)))
840 #define __nds32__v_scras16(a, b) \
841   (__builtin_nds32_v_scras16 ((a), (b)))
842 #define __nds32__rcras16(a, b) \
843   (__builtin_nds32_rcras16 ((a), (b)))
844 #define __nds32__v_rcras16(a, b) \
845   (__builtin_nds32_v_rcras16 ((a), (b)))
846 #define __nds32__urcras16(a, b) \
847   (__builtin_nds32_urcras16 ((a), (b)))
848 #define __nds32__v_urcras16(a, b) \
849   (__builtin_nds32_v_urcras16 ((a), (b)))
850 #define __nds32__kcras16(a, b) \
851   (__builtin_nds32_kcras16 ((a), (b)))
852 #define __nds32__v_kcras16(a, b) \
853   (__builtin_nds32_v_kcras16 ((a), (b)))
854 #define __nds32__ukcras16(a, b) \
855   (__builtin_nds32_ukcras16 ((a), (b)))
856 #define __nds32__v_ukcras16(a, b) \
857   (__builtin_nds32_v_ukcras16 ((a), (b)))
858 #define __nds32__crsa16(a, b) \
859   (__builtin_nds32_crsa16 ((a), (b)))
860 #define __nds32__v_ucrsa16(a, b) \
861   (__builtin_nds32_v_ucrsa16 ((a), (b)))
862 #define __nds32__v_scrsa16(a, b) \
863   (__builtin_nds32_v_scrsa16 ((a), (b)))
864 #define __nds32__rcrsa16(a, b) \
865   (__builtin_nds32_rcrsa16 ((a), (b)))
866 #define __nds32__v_rcrsa16(a, b) \
867   (__builtin_nds32_v_rcrsa16 ((a), (b)))
868 #define __nds32__urcrsa16(a, b) \
869   (__builtin_nds32_urcrsa16 ((a), (b)))
870 #define __nds32__v_urcrsa16(a, b) \
871   (__builtin_nds32_v_urcrsa16 ((a), (b)))
872 #define __nds32__kcrsa16(a, b) \
873   (__builtin_nds32_kcrsa16 ((a), (b)))
874 #define __nds32__v_kcrsa16(a, b) \
875   (__builtin_nds32_v_kcrsa16 ((a), (b)))
876 #define __nds32__ukcrsa16(a, b) \
877   (__builtin_nds32_ukcrsa16 ((a), (b)))
878 #define __nds32__v_ukcrsa16(a, b) \
879   (__builtin_nds32_v_ukcrsa16 ((a), (b)))
880 
881 #define __nds32__add8(a, b) \
882   (__builtin_nds32_add8 ((a), (b)))
883 #define __nds32__v_uadd8(a, b) \
884   (__builtin_nds32_v_uadd8 ((a), (b)))
885 #define __nds32__v_sadd8(a, b) \
886   (__builtin_nds32_v_sadd8 ((a), (b)))
887 #define __nds32__radd8(a, b) \
888   (__builtin_nds32_radd8 ((a), (b)))
889 #define __nds32__v_radd8(a, b) \
890   (__builtin_nds32_v_radd8 ((a), (b)))
891 #define __nds32__uradd8(a, b) \
892   (__builtin_nds32_uradd8 ((a), (b)))
893 #define __nds32__v_uradd8(a, b) \
894   (__builtin_nds32_v_uradd8 ((a), (b)))
895 #define __nds32__kadd8(a, b) \
896   (__builtin_nds32_kadd8 ((a), (b)))
897 #define __nds32__v_kadd8(a, b) \
898   (__builtin_nds32_v_kadd8 ((a), (b)))
899 #define __nds32__ukadd8(a, b) \
900   (__builtin_nds32_ukadd8 ((a), (b)))
901 #define __nds32__v_ukadd8(a, b) \
902   (__builtin_nds32_v_ukadd8 ((a), (b)))
903 #define __nds32__sub8(a, b) \
904   (__builtin_nds32_sub8 ((a), (b)))
905 #define __nds32__v_usub8(a, b) \
906   (__builtin_nds32_v_usub8 ((a), (b)))
907 #define __nds32__v_ssub8(a, b) \
908   (__builtin_nds32_v_ssub8 ((a), (b)))
909 #define __nds32__rsub8(a, b) \
910   (__builtin_nds32_rsub8 ((a), (b)))
911 #define __nds32__v_rsub8(a, b) \
912   (__builtin_nds32_v_rsub8 ((a), (b)))
913 #define __nds32__ursub8(a, b) \
914   (__builtin_nds32_ursub8 ((a), (b)))
915 #define __nds32__v_ursub8(a, b) \
916   (__builtin_nds32_v_ursub8 ((a), (b)))
917 #define __nds32__ksub8(a, b) \
918   (__builtin_nds32_ksub8 ((a), (b)))
919 #define __nds32__v_ksub8(a, b) \
920   (__builtin_nds32_v_ksub8 ((a), (b)))
921 #define __nds32__uksub8(a, b) \
922   (__builtin_nds32_uksub8 ((a), (b)))
923 #define __nds32__v_uksub8(a, b) \
924   (__builtin_nds32_v_uksub8 ((a), (b)))
925 
926 #define __nds32__sra16(a, b) \
927   (__builtin_nds32_sra16 ((a), (b)))
928 #define __nds32__v_sra16(a, b) \
929   (__builtin_nds32_v_sra16 ((a), (b)))
930 #define __nds32__sra16_u(a, b) \
931   (__builtin_nds32_sra16_u ((a), (b)))
932 #define __nds32__v_sra16_u(a, b) \
933   (__builtin_nds32_v_sra16_u ((a), (b)))
934 #define __nds32__srl16(a, b) \
935   (__builtin_nds32_srl16 ((a), (b)))
936 #define __nds32__v_srl16(a, b) \
937   (__builtin_nds32_v_srl16 ((a), (b)))
938 #define __nds32__srl16_u(a, b) \
939   (__builtin_nds32_srl16_u ((a), (b)))
940 #define __nds32__v_srl16_u(a, b) \
941   (__builtin_nds32_v_srl16_u ((a), (b)))
942 #define __nds32__sll16(a, b) \
943   (__builtin_nds32_sll16 ((a), (b)))
944 #define __nds32__v_sll16(a, b) \
945   (__builtin_nds32_v_sll16 ((a), (b)))
946 #define __nds32__ksll16(a, b) \
947   (__builtin_nds32_ksll16 ((a), (b)))
948 #define __nds32__v_ksll16(a, b) \
949   (__builtin_nds32_v_ksll16 ((a), (b)))
950 #define __nds32__kslra16(a, b) \
951   (__builtin_nds32_kslra16 ((a), (b)))
952 #define __nds32__v_kslra16(a, b) \
953   (__builtin_nds32_v_kslra16 ((a), (b)))
954 #define __nds32__kslra16_u(a, b) \
955   (__builtin_nds32_kslra16_u ((a), (b)))
956 #define __nds32__v_kslra16_u(a, b) \
957   (__builtin_nds32_v_kslra16_u ((a), (b)))
958 
959 #define __nds32__cmpeq16(a, b) \
960   (__builtin_nds32_cmpeq16 ((a), (b)))
961 #define __nds32__v_scmpeq16(a, b) \
962   (__builtin_nds32_v_scmpeq16 ((a), (b)))
963 #define __nds32__v_ucmpeq16(a, b) \
964   (__builtin_nds32_v_ucmpeq16 ((a), (b)))
965 #define __nds32__scmplt16(a, b) \
966   (__builtin_nds32_scmplt16 ((a), (b)))
967 #define __nds32__v_scmplt16(a, b) \
968   (__builtin_nds32_v_scmplt16 ((a), (b)))
969 #define __nds32__scmple16(a, b) \
970   (__builtin_nds32_scmple16 ((a), (b)))
971 #define __nds32__v_scmple16(a, b) \
972   (__builtin_nds32_v_scmple16 ((a), (b)))
973 #define __nds32__ucmplt16(a, b) \
974   (__builtin_nds32_ucmplt16 ((a), (b)))
975 #define __nds32__v_ucmplt16(a, b) \
976   (__builtin_nds32_v_ucmplt16 ((a), (b)))
977 #define __nds32__ucmple16(a, b) \
978   (__builtin_nds32_ucmple16 ((a), (b)))
979 #define __nds32__v_ucmple16(a, b) \
980   (__builtin_nds32_v_ucmple16 ((a), (b)))
981 
982 #define __nds32__cmpeq8(a, b) \
983   (__builtin_nds32_cmpeq8 ((a), (b)))
984 #define __nds32__v_scmpeq8(a, b) \
985   (__builtin_nds32_v_scmpeq8 ((a), (b)))
986 #define __nds32__v_ucmpeq8(a, b) \
987   (__builtin_nds32_v_ucmpeq8 ((a), (b)))
988 #define __nds32__scmplt8(a, b) \
989   (__builtin_nds32_scmplt8 ((a), (b)))
990 #define __nds32__v_scmplt8(a, b) \
991   (__builtin_nds32_v_scmplt8 ((a), (b)))
992 #define __nds32__scmple8(a, b) \
993   (__builtin_nds32_scmple8 ((a), (b)))
994 #define __nds32__v_scmple8(a, b) \
995   (__builtin_nds32_v_scmple8 ((a), (b)))
996 #define __nds32__ucmplt8(a, b) \
997   (__builtin_nds32_ucmplt8 ((a), (b)))
998 #define __nds32__v_ucmplt8(a, b) \
999   (__builtin_nds32_v_ucmplt8 ((a), (b)))
1000 #define __nds32__ucmple8(a, b) \
1001   (__builtin_nds32_ucmple8 ((a), (b)))
1002 #define __nds32__v_ucmple8(a, b) \
1003   (__builtin_nds32_v_ucmple8 ((a), (b)))
1004 
1005 #define __nds32__smin16(a, b) \
1006   (__builtin_nds32_smin16 ((a), (b)))
1007 #define __nds32__v_smin16(a, b) \
1008   (__builtin_nds32_v_smin16 ((a), (b)))
1009 #define __nds32__umin16(a, b) \
1010   (__builtin_nds32_umin16 ((a), (b)))
1011 #define __nds32__v_umin16(a, b) \
1012   (__builtin_nds32_v_umin16 ((a), (b)))
1013 #define __nds32__smax16(a, b) \
1014   (__builtin_nds32_smax16 ((a), (b)))
1015 #define __nds32__v_smax16(a, b) \
1016   (__builtin_nds32_v_smax16 ((a), (b)))
1017 #define __nds32__umax16(a, b) \
1018   (__builtin_nds32_umax16 ((a), (b)))
1019 #define __nds32__v_umax16(a, b) \
1020   (__builtin_nds32_v_umax16 ((a), (b)))
1021 #define __nds32__sclip16(a, b) \
1022   (__builtin_nds32_sclip16 ((a), (b)))
1023 #define __nds32__v_sclip16(a, b) \
1024   (__builtin_nds32_v_sclip16 ((a), (b)))
1025 #define __nds32__uclip16(a, b) \
1026   (__builtin_nds32_uclip16 ((a), (b)))
1027 #define __nds32__v_uclip16(a, b) \
1028   (__builtin_nds32_v_uclip16 ((a), (b)))
1029 #define __nds32__khm16(a, b) \
1030   (__builtin_nds32_khm16 ((a), (b)))
1031 #define __nds32__v_khm16(a, b) \
1032   (__builtin_nds32_v_khm16 ((a), (b)))
1033 #define __nds32__khmx16(a, b) \
1034   (__builtin_nds32_khmx16 ((a), (b)))
1035 #define __nds32__v_khmx16(a, b) \
1036   (__builtin_nds32_v_khmx16 ((a), (b)))
1037 #define __nds32__kabs16(a) \
1038   (__builtin_nds32_kabs16 ((a)))
1039 #define __nds32__v_kabs16(a) \
1040   (__builtin_nds32_v_kabs16 ((a)))
1041 
1042 #define __nds32__smin8(a, b) \
1043   (__builtin_nds32_smin8 ((a), (b)))
1044 #define __nds32__v_smin8(a, b) \
1045   (__builtin_nds32_v_smin8 ((a), (b)))
1046 #define __nds32__umin8(a, b) \
1047   (__builtin_nds32_umin8 ((a), (b)))
1048 #define __nds32__v_umin8(a, b) \
1049   (__builtin_nds32_v_umin8 ((a), (b)))
1050 #define __nds32__smax8(a, b) \
1051   (__builtin_nds32_smax8 ((a), (b)))
1052 #define __nds32__v_smax8(a, b) \
1053   (__builtin_nds32_v_smax8 ((a), (b)))
1054 #define __nds32__umax8(a, b) \
1055   (__builtin_nds32_umax8 ((a), (b)))
1056 #define __nds32__v_umax8(a, b) \
1057   (__builtin_nds32_v_umax8 ((a), (b)))
1058 #define __nds32__kabs8(a) \
1059   (__builtin_nds32_kabs8 ((a)))
1060 #define __nds32__v_kabs8(a) \
1061   (__builtin_nds32_v_kabs8 ((a)))
1062 
1063 #define __nds32__sunpkd810(a) \
1064   (__builtin_nds32_sunpkd810 ((a)))
1065 #define __nds32__v_sunpkd810(a) \
1066   (__builtin_nds32_v_sunpkd810 ((a)))
1067 #define __nds32__sunpkd820(a) \
1068   (__builtin_nds32_sunpkd820 ((a)))
1069 #define __nds32__v_sunpkd820(a) \
1070   (__builtin_nds32_v_sunpkd820 ((a)))
1071 #define __nds32__sunpkd830(a) \
1072   (__builtin_nds32_sunpkd830 ((a)))
1073 #define __nds32__v_sunpkd830(a) \
1074   (__builtin_nds32_v_sunpkd830 ((a)))
1075 #define __nds32__sunpkd831(a) \
1076   (__builtin_nds32_sunpkd831 ((a)))
1077 #define __nds32__v_sunpkd831(a) \
1078   (__builtin_nds32_v_sunpkd831 ((a)))
1079 #define __nds32__zunpkd810(a) \
1080   (__builtin_nds32_zunpkd810 ((a)))
1081 #define __nds32__v_zunpkd810(a) \
1082   (__builtin_nds32_v_zunpkd810 ((a)))
1083 #define __nds32__zunpkd820(a) \
1084   (__builtin_nds32_zunpkd820 ((a)))
1085 #define __nds32__v_zunpkd820(a) \
1086   (__builtin_nds32_v_zunpkd820 ((a)))
1087 #define __nds32__zunpkd830(a) \
1088   (__builtin_nds32_zunpkd830 ((a)))
1089 #define __nds32__v_zunpkd830(a) \
1090   (__builtin_nds32_v_zunpkd830 ((a)))
1091 #define __nds32__zunpkd831(a) \
1092   (__builtin_nds32_zunpkd831 ((a)))
1093 #define __nds32__v_zunpkd831(a) \
1094   (__builtin_nds32_v_zunpkd831 ((a)))
1095 
1096 #define __nds32__raddw(a, b) \
1097   (__builtin_nds32_raddw ((a), (b)))
1098 #define __nds32__uraddw(a, b) \
1099   (__builtin_nds32_uraddw ((a), (b)))
1100 #define __nds32__rsubw(a, b) \
1101   (__builtin_nds32_rsubw ((a), (b)))
1102 #define __nds32__ursubw(a, b) \
1103   (__builtin_nds32_ursubw ((a), (b)))
1104 
1105 #define __nds32__sra_u(a, b) \
1106   (__builtin_nds32_sra_u ((a), (b)))
1107 #define __nds32__ksll(a, b) \
1108   (__builtin_nds32_ksll ((a), (b)))
1109 #define __nds32__pkbb16(a, b) \
1110   (__builtin_nds32_pkbb16 ((a), (b)))
1111 #define __nds32__v_pkbb16(a, b) \
1112   (__builtin_nds32_v_pkbb16 ((a), (b)))
1113 #define __nds32__pkbt16(a, b) \
1114   (__builtin_nds32_pkbt16 ((a), (b)))
1115 #define __nds32__v_pkbt16(a, b) \
1116   (__builtin_nds32_v_pkbt16 ((a), (b)))
1117 #define __nds32__pktb16(a, b) \
1118   (__builtin_nds32_pktb16 ((a), (b)))
1119 #define __nds32__v_pktb16(a, b) \
1120   (__builtin_nds32_v_pktb16 ((a), (b)))
1121 #define __nds32__pktt16(a, b) \
1122   (__builtin_nds32_pktt16 ((a), (b)))
1123 #define __nds32__v_pktt16(a, b) \
1124   (__builtin_nds32_v_pktt16 ((a), (b)))
1125 
1126 #define __nds32__smmul(a, b) \
1127   (__builtin_nds32_smmul ((a), (b)))
1128 #define __nds32__smmul_u(a, b) \
1129   (__builtin_nds32_smmul_u ((a), (b)))
1130 #define __nds32__kmmac(r, a, b) \
1131   (__builtin_nds32_kmmac ((r), (a), (b)))
1132 #define __nds32__kmmac_u(r, a, b) \
1133   (__builtin_nds32_kmmac_u ((r), (a), (b)))
1134 #define __nds32__kmmsb(r, a, b) \
1135   (__builtin_nds32_kmmsb ((r), (a), (b)))
1136 #define __nds32__kmmsb_u(r, a, b) \
1137   (__builtin_nds32_kmmsb_u ((r), (a), (b)))
1138 #define __nds32__kwmmul(a, b) \
1139   (__builtin_nds32_kwmmul ((a), (b)))
1140 #define __nds32__kwmmul_u(a, b) \
1141   (__builtin_nds32_kwmmul_u ((a), (b)))
1142 
1143 #define __nds32__smmwb(a, b) \
1144   (__builtin_nds32_smmwb ((a), (b)))
1145 #define __nds32__v_smmwb(a, b) \
1146   (__builtin_nds32_v_smmwb ((a), (b)))
1147 #define __nds32__smmwb_u(a, b) \
1148   (__builtin_nds32_smmwb_u ((a), (b)))
1149 #define __nds32__v_smmwb_u(a, b) \
1150   (__builtin_nds32_v_smmwb_u ((a), (b)))
1151 #define __nds32__smmwt(a, b) \
1152   (__builtin_nds32_smmwt ((a), (b)))
1153 #define __nds32__v_smmwt(a, b) \
1154   (__builtin_nds32_v_smmwt ((a), (b)))
1155 #define __nds32__smmwt_u(a, b) \
1156   (__builtin_nds32_smmwt_u ((a), (b)))
1157 #define __nds32__v_smmwt_u(a, b) \
1158   (__builtin_nds32_v_smmwt_u ((a), (b)))
1159 #define __nds32__kmmawb(r, a, b) \
1160   (__builtin_nds32_kmmawb ((r), (a), (b)))
1161 #define __nds32__v_kmmawb(r, a, b) \
1162   (__builtin_nds32_v_kmmawb ((r), (a), (b)))
1163 #define __nds32__kmmawb_u(r, a, b) \
1164   (__builtin_nds32_kmmawb_u ((r), (a), (b)))
1165 #define __nds32__v_kmmawb_u(r, a, b) \
1166   (__builtin_nds32_v_kmmawb_u ((r), (a), (b)))
1167 #define __nds32__kmmawt(r, a, b) \
1168   (__builtin_nds32_kmmawt ((r), (a), (b)))
1169 #define __nds32__v_kmmawt(r, a, b) \
1170   (__builtin_nds32_v_kmmawt ((r), (a), (b)))
1171 #define __nds32__kmmawt_u(r, a, b) \
1172   (__builtin_nds32_kmmawt_u ((r), (a), (b)))
1173 #define __nds32__v_kmmawt_u(r, a, b) \
1174   (__builtin_nds32_v_kmmawt_u ((r), (a), (b)))
1175 
1176 #define __nds32__smbb(a, b) \
1177   (__builtin_nds32_smbb ((a), (b)))
1178 #define __nds32__v_smbb(a, b) \
1179   (__builtin_nds32_v_smbb ((a), (b)))
1180 #define __nds32__smbt(a, b) \
1181   (__builtin_nds32_smbt ((a), (b)))
1182 #define __nds32__v_smbt(a, b) \
1183   (__builtin_nds32_v_smbt ((a), (b)))
1184 #define __nds32__smtt(a, b) \
1185   (__builtin_nds32_smtt ((a), (b)))
1186 #define __nds32__v_smtt(a, b) \
1187   (__builtin_nds32_v_smtt ((a), (b)))
1188 #define __nds32__kmda(a, b) \
1189   (__builtin_nds32_kmda ((a), (b)))
1190 #define __nds32__v_kmda(a, b) \
1191   (__builtin_nds32_v_kmda ((a), (b)))
1192 #define __nds32__kmxda(a, b) \
1193   (__builtin_nds32_kmxda ((a), (b)))
1194 #define __nds32__v_kmxda(a, b) \
1195   (__builtin_nds32_v_kmxda ((a), (b)))
1196 #define __nds32__smds(a, b) \
1197   (__builtin_nds32_smds ((a), (b)))
1198 #define __nds32__v_smds(a, b) \
1199   (__builtin_nds32_v_smds ((a), (b)))
1200 #define __nds32__smdrs(a, b) \
1201   (__builtin_nds32_smdrs ((a), (b)))
1202 #define __nds32__v_smdrs(a, b) \
1203   (__builtin_nds32_v_smdrs ((a), (b)))
1204 #define __nds32__smxds(a, b) \
1205   (__builtin_nds32_smxds ((a), (b)))
1206 #define __nds32__v_smxds(a, b) \
1207   (__builtin_nds32_v_smxds ((a), (b)))
1208 #define __nds32__kmabb(r, a, b) \
1209   (__builtin_nds32_kmabb ((r), (a), (b)))
1210 #define __nds32__v_kmabb(r, a, b) \
1211   (__builtin_nds32_v_kmabb ((r), (a), (b)))
1212 #define __nds32__kmabt(r, a, b) \
1213   (__builtin_nds32_kmabt ((r), (a), (b)))
1214 #define __nds32__v_kmabt(r, a, b) \
1215   (__builtin_nds32_v_kmabt ((r), (a), (b)))
1216 #define __nds32__kmatt(r, a, b) \
1217   (__builtin_nds32_kmatt ((r), (a), (b)))
1218 #define __nds32__v_kmatt(r, a, b) \
1219   (__builtin_nds32_v_kmatt ((r), (a), (b)))
1220 #define __nds32__kmada(r, a, b) \
1221   (__builtin_nds32_kmada ((r), (a), (b)))
1222 #define __nds32__v_kmada(r, a, b) \
1223   (__builtin_nds32_v_kmada ((r), (a), (b)))
1224 #define __nds32__kmaxda(r, a, b) \
1225   (__builtin_nds32_kmaxda ((r), (a), (b)))
1226 #define __nds32__v_kmaxda(r, a, b) \
1227   (__builtin_nds32_v_kmaxda ((r), (a), (b)))
1228 #define __nds32__kmads(r, a, b) \
1229   (__builtin_nds32_kmads ((r), (a), (b)))
1230 #define __nds32__v_kmads(r, a, b) \
1231   (__builtin_nds32_v_kmads ((r), (a), (b)))
1232 #define __nds32__kmadrs(r, a, b) \
1233   (__builtin_nds32_kmadrs ((r), (a), (b)))
1234 #define __nds32__v_kmadrs(r, a, b) \
1235   (__builtin_nds32_v_kmadrs ((r), (a), (b)))
1236 #define __nds32__kmaxds(r, a, b) \
1237   (__builtin_nds32_kmaxds ((r), (a), (b)))
1238 #define __nds32__v_kmaxds(r, a, b) \
1239   (__builtin_nds32_v_kmaxds ((r), (a), (b)))
1240 #define __nds32__kmsda(r, a, b) \
1241   (__builtin_nds32_kmsda ((r), (a), (b)))
1242 #define __nds32__v_kmsda(r, a, b) \
1243   (__builtin_nds32_v_kmsda ((r), (a), (b)))
1244 #define __nds32__kmsxda(r, a, b) \
1245   (__builtin_nds32_kmsxda ((r), (a), (b)))
1246 #define __nds32__v_kmsxda(r, a, b) \
1247   (__builtin_nds32_v_kmsxda ((r), (a), (b)))
1248 
1249 #define __nds32__smal(a, b) \
1250   (__builtin_nds32_smal ((a), (b)))
1251 #define __nds32__v_smal(a, b) \
1252   (__builtin_nds32_v_smal ((a), (b)))
1253 
1254 #define __nds32__bitrev(a, b) \
1255   (__builtin_nds32_bitrev ((a), (b)))
1256 #define __nds32__wext(a, b) \
1257   (__builtin_nds32_wext ((a), (b)))
1258 #define __nds32__bpick(r, a, b) \
1259   (__builtin_nds32_bpick ((r), (a), (b)))
1260 #define __nds32__insb(r, a, b) \
1261   (__builtin_nds32_insb ((r), (a), (b)))
1262 
1263 #define __nds32__sadd64(a, b) \
1264   (__builtin_nds32_sadd64 ((a), (b)))
1265 #define __nds32__uadd64(a, b) \
1266   (__builtin_nds32_uadd64 ((a), (b)))
1267 #define __nds32__radd64(a, b) \
1268   (__builtin_nds32_radd64 ((a), (b)))
1269 #define __nds32__uradd64(a, b) \
1270   (__builtin_nds32_uradd64 ((a), (b)))
1271 #define __nds32__kadd64(a, b) \
1272   (__builtin_nds32_kadd64 ((a), (b)))
1273 #define __nds32__ukadd64(a, b) \
1274   (__builtin_nds32_ukadd64 ((a), (b)))
1275 #define __nds32__ssub64(a, b) \
1276   (__builtin_nds32_ssub64 ((a), (b)))
1277 #define __nds32__usub64(a, b) \
1278   (__builtin_nds32_usub64 ((a), (b)))
1279 #define __nds32__rsub64(a, b) \
1280   (__builtin_nds32_rsub64 ((a), (b)))
1281 #define __nds32__ursub64(a, b) \
1282   (__builtin_nds32_ursub64 ((a), (b)))
1283 #define __nds32__ksub64(a, b) \
1284   (__builtin_nds32_ksub64 ((a), (b)))
1285 #define __nds32__uksub64(a, b) \
1286   (__builtin_nds32_uksub64 ((a), (b)))
1287 
1288 #define __nds32__smar64(r, a, b) \
1289   (__builtin_nds32_smar64 ((r), (a), (b)))
1290 #define __nds32__smsr64(r, a, b) \
1291   (__builtin_nds32_smsr64 ((r), (a), (b)))
1292 #define __nds32__umar64(r, a, b) \
1293   (__builtin_nds32_umar64 ((r), (a), (b)))
1294 #define __nds32__umsr64(r, a, b) \
1295   (__builtin_nds32_umsr64 ((r), (a), (b)))
1296 #define __nds32__kmar64(r, a, b) \
1297   (__builtin_nds32_kmar64 ((r), (a), (b)))
1298 #define __nds32__kmsr64(r, a, b) \
1299   (__builtin_nds32_kmsr64 ((r), (a), (b)))
1300 #define __nds32__ukmar64(r, a, b) \
1301   (__builtin_nds32_ukmar64 ((r), (a), (b)))
1302 #define __nds32__ukmsr64(r, a, b) \
1303   (__builtin_nds32_ukmsr64 ((r), (a), (b)))
1304 
1305 #define __nds32__smalbb(r, a, b) \
1306   (__builtin_nds32_smalbb ((r), (a), (b)))
1307 #define __nds32__v_smalbb(r, a, b) \
1308   (__builtin_nds32_v_smalbb ((r), (a), (b)))
1309 #define __nds32__smalbt(r, a, b) \
1310   (__builtin_nds32_smalbt ((r), (a), (b)))
1311 #define __nds32__v_smalbt(r, a, b) \
1312   (__builtin_nds32_v_smalbt ((r), (a), (b)))
1313 #define __nds32__smaltt(r, a, b) \
1314   (__builtin_nds32_smaltt ((r), (a), (b)))
1315 #define __nds32__v_smaltt(r, a, b) \
1316   (__builtin_nds32_v_smaltt ((r), (a), (b)))
1317 #define __nds32__smalda(r, a, b) \
1318   (__builtin_nds32_smalda ((r), (a), (b)))
1319 #define __nds32__v_smalda(r, a, b) \
1320   (__builtin_nds32_v_smalda ((r), (a), (b)))
1321 #define __nds32__smalxda(r, a, b) \
1322   (__builtin_nds32_smalxda ((r), (a), (b)))
1323 #define __nds32__v_smalxda(r, a, b) \
1324   (__builtin_nds32_v_smalxda ((r), (a), (b)))
1325 #define __nds32__smalds(r, a, b) \
1326   (__builtin_nds32_smalds ((r), (a), (b)))
1327 #define __nds32__v_smalds(r, a, b) \
1328   (__builtin_nds32_v_smalds ((r), (a), (b)))
1329 #define __nds32__smaldrs(r, a, b) \
1330   (__builtin_nds32_smaldrs ((r), (a), (b)))
1331 #define __nds32__v_smaldrs(r, a, b) \
1332   (__builtin_nds32_v_smaldrs ((r), (a), (b)))
1333 #define __nds32__smalxds(r, a, b) \
1334   (__builtin_nds32_smalxds ((r), (a), (b)))
1335 #define __nds32__v_smalxds(r, a, b) \
1336   (__builtin_nds32_v_smalxds ((r), (a), (b)))
1337 #define __nds32__smslda(r, a, b) \
1338   (__builtin_nds32_smslda ((r), (a), (b)))
1339 #define __nds32__v_smslda(r, a, b) \
1340   (__builtin_nds32_v_smslda ((r), (a), (b)))
1341 #define __nds32__smslxda(r, a, b) \
1342   (__builtin_nds32_smslxda ((r), (a), (b)))
1343 #define __nds32__v_smslxda(r, a, b) \
1344   (__builtin_nds32_v_smslxda ((r), (a), (b)))
1345 
1346 #define __nds32__smul16(a, b) \
1347   (__builtin_nds32_smul16 ((a), (b)))
1348 #define __nds32__v_smul16(a, b) \
1349   (__builtin_nds32_v_smul16 ((a), (b)))
1350 #define __nds32__smulx16(a, b) \
1351   (__builtin_nds32_smulx16 ((a), (b)))
1352 #define __nds32__v_smulx16(a, b) \
1353   (__builtin_nds32_v_smulx16 ((a), (b)))
1354 #define __nds32__umul16(a, b) \
1355   (__builtin_nds32_umul16 ((a), (b)))
1356 #define __nds32__v_umul16(a, b) \
1357   (__builtin_nds32_v_umul16 ((a), (b)))
1358 #define __nds32__umulx16(a, b) \
1359   (__builtin_nds32_umulx16 ((a), (b)))
1360 #define __nds32__v_umulx16(a, b) \
1361   (__builtin_nds32_v_umulx16 ((a), (b)))
1362 
1363 #define __nds32__uclip32(a, imm) \
1364   (__builtin_nds32_uclip32 ((a), (imm)))
1365 #define __nds32__sclip32(a, imm) \
1366   (__builtin_nds32_sclip32 ((a), (imm)))
1367 #define __nds32__kabs(a) \
1368   (__builtin_nds32_kabs ((a)))
1369 
1370 #define __nds32__unaligned_feature() \
1371   (__builtin_nds32_unaligned_feature())
1372 #define __nds32__enable_unaligned() \
1373   (__builtin_nds32_enable_unaligned())
1374 #define __nds32__disable_unaligned() \
1375   (__builtin_nds32_disable_unaligned())
1376 
1377 #define __nds32__get_unaligned_u16x2(a) \
1378   (__builtin_nds32_get_unaligned_u16x2 ((a)))
1379 #define __nds32__get_unaligned_s16x2(a) \
1380   (__builtin_nds32_get_unaligned_s16x2 ((a)))
1381 #define __nds32__get_unaligned_u8x4(a) \
1382   (__builtin_nds32_get_unaligned_u8x4 ((a)))
1383 #define __nds32__get_unaligned_s8x4(a) \
1384   (__builtin_nds32_get_unaligned_s8x4 ((a)))
1385 
1386 #define __nds32__put_unaligned_u16x2(a, data) \
1387   (__builtin_nds32_put_unaligned_u16x2 ((a), (data)))
1388 #define __nds32__put_unaligned_s16x2(a, data) \
1389   (__builtin_nds32_put_unaligned_s16x2 ((a), (data)))
1390 #define __nds32__put_unaligned_u8x4(a, data) \
1391   (__builtin_nds32_put_unaligned_u8x4 ((a), (data)))
1392 #define __nds32__put_unaligned_s8x4(a, data) \
1393   (__builtin_nds32_put_unaligned_s8x4 ((a), (data)))
1394 
1395 #define NDS32ATTR_SIGNATURE              __attribute__((signature))
1396 
1397 #endif /* nds32_intrinsic.h */
1398