1------------------------------------------------------------------------------ 2-- -- 3-- GNAT COMPILER COMPONENTS -- 4-- -- 5-- G N A T . A L T I V E C . L O W _ L E V E L _ V E C T O R S -- 6-- -- 7-- S p e c -- 8-- (Soft Binding Version) -- 9-- -- 10-- Copyright (C) 2004-2018, Free Software Foundation, Inc. -- 11-- -- 12-- GNAT is free software; you can redistribute it and/or modify it under -- 13-- terms of the GNU General Public License as published by the Free Soft- -- 14-- ware Foundation; either version 3, or (at your option) any later ver- -- 15-- sion. GNAT is distributed in the hope that it will be useful, but WITH- -- 16-- OUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY -- 17-- or FITNESS FOR A PARTICULAR PURPOSE. -- 18-- -- 19-- As a special exception under Section 7 of GPL version 3, you are granted -- 20-- additional permissions described in the GCC Runtime Library Exception, -- 21-- version 3.1, as published by the Free Software Foundation. -- 22-- -- 23-- You should have received a copy of the GNU General Public License and -- 24-- a copy of the GCC Runtime Library Exception along with this program; -- 25-- see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -- 26-- <http://www.gnu.org/licenses/>. -- 27-- -- 28-- GNAT was originally developed by the GNAT team at New York University. -- 29-- Extensive contributions were provided by Ada Core Technologies Inc. -- 30-- -- 31------------------------------------------------------------------------------ 32 33-- This unit exposes the low level vector support for the Soft binding, 34-- intended for non AltiVec capable targets. See Altivec.Design for a 35-- description of what is expected to be exposed. 36 37with GNAT.Altivec.Vector_Views; use GNAT.Altivec.Vector_Views; 38 39package GNAT.Altivec.Low_Level_Vectors is 40 41 ---------------------------------------- 42 -- Low level vector type declarations -- 43 ---------------------------------------- 44 45 type LL_VUC is private; 46 type LL_VSC is private; 47 type LL_VBC is private; 48 49 type LL_VUS is private; 50 type LL_VSS is private; 51 type LL_VBS is private; 52 53 type LL_VUI is private; 54 type LL_VSI is private; 55 type LL_VBI is private; 56 57 type LL_VF is private; 58 type LL_VP is private; 59 60 ------------------------------------ 61 -- Low level functional interface -- 62 ------------------------------------ 63 64 function abs_v16qi (A : LL_VSC) return LL_VSC; 65 function abs_v8hi (A : LL_VSS) return LL_VSS; 66 function abs_v4si (A : LL_VSI) return LL_VSI; 67 function abs_v4sf (A : LL_VF) return LL_VF; 68 69 function abss_v16qi (A : LL_VSC) return LL_VSC; 70 function abss_v8hi (A : LL_VSS) return LL_VSS; 71 function abss_v4si (A : LL_VSI) return LL_VSI; 72 73 function vaddubm (A : LL_VSC; B : LL_VSC) return LL_VSC; 74 function vadduhm (A : LL_VSS; B : LL_VSS) return LL_VSS; 75 function vadduwm (A : LL_VSI; B : LL_VSI) return LL_VSI; 76 function vaddfp (A : LL_VF; B : LL_VF) return LL_VF; 77 78 function vaddcuw (A : LL_VSI; B : LL_VSI) return LL_VSI; 79 80 function vaddubs (A : LL_VSC; B : LL_VSC) return LL_VSC; 81 function vaddsbs (A : LL_VSC; B : LL_VSC) return LL_VSC; 82 function vadduhs (A : LL_VSS; B : LL_VSS) return LL_VSS; 83 function vaddshs (A : LL_VSS; B : LL_VSS) return LL_VSS; 84 function vadduws (A : LL_VSI; B : LL_VSI) return LL_VSI; 85 function vaddsws (A : LL_VSI; B : LL_VSI) return LL_VSI; 86 87 function vand (A : LL_VSI; B : LL_VSI) return LL_VSI; 88 function vandc (A : LL_VSI; B : LL_VSI) return LL_VSI; 89 90 function vavgub (A : LL_VSC; B : LL_VSC) return LL_VSC; 91 function vavgsb (A : LL_VSC; B : LL_VSC) return LL_VSC; 92 function vavguh (A : LL_VSS; B : LL_VSS) return LL_VSS; 93 function vavgsh (A : LL_VSS; B : LL_VSS) return LL_VSS; 94 function vavguw (A : LL_VSI; B : LL_VSI) return LL_VSI; 95 function vavgsw (A : LL_VSI; B : LL_VSI) return LL_VSI; 96 97 function vcmpbfp (A : LL_VF; B : LL_VF) return LL_VSI; 98 99 function vcmpequb (A : LL_VSC; B : LL_VSC) return LL_VSC; 100 function vcmpequh (A : LL_VSS; B : LL_VSS) return LL_VSS; 101 function vcmpequw (A : LL_VSI; B : LL_VSI) return LL_VSI; 102 function vcmpeqfp (A : LL_VF; B : LL_VF) return LL_VSI; 103 104 function vcmpgefp (A : LL_VF; B : LL_VF) return LL_VSI; 105 106 function vcmpgtub (A : LL_VSC; B : LL_VSC) return LL_VSC; 107 function vcmpgtsb (A : LL_VSC; B : LL_VSC) return LL_VSC; 108 function vcmpgtuh (A : LL_VSS; B : LL_VSS) return LL_VSS; 109 function vcmpgtsh (A : LL_VSS; B : LL_VSS) return LL_VSS; 110 function vcmpgtuw (A : LL_VSI; B : LL_VSI) return LL_VSI; 111 function vcmpgtsw (A : LL_VSI; B : LL_VSI) return LL_VSI; 112 function vcmpgtfp (A : LL_VF; B : LL_VF) return LL_VSI; 113 114 function vcfux (A : LL_VUI; B : c_int) return LL_VF; 115 function vcfsx (A : LL_VSI; B : c_int) return LL_VF; 116 117 function vctsxs (A : LL_VF; B : c_int) return LL_VSI; 118 function vctuxs (A : LL_VF; B : c_int) return LL_VUI; 119 120 procedure dss (A : c_int); 121 procedure dssall; 122 123 procedure dst (A : c_ptr; B : c_int; C : c_int); 124 procedure dstst (A : c_ptr; B : c_int; C : c_int); 125 procedure dststt (A : c_ptr; B : c_int; C : c_int); 126 procedure dstt (A : c_ptr; B : c_int; C : c_int); 127 128 function vexptefp (A : LL_VF) return LL_VF; 129 130 function vrfim (A : LL_VF) return LL_VF; 131 132 function lvx (A : c_long; B : c_ptr) return LL_VSI; 133 function lvebx (A : c_long; B : c_ptr) return LL_VSC; 134 function lvehx (A : c_long; B : c_ptr) return LL_VSS; 135 function lvewx (A : c_long; B : c_ptr) return LL_VSI; 136 function lvxl (A : c_long; B : c_ptr) return LL_VSI; 137 138 function vlogefp (A : LL_VF) return LL_VF; 139 140 function lvsl (A : c_long; B : c_ptr) return LL_VSC; 141 function lvsr (A : c_long; B : c_ptr) return LL_VSC; 142 143 function vmaddfp (A : LL_VF; B : LL_VF; C : LL_VF) return LL_VF; 144 145 function vmhaddshs (A : LL_VSS; B : LL_VSS; C : LL_VSS) return LL_VSS; 146 147 function vmaxub (A : LL_VSC; B : LL_VSC) return LL_VSC; 148 function vmaxsb (A : LL_VSC; B : LL_VSC) return LL_VSC; 149 function vmaxuh (A : LL_VSS; B : LL_VSS) return LL_VSS; 150 function vmaxsh (A : LL_VSS; B : LL_VSS) return LL_VSS; 151 function vmaxuw (A : LL_VSI; B : LL_VSI) return LL_VSI; 152 function vmaxsw (A : LL_VSI; B : LL_VSI) return LL_VSI; 153 function vmaxfp (A : LL_VF; B : LL_VF) return LL_VF; 154 155 function vmrghb (A : LL_VSC; B : LL_VSC) return LL_VSC; 156 function vmrghh (A : LL_VSS; B : LL_VSS) return LL_VSS; 157 function vmrghw (A : LL_VSI; B : LL_VSI) return LL_VSI; 158 function vmrglb (A : LL_VSC; B : LL_VSC) return LL_VSC; 159 function vmrglh (A : LL_VSS; B : LL_VSS) return LL_VSS; 160 function vmrglw (A : LL_VSI; B : LL_VSI) return LL_VSI; 161 162 function mfvscr return LL_VSS; 163 164 function vminfp (A : LL_VF; B : LL_VF) return LL_VF; 165 function vminsb (A : LL_VSC; B : LL_VSC) return LL_VSC; 166 function vminsh (A : LL_VSS; B : LL_VSS) return LL_VSS; 167 function vminsw (A : LL_VSI; B : LL_VSI) return LL_VSI; 168 function vminub (A : LL_VSC; B : LL_VSC) return LL_VSC; 169 function vminuh (A : LL_VSS; B : LL_VSS) return LL_VSS; 170 function vminuw (A : LL_VSI; B : LL_VSI) return LL_VSI; 171 172 function vmladduhm (A : LL_VSS; B : LL_VSS; C : LL_VSS) return LL_VSS; 173 174 function vmhraddshs (A : LL_VSS; B : LL_VSS; C : LL_VSS) return LL_VSS; 175 176 function vmsumubm (A : LL_VSC; B : LL_VSC; C : LL_VSI) return LL_VSI; 177 function vmsummbm (A : LL_VSC; B : LL_VSC; C : LL_VSI) return LL_VSI; 178 function vmsumuhm (A : LL_VSS; B : LL_VSS; C : LL_VSI) return LL_VSI; 179 function vmsumshm (A : LL_VSS; B : LL_VSS; C : LL_VSI) return LL_VSI; 180 function vmsumuhs (A : LL_VSS; B : LL_VSS; C : LL_VSI) return LL_VSI; 181 function vmsumshs (A : LL_VSS; B : LL_VSS; C : LL_VSI) return LL_VSI; 182 183 procedure mtvscr (A : LL_VSI); 184 185 function vmuleub (A : LL_VSC; B : LL_VSC) return LL_VSS; 186 function vmuleuh (A : LL_VSS; B : LL_VSS) return LL_VSI; 187 function vmulesb (A : LL_VSC; B : LL_VSC) return LL_VSS; 188 function vmulesh (A : LL_VSS; B : LL_VSS) return LL_VSI; 189 190 function vmulosb (A : LL_VSC; B : LL_VSC) return LL_VSS; 191 function vmulosh (A : LL_VSS; B : LL_VSS) return LL_VSI; 192 function vmuloub (A : LL_VSC; B : LL_VSC) return LL_VSS; 193 function vmulouh (A : LL_VSS; B : LL_VSS) return LL_VSI; 194 195 function vnmsubfp (A : LL_VF; B : LL_VF; C : LL_VF) return LL_VF; 196 197 function vxor (A : LL_VSI; B : LL_VSI) return LL_VSI; 198 function vnor (A : LL_VSI; B : LL_VSI) return LL_VSI; 199 function vor (A : LL_VSI; B : LL_VSI) return LL_VSI; 200 201 function vpkuhum (A : LL_VSS; B : LL_VSS) return LL_VSC; 202 function vpkuwum (A : LL_VSI; B : LL_VSI) return LL_VSS; 203 function vpkpx (A : LL_VSI; B : LL_VSI) return LL_VSS; 204 function vpkuhus (A : LL_VSS; B : LL_VSS) return LL_VSC; 205 function vpkuwus (A : LL_VSI; B : LL_VSI) return LL_VSS; 206 function vpkshss (A : LL_VSS; B : LL_VSS) return LL_VSC; 207 function vpkswss (A : LL_VSI; B : LL_VSI) return LL_VSS; 208 function vpkshus (A : LL_VSS; B : LL_VSS) return LL_VSC; 209 function vpkswus (A : LL_VSI; B : LL_VSI) return LL_VSS; 210 211 function vperm_4si (A : LL_VSI; B : LL_VSI; C : LL_VSC) return LL_VSI; 212 213 function vrefp (A : LL_VF) return LL_VF; 214 215 function vrlb (A : LL_VSC; B : LL_VSC) return LL_VSC; 216 function vrlh (A : LL_VSS; B : LL_VSS) return LL_VSS; 217 function vrlw (A : LL_VSI; B : LL_VSI) return LL_VSI; 218 219 function vrfin (A : LL_VF) return LL_VF; 220 function vrfip (A : LL_VF) return LL_VF; 221 function vrfiz (A : LL_VF) return LL_VF; 222 223 function vrsqrtefp (A : LL_VF) return LL_VF; 224 225 function vsel_4si (A : LL_VSI; B : LL_VSI; C : LL_VSI) return LL_VSI; 226 227 function vslb (A : LL_VSC; B : LL_VSC) return LL_VSC; 228 function vslh (A : LL_VSS; B : LL_VSS) return LL_VSS; 229 function vslw (A : LL_VSI; B : LL_VSI) return LL_VSI; 230 231 function vsldoi_4si (A : LL_VSI; B : LL_VSI; C : c_int) return LL_VSI; 232 function vsldoi_8hi (A : LL_VSS; B : LL_VSS; C : c_int) return LL_VSS; 233 function vsldoi_16qi (A : LL_VSC; B : LL_VSC; C : c_int) return LL_VSC; 234 function vsldoi_4sf (A : LL_VF; B : LL_VF; C : c_int) return LL_VF; 235 236 function vsl (A : LL_VSI; B : LL_VSI) return LL_VSI; 237 function vslo (A : LL_VSI; B : LL_VSI) return LL_VSI; 238 239 function vspltb (A : LL_VSC; B : c_int) return LL_VSC; 240 function vsplth (A : LL_VSS; B : c_int) return LL_VSS; 241 function vspltw (A : LL_VSI; B : c_int) return LL_VSI; 242 243 function vspltisb (A : c_int) return LL_VSC; 244 function vspltish (A : c_int) return LL_VSS; 245 function vspltisw (A : c_int) return LL_VSI; 246 247 function vsrb (A : LL_VSC; B : LL_VSC) return LL_VSC; 248 function vsrh (A : LL_VSS; B : LL_VSS) return LL_VSS; 249 function vsrw (A : LL_VSI; B : LL_VSI) return LL_VSI; 250 251 function vsrab (A : LL_VSC; B : LL_VSC) return LL_VSC; 252 function vsrah (A : LL_VSS; B : LL_VSS) return LL_VSS; 253 function vsraw (A : LL_VSI; B : LL_VSI) return LL_VSI; 254 255 function vsr (A : LL_VSI; B : LL_VSI) return LL_VSI; 256 function vsro (A : LL_VSI; B : LL_VSI) return LL_VSI; 257 258 procedure stvx (A : LL_VSI; B : c_int; C : c_ptr); 259 procedure stvebx (A : LL_VSC; B : c_int; C : c_ptr); 260 procedure stvehx (A : LL_VSS; B : c_int; C : c_ptr); 261 procedure stvewx (A : LL_VSI; B : c_int; C : c_ptr); 262 procedure stvxl (A : LL_VSI; B : c_int; C : c_ptr); 263 264 function vsububm (A : LL_VSC; B : LL_VSC) return LL_VSC; 265 function vsubuhm (A : LL_VSS; B : LL_VSS) return LL_VSS; 266 function vsubuwm (A : LL_VSI; B : LL_VSI) return LL_VSI; 267 function vsubfp (A : LL_VF; B : LL_VF) return LL_VF; 268 269 function vsubcuw (A : LL_VSI; B : LL_VSI) return LL_VSI; 270 271 function vsububs (A : LL_VSC; B : LL_VSC) return LL_VSC; 272 function vsubsbs (A : LL_VSC; B : LL_VSC) return LL_VSC; 273 function vsubuhs (A : LL_VSS; B : LL_VSS) return LL_VSS; 274 function vsubshs (A : LL_VSS; B : LL_VSS) return LL_VSS; 275 function vsubuws (A : LL_VSI; B : LL_VSI) return LL_VSI; 276 function vsubsws (A : LL_VSI; B : LL_VSI) return LL_VSI; 277 278 function vsum4ubs (A : LL_VSC; B : LL_VSI) return LL_VSI; 279 function vsum4sbs (A : LL_VSC; B : LL_VSI) return LL_VSI; 280 function vsum4shs (A : LL_VSS; B : LL_VSI) return LL_VSI; 281 282 function vsum2sws (A : LL_VSI; B : LL_VSI) return LL_VSI; 283 function vsumsws (A : LL_VSI; B : LL_VSI) return LL_VSI; 284 285 function vupkhsb (A : LL_VSC) return LL_VSS; 286 function vupkhsh (A : LL_VSS) return LL_VSI; 287 function vupkhpx (A : LL_VSS) return LL_VSI; 288 289 function vupklsb (A : LL_VSC) return LL_VSS; 290 function vupklsh (A : LL_VSS) return LL_VSI; 291 function vupklpx (A : LL_VSS) return LL_VSI; 292 293 function vcmpequb_p (A : c_int; B : LL_VSC; C : LL_VSC) return c_int; 294 function vcmpequh_p (A : c_int; B : LL_VSS; C : LL_VSS) return c_int; 295 function vcmpequw_p (A : c_int; B : LL_VSI; C : LL_VSI) return c_int; 296 function vcmpeqfp_p (A : c_int; B : LL_VF; C : LL_VF) return c_int; 297 298 function vcmpgtub_p (A : c_int; B : LL_VSC; C : LL_VSC) return c_int; 299 function vcmpgtuh_p (A : c_int; B : LL_VSS; C : LL_VSS) return c_int; 300 function vcmpgtuw_p (A : c_int; B : LL_VSI; C : LL_VSI) return c_int; 301 function vcmpgtsb_p (A : c_int; B : LL_VSC; C : LL_VSC) return c_int; 302 function vcmpgtsh_p (A : c_int; B : LL_VSS; C : LL_VSS) return c_int; 303 function vcmpgtsw_p (A : c_int; B : LL_VSI; C : LL_VSI) return c_int; 304 function vcmpgtfp_p (A : c_int; B : LL_VF; C : LL_VF) return c_int; 305 306 function vcmpgefp_p (A : c_int; B : LL_VF; C : LL_VF) return c_int; 307 function vcmpbfp_p (A : c_int; B : LL_VF; C : LL_VF) return c_int; 308 309private 310 311 --------------------------------------- 312 -- Low level vector type definitions -- 313 --------------------------------------- 314 315 -- We simply use the natural array definitions corresponding to each 316 -- user-level vector type. 317 318 type LL_VUI is new VUI_View; 319 type LL_VSI is new VSI_View; 320 type LL_VBI is new VBI_View; 321 322 type LL_VUS is new VUS_View; 323 type LL_VSS is new VSS_View; 324 type LL_VBS is new VBS_View; 325 326 type LL_VUC is new VUC_View; 327 type LL_VSC is new VSC_View; 328 type LL_VBC is new VBC_View; 329 330 type LL_VF is new VF_View; 331 type LL_VP is new VP_View; 332 333 ------------------------------------ 334 -- Low level functional interface -- 335 ------------------------------------ 336 337 pragma Convention_Identifier (LL_Altivec, C); 338 339 pragma Export (LL_Altivec, dss, "__builtin_altivec_dss"); 340 pragma Export (LL_Altivec, dssall, "__builtin_altivec_dssall"); 341 pragma Export (LL_Altivec, dst, "__builtin_altivec_dst"); 342 pragma Export (LL_Altivec, dstst, "__builtin_altivec_dstst"); 343 pragma Export (LL_Altivec, dststt, "__builtin_altivec_dststt"); 344 pragma Export (LL_Altivec, dstt, "__builtin_altivec_dstt"); 345 pragma Export (LL_Altivec, mtvscr, "__builtin_altivec_mtvscr"); 346 pragma Export (LL_Altivec, mfvscr, "__builtin_altivec_mfvscr"); 347 pragma Export (LL_Altivec, stvebx, "__builtin_altivec_stvebx"); 348 pragma Export (LL_Altivec, stvehx, "__builtin_altivec_stvehx"); 349 pragma Export (LL_Altivec, stvewx, "__builtin_altivec_stvewx"); 350 pragma Export (LL_Altivec, stvx, "__builtin_altivec_stvx"); 351 pragma Export (LL_Altivec, stvxl, "__builtin_altivec_stvxl"); 352 pragma Export (LL_Altivec, lvebx, "__builtin_altivec_lvebx"); 353 pragma Export (LL_Altivec, lvehx, "__builtin_altivec_lvehx"); 354 pragma Export (LL_Altivec, lvewx, "__builtin_altivec_lvewx"); 355 pragma Export (LL_Altivec, lvx, "__builtin_altivec_lvx"); 356 pragma Export (LL_Altivec, lvxl, "__builtin_altivec_lvxl"); 357 pragma Export (LL_Altivec, lvsl, "__builtin_altivec_lvsl"); 358 pragma Export (LL_Altivec, lvsr, "__builtin_altivec_lvsr"); 359 pragma Export (LL_Altivec, abs_v16qi, "__builtin_altivec_abs_v16qi"); 360 pragma Export (LL_Altivec, abs_v8hi, "__builtin_altivec_abs_v8hi"); 361 pragma Export (LL_Altivec, abs_v4si, "__builtin_altivec_abs_v4si"); 362 pragma Export (LL_Altivec, abs_v4sf, "__builtin_altivec_abs_v4sf"); 363 pragma Export (LL_Altivec, abss_v16qi, "__builtin_altivec_abss_v16qi"); 364 pragma Export (LL_Altivec, abss_v8hi, "__builtin_altivec_abss_v8hi"); 365 pragma Export (LL_Altivec, abss_v4si, "__builtin_altivec_abss_v4si"); 366 pragma Export (LL_Altivec, vaddcuw, "__builtin_altivec_vaddcuw"); 367 pragma Export (LL_Altivec, vaddfp, "__builtin_altivec_vaddfp"); 368 pragma Export (LL_Altivec, vaddsbs, "__builtin_altivec_vaddsbs"); 369 pragma Export (LL_Altivec, vaddshs, "__builtin_altivec_vaddshs"); 370 pragma Export (LL_Altivec, vaddsws, "__builtin_altivec_vaddsws"); 371 pragma Export (LL_Altivec, vaddubm, "__builtin_altivec_vaddubm"); 372 pragma Export (LL_Altivec, vaddubs, "__builtin_altivec_vaddubs"); 373 pragma Export (LL_Altivec, vadduhm, "__builtin_altivec_vadduhm"); 374 pragma Export (LL_Altivec, vadduhs, "__builtin_altivec_vadduhs"); 375 pragma Export (LL_Altivec, vadduwm, "__builtin_altivec_vadduwm"); 376 pragma Export (LL_Altivec, vadduws, "__builtin_altivec_vadduws"); 377 pragma Export (LL_Altivec, vand, "__builtin_altivec_vand"); 378 pragma Export (LL_Altivec, vandc, "__builtin_altivec_vandc"); 379 pragma Export (LL_Altivec, vavgsb, "__builtin_altivec_vavgsb"); 380 pragma Export (LL_Altivec, vavgsh, "__builtin_altivec_vavgsh"); 381 pragma Export (LL_Altivec, vavgsw, "__builtin_altivec_vavgsw"); 382 pragma Export (LL_Altivec, vavgub, "__builtin_altivec_vavgub"); 383 pragma Export (LL_Altivec, vavguh, "__builtin_altivec_vavguh"); 384 pragma Export (LL_Altivec, vavguw, "__builtin_altivec_vavguw"); 385 pragma Export (LL_Altivec, vcfsx, "__builtin_altivec_vcfsx"); 386 pragma Export (LL_Altivec, vcfux, "__builtin_altivec_vcfux"); 387 pragma Export (LL_Altivec, vcmpbfp, "__builtin_altivec_vcmpbfp"); 388 pragma Export (LL_Altivec, vcmpeqfp, "__builtin_altivec_vcmpeqfp"); 389 pragma Export (LL_Altivec, vcmpequb, "__builtin_altivec_vcmpequb"); 390 pragma Export (LL_Altivec, vcmpequh, "__builtin_altivec_vcmpequh"); 391 pragma Export (LL_Altivec, vcmpequw, "__builtin_altivec_vcmpequw"); 392 pragma Export (LL_Altivec, vcmpgefp, "__builtin_altivec_vcmpgefp"); 393 pragma Export (LL_Altivec, vcmpgtfp, "__builtin_altivec_vcmpgtfp"); 394 pragma Export (LL_Altivec, vcmpgtsb, "__builtin_altivec_vcmpgtsb"); 395 pragma Export (LL_Altivec, vcmpgtsh, "__builtin_altivec_vcmpgtsh"); 396 pragma Export (LL_Altivec, vcmpgtsw, "__builtin_altivec_vcmpgtsw"); 397 pragma Export (LL_Altivec, vcmpgtub, "__builtin_altivec_vcmpgtub"); 398 pragma Export (LL_Altivec, vcmpgtuh, "__builtin_altivec_vcmpgtuh"); 399 pragma Export (LL_Altivec, vcmpgtuw, "__builtin_altivec_vcmpgtuw"); 400 pragma Export (LL_Altivec, vctsxs, "__builtin_altivec_vctsxs"); 401 pragma Export (LL_Altivec, vctuxs, "__builtin_altivec_vctuxs"); 402 pragma Export (LL_Altivec, vexptefp, "__builtin_altivec_vexptefp"); 403 pragma Export (LL_Altivec, vlogefp, "__builtin_altivec_vlogefp"); 404 pragma Export (LL_Altivec, vmaddfp, "__builtin_altivec_vmaddfp"); 405 pragma Export (LL_Altivec, vmaxfp, "__builtin_altivec_vmaxfp"); 406 pragma Export (LL_Altivec, vmaxsb, "__builtin_altivec_vmaxsb"); 407 pragma Export (LL_Altivec, vmaxsh, "__builtin_altivec_vmaxsh"); 408 pragma Export (LL_Altivec, vmaxsw, "__builtin_altivec_vmaxsw"); 409 pragma Export (LL_Altivec, vmaxub, "__builtin_altivec_vmaxub"); 410 pragma Export (LL_Altivec, vmaxuh, "__builtin_altivec_vmaxuh"); 411 pragma Export (LL_Altivec, vmaxuw, "__builtin_altivec_vmaxuw"); 412 pragma Export (LL_Altivec, vmhaddshs, "__builtin_altivec_vmhaddshs"); 413 pragma Export (LL_Altivec, vmhraddshs, "__builtin_altivec_vmhraddshs"); 414 pragma Export (LL_Altivec, vminfp, "__builtin_altivec_vminfp"); 415 pragma Export (LL_Altivec, vminsb, "__builtin_altivec_vminsb"); 416 pragma Export (LL_Altivec, vminsh, "__builtin_altivec_vminsh"); 417 pragma Export (LL_Altivec, vminsw, "__builtin_altivec_vminsw"); 418 pragma Export (LL_Altivec, vminub, "__builtin_altivec_vminub"); 419 pragma Export (LL_Altivec, vminuh, "__builtin_altivec_vminuh"); 420 pragma Export (LL_Altivec, vminuw, "__builtin_altivec_vminuw"); 421 pragma Export (LL_Altivec, vmladduhm, "__builtin_altivec_vmladduhm"); 422 pragma Export (LL_Altivec, vmrghb, "__builtin_altivec_vmrghb"); 423 pragma Export (LL_Altivec, vmrghh, "__builtin_altivec_vmrghh"); 424 pragma Export (LL_Altivec, vmrghw, "__builtin_altivec_vmrghw"); 425 pragma Export (LL_Altivec, vmrglb, "__builtin_altivec_vmrglb"); 426 pragma Export (LL_Altivec, vmrglh, "__builtin_altivec_vmrglh"); 427 pragma Export (LL_Altivec, vmrglw, "__builtin_altivec_vmrglw"); 428 pragma Export (LL_Altivec, vmsummbm, "__builtin_altivec_vmsummbm"); 429 pragma Export (LL_Altivec, vmsumshm, "__builtin_altivec_vmsumshm"); 430 pragma Export (LL_Altivec, vmsumshs, "__builtin_altivec_vmsumshs"); 431 pragma Export (LL_Altivec, vmsumubm, "__builtin_altivec_vmsumubm"); 432 pragma Export (LL_Altivec, vmsumuhm, "__builtin_altivec_vmsumuhm"); 433 pragma Export (LL_Altivec, vmsumuhs, "__builtin_altivec_vmsumuhs"); 434 pragma Export (LL_Altivec, vmulesb, "__builtin_altivec_vmulesb"); 435 pragma Export (LL_Altivec, vmulesh, "__builtin_altivec_vmulesh"); 436 pragma Export (LL_Altivec, vmuleub, "__builtin_altivec_vmuleub"); 437 pragma Export (LL_Altivec, vmuleuh, "__builtin_altivec_vmuleuh"); 438 pragma Export (LL_Altivec, vmulosb, "__builtin_altivec_vmulosb"); 439 pragma Export (LL_Altivec, vmulosh, "__builtin_altivec_vmulosh"); 440 pragma Export (LL_Altivec, vmuloub, "__builtin_altivec_vmuloub"); 441 pragma Export (LL_Altivec, vmulouh, "__builtin_altivec_vmulouh"); 442 pragma Export (LL_Altivec, vnmsubfp, "__builtin_altivec_vnmsubfp"); 443 pragma Export (LL_Altivec, vnor, "__builtin_altivec_vnor"); 444 pragma Export (LL_Altivec, vxor, "__builtin_altivec_vxor"); 445 pragma Export (LL_Altivec, vor, "__builtin_altivec_vor"); 446 pragma Export (LL_Altivec, vperm_4si, "__builtin_altivec_vperm_4si"); 447 pragma Export (LL_Altivec, vpkpx, "__builtin_altivec_vpkpx"); 448 pragma Export (LL_Altivec, vpkshss, "__builtin_altivec_vpkshss"); 449 pragma Export (LL_Altivec, vpkshus, "__builtin_altivec_vpkshus"); 450 pragma Export (LL_Altivec, vpkswss, "__builtin_altivec_vpkswss"); 451 pragma Export (LL_Altivec, vpkswus, "__builtin_altivec_vpkswus"); 452 pragma Export (LL_Altivec, vpkuhum, "__builtin_altivec_vpkuhum"); 453 pragma Export (LL_Altivec, vpkuhus, "__builtin_altivec_vpkuhus"); 454 pragma Export (LL_Altivec, vpkuwum, "__builtin_altivec_vpkuwum"); 455 pragma Export (LL_Altivec, vpkuwus, "__builtin_altivec_vpkuwus"); 456 pragma Export (LL_Altivec, vrefp, "__builtin_altivec_vrefp"); 457 pragma Export (LL_Altivec, vrfim, "__builtin_altivec_vrfim"); 458 pragma Export (LL_Altivec, vrfin, "__builtin_altivec_vrfin"); 459 pragma Export (LL_Altivec, vrfip, "__builtin_altivec_vrfip"); 460 pragma Export (LL_Altivec, vrfiz, "__builtin_altivec_vrfiz"); 461 pragma Export (LL_Altivec, vrlb, "__builtin_altivec_vrlb"); 462 pragma Export (LL_Altivec, vrlh, "__builtin_altivec_vrlh"); 463 pragma Export (LL_Altivec, vrlw, "__builtin_altivec_vrlw"); 464 pragma Export (LL_Altivec, vrsqrtefp, "__builtin_altivec_vrsqrtefp"); 465 pragma Export (LL_Altivec, vsel_4si, "__builtin_altivec_vsel_4si"); 466 pragma Export (LL_Altivec, vsldoi_4si, "__builtin_altivec_vsldoi_4si"); 467 pragma Export (LL_Altivec, vsldoi_8hi, "__builtin_altivec_vsldoi_8hi"); 468 pragma Export (LL_Altivec, vsldoi_16qi, "__builtin_altivec_vsldoi_16qi"); 469 pragma Export (LL_Altivec, vsldoi_4sf, "__builtin_altivec_vsldoi_4sf"); 470 pragma Export (LL_Altivec, vsl, "__builtin_altivec_vsl"); 471 pragma Export (LL_Altivec, vslb, "__builtin_altivec_vslb"); 472 pragma Export (LL_Altivec, vslh, "__builtin_altivec_vslh"); 473 pragma Export (LL_Altivec, vslo, "__builtin_altivec_vslo"); 474 pragma Export (LL_Altivec, vslw, "__builtin_altivec_vslw"); 475 pragma Export (LL_Altivec, vspltb, "__builtin_altivec_vspltb"); 476 pragma Export (LL_Altivec, vsplth, "__builtin_altivec_vsplth"); 477 pragma Export (LL_Altivec, vspltisb, "__builtin_altivec_vspltisb"); 478 pragma Export (LL_Altivec, vspltish, "__builtin_altivec_vspltish"); 479 pragma Export (LL_Altivec, vspltisw, "__builtin_altivec_vspltisw"); 480 pragma Export (LL_Altivec, vspltw, "__builtin_altivec_vspltw"); 481 pragma Export (LL_Altivec, vsr, "__builtin_altivec_vsr"); 482 pragma Export (LL_Altivec, vsrab, "__builtin_altivec_vsrab"); 483 pragma Export (LL_Altivec, vsrah, "__builtin_altivec_vsrah"); 484 pragma Export (LL_Altivec, vsraw, "__builtin_altivec_vsraw"); 485 pragma Export (LL_Altivec, vsrb, "__builtin_altivec_vsrb"); 486 pragma Export (LL_Altivec, vsrh, "__builtin_altivec_vsrh"); 487 pragma Export (LL_Altivec, vsro, "__builtin_altivec_vsro"); 488 pragma Export (LL_Altivec, vsrw, "__builtin_altivec_vsrw"); 489 pragma Export (LL_Altivec, vsubcuw, "__builtin_altivec_vsubcuw"); 490 pragma Export (LL_Altivec, vsubfp, "__builtin_altivec_vsubfp"); 491 pragma Export (LL_Altivec, vsubsbs, "__builtin_altivec_vsubsbs"); 492 pragma Export (LL_Altivec, vsubshs, "__builtin_altivec_vsubshs"); 493 pragma Export (LL_Altivec, vsubsws, "__builtin_altivec_vsubsws"); 494 pragma Export (LL_Altivec, vsububm, "__builtin_altivec_vsububm"); 495 pragma Export (LL_Altivec, vsububs, "__builtin_altivec_vsububs"); 496 pragma Export (LL_Altivec, vsubuhm, "__builtin_altivec_vsubuhm"); 497 pragma Export (LL_Altivec, vsubuhs, "__builtin_altivec_vsubuhs"); 498 pragma Export (LL_Altivec, vsubuwm, "__builtin_altivec_vsubuwm"); 499 pragma Export (LL_Altivec, vsubuws, "__builtin_altivec_vsubuws"); 500 pragma Export (LL_Altivec, vsum2sws, "__builtin_altivec_vsum2sws"); 501 pragma Export (LL_Altivec, vsum4sbs, "__builtin_altivec_vsum4sbs"); 502 pragma Export (LL_Altivec, vsum4shs, "__builtin_altivec_vsum4shs"); 503 pragma Export (LL_Altivec, vsum4ubs, "__builtin_altivec_vsum4ubs"); 504 pragma Export (LL_Altivec, vsumsws, "__builtin_altivec_vsumsws"); 505 pragma Export (LL_Altivec, vupkhpx, "__builtin_altivec_vupkhpx"); 506 pragma Export (LL_Altivec, vupkhsb, "__builtin_altivec_vupkhsb"); 507 pragma Export (LL_Altivec, vupkhsh, "__builtin_altivec_vupkhsh"); 508 pragma Export (LL_Altivec, vupklpx, "__builtin_altivec_vupklpx"); 509 pragma Export (LL_Altivec, vupklsb, "__builtin_altivec_vupklsb"); 510 pragma Export (LL_Altivec, vupklsh, "__builtin_altivec_vupklsh"); 511 pragma Export (LL_Altivec, vcmpbfp_p, "__builtin_altivec_vcmpbfp_p"); 512 pragma Export (LL_Altivec, vcmpeqfp_p, "__builtin_altivec_vcmpeqfp_p"); 513 pragma Export (LL_Altivec, vcmpgefp_p, "__builtin_altivec_vcmpgefp_p"); 514 pragma Export (LL_Altivec, vcmpgtfp_p, "__builtin_altivec_vcmpgtfp_p"); 515 pragma Export (LL_Altivec, vcmpequw_p, "__builtin_altivec_vcmpequw_p"); 516 pragma Export (LL_Altivec, vcmpgtsw_p, "__builtin_altivec_vcmpgtsw_p"); 517 pragma Export (LL_Altivec, vcmpgtuw_p, "__builtin_altivec_vcmpgtuw_p"); 518 pragma Export (LL_Altivec, vcmpgtuh_p, "__builtin_altivec_vcmpgtuh_p"); 519 pragma Export (LL_Altivec, vcmpgtsh_p, "__builtin_altivec_vcmpgtsh_p"); 520 pragma Export (LL_Altivec, vcmpequh_p, "__builtin_altivec_vcmpequh_p"); 521 pragma Export (LL_Altivec, vcmpequb_p, "__builtin_altivec_vcmpequb_p"); 522 pragma Export (LL_Altivec, vcmpgtsb_p, "__builtin_altivec_vcmpgtsb_p"); 523 pragma Export (LL_Altivec, vcmpgtub_p, "__builtin_altivec_vcmpgtub_p"); 524 525end GNAT.Altivec.Low_Level_Vectors; 526