diff --git a/src/mzscheme/src/jit.c b/src/mzscheme/src/jit.c index 0db0582d4a..05ed14885d 100644 --- a/src/mzscheme/src/jit.c +++ b/src/mzscheme/src/jit.c @@ -59,7 +59,7 @@ END_XFORM_ARITH; #endif -#ifdef MZ_USE_JIT_I386 +#if defined(MZ_USE_JIT_I386) || defined(MZ_USE_JIT_PPC) # define JIT_USE_FP_OPS #endif @@ -2478,7 +2478,7 @@ static int can_fast_double(int arith, int cmp, int two_args) #define jit_bltr_d_fppop(d, s1, s2) jit_bltr_d(d, s1, s2) #define jit_bantiltr_d_fppop(d, s1, s2) jit_bantiltr_d(d, s1, s2) #define jit_beqr_d_fppop(d, s1, s2) jit_beqr_d(d, s1, s2) -#define jit_bner_d_fppop(d, s1, s2) jit_bner_d(d, s1, s2) +#define jit_bantieqr_d_fppop(d, s1, s2) jit_bantieqr_d(d, s1, s2) #endif static int generate_double_arith(mz_jit_state *jitter, int arith, int cmp, int reversed, int two_args, int second_const, @@ -2507,7 +2507,7 @@ static int generate_double_arith(mz_jit_state *jitter, int arith, int cmp, int r if (!two_args && !second_const && ((arith == 2) || ((arith == -2) && reversed))) { /* Special case: multiplication by exact 0 */ - jit_movi_p(JIT_R0, scheme_make_integer(0)); + (void)jit_movi_p(JIT_R0, scheme_make_integer(0)); } else { __END_SHORT_JUMPS__(1); @@ -2977,11 +2977,11 @@ static int generate_arith(mz_jit_state *jitter, Scheme_Object *rator, Scheme_Obj if (v == 1) { /* R0 already is the answer */ } else if (v == 0) { - jit_movi_p(JIT_R0, scheme_make_integer(0)); + (void)jit_movi_p(JIT_R0, scheme_make_integer(0)); } else { if (has_fixnum_fast) { /* No general fast path for fixnum multiplication, yet */ - jit_movi_p(JIT_R1, scheme_make_integer(v)); + (void)jit_movi_p(JIT_R1, scheme_make_integer(v)); (void)jit_jmpi(refslow); } } @@ -2991,7 +2991,7 @@ static int generate_arith(mz_jit_state *jitter, Scheme_Object *rator, Scheme_Obj } else { if (has_fixnum_fast) { /* No general fast path for fixnum division, yet */ - jit_movi_p(JIT_R1, scheme_make_integer(v)); + (void)jit_movi_p(JIT_R1, scheme_make_integer(v)); (void)jit_jmpi(refslow); } } @@ -3375,7 +3375,7 @@ static int generate_inlined_unary(mz_jit_state *jitter, Scheme_App2_Rec *app, in ref3 = jit_bmci_ul(jit_forward(), JIT_R2, 0x1); __END_SHORT_JUMPS__(branch_short); /* Ok bignum. Instead of jumping, install the fixnum 1: */ - jit_movi_p(JIT_R0, scheme_make_integer(1)); + (void)jit_movi_p(JIT_R0, scheme_make_integer(1)); __START_SHORT_JUMPS__(1); mz_patch_branch(ref); diff --git a/src/mzscheme/src/lightning/ppc/fp.h b/src/mzscheme/src/lightning/ppc/fp.h index 32541deb26..79e61b20c6 100644 --- a/src/mzscheme/src/lightning/ppc/fp.h +++ b/src/mzscheme/src/lightning/ppc/fp.h @@ -46,8 +46,10 @@ #define jit_addr_d(rd,s1,s2) FADDDrrr((rd),(s1),(s2)) #define jit_subr_d(rd,s1,s2) FSUBDrrr((rd),(s1),(s2)) +#define jit_subrr_d(rd,s1,s2) FSUBDrrr((rd),(s2),(s1)) #define jit_mulr_d(rd,s1,s2) FMULDrrr((rd),(s1),(s2)) #define jit_divr_d(rd,s1,s2) FDIVDrrr((rd),(s1),(s2)) +#define jit_divrr_d(rd,s1,s2) FDIVDrrr((rd),(s2),(s1)) #define jit_addr_f(rd,s1,s2) FADDSrrr((rd),(s1),(s2)) #define jit_subr_f(rd,s1,s2) FSUBSrrr((rd),(s1),(s2)) @@ -143,31 +145,36 @@ #define jit_fpbr(d, s1, s2, rcbit) ( \ FCMPOrrr(_cr0,(s1),(s2)), \ - BTii ((rcbit), (d))) + BTii ((rcbit), (d)), _jit.x.pc) #define jit_fpbr_neg(d, s1, s2,rcbit) ( \ FCMPOrrr(_cr0,(s1),(s2)), \ - BFii ((rcbit), (d))) + BFii ((rcbit), (d)), _jit.x.pc) #define jit_fpbur(d, s1, s2, rcbit) ( \ FCMPUrrr(_cr0,(s1),(s2)), \ - BTii ((rcbit), (d))) + BTii ((rcbit), (d)), _jit.x.pc) #define jit_fpbur_neg(d, s1, s2,rcbit) ( \ FCMPUrrr(_cr0,(s1),(s2)), \ - BFii ((rcbit), (d))) + BFii ((rcbit), (d)), _jit.x.pc) #define jit_fpbur_or(d, s1, s2, bit1, bit2) ( \ FCMPUrrr(_cr0,(s1),(s2)), \ CRORiii((bit1), (bit1), (bit2)), \ - BTii ((bit1), (d))) + BTii ((bit1), (d)), _jit.x.pc) -#define jit_bgtr_d(d, s1, s2) jit_fpbr ((d),(s1),(s2),_gt) -#define jit_bger_d(d, s1, s2) jit_fpbr_neg((d),(s1),(s2),_lt) -#define jit_bltr_d(d, s1, s2) jit_fpbr ((d),(s1),(s2),_lt) -#define jit_bler_d(d, s1, s2) jit_fpbr_neg((d),(s1),(s2),_gt) -#define jit_beqr_d(d, s1, s2) jit_fpbr ((d),(s1),(s2),_eq) -#define jit_bner_d(d, s1, s2) jit_fpbr_neg((d),(s1),(s2),_eq) +#define jit_fpbur_or_neg(d, s1, s2, bit1, bit2) ( \ + FCMPUrrr(_cr0,(s1),(s2)), \ + CRORiii((bit1), (bit1), (bit2)), \ + BFii ((bit1), (d)), _jit.x.pc) + +#define jit_bgtr_d(d, s1, s2) jit_fpbur ((d),(s1),(s2),_gt) +#define jit_bger_d(d, s1, s2) jit_fpbur_or((d),(s1),(s2),_gt, _eq) +#define jit_bltr_d(d, s1, s2) jit_fpbur ((d),(s1),(s2),_lt) +#define jit_bler_d(d, s1, s2) jit_fpbur_or((d),(s1),(s2),_lt, _eq) +#define jit_beqr_d(d, s1, s2) jit_fpbur ((d),(s1),(s2),_eq) +#define jit_bner_d(d, s1, s2) jit_fpbur_neg((d),(s1),(s2),_eq) #define jit_bunordr_d(d, s1, s2) jit_fpbur ((d),(s1),(s2),_un) #define jit_bordr_d(d, s1, s2) jit_fpbur_neg((d),(s1),(s2),_un) #define jit_bunler_d(d, s1, s2) jit_fpbur_neg ((d), (s1), (s2), _gt) @@ -177,6 +184,12 @@ #define jit_bltgtr_d(d, s1, s2) jit_fpbur_or ((d), (s1), (s2), _gt, _lt) #define jit_buneqr_d(d, s1, s2) jit_fpbur_or ((d), (s1), (s2), _un, _eq) +#define jit_bantiltr_d(d, s1, s2) jit_fpbur_neg ((d),(s1),(s2),_lt) +#define jit_bantiler_d(d, s1, s2) jit_fpbur_or_neg ((d),(s1),(s2),_lt, _eq) +#define jit_bantieqr_d(d, s1, s2) jit_fpbur_neg ((d),(s1),(s2),_eq) +#define jit_bantiger_d(d, s1, s2) jit_fpbur_or_neg ((d),(s1),(s2),_gt, _eq) +#define jit_bantigtr_d(d, s1, s2) jit_fpbur_neg ((d),(s1),(s2),_gt) + #define jit_getarg_f(rd, ofs) jit_movr_f((rd),(ofs)) #define jit_getarg_d(rd, ofs) jit_movr_d((rd),(ofs)) #define jit_pusharg_d(rs) (_jitl.nextarg_putd--,jit_movr_d((_jitl.nextarg_putf+_jitl.nextarg_putd+1), (rs)))