[mono][jit] Add JIT support for the methods in Vector128<T> on amd64. (#86546)
authorZoltan Varga <vargaz@gmail.com>
Tue, 13 Jun 2023 22:00:41 +0000 (18:00 -0400)
committerGitHub <noreply@github.com>
Tue, 13 Jun 2023 22:00:41 +0000 (18:00 -0400)
commitac2d3fb32854e03eaaaf0985097b9164d7cfa0a2
tree2a3158225f914bec74435e9c3e691e340c15e72f
parent9bcaff3308e61473cc7137d0b97d9e452882dfe8
[mono][jit] Add JIT support for the methods in Vector128<T> on amd64. (#86546)

* [mono][jit] Add JIT support for the methods in Vector128<T> on amd64.

* Avoid emitting OP_NOT_NULL opcodes in non-llvm mode, they are not used, and they keep their inputs alive.

* Return true for IsSupported for non 128 bit types even if the operations are not supported.

* Fix windows support.

* Add support for some binary operations.

* Disable Dot for integer types.

* Add support for Create.

* Fix some typos in the intrinsics tests.

* Enable As methods.

* Enable Abs/AndNot. Simplify INSERT_R8.

* Add more methods.

* Add compare methods.

* Add CreateScalar/CreateScalarUnsafe.

* Add Sqrt/Sum.

* Fix GetElement/WithElement<long>.

* Implement some of the convert methods, disable the rest.

* Fix GetElement<int>.

* Require SSE41.

* Fix OP_EXTRACT_I1.

* Fix INSERT_R8.

* Improve OP_NEGATION R4/R8.
src/mono/mono/arch/amd64/amd64-codegen.h
src/mono/mono/mini/cpu-amd64.mdesc
src/mono/mono/mini/ir-emit.h
src/mono/mono/mini/mini-amd64.c
src/mono/mono/mini/mini-ops.h
src/mono/mono/mini/simd-intrinsics.c
src/tests/JIT/HardwareIntrinsics/General/Shared/VectorGetAndWithElementTest.template
src/tests/JIT/HardwareIntrinsics/General/Shared/VectorGetAndWithLowerAndUpperTest.template