Implement integer to floating point cast.
Change-Id: If832c40c94c9fbc874edafb1fc92d4c935bc1c4e
diff --git a/src/compiler_llvm/method_compiler.cc b/src/compiler_llvm/method_compiler.cc
index e1ebea3..a3aaaf9 100644
--- a/src/compiler_llvm/method_compiler.cc
+++ b/src/compiler_llvm/method_compiler.cc
@@ -1774,7 +1774,17 @@
Instruction const* insn,
JType src_jty,
JType dest_jty) {
- // UNIMPLEMENTED(WARNING);
+
+ Instruction::DecodedInstruction dec_insn(insn);
+
+ DCHECK(src_jty == kInt || src_jty == kLong) << src_jty;
+ DCHECK(dest_jty == kFloat || dest_jty == kDouble) << dest_jty;
+
+ llvm::Value* src_value = EmitLoadDalvikReg(dec_insn.vB_, src_jty, kAccurate);
+ llvm::Type* dest_type = irb_.getJType(dest_jty, kAccurate);
+ llvm::Value* dest_value = irb_.CreateSIToFP(src_value, dest_type);
+ EmitStoreDalvikReg(dec_insn.vA_, dest_jty, kAccurate, dest_value);
+
irb_.CreateBr(GetNextBasicBlock(dex_pc));
}