1/* Enum for builtin intrinsics for TILE-Gx.
2   Copyright (C) 2011-2015 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
24enum 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