@ -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.
</para>
<para>
For some intrinsics, restrictions are shown in the
implementation table for some of the rows. Possible
restrictions include:
</para>
<itemizedlist>
<listitem>
<para>
<emphasis role="bold">ISA 3.0 or later</emphasis>. This
form is only available starting with PowerISA 3.0,
corresponding to POWER9 servers.
</para>
</listitem>
<listitem>
<para>
<emphasis role="bold">Phased in</emphasis>. Not all
compilers have yet completed implementing this form of the
intrinsic.
</para>
</listitem>
<listitem>
<para>
<emphasis role="bold">Deferred</emphasis>. No compiler yet
supports this form of the intrinsic.
</para>
</listitem>
<listitem>
<para>
<emphasis role="bold">Deprecated</emphasis>. This form of
the intrinsic is currently available, but may be removed in
the future. Programmers are discouraged from using it.
</para>
</listitem>
</itemizedlist>
</section>
<?hard-pagebreak?>
@ -13573,14 +13607,17 @@ xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="VIPR.vec-ref">
<simplesect xml:id="vec_first_match_index">
<title>vec_first_match_index</title>
<subtitle>Vector ... Spelled Out Name TBD</subtitle>
<subtitle>Vector Index of First Match</subtitle>
<programlisting>
r = vec_first_match_index (ARG1, ARG2)
r = vec_first_match_index (a, b)
</programlisting>
<para><emphasis>GCC 8.1 implementation is broken!</emphasis></para>
<para><emphasis role="bold">Purpose:</emphasis>
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 <emphasis role="bold">a</emphasis> and <emphasis
role="bold">b</emphasis>, and returns the first position of
equality.
</para>
<para><emphasis role="bold">Result value: </emphasis>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.</para>
<para><emphasis role="bold">Endian considerations:</emphasis>
@ -13732,7 +13769,7 @@ xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="VIPR.vec-ref">
<simplesect xml:id="vec_first_match_or_eos_index">
<title>vec_first_match_or_eos_index</title>
<subtitle>Vector ... Spelled Out Name TBD</subtitle>
<subtitle>Vector Index of First Match or End of String</subtitle>
<programlisting>
r = vec_first_match_or_eos_index (ARG1, ARG2)
</programlisting>
@ -13891,7 +13928,7 @@ xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="VIPR.vec-ref">
<simplesect xml:id="vec_first_mismatch_index">
<title>vec_first_mismatch_index</title>
<subtitle>Vector ... Spelled Out Name TBD</subtitle>
<subtitle>Vector Index of First Mismatch</subtitle>
<programlisting>
r = vec_first_mismatch_index (ARG1, ARG2)
</programlisting>
@ -14050,7 +14087,7 @@ xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="VIPR.vec-ref">
<simplesect xml:id="vec_first_mismatch_or_eos_index">
<title>vec_first_mismatch_or_eos_index</title>
<subtitle>Vector ... Spelled Out Name TBD</subtitle>
<subtitle>Vector Index of First Mismatch or End of String</subtitle>
<programlisting>
r = vec_first_mismatch_or_eos_index (ARG1, ARG2)
</programlisting>
@ -17574,7 +17611,7 @@ xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="VIPR.vec-ref">
<title>vec_max</title>
<subtitle>Vector Maximum</subtitle>
<programlisting>
r = vec_max (a, b))
r = vec_max (a, b)
</programlisting>
<para><emphasis role="bold">Purpose:</emphasis>
@ -23014,9 +23051,7 @@ xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="VIPR.vec-ref">
</para>
<para><emphasis role="bold">Notes:</emphasis>
No Power compilers yet support the vector _Float16 type, so that
interface is currently deferred. <emphasis>Also, the
pack-double-to-float interface produces incorrect code. Issue 417.
</emphasis>
interface is currently deferred.
</para>
<indexterm>
@ -23031,16 +23066,32 @@ xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="VIPR.vec-ref">
<primary>vpkuwum</primary>
<secondary>vec_pack</secondary>
</indexterm>
<indexterm>
<primary>xxpermdi</primary>
<secondary>vec_pack</secondary>
</indexterm>
<indexterm>
<primary>xvcvdpsp</primary>
<secondary>vec_pack</secondary>
</indexterm>
<indexterm>
<primary>vmrgow</primary>
<secondary>vec_pack</secondary>
</indexterm>
<indexterm>
<primary>vmrgew</primary>
<secondary>vec_pack</secondary>
</indexterm>
<table frame="all">
<title>Supported type signatures for vec_pack</title>
<tgroup cols="6">
<colspec colname="c1" colwidth="20*" />
<colspec colname="c2" colwidth="20*" />
<colspec colname="c3" colwidth="20*" />
<colspec colname="c4" colwidth="20*" />
<colspec colname="c5" colwidth="20*" />
<colspec colname="c6" colwidth="20*" />
<colspec colname="c1" colwidth="18*" />
<colspec colname="c2" colwidth="18*" />
<colspec colname="c3" colwidth="18*" />
<colspec colname="c4" colwidth="24*" />
<colspec colname="c5" colwidth="24*" />
<colspec colname="c6" colwidth="18*" />
<thead>
<row>
<entry align="center" valign="middle">
@ -23297,13 +23348,25 @@ xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="VIPR.vec-ref">
<para> vector double</para>
</entry>
<entry align="center" valign="middle">
<programlisting>sample implementation TBD</programlisting>
</entry>
<programlisting>
xxpermdi t,b,a,0
xxpermdi u,b,a,3
xvcvdpsp t,t
xvcvdpsp u,u
vmrgow r,t,u
</programlisting>
</entry>
<entry align="center" valign="middle">
<programlisting>sample implementation TBD</programlisting>
<programlisting>
xxpermdi t,a,b,0
xxpermdi u,a,b,3
xvcvdpsp t,t
xvcvdpsp u,u
vmrgew r,t,u
</programlisting>
</entry>
<entry align="center" valign="middle">
<para><emphasis>Broken</emphasis></para>
<para> </para>
</entry>
</row>
<row>
@ -23323,7 +23386,7 @@ xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="VIPR.vec-ref">
<programlisting>sample implementation TBD</programlisting>
</entry>
<entry align="center" valign="middle">
<para><emphasis>Deferred</emphasis></para>
<para>Deferred</para>
</entry>
</row>
</tbody>
@ -34316,9 +34379,6 @@ xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="VIPR.vec-ref">
<para><emphasis role="bold">Endian considerations:</emphasis>
None.
</para>
<para><emphasis role="bold">Notes:</emphasis>
<emphasis>Investigate apparent inconsistency here.</emphasis>
</para>
<indexterm>
<primary>vspltisw</primary>
@ -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.
</para>
<para><emphasis role="bold">Notes:</emphasis></para>
<itemizedlist>
<listitem>
<para>
<emphasis>Issue #439 in the power-gcc github tracker is open
against wrong code produced by GCC for unpacking floats to
doubles.</emphasis>
</para>
</listitem>
<listitem>
<para>
No Power compilers yet support the vector _Float16 type, so that
interface is currently deferred.
</para>
</listitem>
</itemizedlist>
<para><emphasis role="bold">Notes:</emphasis>
No Power compilers yet support the vector _Float16 type, so that
interface is currently deferred.
</para>
<indexterm>
<primary>vupklsh</primary>
@ -35454,6 +35502,14 @@ xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="VIPR.vec-ref">
<primary>vupkhsb</primary>
<secondary>vec_unpackh</secondary>
</indexterm>
<indexterm>
<primary>xxsldwi</primary>
<secondary>vec_unpackh</secondary>
</indexterm>
<indexterm>
<primary>xvcvspdp</primary>
<secondary>vec_unpackh</secondary>
</indexterm>
<table frame="all">
<title>Supported type signatures for vec_unpackh</title>
@ -35644,10 +35700,18 @@ xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="VIPR.vec-ref">
<para>vector float</para>
</entry>
<entry>
<programlisting>[TBD]</programlisting>
<programlisting>
xxsldwi t,a,a,3
xxsldwi u,a,t,2
xvcvspdp r,u
</programlisting>
</entry>
<entry>
<programlisting>[TBD]</programlisting>
<programlisting>
xxsldwi t,a,a,1
xxsldwi u,t,a,3
xvcvspdp r,u
</programlisting>
</entry>
<entry>
<para></para>
@ -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.
</para>
<para><emphasis role="bold">Notes:</emphasis></para>
<itemizedlist>
<listitem>
<para>
<emphasis>Issue #439 in the power-gcc github tracker is open
against wrong code produced by GCC for unpacking floats to
doubles.</emphasis>
</para>
</listitem>
<listitem>
<para>
No Power compilers yet support the vector _Float16 type, so that
interface is currently deferred.
</para>
</listitem>
</itemizedlist>
<para><emphasis role="bold">Notes:</emphasis>
No Power compilers yet support the vector _Float16 type, so that
interface is currently deferred.
</para>
<indexterm>
<primary>vupkhsh</primary>
@ -35782,6 +35834,14 @@ xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="VIPR.vec-ref">
<primary>vupklsb</primary>
<secondary>vec_unpackl</secondary>
</indexterm>
<indexterm>
<primary>xxsldwi</primary>
<secondary>vec_unpackl</secondary>
</indexterm>
<indexterm>
<primary>xvcvspdp</primary>
<secondary>vec_unpackl</secondary>
</indexterm>
<table frame="all">
<title>Supported type signatures for vec_unpackl</title>
@ -35972,10 +36032,18 @@ xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="VIPR.vec-ref">
<para>vector float</para>
</entry>
<entry>
<programlisting>[TBD]</programlisting>
<programlisting>
xxsldwi t,a,a,1
xxsldwi u,t,a,3
xvcvspdp r,u
</programlisting>
</entry>
<entry>
<programlisting>[TBD]</programlisting>
<programlisting>
xxsldwi t,a,a,3
xxsldwi u,a,t,2
xvcvspdp r,u
</programlisting>
</entry>
<entry>
<para></para>