Index: src/compiler/arm/code-generator-arm.cc |
diff --git a/src/compiler/arm/code-generator-arm.cc b/src/compiler/arm/code-generator-arm.cc |
index a8678bd37ef8a856834b94b1fb54de25a325a036..169d7005b21ce57e03a3f1413282b432f9cb236e 100644 |
--- a/src/compiler/arm/code-generator-arm.cc |
+++ b/src/compiler/arm/code-generator-arm.cc |
@@ -415,6 +415,22 @@ void CodeGenerator::AssembleArchInstruction(Instruction* instr) { |
DCHECK_EQ(LeaveCC, i.OutputSBit()); |
break; |
} |
+ case kArmVldr32: { |
+ SwVfpRegister scratch = kScratchDoubleReg.low(); |
+ __ vldr(scratch, i.InputOffset()); |
+ __ vcvt_f64_f32(i.OutputDoubleRegister(), scratch); |
+ DCHECK_EQ(LeaveCC, i.OutputSBit()); |
+ break; |
+ } |
+ case kArmVstr32: { |
+ int index = 0; |
+ SwVfpRegister scratch = kScratchDoubleReg.low(); |
+ MemOperand operand = i.InputOffset(&index); |
+ __ vcvt_f32_f64(scratch, i.InputDoubleRegister(index)); |
+ __ vstr(scratch, operand); |
+ DCHECK_EQ(LeaveCC, i.OutputSBit()); |
+ break; |
+ } |
case kArmVldr64: |
__ vldr(i.OutputDoubleRegister(), i.InputOffset()); |
DCHECK_EQ(LeaveCC, i.OutputSBit()); |