Skip to content

Commit 3f5f97b

Browse files
committed
Ensure AllBitsSet for TYP_SIMD64 is correctly handled
1 parent b1c5dfe commit 3f5f97b

File tree

3 files changed

+9
-2
lines changed

3 files changed

+9
-2
lines changed

src/coreclr/jit/codegenxarch.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -489,7 +489,8 @@ void CodeGen::genSetRegToConst(regNumber targetReg, var_types targetType, GenTre
489489
emitter* emit = GetEmitter();
490490
emitAttr attr = emitTypeSize(targetType);
491491

492-
if (vecCon->IsAllBitsSet())
492+
// TODO-XARCH-AVX512: Remove the TYP_SIMD64 check once AllBitsSet for TYP_SIMD64 gets codegen support
493+
if (vecCon->IsAllBitsSet() && !vecCon->TypeIs(TYP_SIMD64))
493494
{
494495
if ((attr != EA_32BYTE) || compiler->compOpportunisticallyDependsOn(InstructionSet_AVX2))
495496
{

src/coreclr/jit/gentree.cpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4864,7 +4864,12 @@ unsigned Compiler::gtSetEvalOrder(GenTree* tree)
48644864
{
48654865
level = 0;
48664866

4867+
#if defined(TARGET_XARCH)
4868+
// TODO-XARCH-AVX512: Remove the TYP_SIMD64 check once AllBitsSet for TYP_SIMD64 gets codegen support
4869+
if ((tree->AsVecCon()->IsAllBitsSet() && !tree->TypeIs(TYP_SIMD64)) || tree->AsVecCon()->IsZero())
4870+
#else
48674871
if (tree->AsVecCon()->IsAllBitsSet() || tree->AsVecCon()->IsZero())
4872+
#endif // TARGET_*
48684873
{
48694874
// We generate `cmpeq* tgtReg, tgtReg`, which is 4-5 bytes, for AllBitsSet
48704875
// and generate `xorp* tgtReg, tgtReg`, which is 3-5 bytes, for Zero

src/coreclr/jit/lowerxarch.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6817,8 +6817,9 @@ bool Lowering::IsContainableHWIntrinsicOp(GenTreeHWIntrinsic* parentNode, GenTre
68176817
}
68186818
else if (childNode->IsCnsVec())
68196819
{
6820+
// TODO-XARCH-AVX512: Remove the TYP_SIMD64 check once AllBitsSet for TYP_SIMD64 gets codegen support
68206821
GenTreeVecCon* vecCon = childNode->AsVecCon();
6821-
canBeContained = !vecCon->IsAllBitsSet() && !vecCon->IsZero();
6822+
canBeContained = (!vecCon->IsAllBitsSet() || vecCon->TypeIs(TYP_SIMD64)) && !vecCon->IsZero();
68226823
}
68236824
}
68246825

0 commit comments

Comments
 (0)