s1 = emit_load_s1(jd, iptr, REG_ITMP1);
d = codegen_reg_of_dst(jd, iptr, REG_FTMP1);
+#if defined(__VFP_FP__)
+ M_FMSR(s1, d);
+ M_CVTIF(d, d);
+#else
M_CVTIF(s1, d);
+#endif
emit_store_dst(jd, iptr, d);
break;
s1 = emit_load_s1(jd, iptr, REG_ITMP1);
d = codegen_reg_of_dst(jd, iptr, REG_FTMP1);
+#if defined(__VFP_FP__)
+ M_FMSR(s1, d);
+ M_CVTID(d, d);
+#else
M_CVTID(s1, d);
+#endif
emit_store_dst(jd, iptr, d);
break;
s1 = emit_load_s1(jd, iptr, REG_FTMP1);
d = codegen_reg_of_dst(jd, iptr, REG_ITMP1);
+#if defined(__VFP_FP__)
+ M_CVTFI(s1, REG_FTMP2);
+ M_FMRS(REG_FTMP2, d);
+#else
/* this uses round towards zero, as Java likes it */
M_CVTFI(s1, d);
-#if !defined(__VFP_FP__)
/* this checks for NaN; to return zero as Java likes it */
M_FCMP(s1, 0x8);
M_MOVVS_IMM(0, d);
s1 = emit_load_s1(jd, iptr, REG_FTMP1);
d = codegen_reg_of_dst(jd, iptr, REG_ITMP1);
+#if defined(__VFP_FP__)
+ M_CVTDI(s1, REG_FTMP2);
+ M_FMRS(REG_FTMP2, d);
+#else
/* this uses round towards zero, as Java likes it */
M_CVTDI(s1, d);
-#if !defined(__VFP_FP__)
/* this checks for NaN; to return zero as Java likes it */
M_DCMP(s1, 0x8);
M_MOVVS_IMM(0, d);