summaryrefslogtreecommitdiff
path: root/src/jit/lsraxarch.cpp
diff options
context:
space:
mode:
authorFei Peng <fei.peng@intel.com>2018-03-01 13:45:45 -0800
committerFei Peng <fei.peng@intel.com>2018-03-01 13:45:45 -0800
commitc767b4d9b330c9e8a9c51e92aa01f2fceedec181 (patch)
tree98b5de9314f427f9447a82eb558e3fcd22a8f52d /src/jit/lsraxarch.cpp
parentd7a5bb9a601208571c5b1f0cdcf528db7e7dc0a8 (diff)
downloadcoreclr-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.cpp14
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:
{