diff --git a/Intrinsics_Reference/ch_biendian.xml b/Intrinsics_Reference/ch_biendian.xml
index dd368fc..a8557cf 100644
--- a/Intrinsics_Reference/ch_biendian.xml
+++ b/Intrinsics_Reference/ch_biendian.xml
@@ -180,8 +180,9 @@ vector unsigned __int128 x = { (((unsigned __int128)0x1020304050607080) <<
to access the Nth vector element from a
vector pointer. The dereference operator *
may
not be used to access data that is not
- aligned at least to a quadword boundary. Built-in functions
- such as vec_xl
and vec_xst
are
+ aligned at least to a quadword boundary. Built-in functions such as
+
and
+
and
provided for unaligned data access. Please refer to for an example.
@@ -796,238 +797,238 @@ a[3] = c;
- vec_bperm
+
- vec_mergeh
+
- vec_signedo
+
- vec_cipher_be
+
- vec_mergel
+
- vec_sld
+
- vec_cipherlast_be
+
- vec_mergeo
+
- vec_sldw
+
- vec_doublee
+
- vec_mfvscr
+
- vec_sll
+
- vec_doubleh
+
- vec_mule
+
- vec_slo
+
- vec_doublel
+
- vec_mulo
+
- vec_slv
+
- vec_doubleo
+
- vec_ncipher_be
+
- vec_splat
+
- vec_extract
+
- vec_ncipherlast_be
+
- vec_srl
+
- vec_extract_fp32_from_shorth
+
- vec_pack
+
- vec_sro
+
- vec_extract_fp32_from_shortl
+
- vec_pack_to_short_fp32
+
- vec_srv
+
- vec_extract4b
+
- vec_packpx
+
- vec_sum2s
+
- vec_first_match_index
+
- vec_packs
+
- vec_sums
+
- vec_first_match_or_eos_index
+
- vec_packsu
+
- vec_unpackh
+
- vec_first_mismatch_index
+
- vec_perm
+
- vec_unpackl
+
- vec_first_mismatch_or_eos_index
+
- vec_permxor
+
- vec_unsigned2
+
- vec_float2
+
- vec_pmsum_be
+
- vec_unsignede
+
- vec_floate
+
- vec_reve
+
- vec_unsignedo
+
- vec_floato
+
- vec_sbox_be
+
- vec_xl (ISA 2.07 only)
+
(ISA 2.07 only)
- vec_gb
+
- vec_shasigma_be
+
- vec_xl_be
+
- vec_insert
+
- vec_signed2
+
- vec_xst (ISA 2.07 only)
+
(ISA 2.07 only)
- vec_insert4b
+
- vec_signede
+
- vec_xst_be
+
- vec_mergee
+
@@ -1056,7 +1057,8 @@ a[3] = c;
Before the bi-endian programming model was introduced, the
vec_lvsl
and vec_lvsr
intrinsics
were supported. These could be used in conjunction with
- vec_perm
and VMX load and store instructions for
+
+ and VMX load and store instructions for
unaligned access. The vec_lvsl
and
vec_lvsr
interfaces are deprecated in accordance
with the interfaces specified here. For compatibility, the
@@ -1097,7 +1099,7 @@ a[3] = c;
- vec_ld
+
lvx
@@ -1108,7 +1110,7 @@ a[3] = c;
- vec_lde
+
lvebx, lvehx, lvewx
@@ -1119,7 +1121,7 @@ a[3] = c;
- vec_ldl
+
lvxl
@@ -1130,7 +1132,7 @@ a[3] = c;
- vec_st
+
stvx
@@ -1141,7 +1143,7 @@ a[3] = c;
- vec_ste
+
stvebx, stvehx, stvewx
@@ -1152,7 +1154,7 @@ a[3] = c;
- vec_stl
+
stvxl
@@ -1166,7 +1168,9 @@ a[3] = c;
Instead, it is recommended that programmers use the
- vec_xl
and vec_xst
vector built-in
+
and
+
+ vector built-in
functions to access unaligned data streams. See the
descriptions of these instructions in for further description and
@@ -1479,35 +1483,44 @@ a[3] = c;
vec_sld and vec_sro are not bi-endian
One oddity in the bi-endian vector programming model is that
- vec_sld
has big-endian semantics for code
+
+ has big-endian semantics for code
compiled for both big-endian and little-endian targets. That
- is, any code that uses vec_sld
without guarding
+ is, any code that uses
+
+ without guarding
it with a test on endianness is likely to be incorrect.
At the time that the bi-endian model was being developed, it
was discovered that existing code in several Linux packages
- was using vec_sld
in order to perform multiplies,
+ was using
+
+ in order to perform multiplies,
or to otherwise shift portions of base elements left. A
straightforward little-endian implementation of
- vec_sld
would concatenate the two input vectors
+
+ would concatenate the two input vectors
in reverse order and shift bytes to the right. This would
only give compatible results for vector char
types. Those using this intrinsic as a cheap multiply, or to
shift bytes within larger elements, would see different
results on little-endian versus big-endian with such an
implementation. Therefore it was decided that
- vec_sld
would not have a bi-endian
+
+ would not have a bi-endian
implementation.
- vec_sro
is not bi-endian for similar reasons.
+
+ is not bi-endian for similar reasons.
Limitations on bi-endianness of vec_perm
- The vec_perm
intrinsic is bi-endian, provided
+ The
+ intrinsic is bi-endian, provided
that it is used to reorder entire elements of the input
vectors.
@@ -2533,7 +2546,8 @@ a[3] = c;
- The lesson here is to only use vec_perm
to
+ The lesson here is to only use
+
to
reorder entire elements of a vector. If you must use vec_perm
for another purpose, your code must include a test for
endianness and separate algorithms for big- and
diff --git a/Intrinsics_Reference/ch_vec_reference.xml b/Intrinsics_Reference/ch_vec_reference.xml
index c049ac8..eba5708 100644
--- a/Intrinsics_Reference/ch_vec_reference.xml
+++ b/Intrinsics_Reference/ch_vec_reference.xml
@@ -10891,8 +10891,7 @@ xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="VIPR.vec-ref">
set to the number of leading zeros of the corresponding element
of a.
- An example for input a
- of type vector unsigned char follows:
+ An example follows:
@@ -11286,8 +11285,7 @@ xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="VIPR.vec-ref">
element) of a that have a
least-significant bit of zero.
- An example for input a
- of type vector unsigned char follows:
+ An example follows:
@@ -11804,8 +11802,7 @@ xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="VIPR.vec-ref">
element) of a that have a
least-significant bit of zero.
- An example for input a
- of type vector unsigned char follows:
+ An example follows:
@@ -12792,8 +12789,8 @@ xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="VIPR.vec-ref">
the converted values of elements 0 and 2 of a.
- An example for input a
- of type vector signed int follows:
+ An example where a
+ is of type vector signed int follows:
@@ -13019,8 +13016,8 @@ xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="VIPR.vec-ref">
the converted values of elements 0 and 1 of a.
- An example for input a
- of type vector signed int follows:
+ An example where a
+ is of type vector signed int follows:
@@ -13252,8 +13249,8 @@ xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="VIPR.vec-ref">
the converted values of elements 2 and 3 of a.
- An example for input a
- of type vector signed int follows:
+ An example where a
+ is of type vector signed int follows:
@@ -13485,8 +13482,8 @@ xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="VIPR.vec-ref">
the converted values of elements 1 and 3 of a.
- An example for input a
- of type vector signed int follows:
+ An example where a
+ is of type vector signed int follows:
@@ -15318,8 +15315,7 @@ xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="VIPR.vec-ref">
element index of the position of the first character match in
natural element order. If no match, returns the number of
characters as an element count in the vector argument.
- An example for input a
- of type vector unsigned char follows:
+ An example follows:
@@ -15790,8 +15786,7 @@ xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="VIPR.vec-ref">
either the first character match or an end-of-string (EOS)
terminator. If no match or terminator, returns the number of
characters as an element count in the vector argument.
- An example for input a
- of type vector unsigned char follows:
+ An example follows:
@@ -16329,8 +16324,7 @@ xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="VIPR.vec-ref">
element index of the position of the first character mismatch in
natural element order. If no mismatch, returns the number of
characters as an element count in the vector argument.
- An example for input a
- of type vector unsigned char follows:
+ An example follows:
@@ -16785,8 +16779,7 @@ xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="VIPR.vec-ref">
either the first character mismatch or an end-of-string (EOS)
terminator. If no mismatch or terminator, returns the number of
characters as an element count in the vector argument.
- An example for input a
- of type vector unsigned char follows:
+ An example follows:
@@ -27336,8 +27329,7 @@ xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="VIPR.vec-ref">
is set to the exclusive-OR of byte elements x
of a and y
of b.
- An example for input a
- of type vector unsigned char follows:
+ An example follows:
@@ -39299,159 +39291,11 @@ xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="VIPR.vec-ref">
of r is the value of the corresponding
element of the most-significant half of a.
- An example for input a
- of type vector signed int follows:
-
-
-
-
-
-
-
-
-
-
-
-
- doubleword index
-
-
- 0
-
-
- 1
-
-
-
-
- word index
-
-
- 0
-
-
- 1
-
-
- 2
-
-
- 3
-
-
-
-
-
-
- r
-
-
- 10111213
-
-
- 24252627
-
-
- ????????
-
-
- ????????
-
-
-
-
- a
-
-
- 0000000010111213
-
-
- 0000000024252627
-
-
-
-
-
-
If a is a floating-point vector,
the value of each element of r is the
value of the corresponding element of the most-significant half of
a, widened to the result
precision.
- An example for input a
- of type vector float follows:
-
-
-
-
-
-
-
-
-
-
-
-
- doubleword index
-
-
- 0
-
-
- 1
-
-
-
-
- word index
-
-
- 0
-
-
- 1
-
-
- 2
-
-
- 3
-
-
-
-
-
-
- r
-
-
- -2.71828182
-
-
- 3.14159265
-
-
- ????????
-
-
- ????????
-
-
-
-
- a
-
-
- -2.71828182
-
-
- 3.14159265
-
-
-
-
-
-
If a is a pixel vector, the value
of each element of r is taken from the
corresponding element of the most-significant half of
role="bold">a.
- An example follows:
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+ Endian considerations:
+ The "high" half of a vector with n elements is the
+ first n/2 elements of the vector. For little
+ endian, these elements are in the rightmost half of the vector. For
+ big endian, these elements are in the leftmost half of the vector.
+
+
+
+ vupklsh
+ vec_unpackh
+
+
+ vupkhsh
+ vec_unpackh
+
+
+ vupklpx
+ vec_unpackh
+
+
+ vupkhpx
+ vec_unpackh
+
+
+ vupklsw
+ vec_unpackh
+
+
+ vupkhsw
+ vec_unpackh
+
+
+ vupklsb
+ vec_unpackh
+
+
+ vupkhsb
+ vec_unpackh
+
+
+ xxsldwi
+ vec_unpackh
+
+
+ xvcvspdp
+ vec_unpackh
+
+
+
+ Supported type signatures for vec_unpackh
+
+
+
+
+
- word index
-
-
- 0
+
+ r
+
-
- 1
+
+
+ a
+
-
- 2
+
+ Example LE
+ Implementation
-
- 3
+
+ Example BE
+ Implementation
+
+
- halfword index
+ vector bool short
-
- 0
-
-
- 1
-
-
- 2
-
-
- 3
-
-
- 4
-
-
- 5
-
-
- 6
-
-
- 7
-
-
-
-
-
-
- a
-
-
- 1234
-
-
- 2567
-
-
- 489A
-
-
- 8BCD
-
-
- ????
-
-
- ????
-
-
- ????
-
-
- ????
-
-
-
-
- unpack halfwords to words
-
-
- 1234
-
-
- 2567
-
-
- 489A
-
-
- 8BCD
-
-
-
-
- as bits
-
-
- 0001001000110100
-
-
- 0010010101100111
-
-
- 0100100010011010
-
-
- 1000101111001101
-
-
-
-
- as 1-5-5-5
-
-
- 0
-
-
- 00100
-
-
- 10001
-
-
- 10100
-
-
- 0
-
-
- 01001
-
-
- 01011
-
-
- 00111
-
-
- 0
-
-
- 10010
-
-
- 00100
-
-
- 11010
-
-
- 1
-
-
- 00010
-
-
- 11110
-
-
- 01101
-
-
-
-
- r
-
-
- 00041114
-
-
- 00090B07
-
-
- 0012041A
-
-
- FF021E0D
-
-
-
-
-
-
-
- Endian considerations:
- The "high" half of a vector with n elements is the
- first n/2 elements of the vector. For little
- endian, these elements are in the rightmost half of the vector. For
- big endian, these elements are in the leftmost half of the vector.
-
-
-
- vupklsh
- vec_unpackh
-
-
- vupkhsh
- vec_unpackh
-
-
- vupklpx
- vec_unpackh
-
-
- vupkhpx
- vec_unpackh
-
-
- vupklsw
- vec_unpackh
-
-
- vupkhsw
- vec_unpackh
-
-
- vupklsb
- vec_unpackh
-
-
- vupkhsb
- vec_unpackh
-
-
- xxsldwi
- vec_unpackh
-
-
- xvcvspdp
- vec_unpackh
-
-
-
- Supported type signatures for vec_unpackh
-
-
-
-
-
-
-
-
-
- r
-
-
-
-
- a
-
-
-
- Example LE
- Implementation
-
-
- Example BE
- Implementation
-
-
-
-
-
-
- vector bool short
-
-
- vector bool char
+
+ vector bool char
@@ -39949,159 +39574,11 @@ xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="VIPR.vec-ref">
of r is the value of the corresponding
element of the least-significant half of a.
- An example for input a
- of type vector signed int follows:
-
-
-
-
-
-
-
-
-
-
-
-
- doubleword index
-
-
- 0
-
-
- 1
-
-
-
-
- word index
-
-
- 0
-
-
- 1
-
-
- 2
-
-
- 3
-
-
-
-
-
-
- r
-
-
- ????????
-
-
- ????????
-
-
- 38393A3B
-
-
- 4C4D4E4F
-
-
-
-
- a
-
-
- 0000000038393A3B
-
-
- 000000004C4D4E4F
-
-
-
-
-
-
If a is a floating-point vector,
the value of each element of r is the
value of the corresponding element of the least-significant half of
a, widened to the result
precision.
- An example for input a
- of type vector float follows:
-
-
-
-
-
-
-
-
-
-
-
-
- doubleword index
-
-
- 0
-
-
- 1
-
-
-
-
- word index
-
-
- 0
-
-
- 1
-
-
- 2
-
-
- 3
-
-
-
-
-
-
- r
-
-
- ????????
-
-
- ????????
-
-
- 6.0221409e+23
-
-
- 1.61803398875
-
-
-
-
- a
-
-
- 6.0221409e+23
-
-
- 1.61803398875
-
-
-
-
-
-
If a is a pixel vector, the value
of each element of r is taken from the
corresponding element of the least-significant half of
role="bold">a.
- An example follows:
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- word index
-
-
- 0
-
-
- 1
-
-
- 2
-
-
- 3
-
-
-
-
- halfword index
-
-
- 0
-
-
- 1
-
-
- 2
-
-
- 3
-
-
- 4
-
-
- 5
-
-
- 6
-
-
- 7
-
-
-
-
-
-
- a
-
-
- ????
-
-
- ????
-
-
- ????
-
-
- ????
-
-
- DCB8
-
-
- A984
-
-
- 7652
-
-
- 4321
-
-
-
-
- unpack halfwords to words
-
-
- DCB8
-
-
- A984
-
-
- 7652
-
-
- 4321
-
-
-
-
- as bits
-
-
- 1101110010111000
-
-
- 1010100110000100
-
-
- 0111011001010010
-
-
- 0100001100100001
-
-
-
-
- as 1-5-5-5
-
-
- 1
-
-
- 10111
-
-
- 00101
-
-
- 11000
-
-
- 1
-
-
- 01010
-
-
- 01100
-
-
- 00100
-
-
- 0
-
-
- 11101
-
-
- 10010
-
-
- 10010
-
-
- 0
-
-
- 10000
-
-
- 11001
-
-
- 00001
-
-
-
-
- r
-
-
- FF170518
-
-
- FF0A0C04
-
-
- 001D1212
-
-
- 00101901
-
-
-
-
-
-
-
Endian considerations:
The "high" half of a vector with n elements is the
first n/2 elements of the vector. For little