------------------------------------------------------------------------------ -- -- -- GNAT COMPILER COMPONENTS -- -- -- -- 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 -- -- -- -- S p e c -- -- (Hard Binding Version) -- -- -- -- Copyright (C) 2004-2024, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- -- ware Foundation; either version 3, or (at your option) any later ver- -- -- sion. GNAT is distributed in the hope that it will be useful, but WITH- -- -- OUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY -- -- or FITNESS FOR A PARTICULAR PURPOSE. -- -- -- -- As a special exception under Section 7 of GPL version 3, you are granted -- -- additional permissions described in the GCC Runtime Library Exception, -- -- version 3.1, as published by the Free Software Foundation. -- -- -- -- You should have received a copy of the GNU General Public License and -- -- a copy of the GCC Runtime Library Exception along with this program; -- -- see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -- -- . -- -- -- -- GNAT was originally developed by the GNAT team at New York University. -- -- Extensive contributions were provided by Ada Core Technologies Inc. -- -- -- ------------------------------------------------------------------------------ -- This unit exposes the low level vector support for the Hard binding, -- intended for AltiVec capable targets. See Altivec.Design for a description -- of what is expected to be exposed. package GNAT.Altivec.Low_Level_Vectors is pragma Elaborate_Body; ---------------------------------------- -- Low-level Vector Type Declarations -- ---------------------------------------- type LL_VUC is private; type LL_VSC is private; type LL_VBC is private; type LL_VUS is private; type LL_VSS is private; type LL_VBS is private; type LL_VUI is private; type LL_VSI is private; type LL_VBI is private; type LL_VF is private; type LL_VP is private; ------------------------------------ -- Low-level Functional Interface -- ------------------------------------ function abs_v16qi (A : LL_VSC) return LL_VSC; function abs_v8hi (A : LL_VSS) return LL_VSS; function abs_v4si (A : LL_VSI) return LL_VSI; function abs_v4sf (A : LL_VF) return LL_VF; function abss_v16qi (A : LL_VSC) return LL_VSC; function abss_v8hi (A : LL_VSS) return LL_VSS; function abss_v4si (A : LL_VSI) return LL_VSI; function vaddubm (A : LL_VSC; B : LL_VSC) return LL_VSC; function vadduhm (A : LL_VSS; B : LL_VSS) return LL_VSS; function vadduwm (A : LL_VSI; B : LL_VSI) return LL_VSI; function vaddfp (A : LL_VF; B : LL_VF) return LL_VF; function vaddcuw (A : LL_VSI; B : LL_VSI) return LL_VSI; function vaddubs (A : LL_VSC; B : LL_VSC) return LL_VSC; function vaddsbs (A : LL_VSC; B : LL_VSC) return LL_VSC; function vadduhs (A : LL_VSS; B : LL_VSS) return LL_VSS; function vaddshs (A : LL_VSS; B : LL_VSS) return LL_VSS; function vadduws (A : LL_VSI; B : LL_VSI) return LL_VSI; function vaddsws (A : LL_VSI; B : LL_VSI) return LL_VSI; function vand (A : LL_VSI; B : LL_VSI) return LL_VSI; function vandc (A : LL_VSI; B : LL_VSI) return LL_VSI; function vavgub (A : LL_VSC; B : LL_VSC) return LL_VSC; function vavgsb (A : LL_VSC; B : LL_VSC) return LL_VSC; function vavguh (A : LL_VSS; B : LL_VSS) return LL_VSS; function vavgsh (A : LL_VSS; B : LL_VSS) return LL_VSS; function vavguw (A : LL_VSI; B : LL_VSI) return LL_VSI; function vavgsw (A : LL_VSI; B : LL_VSI) return LL_VSI; function vcmpbfp (A : LL_VF; B : LL_VF) return LL_VSI; function vcmpequb (A : LL_VSC; B : LL_VSC) return LL_VSC; function vcmpequh (A : LL_VSS; B : LL_VSS) return LL_VSS; function vcmpequw (A : LL_VSI; B : LL_VSI) return LL_VSI; function vcmpeqfp (A : LL_VF; B : LL_VF) return LL_VF; function vcmpgefp (A : LL_VF; B : LL_VF) return LL_VF; function vcmpgtub (A : LL_VSC; B : LL_VSC) return LL_VSC; function vcmpgtsb (A : LL_VSC; B : LL_VSC) return LL_VSC; function vcmpgtuh (A : LL_VSS; B : LL_VSS) return LL_VSS; function vcmpgtsh (A : LL_VSS; B : LL_VSS) return LL_VSS; function vcmpgtuw (A : LL_VSI; B : LL_VSI) return LL_VSI; function vcmpgtsw (A : LL_VSI; B : LL_VSI) return LL_VSI; function vcmpgtfp (A : LL_VF; B : LL_VF) return LL_VF; function vcfux (A : LL_VUI; B : c_int) return LL_VF; function vcfsx (A : LL_VSI; B : c_int) return LL_VF; function vctsxs (A : LL_VF; B : c_int) return LL_VSI; function vctuxs (A : LL_VF; B : c_int) return LL_VUI; procedure dss (A : c_int); procedure dssall; procedure dst (A : c_ptr; B : c_int; C : c_int); procedure dstst (A : c_ptr; B : c_int; C : c_int); procedure dststt (A : c_ptr; B : c_int; C : c_int); procedure dstt (A : c_ptr; B : c_int; C : c_int); function vexptefp (A : LL_VF) return LL_VF; function vrfim (A : LL_VF) return LL_VF; function lvx (A : c_long; B : c_ptr) return LL_VSI; function lvebx (A : c_long; B : c_ptr) return LL_VSC; function lvehx (A : c_long; B : c_ptr) return LL_VSS; function lvewx (A : c_long; B : c_ptr) return LL_VSI; function lvxl (A : c_long; B : c_ptr) return LL_VSI; function vlogefp (A : LL_VF) return LL_VF; function lvsl (A : c_long; B : c_ptr) return LL_VSC; function lvsr (A : c_long; B : c_ptr) return LL_VSC; function vmaddfp (A : LL_VF; B : LL_VF; C : LL_VF) return LL_VF; function vmhaddshs (A : LL_VSS; B : LL_VSS; C : LL_VSS) return LL_VSS; function vmaxub (A : LL_VSC; B : LL_VSC) return LL_VSC; function vmaxsb (A : LL_VSC; B : LL_VSC) return LL_VSC; function vmaxuh (A : LL_VSS; B : LL_VSS) return LL_VSS; function vmaxsh (A : LL_VSS; B : LL_VSS) return LL_VSS; function vmaxuw (A : LL_VSI; B : LL_VSI) return LL_VSI; function vmaxsw (A : LL_VSI; B : LL_VSI) return LL_VSI; function vmaxfp (A : LL_VF; B : LL_VF) return LL_VF; function vmrghb (A : LL_VSC; B : LL_VSC) return LL_VSC; function vmrghh (A : LL_VSS; B : LL_VSS) return LL_VSS; function vmrghw (A : LL_VSI; B : LL_VSI) return LL_VSI; function vmrglb (A : LL_VSC; B : LL_VSC) return LL_VSC; function vmrglh (A : LL_VSS; B : LL_VSS) return LL_VSS; function vmrglw (A : LL_VSI; B : LL_VSI) return LL_VSI; function mfvscr return LL_VSS; function vminfp (A : LL_VF; B : LL_VF) return LL_VF; function vminsb (A : LL_VSC; B : LL_VSC) return LL_VSC; function vminsh (A : LL_VSS; B : LL_VSS) return LL_VSS; function vminsw (A : LL_VSI; B : LL_VSI) return LL_VSI; function vminub (A : LL_VSC; B : LL_VSC) return LL_VSC; function vminuh (A : LL_VSS; B : LL_VSS) return LL_VSS; function vminuw (A : LL_VSI; B : LL_VSI) return LL_VSI; function vmladduhm (A : LL_VSS; B : LL_VSS; C : LL_VSS) return LL_VSS; function vmhraddshs (A : LL_VSS; B : LL_VSS; C : LL_VSS) return LL_VSS; function vmsumubm (A : LL_VSC; B : LL_VSC; C : LL_VSI) return LL_VSI; function vmsummbm (A : LL_VSC; B : LL_VSC; C : LL_VSI) return LL_VSI; function vmsumuhm (A : LL_VSS; B : LL_VSS; C : LL_VSI) return LL_VSI; function vmsumshm (A : LL_VSS; B : LL_VSS; C : LL_VSI) return LL_VSI; function vmsumuhs (A : LL_VSS; B : LL_VSS; C : LL_VSI) return LL_VSI; function vmsumshs (A : LL_VSS; B : LL_VSS; C : LL_VSI) return LL_VSI; procedure mtvscr (A : LL_VSI); function vmuleub (A : LL_VSC; B : LL_VSC) return LL_VSS; function vmuleuh (A : LL_VSS; B : LL_VSS) return LL_VSI; function vmulesb (A : LL_VSC; B : LL_VSC) return LL_VSS; function vmulesh (A : LL_VSS; B : LL_VSS) return LL_VSI; function vmulosb (A : LL_VSC; B : LL_VSC) return LL_VSS; function vmulosh (A : LL_VSS; B : LL_VSS) return LL_VSI; function vmuloub (A : LL_VSC; B : LL_VSC) return LL_VSS; function vmulouh (A : LL_VSS; B : LL_VSS) return LL_VSI; function vnmsubfp (A : LL_VF; B : LL_VF; C : LL_VF) return LL_VF; function vxor (A : LL_VSI; B : LL_VSI) return LL_VSI; function vnor (A : LL_VSI; B : LL_VSI) return LL_VSI; function vor (A : LL_VSI; B : LL_VSI) return LL_VSI; function vpkuhum (A : LL_VSS; B : LL_VSS) return LL_VSC; function vpkuwum (A : LL_VSI; B : LL_VSI) return LL_VSS; function vpkpx (A : LL_VSI; B : LL_VSI) return LL_VSS; function vpkuhus (A : LL_VSS; B : LL_VSS) return LL_VSC; function vpkuwus (A : LL_VSI; B : LL_VSI) return LL_VSS; function vpkshss (A : LL_VSS; B : LL_VSS) return LL_VSC; function vpkswss (A : LL_VSI; B : LL_VSI) return LL_VSS; function vpkshus (A : LL_VSS; B : LL_VSS) return LL_VSC; function vpkswus (A : LL_VSI; B : LL_VSI) return LL_VSS; function vperm_4si (A : LL_VSI; B : LL_VSI; C : LL_VSC) return LL_VSI; function vrefp (A : LL_VF) return LL_VF; function vrlb (A : LL_VSC; B : LL_VSC) return LL_VSC; function vrlh (A : LL_VSS; B : LL_VSS) return LL_VSS; function vrlw (A : LL_VSI; B : LL_VSI) return LL_VSI; function vrfin (A : LL_VF) return LL_VF; function vrfip (A : LL_VF) return LL_VF; function vrfiz (A : LL_VF) return LL_VF; function vrsqrtefp (A : LL_VF) return LL_VF; function vsel_4si (A : LL_VSI; B : LL_VSI; C : LL_VSI) return LL_VSI; function vslb (A : LL_VSC; B : LL_VSC) return LL_VSC; function vslh (A : LL_VSS; B : LL_VSS) return LL_VSS; function vslw (A : LL_VSI; B : LL_VSI) return LL_VSI; function vsldoi_4si (A : LL_VSI; B : LL_VSI; C : c_int) return LL_VSI; function vsldoi_8hi (A : LL_VSS; B : LL_VSS; C : c_int) return LL_VSS; function vsldoi_16qi (A : LL_VSC; B : LL_VSC; C : c_int) return LL_VSC; function vsldoi_4sf (A : LL_VF; B : LL_VF; C : c_int) return LL_VF; function vsl (A : LL_VSI; B : LL_VSI) return LL_VSI; function vslo (A : LL_VSI; B : LL_VSI) return LL_VSI; function vspltb (A : LL_VSC; B : c_int) return LL_VSC; function vsplth (A : LL_VSS; B : c_int) return LL_VSS; function vspltw (A : LL_VSI; B : c_int) return LL_VSI; function vspltisb (A : c_int) return LL_VSC; function vspltish (A : c_int) return LL_VSS; function vspltisw (A : c_int) return LL_VSI; function vsrb (A : LL_VSC; B : LL_VSC) return LL_VSC; function vsrh (A : LL_VSS; B : LL_VSS) return LL_VSS; function vsrw (A : LL_VSI; B : LL_VSI) return LL_VSI; function vsrab (A : LL_VSC; B : LL_VSC) return LL_VSC; function vsrah (A : LL_VSS; B : LL_VSS) return LL_VSS; function vsraw (A : LL_VSI; B : LL_VSI) return LL_VSI; function vsr (A : LL_VSI; B : LL_VSI) return LL_VSI; function vsro (A : LL_VSI; B : LL_VSI) return LL_VSI; procedure stvx (A : LL_VSI; B : c_int; C : c_ptr); procedure stvebx (A : LL_VSC; B : c_int; C : c_ptr); procedure stvehx (A : LL_VSS; B : c_int; C : c_ptr); procedure stvewx (A : LL_VSI; B : c_int; C : c_ptr); procedure stvxl (A : LL_VSI; B : c_int; C : c_ptr); function vsububm (A : LL_VSC; B : LL_VSC) return LL_VSC; function vsubuhm (A : LL_VSS; B : LL_VSS) return LL_VSS; function vsubuwm (A : LL_VSI; B : LL_VSI) return LL_VSI; function vsubfp (A : LL_VF; B : LL_VF) return LL_VF; function vsubcuw (A : LL_VSI; B : LL_VSI) return LL_VSI; function vsububs (A : LL_VSC; B : LL_VSC) return LL_VSC; function vsubsbs (A : LL_VSC; B : LL_VSC) return LL_VSC; function vsubuhs (A : LL_VSS; B : LL_VSS) return LL_VSS; function vsubshs (A : LL_VSS; B : LL_VSS) return LL_VSS; function vsubuws (A : LL_VSI; B : LL_VSI) return LL_VSI; function vsubsws (A : LL_VSI; B : LL_VSI) return LL_VSI; function vsum4ubs (A : LL_VSC; B : LL_VSI) return LL_VSI; function vsum4sbs (A : LL_VSC; B : LL_VSI) return LL_VSI; function vsum4shs (A : LL_VSS; B : LL_VSI) return LL_VSI; function vsum2sws (A : LL_VSI; B : LL_VSI) return LL_VSI; function vsumsws (A : LL_VSI; B : LL_VSI) return LL_VSI; function vupkhsb (A : LL_VSC) return LL_VSS; function vupkhsh (A : LL_VSS) return LL_VSI; function vupkhpx (A : LL_VSS) return LL_VSI; function vupklsb (A : LL_VSC) return LL_VSS; function vupklsh (A : LL_VSS) return LL_VSI; function vupklpx (A : LL_VSS) return LL_VSI; function vcmpequb_p (A : c_int; B : LL_VSC; C : LL_VSC) return c_int; function vcmpequh_p (A : c_int; B : LL_VSS; C : LL_VSS) return c_int; function vcmpequw_p (A : c_int; B : LL_VSI; C : LL_VSI) return c_int; function vcmpeqfp_p (A : c_int; B : LL_VF; C : LL_VF) return c_int; function vcmpgtub_p (A : c_int; B : LL_VSC; C : LL_VSC) return c_int; function vcmpgtuh_p (A : c_int; B : LL_VSS; C : LL_VSS) return c_int; function vcmpgtuw_p (A : c_int; B : LL_VSI; C : LL_VSI) return c_int; function vcmpgtsb_p (A : c_int; B : LL_VSC; C : LL_VSC) return c_int; function vcmpgtsh_p (A : c_int; B : LL_VSS; C : LL_VSS) return c_int; function vcmpgtsw_p (A : c_int; B : LL_VSI; C : LL_VSI) return c_int; function vcmpgtfp_p (A : c_int; B : LL_VF; C : LL_VF) return c_int; function vcmpgefp_p (A : c_int; B : LL_VF; C : LL_VF) return c_int; function vcmpbfp_p (A : c_int; B : LL_VF; C : LL_VF) return c_int; private --------------------------------------- -- Low-level Vector Type Definitions -- --------------------------------------- -- [PIM-2.3.3 Alignment of aggregate and unions containing vector types]: -- "Aggregates (structures and arrays) and unions containing vector -- types must be aligned on 16-byte boundaries and their internal -- organization padded, if necessary, so that each internal vector -- type is aligned on a 16-byte boundary. This is an extension to -- all ABIs (AIX, Apple, SVR4, and EABI). -------------------------- -- char Core Components -- -------------------------- type LL_VUC is array (1 .. 16) of unsigned_char; for LL_VUC'Alignment use VECTOR_ALIGNMENT; pragma Machine_Attribute (LL_VUC, "vector_type"); pragma Suppress (All_Checks, LL_VUC); type LL_VSC is array (1 .. 16) of signed_char; for LL_VSC'Alignment use VECTOR_ALIGNMENT; pragma Machine_Attribute (LL_VSC, "vector_type"); pragma Suppress (All_Checks, LL_VSC); type LL_VBC is array (1 .. 16) of unsigned_char; for LL_VBC'Alignment use VECTOR_ALIGNMENT; pragma Machine_Attribute (LL_VBC, "vector_type"); pragma Suppress (All_Checks, LL_VBC); --------------------------- -- short Core Components -- --------------------------- type LL_VUS is array (1 .. 8) of unsigned_short; for LL_VUS'Alignment use VECTOR_ALIGNMENT; pragma Machine_Attribute (LL_VUS, "vector_type"); pragma Suppress (All_Checks, LL_VUS); type LL_VSS is array (1 .. 8) of signed_short; for LL_VSS'Alignment use VECTOR_ALIGNMENT; pragma Machine_Attribute (LL_VSS, "vector_type"); pragma Suppress (All_Checks, LL_VSS); type LL_VBS is array (1 .. 8) of unsigned_short; for LL_VBS'Alignment use VECTOR_ALIGNMENT; pragma Machine_Attribute (LL_VBS, "vector_type"); pragma Suppress (All_Checks, LL_VBS); ------------------------- -- int Core Components -- ------------------------- type LL_VUI is array (1 .. 4) of unsigned_int; for LL_VUI'Alignment use VECTOR_ALIGNMENT; pragma Machine_Attribute (LL_VUI, "vector_type"); pragma Suppress (All_Checks, LL_VUI); type LL_VSI is array (1 .. 4) of signed_int; for LL_VSI'Alignment use VECTOR_ALIGNMENT; pragma Machine_Attribute (LL_VSI, "vector_type"); pragma Suppress (All_Checks, LL_VSI); type LL_VBI is array (1 .. 4) of unsigned_int; for LL_VBI'Alignment use VECTOR_ALIGNMENT; pragma Machine_Attribute (LL_VBI, "vector_type"); pragma Suppress (All_Checks, LL_VBI); --------------------------- -- Float Core Components -- --------------------------- type LL_VF is array (1 .. 4) of Float; for LL_VF'Alignment use VECTOR_ALIGNMENT; pragma Machine_Attribute (LL_VF, "vector_type"); pragma Suppress (All_Checks, LL_VF); --------------------------- -- pixel Core Components -- --------------------------- type LL_VP is array (1 .. 8) of pixel; for LL_VP'Alignment use VECTOR_ALIGNMENT; pragma Machine_Attribute (LL_VP, "vector_type"); pragma Suppress (All_Checks, LL_VP); ------------------------------------ -- Low-level Functional Interface -- ------------------------------------ -- The functions we have to expose here are exactly those for which -- GCC builtins are available. Calls to these functions will be turned -- into real AltiVec instructions by the GCC back-end. pragma Convention_Identifier (LL_Altivec, Intrinsic); pragma Import (LL_Altivec, dss, "__builtin_altivec_dss"); pragma Import (LL_Altivec, dssall, "__builtin_altivec_dssall"); pragma Import (LL_Altivec, dst, "__builtin_altivec_dst"); pragma Import (LL_Altivec, dstst, "__builtin_altivec_dstst"); pragma Import (LL_Altivec, dststt, "__builtin_altivec_dststt"); pragma Import (LL_Altivec, dstt, "__builtin_altivec_dstt"); pragma Import (LL_Altivec, mtvscr, "__builtin_altivec_mtvscr"); pragma Import (LL_Altivec, mfvscr, "__builtin_altivec_mfvscr"); pragma Import (LL_Altivec, stvebx, "__builtin_altivec_stvebx"); pragma Import (LL_Altivec, stvehx, "__builtin_altivec_stvehx"); pragma Import (LL_Altivec, stvewx, "__builtin_altivec_stvewx"); pragma Import (LL_Altivec, stvx, "__builtin_altivec_stvx"); pragma Import (LL_Altivec, stvxl, "__builtin_altivec_stvxl"); pragma Import (LL_Altivec, lvebx, "__builtin_altivec_lvebx"); pragma Import (LL_Altivec, lvehx, "__builtin_altivec_lvehx"); pragma Import (LL_Altivec, lvewx, "__builtin_altivec_lvewx"); pragma Import (LL_Altivec, lvx, "__builtin_altivec_lvx"); pragma Import (LL_Altivec, lvxl, "__builtin_altivec_lvxl"); pragma Import (LL_Altivec, lvsl, "__builtin_altivec_lvsl"); pragma Import (LL_Altivec, lvsr, "__builtin_altivec_lvsr"); pragma Import (LL_Altivec, abs_v16qi, "__builtin_altivec_abs_v16qi"); pragma Import (LL_Altivec, abs_v8hi, "__builtin_altivec_abs_v8hi"); pragma Import (LL_Altivec, abs_v4si, "__builtin_altivec_abs_v4si"); pragma Import (LL_Altivec, abs_v4sf, "__builtin_altivec_abs_v4sf"); pragma Import (LL_Altivec, abss_v16qi, "__builtin_altivec_abss_v16qi"); pragma Import (LL_Altivec, abss_v8hi, "__builtin_altivec_abss_v8hi"); pragma Import (LL_Altivec, abss_v4si, "__builtin_altivec_abss_v4si"); pragma Import (LL_Altivec, vaddcuw, "__builtin_altivec_vaddcuw"); pragma Import (LL_Altivec, vaddfp, "__builtin_altivec_vaddfp"); pragma Import (LL_Altivec, vaddsbs, "__builtin_altivec_vaddsbs"); pragma Import (LL_Altivec, vaddshs, "__builtin_altivec_vaddshs"); pragma Import (LL_Altivec, vaddsws, "__builtin_altivec_vaddsws"); pragma Import (LL_Altivec, vaddubm, "__builtin_altivec_vaddubm"); pragma Import (LL_Altivec, vaddubs, "__builtin_altivec_vaddubs"); pragma Import (LL_Altivec, vadduhm, "__builtin_altivec_vadduhm"); pragma Import (LL_Altivec, vadduhs, "__builtin_altivec_vadduhs"); pragma Import (LL_Altivec, vadduwm, "__builtin_altivec_vadduwm"); pragma Import (LL_Altivec, vadduws, "__builtin_altivec_vadduws"); pragma Import (LL_Altivec, vand, "__builtin_altivec_vand"); pragma Import (LL_Altivec, vandc, "__builtin_altivec_vandc"); pragma Import (LL_Altivec, vavgsb, "__builtin_altivec_vavgsb"); pragma Import (LL_Altivec, vavgsh, "__builtin_altivec_vavgsh"); pragma Import (LL_Altivec, vavgsw, "__builtin_altivec_vavgsw"); pragma Import (LL_Altivec, vavgub, "__builtin_altivec_vavgub"); pragma Import (LL_Altivec, vavguh, "__builtin_altivec_vavguh"); pragma Import (LL_Altivec, vavguw, "__builtin_altivec_vavguw"); pragma Import (LL_Altivec, vcfsx, "__builtin_altivec_vcfsx"); pragma Import (LL_Altivec, vcfux, "__builtin_altivec_vcfux"); pragma Import (LL_Altivec, vcmpbfp, "__builtin_altivec_vcmpbfp"); pragma Import (LL_Altivec, vcmpeqfp, "__builtin_altivec_vcmpeqfp"); pragma Import (LL_Altivec, vcmpequb, "__builtin_altivec_vcmpequb"); pragma Import (LL_Altivec, vcmpequh, "__builtin_altivec_vcmpequh"); pragma Import (LL_Altivec, vcmpequw, "__builtin_altivec_vcmpequw"); pragma Import (LL_Altivec, vcmpgefp, "__builtin_altivec_vcmpgefp"); pragma Import (LL_Altivec, vcmpgtfp, "__builtin_altivec_vcmpgtfp"); pragma Import (LL_Altivec, vcmpgtsb, "__builtin_altivec_vcmpgtsb"); pragma Import (LL_Altivec, vcmpgtsh, "__builtin_altivec_vcmpgtsh"); pragma Import (LL_Altivec, vcmpgtsw, "__builtin_altivec_vcmpgtsw"); pragma Import (LL_Altivec, vcmpgtub, "__builtin_altivec_vcmpgtub"); pragma Import (LL_Altivec, vcmpgtuh, "__builtin_altivec_vcmpgtuh"); pragma Import (LL_Altivec, vcmpgtuw, "__builtin_altivec_vcmpgtuw"); pragma Import (LL_Altivec, vctsxs, "__builtin_altivec_vctsxs"); pragma Import (LL_Altivec, vctuxs, "__builtin_altivec_vctuxs"); pragma Import (LL_Altivec, vexptefp, "__builtin_altivec_vexptefp"); pragma Import (LL_Altivec, vlogefp, "__builtin_altivec_vlogefp"); pragma Import (LL_Altivec, vmaddfp, "__builtin_altivec_vmaddfp"); pragma Import (LL_Altivec, vmaxfp, "__builtin_altivec_vmaxfp"); pragma Import (LL_Altivec, vmaxsb, "__builtin_altivec_vmaxsb"); pragma Import (LL_Altivec, vmaxsh, "__builtin_altivec_vmaxsh"); pragma Import (LL_Altivec, vmaxsw, "__builtin_altivec_vmaxsw"); pragma Import (LL_Altivec, vmaxub, "__builtin_altivec_vmaxub"); pragma Import (LL_Altivec, vmaxuh, "__builtin_altivec_vmaxuh"); pragma Import (LL_Altivec, vmaxuw, "__builtin_altivec_vmaxuw"); pragma Import (LL_Altivec, vmhaddshs, "__builtin_altivec_vmhaddshs"); pragma Import (LL_Altivec, vmhraddshs, "__builtin_altivec_vmhraddshs"); pragma Import (LL_Altivec, vminfp, "__builtin_altivec_vminfp"); pragma Import (LL_Altivec, vminsb, "__builtin_altivec_vminsb"); pragma Import (LL_Altivec, vminsh, "__builtin_altivec_vminsh"); pragma Import (LL_Altivec, vminsw, "__builtin_altivec_vminsw"); pragma Import (LL_Altivec, vminub, "__builtin_altivec_vminub"); pragma Import (LL_Altivec, vminuh, "__builtin_altivec_vminuh"); pragma Import (LL_Altivec, vminuw, "__builtin_altivec_vminuw"); pragma Import (LL_Altivec, vmladduhm, "__builtin_altivec_vmladduhm"); pragma Import (LL_Altivec, vmrghb, "__builtin_altivec_vmrghb"); pragma Import (LL_Altivec, vmrghh, "__builtin_altivec_vmrghh"); pragma Import (LL_Altivec, vmrghw, "__builtin_altivec_vmrghw"); pragma Import (LL_Altivec, vmrglb, "__builtin_altivec_vmrglb"); pragma Import (LL_Altivec, vmrglh, "__builtin_altivec_vmrglh"); pragma Import (LL_Altivec, vmrglw, "__builtin_altivec_vmrglw"); pragma Import (LL_Altivec, vmsummbm, "__builtin_altivec_vmsummbm"); pragma Import (LL_Altivec, vmsumshm, "__builtin_altivec_vmsumshm"); pragma Import (LL_Altivec, vmsumshs, "__builtin_altivec_vmsumshs"); pragma Import (LL_Altivec, vmsumubm, "__builtin_altivec_vmsumubm"); pragma Import (LL_Altivec, vmsumuhm, "__builtin_altivec_vmsumuhm"); pragma Import (LL_Altivec, vmsumuhs, "__builtin_altivec_vmsumuhs"); pragma Import (LL_Altivec, vmulesb, "__builtin_altivec_vmulesb"); pragma Import (LL_Altivec, vmulesh, "__builtin_altivec_vmulesh"); pragma Import (LL_Altivec, vmuleub, "__builtin_altivec_vmuleub"); pragma Import (LL_Altivec, vmuleuh, "__builtin_altivec_vmuleuh"); pragma Import (LL_Altivec, vmulosb, "__builtin_altivec_vmulosb"); pragma Import (LL_Altivec, vmulosh, "__builtin_altivec_vmulosh"); pragma Import (LL_Altivec, vmuloub, "__builtin_altivec_vmuloub"); pragma Import (LL_Altivec, vmulouh, "__builtin_altivec_vmulouh"); pragma Import (LL_Altivec, vnmsubfp, "__builtin_altivec_vnmsubfp"); pragma Import (LL_Altivec, vnor, "__builtin_altivec_vnor"); pragma Import (LL_Altivec, vxor, "__builtin_altivec_vxor"); pragma Import (LL_Altivec, vor, "__builtin_altivec_vor"); pragma Import (LL_Altivec, vperm_4si, "__builtin_altivec_vperm_4si"); pragma Import (LL_Altivec, vpkpx, "__builtin_altivec_vpkpx"); pragma Import (LL_Altivec, vpkshss, "__builtin_altivec_vpkshss"); pragma Import (LL_Altivec, vpkshus, "__builtin_altivec_vpkshus"); pragma Import (LL_Altivec, vpkswss, "__builtin_altivec_vpkswss"); pragma Import (LL_Altivec, vpkswus, "__builtin_altivec_vpkswus"); pragma Import (LL_Altivec, vpkuhum, "__builtin_altivec_vpkuhum"); pragma Import (LL_Altivec, vpkuhus, "__builtin_altivec_vpkuhus"); pragma Import (LL_Altivec, vpkuwum, "__builtin_altivec_vpkuwum"); pragma Import (LL_Altivec, vpkuwus, "__builtin_altivec_vpkuwus"); pragma Import (LL_Altivec, vrefp, "__builtin_altivec_vrefp"); pragma Import (LL_Altivec, vrfim, "__builtin_altivec_vrfim"); pragma Import (LL_Altivec, vrfin, "__builtin_altivec_vrfin"); pragma Import (LL_Altivec, vrfip, "__builtin_altivec_vrfip"); pragma Import (LL_Altivec, vrfiz, "__builtin_altivec_vrfiz"); pragma Import (LL_Altivec, vrlb, "__builtin_altivec_vrlb"); pragma Import (LL_Altivec, vrlh, "__builtin_altivec_vrlh"); pragma Import (LL_Altivec, vrlw, "__builtin_altivec_vrlw"); pragma Import (LL_Altivec, vrsqrtefp, "__builtin_altivec_vrsqrtefp"); pragma Import (LL_Altivec, vsel_4si, "__builtin_altivec_vsel_4si"); pragma Import (LL_Altivec, vsldoi_4si, "__builtin_altivec_vsldoi_4si"); pragma Import (LL_Altivec, vsldoi_8hi, "__builtin_altivec_vsldoi_8hi"); pragma Import (LL_Altivec, vsldoi_16qi, "__builtin_altivec_vsldoi_16qi"); pragma Import (LL_Altivec, vsldoi_4sf, "__builtin_altivec_vsldoi_4sf"); pragma Import (LL_Altivec, vsl, "__builtin_altivec_vsl"); pragma Import (LL_Altivec, vslb, "__builtin_altivec_vslb"); pragma Import (LL_Altivec, vslh, "__builtin_altivec_vslh"); pragma Import (LL_Altivec, vslo, "__builtin_altivec_vslo"); pragma Import (LL_Altivec, vslw, "__builtin_altivec_vslw"); pragma Import (LL_Altivec, vspltb, "__builtin_altivec_vspltb"); pragma Import (LL_Altivec, vsplth, "__builtin_altivec_vsplth"); pragma Import (LL_Altivec, vspltisb, "__builtin_altivec_vspltisb"); pragma Import (LL_Altivec, vspltish, "__builtin_altivec_vspltish"); pragma Import (LL_Altivec, vspltisw, "__builtin_altivec_vspltisw"); pragma Import (LL_Altivec, vspltw, "__builtin_altivec_vspltw"); pragma Import (LL_Altivec, vsr, "__builtin_altivec_vsr"); pragma Import (LL_Altivec, vsrab, "__builtin_altivec_vsrab"); pragma Import (LL_Altivec, vsrah, "__builtin_altivec_vsrah"); pragma Import (LL_Altivec, vsraw, "__builtin_altivec_vsraw"); pragma Import (LL_Altivec, vsrb, "__builtin_altivec_vsrb"); pragma Import (LL_Altivec, vsrh, "__builtin_altivec_vsrh"); pragma Import (LL_Altivec, vsro, "__builtin_altivec_vsro"); pragma Import (LL_Altivec, vsrw, "__builtin_altivec_vsrw"); pragma Import (LL_Altivec, vsubcuw, "__builtin_altivec_vsubcuw"); pragma Import (LL_Altivec, vsubfp, "__builtin_altivec_vsubfp"); pragma Import (LL_Altivec, vsubsbs, "__builtin_altivec_vsubsbs"); pragma Import (LL_Altivec, vsubshs, "__builtin_altivec_vsubshs"); pragma Import (LL_Altivec, vsubsws, "__builtin_altivec_vsubsws"); pragma Import (LL_Altivec, vsububm, "__builtin_altivec_vsububm"); pragma Import (LL_Altivec, vsububs, "__builtin_altivec_vsububs"); pragma Import (LL_Altivec, vsubuhm, "__builtin_altivec_vsubuhm"); pragma Import (LL_Altivec, vsubuhs, "__builtin_altivec_vsubuhs"); pragma Import (LL_Altivec, vsubuwm, "__builtin_altivec_vsubuwm"); pragma Import (LL_Altivec, vsubuws, "__builtin_altivec_vsubuws"); pragma Import (LL_Altivec, vsum2sws, "__builtin_altivec_vsum2sws"); pragma Import (LL_Altivec, vsum4sbs, "__builtin_altivec_vsum4sbs"); pragma Import (LL_Altivec, vsum4shs, "__builtin_altivec_vsum4shs"); pragma Import (LL_Altivec, vsum4ubs, "__builtin_altivec_vsum4ubs"); pragma Import (LL_Altivec, vsumsws, "__builtin_altivec_vsumsws"); pragma Import (LL_Altivec, vupkhpx, "__builtin_altivec_vupkhpx"); pragma Import (LL_Altivec, vupkhsb, "__builtin_altivec_vupkhsb"); pragma Import (LL_Altivec, vupkhsh, "__builtin_altivec_vupkhsh"); pragma Import (LL_Altivec, vupklpx, "__builtin_altivec_vupklpx"); pragma Import (LL_Altivec, vupklsb, "__builtin_altivec_vupklsb"); pragma Import (LL_Altivec, vupklsh, "__builtin_altivec_vupklsh"); pragma Import (LL_Altivec, vcmpbfp_p, "__builtin_altivec_vcmpbfp_p"); pragma Import (LL_Altivec, vcmpeqfp_p, "__builtin_altivec_vcmpeqfp_p"); pragma Import (LL_Altivec, vcmpgefp_p, "__builtin_altivec_vcmpgefp_p"); pragma Import (LL_Altivec, vcmpgtfp_p, "__builtin_altivec_vcmpgtfp_p"); pragma Import (LL_Altivec, vcmpequw_p, "__builtin_altivec_vcmpequw_p"); pragma Import (LL_Altivec, vcmpgtsw_p, "__builtin_altivec_vcmpgtsw_p"); pragma Import (LL_Altivec, vcmpgtuw_p, "__builtin_altivec_vcmpgtuw_p"); pragma Import (LL_Altivec, vcmpgtuh_p, "__builtin_altivec_vcmpgtuh_p"); pragma Import (LL_Altivec, vcmpgtsh_p, "__builtin_altivec_vcmpgtsh_p"); pragma Import (LL_Altivec, vcmpequh_p, "__builtin_altivec_vcmpequh_p"); pragma Import (LL_Altivec, vcmpequb_p, "__builtin_altivec_vcmpequb_p"); pragma Import (LL_Altivec, vcmpgtsb_p, "__builtin_altivec_vcmpgtsb_p"); pragma Import (LL_Altivec, vcmpgtub_p, "__builtin_altivec_vcmpgtub_p"); end GNAT.Altivec.Low_Level_Vectors;