From 251b7d27b09b10227e439ce26b918c06a60e5aed Mon Sep 17 00:00:00 2001 From: Mikhail Skvortcov Date: Tue, 23 May 2017 15:12:22 +0300 Subject: [PATCH] Revert commit dfca51c6 --- src/jit/emitarm.cpp | 43 +++-------------------------------------- src/jit/lsraarmarch.cpp | 8 -------- 2 files changed, 3 insertions(+), 48 deletions(-) diff --git a/src/jit/emitarm.cpp b/src/jit/emitarm.cpp index 4f3f5e629a..89c2df022a 100644 --- a/src/jit/emitarm.cpp +++ b/src/jit/emitarm.cpp @@ -7575,7 +7575,6 @@ void emitter::emitInsLoadStoreOp(instruction ins, emitAttr attr, regNumber dataR { regNumber tmpReg = indir->GetSingleTempReg(); - NYI_IF(varTypeIsFloating(indir), "vldr/vstr encoding is not available."); if (emitIns_valid_imm_for_add(offset, INS_FLAGS_DONT_CARE)) { if (lsl > 0) @@ -7616,54 +7615,18 @@ void emitter::emitInsLoadStoreOp(instruction ins, emitAttr attr, regNumber dataR if (lsl > 0) { // Then load/store dataReg from/to [memBase + index*scale] - if (varTypeIsFloating(indir)) - { - // We require a tmpReg to hold memBase + index*scale - regNumber tmpReg = indir->GetSingleTempReg(); - - // add tmpReg, memBase, index << lsl - emitIns_R_R_R_I(INS_add, EA_PTRSIZE, tmpReg, memBase->gtRegNum, index->gtRegNum, lsl, - INS_FLAGS_DONT_CARE, INS_OPTS_LSL); - - // vldr/vstr - assert(ins == INS_vldr || ins == INS_vstr); - emitIns_R_R(ins, attr, dataReg, tmpReg); - } - else - { - emitIns_R_R_R_I(ins, attr, dataReg, memBase->gtRegNum, index->gtRegNum, lsl, - INS_FLAGS_DONT_CARE, INS_OPTS_LSL); - } + emitIns_R_R_R_I(ins, attr, dataReg, memBase->gtRegNum, index->gtRegNum, lsl, INS_FLAGS_DONT_CARE, + INS_OPTS_LSL); } else // no scale { // Then load/store dataReg from/to [memBase + index] - if (varTypeIsFloating(indir)) - { - NYI_ARM("vldr/vstr not test yet!"); // Not tested yet! Please remove it and verify - // implemenation. - - // We require a tmpReg to hold memBase + index*scale - regNumber tmpReg = indir->GetSingleTempReg(); - - // add tmpReg, memBase, index - emitIns_R_R_R(INS_add, EA_PTRSIZE, tmpReg, memBase->gtRegNum, index->gtRegNum, - INS_FLAGS_DONT_CARE); - - // vldr/vstr - assert(ins == INS_vldr || ins == INS_vstr); - emitIns_R_R(ins, attr, dataReg, tmpReg); - } - else - { - emitIns_R_R_R(ins, attr, dataReg, memBase->gtRegNum, index->gtRegNum); - } + emitIns_R_R_R(ins, attr, dataReg, memBase->gtRegNum, index->gtRegNum); } } } else // no Index { - NYI_IF(varTypeIsFloating(indir), "vldr/vstr encoding is not available."); if (emitIns_valid_imm_for_ldst_offset(offset, attr)) { // Then load/store dataReg from/to [memBase + offset] diff --git a/src/jit/lsraarmarch.cpp b/src/jit/lsraarmarch.cpp index d33eb30f8c..e9a69bec8b 100644 --- a/src/jit/lsraarmarch.cpp +++ b/src/jit/lsraarmarch.cpp @@ -305,14 +305,6 @@ void Lowering::TreeNodeInfoInitIndir(GenTreePtr indirTree) // This offset can't be contained in the ldr/str instruction, so we need an internal register info->internalIntCount = 1; } - else if (varTypeIsFloating(indirTree)) - { - // TODO-ARM: We can narrow the condition where an internal register is really required. - // For example, we don't need an internal regsiter where offset can be contained. - - // For float ldr/str(vldr/vstr), we need an internal register to compute address. - info->internalIntCount = 1; - } } //------------------------------------------------------------------------ -- 2.34.1