| 1 | //===--- BuiltinsPPC.def - PowerPC Builtin function database ----*- C++ -*-===// |
| 2 | // |
| 3 | // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. |
| 4 | // See https://llvm.org/LICENSE.txt for license information. |
| 5 | // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception |
| 6 | // |
| 7 | //===----------------------------------------------------------------------===// |
| 8 | // |
| 9 | // This file defines the PowerPC-specific builtin function database. Users of |
| 10 | // this file must define the BUILTIN macro to make use of this information. |
| 11 | // |
| 12 | //===----------------------------------------------------------------------===// |
| 13 | |
| 14 | // FIXME: this needs to be the full list supported by GCC. Right now, I'm just |
| 15 | // adding stuff on demand. |
| 16 | |
| 17 | // The format of this database matches clang/Basic/Builtins.def. |
| 18 | |
| 19 | BUILTIN(__builtin_ppc_get_timebase, "ULLi", "n") |
| 20 | |
| 21 | // This is just a placeholder, the types and attributes are wrong. |
| 22 | BUILTIN(__builtin_altivec_vaddcuw, "V4UiV4UiV4Ui", "") |
| 23 | |
| 24 | BUILTIN(__builtin_altivec_vaddsbs, "V16ScV16ScV16Sc", "") |
| 25 | BUILTIN(__builtin_altivec_vaddubs, "V16UcV16UcV16Uc", "") |
| 26 | BUILTIN(__builtin_altivec_vaddshs, "V8SsV8SsV8Ss", "") |
| 27 | BUILTIN(__builtin_altivec_vadduhs, "V8UsV8UsV8Us", "") |
| 28 | BUILTIN(__builtin_altivec_vaddsws, "V4SiV4SiV4Si", "") |
| 29 | BUILTIN(__builtin_altivec_vadduws, "V4UiV4UiV4Ui", "") |
| 30 | BUILTIN(__builtin_altivec_vaddeuqm, "V1ULLLiV1ULLLiV1ULLLiV1ULLLi","") |
| 31 | BUILTIN(__builtin_altivec_vaddcuq, "V1ULLLiV1ULLLiV1ULLLi","") |
| 32 | BUILTIN(__builtin_altivec_vaddecuq, "V1ULLLiV1ULLLiV1ULLLiV1ULLLi","") |
| 33 | |
| 34 | BUILTIN(__builtin_altivec_vsubsbs, "V16ScV16ScV16Sc", "") |
| 35 | BUILTIN(__builtin_altivec_vsububs, "V16UcV16UcV16Uc", "") |
| 36 | BUILTIN(__builtin_altivec_vsubshs, "V8SsV8SsV8Ss", "") |
| 37 | BUILTIN(__builtin_altivec_vsubuhs, "V8UsV8UsV8Us", "") |
| 38 | BUILTIN(__builtin_altivec_vsubsws, "V4SiV4SiV4Si", "") |
| 39 | BUILTIN(__builtin_altivec_vsubuws, "V4UiV4UiV4Ui", "") |
| 40 | BUILTIN(__builtin_altivec_vsubeuqm, "V1ULLLiV1ULLLiV1ULLLiV1ULLLi","") |
| 41 | BUILTIN(__builtin_altivec_vsubcuq, "V1ULLLiV1ULLLiV1ULLLi","") |
| 42 | BUILTIN(__builtin_altivec_vsubecuq, "V1ULLLiV1ULLLiV1ULLLiV1ULLLi","") |
| 43 | |
| 44 | BUILTIN(__builtin_altivec_vavgsb, "V16ScV16ScV16Sc", "") |
| 45 | BUILTIN(__builtin_altivec_vavgub, "V16UcV16UcV16Uc", "") |
| 46 | BUILTIN(__builtin_altivec_vavgsh, "V8SsV8SsV8Ss", "") |
| 47 | BUILTIN(__builtin_altivec_vavguh, "V8UsV8UsV8Us", "") |
| 48 | BUILTIN(__builtin_altivec_vavgsw, "V4SiV4SiV4Si", "") |
| 49 | BUILTIN(__builtin_altivec_vavguw, "V4UiV4UiV4Ui", "") |
| 50 | |
| 51 | BUILTIN(__builtin_altivec_vrfip, "V4fV4f", "") |
| 52 | |
| 53 | BUILTIN(__builtin_altivec_vcfsx, "V4fV4iIi", "") |
| 54 | BUILTIN(__builtin_altivec_vcfux, "V4fV4iIi", "") |
| 55 | BUILTIN(__builtin_altivec_vctsxs, "V4SiV4fIi", "") |
| 56 | BUILTIN(__builtin_altivec_vctuxs, "V4UiV4fIi", "") |
| 57 | |
| 58 | BUILTIN(__builtin_altivec_dss, "vUi", "") |
| 59 | BUILTIN(__builtin_altivec_dssall, "v", "") |
| 60 | BUILTIN(__builtin_altivec_dst, "vvC*iUi", "") |
| 61 | BUILTIN(__builtin_altivec_dstt, "vvC*iUi", "") |
| 62 | BUILTIN(__builtin_altivec_dstst, "vvC*iUi", "") |
| 63 | BUILTIN(__builtin_altivec_dststt, "vvC*iUi", "") |
| 64 | |
| 65 | BUILTIN(__builtin_altivec_vexptefp, "V4fV4f", "") |
| 66 | |
| 67 | BUILTIN(__builtin_altivec_vrfim, "V4fV4f", "") |
| 68 | |
| 69 | BUILTIN(__builtin_altivec_lvx, "V4iivC*", "") |
| 70 | BUILTIN(__builtin_altivec_lvxl, "V4iivC*", "") |
| 71 | BUILTIN(__builtin_altivec_lvebx, "V16civC*", "") |
| 72 | BUILTIN(__builtin_altivec_lvehx, "V8sivC*", "") |
| 73 | BUILTIN(__builtin_altivec_lvewx, "V4iivC*", "") |
| 74 | |
| 75 | BUILTIN(__builtin_altivec_vlogefp, "V4fV4f", "") |
| 76 | |
| 77 | BUILTIN(__builtin_altivec_lvsl, "V16cUcvC*", "") |
| 78 | BUILTIN(__builtin_altivec_lvsr, "V16cUcvC*", "") |
| 79 | |
| 80 | BUILTIN(__builtin_altivec_vmaddfp, "V4fV4fV4fV4f", "") |
| 81 | BUILTIN(__builtin_altivec_vmhaddshs, "V8sV8sV8sV8s", "") |
| 82 | BUILTIN(__builtin_altivec_vmhraddshs, "V8sV8sV8sV8s", "") |
| 83 | |
| 84 | BUILTIN(__builtin_altivec_vmsumubm, "V4UiV16UcV16UcV4Ui", "") |
| 85 | BUILTIN(__builtin_altivec_vmsummbm, "V4SiV16ScV16UcV4Si", "") |
| 86 | BUILTIN(__builtin_altivec_vmsumuhm, "V4UiV8UsV8UsV4Ui", "") |
| 87 | BUILTIN(__builtin_altivec_vmsumshm, "V4SiV8SsV8SsV4Si", "") |
| 88 | BUILTIN(__builtin_altivec_vmsumuhs, "V4UiV8UsV8UsV4Ui", "") |
| 89 | BUILTIN(__builtin_altivec_vmsumshs, "V4SiV8SsV8SsV4Si", "") |
| 90 | |
| 91 | BUILTIN(__builtin_altivec_vmuleub, "V8UsV16UcV16Uc", "") |
| 92 | BUILTIN(__builtin_altivec_vmulesb, "V8SsV16ScV16Sc", "") |
| 93 | BUILTIN(__builtin_altivec_vmuleuh, "V4UiV8UsV8Us", "") |
| 94 | BUILTIN(__builtin_altivec_vmulesh, "V4SiV8SsV8Ss", "") |
| 95 | BUILTIN(__builtin_altivec_vmuleuw, "V2ULLiV4UiV4Ui", "") |
| 96 | BUILTIN(__builtin_altivec_vmulesw, "V2SLLiV4SiV4Si", "") |
| 97 | BUILTIN(__builtin_altivec_vmuloub, "V8UsV16UcV16Uc", "") |
| 98 | BUILTIN(__builtin_altivec_vmulosb, "V8SsV16ScV16Sc", "") |
| 99 | BUILTIN(__builtin_altivec_vmulouh, "V4UiV8UsV8Us", "") |
| 100 | BUILTIN(__builtin_altivec_vmulosh, "V4SiV8SsV8Ss", "") |
| 101 | BUILTIN(__builtin_altivec_vmulouw, "V2ULLiV4UiV4Ui", "") |
| 102 | BUILTIN(__builtin_altivec_vmulosw, "V2SLLiV4SiV4Si", "") |
| 103 | |
| 104 | BUILTIN(__builtin_altivec_vnmsubfp, "V4fV4fV4fV4f", "") |
| 105 | |
| 106 | BUILTIN(__builtin_altivec_vpkpx, "V8sV4UiV4Ui", "") |
| 107 | BUILTIN(__builtin_altivec_vpkuhus, "V16UcV8UsV8Us", "") |
| 108 | BUILTIN(__builtin_altivec_vpkshss, "V16ScV8SsV8Ss", "") |
| 109 | BUILTIN(__builtin_altivec_vpkuwus, "V8UsV4UiV4Ui", "") |
| 110 | BUILTIN(__builtin_altivec_vpkswss, "V8SsV4SiV4Si", "") |
| 111 | BUILTIN(__builtin_altivec_vpkshus, "V16UcV8SsV8Ss", "") |
| 112 | BUILTIN(__builtin_altivec_vpkswus, "V8UsV4SiV4Si", "") |
| 113 | BUILTIN(__builtin_altivec_vpksdss, "V4SiV2SLLiV2SLLi", "") |
| 114 | BUILTIN(__builtin_altivec_vpksdus, "V4UiV2SLLiV2SLLi", "") |
| 115 | BUILTIN(__builtin_altivec_vpkudus, "V4UiV2ULLiV2ULLi", "") |
| 116 | BUILTIN(__builtin_altivec_vpkudum, "V4UiV2ULLiV2ULLi", "") |
| 117 | |
| 118 | BUILTIN(__builtin_altivec_vperm_4si, "V4iV4iV4iV16Uc", "") |
| 119 | |
| 120 | BUILTIN(__builtin_altivec_stvx, "vV4iiv*", "") |
| 121 | BUILTIN(__builtin_altivec_stvxl, "vV4iiv*", "") |
| 122 | BUILTIN(__builtin_altivec_stvebx, "vV16civ*", "") |
| 123 | BUILTIN(__builtin_altivec_stvehx, "vV8siv*", "") |
| 124 | BUILTIN(__builtin_altivec_stvewx, "vV4iiv*", "") |
| 125 | |
| 126 | BUILTIN(__builtin_altivec_vcmpbfp, "V4iV4fV4f", "") |
| 127 | |
| 128 | BUILTIN(__builtin_altivec_vcmpgefp, "V4iV4fV4f", "") |
| 129 | |
| 130 | BUILTIN(__builtin_altivec_vcmpequb, "V16cV16cV16c", "") |
| 131 | BUILTIN(__builtin_altivec_vcmpequh, "V8sV8sV8s", "") |
| 132 | BUILTIN(__builtin_altivec_vcmpequw, "V4iV4iV4i", "") |
| 133 | BUILTIN(__builtin_altivec_vcmpequd, "V2LLiV2LLiV2LLi", "") |
| 134 | BUILTIN(__builtin_altivec_vcmpeqfp, "V4iV4fV4f", "") |
| 135 | |
| 136 | BUILTIN(__builtin_altivec_vcmpneb, "V16cV16cV16c", "") |
| 137 | BUILTIN(__builtin_altivec_vcmpneh, "V8sV8sV8s", "") |
| 138 | BUILTIN(__builtin_altivec_vcmpnew, "V4iV4iV4i", "") |
| 139 | |
| 140 | BUILTIN(__builtin_altivec_vcmpnezb, "V16cV16cV16c", "") |
| 141 | BUILTIN(__builtin_altivec_vcmpnezh, "V8sV8sV8s", "") |
| 142 | BUILTIN(__builtin_altivec_vcmpnezw, "V4iV4iV4i", "") |
| 143 | |
| 144 | BUILTIN(__builtin_altivec_vcmpgtsb, "V16cV16ScV16Sc", "") |
| 145 | BUILTIN(__builtin_altivec_vcmpgtub, "V16cV16UcV16Uc", "") |
| 146 | BUILTIN(__builtin_altivec_vcmpgtsh, "V8sV8SsV8Ss", "") |
| 147 | BUILTIN(__builtin_altivec_vcmpgtuh, "V8sV8UsV8Us", "") |
| 148 | BUILTIN(__builtin_altivec_vcmpgtsw, "V4iV4SiV4Si", "") |
| 149 | BUILTIN(__builtin_altivec_vcmpgtuw, "V4iV4UiV4Ui", "") |
| 150 | BUILTIN(__builtin_altivec_vcmpgtsd, "V2LLiV2LLiV2LLi", "") |
| 151 | BUILTIN(__builtin_altivec_vcmpgtud, "V2LLiV2ULLiV2ULLi", "") |
| 152 | BUILTIN(__builtin_altivec_vcmpgtfp, "V4iV4fV4f", "") |
| 153 | |
| 154 | BUILTIN(__builtin_altivec_vmaxsb, "V16ScV16ScV16Sc", "") |
| 155 | BUILTIN(__builtin_altivec_vmaxub, "V16UcV16UcV16Uc", "") |
| 156 | BUILTIN(__builtin_altivec_vmaxsh, "V8SsV8SsV8Ss", "") |
| 157 | BUILTIN(__builtin_altivec_vmaxuh, "V8UsV8UsV8Us", "") |
| 158 | BUILTIN(__builtin_altivec_vmaxsw, "V4SiV4SiV4Si", "") |
| 159 | BUILTIN(__builtin_altivec_vmaxuw, "V4UiV4UiV4Ui", "") |
| 160 | BUILTIN(__builtin_altivec_vmaxsd, "V2LLiV2LLiV2LLi", "") |
| 161 | BUILTIN(__builtin_altivec_vmaxud, "V2ULLiV2ULLiV2ULLi", "") |
| 162 | BUILTIN(__builtin_altivec_vmaxfp, "V4fV4fV4f", "") |
| 163 | |
| 164 | BUILTIN(__builtin_altivec_mfvscr, "V8Us", "") |
| 165 | |
| 166 | BUILTIN(__builtin_altivec_vminsb, "V16ScV16ScV16Sc", "") |
| 167 | BUILTIN(__builtin_altivec_vminub, "V16UcV16UcV16Uc", "") |
| 168 | BUILTIN(__builtin_altivec_vminsh, "V8SsV8SsV8Ss", "") |
| 169 | BUILTIN(__builtin_altivec_vminuh, "V8UsV8UsV8Us", "") |
| 170 | BUILTIN(__builtin_altivec_vminsw, "V4SiV4SiV4Si", "") |
| 171 | BUILTIN(__builtin_altivec_vminuw, "V4UiV4UiV4Ui", "") |
| 172 | BUILTIN(__builtin_altivec_vminsd, "V2LLiV2LLiV2LLi", "") |
| 173 | BUILTIN(__builtin_altivec_vminud, "V2ULLiV2ULLiV2ULLi", "") |
| 174 | BUILTIN(__builtin_altivec_vminfp, "V4fV4fV4f", "") |
| 175 | |
| 176 | BUILTIN(__builtin_altivec_mtvscr, "vV4i", "") |
| 177 | |
| 178 | BUILTIN(__builtin_altivec_vrefp, "V4fV4f", "") |
| 179 | |
| 180 | BUILTIN(__builtin_altivec_vrlb, "V16cV16cV16Uc", "") |
| 181 | BUILTIN(__builtin_altivec_vrlh, "V8sV8sV8Us", "") |
| 182 | BUILTIN(__builtin_altivec_vrlw, "V4iV4iV4Ui", "") |
| 183 | BUILTIN(__builtin_altivec_vrld, "V2LLiV2LLiV2ULLi", "") |
| 184 | |
| 185 | BUILTIN(__builtin_altivec_vsel_4si, "V4iV4iV4iV4Ui", "") |
| 186 | |
| 187 | BUILTIN(__builtin_altivec_vsl, "V4iV4iV4i", "") |
| 188 | BUILTIN(__builtin_altivec_vslo, "V4iV4iV4i", "") |
| 189 | |
| 190 | BUILTIN(__builtin_altivec_vsrab, "V16cV16cV16Uc", "") |
| 191 | BUILTIN(__builtin_altivec_vsrah, "V8sV8sV8Us", "") |
| 192 | BUILTIN(__builtin_altivec_vsraw, "V4iV4iV4Ui", "") |
| 193 | |
| 194 | BUILTIN(__builtin_altivec_vsr, "V4iV4iV4i", "") |
| 195 | BUILTIN(__builtin_altivec_vsro, "V4iV4iV4i", "") |
| 196 | |
| 197 | BUILTIN(__builtin_altivec_vrfin, "V4fV4f", "") |
| 198 | |
| 199 | BUILTIN(__builtin_altivec_vrsqrtefp, "V4fV4f", "") |
| 200 | |
| 201 | BUILTIN(__builtin_altivec_vsubcuw, "V4UiV4UiV4Ui", "") |
| 202 | |
| 203 | BUILTIN(__builtin_altivec_vsum4sbs, "V4SiV16ScV4Si", "") |
| 204 | BUILTIN(__builtin_altivec_vsum4ubs, "V4UiV16UcV4Ui", "") |
| 205 | BUILTIN(__builtin_altivec_vsum4shs, "V4SiV8SsV4Si", "") |
| 206 | |
| 207 | BUILTIN(__builtin_altivec_vsum2sws, "V4SiV4SiV4Si", "") |
| 208 | |
| 209 | BUILTIN(__builtin_altivec_vsumsws, "V4SiV4SiV4Si", "") |
| 210 | |
| 211 | BUILTIN(__builtin_altivec_vrfiz, "V4fV4f", "") |
| 212 | |
| 213 | BUILTIN(__builtin_altivec_vupkhsb, "V8sV16c", "") |
| 214 | BUILTIN(__builtin_altivec_vupkhpx, "V4UiV8s", "") |
| 215 | BUILTIN(__builtin_altivec_vupkhsh, "V4iV8s", "") |
| 216 | BUILTIN(__builtin_altivec_vupkhsw, "V2LLiV4i", "") |
| 217 | |
| 218 | BUILTIN(__builtin_altivec_vupklsb, "V8sV16c", "") |
| 219 | BUILTIN(__builtin_altivec_vupklpx, "V4UiV8s", "") |
| 220 | BUILTIN(__builtin_altivec_vupklsh, "V4iV8s", "") |
| 221 | BUILTIN(__builtin_altivec_vupklsw, "V2LLiV4i", "") |
| 222 | |
| 223 | BUILTIN(__builtin_altivec_vcmpbfp_p, "iiV4fV4f", "") |
| 224 | |
| 225 | BUILTIN(__builtin_altivec_vcmpgefp_p, "iiV4fV4f", "") |
| 226 | |
| 227 | BUILTIN(__builtin_altivec_vcmpequb_p, "iiV16cV16c", "") |
| 228 | BUILTIN(__builtin_altivec_vcmpequh_p, "iiV8sV8s", "") |
| 229 | BUILTIN(__builtin_altivec_vcmpequw_p, "iiV4iV4i", "") |
| 230 | BUILTIN(__builtin_altivec_vcmpequd_p, "iiV2LLiV2LLi", "") |
| 231 | BUILTIN(__builtin_altivec_vcmpeqfp_p, "iiV4fV4f", "") |
| 232 | |
| 233 | BUILTIN(__builtin_altivec_vcmpneb_p, "iiV16cV16c", "") |
| 234 | BUILTIN(__builtin_altivec_vcmpneh_p, "iiV8sV8s", "") |
| 235 | BUILTIN(__builtin_altivec_vcmpnew_p, "iiV4iV4i", "") |
| 236 | BUILTIN(__builtin_altivec_vcmpned_p, "iiV2LLiV2LLi", "") |
| 237 | |
| 238 | BUILTIN(__builtin_altivec_vcmpgtsb_p, "iiV16ScV16Sc", "") |
| 239 | BUILTIN(__builtin_altivec_vcmpgtub_p, "iiV16UcV16Uc", "") |
| 240 | BUILTIN(__builtin_altivec_vcmpgtsh_p, "iiV8SsV8Ss", "") |
| 241 | BUILTIN(__builtin_altivec_vcmpgtuh_p, "iiV8UsV8Us", "") |
| 242 | BUILTIN(__builtin_altivec_vcmpgtsw_p, "iiV4SiV4Si", "") |
| 243 | BUILTIN(__builtin_altivec_vcmpgtuw_p, "iiV4UiV4Ui", "") |
| 244 | BUILTIN(__builtin_altivec_vcmpgtsd_p, "iiV2LLiV2LLi", "") |
| 245 | BUILTIN(__builtin_altivec_vcmpgtud_p, "iiV2ULLiV2ULLi", "") |
| 246 | BUILTIN(__builtin_altivec_vcmpgtfp_p, "iiV4fV4f", "") |
| 247 | |
| 248 | BUILTIN(__builtin_altivec_vgbbd, "V16UcV16Uc", "") |
| 249 | BUILTIN(__builtin_altivec_vbpermq, "V2ULLiV16UcV16Uc", "") |
| 250 | |
| 251 | // P8 Crypto built-ins. |
| 252 | BUILTIN(__builtin_altivec_crypto_vsbox, "V2ULLiV2ULLi", "") |
| 253 | BUILTIN(__builtin_altivec_crypto_vpermxor, "V16UcV16UcV16UcV16Uc", "") |
| 254 | BUILTIN(__builtin_altivec_crypto_vshasigmaw, "V4UiV4UiIiIi", "") |
| 255 | BUILTIN(__builtin_altivec_crypto_vshasigmad, "V2ULLiV2ULLiIiIi", "") |
| 256 | BUILTIN(__builtin_altivec_crypto_vcipher, "V2ULLiV2ULLiV2ULLi", "") |
| 257 | BUILTIN(__builtin_altivec_crypto_vcipherlast, "V2ULLiV2ULLiV2ULLi", "") |
| 258 | BUILTIN(__builtin_altivec_crypto_vncipher, "V2ULLiV2ULLiV2ULLi", "") |
| 259 | BUILTIN(__builtin_altivec_crypto_vncipherlast, "V2ULLiV2ULLiV2ULLi", "") |
| 260 | BUILTIN(__builtin_altivec_crypto_vpmsumb, "V16UcV16UcV16Uc", "") |
| 261 | BUILTIN(__builtin_altivec_crypto_vpmsumh, "V8UsV8UsV8Us", "") |
| 262 | BUILTIN(__builtin_altivec_crypto_vpmsumw, "V4UiV4UiV4Ui", "") |
| 263 | BUILTIN(__builtin_altivec_crypto_vpmsumd, "V2ULLiV2ULLiV2ULLi", "") |
| 264 | |
| 265 | BUILTIN(__builtin_altivec_vclzb, "V16UcV16Uc", "") |
| 266 | BUILTIN(__builtin_altivec_vclzh, "V8UsV8Us", "") |
| 267 | BUILTIN(__builtin_altivec_vclzw, "V4UiV4Ui", "") |
| 268 | BUILTIN(__builtin_altivec_vclzd, "V2ULLiV2ULLi", "") |
| 269 | BUILTIN(__builtin_altivec_vctzb, "V16UcV16Uc", "") |
| 270 | BUILTIN(__builtin_altivec_vctzh, "V8UsV8Us", "") |
| 271 | BUILTIN(__builtin_altivec_vctzw, "V4UiV4Ui", "") |
| 272 | BUILTIN(__builtin_altivec_vctzd, "V2ULLiV2ULLi", "") |
| 273 | |
| 274 | BUILTIN(__builtin_altivec_vclzlsbb, "SiV16Uc", "") |
| 275 | BUILTIN(__builtin_altivec_vctzlsbb, "SiV16Uc", "") |
| 276 | BUILTIN(__builtin_altivec_vprtybw, "V4UiV4Ui", "") |
| 277 | BUILTIN(__builtin_altivec_vprtybd, "V2ULLiV2ULLi", "") |
| 278 | BUILTIN(__builtin_altivec_vprtybq, "V1ULLLiV1ULLLi", "") |
| 279 | |
| 280 | // Vector population count built-ins |
| 281 | BUILTIN(__builtin_altivec_vpopcntb, "V16UcV16Uc", "") |
| 282 | BUILTIN(__builtin_altivec_vpopcnth, "V8UsV8Us", "") |
| 283 | BUILTIN(__builtin_altivec_vpopcntw, "V4UiV4Ui", "") |
| 284 | BUILTIN(__builtin_altivec_vpopcntd, "V2ULLiV2ULLi", "") |
| 285 | |
| 286 | // Absolute difference built-ins |
| 287 | BUILTIN(__builtin_altivec_vabsdub, "V16UcV16UcV16Uc", "") |
| 288 | BUILTIN(__builtin_altivec_vabsduh, "V8UsV8UsV8Us", "") |
| 289 | BUILTIN(__builtin_altivec_vabsduw, "V4UiV4UiV4Ui", "") |
| 290 | |
| 291 | // P9 Shift built-ins. |
| 292 | BUILTIN(__builtin_altivec_vslv, "V16UcV16UcV16Uc", "") |
| 293 | BUILTIN(__builtin_altivec_vsrv, "V16UcV16UcV16Uc", "") |
| 294 | |
| 295 | // P9 Vector rotate built-ins |
| 296 | BUILTIN(__builtin_altivec_vrlwmi, "V4UiV4UiV4UiV4Ui", "") |
| 297 | BUILTIN(__builtin_altivec_vrldmi, "V2ULLiV2ULLiV2ULLiV2ULLi", "") |
| 298 | BUILTIN(__builtin_altivec_vrlwnm, "V4UiV4UiV4Ui", "") |
| 299 | BUILTIN(__builtin_altivec_vrldnm, "V2ULLiV2ULLiV2ULLi", "") |
| 300 | |
| 301 | // VSX built-ins. |
| 302 | |
| 303 | BUILTIN(__builtin_vsx_lxvd2x, "V2divC*", "") |
| 304 | BUILTIN(__builtin_vsx_lxvw4x, "V4iivC*", "") |
| 305 | BUILTIN(__builtin_vsx_lxvd2x_be, "V2dSLLivC*", "") |
| 306 | BUILTIN(__builtin_vsx_lxvw4x_be, "V4iSLLivC*", "") |
| 307 | |
| 308 | BUILTIN(__builtin_vsx_stxvd2x, "vV2div*", "") |
| 309 | BUILTIN(__builtin_vsx_stxvw4x, "vV4iiv*", "") |
| 310 | BUILTIN(__builtin_vsx_stxvd2x_be, "vV2dSLLivC*", "") |
| 311 | BUILTIN(__builtin_vsx_stxvw4x_be, "vV4iSLLivC*", "") |
| 312 | |
| 313 | BUILTIN(__builtin_vsx_lxvl, "V4ivC*ULLi", "") |
| 314 | BUILTIN(__builtin_vsx_lxvll, "V4ivC*ULLi", "") |
| 315 | BUILTIN(__builtin_vsx_stxvl, "vV4iv*ULLi", "") |
| 316 | BUILTIN(__builtin_vsx_stxvll, "vV4iv*ULLi", "") |
| 317 | |
| 318 | BUILTIN(__builtin_vsx_xvmaxdp, "V2dV2dV2d", "") |
| 319 | BUILTIN(__builtin_vsx_xvmaxsp, "V4fV4fV4f", "") |
| 320 | BUILTIN(__builtin_vsx_xsmaxdp, "ddd", "") |
| 321 | |
| 322 | BUILTIN(__builtin_vsx_xvmindp, "V2dV2dV2d", "") |
| 323 | BUILTIN(__builtin_vsx_xvminsp, "V4fV4fV4f", "") |
| 324 | BUILTIN(__builtin_vsx_xsmindp, "ddd", "") |
| 325 | |
| 326 | BUILTIN(__builtin_vsx_xvdivdp, "V2dV2dV2d", "") |
| 327 | BUILTIN(__builtin_vsx_xvdivsp, "V4fV4fV4f", "") |
| 328 | |
| 329 | BUILTIN(__builtin_vsx_xvrdpip, "V2dV2d", "") |
| 330 | BUILTIN(__builtin_vsx_xvrspip, "V4fV4f", "") |
| 331 | |
| 332 | BUILTIN(__builtin_vsx_xvcmpeqdp, "V2ULLiV2dV2d", "") |
| 333 | BUILTIN(__builtin_vsx_xvcmpeqsp, "V4UiV4fV4f", "") |
| 334 | |
| 335 | BUILTIN(__builtin_vsx_xvcmpeqdp_p, "iiV2dV2d", "") |
| 336 | BUILTIN(__builtin_vsx_xvcmpeqsp_p, "iiV4fV4f", "") |
| 337 | |
| 338 | BUILTIN(__builtin_vsx_xvcmpgedp, "V2ULLiV2dV2d", "") |
| 339 | BUILTIN(__builtin_vsx_xvcmpgesp, "V4UiV4fV4f", "") |
| 340 | |
| 341 | BUILTIN(__builtin_vsx_xvcmpgedp_p, "iiV2dV2d", "") |
| 342 | BUILTIN(__builtin_vsx_xvcmpgesp_p, "iiV4fV4f", "") |
| 343 | |
| 344 | BUILTIN(__builtin_vsx_xvcmpgtdp, "V2ULLiV2dV2d", "") |
| 345 | BUILTIN(__builtin_vsx_xvcmpgtsp, "V4UiV4fV4f", "") |
| 346 | |
| 347 | BUILTIN(__builtin_vsx_xvcmpgtdp_p, "iiV2dV2d", "") |
| 348 | BUILTIN(__builtin_vsx_xvcmpgtsp_p, "iiV4fV4f", "") |
| 349 | |
| 350 | BUILTIN(__builtin_vsx_xvrdpim, "V2dV2d", "") |
| 351 | BUILTIN(__builtin_vsx_xvrspim, "V4fV4f", "") |
| 352 | |
| 353 | BUILTIN(__builtin_vsx_xvrdpi, "V2dV2d", "") |
| 354 | BUILTIN(__builtin_vsx_xvrspi, "V4fV4f", "") |
| 355 | |
| 356 | BUILTIN(__builtin_vsx_xvrdpic, "V2dV2d", "") |
| 357 | BUILTIN(__builtin_vsx_xvrspic, "V4fV4f", "") |
| 358 | |
| 359 | BUILTIN(__builtin_vsx_xvrdpiz, "V2dV2d", "") |
| 360 | BUILTIN(__builtin_vsx_xvrspiz, "V4fV4f", "") |
| 361 | |
| 362 | BUILTIN(__builtin_vsx_xvmaddadp, "V2dV2dV2dV2d", "") |
| 363 | BUILTIN(__builtin_vsx_xvmaddasp, "V4fV4fV4fV4f", "") |
| 364 | |
| 365 | BUILTIN(__builtin_vsx_xvmsubadp, "V2dV2dV2dV2d", "") |
| 366 | BUILTIN(__builtin_vsx_xvmsubasp, "V4fV4fV4fV4f", "") |
| 367 | |
| 368 | BUILTIN(__builtin_vsx_xvmuldp, "V2dV2dV2d", "") |
| 369 | BUILTIN(__builtin_vsx_xvmulsp, "V4fV4fV4f", "") |
| 370 | |
| 371 | BUILTIN(__builtin_vsx_xvnmaddadp, "V2dV2dV2dV2d", "") |
| 372 | BUILTIN(__builtin_vsx_xvnmaddasp, "V4fV4fV4fV4f", "") |
| 373 | |
| 374 | BUILTIN(__builtin_vsx_xvnmsubadp, "V2dV2dV2dV2d", "") |
| 375 | BUILTIN(__builtin_vsx_xvnmsubasp, "V4fV4fV4fV4f", "") |
| 376 | |
| 377 | BUILTIN(__builtin_vsx_xvredp, "V2dV2d", "") |
| 378 | BUILTIN(__builtin_vsx_xvresp, "V4fV4f", "") |
| 379 | |
| 380 | BUILTIN(__builtin_vsx_xvrsqrtedp, "V2dV2d", "") |
| 381 | BUILTIN(__builtin_vsx_xvrsqrtesp, "V4fV4f", "") |
| 382 | |
| 383 | BUILTIN(__builtin_vsx_xvsqrtdp, "V2dV2d", "") |
| 384 | BUILTIN(__builtin_vsx_xvsqrtsp, "V4fV4f", "") |
| 385 | |
| 386 | BUILTIN(__builtin_vsx_xxleqv, "V4UiV4UiV4Ui", "") |
| 387 | |
| 388 | BUILTIN(__builtin_vsx_xvcpsgndp, "V2dV2dV2d", "") |
| 389 | BUILTIN(__builtin_vsx_xvcpsgnsp, "V4fV4fV4f", "") |
| 390 | |
| 391 | BUILTIN(__builtin_vsx_xvabssp, "V4fV4f", "") |
| 392 | BUILTIN(__builtin_vsx_xvabsdp, "V2dV2d", "") |
| 393 | |
| 394 | // vector Insert/Extract exponent/significand builtins |
| 395 | BUILTIN(__builtin_vsx_xviexpdp, "V2dV2ULLiV2ULLi", "") |
| 396 | BUILTIN(__builtin_vsx_xviexpsp, "V4fV4UiV4Ui", "") |
| 397 | BUILTIN(__builtin_vsx_xvxexpdp, "V2ULLiV2d", "") |
| 398 | BUILTIN(__builtin_vsx_xvxexpsp, "V4UiV4f", "") |
| 399 | BUILTIN(__builtin_vsx_xvxsigdp, "V2ULLiV2d", "") |
| 400 | BUILTIN(__builtin_vsx_xvxsigsp, "V4UiV4f", "") |
| 401 | |
| 402 | // Conversion builtins |
| 403 | BUILTIN(__builtin_vsx_xvcvdpsxws, "V4SiV2d", "") |
| 404 | BUILTIN(__builtin_vsx_xvcvdpuxws, "V4UiV2d", "") |
| 405 | BUILTIN(__builtin_vsx_xvcvsxwdp, "V2dV4Si", "") |
| 406 | BUILTIN(__builtin_vsx_xvcvuxwdp, "V2dV4Ui", "") |
| 407 | BUILTIN(__builtin_vsx_xvcvspdp, "V2dV4f", "") |
| 408 | BUILTIN(__builtin_vsx_xvcvsxdsp, "V4fV2SLLi", "") |
| 409 | BUILTIN(__builtin_vsx_xvcvuxdsp, "V4fV2ULLi", "") |
| 410 | BUILTIN(__builtin_vsx_xvcvdpsp, "V4fV2d", "") |
| 411 | |
| 412 | BUILTIN(__builtin_vsx_xvcvsphp, "V4fV4f", "") |
| 413 | BUILTIN(__builtin_vsx_xvcvhpsp, "V4fV8Us", "") |
| 414 | |
| 415 | // Vector Test Data Class builtins |
| 416 | BUILTIN(__builtin_vsx_xvtstdcdp, "V2ULLiV2dIi", "") |
| 417 | BUILTIN(__builtin_vsx_xvtstdcsp, "V4UiV4fIi", "") |
| 418 | |
| 419 | BUILTIN(__builtin_vsx_insertword, "V16UcV4UiV16UcIi", "") |
| 420 | BUILTIN(__builtin_vsx_extractuword, "V2ULLiV16UcIi", "") |
| 421 | |
| 422 | BUILTIN(__builtin_vsx_xxpermdi, "v.", "t") |
| 423 | BUILTIN(__builtin_vsx_xxsldwi, "v.", "t") |
| 424 | |
| 425 | // Float 128 built-ins |
| 426 | BUILTIN(__builtin_sqrtf128_round_to_odd, "LLdLLd", "") |
| 427 | BUILTIN(__builtin_addf128_round_to_odd, "LLdLLdLLd", "") |
| 428 | BUILTIN(__builtin_subf128_round_to_odd, "LLdLLdLLd", "") |
| 429 | BUILTIN(__builtin_mulf128_round_to_odd, "LLdLLdLLd", "") |
| 430 | BUILTIN(__builtin_divf128_round_to_odd, "LLdLLdLLd", "") |
| 431 | BUILTIN(__builtin_fmaf128_round_to_odd, "LLdLLdLLdLLd", "") |
| 432 | BUILTIN(__builtin_truncf128_round_to_odd, "dLLd", "") |
| 433 | BUILTIN(__builtin_vsx_scalar_extract_expq, "ULLiLLd", "") |
| 434 | BUILTIN(__builtin_vsx_scalar_insert_exp_qp, "LLdLLdULLi", "") |
| 435 | |
| 436 | // HTM builtins |
| 437 | BUILTIN(__builtin_tbegin, "UiUIi", "") |
| 438 | BUILTIN(__builtin_tend, "UiUIi", "") |
| 439 | |
| 440 | BUILTIN(__builtin_tabort, "UiUi", "") |
| 441 | BUILTIN(__builtin_tabortdc, "UiUiUiUi", "") |
| 442 | BUILTIN(__builtin_tabortdci, "UiUiUii", "") |
| 443 | BUILTIN(__builtin_tabortwc, "UiUiUiUi", "") |
| 444 | BUILTIN(__builtin_tabortwci, "UiUiUii", "") |
| 445 | |
| 446 | BUILTIN(__builtin_tcheck, "Ui", "") |
| 447 | BUILTIN(__builtin_treclaim, "UiUi", "") |
| 448 | BUILTIN(__builtin_trechkpt, "Ui", "") |
| 449 | BUILTIN(__builtin_tsr, "UiUi", "") |
| 450 | |
| 451 | BUILTIN(__builtin_tendall, "Ui", "") |
| 452 | BUILTIN(__builtin_tresume, "Ui", "") |
| 453 | BUILTIN(__builtin_tsuspend, "Ui", "") |
| 454 | |
| 455 | BUILTIN(__builtin_get_texasr, "LUi", "c") |
| 456 | BUILTIN(__builtin_get_texasru, "LUi", "c") |
| 457 | BUILTIN(__builtin_get_tfhar, "LUi", "c") |
| 458 | BUILTIN(__builtin_get_tfiar, "LUi", "c") |
| 459 | |
| 460 | BUILTIN(__builtin_set_texasr, "vLUi", "c") |
| 461 | BUILTIN(__builtin_set_texasru, "vLUi", "c") |
| 462 | BUILTIN(__builtin_set_tfhar, "vLUi", "c") |
| 463 | BUILTIN(__builtin_set_tfiar, "vLUi", "c") |
| 464 | |
| 465 | BUILTIN(__builtin_ttest, "LUi", "") |
| 466 | |
| 467 | // Scalar built-ins |
| 468 | BUILTIN(__builtin_divwe, "SiSiSi", "") |
| 469 | BUILTIN(__builtin_divweu, "UiUiUi", "") |
| 470 | BUILTIN(__builtin_divde, "SLLiSLLiSLLi", "") |
| 471 | BUILTIN(__builtin_divdeu, "ULLiULLiULLi", "") |
| 472 | BUILTIN(__builtin_bpermd, "SLLiSLLiSLLi", "") |
| 473 | |
| 474 | // Vector int128 (un)pack |
| 475 | BUILTIN(__builtin_unpack_vector_int128, "ULLiV1LLLii", "") |
| 476 | BUILTIN(__builtin_pack_vector_int128, "V1LLLiULLiULLi", "") |
| 477 | |
| 478 | // FIXME: Obviously incomplete. |
| 479 | |
| 480 | #undef BUILTIN |
| 481 | |