aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDan Gohman <sunfish@mozilla.com>2015-05-12 15:41:58 -0700
committerDan Gohman <sunfish@mozilla.com>2015-05-14 08:26:07 -0700
commitc3e8d2cc7370cab786a4ce6ed48ef15ec51019bf (patch)
tree96f7371159be390ffddc4ac5909bb407f3cc0fac
parentfac3a4ca2be9104a4b3780f032dcd2341ae738c7 (diff)
downloadnanowasm-design-c3e8d2cc7370cab786a4ce6ed48ef15ec51019bf.tar.gz
Materialize the section on "Long SIMD".
This is meant to address the original concern in https://github.com/WebAssembly/spec/issues/41
-rw-r--r--FutureFeatures.md24
1 files changed, 22 insertions, 2 deletions
diff --git a/FutureFeatures.md b/FutureFeatures.md
index 0ec2d13..47836fa 100644
--- a/FutureFeatures.md
+++ b/FutureFeatures.md
@@ -93,8 +93,28 @@ This is covered in the [tooling](Tooling.md) section.
## Asynchronous Signals
* TODO
-## Non-fixed-width SIMD
- * TODO
+## "Long SIMD"
+* The initial SIMD API will be a "short SIMD" API, centered around fixed-width
+ 128-bit types and explicit SIMD operations. This is quite portable and useful,
+ but it won't be able to deliver the full performance capabilities of some of
+ today's popular hardware. There is an opportunity for someone to propose a
+ "long SIMD" model which will generalize to wider hardware vector lengths make
+ more natural use of advanced features like vector lane predication,
+ gather/scatter, and so on. Interesting questions to ask of such an model will
+ include:
+ * How will this model map onto popular modern SIMD hardware architectures?
+ * What is this model's relationship to other hardware parallelism features,
+ such as GPUs and threads with shared memory?
+ * How will this model be used from higher-level programming languages?
+ For example, the C++ committee is considering a wide variety of possible
+ approaches; which of them might be supported by the model?
+ * What is the relationship to the "short SIMD" API? "None" may be an
+ acceptable answer, but it's something to think about.
+ * What non-determinism does this model introduce into the overall platform?
+ * What happens when code uses long SIMD on a hardware platform which doesn't
+ support it? Reasonable options may include emulating it without the
+ benefit of hardware acceleration, or indicating a lack of support through
+ feature tests.
## Operations which may not be available or may not perform well on all platforms
* Fused multiply-add.