OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-dev/] [or1k-gcc/] [gcc/] [config/] [rs6000/] [rs6000-builtin.def] - Blame information for rev 713

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 709 jeremybenn
/* Builtin functions for rs6000/powerpc.
2
   Copyright (C) 2009, 2010, 2011
3
   Free Software Foundation, Inc.
4
   Contributed by Michael Meissner (meissner@linux.vnet.ibm.com)
5
 
6
   This file is part of GCC.
7
 
8
   GCC is free software; you can redistribute it and/or modify it
9
   under the terms of the GNU General Public License as published
10
   by the Free Software Foundation; either version 3, or (at your
11
   option) any later version.
12
 
13
   GCC is distributed in the hope that it will be useful, but WITHOUT
14
   ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
15
   or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public
16
   License for more details.
17
 
18
   Under Section 7 of GPL version 3, you are granted additional
19
   permissions described in the GCC Runtime Library Exception, version
20
   3.1, as published by the Free Software Foundation.
21
 
22
   You should have received a copy of the GNU General Public License and
23
   a copy of the GCC Runtime Library Exception along with this program;
24
   see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
25
   .  */
26
 
27
/* Before including this file, some macros must be defined:
28
   RS6000_BUILTIN_1 -- 1 arg builtins
29
   RS6000_BUILTIN_2 -- 2 arg builtins
30
   RS6000_BUILTIN_3 -- 3 arg builtins
31
   RS6000_BUILTIN_A -- ABS builtins
32
   RS6000_BUILTIN_D -- DST builtins
33
   RS6000_BUILTIN_E -- SPE EVSEL builtins.
34
   RS6000_BUILTIN_P -- Altivec and VSX predicate builtins
35
   RS6000_BUILTIN_Q -- Paired floating point VSX predicate builtins
36
   RS6000_BUILTIN_S -- SPE predicate builtins
37
   RS6000_BUILTIN_X -- special builtins
38
 
39
   Each of the above macros takes 4 arguments:
40
        ENUM    Enumeration name
41
        NAME    String literal for the name
42
        MASK    Mask of bits that indicate which options enables the builtin
43
        ATTR    builtin attribute information.
44
        ICODE   Insn code of the function that implents the builtin.  */
45
 
46
#ifndef RS6000_BUILTIN_1
47
  #error "RS6000_BUILTIN_1 is not defined."
48
#endif
49
 
50
#ifndef RS6000_BUILTIN_2
51
  #error "RS6000_BUILTIN_2 is not defined."
52
#endif
53
 
54
#ifndef RS6000_BUILTIN_3
55
  #error "RS6000_BUILTIN_3 is not defined."
56
#endif
57
 
58
#ifndef RS6000_BUILTIN_A
59
  #error "RS6000_BUILTIN_A is not defined."
60
#endif
61
 
62
#ifndef RS6000_BUILTIN_D
63
  #error "RS6000_BUILTIN_D is not defined."
64
#endif
65
 
66
#ifndef RS6000_BUILTIN_E
67
  #error "RS6000_BUILTIN_E is not defined."
68
#endif
69
 
70
#ifndef RS6000_BUILTIN_P
71
  #error "RS6000_BUILTIN_P is not defined."
72
#endif
73
 
74
#ifndef RS6000_BUILTIN_Q
75
  #error "RS6000_BUILTIN_Q is not defined."
76
#endif
77
 
78
#ifndef RS6000_BUILTIN_S
79
  #error "RS6000_BUILTIN_S is not defined."
80
#endif
81
 
82
#ifndef RS6000_BUILTIN_X
83
  #error "RS6000_BUILTIN_X is not defined."
84
#endif
85
 
86
#ifndef BU_AV_1
87
/* Define convenience macros using token pasting to allow fitting everything in
88
   one line.  */
89
 
90
/* Altivec convenience macros.  */
91
#define BU_ALTIVEC_1(ENUM, NAME, ATTR, ICODE)                           \
92
  RS6000_BUILTIN_1 (ALTIVEC_BUILTIN_ ## ENUM,           /* ENUM */      \
93
                    "__builtin_altivec_" NAME,          /* NAME */      \
94
                    RS6000_BTM_ALTIVEC,                 /* MASK */      \
95
                    (RS6000_BTC_ ## ATTR                /* ATTR */      \
96
                     | RS6000_BTC_UNARY),                               \
97
                    CODE_FOR_ ## ICODE)                 /* ICODE */
98
 
99
#define BU_ALTIVEC_2(ENUM, NAME, ATTR, ICODE)                           \
100
  RS6000_BUILTIN_2 (ALTIVEC_BUILTIN_ ## ENUM,           /* ENUM */      \
101
                    "__builtin_altivec_" NAME,          /* NAME */      \
102
                    RS6000_BTM_ALTIVEC,                 /* MASK */      \
103
                    (RS6000_BTC_ ## ATTR                /* ATTR */      \
104
                     | RS6000_BTC_BINARY),                              \
105
                    CODE_FOR_ ## ICODE)                 /* ICODE */
106
 
107
#define BU_ALTIVEC_3(ENUM, NAME, ATTR, ICODE)                           \
108
  RS6000_BUILTIN_3 (ALTIVEC_BUILTIN_ ## ENUM,           /* ENUM */      \
109
                    "__builtin_altivec_" NAME,          /* NAME */      \
110
                    RS6000_BTM_ALTIVEC,                 /* MASK */      \
111
                    (RS6000_BTC_ ## ATTR                /* ATTR */      \
112
                     | RS6000_BTC_TERNARY),                             \
113
                    CODE_FOR_ ## ICODE)                 /* ICODE */
114
 
115
#define BU_ALTIVEC_A(ENUM, NAME, ATTR, ICODE)                           \
116
  RS6000_BUILTIN_A (ALTIVEC_BUILTIN_ ## ENUM,           /* ENUM */      \
117
                    "__builtin_altivec_" NAME,          /* NAME */      \
118
                    RS6000_BTM_ALTIVEC,                 /* MASK */      \
119
                    (RS6000_BTC_ ## ATTR                /* ATTR */      \
120
                     | RS6000_BTC_ABS),                                 \
121
                    CODE_FOR_ ## ICODE)                 /* ICODE */
122
 
123
#define BU_ALTIVEC_D(ENUM, NAME, ATTR, ICODE)                           \
124
  RS6000_BUILTIN_D (ALTIVEC_BUILTIN_ ## ENUM,           /* ENUM */      \
125
                    "__builtin_altivec_" NAME,          /* NAME */      \
126
                    RS6000_BTM_ALTIVEC,                 /* MASK */      \
127
                    (RS6000_BTC_ ## ATTR                /* ATTR */      \
128
                     | RS6000_BTC_DST),                                 \
129
                    CODE_FOR_ ## ICODE)                 /* ICODE */
130
 
131
#define BU_ALTIVEC_P(ENUM, NAME, ATTR, ICODE)                           \
132
  RS6000_BUILTIN_P (ALTIVEC_BUILTIN_ ## ENUM,           /* ENUM */      \
133
                    "__builtin_altivec_" NAME,          /* NAME */      \
134
                    RS6000_BTM_ALTIVEC,                 /* MASK */      \
135
                    (RS6000_BTC_ ## ATTR                /* ATTR */      \
136
                     | RS6000_BTC_PREDICATE),                           \
137
                    CODE_FOR_ ## ICODE)                 /* ICODE */
138
 
139
#define BU_ALTIVEC_X(ENUM, NAME, ATTR)                                  \
140
  RS6000_BUILTIN_X (ALTIVEC_BUILTIN_ ## ENUM,           /* ENUM */      \
141
                    "__builtin_altivec_" NAME,          /* NAME */      \
142
                    RS6000_BTM_ALTIVEC,                 /* MASK */      \
143
                    (RS6000_BTC_ ## ATTR                /* ATTR */      \
144
                     | RS6000_BTC_SPECIAL),                             \
145
                    CODE_FOR_nothing)                   /* ICODE */
146
 
147
#define BU_ALTIVEC_C(ENUM, NAME, ATTR)                                  \
148
  RS6000_BUILTIN_X (ALTIVEC_BUILTIN_ ## ENUM,           /* ENUM */      \
149
                    "__builtin_altivec_" NAME,          /* NAME */      \
150
                    (RS6000_BTM_ALTIVEC                 /* MASK */      \
151
                     | RS6000_BTM_CELL),                                \
152
                    (RS6000_BTC_ ## ATTR                /* ATTR */      \
153
                     | RS6000_BTC_SPECIAL),                             \
154
                    CODE_FOR_nothing)                   /* ICODE */
155
 
156
/* Altivec overloaded builtin function macros.  */
157
#define BU_ALTIVEC_OVERLOAD_1(ENUM, NAME)                               \
158
  RS6000_BUILTIN_1 (ALTIVEC_BUILTIN_VEC_ ## ENUM,       /* ENUM */      \
159
                    "__builtin_vec_" NAME,              /* NAME */      \
160
                    RS6000_BTM_ALTIVEC,                 /* MASK */      \
161
                    (RS6000_BTC_OVERLOADED              /* ATTR */      \
162
                     | RS6000_BTC_UNARY),                               \
163
                    CODE_FOR_nothing)                   /* ICODE */
164
 
165
#define BU_ALTIVEC_OVERLOAD_2(ENUM, NAME)                               \
166
  RS6000_BUILTIN_2 (ALTIVEC_BUILTIN_VEC_ ## ENUM,       /* ENUM */      \
167
                    "__builtin_vec_" NAME,              /* NAME */      \
168
                    RS6000_BTM_ALTIVEC,                 /* MASK */      \
169
                    (RS6000_BTC_OVERLOADED              /* ATTR */      \
170
                     | RS6000_BTC_BINARY),                              \
171
                    CODE_FOR_nothing)                   /* ICODE */
172
 
173
#define BU_ALTIVEC_OVERLOAD_3(ENUM, NAME)                               \
174
  RS6000_BUILTIN_3 (ALTIVEC_BUILTIN_VEC_ ## ENUM,       /* ENUM */      \
175
                    "__builtin_vec_" NAME,              /* NAME */      \
176
                    RS6000_BTM_ALTIVEC,                 /* MASK */      \
177
                    (RS6000_BTC_OVERLOADED              /* ATTR */      \
178
                     | RS6000_BTC_TERNARY),                             \
179
                    CODE_FOR_nothing)                   /* ICODE */
180
 
181
#define BU_ALTIVEC_OVERLOAD_A(ENUM, NAME)                               \
182
  RS6000_BUILTIN_A (ALTIVEC_BUILTIN_VEC_ ## ENUM,       /* ENUM */      \
183
                    "__builtin_vec_" NAME,              /* NAME */      \
184
                    RS6000_BTM_ALTIVEC,                 /* MASK */      \
185
                    (RS6000_BTC_OVERLOADED              /* ATTR */      \
186
                     | RS6000_BTC_ABS),                                 \
187
                    CODE_FOR_nothing)                   /* ICODE */
188
 
189
#define BU_ALTIVEC_OVERLOAD_D(ENUM, NAME)                               \
190
  RS6000_BUILTIN_D (ALTIVEC_BUILTIN_VEC_ ## ENUM,       /* ENUM */      \
191
                    "__builtin_vec_" NAME,              /* NAME */      \
192
                    RS6000_BTM_ALTIVEC,                 /* MASK */      \
193
                    (RS6000_BTC_OVERLOADED              /* ATTR */      \
194
                     | RS6000_BTC_DST),                                 \
195
                    CODE_FOR_nothing)                   /* ICODE */
196
 
197
#define BU_ALTIVEC_OVERLOAD_P(ENUM, NAME)                               \
198
  RS6000_BUILTIN_P (ALTIVEC_BUILTIN_VEC_ ## ENUM,       /* ENUM */      \
199
                    "__builtin_vec_" NAME,              /* NAME */      \
200
                    RS6000_BTM_ALTIVEC,                 /* MASK */      \
201
                    (RS6000_BTC_OVERLOADED              /* ATTR */      \
202
                     | RS6000_BTC_PREDICATE),                           \
203
                    CODE_FOR_nothing)                   /* ICODE */
204
 
205
#define BU_ALTIVEC_OVERLOAD_X(ENUM, NAME)                               \
206
  RS6000_BUILTIN_X (ALTIVEC_BUILTIN_VEC_ ## ENUM,       /* ENUM */      \
207
                    "__builtin_vec_" NAME,              /* NAME */      \
208
                    RS6000_BTM_ALTIVEC,                 /* MASK */      \
209
                    (RS6000_BTC_OVERLOADED              /* ATTR */      \
210
                     | RS6000_BTC_SPECIAL),                             \
211
                    CODE_FOR_nothing)                   /* ICODE */
212
 
213
/* VSX convenience macros.  */
214
#define BU_VSX_1(ENUM, NAME, ATTR, ICODE)                               \
215
  RS6000_BUILTIN_1 (VSX_BUILTIN_ ## ENUM,               /* ENUM */      \
216
                    "__builtin_vsx_" NAME,              /* NAME */      \
217
                    RS6000_BTM_VSX,                     /* MASK */      \
218
                    (RS6000_BTC_ ## ATTR                /* ATTR */      \
219
                     | RS6000_BTC_UNARY),                               \
220
                    CODE_FOR_ ## ICODE)                 /* ICODE */
221
 
222
#define BU_VSX_2(ENUM, NAME, ATTR, ICODE)                               \
223
  RS6000_BUILTIN_2 (VSX_BUILTIN_ ## ENUM,               /* ENUM */      \
224
                    "__builtin_vsx_" NAME,              /* NAME */      \
225
                    RS6000_BTM_VSX,                     /* MASK */      \
226
                    (RS6000_BTC_ ## ATTR                /* ATTR */      \
227
                     | RS6000_BTC_BINARY),                              \
228
                    CODE_FOR_ ## ICODE)                 /* ICODE */
229
 
230
#define BU_VSX_3(ENUM, NAME, ATTR, ICODE)                               \
231
  RS6000_BUILTIN_3 (VSX_BUILTIN_ ## ENUM,               /* ENUM */      \
232
                    "__builtin_vsx_" NAME,              /* NAME */      \
233
                    RS6000_BTM_VSX,                     /* MASK */      \
234
                    (RS6000_BTC_ ## ATTR                /* ATTR */      \
235
                     | RS6000_BTC_TERNARY),                             \
236
                    CODE_FOR_ ## ICODE)                 /* ICODE */
237
 
238
#define BU_VSX_A(ENUM, NAME, ATTR, ICODE)                               \
239
  RS6000_BUILTIN_A (VSX_BUILTIN_ ## ENUM,               /* ENUM */      \
240
                    "__builtin_vsx_" NAME,              /* NAME */      \
241
                    RS6000_BTM_VSX,                     /* MASK */      \
242
                    (RS6000_BTC_ ## ATTR                /* ATTR */      \
243
                     | RS6000_BTC_ABS),                                 \
244
                    CODE_FOR_ ## ICODE)                 /* ICODE */
245
 
246
#define BU_VSX_P(ENUM, NAME, ATTR, ICODE)                               \
247
  RS6000_BUILTIN_P (VSX_BUILTIN_ ## ENUM,               /* ENUM */      \
248
                    "__builtin_vsx_" NAME,              /* NAME */      \
249
                    RS6000_BTM_VSX,                     /* MASK */      \
250
                    (RS6000_BTC_ ## ATTR                /* ATTR */      \
251
                     | RS6000_BTC_PREDICATE),                           \
252
                    CODE_FOR_ ## ICODE)                 /* ICODE */
253
 
254
#define BU_VSX_X(ENUM, NAME, ATTR)                                      \
255
  RS6000_BUILTIN_X (VSX_BUILTIN_ ## ENUM,               /* ENUM */      \
256
                    "__builtin_vsx_" NAME,              /* NAME */      \
257
                    RS6000_BTM_VSX,                     /* MASK */      \
258
                    (RS6000_BTC_ ## ATTR                /* ATTR */      \
259
                     | RS6000_BTC_SPECIAL),                             \
260
                    CODE_FOR_nothing)                   /* ICODE */
261
 
262
/* VSX overloaded builtin function macros.  */
263
#define BU_VSX_OVERLOAD_1(ENUM, NAME)                                   \
264
  RS6000_BUILTIN_1 (VSX_BUILTIN_VEC_ ## ENUM,           /* ENUM */      \
265
                    "__builtin_vec_" NAME,              /* NAME */      \
266
                    RS6000_BTM_VSX,                     /* MASK */      \
267
                    (RS6000_BTC_OVERLOADED              /* ATTR */      \
268
                     | RS6000_BTC_UNARY),                               \
269
                    CODE_FOR_nothing)                   /* ICODE */
270
 
271
#define BU_VSX_OVERLOAD_2(ENUM, NAME)                                   \
272
  RS6000_BUILTIN_2 (VSX_BUILTIN_VEC_ ## ENUM,           /* ENUM */      \
273
                    "__builtin_vec_" NAME,              /* NAME */      \
274
                    RS6000_BTM_VSX,                     /* MASK */      \
275
                    (RS6000_BTC_OVERLOADED              /* ATTR */      \
276
                     | RS6000_BTC_BINARY),                              \
277
                    CODE_FOR_nothing)                   /* ICODE */
278
 
279
#define BU_VSX_OVERLOAD_3(ENUM, NAME)                                   \
280
  RS6000_BUILTIN_3 (VSX_BUILTIN_VEC_ ## ENUM,           /* ENUM */      \
281
                    "__builtin_vec_" NAME,              /* NAME */      \
282
                    RS6000_BTM_VSX,                     /* MASK */      \
283
                    (RS6000_BTC_OVERLOADED              /* ATTR */      \
284
                     | RS6000_BTC_TERNARY),                             \
285
                    CODE_FOR_nothing)                   /* ICODE */
286
 
287
/* xxpermdi and xxsldwi are overloaded functions, but had __builtin_vsx names
288
   instead of __builtin_vec.  */
289
#define BU_VSX_OVERLOAD_3V(ENUM, NAME)                                  \
290
  RS6000_BUILTIN_3 (VSX_BUILTIN_VEC_ ## ENUM,           /* ENUM */      \
291
                    "__builtin_vsx_" NAME,              /* NAME */      \
292
                    RS6000_BTM_VSX,                     /* MASK */      \
293
                    (RS6000_BTC_OVERLOADED              /* ATTR */      \
294
                     | RS6000_BTC_TERNARY),                             \
295
                    CODE_FOR_nothing)                   /* ICODE */
296
 
297
#define BU_VSX_OVERLOAD_X(ENUM, NAME)                                   \
298
  RS6000_BUILTIN_X (VSX_BUILTIN_VEC_ ## ENUM,           /* ENUM */      \
299
                    "__builtin_vec_" NAME,              /* NAME */      \
300
                    RS6000_BTM_VSX,                     /* MASK */      \
301
                    (RS6000_BTC_OVERLOADED              /* ATTR */      \
302
                     | RS6000_BTC_SPECIAL),                             \
303
                    CODE_FOR_nothing)                   /* ICODE */
304
 
305
/* SPE convenience macros.  */
306
#define BU_SPE_1(ENUM, NAME, ATTR, ICODE)                               \
307
  RS6000_BUILTIN_1 (SPE_BUILTIN_ ## ENUM,               /* ENUM */      \
308
                    "__builtin_spe_" NAME,              /* NAME */      \
309
                    RS6000_BTM_SPE,                     /* MASK */      \
310
                    (RS6000_BTC_ ## ATTR                /* ATTR */      \
311
                     | RS6000_BTC_UNARY),                               \
312
                    CODE_FOR_ ## ICODE)                 /* ICODE */
313
 
314
#define BU_SPE_2(ENUM, NAME, ATTR, ICODE)                               \
315
  RS6000_BUILTIN_2 (SPE_BUILTIN_ ## ENUM,               /* ENUM */      \
316
                    "__builtin_spe_" NAME,              /* NAME */      \
317
                    RS6000_BTM_SPE,                     /* MASK */      \
318
                    (RS6000_BTC_ ## ATTR                /* ATTR */      \
319
                     | RS6000_BTC_BINARY),                              \
320
                    CODE_FOR_ ## ICODE)                 /* ICODE */
321
 
322
#define BU_SPE_3(ENUM, NAME, ATTR, ICODE)                               \
323
  RS6000_BUILTIN_3 (SPE_BUILTIN_ ## ENUM,               /* ENUM */      \
324
                    "__builtin_spe_" NAME,              /* NAME */      \
325
                    RS6000_BTM_SPE,                     /* MASK */      \
326
                    (RS6000_BTC_ ## ATTR                /* ATTR */      \
327
                     | RS6000_BTC_TERNARY),                             \
328
                    CODE_FOR_ ## ICODE)                 /* ICODE */
329
 
330
#define BU_SPE_E(ENUM, NAME, ATTR, ICODE)                               \
331
  RS6000_BUILTIN_E (SPE_BUILTIN_ ## ENUM,               /* ENUM */      \
332
                    "__builtin_spe_" NAME,              /* NAME */      \
333
                    RS6000_BTM_SPE,                     /* MASK */      \
334
                    (RS6000_BTC_ ## ATTR                /* ATTR */      \
335
                     | RS6000_BTC_EVSEL),                               \
336
                    CODE_FOR_ ## ICODE)                 /* ICODE */
337
 
338
#define BU_SPE_P(ENUM, NAME, ATTR, ICODE)                               \
339
  RS6000_BUILTIN_S (SPE_BUILTIN_ ## ENUM,               /* ENUM */      \
340
                    "__builtin_spe_" NAME,              /* NAME */      \
341
                    RS6000_BTM_SPE,                     /* MASK */      \
342
                    (RS6000_BTC_ ## ATTR                /* ATTR */      \
343
                     | RS6000_BTC_PREDICATE),                           \
344
                    CODE_FOR_ ## ICODE)                 /* ICODE */
345
 
346
#define BU_SPE_X(ENUM, NAME, ATTR)                                      \
347
  RS6000_BUILTIN_X (SPE_BUILTIN_ ## ENUM,               /* ENUM */      \
348
                    "__builtin_spe_" NAME,              /* NAME */      \
349
                    RS6000_BTM_SPE,                     /* MASK */      \
350
                    (RS6000_BTC_ ## ATTR                /* ATTR */      \
351
                     | RS6000_BTC_SPECIAL),                             \
352
                    CODE_FOR_nothing)                   /* ICODE */
353
 
354
/* Paired floating point convenience macros.  */
355
#define BU_PAIRED_1(ENUM, NAME, ATTR, ICODE)                            \
356
  RS6000_BUILTIN_1 (PAIRED_BUILTIN_ ## ENUM,            /* ENUM */      \
357
                    "__builtin_paired_" NAME,           /* NAME */      \
358
                    RS6000_BTM_PAIRED,                  /* MASK */      \
359
                    (RS6000_BTC_ ## ATTR                /* ATTR */      \
360
                     | RS6000_BTC_UNARY),                               \
361
                    CODE_FOR_ ## ICODE)                 /* ICODE */
362
 
363
#define BU_PAIRED_2(ENUM, NAME, ATTR, ICODE)                            \
364
  RS6000_BUILTIN_2 (PAIRED_BUILTIN_ ## ENUM,            /* ENUM */      \
365
                    "__builtin_paired_" NAME,           /* NAME */      \
366
                    RS6000_BTM_PAIRED,                  /* MASK */      \
367
                    (RS6000_BTC_ ## ATTR                /* ATTR */      \
368
                     | RS6000_BTC_BINARY),                              \
369
                    CODE_FOR_ ## ICODE)                 /* ICODE */
370
 
371
#define BU_PAIRED_3(ENUM, NAME, ATTR, ICODE)                            \
372
  RS6000_BUILTIN_3 (PAIRED_BUILTIN_ ## ENUM,            /* ENUM */      \
373
                    "__builtin_paired_" NAME,           /* NAME */      \
374
                    RS6000_BTM_PAIRED,                  /* MASK */      \
375
                    (RS6000_BTC_ ## ATTR                /* ATTR */      \
376
                     | RS6000_BTC_TERNARY),                             \
377
                    CODE_FOR_ ## ICODE)                 /* ICODE */
378
 
379
#define BU_PAIRED_P(ENUM, NAME, ATTR, ICODE)                            \
380
  RS6000_BUILTIN_Q (PAIRED_BUILTIN_ ## ENUM,            /* ENUM */      \
381
                    "__builtin_paired_" NAME,           /* NAME */      \
382
                    RS6000_BTM_PAIRED,                  /* MASK */      \
383
                    (RS6000_BTC_ ## ATTR                /* ATTR */      \
384
                     | RS6000_BTC_PREDICATE),                           \
385
                    CODE_FOR_ ## ICODE)                 /* ICODE */
386
 
387
#define BU_PAIRED_X(ENUM, NAME, ATTR)                                   \
388
  RS6000_BUILTIN_X (PAIRED_BUILTIN_ ## ENUM,            /* ENUM */      \
389
                    "__builtin_paired_" NAME,           /* NAME */      \
390
                    RS6000_BTM_PAIRED,                  /* MASK */      \
391
                    (RS6000_BTC_ ## ATTR                /* ATTR */      \
392
                     | RS6000_BTC_SPECIAL),                             \
393
                    CODE_FOR_nothing)                   /* ICODE */
394
 
395
#define BU_SPECIAL_X(ENUM, NAME, MASK, ATTR)                            \
396
  RS6000_BUILTIN_X (ENUM,                               /* ENUM */      \
397
                    NAME,                               /* NAME */      \
398
                    MASK,                               /* MASK */      \
399
                    (ATTR | RS6000_BTC_SPECIAL),        /* ATTR */      \
400
                    CODE_FOR_nothing)                   /* ICODE */
401
#endif
402
 
403
/* Insure 0 is not a legitimate index.  */
404
BU_SPECIAL_X (RS6000_BUILTIN_NONE, NULL, 0, RS6000_BTC_MISC)
405
 
406
/* 3 argument Altivec builtins.  */
407
BU_ALTIVEC_3 (VMADDFP,        "vmaddfp",        FP,     fmav4sf4)
408
BU_ALTIVEC_3 (VMHADDSHS,      "vmhaddshs",      SAT,    altivec_vmhaddshs)
409
BU_ALTIVEC_3 (VMHRADDSHS,     "vmhraddshs",     SAT,    altivec_vmhraddshs)
410
BU_ALTIVEC_3 (VMLADDUHM,      "vmladduhm",      CONST,  altivec_vmladduhm)
411
BU_ALTIVEC_3 (VMSUMUBM,       "vmsumubm",       CONST,  altivec_vmsumubm)
412
BU_ALTIVEC_3 (VMSUMMBM,       "vmsummbm",       CONST,  altivec_vmsummbm)
413
BU_ALTIVEC_3 (VMSUMUHM,       "vmsumuhm",       CONST,  altivec_vmsumuhm)
414
BU_ALTIVEC_3 (VMSUMSHM,       "vmsumshm",       CONST,  altivec_vmsumshm)
415
BU_ALTIVEC_3 (VMSUMUHS,       "vmsumuhs",       SAT,    altivec_vmsumuhs)
416
BU_ALTIVEC_3 (VMSUMSHS,       "vmsumshs",       SAT,    altivec_vmsumshs)
417
BU_ALTIVEC_3 (VNMSUBFP,       "vnmsubfp",       FP,     nfmsv4sf4)
418
BU_ALTIVEC_3 (VPERM_2DF,      "vperm_2df",      CONST,  altivec_vperm_v2df)
419
BU_ALTIVEC_3 (VPERM_2DI,      "vperm_2di",      CONST,  altivec_vperm_v2di)
420
BU_ALTIVEC_3 (VPERM_4SF,      "vperm_4sf",      CONST,  altivec_vperm_v4sf)
421
BU_ALTIVEC_3 (VPERM_4SI,      "vperm_4si",      CONST,  altivec_vperm_v4si)
422
BU_ALTIVEC_3 (VPERM_8HI,      "vperm_8hi",      CONST,  altivec_vperm_v8hi)
423
BU_ALTIVEC_3 (VPERM_16QI,     "vperm_16qi",     CONST,  altivec_vperm_v16qi_uns)
424
BU_ALTIVEC_3 (VPERM_2DI_UNS,  "vperm_2di_uns",  CONST,  altivec_vperm_v2di_uns)
425
BU_ALTIVEC_3 (VPERM_4SI_UNS,  "vperm_4si_uns",  CONST,  altivec_vperm_v4si_uns)
426
BU_ALTIVEC_3 (VPERM_8HI_UNS,  "vperm_8hi_uns",  CONST,  altivec_vperm_v8hi_uns)
427
BU_ALTIVEC_3 (VPERM_16QI_UNS, "vperm_16qi_uns", CONST,  altivec_vperm_v16qi_uns)
428
BU_ALTIVEC_3 (VSEL_4SF,       "vsel_4sf",       CONST,  vector_select_v4sf)
429
BU_ALTIVEC_3 (VSEL_4SI,       "vsel_4si",       CONST,  vector_select_v4si)
430
BU_ALTIVEC_3 (VSEL_8HI,       "vsel_8hi",       CONST,  vector_select_v8hi)
431
BU_ALTIVEC_3 (VSEL_16QI,      "vsel_16qi",      CONST,  vector_select_v16qi)
432
BU_ALTIVEC_3 (VSEL_2DF,       "vsel_2df",       CONST,  vector_select_v2df)
433
BU_ALTIVEC_3 (VSEL_2DI,       "vsel_2di",       CONST,  vector_select_v2di)
434
BU_ALTIVEC_3 (VSEL_4SI_UNS,   "vsel_4si_uns",   CONST,  vector_select_v4si_uns)
435
BU_ALTIVEC_3 (VSEL_8HI_UNS,   "vsel_8hi_uns",   CONST,  vector_select_v8hi_uns)
436
BU_ALTIVEC_3 (VSEL_16QI_UNS,  "vsel_16qi_uns",  CONST,  vector_select_v16qi_uns)
437
BU_ALTIVEC_3 (VSEL_2DI_UNS,   "vsel_2di_uns",   CONST,  vector_select_v2di_uns)
438
BU_ALTIVEC_3 (VSLDOI_16QI,    "vsldoi_16qi",    CONST,  altivec_vsldoi_v16qi)
439
BU_ALTIVEC_3 (VSLDOI_8HI,     "vsldoi_8hi",     CONST,  altivec_vsldoi_v8hi)
440
BU_ALTIVEC_3 (VSLDOI_4SI,     "vsldoi_4si",     CONST,  altivec_vsldoi_v4si)
441
BU_ALTIVEC_3 (VSLDOI_4SF,     "vsldoi_4sf",     CONST,  altivec_vsldoi_v4sf)
442
 
443
/* Altivec DST builtins.  */
444
BU_ALTIVEC_D (DST,            "dst",            MISC,   altivec_dst)
445
BU_ALTIVEC_D (DSTT,           "dstt",           MISC,   altivec_dstt)
446
BU_ALTIVEC_D (DSTST,          "dstst",          MISC,   altivec_dstst)
447
BU_ALTIVEC_D (DSTSTT,         "dststt",         MISC,   altivec_dststt)
448
 
449
/* Altivec 2 argument builtin functions.  */
450
BU_ALTIVEC_2 (VADDUBM,        "vaddubm",        CONST,  addv16qi3)
451
BU_ALTIVEC_2 (VADDUHM,        "vadduhm",        CONST,  addv8hi3)
452
BU_ALTIVEC_2 (VADDUWM,        "vadduwm",        CONST,  addv4si3)
453
BU_ALTIVEC_2 (VADDFP,         "vaddfp",         CONST,  addv4sf3)
454
BU_ALTIVEC_2 (VADDCUW,        "vaddcuw",        CONST,  altivec_vaddcuw)
455
BU_ALTIVEC_2 (VADDUBS,        "vaddubs",        CONST,  altivec_vaddubs)
456
BU_ALTIVEC_2 (VADDSBS,        "vaddsbs",        CONST,  altivec_vaddsbs)
457
BU_ALTIVEC_2 (VADDUHS,        "vadduhs",        CONST,  altivec_vadduhs)
458
BU_ALTIVEC_2 (VADDSHS,        "vaddshs",        CONST,  altivec_vaddshs)
459
BU_ALTIVEC_2 (VADDUWS,        "vadduws",        CONST,  altivec_vadduws)
460
BU_ALTIVEC_2 (VADDSWS,        "vaddsws",        CONST,  altivec_vaddsws)
461
BU_ALTIVEC_2 (VAND,           "vand",           CONST,  andv4si3)
462
BU_ALTIVEC_2 (VANDC,          "vandc",          CONST,  andcv4si3)
463
BU_ALTIVEC_2 (VAVGUB,         "vavgub",         CONST,  altivec_vavgub)
464
BU_ALTIVEC_2 (VAVGSB,         "vavgsb",         CONST,  altivec_vavgsb)
465
BU_ALTIVEC_2 (VAVGUH,         "vavguh",         CONST,  altivec_vavguh)
466
BU_ALTIVEC_2 (VAVGSH,         "vavgsh",         CONST,  altivec_vavgsh)
467
BU_ALTIVEC_2 (VAVGUW,         "vavguw",         CONST,  altivec_vavguw)
468
BU_ALTIVEC_2 (VAVGSW,         "vavgsw",         CONST,  altivec_vavgsw)
469
BU_ALTIVEC_2 (VCFUX,          "vcfux",          CONST,  altivec_vcfux)
470
BU_ALTIVEC_2 (VCFSX,          "vcfsx",          CONST,  altivec_vcfsx)
471
BU_ALTIVEC_2 (VCMPBFP,        "vcmpbfp",        CONST,  altivec_vcmpbfp)
472
BU_ALTIVEC_2 (VCMPEQUB,       "vcmpequb",       CONST,  vector_eqv16qi)
473
BU_ALTIVEC_2 (VCMPEQUH,       "vcmpequh",       CONST,  vector_eqv8hi)
474
BU_ALTIVEC_2 (VCMPEQUW,       "vcmpequw",       CONST,  vector_eqv4si)
475
BU_ALTIVEC_2 (VCMPEQFP,       "vcmpeqfp",       CONST,  vector_eqv4sf)
476
BU_ALTIVEC_2 (VCMPGEFP,       "vcmpgefp",       CONST,  vector_gev4sf)
477
BU_ALTIVEC_2 (VCMPGTUB,       "vcmpgtub",       CONST,  vector_gtuv16qi)
478
BU_ALTIVEC_2 (VCMPGTSB,       "vcmpgtsb",       CONST,  vector_gtv16qi)
479
BU_ALTIVEC_2 (VCMPGTUH,       "vcmpgtuh",       CONST,  vector_gtuv8hi)
480
BU_ALTIVEC_2 (VCMPGTSH,       "vcmpgtsh",       CONST,  vector_gtv8hi)
481
BU_ALTIVEC_2 (VCMPGTUW,       "vcmpgtuw",       CONST,  vector_gtuv4si)
482
BU_ALTIVEC_2 (VCMPGTSW,       "vcmpgtsw",       CONST,  vector_gtv4si)
483
BU_ALTIVEC_2 (VCMPGTFP,       "vcmpgtfp",       CONST,  vector_gtv4sf)
484
BU_ALTIVEC_2 (VCTSXS,         "vctsxs",         CONST,  altivec_vctsxs)
485
BU_ALTIVEC_2 (VCTUXS,         "vctuxs",         CONST,  altivec_vctuxs)
486
BU_ALTIVEC_2 (VMAXUB,         "vmaxub",         CONST,  umaxv16qi3)
487
BU_ALTIVEC_2 (VMAXSB,         "vmaxsb",         CONST,  smaxv16qi3)
488
BU_ALTIVEC_2 (VMAXUH,         "vmaxuh",         CONST,  umaxv8hi3)
489
BU_ALTIVEC_2 (VMAXSH,         "vmaxsh",         CONST,  smaxv8hi3)
490
BU_ALTIVEC_2 (VMAXUW,         "vmaxuw",         CONST,  umaxv4si3)
491
BU_ALTIVEC_2 (VMAXSW,         "vmaxsw",         CONST,  smaxv4si3)
492
BU_ALTIVEC_2 (VMAXFP,         "vmaxfp",         CONST,  smaxv4sf3)
493
BU_ALTIVEC_2 (VMRGHB,         "vmrghb",         CONST,  altivec_vmrghb)
494
BU_ALTIVEC_2 (VMRGHH,         "vmrghh",         CONST,  altivec_vmrghh)
495
BU_ALTIVEC_2 (VMRGHW,         "vmrghw",         CONST,  altivec_vmrghw)
496
BU_ALTIVEC_2 (VMRGLB,         "vmrglb",         CONST,  altivec_vmrglb)
497
BU_ALTIVEC_2 (VMRGLH,         "vmrglh",         CONST,  altivec_vmrglh)
498
BU_ALTIVEC_2 (VMRGLW,         "vmrglw",         CONST,  altivec_vmrglw)
499
BU_ALTIVEC_2 (VMINUB,         "vminub",         CONST,  uminv16qi3)
500
BU_ALTIVEC_2 (VMINSB,         "vminsb",         CONST,  sminv16qi3)
501
BU_ALTIVEC_2 (VMINUH,         "vminuh",         CONST,  uminv8hi3)
502
BU_ALTIVEC_2 (VMINSH,         "vminsh",         CONST,  sminv8hi3)
503
BU_ALTIVEC_2 (VMINUW,         "vminuw",         CONST,  uminv4si3)
504
BU_ALTIVEC_2 (VMINSW,         "vminsw",         CONST,  sminv4si3)
505
BU_ALTIVEC_2 (VMINFP,         "vminfp",         CONST,  sminv4sf3)
506
BU_ALTIVEC_2 (VMULEUB,        "vmuleub",        CONST,  altivec_vmuleub)
507
BU_ALTIVEC_2 (VMULEUB_UNS,    "vmuleub_uns",    CONST,  altivec_vmuleub)
508
BU_ALTIVEC_2 (VMULESB,        "vmulesb",        CONST,  altivec_vmulesb)
509
BU_ALTIVEC_2 (VMULEUH,        "vmuleuh",        CONST,  altivec_vmuleuh)
510
BU_ALTIVEC_2 (VMULEUH_UNS,    "vmuleuh_uns",    CONST,  altivec_vmuleuh)
511
BU_ALTIVEC_2 (VMULESH,        "vmulesh",        CONST,  altivec_vmulesh)
512
BU_ALTIVEC_2 (VMULOUB,        "vmuloub",        CONST,  altivec_vmuloub)
513
BU_ALTIVEC_2 (VMULOUB_UNS,    "vmuloub_uns",    CONST,  altivec_vmuloub)
514
BU_ALTIVEC_2 (VMULOSB,        "vmulosb",        CONST,  altivec_vmulosb)
515
BU_ALTIVEC_2 (VMULOUH,        "vmulouh",        CONST,  altivec_vmulouh)
516
BU_ALTIVEC_2 (VMULOUH_UNS,    "vmulouh_uns",    CONST,  altivec_vmulouh)
517
BU_ALTIVEC_2 (VMULOSH,        "vmulosh",        CONST,  altivec_vmulosh)
518
BU_ALTIVEC_2 (VNOR,           "vnor",           CONST,  norv4si3)
519
BU_ALTIVEC_2 (VOR,            "vor",            CONST,  iorv4si3)
520
BU_ALTIVEC_2 (VPKUHUM,        "vpkuhum",        CONST,  altivec_vpkuhum)
521
BU_ALTIVEC_2 (VPKUWUM,        "vpkuwum",        CONST,  altivec_vpkuwum)
522
BU_ALTIVEC_2 (VPKPX,          "vpkpx",          CONST,  altivec_vpkpx)
523
BU_ALTIVEC_2 (VPKSHSS,        "vpkshss",        CONST,  altivec_vpkshss)
524
BU_ALTIVEC_2 (VPKSWSS,        "vpkswss",        CONST,  altivec_vpkswss)
525
BU_ALTIVEC_2 (VPKUHUS,        "vpkuhus",        CONST,  altivec_vpkuhus)
526
BU_ALTIVEC_2 (VPKSHUS,        "vpkshus",        CONST,  altivec_vpkshus)
527
BU_ALTIVEC_2 (VPKUWUS,        "vpkuwus",        CONST,  altivec_vpkuwus)
528
BU_ALTIVEC_2 (VPKSWUS,        "vpkswus",        CONST,  altivec_vpkswus)
529
BU_ALTIVEC_2 (VRECIPFP,       "vrecipdivfp",    CONST,  recipv4sf3)
530
BU_ALTIVEC_2 (VRLB,           "vrlb",           CONST,  vrotlv16qi3)
531
BU_ALTIVEC_2 (VRLH,           "vrlh",           CONST,  vrotlv8hi3)
532
BU_ALTIVEC_2 (VRLW,           "vrlw",           CONST,  vrotlv4si3)
533
BU_ALTIVEC_2 (VSLB,           "vslb",           CONST,  vashlv16qi3)
534
BU_ALTIVEC_2 (VSLH,           "vslh",           CONST,  vashlv8hi3)
535
BU_ALTIVEC_2 (VSLW,           "vslw",           CONST,  vashlv4si3)
536
BU_ALTIVEC_2 (VSL,            "vsl",            CONST,  altivec_vsl)
537
BU_ALTIVEC_2 (VSLO,           "vslo",           CONST,  altivec_vslo)
538
BU_ALTIVEC_2 (VSPLTB,         "vspltb",         CONST,  altivec_vspltb)
539
BU_ALTIVEC_2 (VSPLTH,         "vsplth",         CONST,  altivec_vsplth)
540
BU_ALTIVEC_2 (VSPLTW,         "vspltw",         CONST,  altivec_vspltw)
541
BU_ALTIVEC_2 (VSRB,           "vsrb",           CONST,  vlshrv16qi3)
542
BU_ALTIVEC_2 (VSRH,           "vsrh",           CONST,  vlshrv8hi3)
543
BU_ALTIVEC_2 (VSRW,           "vsrw",           CONST,  vlshrv4si3)
544
BU_ALTIVEC_2 (VSRAB,          "vsrab",          CONST,  vashrv16qi3)
545
BU_ALTIVEC_2 (VSRAH,          "vsrah",          CONST,  vashrv8hi3)
546
BU_ALTIVEC_2 (VSRAW,          "vsraw",          CONST,  vashrv4si3)
547
BU_ALTIVEC_2 (VSR,            "vsr",            CONST,  altivec_vsr)
548
BU_ALTIVEC_2 (VSRO,           "vsro",           CONST,  altivec_vsro)
549
BU_ALTIVEC_2 (VSUBUBM,        "vsububm",        CONST,  subv16qi3)
550
BU_ALTIVEC_2 (VSUBUHM,        "vsubuhm",        CONST,  subv8hi3)
551
BU_ALTIVEC_2 (VSUBUWM,        "vsubuwm",        CONST,  subv4si3)
552
BU_ALTIVEC_2 (VSUBFP,         "vsubfp",         CONST,  subv4sf3)
553
BU_ALTIVEC_2 (VSUBCUW,        "vsubcuw",        CONST,  altivec_vsubcuw)
554
BU_ALTIVEC_2 (VSUBUBS,        "vsububs",        CONST,  altivec_vsububs)
555
BU_ALTIVEC_2 (VSUBSBS,        "vsubsbs",        CONST,  altivec_vsubsbs)
556
BU_ALTIVEC_2 (VSUBUHS,        "vsubuhs",        CONST,  altivec_vsubuhs)
557
BU_ALTIVEC_2 (VSUBSHS,        "vsubshs",        CONST,  altivec_vsubshs)
558
BU_ALTIVEC_2 (VSUBUWS,        "vsubuws",        CONST,  altivec_vsubuws)
559
BU_ALTIVEC_2 (VSUBSWS,        "vsubsws",        CONST,  altivec_vsubsws)
560
BU_ALTIVEC_2 (VSUM4UBS,       "vsum4ubs",       CONST,  altivec_vsum4ubs)
561
BU_ALTIVEC_2 (VSUM4SBS,       "vsum4sbs",       CONST,  altivec_vsum4sbs)
562
BU_ALTIVEC_2 (VSUM4SHS,       "vsum4shs",       CONST,  altivec_vsum4shs)
563
BU_ALTIVEC_2 (VSUM2SWS,       "vsum2sws",       CONST,  altivec_vsum2sws)
564
BU_ALTIVEC_2 (VSUMSWS,        "vsumsws",        CONST,  altivec_vsumsws)
565
BU_ALTIVEC_2 (VXOR,           "vxor",           CONST,  xorv4si3)
566
BU_ALTIVEC_2 (COPYSIGN_V4SF,  "copysignfp",     CONST,  vector_copysignv4sf3)
567
 
568
/* Altivec ABS functions.  */
569
BU_ALTIVEC_A (ABS_V4SI,       "abs_v4si",       CONST,  absv4si2)
570
BU_ALTIVEC_A (ABS_V8HI,       "abs_v8hi",       CONST,  absv8hi2)
571
BU_ALTIVEC_A (ABS_V4SF,       "abs_v4sf",       CONST,  absv4sf2)
572
BU_ALTIVEC_A (ABS_V16QI,      "abs_v16qi",      CONST,  absv16qi2)
573
BU_ALTIVEC_A (ABSS_V4SI,      "abss_v4si",      SAT,    altivec_abss_v4si)
574
BU_ALTIVEC_A (ABSS_V8HI,      "abss_v8hi",      SAT,    altivec_abss_v8hi)
575
BU_ALTIVEC_A (ABSS_V16QI,     "abss_v16qi",     SAT,    altivec_abss_v16qi)
576
 
577
/* 1 argument Altivec builtin functions.  */
578
BU_ALTIVEC_1 (VEXPTEFP,       "vexptefp",       FP,     altivec_vexptefp)
579
BU_ALTIVEC_1 (VLOGEFP,        "vlogefp",        FP,     altivec_vlogefp)
580
BU_ALTIVEC_1 (VREFP,          "vrefp",          FP,     rev4sf2)
581
BU_ALTIVEC_1 (VRFIM,          "vrfim",          FP,     vector_floorv4sf2)
582
BU_ALTIVEC_1 (VRFIN,          "vrfin",          FP,     altivec_vrfin)
583
BU_ALTIVEC_1 (VRFIP,          "vrfip",          FP,     vector_ceilv4sf2)
584
BU_ALTIVEC_1 (VRFIZ,          "vrfiz",          FP,     vector_btruncv4sf2)
585
BU_ALTIVEC_1 (VRSQRTFP,       "vrsqrtfp",       FP,     rsqrtv4sf2)
586
BU_ALTIVEC_1 (VRSQRTEFP,      "vrsqrtefp",      FP,     rsqrtev4sf2)
587
BU_ALTIVEC_1 (VSPLTISB,       "vspltisb",       CONST,  altivec_vspltisb)
588
BU_ALTIVEC_1 (VSPLTISH,       "vspltish",       CONST,  altivec_vspltish)
589
BU_ALTIVEC_1 (VSPLTISW,       "vspltisw",       CONST,  altivec_vspltisw)
590
BU_ALTIVEC_1 (VUPKHSB,        "vupkhsb",        CONST,  altivec_vupkhsb)
591
BU_ALTIVEC_1 (VUPKHPX,        "vupkhpx",        CONST,  altivec_vupkhpx)
592
BU_ALTIVEC_1 (VUPKHSH,        "vupkhsh",        CONST,  altivec_vupkhsh)
593
BU_ALTIVEC_1 (VUPKLSB,        "vupklsb",        CONST,  altivec_vupklsb)
594
BU_ALTIVEC_1 (VUPKLPX,        "vupklpx",        CONST,  altivec_vupklpx)
595
BU_ALTIVEC_1 (VUPKLSH,        "vupklsh",        CONST,  altivec_vupklsh)
596
 
597
BU_ALTIVEC_1 (FLOAT_V4SI_V4SF,    "float_sisf",     FP, floatv4siv4sf2)
598
BU_ALTIVEC_1 (UNSFLOAT_V4SI_V4SF, "uns_float_sisf", FP, floatunsv4siv4sf2)
599
BU_ALTIVEC_1 (FIX_V4SF_V4SI,      "fix_sfsi",       FP, fix_truncv4sfv4si2)
600
BU_ALTIVEC_1 (FIXUNS_V4SF_V4SI,   "fixuns_sfsi",    FP, fixuns_truncv4sfv4si2)
601
 
602
/* Altivec predicate functions.  */
603
BU_ALTIVEC_P (VCMPBFP_P,      "vcmpbfp_p",      CONST,  altivec_vcmpbfp_p)
604
BU_ALTIVEC_P (VCMPEQFP_P,     "vcmpeqfp_p",     CONST,  vector_eq_v4sf_p)
605
BU_ALTIVEC_P (VCMPGEFP_P,     "vcmpgefp_p",     CONST,  vector_ge_v4sf_p)
606
BU_ALTIVEC_P (VCMPGTFP_P,     "vcmpgtfp_p",     CONST,  vector_gt_v4sf_p)
607
BU_ALTIVEC_P (VCMPEQUW_P,     "vcmpequw_p",     CONST,  vector_eq_v4si_p)
608
BU_ALTIVEC_P (VCMPGTSW_P,     "vcmpgtsw_p",     CONST,  vector_gt_v4si_p)
609
BU_ALTIVEC_P (VCMPGTUW_P,     "vcmpgtuw_p",     CONST,  vector_gtu_v4si_p)
610
BU_ALTIVEC_P (VCMPEQUH_P,     "vcmpequh_p",     CONST,  vector_eq_v8hi_p)
611
BU_ALTIVEC_P (VCMPGTSH_P,     "vcmpgtsh_p",     CONST,  vector_gt_v8hi_p)
612
BU_ALTIVEC_P (VCMPGTUH_P,     "vcmpgtuh_p",     CONST,  vector_gtu_v8hi_p)
613
BU_ALTIVEC_P (VCMPEQUB_P,     "vcmpequb_p",     CONST,  vector_eq_v16qi_p)
614
BU_ALTIVEC_P (VCMPGTSB_P,     "vcmpgtsb_p",     CONST,  vector_gt_v16qi_p)
615
BU_ALTIVEC_P (VCMPGTUB_P,     "vcmpgtub_p",     CONST,  vector_gtu_v16qi_p)
616
 
617
/* AltiVec builtins that are handled as special cases.  */
618
BU_ALTIVEC_X (ST_INTERNAL_4si,  "st_internal_4si",  MEM)
619
BU_ALTIVEC_X (LD_INTERNAL_4si,  "ld_internal_4si",  MEM)
620
BU_ALTIVEC_X (ST_INTERNAL_8hi,  "st_internal_8hi",  MEM)
621
BU_ALTIVEC_X (LD_INTERNAL_8hi,  "ld_internal_8hi",  MEM)
622
BU_ALTIVEC_X (ST_INTERNAL_16qi, "st_internal_16qi", MEM)
623
BU_ALTIVEC_X (LD_INTERNAL_16qi, "ld_internal_16qi", MEM)
624
BU_ALTIVEC_X (ST_INTERNAL_4sf,  "st_internal_16qi", MEM)
625
BU_ALTIVEC_X (LD_INTERNAL_4sf,  "ld_internal_4sf",  MEM)
626
BU_ALTIVEC_X (ST_INTERNAL_2df,  "st_internal_4sf",  MEM)
627
BU_ALTIVEC_X (LD_INTERNAL_2df,  "ld_internal_2df",  MEM)
628
BU_ALTIVEC_X (ST_INTERNAL_2di,  "st_internal_2di",  MEM)
629
BU_ALTIVEC_X (LD_INTERNAL_2di,  "ld_internal_2di",  MEM)
630
BU_ALTIVEC_X (MTVSCR,           "mtvscr",           MISC)
631
BU_ALTIVEC_X (MFVSCR,           "mfvscr",           MISC)
632
BU_ALTIVEC_X (DSSALL,           "dssall",           MISC)
633
BU_ALTIVEC_X (DSS,              "dss",              MISC)
634
BU_ALTIVEC_X (LVSL,             "lvsl",             MEM)
635
BU_ALTIVEC_X (LVSR,             "lvsr",             MEM)
636
BU_ALTIVEC_X (LVEBX,            "lvebx",            MEM)
637
BU_ALTIVEC_X (LVEHX,            "lvehx",            MEM)
638
BU_ALTIVEC_X (LVEWX,            "lvewx",            MEM)
639
BU_ALTIVEC_X (LVXL,             "lvxl",             MEM)
640
BU_ALTIVEC_X (LVX,              "lvx",              MEM)
641
BU_ALTIVEC_X (STVX,             "stvx",             MEM)
642
BU_ALTIVEC_C (LVLX,             "lvlx",             MEM)
643
BU_ALTIVEC_C (LVLXL,            "lvlxl",            MEM)
644
BU_ALTIVEC_C (LVRX,             "lvrx",             MEM)
645
BU_ALTIVEC_C (LVRXL,            "lvrxl",            MEM)
646
BU_ALTIVEC_X (STVEBX,           "stvebx",           MEM)
647
BU_ALTIVEC_X (STVEHX,           "stvehx",           MEM)
648
BU_ALTIVEC_X (STVEWX,           "stvewx",           MEM)
649
BU_ALTIVEC_X (STVXL,            "stvxl",            MEM)
650
BU_ALTIVEC_C (STVLX,            "stvlx",            MEM)
651
BU_ALTIVEC_C (STVLXL,           "stvlxl",           MEM)
652
BU_ALTIVEC_C (STVRX,            "stvrx",            MEM)
653
BU_ALTIVEC_C (STVRXL,           "stvrxl",           MEM)
654
BU_ALTIVEC_X (MASK_FOR_LOAD,    "mask_for_load",    MISC)
655
BU_ALTIVEC_X (MASK_FOR_STORE,   "mask_for_store",   MISC)
656
BU_ALTIVEC_X (VEC_INIT_V4SI,    "vec_init_v4si",    CONST)
657
BU_ALTIVEC_X (VEC_INIT_V8HI,    "vec_init_v8hi",    CONST)
658
BU_ALTIVEC_X (VEC_INIT_V16QI,   "vec_init_v16qi",   CONST)
659
BU_ALTIVEC_X (VEC_INIT_V4SF,    "vec_init_v4sf",    CONST)
660
BU_ALTIVEC_X (VEC_SET_V4SI,     "vec_set_v4si",     CONST)
661
BU_ALTIVEC_X (VEC_SET_V8HI,     "vec_set_v8hi",     CONST)
662
BU_ALTIVEC_X (VEC_SET_V16QI,    "vec_set_v16qi",    CONST)
663
BU_ALTIVEC_X (VEC_SET_V4SF,     "vec_set_v4sf",     CONST)
664
BU_ALTIVEC_X (VEC_EXT_V4SI,     "vec_ext_v4si",     CONST)
665
BU_ALTIVEC_X (VEC_EXT_V8HI,     "vec_ext_v8hi",     CONST)
666
BU_ALTIVEC_X (VEC_EXT_V16QI,    "vec_ext_v16qi",    CONST)
667
BU_ALTIVEC_X (VEC_EXT_V4SF,     "vec_ext_v4sf",     CONST)
668
 
669
/* Altivec overloaded builtins.  */
670
/* For now, don't set the classification for overloaded functions.
671
   The function should be converted to the type specific instruction
672
   before we get to the point about classifying the builtin type.  */
673
 
674
/* 3 argument Altivec overloaded builtins.  */
675
BU_ALTIVEC_OVERLOAD_3 (MADD,       "madd")
676
BU_ALTIVEC_OVERLOAD_3 (MADDS,      "madds")
677
BU_ALTIVEC_OVERLOAD_3 (MLADD,      "mladd")
678
BU_ALTIVEC_OVERLOAD_3 (MRADDS,     "mradds")
679
BU_ALTIVEC_OVERLOAD_3 (MSUM,       "msum")
680
BU_ALTIVEC_OVERLOAD_3 (MSUMS,      "msums")
681
BU_ALTIVEC_OVERLOAD_3 (NMSUB,      "nmsub")
682
BU_ALTIVEC_OVERLOAD_3 (PERM,       "perm")
683
BU_ALTIVEC_OVERLOAD_3 (SEL,        "sel")
684
BU_ALTIVEC_OVERLOAD_3 (VMSUMMBM,   "vmsummbm")
685
BU_ALTIVEC_OVERLOAD_3 (VMSUMSHM,   "vmsumshm")
686
BU_ALTIVEC_OVERLOAD_3 (VMSUMSHS,   "vmsumshs")
687
BU_ALTIVEC_OVERLOAD_3 (VMSUMUBM,   "vmsumubm")
688
BU_ALTIVEC_OVERLOAD_3 (VMSUMUHM,   "vmsumuhm")
689
BU_ALTIVEC_OVERLOAD_3 (VMSUMUHS,   "vmsumuhs")
690
 
691
/* Altivec DST overloaded builtins.  */
692
BU_ALTIVEC_OVERLOAD_D (DST,        "dst")
693
BU_ALTIVEC_OVERLOAD_D (DSTT,       "dstt")
694
BU_ALTIVEC_OVERLOAD_D (DSTST,      "dstst")
695
BU_ALTIVEC_OVERLOAD_D (DSTSTT,     "dststt")
696
 
697
/* 2 argument Altivec overloaded builtins.  */
698
BU_ALTIVEC_OVERLOAD_2 (ADD,        "add")
699
BU_ALTIVEC_OVERLOAD_2 (ADDC,       "addc")
700
BU_ALTIVEC_OVERLOAD_2 (ADDS,       "adds")
701
BU_ALTIVEC_OVERLOAD_2 (AND,        "and")
702
BU_ALTIVEC_OVERLOAD_2 (ANDC,       "andc")
703
BU_ALTIVEC_OVERLOAD_2 (AVG,        "avg")
704
BU_ALTIVEC_OVERLOAD_2 (CMPB,       "cmpb")
705
BU_ALTIVEC_OVERLOAD_2 (CMPEQ,      "cmpeq")
706
BU_ALTIVEC_OVERLOAD_2 (CMPGE,      "cmpge")
707
BU_ALTIVEC_OVERLOAD_2 (CMPGT,      "cmpgt")
708
BU_ALTIVEC_OVERLOAD_2 (CMPLE,      "cmple")
709
BU_ALTIVEC_OVERLOAD_2 (CMPLT,      "cmplt")
710
BU_ALTIVEC_OVERLOAD_2 (COPYSIGN,   "copysign")
711
BU_ALTIVEC_OVERLOAD_2 (MAX,        "max")
712
BU_ALTIVEC_OVERLOAD_2 (MERGEH,     "mergeh")
713
BU_ALTIVEC_OVERLOAD_2 (MERGEL,     "mergel")
714
BU_ALTIVEC_OVERLOAD_2 (MIN,        "min")
715
BU_ALTIVEC_OVERLOAD_2 (MULE,       "mule")
716
BU_ALTIVEC_OVERLOAD_2 (MULO,       "mulo")
717
BU_ALTIVEC_OVERLOAD_2 (NOR,        "nor")
718
BU_ALTIVEC_OVERLOAD_2 (OR,         "or")
719
BU_ALTIVEC_OVERLOAD_2 (PACK,       "pack")
720
BU_ALTIVEC_OVERLOAD_2 (PACKPX,     "packpx")
721
BU_ALTIVEC_OVERLOAD_2 (PACKS,      "packs")
722
BU_ALTIVEC_OVERLOAD_2 (PACKSU,     "packsu")
723
BU_ALTIVEC_OVERLOAD_2 (RECIP,      "recipdiv")
724
BU_ALTIVEC_OVERLOAD_2 (RL,         "rl")
725
BU_ALTIVEC_OVERLOAD_2 (SL,         "sl")
726
BU_ALTIVEC_OVERLOAD_2 (SLL,        "sll")
727
BU_ALTIVEC_OVERLOAD_2 (SLO,        "slo")
728
BU_ALTIVEC_OVERLOAD_2 (SR,         "sr")
729
BU_ALTIVEC_OVERLOAD_2 (SRA,        "sra")
730
BU_ALTIVEC_OVERLOAD_2 (SRL,        "srl")
731
BU_ALTIVEC_OVERLOAD_2 (SRO,        "sro")
732
BU_ALTIVEC_OVERLOAD_2 (SUB,        "sub")
733
BU_ALTIVEC_OVERLOAD_2 (SUBC,       "subc")
734
BU_ALTIVEC_OVERLOAD_2 (SUBS,       "subs")
735
BU_ALTIVEC_OVERLOAD_2 (SUM2S,      "sum2s")
736
BU_ALTIVEC_OVERLOAD_2 (SUM4S,      "sum4s")
737
BU_ALTIVEC_OVERLOAD_2 (SUMS,       "sums")
738
BU_ALTIVEC_OVERLOAD_2 (VADDFP,     "vaddfp")
739
BU_ALTIVEC_OVERLOAD_2 (VADDSBS,    "vaddsbs")
740
BU_ALTIVEC_OVERLOAD_2 (VADDSHS,    "vaddshs")
741
BU_ALTIVEC_OVERLOAD_2 (VADDSWS,    "vaddsws")
742
BU_ALTIVEC_OVERLOAD_2 (VADDUBM,    "vaddubm")
743
BU_ALTIVEC_OVERLOAD_2 (VADDUBS,    "vaddubs")
744
BU_ALTIVEC_OVERLOAD_2 (VADDUHM,    "vadduhm")
745
BU_ALTIVEC_OVERLOAD_2 (VADDUHS,    "vadduhs")
746
BU_ALTIVEC_OVERLOAD_2 (VADDUWM,    "vadduwm")
747
BU_ALTIVEC_OVERLOAD_2 (VADDUWS,    "vadduws")
748
BU_ALTIVEC_OVERLOAD_2 (VAVGSB,     "vavgsb")
749
BU_ALTIVEC_OVERLOAD_2 (VAVGSH,     "vavgsh")
750
BU_ALTIVEC_OVERLOAD_2 (VAVGSW,     "vavgsw")
751
BU_ALTIVEC_OVERLOAD_2 (VAVGUB,     "vavgub")
752
BU_ALTIVEC_OVERLOAD_2 (VAVGUH,     "vavguh")
753
BU_ALTIVEC_OVERLOAD_2 (VAVGUW,     "vavguw")
754
BU_ALTIVEC_OVERLOAD_2 (VCMPEQFP,   "vcmpeqfp")
755
BU_ALTIVEC_OVERLOAD_2 (VCMPEQUB,   "vcmpequb")
756
BU_ALTIVEC_OVERLOAD_2 (VCMPEQUH,   "vcmpequh")
757
BU_ALTIVEC_OVERLOAD_2 (VCMPEQUW,   "vcmpequw")
758
BU_ALTIVEC_OVERLOAD_2 (VCMPGTFP,   "vcmpgtfp")
759
BU_ALTIVEC_OVERLOAD_2 (VCMPGTSB,   "vcmpgtsb")
760
BU_ALTIVEC_OVERLOAD_2 (VCMPGTSH,   "vcmpgtsh")
761
BU_ALTIVEC_OVERLOAD_2 (VCMPGTSW,   "vcmpgtsw")
762
BU_ALTIVEC_OVERLOAD_2 (VCMPGTUB,   "vcmpgtub")
763
BU_ALTIVEC_OVERLOAD_2 (VCMPGTUH,   "vcmpgtuh")
764
BU_ALTIVEC_OVERLOAD_2 (VCMPGTUW,   "vcmpgtuw")
765
BU_ALTIVEC_OVERLOAD_2 (VMAXFP,     "vmaxfp")
766
BU_ALTIVEC_OVERLOAD_2 (VMAXSB,     "vmaxsb")
767
BU_ALTIVEC_OVERLOAD_2 (VMAXSH,     "vmaxsh")
768
BU_ALTIVEC_OVERLOAD_2 (VMAXSW,     "vmaxsw")
769
BU_ALTIVEC_OVERLOAD_2 (VMAXUB,     "vmaxub")
770
BU_ALTIVEC_OVERLOAD_2 (VMAXUH,     "vmaxuh")
771
BU_ALTIVEC_OVERLOAD_2 (VMAXUW,     "vmaxuw")
772
BU_ALTIVEC_OVERLOAD_2 (VMINFP,     "vminfp")
773
BU_ALTIVEC_OVERLOAD_2 (VMINSB,     "vminsb")
774
BU_ALTIVEC_OVERLOAD_2 (VMINSH,     "vminsh")
775
BU_ALTIVEC_OVERLOAD_2 (VMINSW,     "vminsw")
776
BU_ALTIVEC_OVERLOAD_2 (VMINUB,     "vminub")
777
BU_ALTIVEC_OVERLOAD_2 (VMINUH,     "vminuh")
778
BU_ALTIVEC_OVERLOAD_2 (VMINUW,     "vminuw")
779
BU_ALTIVEC_OVERLOAD_2 (VMRGHB,     "vmrghb")
780
BU_ALTIVEC_OVERLOAD_2 (VMRGHH,     "vmrghh")
781
BU_ALTIVEC_OVERLOAD_2 (VMRGHW,     "vmrghw")
782
BU_ALTIVEC_OVERLOAD_2 (VMRGLB,     "vmrglb")
783
BU_ALTIVEC_OVERLOAD_2 (VMRGLH,     "vmrglh")
784
BU_ALTIVEC_OVERLOAD_2 (VMRGLW,     "vmrglw")
785
BU_ALTIVEC_OVERLOAD_2 (VMULESB,    "vmulesb")
786
BU_ALTIVEC_OVERLOAD_2 (VMULESH,    "vmulesh")
787
BU_ALTIVEC_OVERLOAD_2 (VMULEUB,    "vmuleub")
788
BU_ALTIVEC_OVERLOAD_2 (VMULEUH,    "vmuleuh")
789
BU_ALTIVEC_OVERLOAD_2 (VMULOSB,    "vmulosb")
790
BU_ALTIVEC_OVERLOAD_2 (VMULOSH,    "vmulosh")
791
BU_ALTIVEC_OVERLOAD_2 (VMULOUB,    "vmuloub")
792
BU_ALTIVEC_OVERLOAD_2 (VMULOUH,    "vmulouh")
793
BU_ALTIVEC_OVERLOAD_2 (VPKSHSS,    "vpkshss")
794
BU_ALTIVEC_OVERLOAD_2 (VPKSHUS,    "vpkshus")
795
BU_ALTIVEC_OVERLOAD_2 (VPKSWSS,    "vpkswss")
796
BU_ALTIVEC_OVERLOAD_2 (VPKSWUS,    "vpkswus")
797
BU_ALTIVEC_OVERLOAD_2 (VPKUHUM,    "vpkuhum")
798
BU_ALTIVEC_OVERLOAD_2 (VPKUHUS,    "vpkuhus")
799
BU_ALTIVEC_OVERLOAD_2 (VPKUWUM,    "vpkuwum")
800
BU_ALTIVEC_OVERLOAD_2 (VPKUWUS,    "vpkuwus")
801
BU_ALTIVEC_OVERLOAD_2 (VRLB,       "vrlb")
802
BU_ALTIVEC_OVERLOAD_2 (VRLH,       "vrlh")
803
BU_ALTIVEC_OVERLOAD_2 (VRLW,       "vrlw")
804
BU_ALTIVEC_OVERLOAD_2 (VSLB,       "vslb")
805
BU_ALTIVEC_OVERLOAD_2 (VSLH,       "vslh")
806
BU_ALTIVEC_OVERLOAD_2 (VSLW,       "vslw")
807
BU_ALTIVEC_OVERLOAD_2 (VSRAB,      "vsrab")
808
BU_ALTIVEC_OVERLOAD_2 (VSRAH,      "vsrah")
809
BU_ALTIVEC_OVERLOAD_2 (VSRAW,      "vsraw")
810
BU_ALTIVEC_OVERLOAD_2 (VSRB,       "vsrb")
811
BU_ALTIVEC_OVERLOAD_2 (VSRH,       "vsrh")
812
BU_ALTIVEC_OVERLOAD_2 (VSRW,       "vsrw")
813
BU_ALTIVEC_OVERLOAD_2 (VSUBFP,     "vsubfp")
814
BU_ALTIVEC_OVERLOAD_2 (VSUBSBS,    "vsubsbs")
815
BU_ALTIVEC_OVERLOAD_2 (VSUBSHS,    "vsubshs")
816
BU_ALTIVEC_OVERLOAD_2 (VSUBSWS,    "vsubsws")
817
BU_ALTIVEC_OVERLOAD_2 (VSUBUBM,    "vsububm")
818
BU_ALTIVEC_OVERLOAD_2 (VSUBUBS,    "vsububs")
819
BU_ALTIVEC_OVERLOAD_2 (VSUBUHM,    "vsubuhm")
820
BU_ALTIVEC_OVERLOAD_2 (VSUBUHS,    "vsubuhs")
821
BU_ALTIVEC_OVERLOAD_2 (VSUBUWM,    "vsubuwm")
822
BU_ALTIVEC_OVERLOAD_2 (VSUBUWS,    "vsubuws")
823
BU_ALTIVEC_OVERLOAD_2 (VSUM4SBS,   "vsum4sbs")
824
BU_ALTIVEC_OVERLOAD_2 (VSUM4SHS,   "vsum4shs")
825
BU_ALTIVEC_OVERLOAD_2 (VSUM4UBS,   "vsum4ubs")
826
BU_ALTIVEC_OVERLOAD_2 (XOR,        "xor")
827
 
828
/* 1 argument Altivec overloaded functions.  */
829
BU_ALTIVEC_OVERLOAD_1 (ABS,        "abs")
830
BU_ALTIVEC_OVERLOAD_1 (ABSS,       "abss")
831
BU_ALTIVEC_OVERLOAD_1 (CEIL,       "ceil")
832
BU_ALTIVEC_OVERLOAD_1 (EXPTE,      "expte")
833
BU_ALTIVEC_OVERLOAD_1 (FLOOR,      "floor")
834
BU_ALTIVEC_OVERLOAD_1 (LOGE,       "loge")
835
BU_ALTIVEC_OVERLOAD_1 (MTVSCR,     "mtvscr")
836
BU_ALTIVEC_OVERLOAD_1 (NEARBYINT,  "nearbyint")
837
BU_ALTIVEC_OVERLOAD_1 (RE,         "re")
838
BU_ALTIVEC_OVERLOAD_1 (RINT,       "rint")
839
BU_ALTIVEC_OVERLOAD_1 (ROUND,      "round")
840
BU_ALTIVEC_OVERLOAD_1 (RSQRT,      "rsqrt")
841
BU_ALTIVEC_OVERLOAD_1 (RSQRTE,     "rsqrte")
842
BU_ALTIVEC_OVERLOAD_1 (SQRT,       "sqrt")
843
BU_ALTIVEC_OVERLOAD_1 (TRUNC,      "trunc")
844
BU_ALTIVEC_OVERLOAD_1 (UNPACKH,    "unpackh")
845
BU_ALTIVEC_OVERLOAD_1 (UNPACKL,    "unpackl")
846
BU_ALTIVEC_OVERLOAD_1 (VUPKHPX,    "vupkhpx")
847
BU_ALTIVEC_OVERLOAD_1 (VUPKHSB,    "vupkhsb")
848
BU_ALTIVEC_OVERLOAD_1 (VUPKHSH,    "vupkhsh")
849
BU_ALTIVEC_OVERLOAD_1 (VUPKLPX,    "vupklpx")
850
BU_ALTIVEC_OVERLOAD_1 (VUPKLSB,    "vupklsb")
851
BU_ALTIVEC_OVERLOAD_1 (VUPKLSH,    "vupklsh")
852
 
853
/* Overloaded altivec predicates.  */
854
BU_ALTIVEC_OVERLOAD_P (VCMPEQ_P,   "vcmpeq_p")
855
BU_ALTIVEC_OVERLOAD_P (VCMPGT_P,   "vcmpgt_p")
856
BU_ALTIVEC_OVERLOAD_P (VCMPGE_P,   "vcmpge_p")
857
 
858
/* Overloaded Altivec builtins that are handled as special cases.  */
859
BU_ALTIVEC_OVERLOAD_X (CTF,        "ctf")
860
BU_ALTIVEC_OVERLOAD_X (CTS,        "cts")
861
BU_ALTIVEC_OVERLOAD_X (CTU,        "ctu")
862
BU_ALTIVEC_OVERLOAD_X (EXTRACT,    "extract")
863
BU_ALTIVEC_OVERLOAD_X (INSERT,     "insert")
864
BU_ALTIVEC_OVERLOAD_X (LD,         "ld")
865
BU_ALTIVEC_OVERLOAD_X (LDE,        "lde")
866
BU_ALTIVEC_OVERLOAD_X (LDL,        "ldl")
867
BU_ALTIVEC_OVERLOAD_X (LVEBX,      "lvebx")
868
BU_ALTIVEC_OVERLOAD_X (LVEHX,      "lvehx")
869
BU_ALTIVEC_OVERLOAD_X (LVEWX,      "lvewx")
870
BU_ALTIVEC_OVERLOAD_X (LVLX,       "lvlx")
871
BU_ALTIVEC_OVERLOAD_X (LVLXL,      "lvlxl")
872
BU_ALTIVEC_OVERLOAD_X (LVRX,       "lvrx")
873
BU_ALTIVEC_OVERLOAD_X (LVRXL,      "lvrxl")
874
BU_ALTIVEC_OVERLOAD_X (LVSL,       "lvsl")
875
BU_ALTIVEC_OVERLOAD_X (LVSR,       "lvsr")
876
BU_ALTIVEC_OVERLOAD_X (PROMOTE,    "promote")
877
BU_ALTIVEC_OVERLOAD_X (SLD,        "sld")
878
BU_ALTIVEC_OVERLOAD_X (SPLAT,      "splat")
879
BU_ALTIVEC_OVERLOAD_X (SPLATS,     "splats")
880
BU_ALTIVEC_OVERLOAD_X (ST,         "st")
881
BU_ALTIVEC_OVERLOAD_X (STE,        "ste")
882
BU_ALTIVEC_OVERLOAD_X (STEP,       "step")
883
BU_ALTIVEC_OVERLOAD_X (STL,        "stl")
884
BU_ALTIVEC_OVERLOAD_X (STVEBX,     "stvebx")
885
BU_ALTIVEC_OVERLOAD_X (STVEHX,     "stvehx")
886
BU_ALTIVEC_OVERLOAD_X (STVEWX,     "stvewx")
887
BU_ALTIVEC_OVERLOAD_X (STVLX,      "stvlx")
888
BU_ALTIVEC_OVERLOAD_X (STVLXL,     "stvlxl")
889
BU_ALTIVEC_OVERLOAD_X (STVRX,      "stvrx")
890
BU_ALTIVEC_OVERLOAD_X (STVRXL,     "stvrxl")
891
BU_ALTIVEC_OVERLOAD_X (VCFSX,      "vcfsx")
892
BU_ALTIVEC_OVERLOAD_X (VCFUX,      "vcfux")
893
BU_ALTIVEC_OVERLOAD_X (VSPLTB,     "vspltb")
894
BU_ALTIVEC_OVERLOAD_X (VSPLTH,     "vsplth")
895
BU_ALTIVEC_OVERLOAD_X (VSPLTW,     "vspltw")
896
 
897
/* 3 argument VSX builtins.  */
898
BU_VSX_3 (XVMADDSP,           "xvmaddsp",       CONST,  fmav4sf4)
899
BU_VSX_3 (XVMSUBSP,           "xvmsubsp",       CONST,  fmsv4sf4)
900
BU_VSX_3 (XVNMADDSP,          "xvnmaddsp",      CONST,  nfmav4sf4)
901
BU_VSX_3 (XVNMSUBSP,          "xvnmsubsp",      CONST,  nfmsv4sf4)
902
 
903
BU_VSX_3 (XVMADDDP,           "xvmadddp",       CONST,  fmav2df4)
904
BU_VSX_3 (XVMSUBDP,           "xvmsubdp",       CONST,  fmsv2df4)
905
BU_VSX_3 (XVNMADDDP,          "xvnmadddp",      CONST,  nfmav2df4)
906
BU_VSX_3 (XVNMSUBDP,          "xvnmsubdp",      CONST,  nfmsv2df4)
907
 
908
BU_VSX_3 (XXSEL_2DI,          "xxsel_2di",      CONST,  vector_select_v2di)
909
BU_VSX_3 (XXSEL_2DF,          "xxsel_2df",      CONST,  vector_select_v2df)
910
BU_VSX_3 (XXSEL_4SF,          "xxsel_4sf",      CONST,  vector_select_v4sf)
911
BU_VSX_3 (XXSEL_4SI,          "xxsel_4si",      CONST,  vector_select_v4si)
912
BU_VSX_3 (XXSEL_8HI,          "xxsel_8hi",      CONST,  vector_select_v8hi)
913
BU_VSX_3 (XXSEL_16QI,         "xxsel_16qi",     CONST,  vector_select_v16qi)
914
BU_VSX_3 (XXSEL_2DI_UNS,      "xxsel_2di_uns",  CONST,  vector_select_v2di_uns)
915
BU_VSX_3 (XXSEL_4SI_UNS,      "xxsel_4si_uns",  CONST,  vector_select_v4si_uns)
916
BU_VSX_3 (XXSEL_8HI_UNS,      "xxsel_8hi_uns",  CONST,  vector_select_v8hi_uns)
917
BU_VSX_3 (XXSEL_16QI_UNS,     "xxsel_16qi_uns", CONST,  vector_select_v16qi_uns)
918
 
919
BU_VSX_3 (VPERM_2DI,          "vperm_2di",      CONST,  altivec_vperm_v2di)
920
BU_VSX_3 (VPERM_2DF,          "vperm_2df",      CONST,  altivec_vperm_v2df)
921
BU_VSX_3 (VPERM_4SF,          "vperm_4sf",      CONST,  altivec_vperm_v4sf)
922
BU_VSX_3 (VPERM_4SI,          "vperm_4si",      CONST,  altivec_vperm_v4si)
923
BU_VSX_3 (VPERM_8HI,          "vperm_8hi",      CONST,  altivec_vperm_v8hi)
924
BU_VSX_3 (VPERM_16QI,         "vperm_16qi",     CONST,  altivec_vperm_v16qi)
925
BU_VSX_3 (VPERM_2DI_UNS,      "vperm_2di_uns",  CONST,  altivec_vperm_v2di_uns)
926
BU_VSX_3 (VPERM_4SI_UNS,      "vperm_4si_uns",  CONST,  altivec_vperm_v4si_uns)
927
BU_VSX_3 (VPERM_8HI_UNS,      "vperm_8hi_uns",  CONST,  altivec_vperm_v8hi_uns)
928
BU_VSX_3 (VPERM_16QI_UNS,     "vperm_16qi_uns", CONST,  altivec_vperm_v16qi_uns)
929
 
930
BU_VSX_3 (XXPERMDI_2DF,       "xxpermdi_2df",   CONST,  vsx_xxpermdi_v2df)
931
BU_VSX_3 (XXPERMDI_2DI,       "xxpermdi_2di",   CONST,  vsx_xxpermdi_v2di)
932
BU_VSX_3 (XXPERMDI_4SF,       "xxpermdi_4sf",   CONST,  vsx_xxpermdi_v4sf)
933
BU_VSX_3 (XXPERMDI_4SI,       "xxpermdi_4si",   CONST,  vsx_xxpermdi_v4si)
934
BU_VSX_3 (XXPERMDI_8HI,       "xxpermdi_8hi",   CONST,  vsx_xxpermdi_v8hi)
935
BU_VSX_3 (XXPERMDI_16QI,      "xxpermdi_16qi",  CONST,  vsx_xxpermdi_v16qi)
936
BU_VSX_3 (SET_2DF,            "set_2df",        CONST,  vsx_set_v2df)
937
BU_VSX_3 (SET_2DI,            "set_2di",        CONST,  vsx_set_v2di)
938
BU_VSX_3 (XXSLDWI_2DI,        "xxsldwi_2di",    CONST,  vsx_xxsldwi_v2di)
939
BU_VSX_3 (XXSLDWI_2DF,        "xxsldwi_2df",    CONST,  vsx_xxsldwi_v2df)
940
BU_VSX_3 (XXSLDWI_4SF,        "xxsldwi_4sf",    CONST,  vsx_xxsldwi_v4sf)
941
BU_VSX_3 (XXSLDWI_4SI,        "xxsldwi_4si",    CONST,  vsx_xxsldwi_v4si)
942
BU_VSX_3 (XXSLDWI_8HI,        "xxsldwi_8hi",    CONST,  vsx_xxsldwi_v8hi)
943
BU_VSX_3 (XXSLDWI_16QI,       "xxsldwi_16qi",   CONST,  vsx_xxsldwi_v16qi)
944
 
945
/* 2 argument VSX builtins.  */
946
BU_VSX_2 (XVADDDP,            "xvadddp",        FP,     addv2df3)
947
BU_VSX_2 (XVSUBDP,            "xvsubdp",        FP,     subv2df3)
948
BU_VSX_2 (XVMULDP,            "xvmuldp",        FP,     mulv2df3)
949
BU_VSX_2 (XVDIVDP,            "xvdivdp",        FP,     divv2df3)
950
BU_VSX_2 (RECIP_V2DF,         "xvrecipdivdp",   FP,     recipv2df3)
951
BU_VSX_2 (XVMINDP,            "xvmindp",        CONST,  sminv2df3)
952
BU_VSX_2 (XVMAXDP,            "xvmaxdp",        CONST,  smaxv2df3)
953
BU_VSX_2 (XVTDIVDP_FE,        "xvtdivdp_fe",    CONST,  vsx_tdivv2df3_fe)
954
BU_VSX_2 (XVTDIVDP_FG,        "xvtdivdp_fg",    CONST,  vsx_tdivv2df3_fg)
955
BU_VSX_2 (XVCMPEQDP,          "xvcmpeqdp",      CONST,  vector_eqv2df)
956
BU_VSX_2 (XVCMPGTDP,          "xvcmpgtdp",      CONST,  vector_gtv2df)
957
BU_VSX_2 (XVCMPGEDP,          "xvcmpgedp",      CONST,  vector_gev2df)
958
 
959
BU_VSX_2 (XVADDSP,            "xvaddsp",        FP,     addv4sf3)
960
BU_VSX_2 (XVSUBSP,            "xvsubsp",        FP,     subv4sf3)
961
BU_VSX_2 (XVMULSP,            "xvmulsp",        FP,     mulv4sf3)
962
BU_VSX_2 (XVDIVSP,            "xvdivsp",        FP,     divv4sf3)
963
BU_VSX_2 (RECIP_V4SF,         "xvrecipdivsp",   FP,     recipv4sf3)
964
BU_VSX_2 (XVMINSP,            "xvminsp",        CONST,  sminv4sf3)
965
BU_VSX_2 (XVMAXSP,            "xvmaxsp",        CONST,  smaxv4sf3)
966
BU_VSX_2 (XVTDIVSP_FE,        "xvtdivsp_fe",    CONST,  vsx_tdivv4sf3_fe)
967
BU_VSX_2 (XVTDIVSP_FG,        "xvtdivsp_fg",    CONST,  vsx_tdivv4sf3_fg)
968
BU_VSX_2 (XVCMPEQSP,          "xvcmpeqsp",      CONST,  vector_eqv4sf)
969
BU_VSX_2 (XVCMPGTSP,          "xvcmpgtsp",      CONST,  vector_gtv4sf)
970
BU_VSX_2 (XVCMPGESP,          "xvcmpgesp",      CONST,  vector_gev4sf)
971
 
972
BU_VSX_2 (XSMINDP,            "xsmindp",        CONST,  smindf3)
973
BU_VSX_2 (XSMAXDP,            "xsmaxdp",        CONST,  smaxdf3)
974
BU_VSX_2 (XSTDIVDP_FE,        "xstdivdp_fe",    CONST,  vsx_tdivdf3_fe)
975
BU_VSX_2 (XSTDIVDP_FG,        "xstdivdp_fg",    CONST,  vsx_tdivdf3_fg)
976
BU_VSX_2 (CPSGNDP,            "cpsgndp",        CONST,  vector_copysignv2df3)
977
BU_VSX_2 (CPSGNSP,            "cpsgnsp",        CONST,  vector_copysignv4sf3)
978
 
979
BU_VSX_2 (CONCAT_2DF,         "concat_2df",     CONST,  vsx_concat_v2df)
980
BU_VSX_2 (CONCAT_2DI,         "concat_2di",     CONST,  vsx_concat_v2di)
981
BU_VSX_2 (SPLAT_2DF,          "splat_2df",      CONST,  vsx_splat_v2df)
982
BU_VSX_2 (SPLAT_2DI,          "splat_2di",      CONST,  vsx_splat_v2di)
983
BU_VSX_2 (XXMRGHW_4SF,        "xxmrghw",        CONST,  vsx_xxmrghw_v4sf)
984
BU_VSX_2 (XXMRGHW_4SI,        "xxmrghw_4si",    CONST,  vsx_xxmrghw_v4si)
985
BU_VSX_2 (XXMRGLW_4SF,        "xxmrglw",        CONST,  vsx_xxmrglw_v4sf)
986
BU_VSX_2 (XXMRGLW_4SI,        "xxmrglw_4si",    CONST,  vsx_xxmrglw_v4si)
987
BU_VSX_2 (VEC_MERGEL_V2DF,    "mergel_2df",     CONST,  vsx_mergel_v2df)
988
BU_VSX_2 (VEC_MERGEL_V2DI,    "mergel_2di",     CONST,  vsx_mergel_v2di)
989
BU_VSX_2 (VEC_MERGEH_V2DF,    "mergeh_2df",     CONST,  vsx_mergeh_v2df)
990
BU_VSX_2 (VEC_MERGEH_V2DI,    "mergeh_2di",     CONST,  vsx_mergeh_v2di)
991
 
992
/* VSX abs builtin functions.  */
993
BU_VSX_A (XVABSDP,            "xvabsdp",        CONST,  absv2df2)
994
BU_VSX_A (XVNABSDP,           "xvnabsdp",       CONST,  vsx_nabsv2df2)
995
BU_VSX_A (XVABSSP,            "xvabssp",        CONST,  absv4sf2)
996
BU_VSX_A (XVNABSSP,           "xvnabssp",       CONST,  vsx_nabsv4sf2)
997
 
998
/* 1 argument VSX builtin functions.  */
999
BU_VSX_1 (XVNEGDP,            "xvnegdp",        CONST,  negv2df2)
1000
BU_VSX_1 (XVSQRTDP,           "xvsqrtdp",       CONST,  sqrtv2df2)
1001
BU_VSX_1 (RSQRT_2DF,          "xvrsqrtdp",      CONST,  rsqrtv2df2)
1002
BU_VSX_1 (XVRSQRTEDP,         "xvrsqrtedp",     CONST,  rsqrtev2df2)
1003
BU_VSX_1 (XVTSQRTDP_FE,       "xvtsqrtdp_fe",   CONST,  vsx_tsqrtv2df2_fe)
1004
BU_VSX_1 (XVTSQRTDP_FG,       "xvtsqrtdp_fg",   CONST,  vsx_tsqrtv2df2_fg)
1005
BU_VSX_1 (XVREDP,             "xvredp",         CONST,  vsx_frev2df2)
1006
 
1007
BU_VSX_1 (XVNEGSP,            "xvnegsp",        CONST,  negv4sf2)
1008
BU_VSX_1 (XVSQRTSP,           "xvsqrtsp",       CONST,  sqrtv4sf2)
1009
BU_VSX_1 (RSQRT_4SF,          "xvrsqrtsp",      CONST,  rsqrtv4sf2)
1010
BU_VSX_1 (XVRSQRTESP,         "xvrsqrtesp",     CONST,  rsqrtev4sf2)
1011
BU_VSX_1 (XVTSQRTSP_FE,       "xvtsqrtsp_fe",   CONST,  vsx_tsqrtv4sf2_fe)
1012
BU_VSX_1 (XVTSQRTSP_FG,       "xvtsqrtsp_fg",   CONST,  vsx_tsqrtv4sf2_fg)
1013
BU_VSX_1 (XVRESP,             "xvresp",         CONST,  vsx_frev4sf2)
1014
 
1015
BU_VSX_1 (XSCVDPSP,           "xscvdpsp",       CONST,  vsx_xscvdpsp)
1016
BU_VSX_1 (XSCVSPDP,           "xscvspdp",       CONST,  vsx_xscvdpsp)
1017
BU_VSX_1 (XVCVDPSP,           "xvcvdpsp",       CONST,  vsx_xvcvdpsp)
1018
BU_VSX_1 (XVCVSPDP,           "xvcvspdp",       CONST,  vsx_xvcvspdp)
1019
BU_VSX_1 (XSTSQRTDP_FE,       "xstsqrtdp_fe",   CONST,  vsx_tsqrtdf2_fe)
1020
BU_VSX_1 (XSTSQRTDP_FG,       "xstsqrtdp_fg",   CONST,  vsx_tsqrtdf2_fg)
1021
 
1022
BU_VSX_1 (XVCVDPSXDS,         "xvcvdpsxds",     CONST,  vsx_fix_truncv2dfv2di2)
1023
BU_VSX_1 (XVCVDPUXDS,         "xvcvdpuxds",     CONST,  vsx_fixuns_truncv2dfv2di2)
1024
BU_VSX_1 (XVCVDPUXDS_UNS,     "xvcvdpuxds_uns", CONST,  vsx_fixuns_truncv2dfv2di2)
1025
BU_VSX_1 (XVCVSXDDP,          "xvcvsxddp",      CONST,  vsx_floatv2div2df2)
1026
BU_VSX_1 (XVCVUXDDP,          "xvcvuxddp",      CONST,  vsx_floatunsv2div2df2)
1027
BU_VSX_1 (XVCVUXDDP_UNS,       "xvcvuxddp_uns", CONST,  vsx_floatunsv2div2df2)
1028
 
1029
BU_VSX_1 (XVCVSPSXWS,         "xvcvspsxws",     CONST,  vsx_fix_truncv4sfv4si2)
1030
BU_VSX_1 (XVCVSPUXWS,         "xvcvspuxws",     CONST,  vsx_fixuns_truncv4sfv4si2)
1031
BU_VSX_1 (XVCVSXWSP,          "xvcvsxwsp",      CONST,  vsx_floatv4siv4sf2)
1032
BU_VSX_1 (XVCVUXWSP,          "xvcvuxwsp",      CONST,  vsx_floatunsv4siv4sf2)
1033
 
1034
BU_VSX_1 (XVCVDPSXWS,         "xvcvdpsxws",     CONST,  vsx_xvcvdpsxws)
1035
BU_VSX_1 (XVCVDPUXWS,         "xvcvdpuxws",     CONST,  vsx_xvcvdpuxws)
1036
BU_VSX_1 (XVCVSXWDP,          "xvcvsxwdp",      CONST,  vsx_xvcvsxwdp)
1037
BU_VSX_1 (XVCVUXWDP,          "xvcvuxwdp",      CONST,  vsx_xvcvuxwdp)
1038
BU_VSX_1 (XVRDPI,             "xvrdpi",         CONST,  vsx_xvrdpi)
1039
BU_VSX_1 (XVRDPIC,            "xvrdpic",        CONST,  vsx_xvrdpic)
1040
BU_VSX_1 (XVRDPIM,            "xvrdpim",        CONST,  vsx_floorv2df2)
1041
BU_VSX_1 (XVRDPIP,            "xvrdpip",        CONST,  vsx_ceilv2df2)
1042
BU_VSX_1 (XVRDPIZ,            "xvrdpiz",        CONST,  vsx_btruncv2df2)
1043
 
1044
BU_VSX_1 (XVCVSPSXDS,         "xvcvspsxds",     CONST,  vsx_xvcvspsxds)
1045
BU_VSX_1 (XVCVSPUXDS,         "xvcvspuxds",     CONST,  vsx_xvcvspuxds)
1046
BU_VSX_1 (XVCVSXDSP,          "xvcvsxdsp",      CONST,  vsx_xvcvsxdsp)
1047
BU_VSX_1 (XVCVUXDSP,          "xvcvuxdsp",      CONST,  vsx_xvcvuxdsp)
1048
BU_VSX_1 (XVRSPI,             "xvrspi",         CONST,  vsx_xvrspi)
1049
BU_VSX_1 (XVRSPIC,            "xvrspic",        CONST,  vsx_xvrspic)
1050
BU_VSX_1 (XVRSPIM,            "xvrspim",        CONST,  vsx_floorv4sf2)
1051
BU_VSX_1 (XVRSPIP,            "xvrspip",        CONST,  vsx_ceilv4sf2)
1052
BU_VSX_1 (XVRSPIZ,            "xvrspiz",        CONST,  vsx_btruncv4sf2)
1053
 
1054
BU_VSX_1 (XSRDPI,             "xsrdpi",         CONST,  vsx_xsrdpi)
1055
BU_VSX_1 (XSRDPIC,            "xsrdpic",        CONST,  vsx_xsrdpic)
1056
BU_VSX_1 (XSRDPIM,            "xsrdpim",        CONST,  vsx_floordf2)
1057
BU_VSX_1 (XSRDPIP,            "xsrdpip",        CONST,  vsx_ceildf2)
1058
BU_VSX_1 (XSRDPIZ,            "xsrdpiz",        CONST,  vsx_btruncdf2)
1059
 
1060
/* VSX predicate functions.  */
1061
BU_VSX_P (XVCMPEQSP_P,        "xvcmpeqsp_p",    CONST,  vector_eq_v4sf_p)
1062
BU_VSX_P (XVCMPGESP_P,        "xvcmpgesp_p",    CONST,  vector_ge_v4sf_p)
1063
BU_VSX_P (XVCMPGTSP_P,        "xvcmpgtsp_p",    CONST,  vector_gt_v4sf_p)
1064
BU_VSX_P (XVCMPEQDP_P,        "xvcmpeqdp_p",    CONST,  vector_eq_v2df_p)
1065
BU_VSX_P (XVCMPGEDP_P,        "xvcmpgedp_p",    CONST,  vector_ge_v2df_p)
1066
BU_VSX_P (XVCMPGTDP_P,        "xvcmpgtdp_p",    CONST,  vector_gt_v2df_p)
1067
 
1068
/* VSX builtins that are handled as special cases.  */
1069
BU_VSX_X (LXSDX,              "lxsdx",          MEM)
1070
BU_VSX_X (LXVD2X_V2DF,        "lxvd2x_v2df",    MEM)
1071
BU_VSX_X (LXVD2X_V2DI,        "lxvd2x_v2di",    MEM)
1072
BU_VSX_X (LXVDSX,             "lxvdsx",         MEM)
1073
BU_VSX_X (LXVW4X_V4SF,        "lxvw4x_v4sf",    MEM)
1074
BU_VSX_X (LXVW4X_V4SI,        "lxvw4x_v4si",    MEM)
1075
BU_VSX_X (LXVW4X_V8HI,        "lxvw4x_v8hi",    MEM)
1076
BU_VSX_X (LXVW4X_V16QI,       "lxvw4x_v16qi",   MEM)
1077
BU_VSX_X (STXSDX,             "stxsdx",         MEM)
1078
BU_VSX_X (STXVD2X_V2DF,       "stxsdx_v2df",    MEM)
1079
BU_VSX_X (STXVD2X_V2DI,       "stxsdx_v2di",    MEM)
1080
BU_VSX_X (STXVW4X_V4SF,       "stxsdx_v4sf",    MEM)
1081
BU_VSX_X (STXVW4X_V4SI,       "stxsdx_v4si",    MEM)
1082
BU_VSX_X (STXVW4X_V8HI,       "stxsdx_v8hi",    MEM)
1083
BU_VSX_X (STXVW4X_V16QI,      "stxsdx_v16qi",   MEM)
1084
BU_VSX_X (XSABSDP,            "xsabsdp",        CONST)
1085
BU_VSX_X (XSADDDP,            "xsadddp",        FP)
1086
BU_VSX_X (XSCMPODP,           "xscmpodp",       FP)
1087
BU_VSX_X (XSCMPUDP,           "xscmpudp",       FP)
1088
BU_VSX_X (XSCVDPSXDS,         "xscvdpsxds",     FP)
1089
BU_VSX_X (XSCVDPSXWS,         "xscvdpsxws",     FP)
1090
BU_VSX_X (XSCVDPUXDS,         "xscvdpuxds",     FP)
1091
BU_VSX_X (XSCVDPUXWS,         "xscvdpuxws",     FP)
1092
BU_VSX_X (XSCVSXDDP,          "xscvsxddp",      FP)
1093
BU_VSX_X (XSCVUXDDP,          "xscvuxddp",      FP)
1094
BU_VSX_X (XSDIVDP,            "xsdivdp",        FP)
1095
BU_VSX_X (XSMADDADP,          "xsmaddadp",      FP)
1096
BU_VSX_X (XSMADDMDP,          "xsmaddmdp",      FP)
1097
BU_VSX_X (XSMOVDP,            "xsmovdp",        FP)
1098
BU_VSX_X (XSMSUBADP,          "xsmsubadp",      FP)
1099
BU_VSX_X (XSMSUBMDP,          "xsmsubmdp",      FP)
1100
BU_VSX_X (XSMULDP,            "xsmuldp",        FP)
1101
BU_VSX_X (XSNABSDP,           "xsnabsdp",       FP)
1102
BU_VSX_X (XSNEGDP,            "xsnegdp",        FP)
1103
BU_VSX_X (XSNMADDADP,         "xsnmaddadp",     FP)
1104
BU_VSX_X (XSNMADDMDP,         "xsnmaddmdp",     FP)
1105
BU_VSX_X (XSNMSUBADP,         "xsnmsubadp",     FP)
1106
BU_VSX_X (XSNMSUBMDP,         "xsnmsubmdp",     FP)
1107
BU_VSX_X (XSSUBDP,            "xssubdp",        FP)
1108
BU_VSX_X (VEC_INIT_V2DF,      "vec_init_v2df",  CONST)
1109
BU_VSX_X (VEC_INIT_V2DI,      "vec_init_v2di",  CONST)
1110
BU_VSX_X (VEC_SET_V2DF,       "vec_set_v2df",   CONST)
1111
BU_VSX_X (VEC_SET_V2DI,       "vec_set_v2di",   CONST)
1112
BU_VSX_X (VEC_EXT_V2DF,       "vec_ext_v2df",   CONST)
1113
BU_VSX_X (VEC_EXT_V2DI,       "vec_ext_v2di",   CONST)
1114
 
1115
/* VSX overloaded builtins, add the overloaded functions not present in
1116
   Altivec.  */
1117
 
1118
/* 3 argument VSX overloaded builtins.  */
1119
BU_VSX_OVERLOAD_3  (MSUB,     "msub")
1120
BU_VSX_OVERLOAD_3  (NMADD,    "nmadd")
1121
BU_VSX_OVERLOAD_3V (XXPERMDI, "xxpermdi")
1122
BU_VSX_OVERLOAD_3V (XXSLDWI,  "xxsldwi")
1123
 
1124
/* 2 argument VSX overloaded builtin functions.  */
1125
BU_VSX_OVERLOAD_2 (MUL,      "mul")
1126
BU_VSX_OVERLOAD_2 (DIV,      "div")
1127
BU_VSX_OVERLOAD_2 (XXMRGHW,  "xxmrghw")
1128
BU_VSX_OVERLOAD_2 (XXMRGLW,  "xxmrglw")
1129
BU_VSX_OVERLOAD_2 (XXSPLTD,  "xxspltd")
1130
BU_VSX_OVERLOAD_2 (XXSPLTW,  "xxspltw")
1131
 
1132
/* VSX builtins that are handled as special cases.  */
1133
BU_VSX_OVERLOAD_X (LD,       "ld")
1134
BU_VSX_OVERLOAD_X (ST,       "st")
1135
 
1136
/* 3 argument paired floating point builtins.  */
1137
BU_PAIRED_3 (MSUB,            "msub",           FP,     fmsv2sf4)
1138
BU_PAIRED_3 (MADD,            "madd",           FP,     fmav2sf4)
1139
BU_PAIRED_3 (MADDS0,          "madds0",         FP,     paired_madds0)
1140
BU_PAIRED_3 (MADDS1,          "madds1",         FP,     paired_madds1)
1141
BU_PAIRED_3 (NMSUB,           "nmsub",          FP,     nfmsv2sf4)
1142
BU_PAIRED_3 (NMADD,           "nmadd",          FP,     nfmav2sf4)
1143
BU_PAIRED_3 (SUM0,            "sum0",           FP,     paired_sum0)
1144
BU_PAIRED_3 (SUM1,            "sum1",           FP,     paired_sum1)
1145
BU_PAIRED_3 (SELV2SF4,        "selv2sf4",       CONST,  selv2sf4)
1146
 
1147
/* 2 argument paired floating point builtins.  */
1148
BU_PAIRED_2 (DIVV2SF3,        "divv2sf3",       FP,     paired_divv2sf3)
1149
BU_PAIRED_2 (ADDV2SF3,        "addv2sf3",       FP,     paired_addv2sf3)
1150
BU_PAIRED_2 (SUBV2SF3,        "subv2sf3",       FP,     paired_subv2sf3)
1151
BU_PAIRED_2 (MULV2SF3,        "mulv2sf3",       FP,     paired_mulv2sf3)
1152
BU_PAIRED_2 (MULS0,           "muls0",          FP,     paired_muls0)
1153
BU_PAIRED_2 (MULS1,           "muls1",          FP,     paired_muls1)
1154
BU_PAIRED_2 (MERGE00,         "merge00",        CONST,  paired_merge00)
1155
BU_PAIRED_2 (MERGE01,         "merge01",        CONST,  paired_merge01)
1156
BU_PAIRED_2 (MERGE10,         "merge10",        CONST,  paired_merge10)
1157
BU_PAIRED_2 (MERGE11,         "merge11",        CONST,  paired_merge11)
1158
 
1159
/* 1 argument paired floating point builtin functions.  */
1160
BU_PAIRED_1 (ABSV2SF2,        "absv2sf2",       CONST,  paired_absv2sf2)
1161
BU_PAIRED_1 (NABSV2SF2,       "nabsv2sf2",      CONST,  nabsv2sf2)
1162
BU_PAIRED_1 (NEGV2SF2,        "negv2sf2",       CONST,  paired_negv2sf2)
1163
BU_PAIRED_1 (SQRTV2SF2,       "sqrtv2sf2",      FP,     sqrtv2sf2)
1164
BU_PAIRED_1 (RESV2SF,         "resv2sf2",       FP,     resv2sf2)
1165
 
1166
/* PAIRED builtins that are handled as special cases.  */
1167
BU_PAIRED_X (STX,             "stx",            MISC)
1168
BU_PAIRED_X (LX,              "lx",             MISC)
1169
 
1170
/* Paired predicates.  */
1171
BU_PAIRED_P (CMPU0,     "cmpu0",        CONST,  paired_cmpu0)
1172
BU_PAIRED_P (CMPU1,     "cmpu1",        CONST,  paired_cmpu1)
1173
 
1174
/* PowerPC E500 builtins (SPE).  */
1175
 
1176
BU_SPE_2 (EVADDW,       "evaddw",       MISC,   addv2si3)
1177
BU_SPE_2 (EVAND,        "evand",        MISC,   andv2si3)
1178
BU_SPE_2 (EVANDC,       "evandc",       MISC,   spe_evandc)
1179
BU_SPE_2 (EVDIVWS,      "evdivws",      MISC,   divv2si3)
1180
BU_SPE_2 (EVDIVWU,      "evdivwu",      MISC,   spe_evdivwu)
1181
BU_SPE_2 (EVEQV,        "eveqv",        MISC,   spe_eveqv)
1182
BU_SPE_2 (EVFSADD,      "evfsadd",      MISC,   spe_evfsadd)
1183
BU_SPE_2 (EVFSDIV,      "evfsdiv",      MISC,   spe_evfsdiv)
1184
BU_SPE_2 (EVFSMUL,      "evfsmul",      MISC,   spe_evfsmul)
1185
BU_SPE_2 (EVFSSUB,      "evfssub",      MISC,   spe_evfssub)
1186
BU_SPE_2 (EVMERGEHI,    "evmergehi",    MISC,   spe_evmergehi)
1187
BU_SPE_2 (EVMERGEHILO,  "evmergehilo",  MISC,   spe_evmergehilo)
1188
BU_SPE_2 (EVMERGELO,    "evmergelo",    MISC,   spe_evmergelo)
1189
BU_SPE_2 (EVMERGELOHI,  "evmergelohi",  MISC,   spe_evmergelohi)
1190
BU_SPE_2 (EVMHEGSMFAA,  "evmhegsmfaa",  MISC,   spe_evmhegsmfaa)
1191
BU_SPE_2 (EVMHEGSMFAN,  "evmhegsmfan",  MISC,   spe_evmhegsmfan)
1192
BU_SPE_2 (EVMHEGSMIAA,  "evmhegsmiaa",  MISC,   spe_evmhegsmiaa)
1193
BU_SPE_2 (EVMHEGSMIAN,  "evmhegsmian",  MISC,   spe_evmhegsmian)
1194
BU_SPE_2 (EVMHEGUMIAA,  "evmhegumiaa",  MISC,   spe_evmhegumiaa)
1195
BU_SPE_2 (EVMHEGUMIAN,  "evmhegumian",  MISC,   spe_evmhegumian)
1196
BU_SPE_2 (EVMHESMF,     "evmhesmf",     MISC,   spe_evmhesmf)
1197
BU_SPE_2 (EVMHESMFA,    "evmhesmfa",    MISC,   spe_evmhesmfa)
1198
BU_SPE_2 (EVMHESMFAAW,  "evmhesmfaaw",  MISC,   spe_evmhesmfaaw)
1199
BU_SPE_2 (EVMHESMFANW,  "evmhesmfanw",  MISC,   spe_evmhesmfanw)
1200
BU_SPE_2 (EVMHESMI,     "evmhesmi",     MISC,   spe_evmhesmi)
1201
BU_SPE_2 (EVMHESMIA,    "evmhesmia",    MISC,   spe_evmhesmia)
1202
BU_SPE_2 (EVMHESMIAAW,  "evmhesmiaaw",  MISC,   spe_evmhesmiaaw)
1203
BU_SPE_2 (EVMHESMIANW,  "evmhesmianw",  MISC,   spe_evmhesmianw)
1204
BU_SPE_2 (EVMHESSF,     "evmhessf",     MISC,   spe_evmhessf)
1205
BU_SPE_2 (EVMHESSFA,    "evmhessfa",    MISC,   spe_evmhessfa)
1206
BU_SPE_2 (EVMHESSFAAW,  "evmhessfaaw",  MISC,   spe_evmhessfaaw)
1207
BU_SPE_2 (EVMHESSFANW,  "evmhessfanw",  MISC,   spe_evmhessfanw)
1208
BU_SPE_2 (EVMHESSIAAW,  "evmhessiaaw",  MISC,   spe_evmhessiaaw)
1209
BU_SPE_2 (EVMHESSIANW,  "evmhessianw",  MISC,   spe_evmhessianw)
1210
BU_SPE_2 (EVMHEUMI,     "evmheumi",     MISC,   spe_evmheumi)
1211
BU_SPE_2 (EVMHEUMIA,    "evmheumia",    MISC,   spe_evmheumia)
1212
BU_SPE_2 (EVMHEUMIAAW,  "evmheumiaaw",  MISC,   spe_evmheumiaaw)
1213
BU_SPE_2 (EVMHEUMIANW,  "evmheumianw",  MISC,   spe_evmheumianw)
1214
BU_SPE_2 (EVMHEUSIAAW,  "evmheusiaaw",  MISC,   spe_evmheusiaaw)
1215
BU_SPE_2 (EVMHEUSIANW,  "evmheusianw",  MISC,   spe_evmheusianw)
1216
BU_SPE_2 (EVMHOGSMFAA,  "evmhogsmfaa",  MISC,   spe_evmhogsmfaa)
1217
BU_SPE_2 (EVMHOGSMFAN,  "evmhogsmfan",  MISC,   spe_evmhogsmfan)
1218
BU_SPE_2 (EVMHOGSMIAA,  "evmhogsmiaa",  MISC,   spe_evmhogsmiaa)
1219
BU_SPE_2 (EVMHOGSMIAN,  "evmhogsmian",  MISC,   spe_evmhogsmian)
1220
BU_SPE_2 (EVMHOGUMIAA,  "evmhogumiaa",  MISC,   spe_evmhogumiaa)
1221
BU_SPE_2 (EVMHOGUMIAN,  "evmhogumian",  MISC,   spe_evmhogumian)
1222
BU_SPE_2 (EVMHOSMF,     "evmhosmf",     MISC,   spe_evmhosmf)
1223
BU_SPE_2 (EVMHOSMFA,    "evmhosmfa",    MISC,   spe_evmhosmfa)
1224
BU_SPE_2 (EVMHOSMFAAW,  "evmhosmfaaw",  MISC,   spe_evmhosmfaaw)
1225
BU_SPE_2 (EVMHOSMFANW,  "evmhosmfanw",  MISC,   spe_evmhosmfanw)
1226
BU_SPE_2 (EVMHOSMI,     "evmhosmi",     MISC,   spe_evmhosmi)
1227
BU_SPE_2 (EVMHOSMIA,    "evmhosmia",    MISC,   spe_evmhosmia)
1228
BU_SPE_2 (EVMHOSMIAAW,  "evmhosmiaaw",  MISC,   spe_evmhosmiaaw)
1229
BU_SPE_2 (EVMHOSMIANW,  "evmhosmianw",  MISC,   spe_evmhosmianw)
1230
BU_SPE_2 (EVMHOSSF,     "evmhossf",     MISC,   spe_evmhossf)
1231
BU_SPE_2 (EVMHOSSFA,    "evmhossfa",    MISC,   spe_evmhossfa)
1232
BU_SPE_2 (EVMHOSSFAAW,  "evmhossfaaw",  MISC,   spe_evmhossfaaw)
1233
BU_SPE_2 (EVMHOSSFANW,  "evmhossfanw",  MISC,   spe_evmhossfanw)
1234
BU_SPE_2 (EVMHOSSIAAW,  "evmhossiaaw",  MISC,   spe_evmhossiaaw)
1235
BU_SPE_2 (EVMHOSSIANW,  "evmhossianw",  MISC,   spe_evmhossianw)
1236
BU_SPE_2 (EVMHOUMI,     "evmhoumi",     MISC,   spe_evmhoumi)
1237
BU_SPE_2 (EVMHOUMIA,    "evmhoumia",    MISC,   spe_evmhoumia)
1238
BU_SPE_2 (EVMHOUMIAAW,  "evmhoumiaaw",  MISC,   spe_evmhoumiaaw)
1239
BU_SPE_2 (EVMHOUMIANW,  "evmhoumianw",  MISC,   spe_evmhoumianw)
1240
BU_SPE_2 (EVMHOUSIAAW,  "evmhousiaaw",  MISC,   spe_evmhousiaaw)
1241
BU_SPE_2 (EVMHOUSIANW,  "evmhousianw",  MISC,   spe_evmhousianw)
1242
BU_SPE_2 (EVMWHSMF,     "evmwhsmf",     MISC,   spe_evmwhsmf)
1243
BU_SPE_2 (EVMWHSMFA,    "evmwhsmfa",    MISC,   spe_evmwhsmfa)
1244
BU_SPE_2 (EVMWHSMI,     "evmwhsmi",     MISC,   spe_evmwhsmi)
1245
BU_SPE_2 (EVMWHSMIA,    "evmwhsmia",    MISC,   spe_evmwhsmia)
1246
BU_SPE_2 (EVMWHSSF,     "evmwhssf",     MISC,   spe_evmwhssf)
1247
BU_SPE_2 (EVMWHSSFA,    "evmwhssfa",    MISC,   spe_evmwhssfa)
1248
BU_SPE_2 (EVMWHUMI,     "evmwhumi",     MISC,   spe_evmwhumi)
1249
BU_SPE_2 (EVMWHUMIA,    "evmwhumia",    MISC,   spe_evmwhumia)
1250
BU_SPE_2 (EVMWLSMIAAW,  "evmwlsmiaaw",  MISC,   spe_evmwlsmiaaw)
1251
BU_SPE_2 (EVMWLSMIANW,  "evmwlsmianw",  MISC,   spe_evmwlsmianw)
1252
BU_SPE_2 (EVMWLSSIAAW,  "evmwlssiaaw",  MISC,   spe_evmwlssiaaw)
1253
BU_SPE_2 (EVMWLSSIANW,  "evmwlssianw",  MISC,   spe_evmwlssianw)
1254
BU_SPE_2 (EVMWLUMI,     "evmwlumi",     MISC,   spe_evmwlumi)
1255
BU_SPE_2 (EVMWLUMIA,    "evmwlumia",    MISC,   spe_evmwlumia)
1256
BU_SPE_2 (EVMWLUMIAAW,  "evmwlumiaaw",  MISC,   spe_evmwlumiaaw)
1257
BU_SPE_2 (EVMWLUMIANW,  "evmwlumianw",  MISC,   spe_evmwlumianw)
1258
BU_SPE_2 (EVMWLUSIAAW,  "evmwlusiaaw",  MISC,   spe_evmwlusiaaw)
1259
BU_SPE_2 (EVMWLUSIANW,  "evmwlusianw",  MISC,   spe_evmwlusianw)
1260
BU_SPE_2 (EVMWSMF,      "evmwsmf",      MISC,   spe_evmwsmf)
1261
BU_SPE_2 (EVMWSMFA,     "evmwsmfa",     MISC,   spe_evmwsmfa)
1262
BU_SPE_2 (EVMWSMFAA,    "evmwsmfaa",    MISC,   spe_evmwsmfaa)
1263
BU_SPE_2 (EVMWSMFAN,    "evmwsmfan",    MISC,   spe_evmwsmfan)
1264
BU_SPE_2 (EVMWSMI,      "evmwsmi",      MISC,   spe_evmwsmi)
1265
BU_SPE_2 (EVMWSMIA,     "evmwsmia",     MISC,   spe_evmwsmia)
1266
BU_SPE_2 (EVMWSMIAA,    "evmwsmiaa",    MISC,   spe_evmwsmiaa)
1267
BU_SPE_2 (EVMWSMIAN,    "evmwsmian",    MISC,   spe_evmwsmian)
1268
BU_SPE_2 (EVMWSSF,      "evmwssf",      MISC,   spe_evmwssf)
1269
BU_SPE_2 (EVMWSSFA,     "evmwssfa",     MISC,   spe_evmwssfa)
1270
BU_SPE_2 (EVMWSSFAA,    "evmwssfaa",    MISC,   spe_evmwssfaa)
1271
BU_SPE_2 (EVMWSSFAN,    "evmwssfan",    MISC,   spe_evmwssfan)
1272
BU_SPE_2 (EVMWUMI,      "evmwumi",      MISC,   spe_evmwumi)
1273
BU_SPE_2 (EVMWUMIA,     "evmwumia",     MISC,   spe_evmwumia)
1274
BU_SPE_2 (EVMWUMIAA,    "evmwumiaa",    MISC,   spe_evmwumiaa)
1275
BU_SPE_2 (EVMWUMIAN,    "evmwumian",    MISC,   spe_evmwumian)
1276
BU_SPE_2 (EVNAND,       "evnand",       MISC,   spe_evnand)
1277
BU_SPE_2 (EVNOR,        "evnor",        MISC,   spe_evnor)
1278
BU_SPE_2 (EVOR,         "evor",         MISC,   spe_evor)
1279
BU_SPE_2 (EVORC,        "evorc",        MISC,   spe_evorc)
1280
BU_SPE_2 (EVRLW,        "evrlw",        MISC,   spe_evrlw)
1281
BU_SPE_2 (EVSLW,        "evslw",        MISC,   spe_evslw)
1282
BU_SPE_2 (EVSRWS,       "evsrws",       MISC,   spe_evsrws)
1283
BU_SPE_2 (EVSRWU,       "evsrwu",       MISC,   spe_evsrwu)
1284
BU_SPE_2 (EVSUBFW,      "evsubfw",      MISC,   subv2si3)
1285
 
1286
/* SPE binary operations expecting a 5-bit unsigned literal.  */
1287
BU_SPE_2 (EVADDIW,      "evaddiw",      MISC,   spe_evaddiw)
1288
 
1289
BU_SPE_2 (EVRLWI,       "evrlwi",       MISC,   spe_evrlwi)
1290
BU_SPE_2 (EVSLWI,       "evslwi",       MISC,   spe_evslwi)
1291
BU_SPE_2 (EVSRWIS,      "evsrwis",      MISC,   spe_evsrwis)
1292
BU_SPE_2 (EVSRWIU,      "evsrwiu",      MISC,   spe_evsrwiu)
1293
BU_SPE_2 (EVSUBIFW,     "evsubifw",     MISC,   spe_evsubifw)
1294
BU_SPE_2 (EVMWHSSFAA,   "evmwhssfaa",   MISC,   spe_evmwhssfaa)
1295
BU_SPE_2 (EVMWHSSMAA,   "evmwhssmaa",   MISC,   spe_evmwhssmaa)
1296
BU_SPE_2 (EVMWHSMFAA,   "evmwhsmfaa",   MISC,   spe_evmwhsmfaa)
1297
BU_SPE_2 (EVMWHSMIAA,   "evmwhsmiaa",   MISC,   spe_evmwhsmiaa)
1298
BU_SPE_2 (EVMWHUSIAA,   "evmwhusiaa",   MISC,   spe_evmwhusiaa)
1299
BU_SPE_2 (EVMWHUMIAA,   "evmwhumiaa",   MISC,   spe_evmwhumiaa)
1300
BU_SPE_2 (EVMWHSSFAN,   "evmwhssfan",   MISC,   spe_evmwhssfan)
1301
BU_SPE_2 (EVMWHSSIAN,   "evmwhssian",   MISC,   spe_evmwhssian)
1302
BU_SPE_2 (EVMWHSMFAN,   "evmwhsmfan",   MISC,   spe_evmwhsmfan)
1303
BU_SPE_2 (EVMWHSMIAN,   "evmwhsmian",   MISC,   spe_evmwhsmian)
1304
BU_SPE_2 (EVMWHUSIAN,   "evmwhusian",   MISC,   spe_evmwhusian)
1305
BU_SPE_2 (EVMWHUMIAN,   "evmwhumian",   MISC,   spe_evmwhumian)
1306
BU_SPE_2 (EVMWHGSSFAA,  "evmwhgssfaa",  MISC,   spe_evmwhgssfaa)
1307
BU_SPE_2 (EVMWHGSMFAA,  "evmwhgsmfaa",  MISC,   spe_evmwhgsmfaa)
1308
BU_SPE_2 (EVMWHGSMIAA,  "evmwhgsmiaa",  MISC,   spe_evmwhgsmiaa)
1309
BU_SPE_2 (EVMWHGUMIAA,  "evmwhgumiaa",  MISC,   spe_evmwhgumiaa)
1310
BU_SPE_2 (EVMWHGSSFAN,  "evmwhgssfan",  MISC,   spe_evmwhgssfan)
1311
BU_SPE_2 (EVMWHGSMFAN,  "evmwhgsmfan",  MISC,   spe_evmwhgsmfan)
1312
BU_SPE_2 (EVMWHGSMIAN,  "evmwhgsmian",  MISC,   spe_evmwhgsmian)
1313
BU_SPE_2 (EVMWHGUMIAN,  "evmwhgumian",  MISC,   spe_evmwhgumian)
1314
BU_SPE_2 (BRINC,        "brinc",        MISC,   spe_brinc)
1315
BU_SPE_2 (EVXOR,        "evxor",        MISC,   xorv2si3)
1316
 
1317
/* SPE predicate builtins.  */
1318
BU_SPE_P (EVCMPEQ,      "evcmpeq",      MISC,   spe_evcmpeq)
1319
BU_SPE_P (EVCMPGTS,     "evcmpgts",     MISC,   spe_evcmpgts)
1320
BU_SPE_P (EVCMPGTU,     "evcmpgtu",     MISC,   spe_evcmpgtu)
1321
BU_SPE_P (EVCMPLTS,     "evcmplts",     MISC,   spe_evcmplts)
1322
BU_SPE_P (EVCMPLTU,     "evcmpltu",     MISC,   spe_evcmpltu)
1323
BU_SPE_P (EVFSCMPEQ,    "evfscmpeq",    MISC,   spe_evfscmpeq)
1324
BU_SPE_P (EVFSCMPGT,    "evfscmpgt",    MISC,   spe_evfscmpgt)
1325
BU_SPE_P (EVFSCMPLT,    "evfscmplt",    MISC,   spe_evfscmplt)
1326
BU_SPE_P (EVFSTSTEQ,    "evfststeq",    MISC,   spe_evfststeq)
1327
BU_SPE_P (EVFSTSTGT,    "evfststgt",    MISC,   spe_evfststgt)
1328
BU_SPE_P (EVFSTSTLT,    "evfststlt",    MISC,   spe_evfststlt)
1329
 
1330
/* SPE evsel builtins.  */
1331
BU_SPE_E (EVSEL_CMPGTS,  "evsel_gts",     MISC, spe_evcmpgts)
1332
BU_SPE_E (EVSEL_CMPGTU,  "evsel_gtu",     MISC, spe_evcmpgtu)
1333
BU_SPE_E (EVSEL_CMPLTS,  "evsel_lts",     MISC, spe_evcmplts)
1334
BU_SPE_E (EVSEL_CMPLTU,  "evsel_ltu",     MISC, spe_evcmpltu)
1335
BU_SPE_E (EVSEL_CMPEQ,   "evsel_eq",      MISC, spe_evcmpeq)
1336
BU_SPE_E (EVSEL_FSCMPGT, "evsel_fsgt",    MISC, spe_evfscmpgt)
1337
BU_SPE_E (EVSEL_FSCMPLT, "evsel_fslt",    MISC, spe_evfscmplt)
1338
BU_SPE_E (EVSEL_FSCMPEQ, "evsel_fseq",    MISC, spe_evfscmpeq)
1339
BU_SPE_E (EVSEL_FSTSTGT, "evsel_fststgt", MISC, spe_evfststgt)
1340
BU_SPE_E (EVSEL_FSTSTLT, "evsel_fststlt", MISC, spe_evfststlt)
1341
BU_SPE_E (EVSEL_FSTSTEQ, "evsel_fststeq", MISC, spe_evfststeq)
1342
 
1343
BU_SPE_1 (EVABS,        "evabs",        CONST,  absv2si2)
1344
BU_SPE_1 (EVADDSMIAAW,  "evaddsmiaaw",  CONST,  spe_evaddsmiaaw)
1345
BU_SPE_1 (EVADDSSIAAW,  "evaddssiaaw",  CONST,  spe_evaddssiaaw)
1346
BU_SPE_1 (EVADDUMIAAW,  "evaddumiaaw",  CONST,  spe_evaddumiaaw)
1347
BU_SPE_1 (EVADDUSIAAW,  "evaddusiaaw",  CONST,  spe_evaddusiaaw)
1348
BU_SPE_1 (EVCNTLSW,     "evcntlsw",     CONST,  spe_evcntlsw)
1349
BU_SPE_1 (EVCNTLZW,     "evcntlzw",     CONST,  spe_evcntlzw)
1350
BU_SPE_1 (EVEXTSB,      "evextsb",      CONST,  spe_evextsb)
1351
BU_SPE_1 (EVEXTSH,      "evextsh",      CONST,  spe_evextsh)
1352
BU_SPE_1 (EVFSABS,      "evfsabs",      CONST,  spe_evfsabs)
1353
BU_SPE_1 (EVFSCFSF,     "evfscfsf",     CONST,  spe_evfscfsf)
1354
BU_SPE_1 (EVFSCFSI,     "evfscfsi",     CONST,  spe_evfscfsi)
1355
BU_SPE_1 (EVFSCFUF,     "evfscfuf",     CONST,  spe_evfscfuf)
1356
BU_SPE_1 (EVFSCFUI,     "evfscfui",     CONST,  spe_evfscfui)
1357
BU_SPE_1 (EVFSCTSF,     "evfsctsf",     CONST,  spe_evfsctsf)
1358
BU_SPE_1 (EVFSCTSI,     "evfsctsi",     CONST,  spe_evfsctsi)
1359
BU_SPE_1 (EVFSCTSIZ,    "evfsctsiz",    CONST,  spe_evfsctsiz)
1360
BU_SPE_1 (EVFSCTUF,     "evfsctuf",     CONST,  spe_evfsctuf)
1361
BU_SPE_1 (EVFSCTUI,     "evfsctui",     CONST,  spe_evfsctui)
1362
BU_SPE_1 (EVFSCTUIZ,    "evfsctuiz",    CONST,  spe_evfsctuiz)
1363
BU_SPE_1 (EVFSNABS,     "evfsnabs",     CONST,  spe_evfsnabs)
1364
BU_SPE_1 (EVFSNEG,      "evfsneg",      CONST,  spe_evfsneg)
1365
BU_SPE_1 (EVMRA,        "evmra",        CONST,  spe_evmra)
1366
BU_SPE_1 (EVNEG,        "evneg",        CONST,  negv2si2)
1367
BU_SPE_1 (EVRNDW,       "evrndw",       CONST,  spe_evrndw)
1368
BU_SPE_1 (EVSUBFSMIAAW, "evsubfsmiaaw", CONST,  spe_evsubfsmiaaw)
1369
BU_SPE_1 (EVSUBFSSIAAW, "evsubfssiaaw", CONST,  spe_evsubfssiaaw)
1370
BU_SPE_1 (EVSUBFUMIAAW, "evsubfumiaaw", CONST,  spe_evsubfumiaaw)
1371
BU_SPE_1 (EVSUBFUSIAAW, "evsubfusiaaw", CONST,  spe_evsubfusiaaw)
1372
 
1373
/* SPE builtins that are handled as special cases.  */
1374
BU_SPE_X (EVLDD,              "evldd",          MISC)
1375
BU_SPE_X (EVLDDX,             "evlddx",         MISC)
1376
BU_SPE_X (EVLDH,              "evldh",          MISC)
1377
BU_SPE_X (EVLDHX,             "evldhx",         MISC)
1378
BU_SPE_X (EVLDW,              "evldw",          MISC)
1379
BU_SPE_X (EVLDWX,             "evldwx",         MISC)
1380
BU_SPE_X (EVLHHESPLAT,        "evlhhesplat",    MISC)
1381
BU_SPE_X (EVLHHESPLATX,       "evlhhesplatx",   MISC)
1382
BU_SPE_X (EVLHHOSSPLAT,       "evlhhossplat",   MISC)
1383
BU_SPE_X (EVLHHOSSPLATX,      "evlhhossplatx",  MISC)
1384
BU_SPE_X (EVLHHOUSPLAT,       "evlhhousplat",   MISC)
1385
BU_SPE_X (EVLHHOUSPLATX,      "evlhhousplatx",  MISC)
1386
BU_SPE_X (EVLWHE,             "evlwhe",         MISC)
1387
BU_SPE_X (EVLWHEX,            "evlwhex",        MISC)
1388
BU_SPE_X (EVLWHOS,            "evlwhos",        MISC)
1389
BU_SPE_X (EVLWHOSX,           "evlwhosx",       MISC)
1390
BU_SPE_X (EVLWHOU,            "evlwhou",        MISC)
1391
BU_SPE_X (EVLWHOUX,           "evlwhoux",       MISC)
1392
BU_SPE_X (EVLWHSPLAT,         "evlwhsplat",     MISC)
1393
BU_SPE_X (EVLWHSPLATX,        "evlwhsplatx",    MISC)
1394
BU_SPE_X (EVLWWSPLAT,         "evlwwsplat",     MISC)
1395
BU_SPE_X (EVLWWSPLATX,        "evlwwsplatx",    MISC)
1396
BU_SPE_X (EVSPLATFI,          "evsplatfi",      MISC)
1397
BU_SPE_X (EVSPLATI,           "evsplati",       MISC)
1398
BU_SPE_X (EVSTDD,             "evstdd",         MISC)
1399
BU_SPE_X (EVSTDDX,            "evstddx",        MISC)
1400
BU_SPE_X (EVSTDH,             "evstdh",         MISC)
1401
BU_SPE_X (EVSTDHX,            "evstdhx",        MISC)
1402
BU_SPE_X (EVSTDW,             "evstdw",         MISC)
1403
BU_SPE_X (EVSTDWX,            "evstdwx",        MISC)
1404
BU_SPE_X (EVSTWHE,            "evstwhe",        MISC)
1405
BU_SPE_X (EVSTWHEX,           "evstwhex",       MISC)
1406
BU_SPE_X (EVSTWHO,            "evstwho",        MISC)
1407
BU_SPE_X (EVSTWHOX,           "evstwhox",       MISC)
1408
BU_SPE_X (EVSTWWE,            "evstwwe",        MISC)
1409
BU_SPE_X (EVSTWWEX,           "evstwwex",       MISC)
1410
BU_SPE_X (EVSTWWO,            "evstwwo",        MISC)
1411
BU_SPE_X (EVSTWWOX,           "evstwwox",       MISC)
1412
BU_SPE_X (MFSPEFSCR,          "mfspefscr",      MISC)
1413
BU_SPE_X (MTSPEFSCR,          "mtspefscr",      MISC)
1414
 
1415
 
1416
/* Power7 builtins, that aren't VSX instructions.  */
1417
BU_SPECIAL_X (POWER7_BUILTIN_BPERMD, "__builtin_bpermd", RS6000_BTM_POPCNTD,
1418
              RS6000_BTC_CONST)
1419
 
1420
/* Miscellaneous builtins.  */
1421
BU_SPECIAL_X (RS6000_BUILTIN_RECIP, "__builtin_recipdiv", RS6000_BTM_FRE,
1422
              RS6000_BTC_FP)
1423
 
1424
BU_SPECIAL_X (RS6000_BUILTIN_RECIPF, "__builtin_recipdivf", RS6000_BTM_FRES,
1425
              RS6000_BTC_FP)
1426
 
1427
BU_SPECIAL_X (RS6000_BUILTIN_RSQRT, "__builtin_rsqrt", RS6000_BTM_FRSQRTE,
1428
              RS6000_BTC_FP)
1429
 
1430
BU_SPECIAL_X (RS6000_BUILTIN_RSQRTF, "__builtin_rsqrtf", RS6000_BTM_FRSQRTES,
1431
              RS6000_BTC_FP)
1432
 
1433
BU_SPECIAL_X (RS6000_BUILTIN_BSWAP_HI, "__builtin_bswap16", RS6000_BTM_POWERPC,
1434
              RS6000_BTC_MEM)
1435
 
1436
/* Darwin CfString builtin.  */
1437
BU_SPECIAL_X (RS6000_BUILTIN_CFSTRING, "__builtin_cfstring", RS6000_BTM_POWERPC,
1438
              RS6000_BTC_MISC)

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.