| 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)
|