aboutsummaryrefslogtreecommitdiffstats
path: root/gcc-4.8.3/gcc/ada/g-alvevi.ads
diff options
context:
space:
mode:
Diffstat (limited to 'gcc-4.8.3/gcc/ada/g-alvevi.ads')
-rw-r--r--gcc-4.8.3/gcc/ada/g-alvevi.ads156
1 files changed, 156 insertions, 0 deletions
diff --git a/gcc-4.8.3/gcc/ada/g-alvevi.ads b/gcc-4.8.3/gcc/ada/g-alvevi.ads
new file mode 100644
index 000000000..8d8d85608
--- /dev/null
+++ b/gcc-4.8.3/gcc/ada/g-alvevi.ads
@@ -0,0 +1,156 @@
+------------------------------------------------------------------------------
+-- --
+-- GNAT COMPILER COMPONENTS --
+-- --
+-- G N A T . A L T I V E C . V E C T O R _ V I E W S --
+-- --
+-- S p e c --
+-- --
+-- Copyright (C) 2005-2009, 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 --
+-- <http://www.gnu.org/licenses/>. --
+-- --
+-- GNAT was originally developed by the GNAT team at New York University. --
+-- Extensive contributions were provided by Ada Core Technologies Inc. --
+-- --
+------------------------------------------------------------------------------
+
+-- This unit provides public 'View' data types from/to which private vector
+-- representations can be converted via Altivec.Conversions. This allows
+-- convenient access to individual vector elements and provides a simple way
+-- to initialize vector objects.
+
+-- Accessing vector contents with direct memory overlays should be avoided
+-- because actual vector representations may vary across configurations, for
+-- instance to accommodate different target endianness.
+
+-- The natural representation of a vector is an array indexed by vector
+-- component number, which is materialized by the Varray type definitions
+-- below. The 16byte alignment constraint is unfortunately sometimes not
+-- properly honored for constant array aggregates, so the View types are
+-- actually records enclosing such arrays.
+
+package GNAT.Altivec.Vector_Views is
+
+ ---------------------
+ -- char components --
+ ---------------------
+
+ type Vchar_Range is range 1 .. 16;
+
+ type Varray_unsigned_char is array (Vchar_Range) of unsigned_char;
+ for Varray_unsigned_char'Alignment use VECTOR_ALIGNMENT;
+
+ type VUC_View is record
+ Values : Varray_unsigned_char;
+ end record;
+
+ type Varray_signed_char is array (Vchar_Range) of signed_char;
+ for Varray_signed_char'Alignment use VECTOR_ALIGNMENT;
+
+ type VSC_View is record
+ Values : Varray_signed_char;
+ end record;
+
+ type Varray_bool_char is array (Vchar_Range) of bool_char;
+ for Varray_bool_char'Alignment use VECTOR_ALIGNMENT;
+
+ type VBC_View is record
+ Values : Varray_bool_char;
+ end record;
+
+ ----------------------
+ -- short components --
+ ----------------------
+
+ type Vshort_Range is range 1 .. 8;
+
+ type Varray_unsigned_short is array (Vshort_Range) of unsigned_short;
+ for Varray_unsigned_short'Alignment use VECTOR_ALIGNMENT;
+
+ type VUS_View is record
+ Values : Varray_unsigned_short;
+ end record;
+
+ type Varray_signed_short is array (Vshort_Range) of signed_short;
+ for Varray_signed_short'Alignment use VECTOR_ALIGNMENT;
+
+ type VSS_View is record
+ Values : Varray_signed_short;
+ end record;
+
+ type Varray_bool_short is array (Vshort_Range) of bool_short;
+ for Varray_bool_short'Alignment use VECTOR_ALIGNMENT;
+
+ type VBS_View is record
+ Values : Varray_bool_short;
+ end record;
+
+ --------------------
+ -- int components --
+ --------------------
+
+ type Vint_Range is range 1 .. 4;
+
+ type Varray_unsigned_int is array (Vint_Range) of unsigned_int;
+ for Varray_unsigned_int'Alignment use VECTOR_ALIGNMENT;
+
+ type VUI_View is record
+ Values : Varray_unsigned_int;
+ end record;
+
+ type Varray_signed_int is array (Vint_Range) of signed_int;
+ for Varray_signed_int'Alignment use VECTOR_ALIGNMENT;
+
+ type VSI_View is record
+ Values : Varray_signed_int;
+ end record;
+
+ type Varray_bool_int is array (Vint_Range) of bool_int;
+ for Varray_bool_int'Alignment use VECTOR_ALIGNMENT;
+
+ type VBI_View is record
+ Values : Varray_bool_int;
+ end record;
+
+ ----------------------
+ -- float components --
+ ----------------------
+
+ type Vfloat_Range is range 1 .. 4;
+
+ type Varray_float is array (Vfloat_Range) of C_float;
+ for Varray_float'Alignment use VECTOR_ALIGNMENT;
+
+ type VF_View is record
+ Values : Varray_float;
+ end record;
+
+ ----------------------
+ -- pixel components --
+ ----------------------
+
+ type Vpixel_Range is range 1 .. 8;
+
+ type Varray_pixel is array (Vpixel_Range) of pixel;
+ for Varray_pixel'Alignment use VECTOR_ALIGNMENT;
+
+ type VP_View is record
+ Values : Varray_pixel;
+ end record;
+
+end GNAT.Altivec.Vector_Views;