From 5582d1ee1017bb8d2060cfde1877294f7a69caea Mon Sep 17 00:00:00 2001 From: Clinton Ingram Date: Wed, 5 Feb 2025 16:47:06 -0800 Subject: [PATCH 1/2] fix illegal instruction encoding for floating->floating casts --- src/coreclr/jit/codegenxarch.cpp | 13 +++++++++---- src/coreclr/jit/instr.cpp | 4 ---- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/src/coreclr/jit/codegenxarch.cpp b/src/coreclr/jit/codegenxarch.cpp index 6cffd104de9814..55f29a37c3d74e 100644 --- a/src/coreclr/jit/codegenxarch.cpp +++ b/src/coreclr/jit/codegenxarch.cpp @@ -7234,11 +7234,16 @@ void CodeGen::genFloatToFloatCast(GenTree* treeNode) assert(varTypeIsFloating(srcType) && varTypeIsFloating(dstType)); genConsumeOperands(treeNode->AsOp()); - if (srcType == dstType && (op1->isUsedFromReg() && (targetReg == op1->GetRegNum()))) + if (srcType == dstType) { - // source and destinations types are the same and also reside in the same register. - // we just need to consume and produce the reg in this case. - ; + if (op1->isUsedFromReg()) + { + GetEmitter()->emitIns_Mov(INS_movaps, EA_16BYTE, targetReg, op1->GetRegNum(), /* canSkip */ true); + } + else + { + inst_RV_TT(ins_Move_Extend(dstType, /* srcInReg */ false), emitTypeSize(dstType), targetReg, op1); + } } else { diff --git a/src/coreclr/jit/instr.cpp b/src/coreclr/jit/instr.cpp index 2b0f34ebb49bb1..403ba87632c4db 100644 --- a/src/coreclr/jit/instr.cpp +++ b/src/coreclr/jit/instr.cpp @@ -2477,8 +2477,6 @@ instruction CodeGen::ins_FloatConv(var_types to, var_types from) return INS_cvttss2si32; case TYP_LONG: return INS_cvttss2si64; - case TYP_FLOAT: - return ins_Move_Extend(TYP_FLOAT, false); case TYP_DOUBLE: return INS_cvtss2sd; case TYP_ULONG: @@ -2499,8 +2497,6 @@ instruction CodeGen::ins_FloatConv(var_types to, var_types from) return INS_cvttsd2si64; case TYP_FLOAT: return INS_cvtsd2ss; - case TYP_DOUBLE: - return ins_Move_Extend(TYP_DOUBLE, false); case TYP_ULONG: return INS_vcvttsd2usi64; case TYP_UINT: From fecb2232465c61e47a4da72f3901e777272bfe7d Mon Sep 17 00:00:00 2001 From: Clinton Ingram Date: Thu, 6 Feb 2025 10:17:19 -0800 Subject: [PATCH 2/2] remove path-based trigger for jitstress-isas-avx512 pipeline --- eng/pipelines/coreclr/jitstress-isas-avx512.yml | 14 -------------- 1 file changed, 14 deletions(-) diff --git a/eng/pipelines/coreclr/jitstress-isas-avx512.yml b/eng/pipelines/coreclr/jitstress-isas-avx512.yml index 87b33c84795295..2af4e466d56977 100644 --- a/eng/pipelines/coreclr/jitstress-isas-avx512.yml +++ b/eng/pipelines/coreclr/jitstress-isas-avx512.yml @@ -1,20 +1,6 @@ # This pipeline only runs on GitHub PRs, not on merges. trigger: none -# Only run on specific changes to the JIT directory that are likely to affect AVX-512. -pr: - branches: - include: - - main - paths: - include: - - src/coreclr/jit/hwintrinsiccodegenxarch.cpp - - src/coreclr/jit/hwintrinsiclistxarch.h - - src/coreclr/jit/hwintrinsicxarch.cpp - - src/coreclr/jit/instrsxarch.h - - src/coreclr/jit/emitxarch.cpp - - src/coreclr/jit/emitxarch.h - schedules: - cron: "30 19 * * 6" displayName: Sat at 11:30 AM (UTC-8:00)