| Index: native_client_sdk/src/doc/reference/pnacl-c-cpp-language-support.rst
|
| diff --git a/native_client_sdk/src/doc/reference/pnacl-c-cpp-language-support.rst b/native_client_sdk/src/doc/reference/pnacl-c-cpp-language-support.rst
|
| index 3bece15a604112ad7c03177c38828e8d686e47ab..337a962bc192bea08577afccb493760b5f3a6a7b 100644
|
| --- a/native_client_sdk/src/doc/reference/pnacl-c-cpp-language-support.rst
|
| +++ b/native_client_sdk/src/doc/reference/pnacl-c-cpp-language-support.rst
|
| @@ -232,9 +232,8 @@ Vector types can be used through the ``vector_size`` attribute:
|
| v4s a = {1,2,3,4};
|
| v4s b = {5,6,7,8};
|
| v4s c, d, e;
|
| - c = b + 1; /* c = b + {1,1,1,1}; */
|
| - d = 2 * b; /* d = {2,2,2,2} * b; */
|
| - e = c + d;
|
| + c = a + b; /* c = {6,8,10,12} */
|
| + d = b >> a; /* d = {2,1,0,0} */
|
|
|
| Vector comparisons are represented as a bitmask as wide as the compared
|
| elements of all ``0`` or all ``1``:
|
| @@ -335,21 +334,32 @@ to the number of indices specified.
|
| // identity operation - return 4-element vector v1.
|
| __builtin_shufflevector(v1, v1, 0, 1, 2, 3)
|
|
|
| - // "Splat" element 0 of V1 into a 4-element result.
|
| - __builtin_shufflevector(V1, V1, 0, 0, 0, 0)
|
| + // "Splat" element 0 of v1 into a 4-element result.
|
| + __builtin_shufflevector(v1, v1, 0, 0, 0, 0)
|
|
|
| - // Reverse 4-element vector V1.
|
| - __builtin_shufflevector(V1, V1, 3, 2, 1, 0)
|
| + // Reverse 4-element vector v1.
|
| + __builtin_shufflevector(v1, v1, 3, 2, 1, 0)
|
|
|
| - // Concatenate every other element of 4-element vectors V1 and V2.
|
| - __builtin_shufflevector(V1, V2, 0, 2, 4, 6)
|
| + // Concatenate every other element of 4-element vectors v1 and v2.
|
| + __builtin_shufflevector(v1, v2, 0, 2, 4, 6)
|
|
|
| - // Concatenate every other element of 8-element vectors V1 and V2.
|
| - __builtin_shufflevector(V1, V2, 0, 2, 4, 6, 8, 10, 12, 14)
|
| + // Concatenate every other element of 8-element vectors v1 and v2.
|
| + __builtin_shufflevector(v1, v2, 0, 2, 4, 6, 8, 10, 12, 14)
|
|
|
| // Shuffle v1 with some elements being undefined
|
| __builtin_shufflevector(v1, v1, 3, -1, 1, -1)
|
|
|
| +One common use of ``__builtin_shufflevector`` is to perform
|
| +vector-scalar operations:
|
| +
|
| +.. naclcode::
|
| +
|
| + typedef int v4s __attribute__((vector_size(16)));
|
| + v4s shift_right_by(v4s shift_me, int shift_amount) {
|
| + v4s tmp = {shift_amount};
|
| + return shift_me >> __builtin_shuffle_vector(tmp, tmp, 0, 0, 0, 0);
|
| + }
|
| +
|
| Auto-Vectorization
|
| ------------------
|
|
|
|
|