diff --git a/Intrinsics_Reference/ch_biendian.xml b/Intrinsics_Reference/ch_biendian.xml
index ac088a9..dd368fc 100644
--- a/Intrinsics_Reference/ch_biendian.xml
+++ b/Intrinsics_Reference/ch_biendian.xml
@@ -188,7 +188,8 @@ vector unsigned __int128 x = { (((unsigned __int128)0x1020304050607080) <<
One vector type may be cast to another vector type without
restriction. Such a cast is simply a reinterpretation of the
- bits, and does not change the data.
+ bits, and does not change the data. There are no default
+ conversions for vector types.
Compilers are expected to recognize and optimize multiple
@@ -495,12 +496,14 @@ register vector double vd = vec_splats(*double_ptr);
valid for pointers to vector types.
- The traditional C/C++ operators are defined on vector types
- for unary and binary +
,
- unary and binary –, binary *
, binary
- %
, and binary /
as well as the unary
- and binary shift, logical and comparison operators, and the
- ternary ?:
operator. These operators perform their
+ The traditional C/C++ unary operators (+
+ -
, and ~
), are defined on vector types.
+ The traditional C/C++ binary operators (+
,
+ -
, *
, %
, /
,
+ shift, logical, and comparison) and the ternary operator
+ (?:
)
+ are defined on like vector types.
+ Other than ?:
, these operators perform their
operations "elementwise" on the base elements of the operands,
as follows.
@@ -533,6 +536,27 @@ a = a + b;
vector signed int a, b;
a = vec_add (a, b);
+
+ For the ternary operator (?:
), the first operand must
+ be an integral type, used to select between the second and third
+ operands which must be of the same vector type.
+ The result of the ternary operator will also have that type.
+ For example,
+
+int test_value;
+vector signed int a, b, r;
+r = test_value ? a : b;
+
+ produces the same result as
+
+int test_value;
+vector signed int a, b, r;
+if (test_value)
+ r = a;
+else
+ r = b;
+
+
Further, the array reference operator may be applied to vector
data types, yielding an l-value corresponding to the specified