From a76f19c5efb400feef12efa0059abf136792556e Mon Sep 17 00:00:00 2001 From: Paolo Bonzini Date: Tue, 17 Feb 2009 09:57:23 +0100 Subject: [PATCH] fix problems with i386 32-bit floating point branches 2009-02-17 Paolo Bonzini * lightning/fp-common.h: Define double branches if missing. * lightning/i386/asm.h: Define JC and JNC mnemonics. * lightning/i386/fp-32.h: Fix jit_fp_btest. All reported by Mike Spivey. --- ChangeLog | 7 +++++++ THANKS | 1 + lightning/fp-common.h | 17 +++++++++++++++++ lightning/i386/asm.h | 4 ++++ lightning/i386/fp-32.h | 2 +- 5 files changed, 30 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index bda065e13..a8422183d 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2009-02-17 Paolo Bonzini + + * lightning/fp-common.h: Define double branches if missing. + * lightning/i386/asm.h: Define JC and JNC mnemonics. + * lightning/i386/fp-32.h: Fix jit_fp_btest. All reported + by Mike Spivey. + 2008-10-09 Paolo Bonzini * lightning/ppc/funcs.h (jit_flush_code): Subtract 1 from end. diff --git a/THANKS b/THANKS index 0276167b7..fe8ad1efe 100644 --- a/THANKS +++ b/THANKS @@ -5,6 +5,7 @@ Eli Barzilay Ludovic Courtes Matthew Flatt Laurent Michel +Mike Spivey Basile Starynkevitch Sam Steingold Jens Troeger diff --git a/lightning/fp-common.h b/lightning/fp-common.h index d65d160f5..0847ceb19 100644 --- a/lightning/fp-common.h +++ b/lightning/fp-common.h @@ -85,6 +85,23 @@ #define jit_retval_f(rs) jit_retval_d(rs) #endif +#ifndef jit_beqr_f +#define jit_beqr_f(lab, a, b) jit_beqr_d(lab, a, b) +#define jit_bner_f(lab, a, b) jit_bner_d(lab, a, b) +#define jit_bgtr_f(lab, a, b) jit_bgtr_d(lab, a, b) +#define jit_bger_f(lab, a, b) jit_bger_d(lab, a, b) +#define jit_bltr_f(lab, a, b) jit_bltr_d(lab, a, b) +#define jit_bler_f(lab, a, b) jit_bler_d(lab, a, b) +#define jit_buneqr_f(lab, a, b) jit_buneqr_d(lab, a, b) +#define jit_bltgtr_f(lab, a, b) jit_bltgtr_d(lab, a, b) +#define jit_bungtr_f(lab, a, b) jit_bungtr_d(lab, a, b) +#define jit_bunger_f(lab, a, b) jit_bunger_d(lab, a, b) +#define jit_bunltr_f(lab, a, b) jit_bunltr_d(lab, a, b) +#define jit_bunler_f(lab, a, b) jit_bunler_d(lab, a, b) +#define jit_bordr_f(lab, a, b) jit_bordr_d(lab, a, b) +#define jit_bunordr_f(lab, a, b) jit_bunordr_d(lab, a, b) +#endif + #ifndef jit_retval_f #define jit_retval_f(op1) jit_movr_f((op1), JIT_FPRET) #endif diff --git a/lightning/i386/asm.h b/lightning/i386/asm.h index ad404fcf4..2dec4b99b 100644 --- a/lightning/i386/asm.h +++ b/lightning/i386/asm.h @@ -915,8 +915,10 @@ enum { #define JOSm(D) JCCSim(0x0, D) #define JNOSm(D) JCCSim(0x1, D) #define JBSm(D) JCCSim(0x2, D) +#define JCSm(D) JCCSim(0x2, D) #define JNAESm(D) JCCSim(0x2, D) #define JNBSm(D) JCCSim(0x3, D) +#define JNCSm(D) JCCSim(0x3, D) #define JAESm(D) JCCSim(0x3, D) #define JESm(D) JCCSim(0x4, D) #define JZSm(D) JCCSim(0x4, D) @@ -946,8 +948,10 @@ enum { #define JOm(D) JCCim(0x0, D) #define JNOm(D) JCCim(0x1, D) #define JBm(D) JCCim(0x2, D) +#define JCm(D) JCCim(0x2, D) #define JNAEm(D) JCCim(0x2, D) #define JNBm(D) JCCim(0x3, D) +#define JNCm(D) JCCim(0x3, D) #define JAEm(D) JCCim(0x3, D) #define JEm(D) JCCim(0x4, D) #define JZm(D) JCCim(0x4, D) diff --git a/lightning/i386/fp-32.h b/lightning/i386/fp-32.h index ff596310c..71e56774e 100644 --- a/lightning/i386/fp-32.h +++ b/lightning/i386/fp-32.h @@ -261,7 +261,7 @@ union jit_double_imm { ((_and) ? ANDLir ((_and), _EAX) : 0), \ ((cmp) ? CMPLir ((cmp), _AL) : 0), \ POPLr(_EAX), \ - res ((d), 0, 0, 0), \ + res ((d)), \ _jit.x.ppc) #define jit_nothing_needed(x)