Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(9)

Unified Diff: native_client_sdk/src/doc/reference/pnacl-c-cpp-language-support.rst

Issue 255813009: PNaCl SIMD documentation: improve documentation on casts and __builtin_convertvector. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Number of elements must match. Created 6 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « native_client_sdk/doc_generated/reference/pnacl-c-cpp-language-support.html ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 1e0feaa080cf2744a729cc738e544f7612d8d598..46610fcda72bae7be312241ae84cafdddc2770f0 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
@@ -227,10 +227,10 @@ Vector types can be used through the ``vector_size`` attribute:
.. naclcode::
- typedef int v4si __attribute__((vector_size(16)));
- v4si a = {1,2,3,4};
- v4si b = {5,6,7,8};
- v4si c, d, e;
+ typedef int v4s __attribute__((vector_size(16)));
+ 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;
@@ -240,11 +240,11 @@ elements of all ``0`` or all ``1``:
.. naclcode::
- typedef int v4si __attribute__((vector_size(16)));
- v4si snip(v2si in) {
- v4si limit = {32,64,128,256};
- vs4i mask = in > limit;
- vs4i ret = in & mask;
+ typedef int v4s __attribute__((vector_size(16)));
+ v4s snip(v4s in) {
+ v4s limit = {32,64,128,256};
+ v4s mask = in > limit;
+ v4s ret = in & mask;
return ret;
}
@@ -286,15 +286,33 @@ The following operators are supported on vectors:
| ``=`` |
+----------------------------------------------+
-Furthermore, C-style casts can be used for:
+C-style casts can be used to convert one vector type to another without
+modifying the underlying bits. ``__builtin_convertvector`` can be used
+to convert from one type to another provided both types have the same
+number of elements, truncating when converting from floating-point to
+integer.
-* Truncation.
-* Zero- and sign-extension.
-* Conversion to/from floating-point and signed/unsigned integer.
+.. naclcode::
+
+ typedef unsigned v4u __attribute__((vector_size(16)));
+ typedef float v4f __attribute__((vector_size(16)));
+ v4u a = {0x3f19999a,0x40000000,0x40490fdb,0x66ff0c30};
+ v4f b = (v4f) a; /* b = {0.6,2,3.14159,6.02214e+23} */
+ v4u c = __builtin_convertvector(b, v4u); /* c = {0,2,3,0} */
It is also possible to use array-style indexing into vectors to extract
individual elements using ``[]``.
+.. naclcode::
+
+ typedef unsigned v4u __attribute__((vector_size(16)));
+ template<typename T>
+ void print(const T v) {
+ for (size_t i = 0; i != sizeof(v) / sizeof(v[0]); ++i)
+ std::cout << v[i] << ' ';
+ std::cout << std::endl;
+ }
+
Vector shuffles are currently unsupported but will be added soon.
Auto-Vectorization
« no previous file with comments | « native_client_sdk/doc_generated/reference/pnacl-c-cpp-language-support.html ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698