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 *
may
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
(ISA 2.07 only)
(ISA 2.07 only)
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_xl
and vec_xst
vector built-in
+
and
+
+ vector built-in
functions to access unaligned data streams. See the
descriptions of these instructions in 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.
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.
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.
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