summaryrefslogtreecommitdiff
path: root/src/jit/simdcodegenxarch.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/jit/simdcodegenxarch.cpp')
-rw-r--r--src/jit/simdcodegenxarch.cpp38
1 files changed, 38 insertions, 0 deletions
diff --git a/src/jit/simdcodegenxarch.cpp b/src/jit/simdcodegenxarch.cpp
index ace36422fb..468d302d17 100644
--- a/src/jit/simdcodegenxarch.cpp
+++ b/src/jit/simdcodegenxarch.cpp
@@ -243,6 +243,25 @@ instruction CodeGen::getOpForSIMDIntrinsic(SIMDIntrinsicID intrinsicId, var_type
{
result = INS_pminsw;
}
+ else if (compiler->getSIMDInstructionSet() >= InstructionSet_SSE3_4)
+ {
+ if (baseType == TYP_BYTE)
+ {
+ result = INS_pminsb;
+ }
+ else if (baseType == TYP_CHAR)
+ {
+ result = INS_pminuw;
+ }
+ else if (baseType == TYP_INT)
+ {
+ result = INS_pminsd;
+ }
+ else if (baseType == TYP_UINT)
+ {
+ result = INS_pminud;
+ }
+ }
else
{
unreached();
@@ -266,6 +285,25 @@ instruction CodeGen::getOpForSIMDIntrinsic(SIMDIntrinsicID intrinsicId, var_type
{
result = INS_pmaxsw;
}
+ else if (compiler->getSIMDInstructionSet() >= InstructionSet_SSE3_4)
+ {
+ if (baseType == TYP_BYTE)
+ {
+ result = INS_pmaxsb;
+ }
+ else if (baseType == TYP_CHAR)
+ {
+ result = INS_pmaxuw;
+ }
+ else if (baseType == TYP_INT)
+ {
+ result = INS_pmaxsd;
+ }
+ else if (baseType == TYP_UINT)
+ {
+ result = INS_pmaxud;
+ }
+ }
else
{
unreached();