Fix issue #25, Review usage of hyphens.

Signed-off-by: Bill Schmidt <wschmidt@linux.vnet.ibm.com>
master
Bill Schmidt 8 years ago
parent d3131a5ac9
commit 6516b1aaf8

@ -2323,7 +2323,7 @@ xml:id="dbdoclet.50655245_pgfId-1138128">
<phrase revisionflag="added">approximation</phrase><phrase revisionflag="deleted">estimate</phrase> <phrase revisionflag="added">approximation</phrase><phrase revisionflag="deleted">estimate</phrase>
of the value of the corresponding of the value of the corresponding
element of ARG1 divided by 2 to the power of ARG2, which should element of ARG1 divided by 2 to the power of ARG2, which should
be in the range 0 - 31.</para> be in the range 0&#8211;31.</para>
</entry> </entry>
</row> </row>
<row> <row>
@ -2355,7 +2355,7 @@ xml:id="dbdoclet.50655245_pgfId-1138128">
<phrase revisionflag="added">signed-integer</phrase> value<phrase revisionflag="added">, <phrase revisionflag="added">signed-integer</phrase> value<phrase revisionflag="added">,
truncated towards zero,</phrase> obtained by truncated towards zero,</phrase> obtained by
multiplying the corresponding element of ARG1 by 2 to the power multiplying the corresponding element of ARG1 by 2 to the power
of ARG2, which should be in the range 0 - 31.</para> of ARG2, which should be in the range 0&#8211;31.</para>
</entry> </entry>
</row> </row>
<row> <row>
@ -2378,7 +2378,7 @@ xml:id="dbdoclet.50655245_pgfId-1138128">
<phrase revisionflag="added">unsigned-integer</phrase> value<phrase revisionflag="added">, <phrase revisionflag="added">unsigned-integer</phrase> value<phrase revisionflag="added">,
truncated towards zero,</phrase> obtained by truncated towards zero,</phrase> obtained by
multiplying the corresponding element of ARG1 by 2 to the power multiplying the corresponding element of ARG1 by 2 to the power
of ARG2, which should be in the range 0 - 31.</para> of ARG2, which should be in the range 0&#8211;31.</para>
</entry> </entry>
</row> </row>
<row> <row>
@ -2950,7 +2950,7 @@ xml:id="dbdoclet.50655245_pgfId-1138128">
</row> </row>
<row revisionflag="added"> <row revisionflag="added">
<entry> <entry>
<para>VEC_EXTRACT_FP32-_FROM_SHORTH (ARG1)</para> <para>VEC_EXTRACT_FP32_ FROM_SHORTH (ARG1)</para>
<para>POWER ISA 3.0</para> <para>POWER ISA 3.0</para>
</entry> </entry>
<entry> <entry>
@ -2977,7 +2977,7 @@ xml:id="dbdoclet.50655245_pgfId-1138128">
</row> </row>
<row revisionflag="added"> <row revisionflag="added">
<entry> <entry>
<para>VEC_EXTRACT_FP32-_FROM_SHORTL (ARG1)</para> <para>VEC_EXTRACT_FP32_ FROM_SHORTL (ARG1)</para>
<para>POWER ISA 3.0</para> <para>POWER ISA 3.0</para>
</entry> </entry>
<entry> <entry>
@ -3050,8 +3050,8 @@ xml:id="dbdoclet.50655245_pgfId-1138128">
<para>Result value:</para> <para>Result value:</para>
<para>The first doubleword element of the result contains the <para>The first doubleword element of the result contains the
zero-extended extracted word from ARG1. The second doubleword is zero-extended extracted word from ARG1. The second doubleword is
set to 0. ARG2 specifies the least-significant byte number (0 - set to 0. ARG2 specifies the least-significant byte number
12) of the word to be extracted.</para> (0&#8211;12) of the word to be extracted.</para>
</entry> </entry>
</row> </row>
<row revisionflag="added"> <row revisionflag="added">
@ -3790,7 +3790,7 @@ xml:id="dbdoclet.50655245_pgfId-1138128">
<para>Result value:</para> <para>Result value:</para>
<para>The first doubleword element of the result contains the <para>The first doubleword element of the result contains the
zero-extended extracted word from ARG1. The second doubleword is zero-extended extracted word from ARG1. The second doubleword is
set to 0. ARG2 specifies the least-significant byte (0 - 12) of set to 0. ARG2 specifies the least-significant byte (0&#8211;12) of
the extracted word.</para> the extracted word.</para>
</entry> </entry>
</row> </row>
@ -4723,7 +4723,7 @@ xml:id="dbdoclet.50655245_pgfId-1138128">
beginning with 0. If ARG1 is a vector signed char or a vector beginning with 0. If ARG1 is a vector signed char or a vector
unsigned char vector, then let m be 4. Otherwise, let m be 2. For unsigned char vector, then let m be 4. Otherwise, let m be 2. For
each element n of the result vector, the value is obtained in the each element n of the result vector, the value is obtained in the
following way: For p = mn to mn+m-1, multiply element p of ARG1 following way: For p = mn to mn + m &#8211; 1, multiply element p of ARG1
by element p of ARG2. Add the sum of these products to element n by element p of ARG2. Add the sum of these products to element n
of ARG3. All additions are performed using 32-bit modular of ARG3. All additions are performed using 32-bit modular
arithmetic.</para> arithmetic.</para>
@ -5353,8 +5353,8 @@ xml:id="dbdoclet.50655245_pgfId-1138128">
<para>Result value:</para> <para>Result value:</para>
<para>The value of each element of the result is the product of <para>The value of each element of the result is the product of
the corresponding elements of ARG1 and ARG2, added to the the corresponding elements of ARG1 and ARG2, added to the
corresponding elements of ARG3, and then multiplied by corresponding elements of ARG3, then multiplied by
-1.0.</para> &#8211;1.0.</para>
</entry> </entry>
</row> </row>
<row> <row>
@ -5387,7 +5387,7 @@ xml:id="dbdoclet.50655245_pgfId-1138128">
<para>The value of each element of the result is the product of <para>The value of each element of the result is the product of
the corresponding elements of ARG1 and ARG2, subtracted from the the corresponding elements of ARG1 and ARG2, subtracted from the
corresponding element of ARG3, and then multiplied by corresponding element of ARG3, and then multiplied by
-1.0.</para> &#8211;1.0.</para>
</entry> </entry>
</row> </row>
<row> <row>
@ -6408,8 +6408,8 @@ xml:id="dbdoclet.50655245_pgfId-1138128">
<para>Applies a permute and exclusive-OR operation on two vectors <para>Applies a permute and exclusive-OR operation on two vectors
of byte elements.</para> of byte elements.</para>
<para>Result value:</para> <para>Result value:</para>
<para>For each i (0 ≤ i &lt; 16), let index1 be bits 0 - 3 and <para>For each i (0 ≤ i &lt; 16), let index1 be bits 0&#8211;3 and
index2 be bits 4 - 7 of byte element i of mask ARG3.</para> index2 be bits 4&#8211;7 of byte element i of mask ARG3.</para>
<para>Byte element i of the result is set to the exclusive-OR of <para>Byte element i of the result is set to the exclusive-OR of
byte elements index1 of ARG1 and index2 of ARG2.</para> byte elements index1 of ARG1 and index2 of ARG2.</para>
</entry> </entry>
@ -7696,8 +7696,7 @@ xml:id="dbdoclet.50655245_pgfId-1138128">
<para>Result value:</para> <para>Result value:</para>
<para>The result is the most-significant 16 bytes obtained by <para>The result is the most-significant 16 bytes obtained by
concatenating ARG1 and ARG2 and shifting left by the number of concatenating ARG1 and ARG2 and shifting left by the number of
bytes specified by ARG3, which should be in the range 0 - bytes specified by ARG3, which should be in the range 0&#8211;15.</para>
15.</para>
</entry> </entry>
</row> </row>
<row> <row>
@ -7852,7 +7851,7 @@ xml:id="dbdoclet.50655245_pgfId-1138128">
element of the concatenated vectors ARG1 and ARG2, with the word element of the concatenated vectors ARG1 and ARG2, with the word
offset to its right<superscript>1</superscript> offset to its right<superscript>1</superscript>
specified by ARG3, which should be in the specified by ARG3, which should be in the
range 0 - 3.</para> range 0&#8211;3.</para>
<para><superscript>1</superscript>A shift left picks values <para><superscript>1</superscript>A shift left picks values
from the right.</para> from the right.</para>
</entry> </entry>
@ -8978,7 +8977,7 @@ xml:id="dbdoclet.50655245_pgfId-1138128">
(octets).</para> (octets).</para>
<para>Result value:</para> <para>Result value:</para>
<para>The result is the contents of ARG1, shifted right by the <para>The result is the contents of ARG1, shifted right by the
number of bytes specified by bits 121 - 124 of ARG2. The bits number of bytes specified by bits 121&#8211;124 of ARG2. The bits
that are shifted out are replaced by zeros.</para> that are shifted out are replaced by zeros.</para>
</entry> </entry>
</row> </row>
@ -9178,16 +9177,19 @@ xml:id="dbdoclet.50655245_pgfId-1138128">
<para>Result value:</para> <para>Result value:</para>
<para>For each integer 1 <para>For each integer 1
<emphasis>≤</emphasis> i <emphasis>≤</emphasis> i
<emphasis>≤</emphasis> 15, let X <emphasis>≤</emphasis> 15, let
<emphasis>i</emphasis> be the halfword formed by concatenating X<subscript>i</subscript>
elements i and i+1 of ARG1. Let X be the halfword formed by concatenating
<emphasis>0</emphasis> be the halfword formed by concatenating a elements i and i + 1 of ARG1. Let
zero byte with element 0 of ARG1. Let S X<subscript>0</subscript>
<emphasis>i</emphasis> be the value in the three least-significant be the halfword formed by concatenating a
zero byte with element 0 of ARG1. Let
S<subscript>i</subscript>
be the value in the three least-significant
bits of element i of ARG2. Then element i of the result vector bits of element i of ARG2. Then element i of the result vector
contains the value formed from bits 8 - S contains the value formed from bits 8 &#8211;
<emphasis>i</emphasis> through 15 - S S<subscript>i</subscript> through 15 &#8211;
<emphasis>i</emphasis>.</para> S<subscript>i</subscript>.</para>
</entry> </entry>
</row> </row>
<row revisionflag="added"> <row revisionflag="added">
@ -9588,7 +9590,7 @@ xml:id="dbdoclet.50655245_pgfId-1138128">
beginning with 0. If ARG1 is a vector signed char vector or a beginning with 0. If ARG1 is a vector signed char vector or a
vector unsigned char vector, then let m be 4. Otherwise, let m be vector unsigned char vector, then let m be 4. Otherwise, let m be
2. For each element n of the result vector, the value is obtained 2. For each element n of the result vector, the value is obtained
by adding elements mn through mn+m-1 of ARG1 and element n of by adding elements mn through mn + m &#8211; 1 of ARG1 and element n of
ARG2 using saturated addition.</para> ARG2 using saturated addition.</para>
</entry> </entry>
</row> </row>
@ -10351,7 +10353,7 @@ xml:id="dbdoclet.50655245_pgfId-1138128">
<para>At least 0 and at most 16 bytes will be loaded. The length <para>At least 0 and at most 16 bytes will be loaded. The length
is specified by the least-significant byte of ARG2, as min (mod is specified by the least-significant byte of ARG2, as min (mod
(ARG2, 256), 16). The behavior is undefined if the length (ARG2, 256), 16). The behavior is undefined if the length
argument is outside of the range 0 - 255, or if it is not a argument is outside of the range 0&#8211;255, or if it is not a
multiple of the vector element size.</para> multiple of the vector element size.</para>
</entry> </entry>
</row> </row>
@ -10488,7 +10490,7 @@ xml:id="dbdoclet.50655245_pgfId-1138128">
<para>At least 0 and at most 16 bytes will be loaded. The length <para>At least 0 and at most 16 bytes will be loaded. The length
is specified by the least-significant byte of ARG2, as min (mod is specified by the least-significant byte of ARG2, as min (mod
(ARG2, 256), 16). The behavior is undefined if the length (ARG2, 256), 16). The behavior is undefined if the length
argument is outside of the range 0 - 255, or if it is not a argument is outside of the range 0&#8211;255, or if it is not a
multiple of the vector element size.</para> multiple of the vector element size.</para>
</entry> </entry>
</row> </row>
@ -10934,7 +10936,7 @@ xml:id="dbdoclet.50655245_pgfId-1138128">
<para>At least 0 and at most 16 bytes will be stored. The length <para>At least 0 and at most 16 bytes will be stored. The length
is specified by the least-significant byte of ARG3, as min (mod is specified by the least-significant byte of ARG3, as min (mod
(ARG3, 256), 16). The behavior is undefined if the length (ARG3, 256), 16). The behavior is undefined if the length
argument is outside of the range 0 - 255, or if it is not a argument is outside of the range 0&#8211;255, or if it is not a
multiple of the vector element size.</para> multiple of the vector element size.</para>
</entry> </entry>
</row> </row>
@ -11069,7 +11071,7 @@ xml:id="dbdoclet.50655245_pgfId-1138128">
<para>At least 0 and at most 16 bytes will be stored. The length <para>At least 0 and at most 16 bytes will be stored. The length
is specified by the least-significant byte of ARG3, as min (mod is specified by the least-significant byte of ARG3, as min (mod
(ARG2, 256), 16). The behavior is undefined if the length (ARG2, 256), 16). The behavior is undefined if the length
argument is outside of the range 0 - 255, or if it is not a argument is outside of the range 0&#8211;255, or if it is not a
multiple of the vector element size.</para> multiple of the vector element size.</para>
</entry> </entry>
</row> </row>

@ -17,8 +17,8 @@ xml:id="dbdoclet.50655245_pgfId-1450875" revisionflag="added">
<para>Binary-coded decimal (BCD) values are compressed; each decimal digit <para>Binary-coded decimal (BCD) values are compressed; each decimal digit
and sign bit occupies 4 bits. Digits are ordered right-to-left in the order and sign bit occupies 4 bits. Digits are ordered right-to-left in the order
of significance. The final 4 bits encode the sign. A valid encoding must of significance. The final 4 bits encode the sign. A valid encoding must
have a value in the range 0 - 9 in each of its 31 digits, and a value in have a value in the range 0&#8211;9 in each of its 31 digits, and a value in
the range 10 - 15 for the sign field.</para> the range 10&#8211;15 for the sign field.</para>
<para>Source operands with sign codes of 0b1010, 0b1100, 0b1110, or 0b1111 <para>Source operands with sign codes of 0b1010, 0b1100, 0b1110, or 0b1111
are interpreted as positive values. Source operands with sign codes of are interpreted as positive values. Source operands with sign codes of
0b1011 or 0b1101 are interpreted as negative values.</para> 0b1011 or 0b1101 are interpreted as negative values.</para>
@ -27,7 +27,7 @@ xml:id="dbdoclet.50655245_pgfId-1450875" revisionflag="added">
indicate positive values or zero, depending on the value of the positive indicate positive values or zero, depending on the value of the positive
sign (PS) bit.</para> sign (PS) bit.</para>
<para>These built-in functions can operate on values of at most 31 digits. <para>These built-in functions can operate on values of at most 31 digits.
BCD values are stored in memory as contiguous arrays of 1 - 16 BCD values are stored in memory as contiguous arrays of 1&#8211;16
bytes.</para> bytes.</para>
<note> <note>
<para>BCD built-in functions are valid only when -<emphasis role="bold">march</emphasis> or <para>BCD built-in functions are valid only when -<emphasis role="bold">march</emphasis> or

@ -98,7 +98,7 @@
<revdescription> <revdescription>
<itemizedlist spacing="compact"> <itemizedlist spacing="compact">
<listitem> <listitem>
<para>Revision 1.2b - initial conversion from framemaker</para> <para>Revision 1.3b: initial conversion from framemaker</para>
</listitem> </listitem>
</itemizedlist> </itemizedlist>
</revdescription> </revdescription>
@ -108,7 +108,18 @@
<revdescription> <revdescription>
<itemizedlist revisionflag="added" spacing="compact"> <itemizedlist revisionflag="added" spacing="compact">
<listitem> <listitem>
<para>Version 1.2 - POWER8 erratum and POWER9 support. <para>Version 1.3: POWER9 support.
</para>
</listitem>
</itemizedlist>
</revdescription>
</revision>
<revision>
<date revisionflag="added">2016-06-13</date>
<revdescription>
<itemizedlist revisionflag="added" spacing="compact">
<listitem>
<para>Version 1.2: POWER8 errata.
</para> </para>
</listitem> </listitem>
</itemizedlist> </itemizedlist>
@ -119,7 +130,7 @@
<revdescription> <revdescription>
<itemizedlist spacing="compact"> <itemizedlist spacing="compact">
<listitem> <listitem>
<para>Version 1.1 - initial conversion from framemaker</para> <para>Version 1.1: Incorporate errata.</para>
</listitem> </listitem>
</itemizedlist> </itemizedlist>
</revdescription> </revdescription>

@ -99,8 +99,8 @@
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
<emphasis>ISO/IEC TR 24732:2009 - Programming languages, their <emphasis>ISO/IEC TR 24732:2009 &#8211; Programming languages, their
environments and system software interfaces - Extension for the environments and system software interfaces &#8211; Extension for the
programming language C to support decimal floating-point programming language C to support decimal floating-point
arithmetic</emphasis>, ISO/IEC, January 05, 2009. Available from ISO. arithmetic</emphasis>, ISO/IEC, January 05, 2009. Available from ISO.
<emphasis> <emphasis>

@ -2042,7 +2042,7 @@ xml:id="dbdoclet.50655240_pgfId-1156194">
<para> <para>
<emphasis role="bold">FPSCR Formats:</emphasis> As of Power ISA version 2.05, the <emphasis role="bold">FPSCR Formats:</emphasis> As of Power ISA version 2.05, the
FPSCR is extended from 32 bits to 64 bits. The fields of the original FPSCR is extended from 32 bits to 64 bits. The fields of the original
32-bit FPSCR are now held in bits 32 - 63 of the 64-bit FPSCR. The 32-bit FPSCR are now held in bits 32&#8211;63 of the 64-bit FPSCR. The
assembly instructions that operate upon the 64-bit FPSCR have either assembly instructions that operate upon the 64-bit FPSCR have either
a W instruction field added to select the operative word for the a W instruction field added to select the operative word for the
instruction (for example, instruction (for example,
@ -2558,7 +2558,7 @@ xml:id="dbdoclet.50655240_pgfId-1156194">
</entry> </entry>
<entry> <entry>
<para>Vector of 16 bytes with a value of either 0 or <para>Vector of 16 bytes with a value of either 0 or
2<superscript>8</superscript>- 1.</para> 2<superscript>8</superscript> &#8211; 1.</para>
</entry> </entry>
</row> </row>
<row> <row>
@ -2610,7 +2610,7 @@ xml:id="dbdoclet.50655240_pgfId-1156194">
</entry> </entry>
<entry> <entry>
<para>Vector of 8 halfwords with a value of either 0 or <para>Vector of 8 halfwords with a value of either 0 or
2<superscript>16</superscript>- 1.</para> 2<superscript>16</superscript> &#8211; 1.</para>
</entry> </entry>
</row> </row>
<row> <row>
@ -2662,7 +2662,7 @@ xml:id="dbdoclet.50655240_pgfId-1156194">
</entry> </entry>
<entry> <entry>
<para>Vector of 4 words with a value of either 0 or <para>Vector of 4 words with a value of either 0 or
2<superscript>32</superscript>- 1.</para> 2<superscript>32</superscript> &#8211; 1.</para>
</entry> </entry>
</row> </row>
<row> <row>
@ -2721,7 +2721,7 @@ xml:id="dbdoclet.50655240_pgfId-1156194">
</entry> </entry>
<entry> <entry>
<para>Vector of 2 doublewords with a value of either 0 or <para>Vector of 2 doublewords with a value of either 0 or
2<superscript>64</superscript>- 1.</para> 2<superscript>64</superscript> &#8211; 1.</para>
</entry> </entry>
</row> </row>
<row revisionflag="changed"> <row revisionflag="changed">
@ -3147,7 +3147,7 @@ xml:id="dbdoclet.50655240_pgfId-1156194">
</listitem> </listitem>
<listitem> <listitem>
<para>IBM EXTENDED PRECISION form provides the same range as double <para>IBM EXTENDED PRECISION form provides the same range as double
precision (about 10<superscript>-308</superscript> to precision (about 10<superscript>&#8211;308</superscript> to
10<superscript>308</superscript>) but more precision (a variable amount, 10<superscript>308</superscript>) but more precision (a variable amount,
about 31 decimal digits or more).</para> about 31 decimal digits or more).</para>
</listitem> </listitem>
@ -3328,9 +3328,9 @@ xml:id="dbdoclet.50655240_pgfId-1156194">
union where the number of bits in the bit field is specified.</para> union where the number of bits in the bit field is specified.</para>
<para>In <para>In
<xref linkend="dbdoclet.50655240_47126" />, a signed range goes from <xref linkend="dbdoclet.50655240_47126" />, a signed range goes from
-2<superscript>w - 1</superscript> to &#8211;2<superscript>w &#8211; 1</superscript> to
2<superscript>w - 1</superscript>- 1 and an unsigned range goes from 0 to 2<superscript>w &#8211; 1</superscript> &#8211; 1 and an unsigned range goes from 0 to
2<superscript>w</superscript>- 1.</para> 2<superscript>w</superscript> &#8211; 1.</para>


<table frame="all" pgwide="1" xml:id="dbdoclet.50655240_47126"> <table frame="all" pgwide="1" xml:id="dbdoclet.50655240_47126">
<title>Bit Field Types</title> <title>Bit Field Types</title>
@ -3365,7 +3365,7 @@ xml:id="dbdoclet.50655240_pgfId-1156194">
<para>signed char</para> <para>signed char</para>
</entry> </entry>
<entry morerows="1"> <entry morerows="1">
<para>1 - 8</para> <para>1&#8211;8</para>
</entry> </entry>
</row> </row>
<row> <row>
@ -3378,7 +3378,7 @@ xml:id="dbdoclet.50655240_pgfId-1156194">
<para>signed short</para> <para>signed short</para>
</entry> </entry>
<entry morerows="1"> <entry morerows="1">
<para>1 - 16</para> <para>1&#8211;16</para>
</entry> </entry>
</row> </row>
<row> <row>
@ -3391,7 +3391,7 @@ xml:id="dbdoclet.50655240_pgfId-1156194">
<para>signed int</para> <para>signed int</para>
</entry> </entry>
<entry morerows="2"> <entry morerows="2">
<para>1 - 32</para> <para>1&#8211;32</para>
</entry> </entry>
</row> </row>
<row> <row>
@ -3409,7 +3409,7 @@ xml:id="dbdoclet.50655240_pgfId-1156194">
<para>signed long</para> <para>signed long</para>
</entry> </entry>
<entry morerows="3"> <entry morerows="3">
<para>1 - 64</para> <para>1&#8211;64</para>
</entry> </entry>
</row> </row>
<row> <row>
@ -3432,7 +3432,7 @@ xml:id="dbdoclet.50655240_pgfId-1156194">
<para>signed __int128</para> <para>signed __int128</para>
</entry> </entry>
<entry morerows="1"> <entry morerows="1">
<para>1 - 128</para> <para>1&#8211;128</para>
</entry> </entry>
</row> </row>
<row> <row>
@ -4235,7 +4235,7 @@ xml:id="dbdoclet.50655240_pgfId-1156194">
</row> </row>
<row> <row>
<entry> <entry>
<para>r3 - r10</para> <para>r3&#8211;r10</para>
</entry> </entry>
<entry> <entry>
<para>Volatile</para> <para>Volatile</para>
@ -4284,7 +4284,7 @@ xml:id="dbdoclet.50655240_pgfId-1156194">
</row> </row>
<row> <row>
<entry> <entry>
<para>r14 - r31<footnote> <para>r14&#8211;r31<footnote>
<para>If a function needs a frame pointer, assigning r31 to <para>If a function needs a frame pointer, assigning r31 to
the role of the frame pointer is recommended.</para> the role of the frame pointer is recommended.</para>
</footnote></para> </footnote></para>
@ -4343,7 +4343,7 @@ xml:id="dbdoclet.50655240_pgfId-1156194">
</row> </row>
<row> <row>
<entry> <entry>
<para>CR0 - CR1</para> <para>CR0&#8211;CR1</para>
</entry> </entry>
<entry> <entry>
<para>Volatile</para> <para>Volatile</para>
@ -4354,7 +4354,7 @@ xml:id="dbdoclet.50655240_pgfId-1156194">
</row> </row>
<row> <row>
<entry> <entry>
<para>CR2 - CR4</para> <para>CR2&#8211;CR4</para>
</entry> </entry>
<entry> <entry>
<para>Nonvolatile</para> <para>Nonvolatile</para>
@ -4365,7 +4365,7 @@ xml:id="dbdoclet.50655240_pgfId-1156194">
</row> </row>
<row> <row>
<entry> <entry>
<para>CR5 - CR7</para> <para>CR5&#8211;CR7</para>
</entry> </entry>
<entry> <entry>
<para>Volatile</para> <para>Volatile</para>
@ -4559,7 +4559,7 @@ xml:id="dbdoclet.50655240_pgfId-1156194">
number, to refer to floating-point register N.</para> number, to refer to floating-point register N.</para>
<para>For the purpose of function calls, the right half of VSX <para>For the purpose of function calls, the right half of VSX
registers, corresponding to the classic floating-point registers (that registers, corresponding to the classic floating-point registers (that
is, vsr0 - vsr31), is volatile.</para> is, vsr0&#8211;vsr31), is volatile.</para>


<table frame="all" pgwide="1" xml:id="dbdoclet.50655240_83567"> <table frame="all" pgwide="1" xml:id="dbdoclet.50655240_83567">
<title>Floating-Point Register Roles for Binary Floating-Point <title>Floating-Point Register Roles for Binary Floating-Point
@ -4601,7 +4601,7 @@ xml:id="dbdoclet.50655240_pgfId-1156194">
</row> </row>
<row> <row>
<entry> <entry>
<para>f1 - f13</para> <para>f1&#8211;f13</para>
</entry> </entry>
<entry> <entry>
<para>Volatile</para> <para>Volatile</para>
@ -4613,7 +4613,7 @@ xml:id="dbdoclet.50655240_pgfId-1156194">
</row> </row>
<row> <row>
<entry> <entry>
<para>f14 - f31</para> <para>f14&#8211;f31</para>
</entry> </entry>
<entry> <entry>
<para>Nonvolatile</para> <para>Nonvolatile</para>
@ -4755,7 +4755,7 @@ xml:id="dbdoclet.50655240_pgfId-1156194">
<tbody> <tbody>
<row> <row>
<entry> <entry>
<para>v0 - v1</para> <para>v0&#8211;v1</para>
</entry> </entry>
<entry> <entry>
<para>Volatile</para> <para>Volatile</para>
@ -4766,7 +4766,7 @@ xml:id="dbdoclet.50655240_pgfId-1156194">
</row> </row>
<row> <row>
<entry> <entry>
<para>v2 - v13</para> <para>v2&#8211;v13</para>
</entry> </entry>
<entry> <entry>
<para>Volatile</para> <para>Volatile</para>
@ -4777,7 +4777,7 @@ xml:id="dbdoclet.50655240_pgfId-1156194">
</row> </row>
<row> <row>
<entry> <entry>
<para>v14 - v19</para> <para>v14&#8211;v19</para>
</entry> </entry>
<entry> <entry>
<para>Volatile</para> <para>Volatile</para>
@ -4788,7 +4788,7 @@ xml:id="dbdoclet.50655240_pgfId-1156194">
</row> </row>
<row> <row>
<entry> <entry>
<para>v20 - v31</para> <para>v20&#8211;v31</para>
</entry> </entry>
<entry> <entry>
<para>Nonvolatile</para> <para>Nonvolatile</para>
@ -5198,7 +5198,7 @@ xml:id="dbdoclet.50655240_pgfId-1156194">
general-purpose register save and restore functions are to be used, the general-purpose register save and restore functions are to be used, the
general-purpose registers shall be saved in a contiguous range. general-purpose registers shall be saved in a contiguous range.
General-purpose register rN is saved in the doubleword located 8 x General-purpose register rN is saved in the doubleword located 8 x
(32-N) bytes before the back-chain word of the previous frame, as shown (32 &#8211; N) bytes before the back-chain word of the previous frame, as shown
in in
<xref linkend="dbdoclet.50655240_97610" />.</para> <xref linkend="dbdoclet.50655240_97610" />.</para>
<para>The General-Purpose Register Save Area is always doubleword <para>The General-Purpose Register Save Area is always doubleword
@ -5215,7 +5215,7 @@ xml:id="dbdoclet.50655240_pgfId-1156194">
saved in arbitrary locations in the stack frame. If the system vector saved in arbitrary locations in the stack frame. If the system vector
register save and restore functions are to be used, the vector register save and restore functions are to be used, the vector
registers shall be saved in a contiguous range. Vector register vN is registers shall be saved in a contiguous range. Vector register vN is
saved in the doubleword located 16 x (32-N) bytes before the saved in the doubleword located 16 x (32 &#8211; N) bytes before the
General-Purpose Register Save Areas plus alignment padding, as shown in General-Purpose Register Save Areas plus alignment padding, as shown in
<xref linkend="dbdoclet.50655240_97610" />.</para> <xref linkend="dbdoclet.50655240_97610" />.</para>
@ -5299,7 +5299,7 @@ xml:id="dbdoclet.50655240_pgfId-1156194">
to the memory location of the next parameter. Therefore, regardless of to the memory location of the next parameter. Therefore, regardless of
type, variable arguments must always be in the same location so that type, variable arguments must always be in the same location so that
they can be found at runtime. The first 8 doublewords are located in they can be found at runtime. The first 8 doublewords are located in
general registers r3 - r10. Any additional doublewords are located in general registers r3&#8211;r10. Any additional doublewords are located in
the stack Parameter Save Area. Alignment requirements such as those for the stack Parameter Save Area. Alignment requirements such as those for
vector types may require the va_list pointer to first be aligned before vector types may require the va_list pointer to first be aligned before
accessing a value.</para> accessing a value.</para>
@ -5469,25 +5469,24 @@ xml:id="dbdoclet.50655240_pgfId-1156194">
<itemizedlist> <itemizedlist>
<listitem> <listitem>
<para>Up to eight arguments can be passed in general-purpose <para>Up to eight arguments can be passed in general-purpose
registers r3 - r10.</para> registers r3&#8211;r10.</para>
</listitem> </listitem>
<listitem> <listitem>
<para>Up to thirteen qualified floating-point arguments can be passed <para>Up to thirteen qualified floating-point arguments can be passed
in floating-point registers f1 - f13 or up to twelve in vector in floating-point registers f1&#8211;f13 or up to twelve in vector
registers v2 - v13.</para> registers v2&#8211;v13.</para>
</listitem> </listitem>
<listitem> <listitem>
<para>Up to thirteen single-precision or double-precision decimal <para>Up to thirteen single-precision or double-precision decimal
floating-point arguments can be passed in floating-point registers f1 floating-point arguments can be passed in floating-point registers
- f13.</para> f1&#8211;f13.</para>
</listitem> </listitem>
<listitem> <listitem>
<para>Up to six quad-precision decimal floating-point arguments can <para>Up to six quad-precision decimal floating-point arguments can
be passed in even-odd floating-point register pairs f2 - f13.</para> be passed in even-odd floating-point register pairs f2&#8211;f13.</para>
</listitem> </listitem>
<listitem> <listitem>
<para>Up to 12 qualified vector arguments can be passed in v2 - <para>Up to 12 qualified vector arguments can be passed in v2&#8211;v13.</para>
v13.</para>
</listitem> </listitem>
</itemizedlist> </itemizedlist>
<para>A qualified floating-point argument corresponds to:</para> <para>A qualified floating-point argument corresponds to:</para>
@ -5595,7 +5594,7 @@ xml:id="dbdoclet.50655240_pgfId-1156194">
<bridgehead>IEEE BINARY 128 EXTENDED PRECISION</bridgehead> <bridgehead>IEEE BINARY 128 EXTENDED PRECISION</bridgehead>
<itemizedlist mark="none"> <itemizedlist mark="none">
<listitem> <listitem>
<para>Up to 12 quad-precision parameters can be passed in v2 - v13. <para>Up to 12 quad-precision parameters can be passed in v2&#8211;v13.
For the purpose of determining qualified floating-point and vector For the purpose of determining qualified floating-point and vector
arguments, an IEEE 128b type shall be considered a "like" vector arguments, an IEEE 128b type shall be considered a "like" vector
type, and a complex _Float128 shall be treated as two individual type, and a complex _Float128 shall be treated as two individual
@ -5620,7 +5619,7 @@ xml:id="dbdoclet.50655240_pgfId-1156194">
frame. When this happens, only the minimum storage needed to contain all frame. When this happens, only the minimum storage needed to contain all
arguments (including allocating space for parameters passed in registers) arguments (including allocating space for parameters passed in registers)
needs to be allocated in the stack frame.</para> needs to be allocated in the stack frame.</para>
<para>General-purpose registers r3 - r10 correspond to the allocation of <para>General-purpose registers r3&#8211;r10 correspond to the allocation of
parameters to the first 8 doublewords of the Parameter Save Areah. parameters to the first 8 doublewords of the Parameter Save Areah.
Specifically, this requires a suitable number of general-purpose Specifically, this requires a suitable number of general-purpose
registers to be skipped to correspond to parameters passed in registers to be skipped to correspond to parameters passed in
@ -5695,7 +5694,7 @@ unnamed parameter:
goto mem_argument goto mem_argument
size = size_in_DW(argument) size = size_in_DW(argument)
reg_size = min(size, 11-gr) reg_size = min(size, 11 &#8211; gr)
pass (GPR, gr, first_n_DW (argument, reg_size)); pass (GPR, gr, first_n_DW (argument, reg_size));
if remaining_members if remaining_members
@ -5720,7 +5719,7 @@ aggregate:
goto use_vrs; goto use_vrs;
n_fregs = n_fregs_for_type(member_type(argument,0)) n_fregs = n_fregs_for_type(member_type(argument,0))
agg_size = members(argument) * n_fregs agg_size = members(argument) * n_fregs
reg_size = min(agg_size, 15-fr) reg_size = min(agg_size, 15 &#8211; fr)
pass(FPR,fr,first_n_DW(argument,reg_size) pass(FPR,fr,first_n_DW(argument,reg_size)
fr += reg_size; fr += reg_size;
gr += size_in_DW (first_n_DW(argument,reg_size)) gr += size_in_DW (first_n_DW(argument,reg_size))
@ -5734,7 +5733,7 @@ aggregate:
if (homogeneous(argument,vector) and members(argument) &lt;= 8) if (homogeneous(argument,vector) and members(argument) &lt;= 8)
use_vrs: use_vrs:
agg_size = members(argument) agg_size = members(argument)
reg_size = min(agg_size, 14-vr) reg_size = min(agg_size, 14 &#8211; vr)
if (gr&amp;1 = 0) // align vector in memory if (gr&amp;1 = 0) // align vector in memory
gr++ gr++
pass(VR,vr,first_n_elements(argument,reg_size); pass(VR,vr,first_n_elements(argument,reg_size);
@ -5752,7 +5751,7 @@ aggregate:
size = size_in_DW(argument) size = size_in_DW(argument)


gpr_struct: gpr_struct:
reg_size = min(size, 11-gr) reg_size = min(size, 11 &#8211; gr)
pass (GPR, gr, first_n_DW (argument, reg_size)); pass (GPR, gr, first_n_DW (argument, reg_size));
gr += size_in_DW (first_n_DW (argument, reg_size)) gr += size_in_DW (first_n_DW (argument, reg_size))
@ -5855,15 +5854,15 @@ double ff, gg, hh;
x = func(c, ff, d, ld, s, gg, t, e, hh); x = func(c, ff, d, ld, s, gg, t, e, hh);


Parameter Register Offset in parameter save area Parameter Register Offset in parameter save area
c r3 0-7 (not stored in parameter save area) c r3 0&#8211;7 (not stored in parameter save area)
ff f1 8-15 (not stored) ff f1 8&#8211;15 (not stored)
d r5 16-23 (not stored) d r5 16&#8211;23 (not stored)
ld f2,f3 24-39 (not stored) ld f2,f3 24&#8211;39 (not stored)
s r8,r9 40-55 (not stored) s r8,r9 40&#8211;55 (not stored)
gg f4 56-63 (not stored) gg f4 56&#8211;63 (not stored)
t (none) 64-79 (stored in parameter save area) t (none) 64&#8211;79 (stored in parameter save area)
e (none) 80-87 (stored) e (none) 80&#8211;87 (stored)
hh f5 88-95 (not stored)</programlisting> hh f5 88&#8211;95 (not stored)</programlisting>
</figure> </figure>
<note> <note>
<para>If a prototype is not in scope:</para> <para>If a prototype is not in scope:</para>
@ -6505,7 +6504,7 @@ or r0, r0, r1</programlisting>
functions:</para> functions:</para>
<itemizedlist> <itemizedlist>
<listitem> <listitem>
<para>Restore all registers and liminted-acces bits that wee saved <para>Restore all registers and limited-access bits that we saved
by the function's prologue.</para> by the function's prologue.</para>
</listitem> </listitem>
<listitem> <listitem>
@ -6631,13 +6630,13 @@ or r0, r0, r1</programlisting>
<section xml:id="dbdoclet.50655240_41483"> <section xml:id="dbdoclet.50655240_41483">
<title>GPR Save and Restore Functions</title> <title>GPR Save and Restore Functions</title>
<para>Each _savegpr0_<emphasis>N</emphasis> routine saves the general registers from <para>Each _savegpr0_<emphasis>N</emphasis> routine saves the general registers from
r<emphasis>N</emphasis>- r31, inclusive. Each routine also saves the LR. r<emphasis>N</emphasis>&#8211;r31, inclusive. Each routine also saves the LR.
The stack frame must not have been allocated yet. When the routine is The stack frame must not have been allocated yet. When the routine is
called, r1 contains the address of the word immediately beyond the end called, r1 contains the address of the word immediately beyond the end
of the general register save area, and r0 must contain the value of the of the general register save area, and r0 must contain the value of the
LR on function entry.</para> LR on function entry.</para>
<para>The _restgpr0_<emphasis>N</emphasis> routines restore the general registers from <para>The _restgpr0_<emphasis>N</emphasis> routines restore the general registers from
r<emphasis>N</emphasis>- r31, and then return to their caller's caller. r<emphasis>N</emphasis>&#8211;r31, and then return to their caller's caller.
The caller's stack frame must already have been deallocated. When the The caller's stack frame must already have been deallocated. When the
routine is called, r1 contains the address of the word immediately routine is called, r1 contains the address of the word immediately
beyond the end of the general register save area, and the LR must beyond the end of the general register save area, and the LR must
@ -6691,11 +6690,11 @@ or r0, r0, r1</programlisting>
ld r31,-8(r1) ld r31,-8(r1)
mtlr r0 mtlr r0
blr</programlisting> blr</programlisting>
<para>Each _savegpr1_N routine saves the general registers from rN - <para>Each _savegpr1_N routine saves the general registers from
r31, inclusive. When the routine is called, r12 contains the address of rN&#8211;r31, inclusive. When the routine is called, r12 contains the address of
the word just beyond the end of the general register save area.</para> the word just beyond the end of the general register save area.</para>
<para>The _restgpr1_N routines restore the general registers from rN - <para>The _restgpr1_N routines restore the general registers from
r31. When the routine is called, r12 contains the address of the word rN&#8211;r31. When the routine is called, r12 contains the address of the word
just beyond the end of the general register save area, superseding the just beyond the end of the general register save area, superseding the
normal use of r12 on a call.</para> normal use of r12 on a call.</para>
<para>A sample implementation of _savegpr1_N and _restgpr1_N <para>A sample implementation of _savegpr1_N and _restgpr1_N
@ -6743,13 +6742,13 @@ or r0, r0, r1</programlisting>
<section xml:id="dbdoclet.50655240_56788"> <section xml:id="dbdoclet.50655240_56788">
<title>FPR Save and Restore Functions</title> <title>FPR Save and Restore Functions</title>
<para>Each _savefpr_<emphasis>N</emphasis> routine saves the floating-point registers from <para>Each _savefpr_<emphasis>N</emphasis> routine saves the floating-point registers from
f<emphasis>N</emphasis>- f31, inclusive. When the routine is called, r1 f<emphasis>N</emphasis>&#8211;f31, inclusive. When the routine is called, r1
contains the address of the word immediately beyond the end of the contains the address of the word immediately beyond the end of the
Floating-Point Register Save Area, which means that the stack frame Floating-Point Register Save Area, which means that the stack frame
must not have been allocated yet. Register r0 must contain the value of must not have been allocated yet. Register r0 must contain the value of
the LR on function entry.</para> the LR on function entry.</para>
<para>The _restfpr_<emphasis>N</emphasis> routines restore the floating-point registers <para>The _restfpr_<emphasis>N</emphasis> routines restore the floating-point registers
from f<emphasis>N</emphasis>- f31, inclusive. When the routine is called, r1 from f<emphasis>N</emphasis>&#8211;f31, inclusive. When the routine is called, r1
contains the address of the word immediately beyond the end of the contains the address of the word immediately beyond the end of the
Floating-Point Register Save Area, which means that the stack frame Floating-Point Register Save Area, which means that the stack frame
must not have been allocated yet.</para> must not have been allocated yet.</para>
@ -6810,7 +6809,7 @@ or r0, r0, r1</programlisting>
</section> </section>
<section xml:id="dbdoclet.50655240_96790"> <section xml:id="dbdoclet.50655240_96790">
<title>Vector Save and Restore Functions</title> <title>Vector Save and Restore Functions</title>
<para>Each _savevr_M routine saves the vector registers from vM - v31 <para>Each _savevr_M routine saves the vector registers from vM&#8211;v31
inclusive. inclusive.
<anchor xml:id="dbdoclet.50655240_page74" xreflabel="" /> <anchor xml:id="dbdoclet.50655240_page74" xreflabel="" />
<anchor xml:id="dbdoclet.50655240_page73" xreflabel="" /> <anchor xml:id="dbdoclet.50655240_page73" xreflabel="" />
@ -6821,7 +6820,7 @@ or r0, r0, r1</programlisting>
this function, r0 contains the address of the word just beyond the end this function, r0 contains the address of the word just beyond the end
of the Vector Register Save Area. The routines leave r0 undisturbed. of the Vector Register Save Area. The routines leave r0 undisturbed.
They modify the value of r12.</para> They modify the value of r12.</para>
<para>The _restvr_M routines restore the vector registers from vM - v31 <para>The _restvr_M routines restore the vector registers from vM&#8211;v31
inclusive. On entry to this function, r0 contains the address of the inclusive. On entry to this function, r0 contains the address of the
word just beyond the end of the Vector Register Save Area. The routines word just beyond the end of the Vector Register Save Area. The routines
leave r0 undisturbed. They modify the value of r12. The following code leave r0 undisturbed. They modify the value of r12. The following code
@ -8080,9 +8079,9 @@ addi r3,r1,p ; R3 = new data area following parameter save area.</pro
described in <xref linkend="dbdoclet.50655240_94513" />.</para> described in <xref linkend="dbdoclet.50655240_94513" />.</para>
<para>All instances of the Power Architecture use the mapping shown in <para>All instances of the Power Architecture use the mapping shown in
<xref linkend="dbdoclet.50655240_94513" /> for encoding registers into <xref linkend="dbdoclet.50655240_94513" /> for encoding registers into
DWARF. DWARF register numbers 32 - 63 and 77 - 108 are also used to DWARF. DWARF register numbers 32&#8211;63 and 77&#8211;108 are also used to
indicate the location of variables in VSX registers vsr0 - vsr31 and vsr32 indicate the location of variables in VSX registers vsr0&#8211;vsr31 and
- vsr63, respectively, in DWARF debug information.</para> vsr32&#8211;vsr63, respectively, in DWARF debug information.</para>


<table frame="all" pgwide="1" xml:id="dbdoclet.50655240_94513"> <table frame="all" pgwide="1" xml:id="dbdoclet.50655240_94513">
<title>Mappings of Common Registers</title> <title>Mappings of Common Registers</title>
@ -8121,10 +8120,10 @@ addi r3,r1,p ; R3 = new data area following parameter save area.</pro
<para>Reg</para> <para>Reg</para>
</entry> </entry>
<entry> <entry>
<para>0 - 31</para> <para>0&#8211;31</para>
</entry> </entry>
<entry> <entry>
<para>r0 - r31</para> <para>r0&#8211;r31</para>
</entry> </entry>
<entry> <entry>
<para>8</para> <para>8</para>
@ -8135,10 +8134,10 @@ addi r3,r1,p ; R3 = new data area following parameter save area.</pro
<para>Reg</para> <para>Reg</para>
</entry> </entry>
<entry> <entry>
<para>32 - 63</para> <para>32&#8211;63</para>
</entry> </entry>
<entry> <entry>
<para>f0 - f31</para> <para>f0&#8211;f31</para>
</entry> </entry>
<entry> <entry>
<para>8</para> <para>8</para>
@ -8205,10 +8204,10 @@ addi r3,r1,p ; R3 = new data area following parameter save area.</pro
<para>Reg</para> <para>Reg</para>
</entry> </entry>
<entry> <entry>
<para>68 - 75</para> <para>68&#8211;75</para>
</entry> </entry>
<entry> <entry>
<para>cr0 - cr7</para> <para>cr0&#8211;cr7</para>
</entry> </entry>
<entry> <entry>
<para>0.5<footnote> <para>0.5<footnote>
@ -8237,10 +8236,10 @@ addi r3,r1,p ; R3 = new data area following parameter save area.</pro
<para>Reg</para> <para>Reg</para>
</entry> </entry>
<entry> <entry>
<para>77 - 108</para> <para>77&#8211;108</para>
</entry> </entry>
<entry> <entry>
<para>vr0 - vr31</para> <para>vr0&#8211;vr31</para>
</entry> </entry>
<entry> <entry>
<para>16</para> <para>16</para>

@ -454,7 +454,7 @@ my_func:
<para>Functions called via symbols with an st_other value of 0 may be <para>Functions called via symbols with an st_other value of 0 may be
called without a valid TOC pointer in r2. Symbols of functions that called without a valid TOC pointer in r2. Symbols of functions that
require a local entry with a valid TOC pointer should generate a symbol require a local entry with a valid TOC pointer should generate a symbol
with an st_other field value of 2 - 6 and both local and global entry with an st_other field value of 2&#8211;6 and both local and global entry
points, even if the global entry point will not be used. (In such a case, points, even if the global entry point will not be used. (In such a case,
the instructions of the global entry setup sequence may optionally be the instructions of the global entry setup sequence may optionally be
initialized with TRAP instructions.)</para> initialized with TRAP instructions.)</para>
@ -716,7 +716,7 @@ my_func:
</tgroup> </tgroup>
</informaltable> </informaltable>
<para>In the following figure, word30 specifies a 30-bit field taking up <para>In the following figure, word30 specifies a 30-bit field taking up
bits 0 - 29 of a word and maintaining 4-byte alignment unless otherwise bits 0&#8211;29 of a word and maintaining 4-byte alignment unless otherwise
indicated.</para> indicated.</para>
<para> </para> <para> </para>
<informaltable frame="all" rowsep="0" colsep="0"> <informaltable frame="all" rowsep="0" colsep="0">
@ -965,7 +965,7 @@ my_func:
</tgroup> </tgroup>
</informaltable> </informaltable>
<para>In the following figure, low24 specifies a 24-bit field taking up <para>In the following figure, low24 specifies a 24-bit field taking up
bits 6 - 29 of a word and maintaining 4-byte alignment. The other bits bits 6&#8211;29 of a word and maintaining 4-byte alignment. The other bits
remain unchanged. A call or unconditional branch instruction is an remain unchanged. A call or unconditional branch instruction is an
example of this field.</para> example of this field.</para>
<para> </para> <para> </para>
@ -1517,7 +1517,7 @@ my_func:
</tgroup> </tgroup>
</informaltable> </informaltable>
<para>In the following figure, low14 specifies a 14-bit field taking up <para>In the following figure, low14 specifies a 14-bit field taking up
bits 16 - 29 and possibly bit 10 (the branch prediction bit) of a word bits 16&#8211;29 and possibly bit 10 (the branch prediction bit) of a word
and maintaining 4-byte alignment. The other bits remain unchanged. A and maintaining 4-byte alignment. The other bits remain unchanged. A
conditional branch instruction is an example usage.</para> conditional branch instruction is an example usage.</para>
<para> </para> <para> </para>
@ -2202,7 +2202,7 @@ my_func:
</row> </row>
<row> <row>
<entry> <entry>
<para>-</para> <para>&#8211;</para>
</entry> </entry>
<entry> <entry>
<para>Denotes 64-bit modulus subtraction.</para> <para>Denotes 64-bit modulus subtraction.</para>
@ -2231,7 +2231,7 @@ my_func:
<para>#hi(value)</para> <para>#hi(value)</para>
</entry> </entry>
<entry> <entry>
<para>Denotes bits 16 - 63 of the indicated value. That <para>Denotes bits 16&#8211;63 of the indicated value. That
is:</para> is:</para>
<para>#hi(x) = x &gt;&gt; 16</para> <para>#hi(x) = x &gt;&gt; 16</para>
</entry> </entry>
@ -2241,7 +2241,7 @@ my_func:
<para>#ha(value)</para> <para>#ha(value)</para>
</entry> </entry>
<entry> <entry>
<para>Denotes the high adjusted value: bits 16 - 63 of the <para>Denotes the high adjusted value: bits 16&#8211;63 of the
indicated value, compensating for #lo( ) being treated as a indicated value, compensating for #lo( ) being treated as a
signed number. That is:</para> signed number. That is:</para>
<para>#ha(x) = (x + 0x8000) &gt;&gt; 16</para> <para>#ha(x) = (x + 0x8000) &gt;&gt; 16</para>
@ -2282,7 +2282,7 @@ my_func:
</entry> </entry>
<entry> <entry>
<para>Represents the base address of the TCB.</para> <para>Represents the base address of the TCB.</para>
<para>tcb = (tp - (TLS_TP_OFFSET + TCB_LENGTH))</para> <para>tcb = (tp &#8211; (TLS_TP_OFFSET + TCB_LENGTH))</para>
</entry> </entry>
</row> </row>
<row> <row>
@ -2396,8 +2396,8 @@ my_func:
fit in the allocated bits.</para> fit in the allocated bits.</para>
</listitem> </listitem>
<listitem> <listitem>
<para>Relocations that refer to half16ds (56 - 66, 87 - 88, 91 - 92, <para>Relocations that refer to half16ds (56&#8211;66, 87&#8211;88, 91&#8211;92,
95 - 96, and 101 - 102) are to be used to direct the linker to look 95&#8211;96, and 101&#8211;102) are to be used to direct the linker to look
at the underlying instruction and treat the field as a DS or DQ at the underlying instruction and treat the field as a DS or DQ
field. ABI-compliant tools should give an error for attempts to field. ABI-compliant tools should give an error for attempts to
relocate an address to a value that is not divisible by 4.</para> relocate an address to a value that is not divisible by 4.</para>
@ -2571,7 +2571,7 @@ my_func:
<para>low24*</para> <para>low24*</para>
</entry> </entry>
<entry> <entry>
<para>(S + A - P) &gt;&gt; 2</para> <para>(S + A &#8211; P) &gt;&gt; 2</para>
</entry> </entry>
</row> </row>
<row> <row>
@ -2585,7 +2585,7 @@ my_func:
<para>low14*</para> <para>low14*</para>
</entry> </entry>
<entry> <entry>
<para>(S + A - P) &gt;&gt; 2</para> <para>(S + A &#8211; P) &gt;&gt; 2</para>
</entry> </entry>
</row> </row>
<row> <row>
@ -2741,7 +2741,7 @@ my_func:
<para>word32*</para> <para>word32*</para>
</entry> </entry>
<entry> <entry>
<para>S + A - P</para> <para>S + A &#8211; P</para>
</entry> </entry>
</row> </row>
<row> <row>
@ -2769,7 +2769,7 @@ my_func:
<para>word32*</para> <para>word32*</para>
</entry> </entry>
<entry> <entry>
<para>L - P</para> <para>L &#8211; P</para>
</entry> </entry>
</row> </row>
<row> <row>
@ -2881,7 +2881,7 @@ my_func:
<para>word30</para> <para>word30</para>
</entry> </entry>
<entry> <entry>
<para>(S + A - P) &gt;&gt; 2</para> <para>(S + A &#8211; P) &gt;&gt; 2</para>
</entry> </entry>
</row> </row>
<row> <row>
@ -2979,7 +2979,7 @@ my_func:
<para>doubleword64</para> <para>doubleword64</para>
</entry> </entry>
<entry> <entry>
<para>S + A - P</para> <para>S + A &#8211; P</para>
</entry> </entry>
</row> </row>
<row> <row>
@ -3007,7 +3007,7 @@ my_func:
<para>doubleword64</para> <para>doubleword64</para>
</entry> </entry>
<entry> <entry>
<para>L - P</para> <para>L &#8211; P</para>
</entry> </entry>
</row> </row>
<row> <row>
@ -3021,7 +3021,7 @@ my_func:
<para>half16*</para> <para>half16*</para>
</entry> </entry>
<entry> <entry>
<para>S + A - .TOC.</para> <para>S + A &#8211; .TOC.</para>
</entry> </entry>
</row> </row>
<row> <row>
@ -3035,7 +3035,7 @@ my_func:
<para>half16</para> <para>half16</para>
</entry> </entry>
<entry> <entry>
<para>#lo(S + A - .TOC.)</para> <para>#lo(S + A &#8211; .TOC.)</para>
</entry> </entry>
</row> </row>
<row> <row>
@ -3049,7 +3049,7 @@ my_func:
<para>half16*</para> <para>half16*</para>
</entry> </entry>
<entry> <entry>
<para>#hi(S + A - .TOC.)</para> <para>#hi(S + A &#8211; .TOC.)</para>
</entry> </entry>
</row> </row>
<row> <row>
@ -3063,7 +3063,7 @@ my_func:
<para>half16*</para> <para>half16*</para>
</entry> </entry>
<entry> <entry>
<para>#ha(S + A - .TOC.)</para> <para>#ha(S + A &#8211; .TOC.)</para>
</entry> </entry>
</row> </row>
<row> <row>
@ -3245,7 +3245,7 @@ my_func:
<para>half16ds*</para> <para>half16ds*</para>
</entry> </entry>
<entry> <entry>
<para>(S + A - .TOC.) &gt;&gt; 2</para> <para>(S + A &#8211; .TOC.) &gt;&gt; 2</para>
</entry> </entry>
</row> </row>
<row> <row>
@ -3259,7 +3259,7 @@ my_func:
<para>half16ds</para> <para>half16ds</para>
</entry> </entry>
<entry> <entry>
<para>#lo(S + A - .TOC.) &gt;&gt; 2</para> <para>#lo(S + A &#8211; .TOC.) &gt;&gt; 2</para>
</entry> </entry>
</row> </row>
<row> <row>
@ -3987,7 +3987,7 @@ my_func:
<para>low24*</para> <para>low24*</para>
</entry> </entry>
<entry> <entry>
<para>(S + A - P) &gt;&gt; 2</para> <para>(S + A &#8211; P) &gt;&gt; 2</para>
</entry> </entry>
</row> </row>
<row> <row>
@ -4031,7 +4031,7 @@ my_func:
<para>half16*</para> <para>half16*</para>
</entry> </entry>
<entry> <entry>
<para>S + A - P</para> <para>S + A &#8211; P</para>
</entry> </entry>
</row> </row>
<row> <row>
@ -4045,7 +4045,7 @@ my_func:
<para>half16</para> <para>half16</para>
</entry> </entry>
<entry> <entry>
<para>#lo(S + A - P)</para> <para>#lo(S + A &#8211; P)</para>
</entry> </entry>
</row> </row>
<row> <row>
@ -4059,7 +4059,7 @@ my_func:
<para>half16*</para> <para>half16*</para>
</entry> </entry>
<entry> <entry>
<para>#hi(S + A - P)</para> <para>#hi(S + A &#8211; P)</para>
</entry> </entry>
</row> </row>
<row> <row>
@ -4073,7 +4073,7 @@ my_func:
<para>half16*</para> <para>half16*</para>
</entry> </entry>
<entry> <entry>
<para>#ha(S + A - P)</para> <para>#ha(S + A &#8211; P)</para>
</entry> </entry>
</row> </row>
<row> <row>
@ -4212,11 +4212,11 @@ ld r3,x@got@l(r3)</programlisting>
the high adjusted, high, and low parts of the GOT offset. (For an the high adjusted, high, and low parts of the GOT offset. (For an
explanation of the meaning of “high adjusted,” see explanation of the meaning of “high adjusted,” see
<xref linkend="dbdoclet.50655241_18894" />). SYMBOL@got@ha corresponds to <xref linkend="dbdoclet.50655241_18894" />). SYMBOL@got@ha corresponds to
bits 32 - 63 of the offset within the global offset table with adjustment bits 32&#8211;63 of the offset within the global offset table with adjustment
for the sign extension of the low-order offset bits. SYMBOL@got@l for the sign extension of the low-order offset bits. SYMBOL@got@l
corresponds to the 16 low-order bits of the offset within the global corresponds to the 16 low-order bits of the offset within the global
offset table.</para> offset table.</para>
<para>The syntax SYMBOL@toc refers to the value (SYMBOL - .TOC.), where <para>The syntax SYMBOL@toc refers to the value (SYMBOL &#8211; .TOC.), where
.TOC. represents the TOC base for the current object file. This provides .TOC. represents the TOC base for the current object file. This provides
the address of the variable whose name is SYMBOL as an offset from the the address of the variable whose name is SYMBOL as an offset from the
TOC base.</para> TOC base.</para>
@ -4433,8 +4433,8 @@ addi r4, r4, lower</programlisting>
the TLS blocks for these are created consecutively and immediately follow the TLS blocks for these are created consecutively and immediately follow
the TCB. The offset of the TLS block of an initially available module the TCB. The offset of the TLS block of an initially available module
from the TCB remains fixed after program start.</para> from the TCB remains fixed after program start.</para>
<para>The tlsoffset(m) values for a module with index m, where m ranges 1 <para>The tlsoffset(m) values for a module with index m, where m ranges
- M, M being the total number of modules, are computed as follows:</para> from 1&#8211;M, M being the total number of modules, are computed as follows:</para>
<programlisting>tlsoffset(1) = round(16, align(1)) <programlisting>tlsoffset(1) = round(16, align(1))
tlsoffset(m + 1) = round(tlsoffset(m) + tlssize(m), align(m + 1))</programlisting> tlsoffset(m + 1) = round(tlsoffset(m) + tlssize(m), align(m + 1))</programlisting>
<itemizedlist> <itemizedlist>
@ -4447,8 +4447,8 @@ tlsoffset(m + 1) = round(tlsoffset(m) + tlssize(m), align(m + 1))</programlistin
<itemizedlist> <itemizedlist>
<listitem> <listitem>
<para>The function ceiling( ) returns the smallest integer greater <para>The function ceiling( ) returns the smallest integer greater
than or equal to its argument, where n is an integer satisfying: n - than or equal to its argument, where n is an integer satisfying:
1 &lt; x ≤ n:</para> n &#8211; 1 &lt; x ≤ n:</para>
</listitem> </listitem>
</itemizedlist> </itemizedlist>
<programlisting>ceiling(x) = n</programlisting> <programlisting>ceiling(x) = n</programlisting>
@ -4467,7 +4467,8 @@ tlsoffset(m + 1) = round(tlsoffset(m) + tlssize(m), align(m + 1))</programlistin
extern void *__tls_get_addr (tls_index *ti);</programlisting> extern void *__tls_get_addr (tls_index *ti);</programlisting>
<para>The thread pointer (TP) is held in r13 and is used to access the <para>The thread pointer (TP) is held in r13 and is used to access the
TCB. The TP is initialized to point 0x7000 bytes past the end of the TCB. TCB. The TP is initialized to point 0x7000 bytes past the end of the TCB.
The TP offset allows for efficient addressing of the TCB and up to 4 KB - The TP offset allows for efficient addressing of the TCB and up to 4 KB
&#8211;
8 B of other thread library information (placed before the TCB).</para> 8 B of other thread library information (placed before the TCB).</para>
<para> <para>
<xref linkend="dbdoclet.50655241_11666" /> shows the region of memory <xref linkend="dbdoclet.50655241_11666" /> shows the region of memory
@ -6861,8 +6862,8 @@ nop</programlisting>
</row> </row>
<row> <row>
<entry nameend="c2" namest="c1"> <entry nameend="c2" namest="c1">
<para>The codes 0xf - 0xfa are reserved. The codes <para>The codes 0xf&#8211;0xfa are reserved. The codes
0xfb - 0xff are reserved for IBM.</para></entry> 0xfb&#8211;0xff are reserved for IBM.</para></entry>
</row> </row>
</tbody> </tbody>
</tgroup> </tgroup>

@ -42,10 +42,10 @@ xml:id="dbdoclet.50655244_pgfId-1095944">
vector elements at a time in 128-bit registers. On a big-endian POWER vector elements at a time in 128-bit registers. On a big-endian POWER
platform, vector elements are loaded from memory into a register so that platform, vector elements are loaded from memory into a register so that
the 0th element occupies the high-order bits of the register, and the the 0th element occupies the high-order bits of the register, and the
(N-1)th element occupies the low-order bits of the register. This is (N &#8211; 1)th element occupies the low-order bits of the register. This is
referred to as big-endian element order. On a little-endian POWER platform, referred to as big-endian element order. On a little-endian POWER platform,
vector elements are loaded from memory such that the 0th element occupies vector elements are loaded from memory such that the 0th element occupies
the low-order bits of the register, and the (N-1)th element occupies the the low-order bits of the register, and the (N &#8211; 1)th element occupies the
high-order bits. This is referred to as little-endian element order.</para> high-order bits. This is referred to as little-endian element order.</para>
<section xml:id="dbdoclet.50655244_39970"> <section xml:id="dbdoclet.50655244_39970">
<title>Vector Data Types</title> <title>Vector Data Types</title>
@ -102,7 +102,7 @@ register vector double vd = vec_splats(*double_ptr);</programlisting>
pointers; these operators are also valid for pointers to vector pointers; these operators are also valid for pointers to vector
types.</para> types.</para>
<para>The traditional C/C++ operators are defined on vector types with “do <para>The traditional C/C++ operators are defined on vector types with “do
all” semantics for unary and binary +, unary and binary -, binary *, binary all” semantics for unary and binary +, unary and binary &#8211;, binary *, binary
%, and binary / as well as the unary and binary logical and comparison %, and binary / as well as the unary and binary logical and comparison
operators.</para> operators.</para>
<para>For unary operators, the specified operation is performed on the <para>For unary operators, the specified operation is performed on the
@ -497,7 +497,7 @@ register vector double vd = vec_splats(*double_ptr);</programlisting>
<para>vspltb, vsplth, vspltw</para> <para>vspltb, vsplth, vspltw</para>
</entry> </entry>
<entry> <entry>
<para>Subtract the element number from N-1 for LE.</para> <para>Subtract the element number from N &#8211; 1 for LE.</para>
</entry> </entry>
</row> </row>
<row> <row>
@ -557,7 +557,7 @@ register vector double vd = vec_splats(*double_ptr);</programlisting>
</entry> </entry>
<entry> <entry>
<para>For LE, the bytes are loaded left justified then shifted <para>For LE, the bytes are loaded left justified then shifted
right 16-cnt bytes or rotated left cnt bytes. Let “cnt” be the right 16 &#8211; cnt bytes or rotated left cnt bytes. Let “cnt” be the
number of bytes specified to be loaded by vec_xl_len_r.</para> number of bytes specified to be loaded by vec_xl_len_r.</para>
</entry> </entry>
</row> </row>
@ -569,7 +569,7 @@ register vector double vd = vec_splats(*double_ptr);</programlisting>
<para> </para> <para> </para>
</entry> </entry>
<entry> <entry>
<para>For LE, the bytes are shifted left 16-cnt bytes or rotated <para>For LE, the bytes are shifted left 16 &#8211; cnt bytes or rotated
right cnt bytes so they are left justified to be stored. Let right cnt bytes so they are left justified to be stored. Let
“cnt” be the number of bytes specified to be stored by “cnt” be the number of bytes specified to be stored by
vec_xst_len_r.</para> vec_xst_len_r.</para>

Loading…
Cancel
Save