diff --git a/src/jit/codegenarmarch.cpp b/src/jit/codegenarmarch.cpp index 3883121221d3..e9a12afd0b42 100644 --- a/src/jit/codegenarmarch.cpp +++ b/src/jit/codegenarmarch.cpp @@ -1229,7 +1229,16 @@ void CodeGen::genRangeCheck(GenTreePtr oper) jmpKind = genJumpKindForOper(GT_GE, CK_UNSIGNED); } - getEmitter()->emitInsBinary(INS_cmp, EA_4BYTE, src1, src2); + var_types bndsChkType = genActualType(src2->TypeGet()); +#if DEBUG + // Bounds checks can only be 32 or 64 bit sized comparisons. + assert(bndsChkType == TYP_INT || bndsChkType == TYP_LONG); + + // The type of the bounds check should always wide enough to compare against the index. + assert(emitTypeSize(bndsChkType) >= emitTypeSize(genActualType(src1->TypeGet()))); +#endif // DEBUG + + getEmitter()->emitInsBinary(INS_cmp, emitTypeSize(bndsChkType), src1, src2); genJumpToThrowHlpBlk(jmpKind, SCK_RNGCHK_FAIL, bndsChk->gtIndRngFailBB); } diff --git a/src/jit/lower.cpp b/src/jit/lower.cpp index 6bb1c404d3cd..65858ea22746 100644 --- a/src/jit/lower.cpp +++ b/src/jit/lower.cpp @@ -211,7 +211,7 @@ GenTree* Lowering::LowerNode(GenTree* node) LowerCast(node); break; -#ifdef _TARGET_XARCH_ +#if defined(_TARGET_XARCH_) || defined(_TARGET_ARM64_) case GT_ARR_BOUNDS_CHECK: #ifdef FEATURE_SIMD case GT_SIMD_CHK: