diff --git a/Intrinsics_Reference/ch_biendian.xml b/Intrinsics_Reference/ch_biendian.xml
index 24597e6..bbefa87 100644
--- a/Intrinsics_Reference/ch_biendian.xml
+++ b/Intrinsics_Reference/ch_biendian.xml
@@ -66,6 +66,13 @@ xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="VIPR.biendian">
element order.
+
+
+ Much of the information in this chapter was formerly part of
+ Chapter 6 of the 64-Bit ELF V2 ABI Specification for POWER.
+
+
+
Vector Data Types
@@ -86,9 +93,9 @@ xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="VIPR.biendian">
Elements" should precede this one.]
- For the Fortran language, [FIXME: link to table in later
- section] gives a correspondence between Fortran and C/C++
- language types.
+ For the Fortran language, gives a correspondence
+ between Fortran and C/C++ language types.
The assignment operator always performs a byte-by-byte data copy
@@ -489,14 +496,6 @@ register vector double vd = vec_splats(*double_ptr);
big-endian and little-endian vector layouts and vector element
numberings.
-
- For internal consistency, in the ELF V2 ABI, the default vector
- layout and vector element ordering in big-endian environments
- shall be big endian, and the default vector layout and vector
- element ordering in little-endian environments shall be little
- endian. [FIXME: Here's a purported ABI requirement; should this
- somehow remain part of the ABI document?]
-
This element numbering shall also be used by the []
accessor method to vector elements provided as an extension of
@@ -725,9 +724,259 @@ register vector double vd = vec_splats(*double_ptr);
Language-Specific Vector Support for Other
Languages
-
- filler
-
+
+ Fortran
+
+ shows the
+ correspondence between the C/C++ types described in this
+ document and their Fortran equivalents. In Fortran, the
+ Boolean vector data types are represented by
+ VECTOR(UNSIGNED(
n))
.
+
+
+ Fortran Vector Data Types
+
+
+
+
+
+
+
+ XL Fortran Vector Type
+
+
+
+
+ XL C/C++ Vector Type
+
+
+
+
+
+
+
+ VECTOR(INTEGER(1))
+
+
+ vector signed char
+
+
+
+
+ VECTOR(INTEGER(2))
+
+
+ vector signed short
+
+
+
+
+ VECTOR(INTEGER(4))
+
+
+ vector signed int
+
+
+
+
+ VECTOR(INTEGER(8))
+
+
+ vector signed long long, vector signed long
+ The vector long types are deprecated due to their
+ ambiguity between 32-bit and 64-bit environments. The use
+ of the vector long long types is preferred.
+
+
+
+
+
+ VECTOR(INTEGER(16))
+
+
+ vector signed __int128
+
+
+
+
+ VECTOR(UNSIGNED(1))
+
+
+ vector unsigned char
+
+
+
+
+ VECTOR(UNSIGNED(2))
+
+
+ vector unsigned short
+
+
+
+
+ VECTOR(UNSIGNED(4))
+
+
+ vector unsigned int
+
+
+
+
+ VECTOR(UNSIGNED(8))
+
+
+ vector unsigned long long, vector unsigned long
+
+
+
+
+ VECTOR(UNSIGNED(16))
+
+
+ vector unsigned __int128
+
+
+
+
+ VECTOR(REAL(4))
+
+
+ vector float
+
+
+
+
+ VECTOR(REAL(8))
+
+
+ vector double
+
+
+
+
+ VECTOR(PIXEL)
+
+
+ vector pixel
+
+
+
+
+
+
+ Because the Fortran language does not support pointers, vector
+ built-in functions that expect pointers to a base type take an
+ array element reference to indicate the address of a memory
+ location that is the subject of a memory access built-in
+ function.
+
+
+ Because the Fortran language does not support type casts, the
+ vec_convert
and vec_concat
built-in
+ functions shown in are
+ provided to perform bit-exact type conversions between vector
+ types.
+
+
+ Built-In Vector Conversion Functions
+
+
+
+
+
+
+
+ Group
+
+
+
+
+ Description
+
+
+
+
+
+
+
+ VEC_CONCAT (ARG1, ARG2)(Fortran)
+
+
+
+ Purpose:
+ Concatenates two elements to form a vector.
+ Result value:
+ The resulting vector consists of the two scalar elements,
+ ARG1 and ARG2, assigned to elements 0 and 1 (using the
+ environment’s native endian numbering), respectively.
+
+
+ Note: This function corresponds to the C/C++ vector
+ constructor (vector type){a,b}. It is provided only for
+ languages without vector constructors.
+
+
+
+
+
+
+
+
+
+ vector signed long long vec_concat (signed long long,
+ signed long long);
+
+
+
+
+
+
+
+ vector unsigned long long vec_concat (unsigned long long,
+ unsigned long long);
+
+
+
+
+
+
+
+ vector double vec_concat (double, double);
+
+
+
+
+ VEC_CONVERT(V, MOLD)
+
+
+ Purpose:
+ Converts a vector to a vector of a given type.
+ Class:
+ Pure function
+ Argument type and attributes:
+
+
+ V Must be an INTENT(IN) vector.
+
+
+ MOLD Must be an INTENT(IN) vector. If it is a
+ variable, it need not be defined.
+
+
+ Result type and attributes:
+ The result is a vector of the same type as MOLD.
+ Result value:
+ The result is as if it were on the left-hand side of an
+ intrinsic assignment with V on the right-hand side.
+
+
+
+
+
+