diff options
Diffstat (limited to 'src/jit/simdcodegenxarch.cpp')
-rw-r--r-- | src/jit/simdcodegenxarch.cpp | 38 |
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(); |