Skip to content

Commit 7436196

Browse files
committed
Adjusting gtSimdBaseType to store a var_types.
1 parent b22d55a commit 7436196

23 files changed

+2109
-1966
lines changed

src/coreclr/jit/compiler.h

Lines changed: 89 additions & 79 deletions
Large diffs are not rendered by default.

src/coreclr/jit/decomposelongs.cpp

Lines changed: 15 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -592,8 +592,8 @@ GenTree* DecomposeLongs::DecomposeCast(LIR::Use& use)
592592
NamedIntrinsic intrinsicId = NI_Illegal;
593593
GenTree* srcOp = cast->CastOp();
594594
var_types dstType = cast->CastToType();
595-
CorInfoType baseFloatingType = (dstType == TYP_FLOAT) ? CORINFO_TYPE_FLOAT : CORINFO_TYPE_DOUBLE;
596-
CorInfoType baseIntegralType = cast->IsUnsigned() ? CORINFO_TYPE_ULONG : CORINFO_TYPE_LONG;
595+
var_types baseFloatingType = (dstType == TYP_FLOAT) ? TYP_FLOAT : TYP_DOUBLE;
596+
var_types baseIntegralType = cast->IsUnsigned() ? TYP_ULONG : TYP_LONG;
597597

598598
assert(!cast->gtOverflow());
599599
assert(m_compiler->compIsaSupportedDebugOnly(InstructionSet_AVX512));
@@ -1874,9 +1874,8 @@ GenTree* DecomposeLongs::DecomposeHWIntrinsicGetElement(LIR::Use& use, GenTreeHW
18741874
// Create:
18751875
// loResult = GT_HWINTRINSIC{GetElement}[int](tmp_simd_var, tmp_index_times_two)
18761876

1877-
GenTreeHWIntrinsic* loResult =
1878-
m_compiler->gtNewSimdHWIntrinsicNode(TYP_INT, simdTmpVar, indexTimesTwo, node->GetHWIntrinsicId(),
1879-
CORINFO_TYPE_INT, simdSize);
1877+
GenTreeHWIntrinsic* loResult = m_compiler->gtNewSimdHWIntrinsicNode(TYP_INT, simdTmpVar, indexTimesTwo,
1878+
node->GetHWIntrinsicId(), TYP_INT, simdSize);
18801879
Range().InsertBefore(node, loResult);
18811880

18821881
simdTmpVar = m_compiler->gtNewLclLNode(simdTmpVarNum, simdTmpVar->TypeGet());
@@ -1905,9 +1904,8 @@ GenTree* DecomposeLongs::DecomposeHWIntrinsicGetElement(LIR::Use& use, GenTreeHW
19051904
Range().InsertBefore(node, indexTimesTwo, one, indexTimesTwoPlusOne);
19061905
}
19071906

1908-
GenTreeHWIntrinsic* hiResult =
1909-
m_compiler->gtNewSimdHWIntrinsicNode(TYP_INT, simdTmpVar, indexTimesTwoPlusOne, node->GetHWIntrinsicId(),
1910-
CORINFO_TYPE_INT, simdSize);
1907+
GenTreeHWIntrinsic* hiResult = m_compiler->gtNewSimdHWIntrinsicNode(TYP_INT, simdTmpVar, indexTimesTwoPlusOne,
1908+
node->GetHWIntrinsicId(), TYP_INT, simdSize);
19111909
Range().InsertBefore(node, hiResult);
19121910

19131911
// Done with the original tree; remove it.
@@ -1954,14 +1952,14 @@ GenTree* DecomposeLongs::DecomposeHWIntrinsicToScalar(LIR::Use& use, GenTreeHWIn
19541952
JITDUMP("[DecomposeHWIntrinsicToScalar]: Saving op1 tree to a temp var:\n");
19551953
DISPTREERANGE(Range(), simdTmpVar);
19561954

1957-
GenTree* loResult = m_compiler->gtNewSimdToScalarNode(TYP_INT, simdTmpVar, CORINFO_TYPE_INT, simdSize);
1955+
GenTree* loResult = m_compiler->gtNewSimdToScalarNode(TYP_INT, simdTmpVar, TYP_INT, simdSize);
19581956
Range().InsertAfter(simdTmpVar, loResult);
19591957

19601958
simdTmpVar = m_compiler->gtNewLclLNode(simdTmpVarNum, simdTmpVar->TypeGet());
19611959
Range().InsertAfter(loResult, simdTmpVar);
19621960

19631961
GenTree* one = m_compiler->gtNewIconNode(1);
1964-
GenTree* hiResult = m_compiler->gtNewSimdGetElementNode(TYP_INT, simdTmpVar, one, CORINFO_TYPE_INT, simdSize);
1962+
GenTree* hiResult = m_compiler->gtNewSimdGetElementNode(TYP_INT, simdTmpVar, one, TYP_INT, simdSize);
19651963

19661964
Range().InsertAfter(simdTmpVar, one, hiResult);
19671965
Range().Remove(node);
@@ -2001,10 +1999,9 @@ GenTree* DecomposeLongs::DecomposeHWIntrinsicMoveMask(LIR::Use& use, GenTreeHWIn
20011999
assert(varTypeIsLong(node));
20022000
assert(node->GetHWIntrinsicId() == NI_AVX512_MoveMask);
20032001

2004-
GenTree* op1 = node->Op(1);
2005-
CorInfoType simdBaseJitType = node->GetSimdBaseJitType();
2006-
var_types simdBaseType = node->GetSimdBaseType();
2007-
unsigned simdSize = node->GetSimdSize();
2002+
GenTree* op1 = node->Op(1);
2003+
var_types simdBaseType = node->GetSimdBaseType();
2004+
unsigned simdSize = node->GetSimdSize();
20082005

20092006
assert(varTypeIsArithmetic(simdBaseType));
20102007
assert(op1->TypeIs(TYP_MASK));
@@ -2029,7 +2026,7 @@ GenTree* DecomposeLongs::DecomposeHWIntrinsicMoveMask(LIR::Use& use, GenTreeHWIn
20292026
// Create:
20302027
// loResult = GT_HWINTRINSIC{MoveMask}(simdTmpVar)
20312028

2032-
loResult = m_compiler->gtNewSimdHWIntrinsicNode(TYP_INT, simdTmpVar, NI_AVX512_MoveMask, simdBaseJitType, 32);
2029+
loResult = m_compiler->gtNewSimdHWIntrinsicNode(TYP_INT, simdTmpVar, NI_AVX512_MoveMask, simdBaseType, 32);
20332030
Range().InsertBefore(node, loResult);
20342031

20352032
simdTmpVar = m_compiler->gtNewLclLNode(simdTmpVarNum, simdTmpVar->TypeGet());
@@ -2043,18 +2040,18 @@ GenTree* DecomposeLongs::DecomposeHWIntrinsicMoveMask(LIR::Use& use, GenTreeHWIn
20432040
Range().InsertBefore(node, shiftIcon);
20442041

20452042
simdTmpVar = m_compiler->gtNewSimdHWIntrinsicNode(TYP_MASK, simdTmpVar, shiftIcon, NI_AVX512_ShiftRightMask,
2046-
simdBaseJitType, 64);
2043+
simdBaseType, 64);
20472044
Range().InsertBefore(node, simdTmpVar);
20482045

2049-
hiResult = m_compiler->gtNewSimdHWIntrinsicNode(TYP_INT, simdTmpVar, NI_AVX512_MoveMask, simdBaseJitType, 32);
2046+
hiResult = m_compiler->gtNewSimdHWIntrinsicNode(TYP_INT, simdTmpVar, NI_AVX512_MoveMask, simdBaseType, 32);
20502047
Range().InsertBefore(node, hiResult);
20512048
}
20522049
else
20532050
{
20542051
// Create:
20552052
// loResult = GT_HWINTRINSIC{MoveMask}(op1)
20562053

2057-
loResult = m_compiler->gtNewSimdHWIntrinsicNode(TYP_INT, op1, NI_AVX512_MoveMask, simdBaseJitType, simdSize);
2054+
loResult = m_compiler->gtNewSimdHWIntrinsicNode(TYP_INT, op1, NI_AVX512_MoveMask, simdBaseType, simdSize);
20582055
Range().InsertBefore(node, loResult);
20592056

20602057
// Create:

0 commit comments

Comments
 (0)