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

Reply via email to