We now push directly the floating point immediate value when we have one instead of going through the XMM registers back to memory.
Signed-off-by: Arthur Huillet <arthur.huil...@free.fr> --- arch/x86/insn-selector_32.brg | 14 +++++++++++++- 1 files changed, 13 insertions(+), 1 deletions(-) diff --git a/arch/x86/insn-selector_32.brg b/arch/x86/insn-selector_32.brg index cca84f2..d425cac 100644 --- a/arch/x86/insn-selector_32.brg +++ b/arch/x86/insn-selector_32.brg @@ -1213,7 +1213,7 @@ arg: EXPR_NO_ARGS state->reg1 = NULL; } -arg: EXPR_ARG(EXPR_VALUE) +arg: EXPR_ARG(EXPR_VALUE) 1 { struct expression *expr, *arg_expr; unsigned long long imm; @@ -1229,6 +1229,18 @@ arg: EXPR_ARG(EXPR_VALUE) select_insn(s, tree, imm_insn(INSN_PUSH_IMM, imm & ~0UL)); } +arg: EXPR_ARG(EXPR_FVALUE) 1 +{ + struct expression *expr, *arg_expr; + unsigned long long imm; + + expr = to_expr(tree); + arg_expr = to_expr(expr->arg_expression); + imm = float_to_uint32(arg_expr->fvalue); + + select_insn(s, tree, imm_insn(INSN_PUSH_IMM, imm & ~0UL)); +} + arg: EXPR_ARG(reg) { struct var_info *src; -- 1.6.3.3 ------------------------------------------------------------------------------ _______________________________________________ Jatovm-devel mailing list Jatovm-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/jatovm-devel