Various updates

master
Bill Schmidt 3 years ago
parent c8feea2569
commit 49e3ac00e5

@ -800,11 +800,14 @@ a[3] = c;</programlisting>
<para><code><xref linkend="vec_bperm" xrefstyle="select:title nopage"/></code></para>
</entry>
<entry>
<para><code><xref linkend="vec_insert4b" xrefstyle="select:title nopage"/></code></para>
<para revisionflag="added">
<code><xref linkend="vec_inserth"
xrefstyle="select:title nopage"/></code>
</para>
</entry>
<entry>
<para revisionflag="added">
<code><xref linkend="vec_signextq"
<code><xref linkend="vec_signextll"
xrefstyle="select:title nopage"/></code>
</para>
</entry>
@ -814,10 +817,16 @@ a[3] = c;</programlisting>
<para><code><xref linkend="vec_cipher_be" xrefstyle="select:title nopage"/></code></para>
</entry>
<entry>
<para><code><xref linkend="vec_mergee" xrefstyle="select:title nopage"/></code></para>
<para revisionflag="added">
<code><xref linkend="vec_insertl"
xrefstyle="select:title nopage"/></code>
</para>
</entry>
<entry>
<para><code><xref linkend="vec_sld" xrefstyle="select:title nopage"/></code></para>
<para revisionflag="added">
<code><xref linkend="vec_signextq"
xrefstyle="select:title nopage"/></code>
</para>
</entry>
</row>
<row>
@ -825,10 +834,10 @@ a[3] = c;</programlisting>
<para><code><xref linkend="vec_cipherlast_be" xrefstyle="select:title nopage"/></code></para>
</entry>
<entry>
<para><code><xref linkend="vec_mergeh" xrefstyle="select:title nopage"/></code></para>
<para><code><xref linkend="vec_mergee" xrefstyle="select:title nopage"/></code></para>
</entry>
<entry>
<para><code><xref linkend="vec_sldw" xrefstyle="select:title nopage"/></code></para>
<para><code><xref linkend="vec_sld" xrefstyle="select:title nopage"/></code></para>
</entry>
</row>
<row>
@ -839,10 +848,13 @@ a[3] = c;</programlisting>
</para>
</entry>
<entry>
<para><code><xref linkend="vec_mergel" xrefstyle="select:title nopage"/></code></para>
<para><code><xref linkend="vec_mergeh" xrefstyle="select:title nopage"/></code></para>
</entry>
<entry>
<para><code><xref linkend="vec_sll" xrefstyle="select:title nopage"/></code></para>
<para revisionflag="added">
<code><xref linkend="vec_sldb" xrefstyle="select:title
nopage"/></code>
</para>
</entry>
</row>
<row>
@ -853,10 +865,10 @@ a[3] = c;</programlisting>
</para>
</entry>
<entry>
<para><code><xref linkend="vec_mergeo" xrefstyle="select:title nopage"/></code></para>
<para><code><xref linkend="vec_mergel" xrefstyle="select:title nopage"/></code></para>
</entry>
<entry>
<para><code><xref linkend="vec_slo" xrefstyle="select:title nopage"/></code></para>
<para><code><xref linkend="vec_sldw" xrefstyle="select:title nopage"/></code></para>
</entry>
</row>
<row>
@ -864,10 +876,10 @@ a[3] = c;</programlisting>
<para><code><xref linkend="vec_doublee" xrefstyle="select:title nopage"/></code></para>
</entry>
<entry>
<para><code><xref linkend="vec_mfvscr" xrefstyle="select:title nopage"/></code></para>
<para><code><xref linkend="vec_mergeo" xrefstyle="select:title nopage"/></code></para>
</entry>
<entry>
<para><code><xref linkend="vec_slv" xrefstyle="select:title nopage"/></code></para>
<para><code><xref linkend="vec_sll" xrefstyle="select:title nopage"/></code></para>
</entry>
</row>
<row>
@ -875,10 +887,10 @@ a[3] = c;</programlisting>
<para><code><xref linkend="vec_doubleh" xrefstyle="select:title nopage"/></code></para>
</entry>
<entry>
<para><code><xref linkend="vec_mule" xrefstyle="select:title nopage"/></code></para>
<para><code><xref linkend="vec_mfvscr" xrefstyle="select:title nopage"/></code></para>
</entry>
<entry>
<para><code><xref linkend="vec_splat" xrefstyle="select:title nopage"/></code></para>
<para><code><xref linkend="vec_slo" xrefstyle="select:title nopage"/></code></para>
</entry>
</row>
<row>
@ -886,10 +898,10 @@ a[3] = c;</programlisting>
<para><code><xref linkend="vec_doublel" xrefstyle="select:title nopage"/></code></para>
</entry>
<entry>
<para><code><xref linkend="vec_mulo" xrefstyle="select:title nopage"/></code></para>
<para><code><xref linkend="vec_mule" xrefstyle="select:title nopage"/></code></para>
</entry>
<entry>
<para><code><xref linkend="vec_srl" xrefstyle="select:title nopage"/></code></para>
<para><code><xref linkend="vec_slv" xrefstyle="select:title nopage"/></code></para>
</entry>
</row>
<row>
@ -897,10 +909,10 @@ a[3] = c;</programlisting>
<para><code><xref linkend="vec_doubleo" xrefstyle="select:title nopage"/></code></para>
</entry>
<entry>
<para><code><xref linkend="vec_ncipher_be" xrefstyle="select:title nopage"/></code></para>
<para><code><xref linkend="vec_mulo" xrefstyle="select:title nopage"/></code></para>
</entry>
<entry>
<para><code><xref linkend="vec_sro" xrefstyle="select:title nopage"/></code></para>
<para><code><xref linkend="vec_splat" xrefstyle="select:title nopage"/></code></para>
</entry>
</row>
<row>
@ -908,10 +920,13 @@ a[3] = c;</programlisting>
<para><code><xref linkend="vec_extract" xrefstyle="select:title nopage"/></code></para>
</entry>
<entry>
<para><code><xref linkend="vec_ncipherlast_be" xrefstyle="select:title nopage"/></code></para>
<para><code><xref linkend="vec_ncipher_be" xrefstyle="select:title nopage"/></code></para>
</entry>
<entry>
<para><code><xref linkend="vec_srv" xrefstyle="select:title nopage"/></code></para>
<para revisionflag="added">
<code><xref linkend="vec_splati_ins"
xrefstyle="select:title nopage"/></code>
</para>
</entry>
</row>
<row>
@ -919,12 +934,12 @@ a[3] = c;</programlisting>
<para><code><xref linkend="vec_extract_fp32_from_shorth" xrefstyle="select:title nopage"/></code></para>
</entry>
<entry>
<para><code><xref linkend="vec_pack" xrefstyle="select:title nopage"/></code></para>
<para><code><xref linkend="vec_ncipherlast_be" xrefstyle="select:title nopage"/></code></para>
</entry>
<entry>
<para revisionflag="added">
<code><xref linkend="vec_stril"
xrefstyle="select:title nopage"/></code>
<code><xref linkend="vec_srdb" xrefstyle="select:title
nopage"/></code>
</para>
</entry>
</row>
@ -933,13 +948,10 @@ a[3] = c;</programlisting>
<para><code><xref linkend="vec_extract_fp32_from_shortl" xrefstyle="select:title nopage"/></code></para>
</entry>
<entry>
<para><code><xref linkend="vec_pack_to_short_fp32" xrefstyle="select:title nopage"/></code></para>
<para><code><xref linkend="vec_pack" xrefstyle="select:title nopage"/></code></para>
</entry>
<entry>
<para revisionflag="added">
<code><xref linkend="vec_stril_p"
xrefstyle="select:title nopage"/></code>
</para>
<para><code><xref linkend="vec_srl" xrefstyle="select:title nopage"/></code></para>
</entry>
</row>
<row>
@ -947,110 +959,153 @@ a[3] = c;</programlisting>
<para><code><xref linkend="vec_extract4b" xrefstyle="select:title nopage"/></code></para>
</entry>
<entry>
<para><code><xref linkend="vec_packpx" xrefstyle="select:title nopage"/></code></para>
<para><code><xref linkend="vec_pack_to_short_fp32" xrefstyle="select:title nopage"/></code></para>
</entry>
<entry>
<para><code><xref linkend="vec_sro" xrefstyle="select:title nopage"/></code></para>
</entry>
</row>
<row>
<entry>
<para revisionflag="added">
<code><xref linkend="vec_strir"
xrefstyle="select:title nopage"/></code>
</para>
<code><xref linkend="vec_extracth"
xrefstyle="select:title nopage"/></code>
</para>
</entry>
<entry>
<para><code><xref linkend="vec_packpx" xrefstyle="select:title nopage"/></code></para>
</entry>
<entry>
<para><code><xref linkend="vec_srv" xrefstyle="select:title nopage"/></code></para>
</entry>
</row>
<row>
<entry>
<para><code><xref linkend="vec_first_match_index" xrefstyle="select:title nopage"/></code></para>
<para revisionflag="added">
<code><xref linkend="vec_extractl"
xrefstyle="select:title nopage"/></code>
</para>
</entry>
<entry>
<para><code><xref linkend="vec_packs" xrefstyle="select:title nopage"/></code></para>
</entry>
<entry>
<para revisionflag="added">
<code><xref linkend="vec_strir_p"
<code><xref linkend="vec_stril"
xrefstyle="select:title nopage"/></code>
</para>
</entry>
</row>
<row>
<entry>
<para><code><xref linkend="vec_first_match_or_eos_index" xrefstyle="select:title nopage"/></code></para>
<para><code><xref linkend="vec_first_match_index" xrefstyle="select:title nopage"/></code></para>
</entry>
<entry>
<para><code><xref linkend="vec_packsu" xrefstyle="select:title nopage"/></code></para>
</entry>
<entry>
<para><code><xref linkend="vec_sum2s" xrefstyle="select:title nopage"/></code></para>
<para revisionflag="added">
<code><xref linkend="vec_stril_p"
xrefstyle="select:title nopage"/></code>
</para>
</entry>
</row>
<row>
<entry>
<para><code><xref linkend="vec_first_mismatch_index" xrefstyle="select:title nopage"/></code></para>
<para><code><xref linkend="vec_first_match_or_eos_index" xrefstyle="select:title nopage"/></code></para>
</entry>
<entry>
<para><code><xref linkend="vec_perm" xrefstyle="select:title nopage"/></code></para>
</entry>
<entry>
<para><code><xref linkend="vec_sums" xrefstyle="select:title nopage"/></code></para>
<para revisionflag="added">
<code><xref linkend="vec_strir"
xrefstyle="select:title nopage"/></code>
</para>
</entry>
</row>
<row>
<entry>
<para><code><xref linkend="vec_first_mismatch_or_eos_index" xrefstyle="select:title nopage"/></code></para>
</entry>
<entry>
<para><code><xref linkend="vec_permxor" xrefstyle="select:title nopage"/></code></para>
<para><code><xref linkend="vec_first_mismatch_index" xrefstyle="select:title nopage"/></code></para>
</entry>
<entry>
<para><code><xref linkend="vec_unpackh"
xrefstyle="select:title nopage"/></code></para>
<para revisionflag="added">
<code><xref linkend="vec_permx"
xrefstyle="select:title nopage"/></code>
</para>
</entry>
<entry>
<para revisionflag="added">
<code><xref linkend="vec_strir_p"
xrefstyle="select:title nopage"/></code>
</para>
</entry>
</row>
<row>
<entry>
<para><code><xref linkend="vec_float2" xrefstyle="select:title nopage"/></code></para>
<para><code><xref linkend="vec_first_mismatch_or_eos_index" xrefstyle="select:title nopage"/></code></para>
</entry>
<entry>
<para><code><xref linkend="vec_pmsum_be" xrefstyle="select:title nopage"/></code></para>
<para><code><xref linkend="vec_permxor" xrefstyle="select:title nopage"/></code></para>
</entry>
<entry>
<para><code><xref linkend="vec_unpackl" xrefstyle="select:title nopage"/></code></para>
<para><code><xref linkend="vec_sum2s" xrefstyle="select:title nopage"/></code></para>
</entry>
</row>
<row>
<entry>
<para><code><xref linkend="vec_floate" xrefstyle="select:title nopage"/></code></para>
<para><code><xref linkend="vec_float2" xrefstyle="select:title nopage"/></code></para>
</entry>
<entry>
<para><code><xref linkend="vec_reve" xrefstyle="select:title nopage"/></code></para>
<para><code><xref linkend="vec_pmsum_be" xrefstyle="select:title nopage"/></code></para>
</entry>
<entry>
<para><code><xref linkend="vec_unsigned2" xrefstyle="select:title nopage"/></code></para>
<para><code><xref linkend="vec_sums" xrefstyle="select:title nopage"/></code></para>
</entry>
</row>
<row>
<entry>
<para><code><xref linkend="vec_floato" xrefstyle="select:title nopage"/></code></para>
<para><code><xref linkend="vec_floate" xrefstyle="select:title nopage"/></code></para>
</entry>
<entry>
<para><code><xref linkend="vec_sbox_be" xrefstyle="select:title nopage"/></code></para>
<para revisionflag="added">
<code><xref linkend="vec_replace_elt"
xrefstyle="select:title nopage"/></code>
</para>
</entry>
<entry>
<para><code><xref linkend="vec_unpackh"
xrefstyle="select:title nopage"/></code></para>
</entry>
</row>
<row>
<entry>
<para><code><xref linkend="vec_unsignede" xrefstyle="select:title nopage"/></code></para>
<para><code><xref linkend="vec_floato" xrefstyle="select:title nopage"/></code></para>
</entry>
<entry>
<para revisionflag="added">
<code><xref linkend="vec_replace_unaligned"
xrefstyle="select:title nopage"/></code>
</para>
</entry>
</row>
<row>
<entry>
<para><code><xref linkend="vec_unpackl" xrefstyle="select:title nopage"/></code></para>
</entry>
</row>
<row>
<entry>
<para revisionflag="added">
<code><xref linkend="vec_genbm"
xrefstyle="select:title nopage"/></code>
</para>
</entry>
<entry>
<para><code><xref linkend="vec_shasigma_be" xrefstyle="select:title nopage"/></code></para>
</entry>
</entry>
<entry>
<para><code><xref linkend="vec_reve" xrefstyle="select:title nopage"/></code></para>
</entry>
<entry>
<para><code><xref linkend="vec_unsignedo" xrefstyle="select:title nopage"/></code></para>
<para><code><xref linkend="vec_unsigned2" xrefstyle="select:title nopage"/></code></para>
</entry>
</row>
</row>
<row>
<entry>
<para revisionflag="added">
@ -1059,10 +1114,10 @@ a[3] = c;</programlisting>
</para>
</entry>
<entry>
<para><code><xref linkend="vec_signed2" xrefstyle="select:title nopage"/></code></para>
<para><code><xref linkend="vec_sbox_be" xrefstyle="select:title nopage"/></code></para>
</entry>
<entry>
<para><code><xref linkend="vec_xl" xrefstyle="select:title nopage"/></code> (ISA 2.07 only)</para>
<para><code><xref linkend="vec_unsignede" xrefstyle="select:title nopage"/></code></para>
</entry>
</row>
<row>
@ -1073,11 +1128,11 @@ a[3] = c;</programlisting>
</para>
</entry>
<entry>
<para><code><xref linkend="vec_signede" xrefstyle="select:title nopage"/></code></para>
<para><code><xref linkend="vec_shasigma_be" xrefstyle="select:title nopage"/></code></para>
</entry>
<entry>
<para><code><xref linkend="vec_unsignedo" xrefstyle="select:title nopage"/></code></para>
</entry>
<entry>
<para><code><xref linkend="vec_xl_be" xrefstyle="select:title nopage"/></code></para>
</entry>
</row>
<row>
<entry>
@ -1087,11 +1142,11 @@ a[3] = c;</programlisting>
</para>
</entry>
<entry>
<para><code><xref linkend="vec_signedo" xrefstyle="select:title nopage"/></code></para>
<para><code><xref linkend="vec_signed2" xrefstyle="select:title nopage"/></code></para>
</entry>
<entry>
<para><code><xref linkend="vec_xl" xrefstyle="select:title nopage"/></code> (ISA 2.07 only)</para>
</entry>
<entry>
<para><code><xref linkend="vec_xst" xrefstyle="select:title nopage"/></code> (ISA 2.07 only)</para>
</entry>
</row>
<row>
<entry>
@ -1101,26 +1156,35 @@ a[3] = c;</programlisting>
</para>
</entry>
<entry>
<para revisionflag="added">
<code><xref linkend="vec_signexti"
xrefstyle="select:title nopage"/></code>
</para>
<para><code><xref linkend="vec_signede" xrefstyle="select:title nopage"/></code></para>
</entry>
<entry>
<para><code><xref linkend="vec_xst_be" xrefstyle="select:title nopage"/></code></para>
<para><code><xref linkend="vec_xl_be" xrefstyle="select:title nopage"/></code></para>
</entry>
</row>
<row>
<entry>
<para><code><xref linkend="vec_insert" xrefstyle="select:title nopage"/></code></para>
</entry>
<entry>
<para><code><xref linkend="vec_signedo" xrefstyle="select:title nopage"/></code></para>
</entry>
<entry>
<para><code><xref linkend="vec_xst" xrefstyle="select:title nopage"/></code> (ISA 2.07 only)</para>
</entry>
</row>
<row>
<entry>
<para><code><xref linkend="vec_insert4b" xrefstyle="select:title nopage"/></code></para>
</entry>
<entry>
<para revisionflag="added">
<code><xref linkend="vec_signextll"
<code><xref linkend="vec_signexti"
xrefstyle="select:title nopage"/></code>
</para>
</entry>
<entry>
<para><code><xref linkend="vec_xst_be" xrefstyle="select:title nopage"/></code></para>
</entry>
</row>
</tbody>

@ -38,9 +38,10 @@
<code>4i</code> to <code>4i+3</code> as scratch space. That is,
when <code>ACC[i]</code> contains defined data, the contents of
VSRs <code>4i</code> to <code>4i+3</code> are undefined until
either an <code>xxmfacc</code> instruction is used to copy the
contents of <code>ACC[i]</code> to the VSRs, or some other
instruction directly writes to one of these VSRs.
an <code>xxmfacc</code> instruction is used to copy the contents
of <code>ACC[i]</code> to the VSRs. Writing to a VSR associated
with <code>ACC[i]</code> that contains defined data will cause
<code>ACC[i]</code> to become undefined.
</para>
<para>
This reference is not intended to be a complete introduction to
@ -50,7 +51,8 @@
</para>
<para>
<emphasis role="bold">Review status:</emphasis> Chapter reviewed
by Paul Clarke; changes made.
by Paul Clarke; changes made. Chapter reviewed by Peter
Bergner; changes made.
</para>
</section>

@ -154,19 +156,18 @@
<section>
<title>Assembly and Disassembly of Large Types</title>
<para>
The following builtins are used to construct
The following intrinsics are used to construct
<code>__vector_pair</code> and <code>__vector_quad</code>
objects from 128-bit vectors, and deconstruct them into such
vectors. The disassembly interfaces place the results into
arrays of vectors.
</para>
<para>
FIXME: I've chosen not to include sample code generation here,
but I can be persuaded if folks think that's useful.
</para>
<para>
FIXME: Peter to provide some wording about semantics and
deprecation? I am not sure I have the latest information.
arrays of vectors using natural element order. The build
interfaces treat the vector input arguments as if they form an
array of vectors, with the first vector argument being array
element 0 in natural element order, the second vector argument
being array element 1, and so forth. The assemble interfaces
are deprecated because they do not give consistent results for
big- and little-endian targets, and users should use the build
interfaces instead.
</para>
<para>
<informaltable frame="all">
@ -250,20 +251,10 @@
</para>
</section>
<section>
<title>Accumulator Move Operations</title>
<title>Accumulator Clear Operation</title>
<para>
These instructions move data from vector quads to accumulators
(a "priming" operation) or vice versa ( a "depriming"
operation), or initialize an accumulator to zeros.
This intrinsic function initializes an accumulator to zeros.
</para>
<indexterm>
<primary>xxmfacc</primary>
<secondary>__builtin_mma_xxmfacc</secondary>
</indexterm>
<indexterm>
<primary>xxmtacc</primary>
<secondary>__builtin_mma_xxmtacc</secondary>
</indexterm>
<indexterm>
<primary>xxsetaccz</primary>
<secondary>__builtin_mma_xxsetaccz</secondary>
@ -287,30 +278,6 @@
<row>
<entry>
<programlisting>
void __builtin_mma_xxmfacc (__vector_quad* a)
</programlisting>
</entry>
<entry>
<programlisting>
xxmfacc a
</programlisting>
</entry>
</row>
<row>
<entry>
<programlisting>
void __builtin_mma_xxmtacc (__vector_quad* a)
</programlisting>
</entry>
<entry>
<programlisting>
xxmtacc a
</programlisting>
</entry>
</row>
<row>
<entry>
<programlisting>
void __builtin_mma_xxsetaccz (__vector_quad* a)
</programlisting>
</entry>
@ -486,22 +453,6 @@
<primary>pmxvi16ger2spp</primary>
<secondary>__builtin_mma_pmxvi64ger2spp</secondary>
</indexterm>
<indexterm>
<primary>pmxvi64ger2</primary>
<secondary>__builtin_mma_pmxvi64ger2</secondary>
</indexterm>
<indexterm>
<primary>pmxvi64ger2pp</primary>
<secondary>__builtin_mma_pmxvi64ger2pp</secondary>
</indexterm>
<indexterm>
<primary>pmxvi64ger2s</primary>
<secondary>__builtin_mma_pmxvi64ger2s</secondary>
</indexterm>
<indexterm>
<primary>pmxvi64ger2spp</primary>
<secondary>__builtin_mma_pmxvi64ger2spp</secondary>
</indexterm>
<indexterm>
<primary>pmxvi4ger8</primary>
<secondary>__builtin_mma_pmxvi4ger8</secondary>
@ -993,62 +944,6 @@
<row>
<entry>
<programlisting>
void __builtin_mma_pmxvi64ger2 (__vector_quad* a, vuc b, vuc c,
const int d, const int e, const int f)
</programlisting>
</entry>
<entry>
<programlisting>
pmxvi64ger2 a,b,c,d,e,f

</programlisting>
</entry>
</row>
<row>
<entry>
<programlisting>
void __builtin_mma_pmxvi64ger2pp (__vector_quad* a, vuc b, vuc c,
const int d, const int e, const int f)
</programlisting>
</entry>
<entry>
<programlisting>
pmxvi64ger2pp a,b,c,d,e,f

</programlisting>
</entry>
</row>
<row>
<entry>
<programlisting>
void __builtin_mma_pmxvi64ger2s (__vector_quad* a, vuc b, vuc c,
const int d, const int e, const int f)
</programlisting>
</entry>
<entry>
<programlisting>
pmxvi64ger2s a,b,c,d,e,f

</programlisting>
</entry>
</row>
<row>
<entry>
<programlisting>
void __builtin_mma_pmxvi64ger2spp (__vector_quad* a, vuc b, vuc c,
const int d, const int e, const int f)
</programlisting>
</entry>
<entry>
<programlisting>
pmxvi64ger2spp a,b,c,d,e,f

</programlisting>
</entry>
</row>
<row>
<entry>
<programlisting>
void __builtin_mma_pmxvi4ger8 (__vector_quad* a, vuc b, vuc c,
const int d, const int e, const int f)
</programlisting>

@ -151,6 +151,15 @@ xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="VIPR.vec-ref">
</para>
</listitem>
</itemizedlist>
<para revisionflag="added">
Note that this document does not make distinctions about
availability of intrinsic functions prior to ISA 2.07, as
implemented on POWER8 processors. Many intrinsics not
restricted to ISA 3.0 or later are also available on earlier
processor generations. However, any interfaces that make use
of "vector long long" data types are only available beginning
with ISA 2.07.
</para>
<section>
<title>Terminology</title>
<para>
@ -28589,6 +28598,12 @@ xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="VIPR.vec-ref">
<para><emphasis role="bold">Endian considerations:</emphasis>
None.
</para>
<para revisionflag="added"><emphasis role="bold">Notes:</emphasis>
For floating-point types, if both source elements contain signed
zeros, or if either source element contains a NaN, it is
undefined which of the two source elements is copied into the
corresponding result element.
</para>
<indexterm>
<primary>vminsb</primary>
@ -55773,7 +55788,7 @@ xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="VIPR.vec-ref">
</section>

<?hard-pagebreak?>
<section xml:id="VIPR.reference.fortfns">
<section xml:id="VIPR.reference.fortfns" revisionflag="added">
<title>Built-In Vector Functions for Fortran</title>

<para>

Loading…
Cancel
Save