Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions src/coreclr/jit/codegen.h
Original file line number Diff line number Diff line change
Expand Up @@ -58,14 +58,14 @@ class CodeGen final : public CodeGenInterface
// We use movaps when non-VEX because it is a smaller instruction;
// however the VEX version vmovaps would be used which is the same size as vmovdqa;
// also vmovdqa has more available CPU ports on older processors so we switch to that
return compiler->canUseVexEncoding() ? INS_movdqa : INS_movaps;
return compiler->canUseVexEncoding() ? INS_movdqa32 : INS_movaps;
}
instruction simdUnalignedMovIns()
{
// We use movups when non-VEX because it is a smaller instruction;
// however the VEX version vmovups would be used which is the same size as vmovdqu;
// but vmovdqu has more available CPU ports on older processors so we switch to that
return compiler->canUseVexEncoding() ? INS_movdqu : INS_movups;
return compiler->canUseVexEncoding() ? INS_movdqu32 : INS_movups;
}
#endif // defined(TARGET_XARCH)

Expand Down
5 changes: 4 additions & 1 deletion src/coreclr/jit/codegeninterface.h
Original file line number Diff line number Diff line change
Expand Up @@ -179,8 +179,11 @@ class CodeGenInterface
public:
static bool instIsFP(instruction ins);
#if defined(TARGET_XARCH)
static bool instIsEmbeddedBroadcastCompatible(instruction ins);
static bool instIsEmbeddedBroadcastCompatible(instruction ins);
static bool instIsEmbeddedMaskingCompatible(instruction ins);

static unsigned instInputSize(instruction ins);
static unsigned instKMaskBaseSize(instruction ins);
#endif // TARGET_XARCH
//-------------------------------------------------------------------------
// Liveness-related fields & methods
Expand Down
16 changes: 8 additions & 8 deletions src/coreclr/jit/codegenxarch.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -4001,7 +4001,7 @@ void CodeGen::genStructPutArgUnroll(GenTreePutArgStk* putArgNode)
// this probably needs to be changed.

// Load
genCodeForLoadOffset(INS_movdqu, EA_16BYTE, xmmTmpReg, src, offset);
genCodeForLoadOffset(INS_movdqu32, EA_16BYTE, xmmTmpReg, src, offset);
// Store
genStoreRegToStackArg(TYP_STRUCT, xmmTmpReg, offset);

Expand Down Expand Up @@ -5700,7 +5700,7 @@ void CodeGen::genCodeForStoreInd(GenTreeStoreInd* tree)
case NI_AVX2_ConvertToUInt32:
{
// These intrinsics are "ins reg/mem, xmm"
ins = HWIntrinsicInfo::lookupIns(intrinsicId, baseType);
ins = HWIntrinsicInfo::lookupIns(intrinsicId, baseType, compiler);
attr = emitActualTypeSize(baseType);
#if defined(TARGET_X86)
if (varTypeIsLong(baseType))
Expand Down Expand Up @@ -5731,7 +5731,7 @@ void CodeGen::genCodeForStoreInd(GenTreeStoreInd* tree)
case NI_AVX10v1_V512_ExtractVector256:
{
// These intrinsics are "ins reg/mem, xmm, imm8"
ins = HWIntrinsicInfo::lookupIns(intrinsicId, baseType);
ins = HWIntrinsicInfo::lookupIns(intrinsicId, baseType, compiler);
attr = emitActualTypeSize(Compiler::getSIMDTypeForSize(hwintrinsic->GetSimdSize()));

if (intrinsicId == NI_SSE2_Extract)
Expand Down Expand Up @@ -5808,7 +5808,7 @@ void CodeGen::genCodeForStoreInd(GenTreeStoreInd* tree)
case NI_AVX10v1_ConvertToVector128UInt16WithSaturation:
{
// These intrinsics are "ins reg/mem, xmm"
ins = HWIntrinsicInfo::lookupIns(intrinsicId, baseType);
ins = HWIntrinsicInfo::lookupIns(intrinsicId, baseType, compiler);
attr = emitActualTypeSize(Compiler::getSIMDTypeForSize(hwintrinsic->GetSimdSize()));
break;
}
Expand Down Expand Up @@ -8491,7 +8491,7 @@ void CodeGen::genStoreRegToStackArg(var_types type, regNumber srcReg, int offset

if (type == TYP_STRUCT)
{
ins = INS_movdqu;
ins = INS_movdqu32;
// This should be changed!
attr = EA_16BYTE;
size = 16;
Expand Down Expand Up @@ -9360,7 +9360,7 @@ void CodeGen::genAmd64EmitterUnitTestsApx()
// // Legacy instructions
theEmitter->emitIns_R_ARX(INS_add, EA_4BYTE, REG_R16, REG_R17, REG_R18, 1, 0);

theEmitter->emitIns_AR_R(INS_movnti, EA_8BYTE, REG_R17, REG_R16, 10);
theEmitter->emitIns_AR_R(INS_movnti64, EA_8BYTE, REG_R17, REG_R16, 10);
theEmitter->emitIns_R_R_R(INS_andn, EA_8BYTE, REG_R17, REG_R16, REG_R18);

theEmitter->emitIns_Mov(INS_kmovb_gpr, EA_4BYTE, REG_R16, REG_K0, false);
Expand Down Expand Up @@ -9388,8 +9388,8 @@ void CodeGen::genAmd64EmitterUnitTestsApx()
theEmitter->emitIns_R_R_R(INS_pext, EA_4BYTE, REG_R16, REG_R18, REG_R17);
theEmitter->emitIns_R_R_R(INS_pext, EA_8BYTE, REG_R16, REG_R18, REG_R17);

theEmitter->emitIns_Mov(INS_movd, EA_4BYTE, REG_R16, REG_XMM0, false);
theEmitter->emitIns_Mov(INS_movd, EA_4BYTE, REG_R16, REG_XMM16, false);
theEmitter->emitIns_Mov(INS_movd32, EA_4BYTE, REG_R16, REG_XMM0, false);
theEmitter->emitIns_Mov(INS_movd32, EA_4BYTE, REG_R16, REG_XMM16, false);
theEmitter->emitIns_Mov(INS_movq, EA_8BYTE, REG_R16, REG_XMM0, false);
theEmitter->emitIns_Mov(INS_movq, EA_8BYTE, REG_R16, REG_XMM16, false);
}
Expand Down
2 changes: 1 addition & 1 deletion src/coreclr/jit/emit.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -8260,7 +8260,7 @@ void emitter::emitSimdConstCompressedLoad(simd_t* constValue, emitAttr attr, reg
{
assert(emitComp->IsBaselineVector256IsaSupportedDebugOnly());
dataSize = 16;
ins = INS_vbroadcastf128;
ins = INS_vbroadcastf32x4;
}

if ((dataSize == 16) && (constValue->u64[1] == constValue->u64[0]))
Expand Down
Loading
Loading