SIMD shuffle optimizations in ARM64 Ion
Categories
(Core :: JavaScript: WebAssembly, defect, P3)
Tracking
()
Tracking | Status | |
---|---|---|
firefox90 | --- | fixed |
People
(Reporter: lth, Assigned: yury)
References
(Blocks 2 open bugs)
Details
Attachments
(1 file)
For reasonable performance, the shuffle optimizations we use for x86 - rewriting the general shuffle as more specialized code based on the shuffle pattern and the inputs - must be ported to arm64.
This will entail adapting the matched patterns to the ARM64 instruction set and perhaps rearranging the patterns to select the best ones first; as a result, there may be some generalization of the matching engine needed so that it can handle different pattern orderings on different systems. Indeed, some patterns may not make sense on some systems.
Reporter | ||
Comment 1•4 years ago
|
||
Yury's done most of this so he gets the bug.
Assignee | ||
Comment 2•4 years ago
|
||
Most of the initial optimization will be implemented by bug 1687629. We need to review the pattern matcher -- it is optimized for x86 instructions atm.
Assignee | ||
Comment 4•4 years ago
|
||
Updated•4 years ago
|
Assignee | ||
Comment 5•4 years ago
|
||
We have bad ARM64 for BLEND_8x16, BLEND_16x8 and PERMUTE_16x8 shuffles. PERMUTE_16x8 was to specific to x64 -- it is possible to make it more generic: x64 will get its special cases, and ARM64 will fallback to permute8x16 2-op instructions.
Thought: all these specializations/analysis only make sense if they cleanly map to a single native instructions on at least one platform. Even if they don't have perfect match on other platforms, we need to try to find best/short equivalent to be competitive.
Updated•4 years ago
|
Reporter | ||
Comment 6•4 years ago
|
||
Basically an open-ended set here but this is not blocking SIMD on ARM64 any longer.
Comment 8•4 years ago
|
||
bugherder |
Description
•