Stream: git-wasmtime

Topic: wasmtime / PR #6060 x64: Fix vbroadcastss with AVX2 and w...


view this post on Zulip Wasmtime GitHub notifications bot (Mar 18 2023 at 00:37):

alexcrichton opened PR #6060 from x64fix-avx2-but-no-avx to main:

This commit fixes a corner case in the emission of the vbroadcasts{s,d} instructions. The memory-to-xmm form of these instructions was available with the AVX instruction set, but the xmm-to-xmm form of these instructions wasn't available until AVX2. The instruction requirement for these are listed as AVX but the lowering rules are appropriately annotated to use either AVX2 or AVX when appropriate.

While this should work in practice this didn't work for the assertion about enabled features for each instruction. The vbroadcastss instruction was listed as requiring AVX but could get emitted when AVX2 was enabled (due to the reg-to-reg form being available). This caused an issue for the fuzzer where AVX2 was enabled but AVX was disabled.

One possible fix would be to add more opcodes, one for reg-to-reg and one for mem-to-reg. That seemed like somewhat overkill for a pretty niche situation that shouldn't actually come up in practice anywhere. Instead this commit changes all the has_avx accessors to the use_avx_simd predicate already available in the target flags. The use_avx2_simd predicate was then updated to additionally require has_avx, so if AVX2 is enabled and AVX is disabled then the vbroadcastss instruction won't get emitted any more.

Closes #6059

<!--

Please ensure that the following steps are all taken care of before submitting
the PR.

Please ensure all communication adheres to the code of conduct.
-->

view this post on Zulip Wasmtime GitHub notifications bot (Mar 18 2023 at 01:09):

cfallin submitted PR review.

view this post on Zulip Wasmtime GitHub notifications bot (Mar 18 2023 at 04:08):

abrown submitted PR review.

view this post on Zulip Wasmtime GitHub notifications bot (Mar 18 2023 at 17:55):

alexcrichton updated PR #6060 from x64fix-avx2-but-no-avx to main.

view this post on Zulip Wasmtime GitHub notifications bot (Mar 18 2023 at 17:56):

alexcrichton has enabled auto merge for PR #6060.

view this post on Zulip Wasmtime GitHub notifications bot (Mar 18 2023 at 19:14):

alexcrichton merged PR #6060.


Last updated: Dec 23 2024 at 12:05 UTC