dotgnu-pnet-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[dotgnu-pnet-commits] libjit ChangeLog jit/jit-rules-arm.ins


From: Aleksey Demakov
Subject: [dotgnu-pnet-commits] libjit ChangeLog jit/jit-rules-arm.ins
Date: Sun, 22 Mar 2009 21:33:27 +0000

CVSROOT:        /sources/dotgnu-pnet
Module name:    libjit
Changes by:     Aleksey Demakov <avd>   09/03/22 21:33:27

Modified files:
        .              : ChangeLog 
        jit            : jit-rules-arm.ins 

Log message:
        restore ARM FPA rules

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/libjit/ChangeLog?cvsroot=dotgnu-pnet&r1=1.409&r2=1.410
http://cvs.savannah.gnu.org/viewcvs/libjit/jit/jit-rules-arm.ins?cvsroot=dotgnu-pnet&r1=1.1&r2=1.2

Patches:
Index: ChangeLog
===================================================================
RCS file: /sources/dotgnu-pnet/libjit/ChangeLog,v
retrieving revision 1.409
retrieving revision 1.410
diff -u -b -r1.409 -r1.410
--- ChangeLog   22 Mar 2009 21:22:05 -0000      1.409
+++ ChangeLog   22 Mar 2009 21:33:27 -0000      1.410
@@ -2,6 +2,7 @@
 
        * jit/jit-gen-arm.h: add more ARM codegen macros including VFP
        support.
+       * jit/jit-rules-arm.ins: restore FPA rules.
 
 2009-02-07  Aleksey Demakov  <address@hidden>
 

Index: jit/jit-rules-arm.ins
===================================================================
RCS file: /sources/dotgnu-pnet/libjit/jit/jit-rules-arm.ins,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- jit/jit-rules-arm.ins       5 Feb 2009 21:21:07 -0000       1.1
+++ jit/jit-rules-arm.ins       22 Mar 2009 21:33:27 -0000      1.2
@@ -28,6 +28,7 @@
 %regclass reg arm_reg
 %regclass freg32 arm_freg32
 %regclass freg64 arm_freg64
+%regclass freg arm_freg
 %lregclass lreg arm_lreg
 %regclass breg arm_breg
 
@@ -207,56 +208,106 @@
                arm_alu_reg_imm8(inst, ARM_ADC, %1, %1, 0);
        }
 
-JIT_OP_FADD (JIT_ARM_HAS_FLOAT_REGS): 
+JIT_OP_FADD (JIT_ARM_HAS_VFP): 
        [freg32, freg32] -> {
                arm_alu_freg_freg_32(inst, ARM_FADD, $1, $1, $2);
        }
 
-JIT_OP_FSUB (JIT_ARM_HAS_FLOAT_REGS): 
+JIT_OP_FADD (JIT_ARM_HAS_FPA): /*binary*/
+       [freg, freg] -> {
+               arm_alu_freg_freg_32(inst, ARM_ADF, $1, $1, $2);
+       }
+
+JIT_OP_FSUB (JIT_ARM_HAS_VFP): 
        [freg32, freg32] -> {
                arm_alu_freg_freg_32(inst, ARM_FSUB, $1, $1, $2);
        }
 
-JIT_OP_FMUL (JIT_ARM_HAS_FLOAT_REGS): 
+JIT_OP_FSUB (JIT_ARM_HAS_FPA): /*binary*/
+       [freg, freg] -> {
+               arm_alu_freg_freg_32(inst, ARM_SUF, $1, $1, $2);
+       }
+
+JIT_OP_FMUL (JIT_ARM_HAS_VFP): 
        [freg32, freg32] -> {
                arm_alu_freg_freg_32(inst, ARM_FMUL, $1, $1, $2);
        }
 
-JIT_OP_FDIV (JIT_ARM_HAS_FLOAT_REGS): 
+JIT_OP_FMUL (JIT_ARM_HAS_FPA): /*binary*/
+       [freg, freg] -> {
+               arm_alu_freg_freg_32(inst, ARM_MUF, $1, $1, $2);
+       }
+
+JIT_OP_FDIV (JIT_ARM_HAS_VFP): 
        [freg32, freg32] -> {
                arm_alu_freg_freg_32(inst, ARM_FDIV, $1, $1, $2);
        }
 
-JIT_OP_FNEG (JIT_ARM_HAS_FLOAT_REGS): 
+JIT_OP_FDIV (JIT_ARM_HAS_FPA): /*binary*/
+       [freg, freg] -> {
+               arm_alu_freg_freg_32(inst, ARM_DVF, $1, $1, $2);
+       }
+
+JIT_OP_FNEG (JIT_ARM_HAS_VFP): 
        [freg32] -> {
                arm_alu_freg_32(inst, ARM_MNF, $1, $1);
        }
 
-JIT_OP_DADD, JIT_OP_NFADD (JIT_ARM_HAS_FLOAT_REGS): 
+JIT_OP_FNEG (JIT_ARM_HAS_FPA): /*unary*/
+       [freg] -> {
+               arm_alu_freg_32(inst, ARM_MNF, $1, $1);
+       }
+
+JIT_OP_DADD, JIT_OP_NFADD (JIT_ARM_HAS_VFP): 
        [freg64, freg64] -> {
                arm_alu_freg_freg(inst, ARM_FADD, $1, $1, $2);
        }
 
-JIT_OP_DSUB, JIT_OP_NFSUB (JIT_ARM_HAS_FLOAT_REGS): 
+JIT_OP_DADD, JIT_OP_NFADD (JIT_ARM_HAS_FPA): /*binary*/
+       [freg, freg] -> {
+               arm_alu_freg_freg(inst, ARM_ADF, $1, $1, $2);
+       }
+
+JIT_OP_DSUB, JIT_OP_NFSUB (JIT_ARM_HAS_VFP): 
        [freg64, freg64] -> {
                arm_alu_freg_freg(inst, ARM_FSUB, $1, $1, $2);
        }
 
-JIT_OP_DMUL, JIT_OP_NFMUL (JIT_ARM_HAS_FLOAT_REGS): 
+JIT_OP_DSUB, JIT_OP_NFSUB (JIT_ARM_HAS_FPA): /*binary*/
+       [freg, freg] -> {
+               arm_alu_freg_freg(inst, ARM_SUF, $1, $1, $2);
+       }
+
+JIT_OP_DMUL, JIT_OP_NFMUL (JIT_ARM_HAS_VFP): 
        [freg64, freg64] -> {
                arm_alu_freg_freg(inst, ARM_FMUL, $1, $1, $2);
        }
 
-JIT_OP_DDIV, JIT_OP_NFDIV (JIT_ARM_HAS_FLOAT_REGS): 
+JIT_OP_DMUL, JIT_OP_NFMUL (JIT_ARM_HAS_FPA): /*binary*/
+       [freg, freg] -> {
+               arm_alu_freg_freg(inst, ARM_MUF, $1, $1, $2);
+       }
+
+JIT_OP_DDIV, JIT_OP_NFDIV (JIT_ARM_HAS_VFP): 
        [freg64, freg64] -> {
                arm_alu_freg_freg(inst, ARM_FDIV, $1, $1, $2);
        }
 
-JIT_OP_DNEG, JIT_OP_NFNEG (JIT_ARM_HAS_FLOAT_REGS): 
+JIT_OP_DDIV, JIT_OP_NFDIV (JIT_ARM_HAS_FPA): /*binary*/
+       [freg, freg] -> {
+               arm_alu_freg_freg(inst, ARM_DVF, $1, $1, $2);
+       }
+
+JIT_OP_DNEG, JIT_OP_NFNEG (JIT_ARM_HAS_VFP): 
        [freg64] -> {
                arm_alu_freg(inst, ARM_MNF, $1, $1);
        }
 
+JIT_OP_DNEG, JIT_OP_NFNEG (JIT_ARM_HAS_FPA): /*unary*/
+       [freg] -> {
+               arm_alu_freg(inst, ARM_MNF, $1, $1);
+       }
+
 /*
  * Bitwise opcodes.
  */
@@ -701,12 +752,22 @@
                jump_to_epilog(gen, &inst, block);
        }
 
-JIT_OP_RETURN_FLOAT32 (JIT_ARM_HAS_FLOAT_REGS): branch 
+JIT_OP_RETURN_FLOAT32 (JIT_ARM_HAS_VFP): branch 
        [freg32, clobber("r0")] -> {
                arm_mov_reg_float(inst, ARM_R0, $1);
                jump_to_epilog(gen, &inst, block);
        }
 
+JIT_OP_RETURN_FLOAT32 (JIT_ARM_HAS_FPA): branch
+       [freg] -> {
+               if($1 != 0)
+               {
+                       arm_alu_freg_32(inst, ARM_MVF, ARM_F0, $1);
+               }
+               jump_to_epilog(gen, &inst, block);
+       }
+
+
 JIT_OP_RETURN_FLOAT32 (!JIT_ARM_HAS_FLOAT_REGS): manual
        [] -> {
                arm_inst_buf inst;
@@ -727,12 +788,21 @@
        }
 
 JIT_OP_RETURN_FLOAT64, JIT_OP_RETURN_NFLOAT
-               (JIT_ARM_HAS_FLOAT_REGS): branch 
+               (JIT_ARM_HAS_VFP): branch 
        [freg64, clobber("r0", "r1")] -> {
                arm_mov_reg_reg_double(inst,ARM_R0,ARM_R1, $1);
                jump_to_epilog(gen, &inst, block);
        }
 
+JIT_OP_RETURN_FLOAT64, JIT_OP_RETURN_NFLOAT (JIT_ARM_HAS_FPA): branch
+       [freg] -> {
+               if($1 != 0)
+               {
+                       arm_alu_freg(inst, ARM_MVF, ARM_F0, $1);
+               }
+               jump_to_epilog(gen, &inst, block);
+       }
+
 JIT_OP_RETURN_FLOAT64, JIT_OP_RETURN_NFLOAT (!JIT_ARM_HAS_FLOAT_REGS): manual
        [] -> {
                arm_inst_buf inst;
@@ -1430,12 +1500,12 @@
                }
        }
 
-JIT_OP_LOAD_RELATIVE_FLOAT32:
+JIT_OP_LOAD_RELATIVE_FLOAT32 (JIT_ARM_HAS_VFP):
 [=freg32, reg, imm] -> {
        arm_fld_membase(inst, $1, $2, $3, 0);
 }
 
-JIT_OP_LOAD_RELATIVE_FLOAT64:
+JIT_OP_LOAD_RELATIVE_FLOAT64 (JIT_ARM_HAS_VFP):
 [=freg64, reg, imm] -> {
        arm_fld_membase(inst, $1, $2, $3, 1);
 }
@@ -1510,7 +1580,7 @@
                arm_mov_membase_reg(inst, $1, $3 + 4, %2, 4);
        }
        
-JIT_OP_STORE_RELATIVE_FLOAT32: ternary
+JIT_OP_STORE_RELATIVE_FLOAT32 (JIT_ARM_HAS_VFP): ternary
        [reg, imm, imm] -> {
                arm_mov_membase_imm(inst, $1, $3, ((int *)($2))[0], 4, 
ARM_WORK);
        }
@@ -1518,7 +1588,7 @@
                arm_store_membase_float32(inst, $2, $1, $3);
        }
 
-JIT_OP_STORE_RELATIVE_FLOAT64: ternary
+JIT_OP_STORE_RELATIVE_FLOAT64 (JIT_ARM_HAS_VFP): ternary
        [reg, imm, imm, scratch reg] -> {
                arm_mov_membase_imm(inst, $1, $3, ((int *)($2))[0], 4, $4);
                arm_mov_membase_imm(inst, $1, $3 + 4, ((int *)($2))[1], 4, $4);
@@ -1636,6 +1706,24 @@
        arm_mov_memindex_reg(inst, $1, 0, $2, 2, $3, 4, $4);
 }
 
+JIT_OP_STORE_ELEMENT_LONG: ternary
+       [reg, reg, imm] -> {
+               TODO();
+               abort();
+               //x86_mov_memindex_imm(inst, $1, 0, $2, 3, *(int *)($3), 4);
+               //x86_mov_memindex_imm(inst, $1, 4, $2, 3, *(int *)($3 + 4), 4);
+       }
+       [reg, reg, local, scratch reg, scratch reg] -> {
+               arm_mov_reg_membase(inst, $4, ARM_FP, $3, 4);
+               arm_mov_memindex_reg(inst, $1, 0, $2, 3, $4, 4, $5);
+               arm_mov_reg_membase(inst, $4, ARM_FP, $3 + 4, 4);
+               arm_mov_memindex_reg(inst, $1, 4, $2, 3, $4, 4, $5);
+       }
+       [reg, reg, lreg, scratch reg] -> {
+               arm_mov_memindex_reg(inst, $1, 0, $2, 3, $3, 4, $4);
+               arm_mov_memindex_reg(inst, $1, 4, $2, 3, %3, 4, $4);
+       }
+
 JIT_OP_STORE_ELEMENT_FLOAT64: ternary
 [reg, reg, freg64, scratch reg] -> {
        arm_fst_memindex(inst, $3, $1, 0, $2, 3, 1, $4);




reply via email to

[Prev in Thread] Current Thread [Next in Thread]