From b0a825e3080b9c3efb1619b54394407d275f17aa Mon Sep 17 00:00:00 2001 From: Bill Schmidt Date: Thu, 14 May 2020 10:47:00 -0500 Subject: [PATCH] Remove Appendix A and most of Chapter 6. Fixes #106. Signed-off-by: Bill Schmidt --- specification/app_a.xml | 2 +- specification/ch_6.xml | 35 ++++++++++++++++++++++++++--------- 2 files changed, 27 insertions(+), 10 deletions(-) diff --git a/specification/app_a.xml b/specification/app_a.xml index 35e2408..f6b3f78 100644 --- a/specification/app_a.xml +++ b/specification/app_a.xml @@ -13,7 +13,7 @@ +xml:id="dbdoclet.50655245_pgfId-1138128" revisionflag="deleted"> Predefined Functions for Vector Programming So that programmers can access the vector facilities provided by the Power ISA, ABI-compliant environments should provide the vector functions diff --git a/specification/ch_6.xml b/specification/ch_6.xml index 126ce09..df177ff 100644 --- a/specification/ch_6.xml +++ b/specification/ch_6.xml @@ -15,16 +15,32 @@ xmlns:xl="http://www.w3.org/1999/xlink" version="5.0" xml:lang="en" xml:id="dbdoclet.50655244_pgfId-1095944"> Vector Programming Interfaces - To ensure portability of applications optimized to exploit the SIMD + + Earlier versions of this ABI included a description of vector + programming interfaces and techniques for POWER®, along with an + appendix enumerating the supported vector built-in functions. + Most of this information is not ABI, and is removed from this + version of the document. Instead, those interested are encouraged + to now refer to the POWER Vector + Intrinsics Programming Reference, + available from the OpenPOWER Foundation in their Technical + Resources Catalog (). + + To ensure portability of applications + optimized to exploit the SIMD functions of Power ISA processors, the ELF V2 ABI defines a set of functions and data types for SIMD programming. ELF V2-compliant compilers will provide suitable support for these functions, preferably as built-in functions that translate to one or more Power ISA instructions. - Compilers are encouraged, but not required, to provide built-in + Compilers are encouraged, but not + required, to provide built-in functions to access individual instructions in the IBM POWER® instruction set architecture. In most cases, each such built-in function should provide direct access to the underlying instruction. - However, to ease porting between little-endian (LE) and big-endian + However, to ease porting between + little-endian (LE) and big-endian (BE) POWER systems, and between POWER and other platforms, it is preferable that some built-in functions provide the same semantics on both LE and BE POWER systems, even if this means that the built-in functions are @@ -36,7 +52,8 @@ xml:id="dbdoclet.50655244_pgfId-1095944"> instruction sequence. Rather, the compiler is free to generate optimized instruction sequences that implement the semantics of the program specified by the programmer using these built-in functions. - This is primarily applicable to the vector facility of the POWER ISA, + This is primarily applicable to the + vector facility of the POWER ISA, also known as Power SIMD, consisting of the VMX (or Altivec) and VSX instructions. This set of instructions operates on groups of 2, 4, 8, or 16 vector elements at a time in 128-bit registers. On a big-endian POWER @@ -47,7 +64,7 @@ xml:id="dbdoclet.50655244_pgfId-1095944"> vector elements are loaded from memory such that the 0th element occupies the low-order bits of the register, and the (N – 1)th element occupies the high-order bits. This is referred to as little-endian element order. -
+
Vector Data Types Languages provide support for the data types in to represent vector data types @@ -83,7 +100,7 @@ xml:id="dbdoclet.50655244_pgfId-1095944"> double *double_ptr; register vector double vd = vec_splats(*double_ptr);
-
+
Vector Operators In addition to the dereference and assignment operators, the Power SIMD Vector Programming API provides the usual operators that are valid on @@ -109,7 +126,7 @@ register vector double vd = vec_splats(*double_ptr); ). An l-value may either be assigned a new value or accessed for reading its value.
-
+
Vector Layout and Element Numbering Vector data types consist of a homogeneous sequence of elements of the base data type specified in the vector data type. Individual elements @@ -170,7 +187,7 @@ register vector double vd = vec_splats(*double_ptr);
-
+
Vector Built-in Functions The Power language environments provide a well-known set of built-in functions for the Power SIMD instructions (including both Altivec/VMX and @@ -1240,7 +1257,7 @@ register vector double vd = vec_splats(*double_ptr); setting such as -qaltivec=be or -maltivec=be.
-
+
Language-Specific Vector Support for Other Languages
Fortran