diff --git a/src/jit/codegen.h b/src/jit/codegen.h index c146b57876c8..5fe1262c754b 100644 --- a/src/jit/codegen.h +++ b/src/jit/codegen.h @@ -95,12 +95,6 @@ class CodeGen : public CodeGenInterface } } -#ifdef LEGACY_BACKEND - enum CompareKind{CK_SIGNED, CK_UNSIGNED, CK_LOGICAL}; - - static emitJumpKind genJumpKindForOper(genTreeOps cmp, CompareKind compareKind); -#endif // LEGACY_BACKEND - static bool genShouldRoundFP(); GenTreeIndir indirForm(var_types type, GenTree* base); diff --git a/src/jit/codegencommon.cpp b/src/jit/codegencommon.cpp index bc6b756866a7..c70d4e97173a 100644 --- a/src/jit/codegencommon.cpp +++ b/src/jit/codegencommon.cpp @@ -1745,159 +1745,6 @@ bool CodeGen::genCreateAddrMode(GenTree* addr, return true; } -#ifdef LEGACY_BACKEND -/***************************************************************************** -* The condition to use for (the jmp/set for) the given type of operation -* -* In case of amd64, this routine should be used when there is no gentree available -* and one needs to generate jumps based on integer comparisons. When gentree is -* available always use its overloaded version. -* -*/ - -// static -emitJumpKind CodeGen::genJumpKindForOper(genTreeOps cmp, CompareKind compareKind) -{ - const static BYTE genJCCinsSigned[] = { -#if defined(_TARGET_XARCH_) - EJ_je, // GT_EQ - EJ_jne, // GT_NE - EJ_jl, // GT_LT - EJ_jle, // GT_LE - EJ_jge, // GT_GE - EJ_jg, // GT_GT - EJ_je, // GT_TEST_EQ - EJ_jne, // GT_TEST_NE -#elif defined(_TARGET_ARMARCH_) - EJ_eq, // GT_EQ - EJ_ne, // GT_NE - EJ_lt, // GT_LT - EJ_le, // GT_LE - EJ_ge, // GT_GE - EJ_gt, // GT_GT -#if defined(_TARGET_ARM64_) - EJ_eq, // GT_TEST_EQ - EJ_ne, // GT_TEST_NE -#endif -#endif - }; - - const static BYTE genJCCinsUnsigned[] = /* unsigned comparison */ - { -#if defined(_TARGET_XARCH_) - EJ_je, // GT_EQ - EJ_jne, // GT_NE - EJ_jb, // GT_LT - EJ_jbe, // GT_LE - EJ_jae, // GT_GE - EJ_ja, // GT_GT - EJ_je, // GT_TEST_EQ - EJ_jne, // GT_TEST_NE -#elif defined(_TARGET_ARMARCH_) - EJ_eq, // GT_EQ - EJ_ne, // GT_NE - EJ_lo, // GT_LT - EJ_ls, // GT_LE - EJ_hs, // GT_GE - EJ_hi, // GT_GT -#if defined(_TARGET_ARM64_) - EJ_eq, // GT_TEST_EQ - EJ_ne, // GT_TEST_NE -#endif -#endif - }; - - const static BYTE genJCCinsLogical[] = /* logical operation */ - { -#if defined(_TARGET_XARCH_) - EJ_je, // GT_EQ (Z == 1) - EJ_jne, // GT_NE (Z == 0) - EJ_js, // GT_LT (S == 1) - EJ_NONE, // GT_LE - EJ_jns, // GT_GE (S == 0) - EJ_NONE, // GT_GT - EJ_NONE, // GT_TEST_EQ - EJ_NONE, // GT_TEST_NE -#elif defined(_TARGET_ARMARCH_) - EJ_eq, // GT_EQ (Z == 1) - EJ_ne, // GT_NE (Z == 0) - EJ_mi, // GT_LT (N == 1) - EJ_NONE, // GT_LE - EJ_pl, // GT_GE (N == 0) - EJ_NONE, // GT_GT -#if defined(_TARGET_ARM64_) - EJ_eq, // GT_TEST_EQ - EJ_ne, // GT_TEST_NE -#endif -#endif - }; - -#if defined(_TARGET_XARCH_) - assert(genJCCinsSigned[GT_EQ - GT_EQ] == EJ_je); - assert(genJCCinsSigned[GT_NE - GT_EQ] == EJ_jne); - assert(genJCCinsSigned[GT_LT - GT_EQ] == EJ_jl); - assert(genJCCinsSigned[GT_LE - GT_EQ] == EJ_jle); - assert(genJCCinsSigned[GT_GE - GT_EQ] == EJ_jge); - assert(genJCCinsSigned[GT_GT - GT_EQ] == EJ_jg); - assert(genJCCinsSigned[GT_TEST_EQ - GT_EQ] == EJ_je); - assert(genJCCinsSigned[GT_TEST_NE - GT_EQ] == EJ_jne); - - assert(genJCCinsUnsigned[GT_EQ - GT_EQ] == EJ_je); - assert(genJCCinsUnsigned[GT_NE - GT_EQ] == EJ_jne); - assert(genJCCinsUnsigned[GT_LT - GT_EQ] == EJ_jb); - assert(genJCCinsUnsigned[GT_LE - GT_EQ] == EJ_jbe); - assert(genJCCinsUnsigned[GT_GE - GT_EQ] == EJ_jae); - assert(genJCCinsUnsigned[GT_GT - GT_EQ] == EJ_ja); - assert(genJCCinsUnsigned[GT_TEST_EQ - GT_EQ] == EJ_je); - assert(genJCCinsUnsigned[GT_TEST_NE - GT_EQ] == EJ_jne); - - assert(genJCCinsLogical[GT_EQ - GT_EQ] == EJ_je); - assert(genJCCinsLogical[GT_NE - GT_EQ] == EJ_jne); - assert(genJCCinsLogical[GT_LT - GT_EQ] == EJ_js); - assert(genJCCinsLogical[GT_GE - GT_EQ] == EJ_jns); -#elif defined(_TARGET_ARMARCH_) - assert(genJCCinsSigned[GT_EQ - GT_EQ] == EJ_eq); - assert(genJCCinsSigned[GT_NE - GT_EQ] == EJ_ne); - assert(genJCCinsSigned[GT_LT - GT_EQ] == EJ_lt); - assert(genJCCinsSigned[GT_LE - GT_EQ] == EJ_le); - assert(genJCCinsSigned[GT_GE - GT_EQ] == EJ_ge); - assert(genJCCinsSigned[GT_GT - GT_EQ] == EJ_gt); - - assert(genJCCinsUnsigned[GT_EQ - GT_EQ] == EJ_eq); - assert(genJCCinsUnsigned[GT_NE - GT_EQ] == EJ_ne); - assert(genJCCinsUnsigned[GT_LT - GT_EQ] == EJ_lo); - assert(genJCCinsUnsigned[GT_LE - GT_EQ] == EJ_ls); - assert(genJCCinsUnsigned[GT_GE - GT_EQ] == EJ_hs); - assert(genJCCinsUnsigned[GT_GT - GT_EQ] == EJ_hi); - - assert(genJCCinsLogical[GT_EQ - GT_EQ] == EJ_eq); - assert(genJCCinsLogical[GT_NE - GT_EQ] == EJ_ne); - assert(genJCCinsLogical[GT_LT - GT_EQ] == EJ_mi); - assert(genJCCinsLogical[GT_GE - GT_EQ] == EJ_pl); -#else - assert(!"unknown arch"); -#endif - assert(GenTree::OperIsCompare(cmp)); - - emitJumpKind result = EJ_COUNT; - - if (compareKind == CK_UNSIGNED) - { - result = (emitJumpKind)genJCCinsUnsigned[cmp - GT_EQ]; - } - else if (compareKind == CK_SIGNED) - { - result = (emitJumpKind)genJCCinsSigned[cmp - GT_EQ]; - } - else if (compareKind == CK_LOGICAL) - { - result = (emitJumpKind)genJCCinsLogical[cmp - GT_EQ]; - } - assert(result != EJ_COUNT); - return result; -} -#endif // LEGACY_BACKEND - #ifdef _TARGET_ARMARCH_ //------------------------------------------------------------------------ // genEmitGSCookieCheck: Generate code to check that the GS cookie diff --git a/src/jit/gentree.h b/src/jit/gentree.h index 23eb4c513c7e..f70656f03b7e 100644 --- a/src/jit/gentree.h +++ b/src/jit/gentree.h @@ -5726,9 +5726,7 @@ struct GenCondition static_assert((GT_LE - GT_EQ) == SLE, "bad relop"); static_assert((GT_GE - GT_EQ) == SGE, "bad relop"); static_assert((GT_GT - GT_EQ) == SGT, "bad relop"); -#ifndef LEGACY_BACKEND static_assert((GT_TEST_NE - GT_TEST_EQ) == (NE & ~Unsigned), "bad relop"); -#endif static GenCondition FromRelop(GenTree* relop) { @@ -5778,12 +5776,8 @@ struct GenCondition { assert(GenTree::OperIsCompare(oper)); -#ifndef LEGACY_BACKEND // GT_TEST_EQ/NE are special, they need to be mapped as GT_EQ/NE unsigned code = oper - ((oper >= GT_TEST_EQ) ? GT_TEST_EQ : GT_EQ); -#else - unsigned code = oper - GT_EQ; -#endif if (isUnsigned || (code <= 1)) // EQ/NE are treated as unsigned {