Skip to content

Commit 2fd13fe

Browse files
committed
Updating xarch to utilize EVEX compares and blending where profitable
1 parent cc66c77 commit 2fd13fe

File tree

6 files changed

+835
-210
lines changed

6 files changed

+835
-210
lines changed

src/coreclr/jit/gentree.cpp

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29540,7 +29540,7 @@ var_types GenTreeHWIntrinsic::GetLookupTypeForCmpOp(
2954029540
{
2954129541
case GT_EQ:
2954229542
{
29543-
if (simdSize == 64)
29543+
if ((simdSize == 64) || (comp->opts.OptimizationEnabled() && comp->canUseEvexEncoding()))
2954429544
{
2954529545
lookupType = TYP_MASK;
2954629546
}
@@ -29551,7 +29551,8 @@ var_types GenTreeHWIntrinsic::GetLookupTypeForCmpOp(
2955129551
case GT_LE:
2955229552
case GT_NE:
2955329553
{
29554-
if ((simdSize == 64) || (varTypeIsIntegral(simdBaseType) && comp->canUseEvexEncoding()))
29554+
if ((simdSize == 64) ||
29555+
((comp->opts.OptimizationEnabled() || varTypeIsIntegral(simdBaseType)) && comp->canUseEvexEncoding()))
2955529556
{
2955629557
lookupType = TYP_MASK;
2955729558
}
@@ -29561,7 +29562,8 @@ var_types GenTreeHWIntrinsic::GetLookupTypeForCmpOp(
2956129562
case GT_GT:
2956229563
case GT_LT:
2956329564
{
29564-
if ((simdSize == 64) || (varTypeIsUnsigned(simdBaseType) && comp->canUseEvexEncoding()))
29565+
if ((simdSize == 64) ||
29566+
((comp->opts.OptimizationEnabled() || varTypeIsUnsigned(simdBaseType)) && comp->canUseEvexEncoding()))
2956529567
{
2956629568
lookupType = TYP_MASK;
2956729569
}

src/coreclr/jit/hwintrinsic.h

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -546,12 +546,11 @@ struct HWIntrinsicInfo
546546
static bool isScalarIsa(CORINFO_InstructionSet isa);
547547

548548
#ifdef TARGET_XARCH
549-
static bool isAVX2GatherIntrinsic(NamedIntrinsic id);
550-
static FloatComparisonMode lookupFloatComparisonModeForSwappedArgs(FloatComparisonMode comparison);
551-
static NamedIntrinsic lookupIdForFloatComparisonMode(NamedIntrinsic intrinsic,
552-
FloatComparisonMode comparison,
553-
var_types simdBaseType,
554-
unsigned simdSize);
549+
static bool isAVX2GatherIntrinsic(NamedIntrinsic id);
550+
static NamedIntrinsic lookupIdForFloatComparisonMode(NamedIntrinsic intrinsic,
551+
FloatComparisonMode comparison,
552+
var_types simdBaseType,
553+
unsigned simdSize);
555554
#endif
556555

557556
// Member lookup

0 commit comments

Comments
 (0)