RyuJIT/ARM32: Update GT_LCL_FLD codegen.
authorMikhail Skvortcov <m.skvortcov@partner.samsung.com>
Tue, 25 Apr 2017 12:04:03 +0000 (15:04 +0300)
committerMikhail Skvortcov <m.skvortcov@partner.samsung.com>
Tue, 25 Apr 2017 12:04:03 +0000 (15:04 +0300)
src/jit/codegenarm.cpp

index 81ba35e..d40921b 100644 (file)
@@ -491,7 +491,21 @@ void CodeGen::genCodeForTreeNode(GenTreePtr treeNode)
             unsigned varNum = treeNode->gtLclVarCommon.gtLclNum;
             assert(varNum < compiler->lvaCount);
 
-            emit->emitIns_R_S(ins_Move_Extend(targetType, treeNode->InReg()), size, targetReg, varNum, offs);
+            if (varTypeIsFloating(targetType))
+            {
+                if (treeNode->InReg())
+                {
+                    NYI("GT_LCL_FLD with reg-to-reg floating point move");
+                }
+                else
+                {
+                    emit->emitIns_R_S(ins_Load(targetType), size, targetReg, varNum, offs);
+                }
+            }
+            else
+            {
+                emit->emitIns_R_S(ins_Move_Extend(targetType, treeNode->InReg()), size, targetReg, varNum, offs);
+            }
         }
             genProduceReg(treeNode);
             break;