diff options
author | Fei Peng <fei.peng@intel.com> | 2018-03-01 13:45:45 -0800 |
---|---|---|
committer | Fei Peng <fei.peng@intel.com> | 2018-03-01 13:45:45 -0800 |
commit | c767b4d9b330c9e8a9c51e92aa01f2fceedec181 (patch) | |
tree | 98b5de9314f427f9447a82eb558e3fcd22a8f52d /src/jit/lsraxarch.cpp | |
parent | d7a5bb9a601208571c5b1f0cdcf528db7e7dc0a8 (diff) | |
download | coreclr-c767b4d9b330c9e8a9c51e92aa01f2fceedec181.tar.gz coreclr-c767b4d9b330c9e8a9c51e92aa01f2fceedec181.tar.bz2 coreclr-c767b4d9b330c9e8a9c51e92aa01f2fceedec181.zip |
Implement SSE4.1 insert and extract
Diffstat (limited to 'src/jit/lsraxarch.cpp')
-rw-r--r-- | src/jit/lsraxarch.cpp | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/src/jit/lsraxarch.cpp b/src/jit/lsraxarch.cpp index c2c1992639..d15867694d 100644 --- a/src/jit/lsraxarch.cpp +++ b/src/jit/lsraxarch.cpp @@ -2255,6 +2255,7 @@ void LinearScan::BuildHWIntrinsic(GenTreeHWIntrinsic* intrinsicTree) { TreeNodeInfo* info = currentNodeInfo; NamedIntrinsic intrinsicID = intrinsicTree->gtHWIntrinsicId; + var_types baseType = intrinsicTree->gtSIMDBaseType; InstructionSet isa = Compiler::isaOfHWIntrinsic(intrinsicID); HWIntrinsicCategory category = Compiler::categoryOfHWIntrinsic(intrinsicID); HWIntrinsicFlag flags = Compiler::flagsOfHWIntrinsic(intrinsicID); @@ -2382,6 +2383,19 @@ void LinearScan::BuildHWIntrinsic(GenTreeHWIntrinsic* intrinsicTree) break; } + case NI_SSE41_Extract: + if (baseType == TYP_FLOAT) + { + info->internalIntCount += 1; + } +#ifdef _TARGET_X86_ + else if (varTypeIsByte(baseType)) + { + info->setDstCandidates(this, RBM_BYTE_REGS); + } +#endif + break; + #ifdef _TARGET_X86_ case NI_SSE42_Crc32: { |