From 772dc107589fe3836167ecf98870200b70d86dfe Mon Sep 17 00:00:00 2001 From: Bill Schmidt Date: Fri, 11 Oct 2019 16:27:12 -0500 Subject: [PATCH] Various clean-ups in the vector reference. A couple remain. --- Intrinsics_Reference/ch_vec_reference.xml | 188 +++++++++++++++------- 1 file changed, 128 insertions(+), 60 deletions(-) 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 +