mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-05-28 16:00:22 +02:00
fix PPC modi
2006-07-06 Paolo Bonzini <bonzini@gnu.org> Ludovic Courtes <ludovic.courtes@laas.fr> * lightning/ppc/core.h (_jit_mod): Replace with... (_jit_mod_big, _jit_mod_small): ... these. (jit_modi_i, jit_modi_ui): Rewrite. * tests/modi.c, tests/modi.ok: New tests. git-archimport-id: bonzini@gnu.org--2004b/lightning--stable--1.2--patch-22
This commit is contained in:
parent
0c068368cc
commit
50b6e40e0d
13 changed files with 110 additions and 36 deletions
|
@ -1,3 +1,11 @@
|
||||||
|
2006-07-06 Paolo Bonzini <bonzini@gnu.org>
|
||||||
|
Ludovic Courtes <ludovic.courtes@laas.fr>
|
||||||
|
|
||||||
|
* lightning/ppc/core.h (_jit_mod): Replace with...
|
||||||
|
(_jit_mod_big, _jit_mod_small): ... these.
|
||||||
|
(jit_modi_i, jit_modi_ui): Rewrite.
|
||||||
|
* tests/modi.c, tests/modi.ok: New tests.
|
||||||
|
|
||||||
2006-05-18 Matthew Flatt <mflatt@cs.utah.edu>
|
2006-05-18 Matthew Flatt <mflatt@cs.utah.edu>
|
||||||
|
|
||||||
* lightning/i386/asm.h: Fix test for extending the mprotect area
|
* lightning/i386/asm.h: Fix test for extending the mprotect area
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
# Makefile.in generated by automake 1.9.5 from Makefile.am.
|
# Makefile.in generated by automake 1.9.6 from Makefile.am.
|
||||||
# @configure_input@
|
# @configure_input@
|
||||||
|
|
||||||
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
|
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
|
||||||
|
|
4
aclocal.m4
vendored
4
aclocal.m4
vendored
|
@ -1,4 +1,4 @@
|
||||||
# generated automatically by aclocal 1.9.5 -*- Autoconf -*-
|
# generated automatically by aclocal 1.9.6 -*- Autoconf -*-
|
||||||
|
|
||||||
# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
|
# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
|
||||||
# 2005 Free Software Foundation, Inc.
|
# 2005 Free Software Foundation, Inc.
|
||||||
|
@ -28,7 +28,7 @@ AC_DEFUN([AM_AUTOMAKE_VERSION], [am__api_version="1.9"])
|
||||||
# Call AM_AUTOMAKE_VERSION so it can be traced.
|
# Call AM_AUTOMAKE_VERSION so it can be traced.
|
||||||
# This function is AC_REQUIREd by AC_INIT_AUTOMAKE.
|
# This function is AC_REQUIREd by AC_INIT_AUTOMAKE.
|
||||||
AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
|
AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
|
||||||
[AM_AUTOMAKE_VERSION([1.9.5])])
|
[AM_AUTOMAKE_VERSION([1.9.6])])
|
||||||
|
|
||||||
# AM_AUX_DIR_EXPAND -*- Autoconf -*-
|
# AM_AUX_DIR_EXPAND -*- Autoconf -*-
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
# Makefile.in generated by automake 1.9.5 from Makefile.am.
|
# Makefile.in generated by automake 1.9.6 from Makefile.am.
|
||||||
# @configure_input@
|
# @configure_input@
|
||||||
|
|
||||||
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
|
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
|
||||||
|
@ -207,9 +207,11 @@ $(ACLOCAL_M4): $(am__aclocal_m4_deps)
|
||||||
restore=: && backupdir="$(am__leading_dot)am$$$$" && \
|
restore=: && backupdir="$(am__leading_dot)am$$$$" && \
|
||||||
am__cwd=`pwd` && cd $(srcdir) && \
|
am__cwd=`pwd` && cd $(srcdir) && \
|
||||||
rm -rf $$backupdir && mkdir $$backupdir && \
|
rm -rf $$backupdir && mkdir $$backupdir && \
|
||||||
|
if ($(MAKEINFO) --version) >/dev/null 2>&1; then \
|
||||||
for f in $@ $@-[0-9] $@-[0-9][0-9] $(@:.info=).i[0-9] $(@:.info=).i[0-9][0-9]; do \
|
for f in $@ $@-[0-9] $@-[0-9][0-9] $(@:.info=).i[0-9] $(@:.info=).i[0-9][0-9]; do \
|
||||||
if test -f $$f; then mv $$f $$backupdir; restore=mv; else :; fi; \
|
if test -f $$f; then mv $$f $$backupdir; restore=mv; else :; fi; \
|
||||||
done; \
|
done; \
|
||||||
|
else :; fi && \
|
||||||
cd "$$am__cwd"; \
|
cd "$$am__cwd"; \
|
||||||
if $(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir) \
|
if $(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir) \
|
||||||
-o $@ $<; \
|
-o $@ $<; \
|
||||||
|
@ -270,6 +272,7 @@ mostlyclean-vti:
|
||||||
maintainer-clean-vti:
|
maintainer-clean-vti:
|
||||||
-rm -f $(srcdir)/stamp-vti $(srcdir)/version.texi
|
-rm -f $(srcdir)/stamp-vti $(srcdir)/version.texi
|
||||||
.dvi.ps:
|
.dvi.ps:
|
||||||
|
TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \
|
||||||
$(DVIPS) -o $@ $<
|
$(DVIPS) -o $@ $<
|
||||||
|
|
||||||
uninstall-info-am:
|
uninstall-info-am:
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.28.
|
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.28.
|
||||||
.TH LIGHTNINGIZE "1" "November 2004" "lightningize 1.2a" "User Commands"
|
.TH LIGHTNINGIZE "1" "July 2006" "lightningize 1.2a" "User Commands"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
lightningize \- manual page for lightningize 1.2a
|
lightningize \- manual page for lightningize 1.2a
|
||||||
.SH SYNOPSIS
|
.SH SYNOPSIS
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
@set UPDATED 6 November 2004
|
@set UPDATED 21 June 2005
|
||||||
@set UPDATED-MONTH November 2004
|
@set UPDATED-MONTH June 2005
|
||||||
@set EDITION 1.2a
|
@set EDITION 1.2a
|
||||||
@set VERSION 1.2a
|
@set VERSION 1.2a
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
# Makefile.in generated by automake 1.9.5 from Makefile.am.
|
# Makefile.in generated by automake 1.9.6 from Makefile.am.
|
||||||
# @configure_input@
|
# @configure_input@
|
||||||
|
|
||||||
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
|
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
|
||||||
|
|
|
@ -81,19 +81,24 @@ struct jit_local_state {
|
||||||
#define jit_ubooli2(d, rs, is, jmp) (jit_chk_imu (is, CMPLWIri(rs, is), CMPLWrr(rs, JIT_AUX)), MFCRr((d)), EXTRWIrrii((d), (d), 1, (jmp)), XORIrri((d), (d), 1))
|
#define jit_ubooli2(d, rs, is, jmp) (jit_chk_imu (is, CMPLWIri(rs, is), CMPLWrr(rs, JIT_AUX)), MFCRr((d)), EXTRWIrrii((d), (d), 1, (jmp)), XORIrri((d), (d), 1))
|
||||||
#define jit_uboolr2(d, s1, s2, jmp) ( CMPLWrr (s1, s2), MFCRr((d)), EXTRWIrrii((d), (d), 1, (jmp)), XORIrri((d), (d), 1))
|
#define jit_uboolr2(d, s1, s2, jmp) ( CMPLWrr (s1, s2), MFCRr((d)), EXTRWIrrii((d), (d), 1, (jmp)), XORIrri((d), (d), 1))
|
||||||
|
|
||||||
/* modulus with immediate
|
/* modulus with big immediate with small immediate
|
||||||
* movei r26, imm
|
* movei r24, imm movei r24, imm
|
||||||
* mtlr r31
|
* mtlr r31
|
||||||
* divw r31, rs, r26 (or divwu)
|
* divw r31, rs, r24 (or divwu) divw r24, rs, r24
|
||||||
* mullw r31, r31, r26
|
* mullw r31, r31, r24 mulli r24, r24, imm
|
||||||
* sub rs, rs, r26
|
* sub d, rs, r31 sub d, rs, r24
|
||||||
* mflr r31
|
* mflr r31
|
||||||
*/
|
*
|
||||||
|
*
|
||||||
|
* jit_mod_big expects immediate in JIT_AUX. */
|
||||||
|
|
||||||
#define _jit_mod(div, rs, imm) (MOVEIri(JIT_AUX, (imm)), MTLRr(31), (div), \
|
#define _jit_mod_big(div, d, rs) (MTLRr(31), div(31, (rs), JIT_AUX), \
|
||||||
MULLWrrr(31, 31, JIT_AUX), SUBrrr((rs), (rs), JIT_AUX), \
|
MULLWrrr(31, 31, JIT_AUX), SUBrrr((d), (rs), 31), \
|
||||||
MFLRr(31))
|
MFLRr(31))
|
||||||
|
|
||||||
|
#define _jit_mod_small(div, d, rs, imm) (MOVEIri(JIT_AUX, (imm)), div(JIT_AUX, (rs), JIT_AUX), \
|
||||||
|
MULLIrri(JIT_AUX, JIT_AUX, (imm)), SUBrrr((d), (rs), JIT_AUX))
|
||||||
|
|
||||||
/* Patch a movei instruction made of a LIS at lis_pc and an ORI at ori_pc. */
|
/* Patch a movei instruction made of a LIS at lis_pc and an ORI at ori_pc. */
|
||||||
#define jit_patch_movei(lis_pc, ori_pc, dest) \
|
#define jit_patch_movei(lis_pc, ori_pc, dest) \
|
||||||
(*(lis_pc) &= ~_MASK(16), *(lis_pc) |= _HI(dest), \
|
(*(lis_pc) &= ~_MASK(16), *(lis_pc) |= _HI(dest), \
|
||||||
|
@ -220,8 +225,8 @@ struct jit_local_state {
|
||||||
#define jit_lti_ui(d, rs, is) jit_ubooli ((d), (rs), (is), _lt )
|
#define jit_lti_ui(d, rs, is) jit_ubooli ((d), (rs), (is), _lt )
|
||||||
#define jit_ltr_i(d, s1, s2) jit_sboolr ((d), (s1), (s2), _lt )
|
#define jit_ltr_i(d, s1, s2) jit_sboolr ((d), (s1), (s2), _lt )
|
||||||
#define jit_ltr_ui(d, s1, s2) jit_uboolr ((d), (s1), (s2), _lt )
|
#define jit_ltr_ui(d, s1, s2) jit_uboolr ((d), (s1), (s2), _lt )
|
||||||
#define jit_modi_i(d, rs, is) _jit_mod(jit_divi_i (31, (rs), JIT_AUX), (rs), (is))
|
#define jit_modi_i(d, rs, is) jit_chk_ims ((is), _jit_mod_small(jit_divr_i , (d), (rs), (is)), _jit_mod_big(jit_divr_i , (d), (rs)))
|
||||||
#define jit_modi_ui(d, rs, is) _jit_mod(jit_divi_ui(31, (rs), JIT_AUX), (rs), (is))
|
#define jit_modi_ui(d, rs, is) jit_chk_imu15((is), _jit_mod_small(jit_divr_ui, (d), (rs), (is)), _jit_mod_big(jit_divr_ui, (d), (rs)))
|
||||||
#define jit_modr_i(d, s1, s2) (DIVWrrr(JIT_AUX, (s1), (s2)), MULLWrrr(JIT_AUX, JIT_AUX, (s2)), SUBrrr((d), (s1), JIT_AUX))
|
#define jit_modr_i(d, s1, s2) (DIVWrrr(JIT_AUX, (s1), (s2)), MULLWrrr(JIT_AUX, JIT_AUX, (s2)), SUBrrr((d), (s1), JIT_AUX))
|
||||||
#define jit_modr_ui(d, s1, s2) (DIVWUrrr(JIT_AUX, (s1), (s2)), MULLWrrr(JIT_AUX, JIT_AUX, (s2)), SUBrrr((d), (s1), JIT_AUX))
|
#define jit_modr_ui(d, s1, s2) (DIVWUrrr(JIT_AUX, (s1), (s2)), MULLWrrr(JIT_AUX, JIT_AUX, (s2)), SUBrrr((d), (s1), JIT_AUX))
|
||||||
#define jit_movi_i(d, is) MOVEIri((d), (is))
|
#define jit_movi_i(d, is) MOVEIri((d), (is))
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
# Makefile.in generated by automake 1.9.5 from Makefile.am.
|
# Makefile.in generated by automake 1.9.6 from Makefile.am.
|
||||||
# @configure_input@
|
# @configure_input@
|
||||||
|
|
||||||
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
|
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
|
||||||
|
@ -15,8 +15,6 @@
|
||||||
@SET_MAKE@
|
@SET_MAKE@
|
||||||
|
|
||||||
|
|
||||||
SOURCES = $(libdisass_a_SOURCES)
|
|
||||||
|
|
||||||
srcdir = @srcdir@
|
srcdir = @srcdir@
|
||||||
top_srcdir = @top_srcdir@
|
top_srcdir = @top_srcdir@
|
||||||
VPATH = @srcdir@
|
VPATH = @srcdir@
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
AM_CPPFLAGS = -I$(top_builddir) -I$(top_srcdir)
|
AM_CPPFLAGS = -I$(top_builddir) -I$(top_srcdir)
|
||||||
|
|
||||||
noinst_PROGRAMS = fibit incr printf printf2 rpn fib fibdelay add bp testfp funcfp rpnfp
|
noinst_PROGRAMS = fibit incr printf printf2 rpn fib fibdelay add bp testfp funcfp rpnfp modi
|
||||||
noinst_DATA = fibit.ok incr.ok printf.ok printf2.ok rpn.ok fib.ok fibdelay.ok testfp.ok funcfp.ok rpnfp.ok add.ok bp.ok
|
noinst_DATA = fibit.ok incr.ok printf.ok printf2.ok rpn.ok fib.ok fibdelay.ok testfp.ok funcfp.ok rpnfp.ok add.ok bp.ok modi.ok
|
||||||
EXTRA_DIST = $(noinst_DATA) run-test
|
EXTRA_DIST = $(noinst_DATA) run-test
|
||||||
|
|
||||||
if DISASS
|
if DISASS
|
||||||
|
@ -9,6 +9,6 @@ LDADD = $(top_builddir)/opcode/libdisass.a
|
||||||
endif
|
endif
|
||||||
|
|
||||||
if REGRESSION_TESTING
|
if REGRESSION_TESTING
|
||||||
TESTS = fib fibit fibdelay incr printf printf2 rpn add bp testfp funcfp rpnfp
|
TESTS = fib fibit fibdelay incr printf printf2 rpn add bp testfp funcfp rpnfp modi
|
||||||
TESTS_ENVIRONMENT=$(srcdir)/run-test
|
TESTS_ENVIRONMENT=$(srcdir)/run-test
|
||||||
endif
|
endif
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
# Makefile.in generated by automake 1.9.5 from Makefile.am.
|
# Makefile.in generated by automake 1.9.6 from Makefile.am.
|
||||||
# @configure_input@
|
# @configure_input@
|
||||||
|
|
||||||
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
|
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
|
||||||
|
@ -15,8 +15,6 @@
|
||||||
@SET_MAKE@
|
@SET_MAKE@
|
||||||
|
|
||||||
|
|
||||||
SOURCES = add.c bp.c fib.c fibdelay.c fibit.c funcfp.c incr.c printf.c printf2.c rpn.c rpnfp.c testfp.c
|
|
||||||
|
|
||||||
srcdir = @srcdir@
|
srcdir = @srcdir@
|
||||||
top_srcdir = @top_srcdir@
|
top_srcdir = @top_srcdir@
|
||||||
VPATH = @srcdir@
|
VPATH = @srcdir@
|
||||||
|
@ -43,7 +41,7 @@ target_triplet = @target@
|
||||||
noinst_PROGRAMS = fibit$(EXEEXT) incr$(EXEEXT) printf$(EXEEXT) \
|
noinst_PROGRAMS = fibit$(EXEEXT) incr$(EXEEXT) printf$(EXEEXT) \
|
||||||
printf2$(EXEEXT) rpn$(EXEEXT) fib$(EXEEXT) fibdelay$(EXEEXT) \
|
printf2$(EXEEXT) rpn$(EXEEXT) fib$(EXEEXT) fibdelay$(EXEEXT) \
|
||||||
add$(EXEEXT) bp$(EXEEXT) testfp$(EXEEXT) funcfp$(EXEEXT) \
|
add$(EXEEXT) bp$(EXEEXT) testfp$(EXEEXT) funcfp$(EXEEXT) \
|
||||||
rpnfp$(EXEEXT)
|
rpnfp$(EXEEXT) modi$(EXEEXT)
|
||||||
subdir = tests
|
subdir = tests
|
||||||
DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
|
DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
|
||||||
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||||
|
@ -83,6 +81,10 @@ incr_SOURCES = incr.c
|
||||||
incr_OBJECTS = incr.$(OBJEXT)
|
incr_OBJECTS = incr.$(OBJEXT)
|
||||||
incr_LDADD = $(LDADD)
|
incr_LDADD = $(LDADD)
|
||||||
@DISASS_TRUE@incr_DEPENDENCIES = $(top_builddir)/opcode/libdisass.a
|
@DISASS_TRUE@incr_DEPENDENCIES = $(top_builddir)/opcode/libdisass.a
|
||||||
|
modi_SOURCES = modi.c
|
||||||
|
modi_OBJECTS = modi.$(OBJEXT)
|
||||||
|
modi_LDADD = $(LDADD)
|
||||||
|
@DISASS_TRUE@modi_DEPENDENCIES = $(top_builddir)/opcode/libdisass.a
|
||||||
printf_SOURCES = printf.c
|
printf_SOURCES = printf.c
|
||||||
printf_OBJECTS = printf.$(OBJEXT)
|
printf_OBJECTS = printf.$(OBJEXT)
|
||||||
printf_LDADD = $(LDADD)
|
printf_LDADD = $(LDADD)
|
||||||
|
@ -111,10 +113,10 @@ COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
|
||||||
$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
|
$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
|
||||||
CCLD = $(CC)
|
CCLD = $(CC)
|
||||||
LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
|
LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
|
||||||
SOURCES = add.c bp.c fib.c fibdelay.c fibit.c funcfp.c incr.c printf.c \
|
SOURCES = add.c bp.c fib.c fibdelay.c fibit.c funcfp.c incr.c modi.c \
|
||||||
printf2.c rpn.c rpnfp.c testfp.c
|
|
||||||
DIST_SOURCES = add.c bp.c fib.c fibdelay.c fibit.c funcfp.c incr.c \
|
|
||||||
printf.c printf2.c rpn.c rpnfp.c testfp.c
|
printf.c printf2.c rpn.c rpnfp.c testfp.c
|
||||||
|
DIST_SOURCES = add.c bp.c fib.c fibdelay.c fibit.c funcfp.c incr.c \
|
||||||
|
modi.c printf.c printf2.c rpn.c rpnfp.c testfp.c
|
||||||
DATA = $(noinst_DATA)
|
DATA = $(noinst_DATA)
|
||||||
ETAGS = etags
|
ETAGS = etags
|
||||||
CTAGS = ctags
|
CTAGS = ctags
|
||||||
|
@ -214,10 +216,10 @@ target_cpu = @target_cpu@
|
||||||
target_os = @target_os@
|
target_os = @target_os@
|
||||||
target_vendor = @target_vendor@
|
target_vendor = @target_vendor@
|
||||||
AM_CPPFLAGS = -I$(top_builddir) -I$(top_srcdir)
|
AM_CPPFLAGS = -I$(top_builddir) -I$(top_srcdir)
|
||||||
noinst_DATA = fibit.ok incr.ok printf.ok printf2.ok rpn.ok fib.ok fibdelay.ok testfp.ok funcfp.ok rpnfp.ok add.ok bp.ok
|
noinst_DATA = fibit.ok incr.ok printf.ok printf2.ok rpn.ok fib.ok fibdelay.ok testfp.ok funcfp.ok rpnfp.ok add.ok bp.ok modi.ok
|
||||||
EXTRA_DIST = $(noinst_DATA) run-test
|
EXTRA_DIST = $(noinst_DATA) run-test
|
||||||
@DISASS_TRUE@LDADD = $(top_builddir)/opcode/libdisass.a
|
@DISASS_TRUE@LDADD = $(top_builddir)/opcode/libdisass.a
|
||||||
@REGRESSION_TESTING_TRUE@TESTS = fib fibit fibdelay incr printf printf2 rpn add bp testfp funcfp rpnfp
|
@REGRESSION_TESTING_TRUE@TESTS = fib fibit fibdelay incr printf printf2 rpn add bp testfp funcfp rpnfp modi
|
||||||
@REGRESSION_TESTING_TRUE@TESTS_ENVIRONMENT = $(srcdir)/run-test
|
@REGRESSION_TESTING_TRUE@TESTS_ENVIRONMENT = $(srcdir)/run-test
|
||||||
all: all-am
|
all: all-am
|
||||||
|
|
||||||
|
@ -276,6 +278,9 @@ funcfp$(EXEEXT): $(funcfp_OBJECTS) $(funcfp_DEPENDENCIES)
|
||||||
incr$(EXEEXT): $(incr_OBJECTS) $(incr_DEPENDENCIES)
|
incr$(EXEEXT): $(incr_OBJECTS) $(incr_DEPENDENCIES)
|
||||||
@rm -f incr$(EXEEXT)
|
@rm -f incr$(EXEEXT)
|
||||||
$(LINK) $(incr_LDFLAGS) $(incr_OBJECTS) $(incr_LDADD) $(LIBS)
|
$(LINK) $(incr_LDFLAGS) $(incr_OBJECTS) $(incr_LDADD) $(LIBS)
|
||||||
|
modi$(EXEEXT): $(modi_OBJECTS) $(modi_DEPENDENCIES)
|
||||||
|
@rm -f modi$(EXEEXT)
|
||||||
|
$(LINK) $(modi_LDFLAGS) $(modi_OBJECTS) $(modi_LDADD) $(LIBS)
|
||||||
printf$(EXEEXT): $(printf_OBJECTS) $(printf_DEPENDENCIES)
|
printf$(EXEEXT): $(printf_OBJECTS) $(printf_DEPENDENCIES)
|
||||||
@rm -f printf$(EXEEXT)
|
@rm -f printf$(EXEEXT)
|
||||||
$(LINK) $(printf_LDFLAGS) $(printf_OBJECTS) $(printf_LDADD) $(LIBS)
|
$(LINK) $(printf_LDFLAGS) $(printf_OBJECTS) $(printf_LDADD) $(LIBS)
|
||||||
|
@ -305,6 +310,7 @@ distclean-compile:
|
||||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fibit.Po@am__quote@
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fibit.Po@am__quote@
|
||||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/funcfp.Po@am__quote@
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/funcfp.Po@am__quote@
|
||||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/incr.Po@am__quote@
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/incr.Po@am__quote@
|
||||||
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/modi.Po@am__quote@
|
||||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/printf.Po@am__quote@
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/printf.Po@am__quote@
|
||||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/printf2.Po@am__quote@
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/printf2.Po@am__quote@
|
||||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rpn.Po@am__quote@
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rpn.Po@am__quote@
|
||||||
|
|
52
tests/modi.c
Normal file
52
tests/modi.c
Normal file
|
@ -0,0 +1,52 @@
|
||||||
|
/******************************** -*- C -*- ****************************
|
||||||
|
*
|
||||||
|
* Test jit_modi_i
|
||||||
|
*
|
||||||
|
***********************************************************************/
|
||||||
|
|
||||||
|
|
||||||
|
/* Contributed by Ludovic Courtes. */
|
||||||
|
|
||||||
|
#ifdef HAVE_CONFIG_H
|
||||||
|
#include "config.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include "lightning.h"
|
||||||
|
|
||||||
|
typedef int (* mod_t) (int);
|
||||||
|
|
||||||
|
mod_t
|
||||||
|
generate_modi (int operand)
|
||||||
|
{
|
||||||
|
static char buffer[1024];
|
||||||
|
mod_t result;
|
||||||
|
int arg;
|
||||||
|
|
||||||
|
result = (mod_t)(jit_set_ip (buffer).iptr);
|
||||||
|
jit_leaf (1);
|
||||||
|
arg = jit_arg_i ();
|
||||||
|
jit_getarg_i (JIT_R1, arg);
|
||||||
|
|
||||||
|
jit_modi_i (JIT_R2, JIT_R1, operand);
|
||||||
|
jit_movr_i (JIT_RET, JIT_R2);
|
||||||
|
|
||||||
|
jit_ret ();
|
||||||
|
jit_flush_code (buffer, jit_get_ip ().ptr);
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
main (int argc, char *argv[])
|
||||||
|
{
|
||||||
|
mod_t mod_eight = generate_modi (8);
|
||||||
|
|
||||||
|
printf ("mod_eight (%i) = %i (vs. %i)\n",
|
||||||
|
20420, mod_eight (20420), (20420 % 8));
|
||||||
|
printf ("mod_eight (%i) = %i (vs. %i)\n",
|
||||||
|
216096, mod_eight (216096), (216096 % 8));
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
2
tests/modi.ok
Normal file
2
tests/modi.ok
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
mod_eight (20420) = 4 (vs. 4)
|
||||||
|
mod_eight (216096) = 0 (vs. 0)
|
Loading…
Add table
Add a link
Reference in a new issue