diff --git a/Intrinsics_Reference/ch_vec_reference.xml b/Intrinsics_Reference/ch_vec_reference.xml
index 7117f70..f0d54f2 100644
--- a/Intrinsics_Reference/ch_vec_reference.xml
+++ b/Intrinsics_Reference/ch_vec_reference.xml
@@ -113,6 +113,40 @@ xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="VIPR.vec-ref">
linkend="section_isa_intrin_xref" />) for the programmer's
convenience.
+
+ For some intrinsics, restrictions are shown in the
+ implementation table for some of the rows. Possible
+ restrictions include:
+
+
+
+
+ ISA 3.0 or later. This
+ form is only available starting with PowerISA 3.0,
+ corresponding to POWER9 servers.
+
+
+
+
+ Phased in. Not all
+ compilers have yet completed implementing this form of the
+ intrinsic.
+
+
+
+
+ Deferred. No compiler yet
+ supports this form of the intrinsic.
+
+
+
+
+ Deprecated. This form of
+ the intrinsic is currently available, but may be removed in
+ the future. Programmers are discouraged from using it.
+
+
+
@@ -13573,14 +13607,17 @@ xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="VIPR.vec-ref">
vec_first_match_index
- Vector ... Spelled Out Name TBD
+ Vector Index of First Match
- r = vec_first_match_index (ARG1, ARG2)
+ r = vec_first_match_index (a, b)
GCC 8.1 implementation is broken!
Purpose:
- Performs a comparison of equality on each of the corresponding elements of ARG1 and ARG2, and returns the first position of equality.
+ Performs a comparison of equality on each of the corresponding
+ elements of a and b, and returns the first position of
+ equality.
Result value: Returns the element index of the position of the first character match. If no match, returns the number of characters as an element count in the vector argument.
Endian considerations:
@@ -13732,7 +13769,7 @@ xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="VIPR.vec-ref">
vec_first_match_or_eos_index
- Vector ... Spelled Out Name TBD
+ Vector Index of First Match or End of String
r = vec_first_match_or_eos_index (ARG1, ARG2)
@@ -13891,7 +13928,7 @@ xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="VIPR.vec-ref">
vec_first_mismatch_index
- Vector ... Spelled Out Name TBD
+ Vector Index of First Mismatch
r = vec_first_mismatch_index (ARG1, ARG2)
@@ -14050,7 +14087,7 @@ xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="VIPR.vec-ref">
vec_first_mismatch_or_eos_index
- Vector ... Spelled Out Name TBD
+ Vector Index of First Mismatch or End of String
r = vec_first_mismatch_or_eos_index (ARG1, ARG2)
@@ -17574,7 +17611,7 @@ xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="VIPR.vec-ref">
vec_max
Vector Maximum
- r = vec_max (a, b))
+ r = vec_max (a, b)
Purpose:
@@ -23014,9 +23051,7 @@ xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="VIPR.vec-ref">
Notes:
No Power compilers yet support the vector _Float16 type, so that
- interface is currently deferred. Also, the
- pack-double-to-float interface produces incorrect code. Issue 417.
-
+ interface is currently deferred.
@@ -23031,16 +23066,32 @@ xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="VIPR.vec-ref">
vpkuwum
vec_pack
+
+ xxpermdi
+ vec_pack
+
+
+ xvcvdpsp
+ vec_pack
+
+
+ vmrgow
+ vec_pack
+
+
+ vmrgew
+ vec_pack
+
Supported type signatures for vec_pack
-
-
-
-
-
-
+
+
+
+
+
+
@@ -23297,13 +23348,25 @@ xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="VIPR.vec-ref">
vector double
- sample implementation TBD
-
+
+ xxpermdi t,b,a,0
+ xxpermdi u,b,a,3
+ xvcvdpsp t,t
+ xvcvdpsp u,u
+ vmrgow r,t,u
+
+
- sample implementation TBD
+
+ xxpermdi t,a,b,0
+ xxpermdi u,a,b,3
+ xvcvdpsp t,t
+ xvcvdpsp u,u
+ vmrgew r,t,u
+
- Broken
+
@@ -23323,7 +23386,7 @@ xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="VIPR.vec-ref">
sample implementation TBD
- Deferred
+ Deferred
@@ -34316,9 +34379,6 @@ xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="VIPR.vec-ref">
Endian considerations:
None.
- Notes:
- Investigate apparent inconsistency here.
-
vspltisw
@@ -35405,22 +35465,10 @@ xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="VIPR.vec-ref">
endian, these elements are in the rightmost half of the vector. For
big endian, these elements are in the leftmost half of the vector.
- Notes:
-
-
-
- Issue #439 in the power-gcc github tracker is open
- against wrong code produced by GCC for unpacking floats to
- doubles.
-
-
-
-
- No Power compilers yet support the vector _Float16 type, so that
- interface is currently deferred.
-
-
-
+ Notes:
+ No Power compilers yet support the vector _Float16 type, so that
+ interface is currently deferred.
+
vupklsh
@@ -35454,6 +35502,14 @@ xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="VIPR.vec-ref">
vupkhsb
vec_unpackh
+
+ xxsldwi
+ vec_unpackh
+
+
+ xvcvspdp
+ vec_unpackh
+
Supported type signatures for vec_unpackh
@@ -35644,10 +35700,18 @@ xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="VIPR.vec-ref">
vector float
- [TBD]
+
+ xxsldwi t,a,a,3
+ xxsldwi u,a,t,2
+ xvcvspdp r,u
+
- [TBD]
+
+ xxsldwi t,a,a,1
+ xxsldwi u,t,a,3
+ xvcvspdp r,u
+
@@ -35733,22 +35797,10 @@ xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="VIPR.vec-ref">
endian, these elements are in the rightmost half of the vector. For
big endian, these elements are in the leftmost half of the vector.
- Notes:
-
-
-
- Issue #439 in the power-gcc github tracker is open
- against wrong code produced by GCC for unpacking floats to
- doubles.
-
-
-
-
- No Power compilers yet support the vector _Float16 type, so that
- interface is currently deferred.
-
-
-
+ Notes:
+ No Power compilers yet support the vector _Float16 type, so that
+ interface is currently deferred.
+
vupkhsh
@@ -35782,6 +35834,14 @@ xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="VIPR.vec-ref">
vupklsb
vec_unpackl
+
+ xxsldwi
+ vec_unpackl
+
+
+ xvcvspdp
+ vec_unpackl
+
Supported type signatures for vec_unpackl
@@ -35972,10 +36032,18 @@ xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="VIPR.vec-ref">
vector float
- [TBD]
+
+ xxsldwi t,a,a,1
+ xxsldwi u,t,a,3
+ xvcvspdp r,u
+
- [TBD]
+
+ xxsldwi t,a,a,3
+ xxsldwi u,a,t,2
+ xvcvspdp r,u
+