Enable FEATURE_SIMD on Linux.
authorCarol Eidt <carol.eidt@microsoft.com>
Wed, 9 Dec 2015 02:15:15 +0000 (18:15 -0800)
committerCarol Eidt <carol.eidt@microsoft.com>
Fri, 15 Jan 2016 21:32:22 +0000 (13:32 -0800)
commit6b28be873e05d62c2aa0f213239c50a5037070b8
tree000d127ef66715e71c2b7e4375d91b06cd466037
parentb955e7074a1dfdb4af5ab3e845b921d10dd1f18f
Enable FEATURE_SIMD on Linux.

Most of the changes involve checking varTypeIsStruct instead of TYP_STRUCT in
cases where the SIMD types are treated like other structs, and then adding
a few special cases for SIMD types.  The UNIX ABI implementation currently requires
that struct handles be preserved through code generation, so this required some
additional changes. Finally, the code that "homes" incoming arguments required changes
to handle incoming SIMD register args that need to be reassembled into their assigned
registers. That method was slightly refactored, primarily because it had cases that
should have been ifdef'd out for 64 bits. It needs further refactoring, but that is
left for future work. This fixes half of issue #983.
A previous version of this PR exposed issues with JIT/SIMD tests being inconsistently
compiled wrt optimization. This change modifies those tests to always
compile both with and without optimization.
114 files changed:
src/jit/CMakeLists.txt
src/jit/codegencommon.cpp
src/jit/codegenxarch.cpp
src/jit/compiler.h
src/jit/ee_il_dll.cpp
src/jit/flowgraph.cpp
src/jit/gentree.cpp
src/jit/importer.cpp
src/jit/lclvars.cpp
src/jit/lower.cpp
src/jit/lowerxarch.cpp
src/jit/lsra.cpp
src/jit/morph.cpp
src/jit/optcse.cpp
src/jit/rationalize.cpp
src/jit/scopeinfo.cpp
src/jit/simd.cpp
src/jit/simd.h
tests/src/JIT/SIMD/AbsGeneric_r.csproj [moved from tests/src/JIT/SIMD/AbsGeneric.csproj with 93% similarity]
tests/src/JIT/SIMD/AbsGeneric_ro.csproj [new file with mode: 0644]
tests/src/JIT/SIMD/AbsSqrt_r.csproj [moved from tests/src/JIT/SIMD/AbsSqrt.csproj with 93% similarity]
tests/src/JIT/SIMD/AbsSqrt_ro.csproj [new file with mode: 0644]
tests/src/JIT/SIMD/AddingSequence_r.csproj [moved from tests/src/JIT/SIMD/AddingSequence.csproj with 93% similarity]
tests/src/JIT/SIMD/AddingSequence_ro.csproj [new file with mode: 0644]
tests/src/JIT/SIMD/BitwiseOperations_r.csproj [moved from tests/src/JIT/SIMD/BitwiseOperations.csproj with 93% similarity]
tests/src/JIT/SIMD/BitwiseOperations_ro.csproj [new file with mode: 0644]
tests/src/JIT/SIMD/BoxUnbox_r.csproj [moved from tests/src/JIT/SIMD/BoxUnbox.csproj with 93% similarity]
tests/src/JIT/SIMD/BoxUnbox_ro.csproj [new file with mode: 0644]
tests/src/JIT/SIMD/BugWithAVX_r.csproj [moved from tests/src/JIT/SIMD/BugWithAVX.csproj with 93% similarity]
tests/src/JIT/SIMD/BugWithAVX_ro.csproj [new file with mode: 0644]
tests/src/JIT/SIMD/CircleInConvex_r.csproj [moved from tests/src/JIT/SIMD/CircleInConvex.csproj with 93% similarity]
tests/src/JIT/SIMD/CircleInConvex_ro.csproj [new file with mode: 0644]
tests/src/JIT/SIMD/CreateGeneric_r.csproj [moved from tests/src/JIT/SIMD/CreateGeneric.csproj with 93% similarity]
tests/src/JIT/SIMD/CreateGeneric_ro.csproj [new file with mode: 0644]
tests/src/JIT/SIMD/CtorFromArray_r.csproj [moved from tests/src/JIT/SIMD/CtorFromArray.csproj with 93% similarity]
tests/src/JIT/SIMD/CtorFromArray_ro.csproj [new file with mode: 0644]
tests/src/JIT/SIMD/Ctors_r.csproj [moved from tests/src/JIT/SIMD/Ctors.csproj with 93% similarity]
tests/src/JIT/SIMD/Ctors_ro.csproj [new file with mode: 0644]
tests/src/JIT/SIMD/DivSignedUnsignedTest_r.csproj [moved from tests/src/JIT/SIMD/DivSignedUnsignedTest.csproj with 93% similarity]
tests/src/JIT/SIMD/DivSignedUnsignedTest_ro.csproj [new file with mode: 0644]
tests/src/JIT/SIMD/Dup_r.csproj [moved from tests/src/JIT/SIMD/Dup.csproj with 93% similarity]
tests/src/JIT/SIMD/Dup_ro.csproj [new file with mode: 0644]
tests/src/JIT/SIMD/Haar-likeFeaturesGeneric_r.csproj [moved from tests/src/JIT/SIMD/Haar-likeFeaturesGeneric.csproj with 93% similarity]
tests/src/JIT/SIMD/Haar-likeFeaturesGeneric_ro.csproj [new file with mode: 0644]
tests/src/JIT/SIMD/LdfldGeneric_r.csproj [moved from tests/src/JIT/SIMD/LdfldGeneric.csproj with 93% similarity]
tests/src/JIT/SIMD/LdfldGeneric_ro.csproj [new file with mode: 0644]
tests/src/JIT/SIMD/Ldfld_r.csproj [moved from tests/src/JIT/SIMD/Ldfld.csproj with 93% similarity]
tests/src/JIT/SIMD/Ldfld_ro.csproj [new file with mode: 0644]
tests/src/JIT/SIMD/Ldind_r.csproj [moved from tests/src/JIT/SIMD/Ldind.csproj with 93% similarity]
tests/src/JIT/SIMD/Ldind_ro.csproj [new file with mode: 0644]
tests/src/JIT/SIMD/MinMax_r.csproj [moved from tests/src/JIT/SIMD/MinMax.csproj with 93% similarity]
tests/src/JIT/SIMD/MinMax_ro.csproj [new file with mode: 0644]
tests/src/JIT/SIMD/Mul_r.csproj [moved from tests/src/JIT/SIMD/Mul.csproj with 93% similarity]
tests/src/JIT/SIMD/Mul_ro.csproj [new file with mode: 0644]
tests/src/JIT/SIMD/SqrtGeneric_r.csproj [moved from tests/src/JIT/SIMD/SqrtGeneric.csproj with 93% similarity]
tests/src/JIT/SIMD/SqrtGeneric_ro.csproj [new file with mode: 0644]
tests/src/JIT/SIMD/StoreElement_r.csproj [moved from tests/src/JIT/SIMD/StoreElement.csproj with 93% similarity]
tests/src/JIT/SIMD/StoreElement_ro.csproj [new file with mode: 0644]
tests/src/JIT/SIMD/Sums_r.csproj [moved from tests/src/JIT/SIMD/Sums.csproj with 93% similarity]
tests/src/JIT/SIMD/Sums_ro.csproj [new file with mode: 0644]
tests/src/JIT/SIMD/Vector3_r.csproj [moved from tests/src/JIT/SIMD/Vector3.csproj with 93% similarity]
tests/src/JIT/SIMD/Vector3_ro.csproj [new file with mode: 0644]
tests/src/JIT/SIMD/Vector4_r.csproj [moved from tests/src/JIT/SIMD/Vector4.csproj with 93% similarity]
tests/src/JIT/SIMD/Vector4_ro.csproj [new file with mode: 0644]
tests/src/JIT/SIMD/VectorAbs_r.csproj [moved from tests/src/JIT/SIMD/VectorAbs.csproj with 93% similarity]
tests/src/JIT/SIMD/VectorAbs_ro.csproj [new file with mode: 0644]
tests/src/JIT/SIMD/VectorAdd_r.csproj [moved from tests/src/JIT/SIMD/VectorAdd.csproj with 93% similarity]
tests/src/JIT/SIMD/VectorAdd_ro.csproj [new file with mode: 0644]
tests/src/JIT/SIMD/VectorArgs_r.csproj [moved from tests/src/JIT/SIMD/VectorArgs.csproj with 93% similarity]
tests/src/JIT/SIMD/VectorArgs_ro.csproj [new file with mode: 0644]
tests/src/JIT/SIMD/VectorArrayInit_r.csproj [moved from tests/src/JIT/SIMD/VectorArrayInit.csproj with 93% similarity]
tests/src/JIT/SIMD/VectorArrayInit_ro.csproj [new file with mode: 0644]
tests/src/JIT/SIMD/VectorArray_r.csproj [moved from tests/src/JIT/SIMD/VectorArray.csproj with 93% similarity]
tests/src/JIT/SIMD/VectorArray_ro.csproj [new file with mode: 0644]
tests/src/JIT/SIMD/VectorCopyToArray_r.csproj [moved from tests/src/JIT/SIMD/VectorCopyToArray.csproj with 93% similarity]
tests/src/JIT/SIMD/VectorCopyToArray_ro.csproj [new file with mode: 0644]
tests/src/JIT/SIMD/VectorDiv_r.csproj [moved from tests/src/JIT/SIMD/VectorDiv.csproj with 93% similarity]
tests/src/JIT/SIMD/VectorDiv_ro.csproj [new file with mode: 0644]
tests/src/JIT/SIMD/VectorDot_r.csproj [moved from tests/src/JIT/SIMD/VectorDot.csproj with 93% similarity]
tests/src/JIT/SIMD/VectorDot_ro.csproj [new file with mode: 0644]
tests/src/JIT/SIMD/VectorExp_r.csproj [moved from tests/src/JIT/SIMD/VectorExp.csproj with 93% similarity]
tests/src/JIT/SIMD/VectorExp_ro.csproj [new file with mode: 0644]
tests/src/JIT/SIMD/VectorGet_r.csproj [moved from tests/src/JIT/SIMD/VectorGet.csproj with 93% similarity]
tests/src/JIT/SIMD/VectorGet_ro.csproj [new file with mode: 0644]
tests/src/JIT/SIMD/VectorHWAccel2_r.csproj [moved from tests/src/JIT/SIMD/VectorHWAccel2.csproj with 93% similarity]
tests/src/JIT/SIMD/VectorHWAccel2_ro.csproj [new file with mode: 0644]
tests/src/JIT/SIMD/VectorHWAccel_r.csproj [moved from tests/src/JIT/SIMD/VectorHWAccel.csproj with 93% similarity]
tests/src/JIT/SIMD/VectorHWAccel_ro.csproj [new file with mode: 0644]
tests/src/JIT/SIMD/VectorInitN_r.csproj [moved from tests/src/JIT/SIMD/VectorInitN.csproj with 93% similarity]
tests/src/JIT/SIMD/VectorInitN_ro.csproj [new file with mode: 0644]
tests/src/JIT/SIMD/VectorInit_r.csproj [moved from tests/src/JIT/SIMD/VectorInit.csproj with 93% similarity]
tests/src/JIT/SIMD/VectorInit_ro.csproj [new file with mode: 0644]
tests/src/JIT/SIMD/VectorIntEquals_r.csproj [moved from tests/src/JIT/SIMD/VectorIntEquals.csproj with 93% similarity]
tests/src/JIT/SIMD/VectorIntEquals_ro.csproj [new file with mode: 0644]
tests/src/JIT/SIMD/VectorMatrix_r.csproj [moved from tests/src/JIT/SIMD/VectorMatrix.csproj with 93% similarity]
tests/src/JIT/SIMD/VectorMatrix_ro.csproj [new file with mode: 0644]
tests/src/JIT/SIMD/VectorMax_r.csproj [moved from tests/src/JIT/SIMD/VectorMax.csproj with 93% similarity]
tests/src/JIT/SIMD/VectorMax_ro.csproj [new file with mode: 0644]
tests/src/JIT/SIMD/VectorMin_r.csproj [moved from tests/src/JIT/SIMD/VectorMin.csproj with 93% similarity]
tests/src/JIT/SIMD/VectorMin_ro.csproj [new file with mode: 0644]
tests/src/JIT/SIMD/VectorMul_r.csproj [moved from tests/src/JIT/SIMD/VectorMul.csproj with 93% similarity]
tests/src/JIT/SIMD/VectorMul_ro.csproj [new file with mode: 0644]
tests/src/JIT/SIMD/VectorRelOp_r.csproj [moved from tests/src/JIT/SIMD/VectorRelOp.csproj with 93% similarity]
tests/src/JIT/SIMD/VectorRelOp_ro.csproj [new file with mode: 0644]
tests/src/JIT/SIMD/VectorReturn_r.csproj [moved from tests/src/JIT/SIMD/VectorReturn.csproj with 93% similarity]
tests/src/JIT/SIMD/VectorReturn_ro.csproj [new file with mode: 0644]
tests/src/JIT/SIMD/VectorSet_r.csproj [moved from tests/src/JIT/SIMD/VectorSet.csproj with 93% similarity]
tests/src/JIT/SIMD/VectorSet_ro.csproj [new file with mode: 0644]
tests/src/JIT/SIMD/VectorSqrt_r.csproj [moved from tests/src/JIT/SIMD/VectorSqrt.csproj with 93% similarity]
tests/src/JIT/SIMD/VectorSqrt_ro.csproj [new file with mode: 0644]
tests/src/JIT/SIMD/VectorSub_r.csproj [moved from tests/src/JIT/SIMD/VectorSub.csproj with 93% similarity]
tests/src/JIT/SIMD/VectorSub_ro.csproj [new file with mode: 0644]
tests/src/JIT/SIMD/VectorUnused_r.csproj [moved from tests/src/JIT/SIMD/VectorUnused.csproj with 93% similarity]
tests/src/JIT/SIMD/VectorUnused_ro.csproj [new file with mode: 0644]