diff --git a/specification/bk_main.xml b/specification/bk_main.xml
index 04a7b88..54c98b4 100644
--- a/specification/bk_main.xml
+++ b/specification/bk_main.xml
@@ -37,7 +37,7 @@
- 2014-2017
+ 2014-2018
OpenPOWER Foundation
@@ -57,7 +57,7 @@
Freescale Semiconductor, Inc
- Revision 1.4
+ Revision 1.5 draft
OpenPOWER
@@ -93,6 +93,16 @@
+
+ 2018-03-02
+
+
+
+ Revision 1.5: POWER10 support.
+
+
+
+
2017-05-10
diff --git a/specification/ch_2.xml b/specification/ch_2.xml
index e81d106..2bd724a 100644
--- a/specification/ch_2.xml
+++ b/specification/ch_2.xml
@@ -2065,11 +2065,6 @@ xml:id="dbdoclet.50655240_pgfId-1156194">
order encountered, to ensure consistent mapping. When using variables
individually, more strict alignment may be imposed if it has
optimization benefits.
- Regardless of the alignment rules for the allocation of data
- types, pointers to both aligned and unaligned data of each data type
- shall return the value corresponding to a data type starting at the
- specified address when accessed with either the pointer dereference
- operator * or the array reference operator [ ].
diff --git a/specification/ch_6.xml b/specification/ch_6.xml
index ac7c35f..126ce09 100644
--- a/specification/ch_6.xml
+++ b/specification/ch_6.xml
@@ -67,27 +67,15 @@ xml:id="dbdoclet.50655244_pgfId-1095944">
static, auto, and register storage.
Pointers to vector types are defined like pointers of other C/C++
types. Pointers to objects may be defined to have const and volatile
- properties. While the preferred alignment for vector data types is a
- multiple of 16 bytes, pointers may point to vector objects at an arbitrary
- alignment.
+ properties.
The preferred way to access vectors at an application-defined address
is by using vector pointers and the C/C++ dereference operator *. Similar
to other C /C++ data types, the array reference operator [ ] may be used to
access vector objects with a vector pointer with the usual definition to
- access the n-th vector element from a vector pointer. The use of vector
- built-in functions such as vec_xl and vec_xst is discouraged except for
- languages where no dereference operators are available.
- vector char vca;
-vector char vcb;
-vector int via;
-int a[4];
-void *vp;
-
-via = *(vector int *) &a[0];
-vca = (vector char) via;
-vcb = vca;
-vca = *(vector char *)vp;
-*(vector char *)&a[0] = vca;
+ access the n-th vector element from a vector pointer. The dereference
+ operator * may not be used to access data that is
+ not aligned at least to a quadword boundary. Built-in functions such as
+ vec_xl and vec_xst are provided for unaligned data access.
Compilers are expected to recognize and optimize multiple operations
that can be optimized into a single hardware instruction. For example, a
load and splat hardware instruction might be generated for the following
@@ -578,12 +566,6 @@ register vector double vd = vec_splats(*double_ptr);
-
- Reminder: The assignment operator = is the
- preferred way to assign values from one vector data type to
- another vector data type in accordance with the C and C++
- programming languages.
-
Extended Data Movement Functions
The built-in functions in
@@ -702,25 +684,20 @@ register vector double vd = vec_splats(*double_ptr);
of these sequences in new code is discouraged and usually results in
worse performance. It is recommended (but not required) that compilers
issue a warning when these functions are used in little-endian
- environments. It is recommended that programmers use the assignment
- operator = or the vector vec_xl and vec_xst vector built-in functions to
- access unaligned data streams.
- The set of extended mnemonics in
- may be provided by some
- compilers and are not required by the Power SIMD programming interfaces.
- In particular, the assignment operator = will have the same effect of
- copying values between vector data types and provides a preferable method
- to assign values while giving the compiler more freedom to optimize data
- allocation. The only use for these functions is to support some coding
- patterns enabling big-endian vector layout code sequences in both
- big-endian and little-endian environments. Memory access built-in
+ environments. It is recommended that programmers use the vec_xl and
+ vec_xst vector built-in functions to access unaligned data
+ streams.
+ The built-in functions in
+ provide unaligned access to
+ data in memory that is to be copied to or from a variable having vector
+ data type. Memory access built-in
functions that specify a vector element format (that is, the w4 and d2
forms) are deprecated. They will be phased out in future versions of this
specification because vec_xl and vec_xst provide overloaded
layout-specific memory access based on the specified vector data
type.
- Optional Built-In Memory Access Functions
+ VSX Memory Access Built-In Functions
@@ -1137,7 +1114,7 @@ register vector double vd = vec_splats(*double_ptr);
.
- Optional Built-In Memory Access Functions (BE Layout in LE
+ VSX Built-In Memory Access Functions (BE Layout in LE
Mode)
diff --git a/specification/pom.xml b/specification/pom.xml
index 793f593..2bc755c 100644
--- a/specification/pom.xml
+++ b/specification/pom.xml
@@ -123,9 +123,9 @@
review = this document is presently being reviewed
The appropriate starting security for a new document is "draft". -->
-
+ draft
- published
+