1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-05-03 13:20:26 +02:00

use CVTT instruction, fix lightning/Makefile.am

2006-12-02  Paolo Bonzini  <bonzini@gnu.org>

	* lightning/i386/asm-i386.h: Add CVTTS?2SIL.
	* lightning/i386/asm-64.h: Add CVTTS?2SIQ.
	* lightning/i386/fp-64.h: Use it.

	* lightning/Makefile.am: Place files in nodist_lightning_HEADERS.

git-archimport-id: bonzini@gnu.org--2004b/lightning--stable--1.2--patch-52
This commit is contained in:
Paolo Bonzini 2006-12-02 18:23:40 +00:00
parent 36a3ae9058
commit 19f163bcaf
5 changed files with 46 additions and 19 deletions

View file

@ -1,3 +1,11 @@
2006-12-02 Paolo Bonzini <bonzini@gnu.org>
* lightning/i386/asm-i386.h: Add CVTTS?2SIL.
* lightning/i386/asm-64.h: Add CVTTS?2SIQ.
* lightning/i386/fp-64.h: Use it.
* lightning/Makefile.am: Place files in nodist_lightning_HEADERS.
2006-11-23 Paolo Bonzini <bonzini@gnu.org>
* lightning/core-common.h: Add casts in "*i_p" variants.

View file

@ -10,14 +10,14 @@ EXTRA_DIST = i386/Makefile.frag \
@lightning_frag@
LIGHTNING_FILES = funcs-common.h core-common.h fp-common.h asm-common.h \
asm.h core.h funcs.h fp.h $(LIGHTNING_TARGET_FILES)
LIGHTNING_COMMON_FILES = funcs-common.h core-common.h fp-common.h asm-common.h
if LIGHTNING_MAIN
lightningdir = $(includedir)/lightning
dist_pkgdata_DATA = Makefile.am
dist_lightning_HEADERS = $(LIGHTNING_FILES)
dist_lightning_HEADERS = $(LIGHTNING_COMMON_FILES)
nodist_lightning_HEADERS = asm.h core.h funcs.h fp.h $(LIGHTNING_TARGET_FILES)
else
all-am:

View file

@ -349,6 +349,11 @@
#define _SSEQrm(PX,OP,RS,RSA,MD,MB,MI,MS) (_jit_B(PX), __SSEQrm(OP, RS, RSA, MD, MB, MI, MS))
#define _SSEQ1rm(PX,OP,RS,RSA,MD,MB,MI,MS) (_jit_B(PX), __SSEQ1rm(OP, RS, RSA, MD, MB, MI, MS))
#define CVTTSS2SIQrr(RS, RD) _SSEQrr(0xf3, X86_SSE_CVTTSI, RS,_rX, RD,_r8)
#define CVTTSS2SIQmr(MD, MB, MI, MS, RD) _SSEQmr(0xf3, X86_SSE_CVTTSI, MD, MB, MI, MS, RD,_r8)
#define CVTTSD2SIQrr(RS, RD) _SSEQrr(0xf2, X86_SSE_CVTTSI, RS,_rX, RD,_r8)
#define CVTTSD2SIQmr(MD, MB, MI, MS, RD) _SSEQmr(0xf2, X86_SSE_CVTTSI, MD, MB, MI, MS, RD,_r8)
#define CVTSS2SIQrr(RS, RD) _SSEQrr(0xf3, X86_SSE_CVTSI, RS,_rX, RD,_r8)
#define CVTSS2SIQmr(MD, MB, MI, MS, RD) _SSEQmr(0xf3, X86_SSE_CVTSI, MD, MB, MI, MS, RD,_r8)
#define CVTSD2SIQrr(RS, RD) _SSEQrr(0xf2, X86_SSE_CVTSI, RS,_rX, RD,_r8)

View file

@ -1311,6 +1311,7 @@ enum {
X86_SSE_MOVHP = 0x16,
X86_SSE_MOVA = 0x28,
X86_SSE_CVTIS = 0x2a,
X86_SSE_CVTTSI = 0x2c,
X86_SSE_CVTSI = 0x2d,
X86_SSE_UCOMI = 0x2e,
X86_SSE_COMI = 0x2f,
@ -1532,6 +1533,11 @@ enum {
#define CVTSD2SSrr(RS, RD) _SSELrr(0xf2, X86_SSE_CVTSD, RS,_rX, RD,_rX)
#define CVTSD2SSmr(MD, MB, MI, MS, RD) _SSELmr(0xf2, X86_SSE_CVTSD, MD, MB, MI, MS, RD,_rX)
#define CVTTSS2SILrr(RS, RD) _SSELrr(0xf3, X86_SSE_CVTTSI, RS,_rX, RD,_r4)
#define CVTTSS2SILmr(MD, MB, MI, MS, RD) _SSELmr(0xf3, X86_SSE_CVTTSI, MD, MB, MI, MS, RD,_r4)
#define CVTTSD2SILrr(RS, RD) _SSELrr(0xf2, X86_SSE_CVTTSI, RS,_rX, RD,_r4)
#define CVTTSD2SILmr(MD, MB, MI, MS, RD) _SSELmr(0xf2, X86_SSE_CVTTSI, MD, MB, MI, MS, RD,_r4)
#define CVTSS2SILrr(RS, RD) _SSELrr(0xf3, X86_SSE_CVTSI, RS,_rX, RD,_r4)
#define CVTSS2SILmr(MD, MB, MI, MS, RD) _SSELmr(0xf3, X86_SSE_CVTSI, MD, MB, MI, MS, RD,_r4)
#define CVTSD2SILrr(RS, RD) _SSELrr(0xf2, X86_SSE_CVTSI, RS,_rX, RD,_r4)

View file

@ -167,6 +167,10 @@ union jit_double_imm {
#define jit_roundr_f_i(rd, rs) CVTSS2SILrr((rs), (rd))
#define jit_roundr_d_l(rd, rs) CVTSD2SIQrr((rs), (rd))
#define jit_roundr_f_l(rd, rs) CVTSS2SIQrr((rs), (rd))
#define jit_truncr_d_i(rd, rs) CVTTSD2SILrr((rs), (rd))
#define jit_truncr_f_i(rd, rs) CVTTSS2SILrr((rs), (rd))
#define jit_truncr_d_l(rd, rs) CVTTSD2SIQrr((rs), (rd))
#define jit_truncr_f_l(rd, rs) CVTTSS2SIQrr((rs), (rd))
#define jit_ceilr_f_i(rd, rs) do { \
@ -183,26 +187,16 @@ union jit_double_imm {
ADCLir (0, (rd)); \
} while (0)
#define jit_truncr_f_i(rd, rs) do { \
jit_roundr_f_i ((rd), (rs)); \
jit_extr_i_f (JIT_FPTMP, (rd)); \
TESTLrr ((rd), (rd)); \
JSm (_jit.x.pc + 9); \
UCOMISSrr (JIT_FPTMP, (rs)); \
SBBLir (0, (rd)); \
JMPSm (_jit.x.pc + 7); \
#define jit_ceilr_f_l(rd, rs) do { \
jit_roundr_f_l ((rd), (rs)); \
jit_extr_l_f (JIT_FPTMP, (rd)); \
UCOMISSrr ((rs), JIT_FPTMP); \
ADCLir (0, (rd)); \
} while (0)
#define jit_truncr_d_i(rd, rs) do { \
jit_roundr_d_i ((rd), (rs)); \
jit_extr_i_d (JIT_FPTMP, (rd)); \
TESTLrr ((rd), (rd)); \
JSm (_jit.x.pc + 9); \
UCOMISDrr (JIT_FPTMP, (rs)); \
SBBLir (0, (rd)); \
JMPSm (_jit.x.pc + 7); \
#define jit_ceilr_d_l(rd, rs) do { \
jit_roundr_d_l ((rd), (rs)); \
jit_extr_l_d (JIT_FPTMP, (rd)); \
UCOMISDrr ((rs), JIT_FPTMP); \
ADCLir (0, (rd)); \
} while (0)
@ -221,6 +215,20 @@ union jit_double_imm {
SBBLir (0, (rd)); \
} while (0)
#define jit_floorr_f_l(rd, rs) do { \
jit_roundr_f_l ((rd), (rs)); \
jit_extr_l_f (JIT_FPTMP, (rd)); \
UCOMISSrr (JIT_FPTMP, (rs)); \
SBBLir (0, (rd)); \
} while (0)
#define jit_floorr_d_l(rd, rs) do { \
jit_roundr_d_l ((rd), (rs)); \
jit_extr_l_d (JIT_FPTMP, (rd)); \
UCOMISDrr (JIT_FPTMP, (rs)); \
SBBLir (0, (rd)); \
} while (0)
#define jit_bltr_f(d, s1, s2) (UCOMISSrr ((s1), (s2)), JAm ((d)))
#define jit_bler_f(d, s1, s2) (UCOMISSrr ((s1), (s2)), JAEm ((d)))
#define jit_beqr_f(d, s1, s2) (UCOMISSrr ((s1), (s2)), _OO (0x7a06), JEm ((d)))