Implement floating-point truncation.
Change-Id: Id14a447fc4c3ce78126f0cba8f63273124938b13
diff --git a/src/compiler_llvm/method_compiler.cc b/src/compiler_llvm/method_compiler.cc
index bc47a8d..37da618 100644
--- a/src/compiler_llvm/method_compiler.cc
+++ b/src/compiler_llvm/method_compiler.cc
@@ -1823,7 +1823,13 @@
void MethodCompiler::EmitInsn_FTrunc(uint32_t dex_pc,
Instruction const* insn) {
- // UNIMPLEMENTED(WARNING);
+
+ Instruction::DecodedInstruction dec_insn(insn);
+
+ llvm::Value* src_value = EmitLoadDalvikReg(dec_insn.vB_, kDouble, kAccurate);
+ llvm::Value* result_value = irb_.CreateFPTrunc(src_value, irb_.getJFloatTy());
+ EmitStoreDalvikReg(dec_insn.vA_, kFloat, kAccurate, result_value);
+
irb_.CreateBr(GetNextBasicBlock(dex_pc));
}