PatchSet 7737 
Date: 2008/02/03 15:05:15
Author: robilad
Branch: HEAD
Tag: (none) 
Log:
use soft_cvtfi on arm jit

Members: 
        ChangeLog:1.5237->1.5238 
        config/arm/jit-icode.h:INITIAL->1.4 

Index: kaffe/ChangeLog
diff -u kaffe/ChangeLog:1.5237 kaffe/ChangeLog:1.5238
--- kaffe/ChangeLog:1.5237      Sat Feb  2 22:15:25 2008
+++ kaffe/ChangeLog     Sun Feb  3 15:05:15 2008
@@ -1,3 +1,8 @@
+2008-02-03  Dalibor Topic  <[EMAIL PROTECTED]>
+
+       * config/arm/jit-icode.h (HAVE_cvt_float_int)> Undefine
+       to fix jit regression test failure.
+
 2008-02-02  Dalibor Topic  <[EMAIL PROTECTED]>
 
        * TODO: Updated.
===================================================================
Checking out kaffe/config/arm/jit-icode.h
RCS:  /home/cvs/kaffe/kaffe/config/arm/jit-icode.h,v
VERS: 1.4
***************
--- /dev/null   Sun Aug  4 19:57:58 2002
+++ kaffe/config/arm/jit-icode.h        Sun Feb  3 15:07:28 2008
@@ -0,0 +1,274 @@
+/* arm/jit-icode.h
+ * Define the instructions which are present on the ARM.
+ *
+ * Copyright (c) 1996, 1997
+ *     Transvirtual Technologies, Inc.  All rights reserved.
+ *
+ * See the file "license.terms" for information on usage and redistribution 
+ * of this file. 
+ */
+
+#ifndef __icode_h
+#define __icode_h
+
+/*
+ * Size of long's compared to references.
+ */
+#define pusharg_long_idx_inc            2
+
+/*
+ * Define the range checking macros.
+ */
+#define        __anyvalue_rangecheck(v)        (1)
+
+//
+// Register-register operations allow you to specify an 8-bit
+// constant (...than can be shifted, although we don't handle that yet)
+//
+#define        __I8const_rangecheck(v)         ((v) >= -256 && (v) <= 255)
+#define        __U8const_rangecheck(v)         ((v) >= 0 && (v) <= 255)
+
+//
+// Used for floating load/stores, which use word index rather
+// than byte index.
+//
+#define        __I10const_rangecheck(v)        ((v) >= -1020 && (v) <= 1020)
+
+//
+// memory operations allow you to specify a 12-bit constant
+//
+#define        __I12const_rangecheck(v)        ((v) >= -4096 && (v) <= 4095)
+
+#define        __refconst_rangecheck(v)        __I8const_rangecheck(v)
+
+#define __floatconst_rangecheck(v)     0
+
+#define __builtin_FP_values(v) ( (v) == 0 || (v) == 1.0 || (v) == 2.0 || (v) 
== 3.0 || (v) == 4.0 || (v) == 5.0 || (v) == 0.5 || (v) == 10)
+
+#define __doubleconst_rangecheck(v)    0
+
+/*
+ * These must be defined for any architecture.
+ */
+#define        HAVE_spill_int                  spill_Rxx
+#define        HAVE_reload_int                 reload_Rxx
+#define        HAVE_spill_float                fspill_Rxx
+#define        HAVE_reload_float               freload_Rxx
+#define        HAVE_spill_double               fspilll_Rxx
+#define        HAVE_reload_double              freloadl_Rxx
+#define        HAVE_prologue                   prologue_xxx
+#define        HAVE_epilogue                   epilogue_xxx
+#define        HAVE_exception_prologue         eprologue_xxx
+
+#define        HAVE_move_int_const             move_RxC
+#define        HAVE_move_int                   move_RxR
+#define        HAVE_move_float                 fmove_RxR
+#define        HAVE_move_double                fmovel_RxR
+#define        HAVE_move_label_const           move_RxL
+#define        HAVE_move_ref                   move_RxR
+#define        HAVE_move_ref_const             move_RxC
+#define        HAVE_move_any                   move_RxR
+
+#define        HAVE_move_float_const_rangecheck(v)     __builtin_FP_values(v)
+#define        HAVE_move_double_const_rangecheck(v)    __builtin_FP_values(v)
+#define        HAVE_move_float_const           fmove_RxC
+#define        HAVE_move_double_const          fmovel_RxC
+
+#define        HAVE_move_int_const_rangecheck(v)       __anyvalue_rangecheck(v)
+#define        HAVE_move_ref_const_rangecheck(v)       __anyvalue_rangecheck(v)
+
+#define        HAVE_add_int                    add_RRR
+#define        HAVE_sub_int                    sub_RRR
+#define        HAVE_mul_int                    mul_RRR
+#undef HAVE_div_int
+#undef HAVE_rem_int
+#define        HAVE_and_int                    and_RRR
+#define        HAVE_or_int                     or_RRR
+#define        HAVE_xor_int                    xor_RRR
+#define        HAVE_ashr_int                   ashr_RRR
+#define        HAVE_lshr_int                   lshr_RRR
+#define        HAVE_lshl_int                   lshl_RRR
+
+#define        HAVE_add_float                  fadd_RRR
+#define        HAVE_sub_float                  fsub_RRR
+#define        HAVE_mul_float                  fmul_RRR
+
+#define        HAVE_add_double                 faddl_RRR
+#define        HAVE_sub_double                 fsubl_RRR
+#define        HAVE_mul_double                 fmull_RRR
+
+#define        HAVE_load_int                   load_RxR
+#define        HAVE_store_int                  store_xRR
+#define        HAVE_load_ref                   load_RxR
+#define        HAVE_store_ref                  store_xRR
+#define        HAVE_load_float                 fload_RxR
+#define        HAVE_store_float                fstore_RxR
+#define        HAVE_load_double                floadl_RxR
+#define        HAVE_store_double               fstorel_RxR
+
+#define        HAVE_pusharg_int                push_xRC
+#define        HAVE_pusharg_float              fpush_xRC
+#define        HAVE_pusharg_double             fpushl_xRC
+#define        HAVE_pusharg_ref                push_xRC
+#define        HAVE_popargs                    popargs_xxC
+
+#define        HAVE_cmp_int                    cmp_xRR
+
+//
+// Ref's are just int's
+//
+#define        HAVE_cmp_ref            cmp_xRR
+#define        HAVE_add_ref            add_RRR
+#define        HAVE_add_ref_const      add_RRC
+#define        HAVE_cmp_ref_const      cmp_xRC
+
+
+#ifdef I_THINK_THESE_DO_NOT_WORK_ALTHOUGH_I_DEFINED_THE_CODE_CORRECTLY
+#  define      HAVE_add_ref_const      addref_RRC
+#  define      HAVE_cmp_ref_const      cmpref_xRC
+#endif
+
+
+#define        HAVE_branch                     branch_xCC
+#undef HAVE_branch_indirect
+
+// #define     HAVE_call_ref                   call_xCC
+#undef HAVE_call_ref
+
+#define        HAVE_call                       call_xRC
+#define        HAVE_branch_indirect            branch_indirect_xRC
+#define        HAVE_return_int                 return_Rxx
+#define        HAVE_return_long                returnl_Rxx
+#define        HAVE_return_float               freturn_Rxx
+#define        HAVE_return_double              freturnl_Rxx
+#define        HAVE_return_ref                 return_Rxx
+#define        HAVE_returnarg_int              returnarg_xxR
+#define        HAVE_returnarg_long             returnargl_xxR
+#define        HAVE_returnarg_float            freturnarg_xxR
+#define        HAVE_returnarg_double           freturnargl_xxR
+#define        HAVE_returnarg_ref              returnarg_xxR
+
+#define        HAVE_set_label                  set_label_xxC
+#define        HAVE_build_key                  set_word_xxC
+#define        HAVE_build_code_ref             set_wordpc_xxC
+#undef HAVE_build_const_ref
+
+#define        HAVE_cvt_int_float              cvtif_RxR
+#define        HAVE_cvt_int_double             cvtid_RxR
+
+#undef HAVE_cvt_float_int
+#undef HAVE_cvt_float_int_ieee
+#define        HAVE_cvt_double_int             cvtdi_RxR
+#undef HAVE_cvt_double_int_ieee
+
+#undef HAVE_cvt_long_double
+#undef HAVE_cvt_long_float
+#undef HAVE_cvt_float_long
+#undef HAVE_cvt_double_long
+
+#define        HAVE_cvt_float_double           cvtfd_RxR
+#define        HAVE_cvt_double_float           cvtdf_RxR
+
+/*
+ * These are sometimes optional (if long operators are defined)
+ */
+#define        HAVE_adc_int                    adc_RRR
+#define        HAVE_sbc_int                    sbc_RRR
+
+/*
+ * These are optional but help to optimise the code generated.
+ */
+#define        HAVE_add_int_const      add_RRC
+#define        HAVE_cmp_int_const      cmp_xRC
+#define        HAVE_sub_int_const      sub_RRC
+#define        HAVE_and_int_const      and_RRC
+
+
+#undef HAVE_pusharg_int_const
+#undef HAVE_load_offset_int
+#undef HAVE_store_offset_int
+#undef HAVE_load_offset_ref
+#undef HAVE_store_offset_ref
+#undef HAVE_lshl_int_const
+
+//
+// We handle a signed value in the add/sub form
+// by flipping the operator
+//
+#define        HAVE_add_int_const_rangecheck(v)        __I8const_rangecheck(v)
+#define        HAVE_sub_int_const_rangecheck(v)        __I8const_rangecheck(v)
+#define        HAVE_add_ref_const_rangecheck(v)        
HAVE_add_int_const_rangecheck(v)
+
+#define        HAVE_cmp_int_const_rangecheck(v)        __U8const_rangecheck(v)
+#define        HAVE_cmp_ref_const_rangecheck(v)        __U8const_rangecheck(v)
+#define        HAVE_pusharg_int_const_rangecheck(v)    __U8const_rangecheck(v)
+#define        HAVE_and_int_const_rangecheck(v)        __U8const_rangecheck(v)
+
+// Not used yet
+// #define     HAVE_lshl_int_const_rangecheck(v)       __U8const_rangecheck(v)
+
+#define        HAVE_load_offset_int_rangecheck(v)      __I12const_rangecheck(v)
+#define        HAVE_store_offset_int_rangecheck(v)     __I12const_rangecheck(v)
+#define        HAVE_load_offset_ref_rangecheck(v)      __I12const_rangecheck(v)
+#define        HAVE_store_offset_ref_rangecheck(v)     __I12const_rangecheck(v)
+
+
+#define        HAVE_load_byte                  loadb_RxR
+#define        HAVE_load_char                  loadc_RxR
+#define        HAVE_load_short                 loads_RxR
+#define        HAVE_store_byte                 storeb_xRR
+#define        HAVE_store_char                 stores_xRR
+#define        HAVE_store_short                stores_xRR
+
+/*
+ * These are optional if the architecture supports them.
+ */
+#undef HAVE_mul_int_const
+#undef HAVE_swap_int
+#undef HAVE_neg_int
+
+#undef HAVE_ashr_int_const
+#undef HAVE_lshr_int_const
+
+#undef HAVE_cmpg_float
+#undef HAVE_cmpg_double
+#undef HAVE_cmpl_float
+#undef HAVE_cmpl_double
+
+#undef HAVE_move_long_const
+#undef HAVE_move_long
+
+#undef HAVE_add_long
+#undef HAVE_sub_long
+#undef HAVE_mul_long
+#undef HAVE_div_long
+#undef HAVE_rem_long
+#undef HAVE_neg_long
+#undef HAVE_and_long
+#undef HAVE_or_long
+#undef HAVE_xor_long
+#undef HAVE_ashr_long
+#undef HAVE_lshl_long
+#undef HAVE_lshr_long
+
+#undef HAVE_load_long
+#undef HAVE_store_long
+
+#undef HAVE_pusharg_long
+
+#undef HAVE_cmp_long
+
+#undef HAVE_neg_float
+#undef HAVE_neg_double
+#undef HAVE_rem_float
+#undef HAVE_rem_double
+
+#undef HAVE_cvt_int_long
+#undef HAVE_cvt_int_byte
+#undef HAVE_cvt_int_char
+#undef HAVE_cvt_int_short
+#undef HAVE_cvt_long_int
+
+#undef HAVE_call_indirect_const
+
+#endif

_______________________________________________
kaffe mailing list
kaffe@kaffe.org
http://kaffe.org/cgi-bin/mailman/listinfo/kaffe

Reply via email to