Skip to content

Commit a5d2203

Browse files
committed
Revert again
1 parent 086ebd3 commit a5d2203

File tree

3 files changed

+7
-4
lines changed

3 files changed

+7
-4
lines changed

src/coreclr/jit/instr.cpp

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1718,7 +1718,6 @@ instruction CodeGen::ins_Move_Extend(var_types srcType, bool srcInReg)
17181718
#if defined(TARGET_XARCH)
17191719
return INS_kmovq_msk;
17201720
#elif defined(TARGET_ARM64)
1721-
//unreached(); // TODO-SVE: This needs testing
17221721
return INS_sve_mov;
17231722
#endif
17241723
}

src/coreclr/jit/morph.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2330,7 +2330,7 @@ void CallArgs::AddFinalArgsAndDetermineABIInfo(Compiler* comp, GenTreeCall* call
23302330

23312331
bool isBackFilled = false;
23322332
unsigned nextFltArgRegNum = fltArgRegNum; // This is the next floating-point argument register number to use
2333-
bool isStructArg = varTypeIsStruct(argSigType);
2333+
bool isStructArg = varTypeIsStruct(argSigType) && !varTypeIsMask(argx->gtEffectiveVal());
23342334
var_types structBaseType = TYP_STRUCT;
23352335
unsigned structSize = 0;
23362336
bool passStructByRef = false;
@@ -3178,7 +3178,7 @@ GenTreeCall* Compiler::fgMorphArgs(GenTreeCall* call)
31783178
argx->gtType = TYP_I_IMPL;
31793179
}
31803180

3181-
bool isStructArg = varTypeIsStruct(arg.GetSignatureType());
3181+
bool isStructArg = varTypeIsStruct(arg.GetSignatureType()) && !varTypeIsMask(arg.GetSignatureType());
31823182
GenTree* argObj = argx->gtEffectiveVal();
31833183
bool makeOutArgCopy = false;
31843184

src/coreclr/jit/rationalize.cpp

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,11 @@ void Rationalizer::RewriteNodeAsCall(GenTree** use,
100100
assert(!operand->OperIsFieldList());
101101

102102
sigTyp = comp->impNormStructType(clsHnd);
103-
arg = NewCallArg::Struct(operand, sigTyp, clsHnd);
103+
if (varTypeIsMask(operand) && varTypeIsSIMD(sigTyp))
104+
{
105+
sigTyp = TYP_MASK;
106+
}
107+
arg = NewCallArg::Struct(operand, sigTyp, clsHnd);
104108
}
105109
else
106110
{

0 commit comments

Comments
 (0)