Closed Bug 1686006 Opened 3 years ago Closed 3 years ago

Implement the SIMD "v128.any_true" instruction, remove "iNxM.any_true"

Categories

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

enhancement

Tracking

()

RESOLVED FIXED
87 Branch
Tracking Status
firefox87 --- fixed

People

(Reporter: lth, Assigned: lth)

References

(Blocks 1 open bug)

Details

Attachments

(1 file)

See https://github.com/WebAssembly/simd/issues/416. It was observed that the any_true instructions only test for any-bit-set, so we only need one. The opcode will be that of i8x16.any_true. A bunch of programs will have to be recompiled.

[ x ] Test cases
[ x ] Wast
[ x ] Baseline (x86, x64, arm64)
[ x ] Ion (x86, x64)

Ion arm64 will land separately, with all the other Ion arm64 SIMD support (bug 1687629).

No longer blocks: 1686004
Assignee: nobody → lhansen
Status: NEW → ASSIGNED
Depends on: 1687654

Even though we remove text support for iNxM.any_true and add text support for v128.any_true, the opcode for v128.any_true remains the same as i8x16.any_true. We should retain (for now) support for i16x8.any_true and i32x4.any_true at the binary level for temporary backward compatibility, until all tools are updated.

Blocks: 1687629

The committee agreed to change i8x16.any_true to v128.any_true and to remove i16x8.any_true
and i32x4.any_true, because they all generate the same machine code on all platforms:
they test whether any bit is set in the vector.

We rename I8x16AnyTrue internally to V128AnyTrue, but make no other substantial changes.
We keep I16x8AnyTrue and I32x4AnyTrue for now for backward compatibility, these will
be removed when we do the final opcode renumbering before release.

Text support and test case changes already landed as part of bug 1687654.

Depends on D99761

Status: ASSIGNED → RESOLVED
Closed: 3 years ago
Resolution: --- → FIXED
Target Milestone: --- → 87 Branch
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: