1 /* Enum for builtin intrinsics for TILE-Gx.
2    Copyright (C) 2011-2014 Free Software Foundation, Inc.
3    Contributed by Walter Lee (walt@tilera.com)
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    You should have received a copy of the GNU General Public License
18    along with GCC; see the file COPYING3.  If not see
19    <http://www.gnu.org/licenses/>.  */
20 
21 #ifndef GCC_TILEGX_BUILTINS_H
22 #define GCC_TILEGX_BUILTINS_H
23 
24 enum tilegx_builtin
25 {
26   TILEGX_INSN_ADD,
27   TILEGX_INSN_ADDX,
28   TILEGX_INSN_ADDXSC,
29   TILEGX_INSN_AND,
30   TILEGX_INSN_BFEXTS,
31   TILEGX_INSN_BFEXTU,
32   TILEGX_INSN_BFINS,
33   TILEGX_INSN_CLZ,
34   TILEGX_INSN_CMOVEQZ,
35   TILEGX_INSN_CMOVNEZ,
36   TILEGX_INSN_CMPEQ,
37   TILEGX_INSN_CMPEXCH,
38   TILEGX_INSN_CMPEXCH4,
39   TILEGX_INSN_CMPLES,
40   TILEGX_INSN_CMPLEU,
41   TILEGX_INSN_CMPLTS,
42   TILEGX_INSN_CMPLTU,
43   TILEGX_INSN_CMPNE,
44   TILEGX_INSN_CMUL,
45   TILEGX_INSN_CMULA,
46   TILEGX_INSN_CMULAF,
47   TILEGX_INSN_CMULF,
48   TILEGX_INSN_CMULFR,
49   TILEGX_INSN_CMULH,
50   TILEGX_INSN_CMULHR,
51   TILEGX_INSN_CRC32_32,
52   TILEGX_INSN_CRC32_8,
53   TILEGX_INSN_CTZ,
54   TILEGX_INSN_DBLALIGN,
55   TILEGX_INSN_DBLALIGN2,
56   TILEGX_INSN_DBLALIGN4,
57   TILEGX_INSN_DBLALIGN6,
58   TILEGX_INSN_DRAIN,
59   TILEGX_INSN_DTLBPR,
60   TILEGX_INSN_EXCH,
61   TILEGX_INSN_EXCH4,
62   TILEGX_INSN_FDOUBLE_ADD_FLAGS,
63   TILEGX_INSN_FDOUBLE_ADDSUB,
64   TILEGX_INSN_FDOUBLE_MUL_FLAGS,
65   TILEGX_INSN_FDOUBLE_PACK1,
66   TILEGX_INSN_FDOUBLE_PACK2,
67   TILEGX_INSN_FDOUBLE_SUB_FLAGS,
68   TILEGX_INSN_FDOUBLE_UNPACK_MAX,
69   TILEGX_INSN_FDOUBLE_UNPACK_MIN,
70   TILEGX_INSN_FETCHADD,
71   TILEGX_INSN_FETCHADD4,
72   TILEGX_INSN_FETCHADDGEZ,
73   TILEGX_INSN_FETCHADDGEZ4,
74   TILEGX_INSN_FETCHAND,
75   TILEGX_INSN_FETCHAND4,
76   TILEGX_INSN_FETCHOR,
77   TILEGX_INSN_FETCHOR4,
78   TILEGX_INSN_FINV,
79   TILEGX_INSN_FLUSH,
80   TILEGX_INSN_FLUSHWB,
81   TILEGX_INSN_FNOP,
82   TILEGX_INSN_FSINGLE_ADD1,
83   TILEGX_INSN_FSINGLE_ADDSUB2,
84   TILEGX_INSN_FSINGLE_MUL1,
85   TILEGX_INSN_FSINGLE_MUL2,
86   TILEGX_INSN_FSINGLE_PACK1,
87   TILEGX_INSN_FSINGLE_PACK2,
88   TILEGX_INSN_FSINGLE_SUB1,
89   TILEGX_INSN_ICOH,
90   TILEGX_INSN_ILL,
91   TILEGX_INSN_INFO,
92   TILEGX_INSN_INFOL,
93   TILEGX_INSN_INV,
94   TILEGX_INSN_LD,
95   TILEGX_INSN_LD1S,
96   TILEGX_INSN_LD1U,
97   TILEGX_INSN_LD2S,
98   TILEGX_INSN_LD2U,
99   TILEGX_INSN_LD4S,
100   TILEGX_INSN_LD4U,
101   TILEGX_INSN_LDNA,
102   TILEGX_INSN_LDNT,
103   TILEGX_INSN_LDNT1S,
104   TILEGX_INSN_LDNT1U,
105   TILEGX_INSN_LDNT2S,
106   TILEGX_INSN_LDNT2U,
107   TILEGX_INSN_LDNT4S,
108   TILEGX_INSN_LDNT4U,
109   TILEGX_INSN_LD_L2,
110   TILEGX_INSN_LD1S_L2,
111   TILEGX_INSN_LD1U_L2,
112   TILEGX_INSN_LD2S_L2,
113   TILEGX_INSN_LD2U_L2,
114   TILEGX_INSN_LD4S_L2,
115   TILEGX_INSN_LD4U_L2,
116   TILEGX_INSN_LDNA_L2,
117   TILEGX_INSN_LDNT_L2,
118   TILEGX_INSN_LDNT1S_L2,
119   TILEGX_INSN_LDNT1U_L2,
120   TILEGX_INSN_LDNT2S_L2,
121   TILEGX_INSN_LDNT2U_L2,
122   TILEGX_INSN_LDNT4S_L2,
123   TILEGX_INSN_LDNT4U_L2,
124   TILEGX_INSN_LD_MISS,
125   TILEGX_INSN_LD1S_MISS,
126   TILEGX_INSN_LD1U_MISS,
127   TILEGX_INSN_LD2S_MISS,
128   TILEGX_INSN_LD2U_MISS,
129   TILEGX_INSN_LD4S_MISS,
130   TILEGX_INSN_LD4U_MISS,
131   TILEGX_INSN_LDNA_MISS,
132   TILEGX_INSN_LDNT_MISS,
133   TILEGX_INSN_LDNT1S_MISS,
134   TILEGX_INSN_LDNT1U_MISS,
135   TILEGX_INSN_LDNT2S_MISS,
136   TILEGX_INSN_LDNT2U_MISS,
137   TILEGX_INSN_LDNT4S_MISS,
138   TILEGX_INSN_LDNT4U_MISS,
139   TILEGX_INSN_LNK,
140   TILEGX_INSN_MF,
141   TILEGX_INSN_MFSPR,
142   TILEGX_INSN_MM,
143   TILEGX_INSN_MNZ,
144   TILEGX_INSN_MOVE,
145   TILEGX_INSN_MTSPR,
146   TILEGX_INSN_MUL_HS_HS,
147   TILEGX_INSN_MUL_HS_HU,
148   TILEGX_INSN_MUL_HS_LS,
149   TILEGX_INSN_MUL_HS_LU,
150   TILEGX_INSN_MUL_HU_HU,
151   TILEGX_INSN_MUL_HU_LS,
152   TILEGX_INSN_MUL_HU_LU,
153   TILEGX_INSN_MUL_LS_LS,
154   TILEGX_INSN_MUL_LS_LU,
155   TILEGX_INSN_MUL_LU_LU,
156   TILEGX_INSN_MULA_HS_HS,
157   TILEGX_INSN_MULA_HS_HU,
158   TILEGX_INSN_MULA_HS_LS,
159   TILEGX_INSN_MULA_HS_LU,
160   TILEGX_INSN_MULA_HU_HU,
161   TILEGX_INSN_MULA_HU_LS,
162   TILEGX_INSN_MULA_HU_LU,
163   TILEGX_INSN_MULA_LS_LS,
164   TILEGX_INSN_MULA_LS_LU,
165   TILEGX_INSN_MULA_LU_LU,
166   TILEGX_INSN_MULAX,
167   TILEGX_INSN_MULX,
168   TILEGX_INSN_MZ,
169   TILEGX_INSN_NAP,
170   TILEGX_INSN_NOP,
171   TILEGX_INSN_NOR,
172   TILEGX_INSN_OR,
173   TILEGX_INSN_PCNT,
174   TILEGX_INSN_PREFETCH_L1,
175   TILEGX_INSN_PREFETCH_L1_FAULT,
176   TILEGX_INSN_PREFETCH_L2,
177   TILEGX_INSN_PREFETCH_L2_FAULT,
178   TILEGX_INSN_PREFETCH_L3,
179   TILEGX_INSN_PREFETCH_L3_FAULT,
180   TILEGX_INSN_REVBITS,
181   TILEGX_INSN_REVBYTES,
182   TILEGX_INSN_ROTL,
183   TILEGX_INSN_SHL,
184   TILEGX_INSN_SHL16INSLI,
185   TILEGX_INSN_SHL1ADD,
186   TILEGX_INSN_SHL1ADDX,
187   TILEGX_INSN_SHL2ADD,
188   TILEGX_INSN_SHL2ADDX,
189   TILEGX_INSN_SHL3ADD,
190   TILEGX_INSN_SHL3ADDX,
191   TILEGX_INSN_SHLX,
192   TILEGX_INSN_SHRS,
193   TILEGX_INSN_SHRU,
194   TILEGX_INSN_SHRUX,
195   TILEGX_INSN_SHUFFLEBYTES,
196   TILEGX_INSN_SHUFFLEBYTES1,
197   TILEGX_INSN_ST,
198   TILEGX_INSN_ST1,
199   TILEGX_INSN_ST2,
200   TILEGX_INSN_ST4,
201   TILEGX_INSN_STNT,
202   TILEGX_INSN_STNT1,
203   TILEGX_INSN_STNT2,
204   TILEGX_INSN_STNT4,
205   TILEGX_INSN_SUB,
206   TILEGX_INSN_SUBX,
207   TILEGX_INSN_SUBXSC,
208   TILEGX_INSN_TBLIDXB0,
209   TILEGX_INSN_TBLIDXB1,
210   TILEGX_INSN_TBLIDXB2,
211   TILEGX_INSN_TBLIDXB3,
212   TILEGX_INSN_V1ADD,
213   TILEGX_INSN_V1ADDI,
214   TILEGX_INSN_V1ADDUC,
215   TILEGX_INSN_V1ADIFFU,
216   TILEGX_INSN_V1AVGU,
217   TILEGX_INSN_V1CMPEQ,
218   TILEGX_INSN_V1CMPEQI,
219   TILEGX_INSN_V1CMPLES,
220   TILEGX_INSN_V1CMPLEU,
221   TILEGX_INSN_V1CMPLTS,
222   TILEGX_INSN_V1CMPLTSI,
223   TILEGX_INSN_V1CMPLTU,
224   TILEGX_INSN_V1CMPLTUI,
225   TILEGX_INSN_V1CMPNE,
226   TILEGX_INSN_V1DDOTPU,
227   TILEGX_INSN_V1DDOTPUA,
228   TILEGX_INSN_V1DDOTPUS,
229   TILEGX_INSN_V1DDOTPUSA,
230   TILEGX_INSN_V1DOTP,
231   TILEGX_INSN_V1DOTPA,
232   TILEGX_INSN_V1DOTPU,
233   TILEGX_INSN_V1DOTPUA,
234   TILEGX_INSN_V1DOTPUS,
235   TILEGX_INSN_V1DOTPUSA,
236   TILEGX_INSN_V1INT_H,
237   TILEGX_INSN_V1INT_L,
238   TILEGX_INSN_V1MAXU,
239   TILEGX_INSN_V1MAXUI,
240   TILEGX_INSN_V1MINU,
241   TILEGX_INSN_V1MINUI,
242   TILEGX_INSN_V1MNZ,
243   TILEGX_INSN_V1MULTU,
244   TILEGX_INSN_V1MULU,
245   TILEGX_INSN_V1MULUS,
246   TILEGX_INSN_V1MZ,
247   TILEGX_INSN_V1SADAU,
248   TILEGX_INSN_V1SADU,
249   TILEGX_INSN_V1SHL,
250   TILEGX_INSN_V1SHLI,
251   TILEGX_INSN_V1SHRS,
252   TILEGX_INSN_V1SHRSI,
253   TILEGX_INSN_V1SHRU,
254   TILEGX_INSN_V1SHRUI,
255   TILEGX_INSN_V1SUB,
256   TILEGX_INSN_V1SUBUC,
257   TILEGX_INSN_V2ADD,
258   TILEGX_INSN_V2ADDI,
259   TILEGX_INSN_V2ADDSC,
260   TILEGX_INSN_V2ADIFFS,
261   TILEGX_INSN_V2AVGS,
262   TILEGX_INSN_V2CMPEQ,
263   TILEGX_INSN_V2CMPEQI,
264   TILEGX_INSN_V2CMPLES,
265   TILEGX_INSN_V2CMPLEU,
266   TILEGX_INSN_V2CMPLTS,
267   TILEGX_INSN_V2CMPLTSI,
268   TILEGX_INSN_V2CMPLTU,
269   TILEGX_INSN_V2CMPLTUI,
270   TILEGX_INSN_V2CMPNE,
271   TILEGX_INSN_V2DOTP,
272   TILEGX_INSN_V2DOTPA,
273   TILEGX_INSN_V2INT_H,
274   TILEGX_INSN_V2INT_L,
275   TILEGX_INSN_V2MAXS,
276   TILEGX_INSN_V2MAXSI,
277   TILEGX_INSN_V2MINS,
278   TILEGX_INSN_V2MINSI,
279   TILEGX_INSN_V2MNZ,
280   TILEGX_INSN_V2MULFSC,
281   TILEGX_INSN_V2MULS,
282   TILEGX_INSN_V2MULTS,
283   TILEGX_INSN_V2MZ,
284   TILEGX_INSN_V2PACKH,
285   TILEGX_INSN_V2PACKL,
286   TILEGX_INSN_V2PACKUC,
287   TILEGX_INSN_V2SADAS,
288   TILEGX_INSN_V2SADAU,
289   TILEGX_INSN_V2SADS,
290   TILEGX_INSN_V2SADU,
291   TILEGX_INSN_V2SHL,
292   TILEGX_INSN_V2SHLI,
293   TILEGX_INSN_V2SHLSC,
294   TILEGX_INSN_V2SHRS,
295   TILEGX_INSN_V2SHRSI,
296   TILEGX_INSN_V2SHRU,
297   TILEGX_INSN_V2SHRUI,
298   TILEGX_INSN_V2SUB,
299   TILEGX_INSN_V2SUBSC,
300   TILEGX_INSN_V4ADD,
301   TILEGX_INSN_V4ADDSC,
302   TILEGX_INSN_V4INT_H,
303   TILEGX_INSN_V4INT_L,
304   TILEGX_INSN_V4PACKSC,
305   TILEGX_INSN_V4SHL,
306   TILEGX_INSN_V4SHLSC,
307   TILEGX_INSN_V4SHRS,
308   TILEGX_INSN_V4SHRU,
309   TILEGX_INSN_V4SUB,
310   TILEGX_INSN_V4SUBSC,
311   TILEGX_INSN_WH64,
312   TILEGX_INSN_XOR,
313   TILEGX_NETWORK_BARRIER,
314   TILEGX_IDN0_RECEIVE,
315   TILEGX_IDN1_RECEIVE,
316   TILEGX_IDN_SEND,
317   TILEGX_UDN0_RECEIVE,
318   TILEGX_UDN1_RECEIVE,
319   TILEGX_UDN2_RECEIVE,
320   TILEGX_UDN3_RECEIVE,
321   TILEGX_UDN_SEND,
322   TILEGX_BUILTIN_max
323 };
324 
325 #endif /* !GCC_TILEGX_BUILTINS_H */
326