You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
51619 lines
1.6 MiB
51619 lines
1.6 MiB
<!-- |
|
Copyright (c) 2019-2021 OpenPOWER Foundation |
|
|
|
Licensed under the Apache License, Version 2.0 (the "License"); |
|
you may not use this file except in compliance with the License. |
|
You may obtain a copy of the License at |
|
|
|
http://www.apache.org/licenses/LICENSE-2.0 |
|
|
|
Unless required by applicable law or agreed to in writing, software |
|
distributed under the License is distributed on an "AS IS" BASIS, |
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
|
See the License for the specific language governing permissions and |
|
limitations under the License. |
|
|
|
--> |
|
<chapter version="5.0" xml:lang="en" xmlns="http://docbook.org/ns/docbook" xmlns:xi="http://www.w3.org/2001/XInclude" |
|
xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="VIPR.vec-ref"> |
|
|
|
<!-- Chapter Title goes here. --> |
|
<title>Vector Intrinsic Reference</title> |
|
|
|
<section> |
|
<title>How to Use This Reference</title> |
|
<para> |
|
This chapter contains reference material for each supported |
|
vector intrinsic. The information for each intrinsic includes: |
|
</para> |
|
<itemizedlist> |
|
<listitem> |
|
<para> |
|
The intrinsic name and extended name; |
|
</para> |
|
</listitem> |
|
<listitem> |
|
<para> |
|
A type-free example of the intrinsic's usage; |
|
</para> |
|
</listitem> |
|
<listitem> |
|
<para> |
|
A description of the intrinsic's purpose; |
|
</para> |
|
</listitem> |
|
<listitem> |
|
<para> |
|
A description of the value(s) returned from the intrinsic, |
|
if any; |
|
</para> |
|
</listitem> |
|
<listitem> |
|
<para> |
|
A description of any unusual characteristics of the |
|
intrinsic when different target endiannesses are in force. |
|
If the semantics of the intrinsic in big-endian and |
|
little-endian modes are identical, the description will read |
|
"None."; |
|
</para> |
|
</listitem> |
|
<listitem> |
|
<para> |
|
Optionally, additional explanatory notes about the |
|
intrinsic; and |
|
</para> |
|
</listitem> |
|
<listitem> |
|
<para> |
|
A table of supported type signatures for the intrinsic. |
|
</para> |
|
</listitem> |
|
</itemizedlist> |
|
<para> |
|
Most intrinsics are overloaded, supporting multiple type |
|
signatures. The types of the input arguments always determine |
|
the type of the result argument; that is, it is not possible to |
|
define two intrinsic overloads with the same input argument |
|
types and different result argument types. |
|
</para> |
|
<para> |
|
The type-free example of the intrinsic's usage uses the |
|
convention that <emphasis role="bold">r</emphasis> represents |
|
the result of the intrinsic, and <emphasis |
|
role="bold">a</emphasis>, <emphasis role="bold">b</emphasis>, |
|
etc., represent the input arguments. The allowed type |
|
combinations of these variables are shown as rows in the table |
|
of supported type signatures. |
|
</para> |
|
<para> |
|
Each row contains at least one example implementation. This |
|
shows one way that a conforming compiler might achieve the |
|
intended semantics of the intrinsic, but compilers are not |
|
required to generate this code specifically. The letters |
|
<emphasis role="bold">r</emphasis>, <emphasis |
|
role="bold">a</emphasis>, <emphasis role="bold">b</emphasis>, |
|
etc., in the examples represent vector registers containing the |
|
values of those variables. The letters <emphasis |
|
role="bold">t</emphasis>, <emphasis role="bold">u</emphasis>, |
|
etc., represent vector registers containing temporary |
|
intermediate results. The same register is assumed to be used |
|
for each instance of one of these letters. |
|
</para> |
|
<para> |
|
When implementations differ for big- and little-endian targets, |
|
separate example implementations are shown for each endianness. |
|
</para> |
|
<para> |
|
The implementations show a sequence of instructions that may be |
|
used in the implementation of a particular intrinsic, and |
|
usually include vector instructions. When trying to |
|
determine which intrinsic to use, it can be useful to have a |
|
cross-reference from a specific vector instruction to the |
|
intrinsics whose implementations make use of it. This manual |
|
contains such a cross-reference (<xref |
|
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. The Power Vector Library |
|
(see <xref linkend="VIPR.intro.links" /> provides equivalent |
|
POWER7/POWER8 implementations for many ISA 3.0 vector |
|
instructions, which may be preferred for portability. |
|
</para> |
|
</listitem> |
|
<listitem revisionflag="added"> |
|
<para> |
|
<emphasis role="bold">ISA 3.1 or later</emphasis>. This form |
|
is only available starting with PowerISA 3.1, corresponding to |
|
POWER10 servers. |
|
</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> |
|
<title>Terminology</title> |
|
<para> |
|
Some intrinsic descriptions indicate that either |
|
<emphasis>modular</emphasis> arithmetic or |
|
<emphasis>saturating</emphasis> arithmetic is used. This |
|
refers to what happens when an operation overflows the number |
|
of available bits. A modular operation that overflows |
|
truncates the result on the left, also known as wrapping the |
|
result. A saturating operation that overflows produces the |
|
largest (or smallest) possible result representable in the |
|
output element type. |
|
</para> |
|
<para> |
|
Operands are sometimes represented as having a <code>const |
|
int</code> type. In such cases, the programmer is expected to |
|
provide an integer literal. When the literal has specific |
|
required bounds, this is often represented instead by such |
|
phrases as "5-bit signed literal" or "2-bit unsigned literal" |
|
to specify them. In such cases, compilers are encouraged to |
|
at least warn upon detecting an out-of-range value. Providing |
|
a variable when a literal is required is a compile-time error. |
|
</para> |
|
</section> |
|
</section> |
|
|
|
<?hard-pagebreak?> |
|
<section xml:id="VIPR.reference.vecfns"> |
|
<title>Built-In Vector Functions</title> |
|
|
|
<section xml:id="vec_abs"> |
|
<title>vec_abs</title> |
|
<subtitle>Vector Absolute Value</subtitle> |
|
<programlisting> |
|
r = vec_abs (a) |
|
</programlisting> |
|
|
|
<para><emphasis role="bold">Purpose:</emphasis> |
|
Returns a vector <emphasis role="bold">r</emphasis> that contains the |
|
absolute values of the contents of the vector |
|
<emphasis role="bold">a</emphasis>. |
|
</para> |
|
<para><emphasis role="bold">Result value:</emphasis> |
|
The value of each element of <emphasis role="bold">r</emphasis> is the |
|
absolute value of the corresponding element of |
|
<emphasis role="bold">a</emphasis>. For integer vectors, the arithmetic |
|
is modular. |
|
</para> |
|
<para><emphasis role="bold">Endian considerations:</emphasis> |
|
None. |
|
</para> |
|
|
|
<indexterm> |
|
<primary>vspltisw</primary> |
|
<secondary>vec_abs</secondary> |
|
</indexterm> |
|
<indexterm> |
|
<primary>vsububm</primary> |
|
<secondary>vec_abs</secondary> |
|
</indexterm> |
|
<indexterm> |
|
<primary>vmaxsb</primary> |
|
<secondary>vec_abs</secondary> |
|
</indexterm> |
|
<indexterm> |
|
<primary>vsubuwm</primary> |
|
<secondary>vec_abs</secondary> |
|
</indexterm> |
|
<indexterm> |
|
<primary>vmaxsw</primary> |
|
<secondary>vec_abs</secondary> |
|
</indexterm> |
|
<indexterm> |
|
<primary>vsubudm</primary> |
|
<secondary>vec_abs</secondary> |
|
</indexterm> |
|
<indexterm> |
|
<primary>vmaxsd</primary> |
|
<secondary>vec_abs</secondary> |
|
</indexterm> |
|
<indexterm> |
|
<primary>xvabssp</primary> |
|
<secondary>vec_abs</secondary> |
|
</indexterm> |
|
<indexterm> |
|
<primary>xvabsdp</primary> |
|
<secondary>vec_abs</secondary> |
|
</indexterm> |
|
|
|
<table frame="all"> |
|
<title>Supported type signatures for vec_abs</title> |
|
<tgroup cols="3"> |
|
<colspec colname="c1" colwidth="20*" /> |
|
<colspec colname="c2" colwidth="20*" /> |
|
<colspec colname="c3" colwidth="20*" /> |
|
<thead> |
|
<row> |
|
<entry align="center"> |
|
<para> |
|
<emphasis role="bold">r</emphasis> |
|
</para> |
|
</entry> |
|
<entry align="center"> |
|
<para> |
|
<emphasis role="bold">a</emphasis> |
|
</para> |
|
</entry> |
|
<entry align="center"> |
|
<para> |
|
<emphasis role="bold">Example Implementation</emphasis> |
|
</para> |
|
</entry> |
|
</row> |
|
</thead> |
|
<tbody> |
|
<row> |
|
<entry align="center" valign="middle"> |
|
<para>vector signed char</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para>vector signed char</para> |
|
</entry> |
|
<entry> |
|
<programlisting> |
|
vspltisw t,0 |
|
vsububm t,t,a |
|
vmaxsb r,t,a |
|
</programlisting> |
|
</entry> |
|
</row> |
|
<row> |
|
<entry align="center" valign="middle"> |
|
<para>vector signed short</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para>vector signed short</para> |
|
</entry> |
|
<entry> |
|
<programlisting> |
|
vspltisw t,0 |
|
vsubuhm t,t,a |
|
vmaxsh r,t,a |
|
</programlisting> |
|
</entry> |
|
</row> |
|
<row> |
|
<entry align="center" valign="middle"> |
|
<para>vector signed int</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para>vector signed int</para> |
|
</entry> |
|
<entry> |
|
<programlisting> |
|
vspltisw t,0 |
|
vsubuwm t,t,a |
|
vmaxsw r,t,a |
|
</programlisting> |
|
</entry> |
|
</row> |
|
<row> |
|
<entry align="center" valign="middle"> |
|
<para>vector signed long long</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para>vector signed long long</para> |
|
</entry> |
|
<entry> |
|
<programlisting> |
|
vspltisw t,0 |
|
vsubudm t,t,a |
|
vmaxsd r,t,a |
|
</programlisting> |
|
</entry> |
|
</row> |
|
<row> |
|
<entry align="center" valign="middle"> |
|
<para>vector float</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para>vector float</para> |
|
</entry> |
|
<entry> |
|
<programlisting> |
|
xvabssp r,a |
|
</programlisting> |
|
</entry> |
|
</row> |
|
<row> |
|
<entry align="center" valign="middle"> |
|
<para>vector double</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para>vector double</para> |
|
</entry> |
|
<entry> |
|
<programlisting> |
|
xvabsdp r,a |
|
</programlisting> |
|
</entry> |
|
</row> |
|
</tbody> |
|
</tgroup> |
|
</table> |
|
|
|
</section> |
|
|
|
<?hard-pagebreak?> |
|
<section xml:id="vec_absd"> |
|
<title>vec_absd</title> |
|
<subtitle>Vector Absolute Difference</subtitle> |
|
<programlisting> |
|
r = vec_absd (a, b) |
|
</programlisting> |
|
|
|
<para><emphasis role="bold">Purpose:</emphasis> |
|
Computes the absolute difference of two vectors. |
|
</para> |
|
<para><emphasis role="bold">Result value:</emphasis> |
|
The value of each element of <emphasis role="bold">r</emphasis> is the |
|
absolute difference of the corresponding elements of <emphasis |
|
role="bold">a</emphasis> and <emphasis role="bold">b</emphasis>, using |
|
modular arithmetic. |
|
</para> |
|
<para><emphasis role="bold">Endian considerations:</emphasis> |
|
None. |
|
</para> |
|
|
|
<indexterm> |
|
<primary>vabsdub</primary> |
|
<secondary>vec_absd</secondary> |
|
</indexterm> |
|
<indexterm> |
|
<primary>vabsduh</primary> |
|
<secondary>vec_absd</secondary> |
|
</indexterm> |
|
<indexterm> |
|
<primary>vabsduw</primary> |
|
<secondary>vec_absd</secondary> |
|
</indexterm> |
|
|
|
<table frame="all"> |
|
<title>Supported type signatures for vec_absd</title> |
|
<tgroup cols="5"> |
|
<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*" /> |
|
<thead> |
|
<row> |
|
<entry align="center" valign="middle"> |
|
<para> |
|
<emphasis role="bold">r</emphasis> |
|
</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para> |
|
<emphasis role="bold">a</emphasis> |
|
</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para> |
|
<emphasis role="bold">b</emphasis> |
|
</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para> |
|
<emphasis role="bold">Example Implementation</emphasis> |
|
</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para> |
|
<emphasis role="bold">Restrictions</emphasis> |
|
</para> |
|
</entry> |
|
</row> |
|
</thead> |
|
<tbody> |
|
<row> |
|
<entry align="center" valign="middle"> |
|
<para>vector unsigned char</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para>vector unsigned char</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para>vector unsigned char</para> |
|
</entry> |
|
<entry> |
|
<programlisting> |
|
vabsdub r,a,b |
|
</programlisting> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para>ISA 3.0 or later</para> |
|
</entry> |
|
</row> |
|
<row> |
|
<entry align="center" valign="middle"> |
|
<para>vector unsigned short</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para>vector unsigned short</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para>vector unsigned short</para> |
|
</entry> |
|
<entry> |
|
<programlisting> |
|
vabsduh r,a,b |
|
</programlisting> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para>ISA 3.0 or later</para> |
|
</entry> |
|
</row> |
|
<row> |
|
<entry align="center" valign="middle"> |
|
<para>vector unsigned int</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para>vector unsigned int</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para>vector unsigned int</para> |
|
</entry> |
|
<entry> |
|
<programlisting> |
|
vabsduw r,a,b |
|
</programlisting> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para>ISA 3.0 or later</para> |
|
</entry> |
|
</row> |
|
</tbody> |
|
</tgroup> |
|
</table> |
|
|
|
</section> |
|
|
|
<?hard-pagebreak?> |
|
<section xml:id="vec_abss"> |
|
<title>vec_abss</title> |
|
<subtitle>Vector Absolute Value Saturated</subtitle> |
|
<programlisting> |
|
r = vec_abss (a) |
|
</programlisting> |
|
|
|
<para><emphasis role="bold">Purpose:</emphasis> |
|
Returns a vector <emphasis role="bold">r</emphasis> that contains the |
|
saturated absolute values of the contents of the vector |
|
<emphasis role="bold">a</emphasis>. |
|
</para> |
|
<para><emphasis role="bold">Result value:</emphasis> |
|
The value of each element of <emphasis role="bold">r</emphasis> is the |
|
saturated absolute value of the corresponding element of |
|
<emphasis role="bold">a</emphasis>. |
|
</para> |
|
<para><emphasis role="bold">Endian considerations:</emphasis> |
|
None. |
|
</para> |
|
|
|
<indexterm> |
|
<primary>vspltisb</primary> |
|
<secondary>vec_abss</secondary> |
|
</indexterm> |
|
<indexterm> |
|
<primary>vsubsbs</primary> |
|
<secondary>vec_abss</secondary> |
|
</indexterm> |
|
<indexterm> |
|
<primary>vmaxsb</primary> |
|
<secondary>vec_abss</secondary> |
|
</indexterm> |
|
<indexterm> |
|
<primary>vspltish</primary> |
|
<secondary>vec_abss</secondary> |
|
</indexterm> |
|
<indexterm> |
|
<primary>vsubshs</primary> |
|
<secondary>vec_abss</secondary> |
|
</indexterm> |
|
<indexterm> |
|
<primary>vmaxsh</primary> |
|
<secondary>vec_abss</secondary> |
|
</indexterm> |
|
<indexterm> |
|
<primary>vspltisw</primary> |
|
<secondary>vec_abss</secondary> |
|
</indexterm> |
|
<indexterm> |
|
<primary>vsubsws</primary> |
|
<secondary>vec_abss</secondary> |
|
</indexterm> |
|
<indexterm> |
|
<primary>vmaxsw</primary> |
|
<secondary>vec_abss</secondary> |
|
</indexterm> |
|
|
|
|
|
<table frame="all"> |
|
<title>Supported type signatures for vec_abss</title> |
|
<tgroup cols="3"> |
|
<colspec colname="c1" colwidth="20*" /> |
|
<colspec colname="c2" colwidth="20*" /> |
|
<colspec colname="c3" colwidth="20*" /> |
|
<thead> |
|
<row> |
|
<entry align="center"> |
|
<para> |
|
<emphasis role="bold">r</emphasis> |
|
</para> |
|
</entry> |
|
<entry align="center"> |
|
<para> |
|
<emphasis role="bold">a</emphasis> |
|
</para> |
|
</entry> |
|
<entry align="center"> |
|
<para> |
|
<emphasis role="bold">Example Implementation</emphasis> |
|
</para> |
|
</entry> |
|
</row> |
|
</thead> |
|
<tbody> |
|
<row> |
|
<entry align="center" valign="middle"> |
|
<para>vector signed char</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para>vector signed char</para> |
|
</entry> |
|
<entry> |
|
<programlisting> |
|
vspltisb t,0 |
|
vsubsbs t,t,a |
|
vmaxsb r,t,a |
|
</programlisting> |
|
</entry> |
|
</row> |
|
<row> |
|
<entry align="center" valign="middle"> |
|
<para>vector signed short</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para>vector signed short</para> |
|
</entry> |
|
<entry> |
|
<programlisting> |
|
vspltish t,0 |
|
vsubshs t,t,a |
|
vmaxsh r,t,a |
|
</programlisting> |
|
</entry> |
|
</row> |
|
<row> |
|
<entry align="center" valign="middle"> |
|
<para>vector signed int</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para>vector signed int</para> |
|
</entry> |
|
<entry> |
|
<programlisting> |
|
vspltisw t,0 |
|
vsubsws t,t,a |
|
vmaxsw r,t,a |
|
</programlisting> |
|
</entry> |
|
</row> |
|
</tbody> |
|
</tgroup> |
|
</table> |
|
|
|
</section> |
|
|
|
<?hard-pagebreak?> |
|
<section xml:id="vec_add"> |
|
<title>vec_add</title> |
|
<subtitle>Vector Addition</subtitle> |
|
<programlisting> |
|
r = vec_add (a, b) |
|
</programlisting> |
|
|
|
<para><emphasis role="bold">Purpose:</emphasis> |
|
Computes the sum of two vectors. |
|
</para> |
|
<para><emphasis role="bold">Result value:</emphasis> |
|
The value of each element of <emphasis role="bold">r</emphasis> is the |
|
sum of the corresponding elements of <emphasis |
|
role="bold">a</emphasis> and <emphasis role="bold">b</emphasis>. Modular |
|
arithmetic is used for both signed and unsigned integers. |
|
</para> |
|
<para><emphasis role="bold">Endian considerations:</emphasis> |
|
None. |
|
</para> |
|
|
|
<indexterm> |
|
<primary>vaddubm</primary> |
|
<secondary>vec_add</secondary> |
|
</indexterm> |
|
<indexterm> |
|
<primary>vadduhm</primary> |
|
<secondary>vec_add</secondary> |
|
</indexterm> |
|
<indexterm> |
|
<primary>vadduwm</primary> |
|
<secondary>vec_add</secondary> |
|
</indexterm> |
|
<indexterm> |
|
<primary>vaddudm</primary> |
|
<secondary>vec_add</secondary> |
|
</indexterm> |
|
<indexterm> |
|
<primary>vadduqm</primary> |
|
<secondary>vec_add</secondary> |
|
</indexterm> |
|
<indexterm> |
|
<primary>xvaddsp</primary> |
|
<secondary>vec_add</secondary> |
|
</indexterm> |
|
<indexterm> |
|
<primary>xvadddp</primary> |
|
<secondary>vec_add</secondary> |
|
</indexterm> |
|
|
|
<table frame="all"> |
|
<title>Supported type signatures for vec_add</title> |
|
<tgroup cols="4"> |
|
<colspec colname="c1" colwidth="20*" /> |
|
<colspec colname="c2" colwidth="20*" /> |
|
<colspec colname="c3" colwidth="20*" /> |
|
<colspec colname="c4" colwidth="20*" /> |
|
<thead> |
|
<row> |
|
<entry align="center" valign="middle"> |
|
<para> |
|
<emphasis role="bold">r</emphasis> |
|
</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para> |
|
<emphasis role="bold">a</emphasis> |
|
</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para> |
|
<emphasis role="bold">b</emphasis> |
|
</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para> |
|
<emphasis role="bold">Example Implementation</emphasis> |
|
</para> |
|
</entry> |
|
</row> |
|
</thead> |
|
<tbody> |
|
<row> |
|
<entry align="center" valign="middle"> |
|
<para>vector signed char</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para>vector signed char</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para>vector signed char</para> |
|
</entry> |
|
<entry> |
|
<programlisting> |
|
vaddubm r,a,b |
|
</programlisting> |
|
</entry> |
|
</row> |
|
<row> |
|
<entry align="center" valign="middle"> |
|
<para>vector unsigned char</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para>vector unsigned char</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para>vector unsigned char</para> |
|
</entry> |
|
<entry> |
|
<programlisting> |
|
vaddubm r,a,b |
|
</programlisting> |
|
</entry> |
|
</row> |
|
<row> |
|
<entry align="center" valign="middle"> |
|
<para>vector signed short</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para>vector signed short</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para>vector signed short</para> |
|
</entry> |
|
<entry> |
|
<programlisting> |
|
vadduhm r,a,b |
|
</programlisting> |
|
</entry> |
|
</row> |
|
<row> |
|
<entry align="center" valign="middle"> |
|
<para>vector unsigned short</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para>vector unsigned short</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para>vector unsigned short</para> |
|
</entry> |
|
<entry> |
|
<programlisting> |
|
vadduhm r,a,b |
|
</programlisting> |
|
</entry> |
|
</row> |
|
<row> |
|
<entry align="center" valign="middle"> |
|
<para>vector signed int</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para>vector signed int</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para>vector signed int</para> |
|
</entry> |
|
<entry> |
|
<programlisting> |
|
vadduwm r,a,b |
|
</programlisting> |
|
</entry> |
|
</row> |
|
<row> |
|
<entry align="center" valign="middle"> |
|
<para>vector unsigned int</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para>vector unsigned int</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para>vector unsigned int</para> |
|
</entry> |
|
<entry> |
|
<programlisting> |
|
vadduwm r,a,b |
|
</programlisting> |
|
</entry> |
|
</row> |
|
<row> |
|
<entry align="center" valign="middle"> |
|
<para>vector signed long long</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para>vector signed long long</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para>vector signed long long</para> |
|
</entry> |
|
<entry> |
|
<programlisting> |
|
vaddudm r,a,b |
|
</programlisting> |
|
</entry> |
|
</row> |
|
<row> |
|
<entry align="center" valign="middle"> |
|
<para>vector unsigned long long</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para>vector unsigned long long</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para>vector unsigned long long</para> |
|
</entry> |
|
<entry> |
|
<programlisting> |
|
vaddudm r,a,b |
|
</programlisting> |
|
</entry> |
|
</row> |
|
<row> |
|
<entry align="center" valign="middle"> |
|
<para>vector signed __int128</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para>vector signed __int128</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para>vector signed __int128</para> |
|
</entry> |
|
<entry> |
|
<programlisting> |
|
vadduqm r,a,b |
|
</programlisting> |
|
</entry> |
|
</row> |
|
<row> |
|
<entry align="center" valign="middle"> |
|
<para>vector unsigned __int128</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para>vector unsigned __int128</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para>vector unsigned __int128</para> |
|
</entry> |
|
<entry> |
|
<programlisting> |
|
vadduqm r,a,b |
|
</programlisting> |
|
</entry> |
|
</row> |
|
<row> |
|
<entry align="center" valign="middle"> |
|
<para>vector float</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para>vector float</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para>vector float</para> |
|
</entry> |
|
<entry> |
|
<programlisting> |
|
xvaddsp r,a,b |
|
</programlisting> |
|
</entry> |
|
</row> |
|
<row> |
|
<entry align="center" valign="middle"> |
|
<para>vector double</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para>vector double</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para>vector double</para> |
|
</entry> |
|
<entry> |
|
<programlisting> |
|
xvadddp r,a,b |
|
</programlisting> |
|
</entry> |
|
</row> |
|
</tbody> |
|
</tgroup> |
|
</table> |
|
|
|
</section> |
|
|
|
<?hard-pagebreak?> |
|
<section xml:id="vec_addc"> |
|
<title>vec_addc</title> |
|
<subtitle>Vector Add Carrying</subtitle> |
|
<programlisting> |
|
r = vec_addc (a, b) |
|
</programlisting> |
|
|
|
<para><emphasis role="bold">Purpose:</emphasis> |
|
Returns a vector of carries produced by adding two vectors. |
|
</para> |
|
<para><emphasis role="bold">Result value:</emphasis> |
|
The value of each element of <emphasis role="bold">r</emphasis> is the |
|
carry produced by adding the corresponding elements of <emphasis |
|
role="bold">a</emphasis> and <emphasis role="bold">b</emphasis> (1 |
|
if there is a carry, 0 otherwise). |
|
</para> |
|
<para><emphasis role="bold">Endian considerations:</emphasis> |
|
None. |
|
</para> |
|
|
|
<indexterm> |
|
<primary>vaddcuw</primary> |
|
<secondary>vec_addc</secondary> |
|
</indexterm> |
|
<indexterm> |
|
<primary>vaddcuq</primary> |
|
<secondary>vec_addc</secondary> |
|
</indexterm> |
|
|
|
<table frame="all"> |
|
<title>Supported type signatures for vec_addc</title> |
|
<tgroup cols="4"> |
|
<colspec colname="c1" colwidth="20*" /> |
|
<colspec colname="c2" colwidth="20*" /> |
|
<colspec colname="c3" colwidth="20*" /> |
|
<colspec colname="c4" colwidth="20*" /> |
|
<thead> |
|
<row> |
|
<entry align="center" valign="middle"> |
|
<para> |
|
<emphasis role="bold">r</emphasis> |
|
</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para> |
|
<emphasis role="bold">a</emphasis> |
|
</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para> |
|
<emphasis role="bold">b</emphasis> |
|
</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para> |
|
<emphasis role="bold">Example Implementation</emphasis> |
|
</para> |
|
</entry> |
|
</row> |
|
</thead> |
|
<tbody> |
|
<row> |
|
<entry align="center" valign="middle"> |
|
<para>vector signed int</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para>vector signed int</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para>vector signed int</para> |
|
</entry> |
|
<entry> |
|
<programlisting> |
|
vaddcuw r,a,b |
|
</programlisting> |
|
</entry> |
|
</row> |
|
<row> |
|
<entry align="center" valign="middle"> |
|
<para>vector unsigned int</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para>vector unsigned int</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para>vector unsigned int</para> |
|
</entry> |
|
<entry> |
|
<programlisting> |
|
vaddcuw r,a,b |
|
</programlisting> |
|
</entry> |
|
</row> |
|
<row> |
|
<entry align="center" valign="middle"> |
|
<para>vector signed __int128</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para>vector signed __int128</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para>vector signed __int128</para> |
|
</entry> |
|
<entry> |
|
<programlisting> |
|
vaddcuq r,a,b |
|
</programlisting> |
|
</entry> |
|
</row> |
|
<row> |
|
<entry align="center" valign="middle"> |
|
<para>vector unsigned __int128</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para>vector unsigned __int128</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para>vector unsigned __int128</para> |
|
</entry> |
|
<entry> |
|
<programlisting> |
|
vaddcuq r,a,b |
|
</programlisting> |
|
</entry> |
|
</row> |
|
</tbody> |
|
</tgroup> |
|
</table> |
|
|
|
</section> |
|
|
|
<?hard-pagebreak?> |
|
<section xml:id="vec_adde"> |
|
<title>vec_adde</title> |
|
<subtitle>Vector Add Extended</subtitle> |
|
<programlisting> |
|
r = vec_adde (a, b, c) |
|
</programlisting> |
|
|
|
<para><emphasis role="bold">Purpose:</emphasis> |
|
Returns a vector formed as the sum of two vectors and a carry vector. |
|
</para> |
|
<para><emphasis role="bold">Result value:</emphasis> |
|
The value of each element of <emphasis role="bold">r</emphasis> is |
|
produced by adding the corresponding elements of <emphasis |
|
role="bold">a</emphasis> and <emphasis role="bold">b</emphasis> with |
|
a carry specified in the corresponding element of <emphasis |
|
role="bold">c</emphasis> (1 if there is a carry, 0 otherwise). |
|
</para> |
|
<para><emphasis role="bold">Endian considerations:</emphasis> |
|
None. |
|
</para> |
|
<para><emphasis role="bold">Notes:</emphasis> |
|
Code generated for this intrinsic should ensure only the |
|
low-order bit of <emphasis role="bold">c</emphasis> participates |
|
in the sum. |
|
</para> |
|
|
|
<indexterm> |
|
<primary>vspltisw</primary> |
|
<secondary>vec_adde</secondary> |
|
</indexterm> |
|
<indexterm> |
|
<primary>vadduwm</primary> |
|
<secondary>vec_adde</secondary> |
|
</indexterm> |
|
<indexterm> |
|
<primary>xxland</primary> |
|
<secondary>vec_adde</secondary> |
|
</indexterm> |
|
<indexterm> |
|
<primary>vaddeuqm</primary> |
|
<secondary>vec_adde</secondary> |
|
</indexterm> |
|
|
|
<table frame="all"> |
|
<title>Supported type signatures for vec_adde</title> |
|
<tgroup cols="5"> |
|
<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*" /> |
|
<thead> |
|
<row> |
|
<entry align="center" valign="middle"> |
|
<para> |
|
<emphasis role="bold">r</emphasis> |
|
</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para> |
|
<emphasis role="bold">a</emphasis> |
|
</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para> |
|
<emphasis role="bold">b</emphasis> |
|
</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para> |
|
<emphasis role="bold">c</emphasis> |
|
</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para> |
|
<emphasis role="bold">Example Implementation</emphasis> |
|
</para> |
|
</entry> |
|
</row> |
|
</thead> |
|
<tbody> |
|
<row> |
|
<entry align="center" valign="middle"> |
|
<para>vector signed int</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para>vector signed int</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para>vector signed int</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para>vector signed int</para> |
|
</entry> |
|
<entry> |
|
<programlisting> |
|
vspltisw t,1 |
|
vadduwm r,a,b |
|
xxland c,c,t |
|
vadduwm r,r,c |
|
</programlisting> |
|
</entry> |
|
</row> |
|
<row> |
|
<entry align="center" valign="middle"> |
|
<para>vector unsigned int</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para>vector unsigned int</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para>vector unsigned int</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para>vector unsigned int</para> |
|
</entry> |
|
<entry> |
|
<programlisting> |
|
vspltisw t,1 |
|
vadduwm r,a,b |
|
xxland c,c,t |
|
vadduwm r,r,c |
|
</programlisting> |
|
</entry> |
|
</row> |
|
<row> |
|
<entry align="center" valign="middle"> |
|
<para>vector signed __int128</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para>vector signed __int128</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para>vector signed __int128</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para>vector signed __int128</para> |
|
</entry> |
|
<entry> |
|
<programlisting> |
|
vaddeuqm r,a,b,c |
|
</programlisting> |
|
</entry> |
|
</row> |
|
<row> |
|
<entry align="center" valign="middle"> |
|
<para>vector unsigned __int128</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para>vector unsigned __int128</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para>vector unsigned __int128</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para>vector unsigned __int128</para> |
|
</entry> |
|
<entry> |
|
<programlisting> |
|
vaddeuqm r,a,b,c |
|
</programlisting> |
|
</entry> |
|
</row> |
|
</tbody> |
|
</tgroup> |
|
</table> |
|
|
|
</section> |
|
|
|
<?hard-pagebreak?> |
|
<section xml:id="vec_addec"> |
|
<title>vec_addec</title> |
|
<subtitle>Vector Add Extended Carrying</subtitle> |
|
<programlisting> |
|
r = vec_addec (a, b, c) |
|
</programlisting> |
|
|
|
<para><emphasis role="bold">Purpose:</emphasis> |
|
Returns a vector of carries produced by adding two vectors and |
|
a carry vector. |
|
</para> |
|
<para><emphasis role="bold">Result value:</emphasis> |
|
The value of each element of <emphasis role="bold">r</emphasis> is |
|
the carry produced by adding the corresponding elements of <emphasis |
|
role="bold">a</emphasis> and <emphasis role="bold">b</emphasis> and |
|
a carry specified in the corresponding element of <emphasis |
|
role="bold">c</emphasis> (1 if there is a carry, 0 otherwise). |
|
</para> |
|
<para><emphasis role="bold">Endian considerations:</emphasis> |
|
None. |
|
</para> |
|
<para><emphasis role="bold">Notes:</emphasis> |
|
Code generated for this intrinsic should ensure only the |
|
low-order bit of <emphasis role="bold">c</emphasis> participates |
|
in the sum. |
|
</para> |
|
|
|
<indexterm> |
|
<primary>vspltisw</primary> |
|
<secondary>vec_addec</secondary> |
|
</indexterm> |
|
<indexterm> |
|
<primary>xxland</primary> |
|
<secondary>vec_addec</secondary> |
|
</indexterm> |
|
<indexterm> |
|
<primary>vadduwm</primary> |
|
<secondary>vec_addec</secondary> |
|
</indexterm> |
|
<indexterm> |
|
<primary>vaddcuw</primary> |
|
<secondary>vec_addec</secondary> |
|
</indexterm> |
|
<indexterm> |
|
<primary>xxlor</primary> |
|
<secondary>vec_addec</secondary> |
|
</indexterm> |
|
<indexterm> |
|
<primary>vaddecuq</primary> |
|
<secondary>vec_addec</secondary> |
|
</indexterm> |
|
|
|
<table frame="all"> |
|
<title>Supported type signatures for vec_addec</title> |
|
<tgroup cols="5"> |
|
<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*" /> |
|
<thead> |
|
<row> |
|
<entry align="center" valign="middle"> |
|
<para> |
|
<emphasis role="bold">r</emphasis> |
|
</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para> |
|
<emphasis role="bold">a</emphasis> |
|
</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para> |
|
<emphasis role="bold">b</emphasis> |
|
</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para> |
|
<emphasis role="bold">c</emphasis> |
|
</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para> |
|
<emphasis role="bold">Example Implementation</emphasis> |
|
</para> |
|
</entry> |
|
</row> |
|
</thead> |
|
<tbody> |
|
<row> |
|
<entry align="center" valign="middle"> |
|
<para>vector signed int</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para>vector signed int</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para>vector signed int</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para>vector signed int</para> |
|
</entry> |
|
<entry> |
|
<programlisting> |
|
vspltisw t,1 |
|
xxland u,c,t |
|
vadduwm v,a,b |
|
vaddcuw w,a,b |
|
vaddcuw x,v,u |
|
xxlor r,w,x |
|
</programlisting> |
|
</entry> |
|
</row> |
|
<row> |
|
<entry align="center" valign="middle"> |
|
<para>vector unsigned int</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para>vector unsigned int</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para>vector unsigned int</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para>vector unsigned int</para> |
|
</entry> |
|
<entry> |
|
<programlisting> |
|
vspltisw t,1 |
|
xxland u,c,t |
|
vadduwm v,a,b |
|
vaddcuw w,a,b |
|
vaddcuw x,v,u |
|
xxlor r,w,x |
|
</programlisting> |
|
</entry> |
|
</row> |
|
<row> |
|
<entry align="center" valign="middle"> |
|
<para>vector signed __int128</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para>vector signed __int128</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para>vector signed __int128</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para>vector signed __int128</para> |
|
</entry> |
|
<entry> |
|
<programlisting> |
|
vaddecuq r,a,b,c |
|
</programlisting> |
|
</entry> |
|
</row> |
|
<row> |
|
<entry align="center" valign="middle"> |
|
<para>vector unsigned __int128</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para>vector unsigned __int128</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para>vector unsigned __int128</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para>vector unsigned __int128</para> |
|
</entry> |
|
<entry> |
|
<programlisting> |
|
vaddecuq r,a,b,c |
|
</programlisting> |
|
</entry> |
|
</row> |
|
</tbody> |
|
</tgroup> |
|
</table> |
|
|
|
</section> |
|
|
|
<?hard-pagebreak?> |
|
<section xml:id="vec_adds"> |
|
<title>vec_adds</title> |
|
<subtitle>Vector Add Saturating</subtitle> |
|
<programlisting> |
|
r = vec_adds (a, b) |
|
</programlisting> |
|
|
|
<para><emphasis role="bold">Purpose:</emphasis> |
|
Computes the saturated sum of two vectors. |
|
</para> |
|
<para><emphasis role="bold">Result value:</emphasis> |
|
The value of each element of <emphasis role="bold">r</emphasis> is the |
|
saturated sum of the corresponding elements of <emphasis |
|
role="bold">a</emphasis> and <emphasis role="bold">b</emphasis>. |
|
</para> |
|
<para><emphasis role="bold">Endian considerations:</emphasis> |
|
None. |
|
</para> |
|
|
|
<indexterm> |
|
<primary>vaddsbs</primary> |
|
<secondary>vec_adds</secondary> |
|
</indexterm> |
|
<indexterm> |
|
<primary>vaddubs</primary> |
|
<secondary>vec_adds</secondary> |
|
</indexterm> |
|
<indexterm> |
|
<primary>vaddshs</primary> |
|
<secondary>vec_adds</secondary> |
|
</indexterm> |
|
<indexterm> |
|
<primary>vadduhs</primary> |
|
<secondary>vec_adds</secondary> |
|
</indexterm> |
|
<indexterm> |
|
<primary>vaddsws</primary> |
|
<secondary>vec_adds</secondary> |
|
</indexterm> |
|
<indexterm> |
|
<primary>vadduws</primary> |
|
<secondary>vec_adds</secondary> |
|
</indexterm> |
|
|
|
<table frame="all"> |
|
<title>Supported type signatures for vec_adds</title> |
|
<tgroup cols="4"> |
|
<colspec colname="c1" colwidth="20*" /> |
|
<colspec colname="c2" colwidth="20*" /> |
|
<colspec colname="c3" colwidth="20*" /> |
|
<colspec colname="c4" colwidth="20*" /> |
|
<thead> |
|
<row> |
|
<entry align="center" valign="middle"> |
|
<para> |
|
<emphasis role="bold">r</emphasis> |
|
</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para> |
|
<emphasis role="bold">a</emphasis> |
|
</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para> |
|
<emphasis role="bold">b</emphasis> |
|
</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para> |
|
<emphasis role="bold">Example Implementation</emphasis> |
|
</para> |
|
</entry> |
|
</row> |
|
</thead> |
|
<tbody> |
|
<row> |
|
<entry align="center" valign="middle"> |
|
<para>vector signed char</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para>vector signed char</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para>vector signed char</para> |
|
</entry> |
|
<entry> |
|
<programlisting> |
|
vaddsbs r,a,b |
|
</programlisting> |
|
</entry> |
|
</row> |
|
<row> |
|
<entry align="center" valign="middle"> |
|
<para>vector unsigned char</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para>vector unsigned char</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para>vector unsigned char</para> |
|
</entry> |
|
<entry> |
|
<programlisting> |
|
vaddubs r,a,b |
|
</programlisting> |
|
</entry> |
|
</row> |
|
<row> |
|
<entry align="center" valign="middle"> |
|
<para>vector signed short</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para>vector signed short</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para>vector signed short</para> |
|
</entry> |
|
<entry> |
|
<programlisting> |
|
vaddshs r,a,b |
|
</programlisting> |
|
</entry> |
|
</row> |
|
<row> |
|
<entry align="center" valign="middle"> |
|
<para>vector unsigned short</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para>vector unsigned short</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para>vector unsigned short</para> |
|
</entry> |
|
<entry> |
|
<programlisting> |
|
vadduhs r,a,b |
|
</programlisting> |
|
</entry> |
|
</row> |
|
<row> |
|
<entry align="center" valign="middle"> |
|
<para>vector signed int</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para>vector signed int</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para>vector signed int</para> |
|
</entry> |
|
<entry> |
|
<programlisting> |
|
vaddsws r,a,b |
|
</programlisting> |
|
</entry> |
|
</row> |
|
<row> |
|
<entry align="center" valign="middle"> |
|
<para>vector unsigned int</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para>vector unsigned int</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para>vector unsigned int</para> |
|
</entry> |
|
<entry> |
|
<programlisting> |
|
vadduws r,a,b |
|
</programlisting> |
|
</entry> |
|
</row> |
|
</tbody> |
|
</tgroup> |
|
</table> |
|
|
|
</section> |
|
|
|
<?hard-pagebreak?> |
|
|
|
<section xml:id="vec_all_eq"> |
|
<title>vec_all_eq</title> |
|
<subtitle>Vector All Equal</subtitle> |
|
<programlisting> |
|
r = vec_all_eq (a, b) |
|
</programlisting> |
|
|
|
<para><emphasis role="bold">Purpose:</emphasis> |
|
Tests whether all elements of <emphasis role="bold">a</emphasis> |
|
are equal to the corresponding elements of <emphasis |
|
role="bold">b</emphasis>. |
|
</para> |
|
<para><emphasis role="bold">Result value: r</emphasis> is 1 if each |
|
element of <emphasis role="bold">a</emphasis> is equal to the |
|
corresponding element of <emphasis role="bold">b</emphasis>. Otherwise, |
|
<emphasis role="bold">r</emphasis> is 0.</para> |
|
<para><emphasis role="bold">Endian considerations:</emphasis> |
|
None. |
|
</para> |
|
<para revisionflag="added"> |
|
<emphasis role="bold">Review status:</emphasis> |
|
Not yet reviewed. |
|
</para> |
|
|
|
<indexterm> |
|
<primary>vcmpequb.</primary> |
|
<secondary>vec_all_eq</secondary> |
|
</indexterm> |
|
<indexterm> |
|
<primary>mfocrf</primary> |
|
<secondary>vec_all_eq</secondary> |
|
</indexterm> |
|
<indexterm> |
|
<primary>rlwinm</primary> |
|
<secondary>vec_all_eq</secondary> |
|
</indexterm> |
|
<indexterm> |
|
<primary>vcmpequw.</primary> |
|
<secondary>vec_all_eq</secondary> |
|
</indexterm> |
|
<indexterm> |
|
<primary>vcmpequd.</primary> |
|
<secondary>vec_all_eq</secondary> |
|
</indexterm> |
|
<indexterm> |
|
<primary>vcmpequq.</primary> |
|
<secondary>vec_all_eq</secondary> |
|
</indexterm> |
|
<indexterm> |
|
<primary>vcmpequh.</primary> |
|
<secondary>vec_all_eq</secondary> |
|
</indexterm> |
|
<indexterm> |
|
<primary>xvcmpeqdp.</primary> |
|
<secondary>vec_all_eq</secondary> |
|
</indexterm> |
|
<indexterm> |
|
<primary>xvcmpeqsp.</primary> |
|
<secondary>vec_all_eq</secondary> |
|
</indexterm> |
|
<indexterm> |
|
<primary>setbc</primary> |
|
<secondary>vec_all_eq</secondary> |
|
</indexterm> |
|
|
|
<table frame="all"> |
|
<title>Supported type signatures for vec_all_eq</title> |
|
<tgroup cols="5"> |
|
<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*" /> |
|
<thead> |
|
<row> |
|
<entry align="center" valign="middle"> |
|
<para> |
|
<emphasis role="bold">r</emphasis> |
|
</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para> |
|
<emphasis role="bold">a</emphasis> |
|
</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para> |
|
<emphasis role="bold">b</emphasis> |
|
</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para><emphasis role="bold">Example Implementation</emphasis></para> |
|
</entry> |
|
<entry align="center" valign="middle" revisionflag="added"> |
|
<para><emphasis role="bold">Restrictions</emphasis></para> |
|
</entry> |
|
</row> |
|
</thead> |
|
<tbody> |
|
<row> |
|
<entry align="center" valign="middle"> |
|
<para>int</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para>vector bool char</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para> vector bool char</para> |
|
</entry> |
|
<entry> |
|
<programlisting> |
|
vcmpequb. t,a,b |
|
mfocrf u,2 |
|
rlwinm r,u,25,1 |
|
</programlisting> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para> |
|
</para> |
|
</entry> |
|
</row> |
|
<row> |
|
<entry align="center" valign="middle"> |
|
<para>int</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para>vector signed char</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para> vector signed char</para> |
|
</entry> |
|
<entry> |
|
<programlisting> |
|
vcmpequb. t,a,b |
|
mfocrf u,2 |
|
rlwinm r,u,25,1 |
|
</programlisting> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para> |
|
</para> |
|
</entry> |
|
</row> |
|
<row> |
|
<entry align="center" valign="middle"> |
|
<para>int</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para>vector unsigned char</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para> vector unsigned char</para> |
|
</entry> |
|
<entry> |
|
<programlisting> |
|
vcmpequb. t,a,b |
|
mfocrf u,2 |
|
rlwinm r,u,25,1 |
|
</programlisting> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para> |
|
</para> |
|
</entry> |
|
</row> |
|
<row> |
|
<entry align="center" valign="middle"> |
|
<para>int</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para>vector bool short</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para> vector bool short</para> |
|
</entry> |
|
<entry> |
|
<programlisting> |
|
vcmpequh. t,a,b |
|
mfocrf u,2 |
|
rlwinm r,u,25,1 |
|
</programlisting> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para> |
|
</para> |
|
</entry> |
|
</row> |
|
<row> |
|
<entry align="center" valign="middle"> |
|
<para>int</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para>vector signed short</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para> vector signed short</para> |
|
</entry> |
|
<entry> |
|
<programlisting> |
|
vcmpequh. t,a,b |
|
mfocrf u,2 |
|
rlwinm r,u,25,1 |
|
</programlisting> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para> |
|
</para> |
|
</entry> |
|
</row> |
|
<row> |
|
<entry align="center" valign="middle"> |
|
<para>int</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para>vector unsigned short</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para> vector unsigned short</para> |
|
</entry> |
|
<entry> |
|
<programlisting> |
|
vcmpequh. t,a,b |
|
mfocrf u,2 |
|
rlwinm r,u,25,1 |
|
</programlisting> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para> |
|
</para> |
|
</entry> |
|
</row> |
|
<row> |
|
<entry align="center" valign="middle"> |
|
<para>int</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para>vector pixel</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para> vector pixel</para> |
|
</entry> |
|
<entry> |
|
<programlisting> |
|
vcmpequh. t,a,b |
|
mfocrf u,2 |
|
rlwinm r,u,25,1 |
|
</programlisting> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para> |
|
</para> |
|
</entry> |
|
</row> |
|
<row> |
|
<entry align="center" valign="middle"> |
|
<para>int</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para>vector bool int</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para> vector bool int</para> |
|
</entry> |
|
<entry> |
|
<programlisting> |
|
vcmpequw. t,a,b |
|
mfocrf u,2 |
|
rlwinm r,u,25,1 |
|
</programlisting> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para> |
|
</para> |
|
</entry> |
|
</row> |
|
<row> |
|
<entry align="center" valign="middle"> |
|
<para>int</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para>vector signed int</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para> vector signed int</para> |
|
</entry> |
|
<entry> |
|
<programlisting> |
|
vcmpequw. t,a,b |
|
mfocrf u,2 |
|
rlwinm r,u,25,1 |
|
</programlisting> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para> |
|
</para> |
|
</entry> |
|
</row> |
|
<row> |
|
<entry align="center" valign="middle"> |
|
<para>int</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para>vector unsigned int</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para> vector unsigned int</para> |
|
</entry> |
|
<entry> |
|
<programlisting> |
|
vcmpequw. t,a,b |
|
mfocrf u,2 |
|
rlwinm r,u,25,1 |
|
</programlisting> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para> |
|
</para> |
|
</entry> |
|
</row> |
|
<row> |
|
<entry align="center" valign="middle"> |
|
<para>int</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para>vector bool long long</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para> vector bool long long</para> |
|
</entry> |
|
<entry> |
|
<programlisting> |
|
vcmpequd. t,a,b |
|
mfocrf u,2 |
|
rlwinm r,u,25,1 |
|
</programlisting> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para> |
|
</para> |
|
</entry> |
|
</row> |
|
<row> |
|
<entry align="center" valign="middle"> |
|
<para>int</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para>vector signed long long</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para> vector signed long long</para> |
|
</entry> |
|
<entry> |
|
<programlisting> |
|
vcmpequd. t,a,b |
|
mfocrf u,2 |
|
rlwinm r,u,25,1 |
|
</programlisting> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para> |
|
</para> |
|
</entry> |
|
</row> |
|
<row> |
|
<entry align="center" valign="middle"> |
|
<para>int</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para>vector unsigned long long</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para> vector unsigned long long</para> |
|
</entry> |
|
<entry> |
|
<programlisting> |
|
vcmpequd. t,a,b |
|
mfocrf u,2 |
|
rlwinm r,u,25,1 |
|
</programlisting> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para> |
|
</para> |
|
</entry> |
|
</row> |
|
<row revisionflag="added"> |
|
<entry align="center" valign="middle"> |
|
<para>int</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para>vector bool __int128</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para>vector bool __int128</para> |
|
</entry> |
|
<entry> |
|
<programlisting> |
|
vcmpequq. t,a,b |
|
setbc r,24 |
|
</programlisting> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para> |
|
ISA 3.1 or later |
|
</para> |
|
</entry> |
|
</row> |
|
<row revisionflag="added"> |
|
<entry align="center" valign="middle"> |
|
<para>int</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para>vector signed __int128</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para>vector signed __int128</para> |
|
</entry> |
|
<entry> |
|
<programlisting> |
|
vcmpequq. t,a,b |
|
setbc r,24 |
|
</programlisting> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para> |
|
ISA 3.1 or later |
|
</para> |
|
</entry> |
|
</row> |
|
<row revisionflag="added"> |
|
<entry align="center" valign="middle"> |
|
<para>int</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para>vector unsigned __int128</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para>vector unsigned __int128</para> |
|
</entry> |
|
<entry> |
|
<programlisting> |
|
vcmpequq. t,a,b |
|
setbc r,24 |
|
</programlisting> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para> |
|
ISA 3.1 or later |
|
</para> |
|
</entry> |
|
</row> |
|
<row> |
|
<entry align="center" valign="middle"> |
|
<para>int</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para>vector float</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para> vector float</para> |
|
</entry> |
|
<entry> |
|
<programlisting> |
|
xvcmpeqsp. t,a,b |
|
mfocrf u,2 |
|
rlwinm r,u,25,1 |
|
</programlisting> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para> |
|
</para> |
|
</entry> |
|
</row> |
|
<row> |
|
<entry align="center" valign="middle"> |
|
<para>int</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para>vector double</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para> vector double</para> |
|
</entry> |
|
<entry> |
|
<programlisting> |
|
xvcmpeqdp. t,a,b |
|
mfocrf u,2 |
|
rlwinm r,u,25,1 |
|
</programlisting> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para> |
|
</para> |
|
</entry> |
|
</row> |
|
</tbody> |
|
</tgroup> |
|
</table> |
|
|
|
</section> |
|
<?hard-pagebreak?> |
|
|
|
<section xml:id="vec_all_ge"> |
|
<title>vec_all_ge</title> |
|
<subtitle>Vector All Greater or Equal</subtitle> |
|
<programlisting> |
|
r = vec_all_ge (a, b) |
|
</programlisting> |
|
|
|
<para><emphasis role="bold">Purpose:</emphasis> |
|
Tests whether all elements of <emphasis role="bold">a</emphasis> are |
|
greater than or equal to the corresponding elements of <emphasis |
|
role="bold">b</emphasis>. |
|
</para> |
|
<para><emphasis role="bold">Result value: r</emphasis> is 1 if |
|
all elements of <emphasis role="bold">a</emphasis> are greater |
|
than or equal to the corresponding elements of <emphasis |
|
role="bold">b</emphasis>. Otherwise, <emphasis |
|
role="bold">r</emphasis> is 0.</para> |
|
<para><emphasis role="bold">Endian considerations:</emphasis> |
|
None. |
|
</para> |
|
<para revisionflag="added"> |
|
<emphasis role="bold">Review status:</emphasis> |
|
Not yet reviewed. |
|
</para> |
|
|
|
<indexterm> |
|
<primary>vcmpgtsb.</primary> |
|
<secondary>vec_all_ge</secondary> |
|
</indexterm> |
|
<indexterm> |
|
<primary>mfocrf</primary> |
|
<secondary>vec_all_ge</secondary> |
|
</indexterm> |
|
<indexterm> |
|
<primary>rlwinm</primary> |
|
<secondary>vec_all_ge</secondary> |
|
</indexterm> |
|
<indexterm> |
|
<primary>vcmpgtub.</primary> |
|
<secondary>vec_all_ge</secondary> |
|
</indexterm> |
|
<indexterm> |
|
<primary>vcmpgtsw.</primary> |
|
<secondary>vec_all_ge</secondary> |
|
</indexterm> |
|
<indexterm> |
|
<primary>vcmpgtuw.</primary> |
|
<secondary>vec_all_ge</secondary> |
|
</indexterm> |
|
<indexterm> |
|
<primary>vcmpgtsd.</primary> |
|
<secondary>vec_all_ge</secondary> |
|
</indexterm> |
|
<indexterm> |
|
<primary>vcmpgtud.</primary> |
|
<secondary>vec_all_ge</secondary> |
|
</indexterm> |
|
<indexterm> |
|
<primary>vcmpgtsq.</primary> |
|
<secondary>vec_all_ge</secondary> |
|
</indexterm> |
|
<indexterm> |
|
<primary>vcmpgtuq.</primary> |
|
<secondary>vec_all_ge</secondary> |
|
</indexterm> |
|
<indexterm> |
|
<primary>vcmpgtsh.</primary> |
|
<secondary>vec_all_ge</secondary> |
|
</indexterm> |
|
<indexterm> |
|
<primary>vcmpgtuh.</primary> |
|
<secondary>vec_all_ge</secondary> |
|
</indexterm> |
|
<indexterm> |
|
<primary>xvcmpgedp.</primary> |
|
<secondary>vec_all_ge</secondary> |
|
</indexterm> |
|
<indexterm> |
|
<primary>xvcmpgesp.</primary> |
|
<secondary>vec_all_ge</secondary> |
|
</indexterm> |
|
<indexterm> |
|
<primary>setbc</primary> |
|
<secondary>vec_all_ge</secondary> |
|
</indexterm> |
|
|
|
<table frame="all"> |
|
<title>Supported type signatures for vec_all_ge</title> |
|
<tgroup cols="5"> |
|
<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*" /> |
|
<thead> |
|
<row> |
|
<entry align="center" valign="middle"> |
|
<para> |
|
<emphasis role="bold">r</emphasis> |
|
</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para> |
|
<emphasis role="bold">a</emphasis> |
|
</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para> |
|
<emphasis role="bold">b</emphasis> |
|
</para> |
|
</entry> |
|
<entry align="center"> |
|
<para><emphasis role="bold">Example Implementation</emphasis></para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para revisionflag="added"> |
|
<emphasis role="bold">Restrictions</emphasis> |
|
</para> |
|
</entry> |
|
</row> |
|
</thead> |
|
<tbody> |
|
<row> |
|
<entry align="center" valign="middle"> |
|
<para>int</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para>vector signed char</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para> vector signed char</para> |
|
</entry> |
|
<entry> |
|
<programlisting> |
|
vcmpgtsb. t,b,a |
|
mfocrf u,2 |
|
rlwinm r,u,27,1 |
|
</programlisting> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para> |
|
</para> |
|
</entry> |
|
</row> |
|
<row> |
|
<entry align="center" valign="middle"> |
|
<para>int</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para>vector unsigned char</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para> vector unsigned char</para> |
|
</entry> |
|
<entry> |
|
<programlisting> |
|
vcmpgtub. t,b,a |
|
mfocrf u,2 |
|
rlwinm r,u,27,1 |
|
</programlisting> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para> |
|
</para> |
|
</entry> |
|
</row> |
|
<row> |
|
<entry align="center" valign="middle"> |
|
<para>int</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para>vector signed short</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para> vector signed short</para> |
|
</entry> |
|
<entry> |
|
<programlisting> |
|
vcmpgtsh. t,b,a |
|
mfocrf u,2 |
|
rlwinm r,u,27,1 |
|
</programlisting> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para> |
|
</para> |
|
</entry> |
|
</row> |
|
<row> |
|
<entry align="center" valign="middle"> |
|
<para>int</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para>vector unsigned short</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para> vector unsigned short</para> |
|
</entry> |
|
<entry> |
|
<programlisting> |
|
vcmpgtuh. t,b,a |
|
mfocrf u,2 |
|
rlwinm r,u,27,1 |
|
</programlisting> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para> |
|
</para> |
|
</entry> |
|
</row> |
|
<row> |
|
<entry align="center" valign="middle"> |
|
<para>int</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para>vector signed int</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para> vector signed int</para> |
|
</entry> |
|
<entry> |
|
<programlisting> |
|
vcmpgtsw. t,b,a |
|
mfocrf u,2 |
|
rlwinm r,u,27,1 |
|
</programlisting> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para> |
|
</para> |
|
</entry> |
|
</row> |
|
<row> |
|
<entry align="center" valign="middle"> |
|
<para>int</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para>vector unsigned int</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para> vector unsigned int</para> |
|
</entry> |
|
<entry> |
|
<programlisting> |
|
vcmpgtuw. t,b,a |
|
mfocrf u,2 |
|
rlwinm r,u,27,1 |
|
</programlisting> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para> |
|
</para> |
|
</entry> |
|
</row> |
|
<row> |
|
<entry align="center" valign="middle"> |
|
<para>int</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para>vector signed long long</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para> vector signed long long</para> |
|
</entry> |
|
<entry> |
|
<programlisting> |
|
vcmpgtsd. t,b,a |
|
mfocrf u,2 |
|
rlwinm r,u,27,1 |
|
</programlisting> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para> |
|
</para> |
|
</entry> |
|
</row> |
|
<row> |
|
<entry align="center" valign="middle"> |
|
<para>int</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para>vector unsigned long long</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para> vector unsigned long long</para> |
|
</entry> |
|
<entry> |
|
<programlisting> |
|
vcmpgtud. t,b,a |
|
mfocrf u,2 |
|
rlwinm r,u,27,1 |
|
</programlisting> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para> |
|
</para> |
|
</entry> |
|
</row> |
|
<row revisionflag="added"> |
|
<entry align="center" valign="middle"> |
|
<para>int</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para>vector signed __int128</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para>vector signed __int128</para> |
|
</entry> |
|
<entry> |
|
<programlisting> |
|
vcmpgtsq. t,b,a |
|
setbc r,26 |
|
</programlisting> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para> |
|
ISA 3.1 or later |
|
</para> |
|
</entry> |
|
</row> |
|
<row revisionflag="added"> |
|
<entry align="center" valign="middle"> |
|
<para>int</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para>vector unsigned __int128</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para>vector unsigned __int128</para> |
|
</entry> |
|
<entry> |
|
<programlisting> |
|
vcmpgtuq. t,b,a |
|
setbc r,26 |
|
</programlisting> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para> |
|
ISA 3.1 or later |
|
</para> |
|
</entry> |
|
</row> |
|
<row> |
|
<entry align="center" valign="middle"> |
|
<para>int</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para>vector float</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para> vector float</para> |
|
</entry> |
|
<entry> |
|
<programlisting> |
|
xvcmpgesp. t,a,b |
|
mfocrf u,2 |
|
rlwinm r,u,25,1 |
|
</programlisting> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para> |
|
</para> |
|
</entry> |
|
</row> |
|
<row> |
|
<entry align="center" valign="middle"> |
|
<para>int</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para>vector double</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para> vector double</para> |
|
</entry> |
|
<entry> |
|
<programlisting> |
|
xvcmpgedp. t,a,b |
|
mfocrf u,2 |
|
rlwinm r,u,25,1 |
|
</programlisting> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para> |
|
</para> |
|
</entry> |
|
</row> |
|
</tbody> |
|
</tgroup> |
|
</table> |
|
|
|
</section> |
|
<?hard-pagebreak?> |
|
|
|
<section xml:id="vec_all_gt"> |
|
<title>vec_all_gt</title> |
|
<subtitle>Vector All Greater Than</subtitle> |
|
<programlisting> |
|
r = vec_all_gt (a, b) |
|
</programlisting> |
|
|
|
<para><emphasis role="bold">Purpose:</emphasis> |
|
Tests whether all elements of <emphasis role="bold">a</emphasis> are |
|
greater than the corresponding elements of <emphasis |
|
role="bold">b</emphasis>. |
|
</para> |
|
<para><emphasis role="bold">Result value: r</emphasis> is 1 if |
|
all elements of <emphasis role="bold">a</emphasis> are greater |
|
than the corresponding elements of <emphasis |
|
role="bold">b</emphasis>. Otherwise, <emphasis |
|
role="bold">r</emphasis> is 0.</para> |
|
<para><emphasis role="bold">Endian considerations:</emphasis> |
|
None. |
|
</para> |
|
<para revisionflag="added"> |
|
<emphasis role="bold">Review status:</emphasis> |
|
Not yet reviewed. |
|
</para> |
|
|
|
<indexterm> |
|
<primary>vcmpgtsb.</primary> |
|
<secondary>vec_all_gt</secondary> |
|
</indexterm> |
|
<indexterm> |
|
<primary>mfocrf</primary> |
|
<secondary>vec_all_gt</secondary> |
|
</indexterm> |
|
<indexterm> |
|
<primary>rlwinm</primary> |
|
<secondary>vec_all_gt</secondary> |
|
</indexterm> |
|
<indexterm> |
|
<primary>vcmpgtub.</primary> |
|
<secondary>vec_all_gt</secondary> |
|
</indexterm> |
|
<indexterm> |
|
<primary>vcmpgtsw.</primary> |
|
<secondary>vec_all_gt</secondary> |
|
</indexterm> |
|
<indexterm> |
|
<primary>vcmpgtuw.</primary> |
|
<secondary>vec_all_gt</secondary> |
|
</indexterm> |
|
<indexterm> |
|
<primary>vcmpgtsd.</primary> |
|
<secondary>vec_all_gt</secondary> |
|
</indexterm> |
|
<indexterm> |
|
<primary>vcmpgtud.</primary> |
|
<secondary>vec_all_gt</secondary> |
|
</indexterm> |
|
<indexterm> |
|
<primary>vcmpgtsq.</primary> |
|
<secondary>vec_all_gt</secondary> |
|
</indexterm> |
|
<indexterm> |
|
<primary>vcmpgtuq.</primary> |
|
<secondary>vec_all_gt</secondary> |
|
</indexterm> |
|
<indexterm> |
|
<primary>vcmpgtsh.</primary> |
|
<secondary>vec_all_gt</secondary> |
|
</indexterm> |
|
<indexterm> |
|
<primary>vcmpgtuh.</primary> |
|
<secondary>vec_all_gt</secondary> |
|
</indexterm> |
|
<indexterm> |
|
<primary>xvcmpgtdp.</primary> |
|
<secondary>vec_all_gt</secondary> |
|
</indexterm> |
|
<indexterm> |
|
<primary>xvcmpgtsp.</primary> |
|
<secondary>vec_all_gt</secondary> |
|
</indexterm> |
|
<indexterm> |
|
<primary>setbc</primary> |
|
<secondary>vec_all_gt</secondary> |
|
</indexterm> |
|
|
|
<table frame="all"> |
|
<title>Supported type signatures for vec_all_gt</title> |
|
<tgroup cols="5"> |
|
<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*" /> |
|
<thead> |
|
<row> |
|
<entry align="center" valign="middle"> |
|
<para> |
|
<emphasis role="bold">r</emphasis> |
|
</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para> |
|
<emphasis role="bold">a</emphasis> |
|
</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para> |
|
<emphasis role="bold">b</emphasis> |
|
</para> |
|
</entry> |
|
<entry align="center"> |
|
<para><emphasis role="bold">Example Implementation</emphasis></para> |
|
</entry> |
|
<entry align="center"> |
|
<para><emphasis role="bold">Restrictions</emphasis></para> |
|
</entry> |
|
</row> |
|
</thead> |
|
<tbody> |
|
<row> |
|
<entry align="center" valign="middle"> |
|
<para>int</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para>vector signed char</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para> vector signed char</para> |
|
</entry> |
|
<entry> |
|
<programlisting> |
|
vcmpgtsb. t,a,b |
|
mfocrf u,2 |
|
rlwinm r,u,25,1 |
|
</programlisting> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para> |
|
</para> |
|
</entry> |
|
</row> |
|
<row> |
|
<entry align="center" valign="middle"> |
|
<para>int</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para>vector unsigned char</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para> vector unsigned char</para> |
|
</entry> |
|
<entry> |
|
<programlisting> |
|
vcmpgtub. t,a,b |
|
mfocrf u,2 |
|
rlwinm r,u,25,1 |
|
</programlisting> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para> |
|
</para> |
|
</entry> |
|
</row> |
|
<row> |
|
<entry align="center" valign="middle"> |
|
<para>int</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para>vector signed short</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para> vector signed short</para> |
|
</entry> |
|
<entry> |
|
<programlisting> |
|
vcmpgtsh. t,a,b |
|
mfocrf u,2 |
|
rlwinm r,u,25,1 |
|
</programlisting> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para> |
|
</para> |
|
</entry> |
|
</row> |
|
<row> |
|
<entry align="center" valign="middle"> |
|
<para>int</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para>vector unsigned short</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para> vector unsigned short</para> |
|
</entry> |
|
<entry> |
|
<programlisting> |
|
vcmpgtuh. t,a,b |
|
mfocrf u,2 |
|
rlwinm r,u,25,1 |
|
</programlisting> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para> |
|
</para> |
|
</entry> |
|
</row> |
|
<row> |
|
<entry align="center" valign="middle"> |
|
<para>int</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para>vector signed int</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para> vector signed int</para> |
|
</entry> |
|
<entry> |
|
<programlisting> |
|
vcmpgtsw. t,a,b |
|
mfocrf u,2 |
|
rlwinm r,u,25,1 |
|
</programlisting> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para> |
|
</para> |
|
</entry> |
|
</row> |
|
<row> |
|
<entry align="center" valign="middle"> |
|
<para>int</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para>vector unsigned int</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para> vector unsigned int</para> |
|
</entry> |
|
<entry> |
|
<programlisting> |
|
vcmpgtuw. t,a,b |
|
mfocrf u,2 |
|
rlwinm r,u,25,1 |
|
</programlisting> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para> |
|
</para> |
|
</entry> |
|
</row> |
|
<row> |
|
<entry align="center" valign="middle"> |
|
<para>int</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para>vector signed long long</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para> vector signed long long</para> |
|
</entry> |
|
<entry> |
|
<programlisting> |
|
vcmpgtsd. t,a,b |
|
mfocrf u,2 |
|
rlwinm r,u,25,1 |
|
</programlisting> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para> |
|
</para> |
|
</entry> |
|
</row> |
|
<row> |
|
<entry align="center" valign="middle"> |
|
<para>int</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para>vector unsigned long long</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para> vector unsigned long long</para> |
|
</entry> |
|
<entry> |
|
<programlisting> |
|
vcmpgtud. t,a,b |
|
mfocrf u,2 |
|
rlwinm r,u,25,1 |
|
</programlisting> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para> |
|
</para> |
|
</entry> |
|
</row> |
|
<row revisionflag="added"> |
|
<entry align="center" valign="middle"> |
|
<para>int</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para>vector signed __int128</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para>vector signed __int128</para> |
|
</entry> |
|
<entry> |
|
<programlisting> |
|
vcmpgtsq. t,a,b |
|
setbc r,24 |
|
</programlisting> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para> |
|
ISA 3.1 or later |
|
</para> |
|
</entry> |
|
</row> |
|
<row revisionflag="added"> |
|
<entry align="center" valign="middle"> |
|
<para>int</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para>vector unsigned __int128</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para>vector unsigned __int128</para> |
|
</entry> |
|
<entry> |
|
<programlisting> |
|
vcmpgtuq. t,a,b |
|
setbc r,24 |
|
</programlisting> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para> |
|
ISA 3.1 or later |
|
</para> |
|
</entry> |
|
</row> |
|
<row> |
|
<entry align="center" valign="middle"> |
|
<para>int</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para>vector float</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para> vector float</para> |
|
</entry> |
|
<entry> |
|
<programlisting> |
|
xvcmpgtsp. t,a,b |
|
mfocrf u,2 |
|
rlwinm r,u,25,1 |
|
</programlisting> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para> |
|
</para> |
|
</entry> |
|
</row> |
|
<row> |
|
<entry align="center" valign="middle"> |
|
<para>int</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para>vector double</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para> vector double</para> |
|
</entry> |
|
<entry> |
|
<programlisting> |
|
xvcmpgtdp. t,a,b |
|
mfocrf u,2 |
|
rlwinm r,u,25,1 |
|
</programlisting> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para> |
|
</para> |
|
</entry> |
|
</row> |
|
</tbody> |
|
</tgroup> |
|
</table> |
|
|
|
</section> |
|
<?hard-pagebreak?> |
|
|
|
<section xml:id="vec_all_in"> |
|
<title>vec_all_in</title> |
|
<subtitle>Vector All In Range</subtitle> |
|
<programlisting> |
|
r = vec_all_in (a, b) |
|
</programlisting> |
|
|
|
<para><emphasis role="bold">Purpose:</emphasis> |
|
Tests whether all elements of a vector are within a given range. |
|
</para> |
|
<para><emphasis role="bold">Result value: r </emphasis> is 1 if each |
|
element of <emphasis role="bold">a</emphasis> has a value less than or |
|
equal to the value of the corresponding element of <emphasis |
|
role="bold">b</emphasis>, and greater than or equal to the negative of |
|
the value of the corresponding element of <emphasis |
|
role="bold">b</emphasis>. Otherwise, <emphasis role="bold">r</emphasis> |
|
is 0.</para> |
|
<para><emphasis role="bold">Endian considerations:</emphasis> |
|
None. |
|
</para> |
|
|
|
<indexterm> |
|
<primary>vcmpbfp.</primary> |
|
<secondary>vec_all_in</secondary> |
|
</indexterm> |
|
<indexterm> |
|
<primary>mfocrf</primary> |
|
<secondary>vec_all_in</secondary> |
|
</indexterm> |
|
<indexterm> |
|
<primary>rlwinm</primary> |
|
<secondary>vec_all_in</secondary> |
|
</indexterm> |
|
|
|
<table frame="all"> |
|
<title>Supported type signatures for vec_all_in</title> |
|
<tgroup cols="4"> |
|
<colspec colname="c1" colwidth="20*" /> |
|
<colspec colname="c2" colwidth="20*" /> |
|
<colspec colname="c3" colwidth="20*" /> |
|
<colspec colname="c4" colwidth="20*" /> |
|
<thead> |
|
<row> |
|
<entry align="center"> |
|
<para> |
|
<emphasis role="bold">r</emphasis> |
|
</para> |
|
</entry> |
|
<entry align="center"> |
|
<para> |
|
<emphasis role="bold">a</emphasis> |
|
</para> |
|
</entry> |
|
<entry align="center"> |
|
<para> |
|
<emphasis role="bold">b</emphasis> |
|
</para> |
|
</entry> |
|
<entry align="center"> |
|
<para><emphasis role="bold">Example Implementation</emphasis></para> |
|
</entry> |
|
</row> |
|
</thead> |
|
<tbody> |
|
<row> |
|
<entry align="center" valign="middle"> |
|
<para>int</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para>vector float</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para> vector float</para> |
|
</entry> |
|
<entry> |
|
<programlisting> |
|
vcmpbfp. t,a,b |
|
mfocrf u,2 |
|
rlwinm r,u,27,1 |
|
</programlisting> |
|
</entry> |
|
</row> |
|
</tbody> |
|
</tgroup> |
|
</table> |
|
|
|
</section> |
|
<?hard-pagebreak?> |
|
|
|
<section xml:id="vec_all_le"> |
|
<title>vec_all_le</title> |
|
<subtitle>Vector All Less or Equal</subtitle> |
|
<programlisting> |
|
r = vec_all_le (a, b) |
|
</programlisting> |
|
|
|
<para><emphasis role="bold">Purpose:</emphasis> |
|
Tests whether all elements of <emphasis role="bold">a</emphasis> are |
|
less than or equal to the corresponding elements of <emphasis |
|
role="bold">b</emphasis>. |
|
</para> |
|
<para><emphasis role="bold">Result value: r</emphasis> is 1 if all |
|
elements of <emphasis role="bold">a</emphasis> are less than or equal to |
|
the corresponding elements of <emphasis role="bold">b</emphasis>. |
|
Otherwise, <emphasis role="bold">r</emphasis> is 0.</para> |
|
<para><emphasis role="bold">Endian considerations:</emphasis> |
|
None. |
|
</para> |
|
<para revisionflag="added"> |
|
<emphasis role="bold">Review status:</emphasis> |
|
Not yet reviewed. |
|
</para> |
|
|
|
<indexterm> |
|
<primary>vcmpgtsb.</primary> |
|
<secondary>vec_all_le</secondary> |
|
</indexterm> |
|
<indexterm> |
|
<primary>mfocrf</primary> |
|
<secondary>vec_all_le</secondary> |
|
</indexterm> |
|
<indexterm> |
|
<primary>rlwinm</primary> |
|
<secondary>vec_all_le</secondary> |
|
</indexterm> |
|
<indexterm> |
|
<primary>vcmpgtub.</primary> |
|
<secondary>vec_all_le</secondary> |
|
</indexterm> |
|
<indexterm> |
|
<primary>vcmpgtsw.</primary> |
|
<secondary>vec_all_le</secondary> |
|
</indexterm> |
|
<indexterm> |
|
<primary>vcmpgtuw.</primary> |
|
<secondary>vec_all_le</secondary> |
|
</indexterm> |
|
<indexterm> |
|
<primary>vcmpgtsd.</primary> |
|
<secondary>vec_all_le</secondary> |
|
</indexterm> |
|
<indexterm> |
|
<primary>vcmpgtud.</primary> |
|
<secondary>vec_all_le</secondary> |
|
</indexterm> |
|
<indexterm> |
|
<primary>vcmpgtsq.</primary> |
|
<secondary>vec_all_le</secondary> |
|
</indexterm> |
|
<indexterm> |
|
<primary>vcmpgtuq.</primary> |
|
<secondary>vec_all_le</secondary> |
|
</indexterm> |
|
<indexterm> |
|
<primary>vcmpgtsh.</primary> |
|
<secondary>vec_all_le</secondary> |
|
</indexterm> |
|
<indexterm> |
|
<primary>vcmpgtuh.</primary> |
|
<secondary>vec_all_le</secondary> |
|
</indexterm> |
|
<indexterm> |
|
<primary>xvcmpgedp.</primary> |
|
<secondary>vec_all_le</secondary> |
|
</indexterm> |
|
<indexterm> |
|
<primary>xvcmpgesp.</primary> |
|
<secondary>vec_all_le</secondary> |
|
</indexterm> |
|
<indexterm> |
|
<primary>setbc.</primary> |
|
<secondary>vec_all_le</secondary> |
|
</indexterm> |
|
|
|
<table frame="all"> |
|
<title>Supported type signatures for vec_all_le</title> |
|
<tgroup cols="5"> |
|
<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*" /> |
|
<thead> |
|
<row> |
|
<entry align="center" valign="middle"> |
|
<para> |
|
<emphasis role="bold">r</emphasis> |
|
</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para> |
|
<emphasis role="bold">a</emphasis> |
|
</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para> |
|
<emphasis role="bold">b</emphasis> |
|
</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para><emphasis role="bold">Example Implementation</emphasis></para> |
|
</entry> |
|
<entry align="center" valign="middle" revisionflag="added"> |
|
<para><emphasis role="bold">Restrictions</emphasis></para> |
|
</entry> |
|
</row> |
|
</thead> |
|
<tbody> |
|
<row> |
|
<entry align="center" valign="middle"> |
|
<para>int</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para>vector signed char</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para> vector signed char</para> |
|
</entry> |
|
<entry> |
|
<programlisting> |
|
vcmpgtsb. t,a,b |
|
mfocrf u,2 |
|
rlwinm r,u,27,1 |
|
</programlisting> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para> |
|
</para> |
|
</entry> |
|
</row> |
|
<row> |
|
<entry align="center" valign="middle"> |
|
<para>int</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para>vector unsigned char</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para> vector unsigned char</para> |
|
</entry> |
|
<entry> |
|
<programlisting> |
|
vcmpgtub. t,a,b |
|
mfocrf u,2 |
|
rlwinm r,u,27,1 |
|
</programlisting> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para> |
|
</para> |
|
</entry> |
|
</row> |
|
<row> |
|
<entry align="center" valign="middle"> |
|
<para>int</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para>vector signed short</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para> vector signed short</para> |
|
</entry> |
|
<entry> |
|
<programlisting> |
|
vcmpgtsh. t,a,b |
|
mfocrf u,2 |
|
rlwinm r,u,27,1 |
|
</programlisting> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para> |
|
</para> |
|
</entry> |
|
</row> |
|
<row> |
|
<entry align="center" valign="middle"> |
|
<para>int</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para>vector unsigned short</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para> vector unsigned short</para> |
|
</entry> |
|
<entry> |
|
<programlisting> |
|
vcmpgtuh. t,a,b |
|
mfocrf u,2 |
|
rlwinm r,u,27,1 |
|
</programlisting> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para> |
|
</para> |
|
</entry> |
|
</row> |
|
<row> |
|
<entry align="center" valign="middle"> |
|
<para>int</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para>vector signed int</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para> vector signed int</para> |
|
</entry> |
|
<entry> |
|
<programlisting> |
|
vcmpgtsw. t,a,b |
|
mfocrf u,2 |
|
rlwinm r,u,27,1 |
|
</programlisting> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para> |
|
</para> |
|
</entry> |
|
</row> |
|
<row> |
|
<entry align="center" valign="middle"> |
|
<para>int</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para>vector unsigned int</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para> vector unsigned int</para> |
|
</entry> |
|
<entry> |
|
<programlisting> |
|
vcmpgtuw. t,a,b |
|
mfocrf u,2 |
|
rlwinm r,u,27,1 |
|
</programlisting> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para> |
|
</para> |
|
</entry> |
|
</row> |
|
<row> |
|
<entry align="center" valign="middle"> |
|
<para>int</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para>vector signed long long</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para> vector signed long long</para> |
|
</entry> |
|
<entry> |
|
<programlisting> |
|
vcmpgtsd. t,a,b |
|
mfocrf u,2 |
|
rlwinm r,u,27,1 |
|
</programlisting> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para> |
|
</para> |
|
</entry> |
|
</row> |
|
<row> |
|
<entry align="center" valign="middle"> |
|
<para>int</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para>vector unsigned long long</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para> vector unsigned long long</para> |
|
</entry> |
|
<entry> |
|
<programlisting> |
|
vcmpgtud. t,a,b |
|
mfocrf u,2 |
|
rlwinm r,u,27,1 |
|
</programlisting> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para> |
|
</para> |
|
</entry> |
|
</row> |
|
<row revisionflag="added"> |
|
<entry align="center" valign="middle"> |
|
<para>int</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para>vector signed __int128</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para>vector signed __int128</para> |
|
</entry> |
|
<entry> |
|
<programlisting> |
|
vcmpgtsq. t,a,b |
|
setbc r,26 |
|
</programlisting> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para> |
|
ISA 3.1 or later |
|
</para> |
|
</entry> |
|
</row> |
|
<row revisionflag="added"> |
|
<entry align="center" valign="middle"> |
|
<para>int</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para>vector unsigned __int128</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para>vector unsigned __int128</para> |
|
</entry> |
|
<entry> |
|
<programlisting> |
|
vcmpgtuq. t,a,b |
|
setbc r,26 |
|
</programlisting> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para> |
|
ISA 3.1 or later |
|
</para> |
|
</entry> |
|
</row> |
|
<row> |
|
<entry align="center" valign="middle"> |
|
<para>int</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para>vector float</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para> vector float</para> |
|
</entry> |
|
<entry> |
|
<programlisting> |
|
xvcmpgesp. t,b,a |
|
mfocrf u,2 |
|
rlwinm r,u,25,1 |
|
</programlisting> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para> |
|
</para> |
|
</entry> |
|
</row> |
|
<row> |
|
<entry align="center" valign="middle"> |
|
<para>int</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para>vector double</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para> vector double</para> |
|
</entry> |
|
<entry> |
|
<programlisting> |
|
xvcmpgedp. t,b,a |
|
mfocrf u,2 |
|
rlwinm r,u,25,1 |
|
</programlisting> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para> |
|
</para> |
|
</entry> |
|
</row> |
|
</tbody> |
|
</tgroup> |
|
</table> |
|
|
|
</section> |
|
<?hard-pagebreak?> |
|
|
|
<section xml:id="vec_all_lt"> |
|
<title>vec_all_lt</title> |
|
<subtitle>Vector All Less Than</subtitle> |
|
<programlisting> |
|
r = vec_all_lt (a, b) |
|
</programlisting> |
|
|
|
<para><emphasis role="bold">Purpose:</emphasis> |
|
Tests whether all elements of <emphasis role="bold">a</emphasis> are |
|
less than the corresponding elements of <emphasis |
|
role="bold">b</emphasis>. |
|
</para> |
|
<para><emphasis role="bold">Result value: r</emphasis> is 1 if all |
|
elements of <emphasis role="bold">a</emphasis> are less than the |
|
corresponding elements of <emphasis role="bold">b</emphasis>. Otherwise, |
|
<emphasis role="bold">r</emphasis> is 0.</para> |
|
<para><emphasis role="bold">Endian considerations:</emphasis> |
|
None. |
|
</para> |
|
<para revisionflag="added"> |
|
<emphasis role="bold">Review status:</emphasis> |
|
Not yet reviewed. |
|
</para> |
|
|
|
<indexterm> |
|
<primary>vcmpgtsb.</primary> |
|
<secondary>vec_all_lt</secondary> |
|
</indexterm> |
|
<indexterm> |
|
<primary>mfocrf</primary> |
|
<secondary>vec_all_lt</secondary> |
|
</indexterm> |
|
<indexterm> |
|
<primary>rlwinm</primary> |
|
<secondary>vec_all_lt</secondary> |
|
</indexterm> |
|
<indexterm> |
|
<primary>vcmpgtub.</primary> |
|
<secondary>vec_all_lt</secondary> |
|
</indexterm> |
|
<indexterm> |
|
<primary>vcmpgtsw.</primary> |
|
<secondary>vec_all_lt</secondary> |
|
</indexterm> |
|
<indexterm> |
|
<primary>vcmpgtuw.</primary> |
|
<secondary>vec_all_lt</secondary> |
|
</indexterm> |
|
<indexterm> |
|
<primary>vcmpgtsd.</primary> |
|
<secondary>vec_all_lt</secondary> |
|
</indexterm> |
|
<indexterm> |
|
<primary>vcmpgtud.</primary> |
|
<secondary>vec_all_lt</secondary> |
|
</indexterm> |
|
<indexterm> |
|
<primary>vcmpgtsq.</primary> |
|
<secondary>vec_all_lt</secondary> |
|
</indexterm> |
|
<indexterm> |
|
<primary>vcmpgtuq.</primary> |
|
<secondary>vec_all_lt</secondary> |
|
</indexterm> |
|
<indexterm> |
|
<primary>vcmpgtsh.</primary> |
|
<secondary>vec_all_lt</secondary> |
|
</indexterm> |
|
<indexterm> |
|
<primary>vcmpgtuh.</primary> |
|
<secondary>vec_all_lt</secondary> |
|
</indexterm> |
|
<indexterm> |
|
<primary>xvcmpgtdp.</primary> |
|
<secondary>vec_all_lt</secondary> |
|
</indexterm> |
|
<indexterm> |
|
<primary>xvcmpgtsp.</primary> |
|
<secondary>vec_all_lt</secondary> |
|
</indexterm> |
|
<indexterm> |
|
<primary>setbc</primary> |
|
<secondary>vec_all_lt</secondary> |
|
</indexterm> |
|
|
|
<table frame="all"> |
|
<title>Supported type signatures for vec_all_lt</title> |
|
<tgroup cols="5"> |
|
<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*" /> |
|
<thead> |
|
<row> |
|
<entry align="center" valign="middle"> |
|
<para> |
|
<emphasis role="bold">r</emphasis> |
|
</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para> |
|
<emphasis role="bold">a</emphasis> |
|
</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para> |
|
<emphasis role="bold">b</emphasis> |
|
</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para><emphasis role="bold">Example Implementation</emphasis></para> |
|
</entry> |
|
<entry align="center" valign="middle" revisionflag="added"> |
|
<para><emphasis role="bold">Restrictions</emphasis></para> |
|
</entry> |
|
</row> |
|
</thead> |
|
<tbody> |
|
<row> |
|
<entry align="center" valign="middle"> |
|
<para>int</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para>vector signed char</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para> vector signed char</para> |
|
</entry> |
|
<entry> |
|
<programlisting> |
|
vcmpgtsb. t,b,a |
|
mfocrf u,2 |
|
rlwinm r,u,25,1 |
|
</programlisting> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para> |
|
</para> |
|
</entry> |
|
</row> |
|
<row> |
|
<entry align="center" valign="middle"> |
|
<para>int</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para>vector unsigned char</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para> vector unsigned char</para> |
|
</entry> |
|
<entry> |
|
<programlisting> |
|
vcmpgtub. t,b,a |
|
mfocrf u,2 |
|
rlwinm r,u,25,1 |
|
</programlisting> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para> |
|
</para> |
|
</entry> |
|
</row> |
|
<row> |
|
<entry align="center" valign="middle"> |
|
<para>int</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para>vector signed short</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para> vector signed short</para> |
|
</entry> |
|
<entry> |
|
<programlisting> |
|
vcmpgtsh. t,b,a |
|
mfocrf u,2 |
|
rlwinm r,u,25,1 |
|
</programlisting> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para> |
|
</para> |
|
</entry> |
|
</row> |
|
<row> |
|
<entry align="center" valign="middle"> |
|
<para>int</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para>vector unsigned short</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para> vector unsigned short</para> |
|
</entry> |
|
<entry> |
|
<programlisting> |
|
vcmpgtuh. t,b,a |
|
mfocrf u,2 |
|
rlwinm r,u,25,1 |
|
</programlisting> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para> |
|
</para> |
|
</entry> |
|
</row> |
|
<row> |
|
<entry align="center" valign="middle"> |
|
<para>int</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para>vector signed int</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para> vector signed int</para> |
|
</entry> |
|
<entry> |
|
<programlisting> |
|
vcmpgtsw. t,b,a |
|
mfocrf u,2 |
|
rlwinm r,u,25,1 |
|
</programlisting> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para> |
|
</para> |
|
</entry> |
|
</row> |
|
<row> |
|
<entry align="center" valign="middle"> |
|
<para>int</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para>vector unsigned int</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para> vector unsigned int</para> |
|
</entry> |
|
<entry> |
|
<programlisting> |
|
vcmpgtuw. t,b,a |
|
mfocrf u,2 |
|
rlwinm r,u,25,1 |
|
</programlisting> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para> |
|
</para> |
|
</entry> |
|
</row> |
|
<row> |
|
<entry align="center" valign="middle"> |
|
<para>int</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para>vector signed long long</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para> vector signed long long</para> |
|
</entry> |
|
<entry> |
|
<programlisting> |
|
vcmpgtsd. t,b,a |
|
mfocrf u,2 |
|
rlwinm r,u,25,1 |
|
</programlisting> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para> |
|
</para> |
|
</entry> |
|
</row> |
|
<row> |
|
<entry align="center" valign="middle"> |
|
<para>int</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para>vector unsigned long long</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para> vector unsigned long long</para> |
|
</entry> |
|
<entry> |
|
<programlisting> |
|
vcmpgtud. t,b,a |
|
mfocrf u,2 |
|
rlwinm r,u,25,1 |
|
</programlisting> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para> |
|
</para> |
|
</entry> |
|
</row> |
|
<row revisionflag="added"> |
|
<entry align="center" valign="middle"> |
|
<para>int</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para>vector signed __int128</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para>vector signed __int128</para> |
|
</entry> |
|
<entry> |
|
<programlisting> |
|
vcmpgtsq. t,b,a |
|
setbc r,24 |
|
</programlisting> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para> |
|
ISA 3.1 or later |
|
</para> |
|
</entry> |
|
</row> |
|
<row revisionflag="added"> |
|
<entry align="center" valign="middle"> |
|
<para>int</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para>vector unsigned __int128</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para>vector unsigned __int128</para> |
|
</entry> |
|
<entry> |
|
<programlisting> |
|
vcmpgtuq. t,b,a |
|
setbc r,24 |
|
</programlisting> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para> |
|
ISA 3.1 or later |
|
</para> |
|
</entry> |
|
</row> |
|
<row> |
|
<entry align="center" valign="middle"> |
|
<para>int</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para>vector float</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para> vector float</para> |
|
</entry> |
|
<entry> |
|
<programlisting> |
|
xvcmpgtsp. t,b,a |
|
mfocrf u,2 |
|
rlwinm r,u,25,1 |
|
</programlisting> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para> |
|
</para> |
|
</entry> |
|
</row> |
|
<row> |
|
<entry align="center" valign="middle"> |
|
<para>int</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para>vector double</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para> vector double</para> |
|
</entry> |
|
<entry> |
|
<programlisting> |
|
xvcmpgtdp. t,b,a |
|
mfocrf u,2 |
|
rlwinm r,u,25,1 |
|
</programlisting> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para> |
|
</para> |
|
</entry> |
|
</row> |
|
</tbody> |
|
</tgroup> |
|
</table> |
|
|
|
</section> |
|
<?hard-pagebreak?> |
|
|
|
<section xml:id="vec_all_nan"> |
|
<title>vec_all_nan</title> |
|
<subtitle>Vector All Not-a-Number</subtitle> |
|
<programlisting> |
|
r = vec_all_nan (a) |
|
</programlisting> |
|
|
|
<para><emphasis role="bold">Purpose:</emphasis> |
|
Tests whether all elements of <emphasis role="bold">a</emphasis> |
|
are not-a-number (NaN). |
|
</para> |
|
<para><emphasis role="bold">Result value: r</emphasis> is 1 if |
|
all elements of <emphasis role="bold">a</emphasis> are |
|
NaN. Otherwise, <emphasis role="bold">r</emphasis> is 0.</para> |
|
<para><emphasis role="bold">Endian considerations:</emphasis> |
|
None. |
|
</para> |
|
|
|
<indexterm> |
|
<primary>xvcmpeqdp.</primary> |
|
<secondary>vec_all_nan</secondary> |
|
</indexterm> |
|
<indexterm> |
|
<primary>mfocrf</primary> |
|
<secondary>vec_all_nan</secondary> |
|
</indexterm> |
|
<indexterm> |
|
<primary>rlwinm</primary> |
|
<secondary>vec_all_nan</secondary> |
|
</indexterm> |
|
<indexterm> |
|
<primary>xvcmpeqsp.</primary> |
|
<secondary>vec_all_nan</secondary> |
|
</indexterm> |
|
|
|
<table frame="all"> |
|
<title>Supported type signatures for vec_all_nan</title> |
|
<tgroup cols="3"> |
|
<colspec colname="c1" colwidth="20*" /> |
|
<colspec colname="c2" colwidth="20*" /> |
|
<colspec colname="c3" colwidth="20*" /> |
|
<thead> |
|
<row> |
|
<entry align="center"> |
|
<para> |
|
<emphasis role="bold">r</emphasis> |
|
</para> |
|
</entry> |
|
<entry align="center"> |
|
<para> |
|
<emphasis role="bold">a</emphasis> |
|
</para> |
|
</entry> |
|
<entry align="center"> |
|
<para><emphasis role="bold">Example Implementation</emphasis></para> |
|
</entry> |
|
</row> |
|
</thead> |
|
<tbody> |
|
<row> |
|
<entry align="center" valign="middle"> |
|
<para>int</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para>vector float</para> |
|
</entry> |
|
<entry> |
|
<programlisting> |
|
xvcmpeqsp. t,a,a |
|
mfocrf u,2 |
|
rlwinm r,u,27,1 |
|
</programlisting> |
|
</entry> |
|
</row> |
|
<row> |
|
<entry align="center" valign="middle"> |
|
<para>int</para> |
|
</entry> |
|
<entry align="center" valign="middle"> |
|
<para>vector double</para> |
|
</entry> |
|
<entry> |
|
<programlisting> |
|
xvcmpeqdp. t,a,a |
|
mfocrf u,2 |
|
rlwinm r,u,27,1 |
|
</programlisting> |
|
</entry> |
|
</row> |
|
</tbody> |
|
</tgroup> |
|
</table> |
|
|
|
</section> |
|
<?hard-pagebreak?> |
|
|
|
<section xml:id="vec_all_ne"> |
|
<title>vec_all_ne</title> |
|
<subtitle>Vector All Not Equal</subtitle> |
|
<programlisting> |
|
r = vec_all_ne (a, b) |
|
</programlisting> |
|
|
|
<para><emphasis role="bold">Purpose:</emphasis> |
|
Tests whether all elements of <emphasis role="bold">a</emphasis> |
|
are not equal to the corresponding elements of <emphasis |
|
role="bold">b</emphasis>. |
|
</para> |
|
<para><emphasis role="bold">Result value: r</emphasis> is 1 if |
|
all elements of <emphasis role="bold">a</emphasis> are not equal |
|
to the corresponding elements of <emphasis |
|
role="bold">b</emphasis>. Otherwise, <emphasis |
|
role="bold">r</emphasis> is 0.</para> |
|
<para><emphasis role="bold">Endian considerations:</emphasis> |
|
None. |
|
</para> |
|
<para revisionflag="added"> |
|
<emphasis role="bold">Review status:</emphasis> |
|
Not yet reviewed. |
|
</para> |
|
|
|
<indexterm> |
|
<primary>vcmpneb.</primary> |
|
<secondary>vec_all_ne</secondary> |
|
</indexterm> |
|
<indexterm> |
|
<primary>mfocrf</primary> |
|
<secondary>vec_all_ne</secondary> |
|
</indexterm> |
|
<indexterm> |
|
<primary>rlwinm</primary> |
|
<secondary>vec_all_ne</secondary> |
|
</indexterm> |
|
<indexterm> |
|
<primary>vcmpnew.</primary> |
|
<secondary>vec_all_ne</secondary> |
|
</indexterm> |
|
<indexterm> |
|
<primary>vcmpequd.</primary> |
|
<secondary>vec_all_ne</secondary> |
|
</indexterm> |