Closed Bug 1669938 Opened 4 years ago Closed 4 years ago

Promote accepted SIMD instructions

Categories

(Core :: JavaScript: WebAssembly, enhancement, P3)

enhancement

Tracking

()

RESOLVED FIXED
83 Branch
Tracking Status
firefox83 --- fixed

People

(Reporter: lth, Assigned: lth)

References

Details

Attachments

(4 files)

(Copied from https://bugzilla.mozilla.org/show_bug.cgi?id=1664131#c2)

Floating-point round instructions have been accepted and merged:
https://github.com/WebAssembly/simd/pull/232#issuecomment-691229681

Pseudo-min and pseudo-max instructions have been accepted and merged:
https://github.com/WebAssembly/simd/pull/122#issuecomment-691198332

The non-adding version of the dot product have been accepted and are about to be merged:
https://github.com/WebAssembly/simd/pull/127#issuecomment-703994455

For all of those instructions it will be important to check the opcode assignments in emscripten/LLVM to make sure we're in agreement with them.

We should rename them internally and remove the experimental-SIMD guard. Test cases should be promoted from wasm/simd/experimental.js into ad-hack.js and should be rewritten to use standard syntax (not binary form).

Depends on: 1669964
Depends on: 1669984

Background: https://github.com/WebAssembly/simd/pull/232

For all the rounding SIMD instructions:

  • remove the internal 'Experimental' opcode suffix in the C++ code
  • remove the guard on experimental Wasm instructions in all the C++ decoders
  • move the test cases from simd/experimental.js to simd/ad-hack.js

I have checked that current V8 and wasm-tools use the same opcode
mappings. V8 in turn guarantees the correct mapping for LLVM and
binaryen.

Drive-by bug fix: the test predicate for f64 square root was wrong, it
would round its argument to float. This did not matter for the test
inputs we had but started to matter when I added more difficult inputs
for testing rounding.

Background: https://github.com/WebAssembly/simd/pull/122

For all the pseudo-min/max SIMD instructions:

  • remove the internal 'Experimental' opcode suffix in the C++ code
  • remove the guard on experimental Wasm instructions in all the C++ decoders
  • move the test cases from simd/experimental.js to simd/ad-hack.js

I have checked that current V8 and wasm-tools use the same opcode
mappings. V8 in turn guarantees the correct mapping for LLVM and
binaryen.

Depends on D92927

Background: https://github.com/WebAssembly/simd/pull/127

For the widening dot product instruction:

  • remove the internal 'Experimental' opcode suffix in the C++ code
  • remove the guard on the instruction in all the C++ decoders
  • move the test cases from simd/experimental.js to simd/ad-hack.js

I have checked that current V8 and wasm-tools use the same opcode
mapping. V8 in turn guarantees the correct mapping for LLVM and
binaryen.

Depends on D92928

Pushed by lhansen@mozilla.com:
https://hg.mozilla.org/integration/autoland/rev/7659e8a95510
Pull in latest wast version. r=jseward
https://hg.mozilla.org/integration/autoland/rev/d25f2b090cf4
Promote fp rounding wasm SIMD instructions to accepted status. r=jseward
https://hg.mozilla.org/integration/autoland/rev/39bdfa950bc1
Promote pseudo-min/max wasm SIMD instructions to accepted status. r=jseward
https://hg.mozilla.org/integration/autoland/rev/b8c9121fdb10
Promote widening dot product wasm SIMD instruction to accepted status. r=jseward
Keywords: leave-open

Actually, let's open new bugs if more instructions need to be promoted.

Keywords: leave-open
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: