From 2cf2140b4efe0a56c24ae5e736824338abaa7708 Mon Sep 17 00:00:00 2001 From: "Canino, Anthony" Date: Tue, 21 Mar 2023 13:52:24 -0700 Subject: [PATCH] Fix `kortestq` and `kortestd` opcode gen (W bit). --- src/coreclr/jit/emitxarch.cpp | 11 ----------- src/coreclr/jit/hwintrinsiccodegenxarch.cpp | 2 +- src/coreclr/jit/instrsxarch.h | 5 ----- 3 files changed, 1 insertion(+), 17 deletions(-) diff --git a/src/coreclr/jit/emitxarch.cpp b/src/coreclr/jit/emitxarch.cpp index 4d011e8e59fbff..edfca27eb7495a 100644 --- a/src/coreclr/jit/emitxarch.cpp +++ b/src/coreclr/jit/emitxarch.cpp @@ -18249,17 +18249,6 @@ emitter::insExecutionCharacteristics emitter::getInsExecutionCharacteristics(ins break; } - // TODO-AVX512-XARCH double check - case INS_knotb: - case INS_knotw: - case INS_knotd: - case INS_knotq: - { - result.insLatency += PERFSCORE_LATENCY_1C; - result.insThroughput = PERFSCORE_THROUGHPUT_1C; - break; - } - case INS_kortestb: case INS_kortestw: case INS_kortestd: diff --git a/src/coreclr/jit/hwintrinsiccodegenxarch.cpp b/src/coreclr/jit/hwintrinsiccodegenxarch.cpp index a4ed9a6bc5dede..4eea56da18ef8d 100644 --- a/src/coreclr/jit/hwintrinsiccodegenxarch.cpp +++ b/src/coreclr/jit/hwintrinsiccodegenxarch.cpp @@ -1755,7 +1755,7 @@ void CodeGen::genAvxFamilyIntrinsic(GenTreeHWIntrinsic* node) assert(testIns != INS_invalid); assert(emitter::isMaskReg(op1Reg)); - emit->emitIns_R_R(testIns, attr, op1Reg, op1Reg); + emit->emitIns_R_R(testIns, EA_8BYTE, op1Reg, op1Reg); break; } diff --git a/src/coreclr/jit/instrsxarch.h b/src/coreclr/jit/instrsxarch.h index b3020b1f661df5..911df2938c7fd8 100644 --- a/src/coreclr/jit/instrsxarch.h +++ b/src/coreclr/jit/instrsxarch.h @@ -621,11 +621,6 @@ INST3(kortestw, "kortestw", IUM_WR, BAD_CODE, BAD_CODE, PAC INST3(kortestd, "kortestd", IUM_WR, BAD_CODE, BAD_CODE, PACK3(0x66, 0x0F, 0x98), INS_TT_NONE, Writes_ZF | Writes_CF ) // W1 INST3(kortestq, "kortestq", IUM_WR, BAD_CODE, BAD_CODE, PACK2(0x0F, 0x98), INS_TT_NONE, Writes_ZF | Writes_CF ) // W1 -INST3(knotb, "knotb", IUM_WR, BAD_CODE, BAD_CODE, PACK3(0x66, 0x0F, 0x44), INS_TT_NONE, INS_FLAGS_None ) -INST3(knotw, "knotw", IUM_WR, BAD_CODE, BAD_CODE, PACK2(0x0F, 0x44), INS_TT_NONE, INS_FLAGS_None ) -INST3(knotd, "knotd", IUM_WR, BAD_CODE, BAD_CODE, PACK3(0x66, 0x0F, 0x44), INS_TT_NONE, INS_FLAGS_None ) // W1 -INST3(knotq, "knotq", IUM_WR, BAD_CODE, BAD_CODE, PACK2(0x0F, 0x44), INS_TT_NONE, INS_FLAGS_None ) // W1 - INST3(LAST_K_INSTRUCTION, "LAST_K_INSTRUCTION", IUM_WR, BAD_CODE, BAD_CODE, BAD_CODE, INS_TT_NONE, INS_FLAGS_None ) INST3(LAST_AVX_INSTRUCTION, "LAST_AVX_INSTRUCTION", IUM_WR, BAD_CODE, BAD_CODE, BAD_CODE, INS_TT_NONE, INS_FLAGS_None)