Skip to content
Branch of the spec repo scoped to discussion of SIMD in WebAssembly
Branch: master
Clone or download
zeux and dtig Add v8x16.shuffle1 instruction (#71)
This change adds a variable shuffle instruction to SIMD proposal.

When indices are out of range, the result is specified as 0 for each
lane. This matches hardware behavior on ARM and RISCV architectures.

On x86_64 and MIPS, the hardware provides instructions that can select 0
when the high bit is set to 1 (x86_64) or any of the two high bits are
set to 1 (MIPS). On these architectures, the backend is expected to emit
a pair of instructions, saturating add (saturate(x + (128 - 16)) for
x86_64) and permute, to emulate the proposed behavior.

To distinguish variable shuffles with immediate shuffles, existing
v8x16.shuffle instruction is renamed to v8x16.shuffle2_imm to be
explicit about the fact that it shuffles two vectors with an immediate
argument.

This naming scheme allows for adding variants like v8x16.shuffle2 and
v8x16.shuffle1_imm in the future.

Fixes #68.
Contributes to #24.
Fixes #11.
Latest commit 7f4d54d Mar 27, 2019
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
document
interpreter
papers Rectify licensing (#496) Jun 13, 2017
proposals/simd
test
.gitattributes Adjust .gitattribute Mar 22, 2017
.gitignore
.gitmodules
.travis.yml
Contributing.md Fix an obvious broken link. Aug 13, 2015
LICENSE
README.md
deploy_key.enc

README.md

SIMD proposal for WebAssembly

This repository holds a proposal for adding 128-bit SIMD support to WebAssembly. It is a copy of the WebAssembly/spec repository with the addition of a proposals/simd directory. The proposal describes how 128-bit packed SIMD types and operations can be added to WebAssembly. It is based on previous work on SIMD.js in the Ecma TC39 ECMAScript committee and the portable SIMD specification that resulted.

The proposed specification has the details.

Design issue

Original README from upstream repo follows...

spec

This repository holds a prototypical reference implementation for WebAssembly, which is currently serving as the official specification. Eventually, we expect to produce a specification either written in human-readable prose or in a formal specification language.

It also holds the WebAssembly testsuite, which tests numerous aspects of conformance to the spec.

View the work-in-progress spec at webassembly.github.io/spec.

At this time, the contents of this repository are under development and known to be "incomplet and inkorrect".

Participation is welcome. Discussions about new features, significant semantic changes, or any specification change likely to generate substantial discussion should take place in the WebAssembly design repository first, so that this spec repository can remain focused. And please follow the guidelines for contributing.

You can’t perform that action at this time.