Skip to content

Commit c1abf87

Browse files
[JIT] On importing a CEE_INITOBJ for a simd, construct a VecCon(0) (#81982)
* On importing a CEE_INITOBJ for a simd, construct a VecCon(0) of that type * Formatting * Check layout to determine if type is a SIMD to avoid redundant impNormStructType call * Fix assert * Remove assert * Update src/coreclr/jit/importer.cpp Co-authored-by: SingleAccretion <[email protected]> * Update importer.cpp --------- Co-authored-by: SingleAccretion <[email protected]>
1 parent a375009 commit c1abf87

File tree

1 file changed

+12
-2
lines changed

1 file changed

+12
-2
lines changed

src/coreclr/jit/importer.cpp

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10605,25 +10605,35 @@ void Compiler::impImportBlockCode(BasicBlock* block)
1060510605
goto EVAL_APPEND;
1060610606

1060710607
case CEE_INITOBJ:
10608-
10608+
{
1060910609
assertImp(sz == sizeof(unsigned));
1061010610

1061110611
_impResolveToken(CORINFO_TOKENKIND_Class);
1061210612

1061310613
JITDUMP(" %08X", resolvedToken.token);
1061410614

1061510615
lclTyp = JITtype2varType(info.compCompHnd->asCorInfoType(resolvedToken.hClass));
10616+
10617+
ClassLayout* layout = nullptr;
10618+
10619+
if (lclTyp == TYP_STRUCT)
10620+
{
10621+
layout = typGetObjLayout(resolvedToken.hClass);
10622+
lclTyp = layout->GetType();
10623+
}
10624+
1061610625
if (lclTyp != TYP_STRUCT)
1061710626
{
1061810627
op2 = gtNewZeroConNode(genActualType(lclTyp));
1061910628
goto STIND_VALUE;
1062010629
}
1062110630

1062210631
op1 = impPopStack().val;
10623-
op1 = gtNewStructVal(typGetObjLayout(resolvedToken.hClass), op1);
10632+
op1 = gtNewStructVal(layout, op1);
1062410633
op2 = gtNewIconNode(0);
1062510634
op1 = gtNewBlkOpNode(op1, op2, (prefixFlags & PREFIX_VOLATILE) != 0);
1062610635
goto SPILL_APPEND;
10636+
}
1062710637

1062810638
case CEE_INITBLK:
1062910639

0 commit comments

Comments
 (0)