From 7d4d77fcda977e081ebd00b4ee074a4a29d5f9ac Mon Sep 17 00:00:00 2001 From: Bill Schmidt Date: Fri, 2 Mar 2018 17:07:30 -0600 Subject: [PATCH] Change to draft status for revision 1.5. Incorporate errata 1.0 for revision 1.4. Signed-off-by: Bill Schmidt --- specification/bk_main.xml | 14 +++++++++-- specification/ch_2.xml | 5 ---- specification/ch_6.xml | 51 +++++++++++---------------------------- specification/pom.xml | 4 +-- 4 files changed, 28 insertions(+), 46 deletions(-) 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 + <title>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 +