[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Guile-commits] 133/437: Correct integer multiplication and add extra te
From: |
Andy Wingo |
Subject: |
[Guile-commits] 133/437: Correct integer multiplication and add extra test case. |
Date: |
Mon, 2 Jul 2018 05:14:02 -0400 (EDT) |
wingo pushed a commit to branch lightning
in repository guile.
commit 90a187a12e0ffa27ef85d100de7b117a97034600
Author: pcpa <address@hidden>
Date: Mon Dec 3 00:07:29 2012 -0200
Correct integer multiplication and add extra test case.
* lib/jit_ppc.c: Assign copyright ownership to FSF.
* lib/jit_x86-cpu.c: Correct integer multiplication that was
generating code with reversed register arguments.
* check/rpn.ok, check/rpn.tst: New test case file.
---
ChangeLog | 9 +++
check/Makefile.am | 3 +-
check/rpn.ok | 6 ++
check/rpn.tst | 170 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
lib/jit_ppc.c | 2 +-
lib/jit_x86-cpu.c | 4 +-
6 files changed, 190 insertions(+), 4 deletions(-)
diff --git a/ChangeLog b/ChangeLog
index 52276fc..b65011a 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,14 @@
2012-12-02 Paulo Andrade <address@hidden>
+ * lib/jit_ppc.c: Assign copyright ownership to FSF.
+
+ * lib/jit_x86-cpu.c: Correct integer multiplication that was
+ generating code with reversed register arguments.
+
+ * check/rpn.ok, check/rpn.tst: New test case file.
+
+2012-12-02 Paulo Andrade <address@hidden>
+
* lib/jit_x86-cpu.c, lib/jit_x86-sse.c, lib/jit_x86-x87.c:
Actually change copyright owner to FSF as avertised.
diff --git a/check/Makefile.am b/check/Makefile.am
index c88f069..bb4ec40 100644
--- a/check/Makefile.am
+++ b/check/Makefile.am
@@ -31,10 +31,11 @@ EXTRA_DIST = \
bp.tst bp.ok \
divi.tst divi.ok \
fib.tst fib.ok \
+ rpn.tst rpn.ok \
check.sh \
all.tst
-TESTS = 3to2 add allocai bp divi fib
+TESTS = 3to2 add allocai bp divi fib rpn
CLEANFILES = $(TESTS)
diff --git a/check/rpn.ok b/check/rpn.ok
new file mode 100644
index 0000000..b686c13
--- /dev/null
+++ b/check/rpn.ok
@@ -0,0 +1,6 @@
+
+C: 0 10 20 30 40 50 60 70 80 90 100
+F: 32 50 68 86 104 122 140 158 176 194 212
+
+F: 32 50 68 86 104 122 140 158 176 194 212
+C: 0 10 20 30 40 50 60 70 80 90 100
diff --git a/check/rpn.tst b/check/rpn.tst
new file mode 100644
index 0000000..fe12557
--- /dev/null
+++ b/check/rpn.tst
@@ -0,0 +1,170 @@
+.data 256
+.$($int = 4)
+C:
+.c "\nC:"
+F:
+.c "\nF:"
+format:
+.c "%3d "
+newline:
+.c "\n"
+
+.code
+ jmpi main
+
+c2f:
+ prolog
+ arg $in
+
+ allocai $(32 * $int) $index
+
+ getarg %r2 $in
+
+ // 32x9*5/+
+ movi %r0 32
+
+ // x9*5/+
+ stxi_i $index %fp %r0
+. $($index = $index + $int)
+ movr %r0 %r2
+
+ // 9*5/+
+ stxi_i $index %fp %r0
+. $($index = $index + $int)
+ movi %r0 9
+
+ // *5/+
+. $($index = $index - $int)
+ ldxi_i %r1 %fp $index
+ mulr %r0 %r1 %r0
+
+ // 5/+
+ stxi_i $index %fp %r0
+. $($index = $index + $int)
+ movi %r0 5
+
+ // /+
+. $($index = $index - $int)
+ ldxi_i %r1 %fp $index
+ divr %r0 %r1 %r0
+
+ // +
+. $($index = $index - $int)
+ ldxi_i %r1 %fp $index
+ addr %r0 %r1 %r0
+
+ retr %r0
+ epilog
+
+f2c:
+ prolog
+ arg $in
+
+ allocai $(32 * $int) $index
+
+ getarg %r2 $in
+
+ // x32-5*9/
+ stxi_i $index %fp %r0
+. $($index = $index + $int)
+ movr %r0 %r2
+
+ // 32-5*9/
+ stxi_i $index %fp %r0
+. $($index = $index + $int)
+ movi %r0 32
+
+ // -5*9/
+. $($index = $index - $int)
+ ldxi_i %r1 %fp $index
+ subr %r0 %r1 %r0
+
+ // 5*9/
+ stxi_i $index %fp %r0
+. $($index = $index + $int)
+ movi %r0 5
+
+ // *9/
+. $($index = $index - $int)
+ ldxi_i %r1 %fp $index
+ mulr %r0 %r1 %r0
+
+ // 9/
+ stxi_i $index %fp %r0
+. $($index = $index + $int)
+ movi %r0 9
+
+ // /
+. $($index = $index - $int)
+ ldxi_i %r1 %fp $index
+ divr %r0 %r1 %r0
+
+ retr %r0
+ epilog
+
+//-----------------------------------------------------------------------
+main:
+ prolog
+
+ prepare 1
+ pushargi C
+ finishi @printf
+ movi %v0 0
+loopC:
+ prepare 1
+ pushargi format
+ pushargr %v0
+ finishi @printf
+ addi %v0 %v0 10
+ blei loopC %v0 100
+ prepare 1
+ pushargi F
+ finishi @printf
+ movi %v0 0
+loopC2F:
+ prepare 0
+ pushargr %v0
+ finishi c2f
+ retval %r0
+ prepare 2
+ pushargi format
+ pushargr %r0
+ finishi @printf
+ addi %v0 %v0 10
+ blei loopC2F %v0 100
+ prepare 1
+ pushargi newline
+ finishi @printf
+
+ prepare 1
+ pushargi F
+ finishi @printf
+ movi %v0 32
+loopF:
+ prepare 2
+ pushargi format
+ pushargr %v0
+ finishi @printf
+ addi %v0 %v0 18
+ blei loopF %v0 212
+ prepare 1
+ pushargi C
+ finishi @printf
+ movi %v0 32
+loopF2C:
+ prepare 0
+ pushargr %v0
+ finishi f2c
+ retval %r0
+ prepare 2
+ pushargi format
+ pushargr %r0
+ finishi @printf
+ addi %v0 %v0 18
+ blei loopF2C %v0 212
+ prepare 1
+ pushargi newline
+ finishi @printf
+
+ ret
+ epilog
diff --git a/lib/jit_ppc.c b/lib/jit_ppc.c
index 70af328..4a2e269 100644
--- a/lib/jit_ppc.c
+++ b/lib/jit_ppc.c
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2011 Paulo Cesar Pereira de Andrade.
+ * Copyright (C) 2012 Free Software Foundation, Inc.
*
* This is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/lib/jit_x86-cpu.c b/lib/jit_x86-cpu.c
index 71fcb96..9be3721 100644
--- a/lib/jit_x86-cpu.c
+++ b/lib/jit_x86-cpu.c
@@ -1053,10 +1053,10 @@ _subxi(jit_state_t *_jit, jit_int32_t r0, jit_int32_t
r1, jit_word_t i0)
static void
_imulr(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
{
- rex(0, 1, r1, _NOREG, r0);
+ rex(0, 1, r0, _NOREG, r1);
ic(0x0f);
ic(0xaf);
- mrm(0x03, r7(r1), r7(r0));
+ mrm(0x03, r7(r0), r7(r1));
}
static void
- [Guile-commits] 110/437: Change jit_getarg_{c, uc, s, us, i, ui} to extr_l to sign extend on 64 bits., (continued)
- [Guile-commits] 110/437: Change jit_getarg_{c, uc, s, us, i, ui} to extr_l to sign extend on 64 bits., Andy Wingo, 2018/07/02
- [Guile-commits] 117/437: Implement x86_64 support for multiple integer and float arguments., Andy Wingo, 2018/07/02
- [Guile-commits] 105/437: fix 64-bit load with sign extension, Andy Wingo, 2018/07/02
- [Guile-commits] 70/437: add _s32P, Andy Wingo, 2018/07/02
- [Guile-commits] 121/437: Define some extra fp-common macros when sizeof(long) == sizeof(int)., Andy Wingo, 2018/07/02
- [Guile-commits] 77/437: add .gitattributes file, Andy Wingo, 2018/07/02
- [Guile-commits] 44/437: merge some bugfixes, give right meaning to jit_retval_[fd], Andy Wingo, 2018/07/02
- [Guile-commits] 106/437: ldst test update, Andy Wingo, 2018/07/02
- [Guile-commits] 114/437: Change JIT_REXTMP to not clobber 6th argument., Andy Wingo, 2018/07/02
- [Guile-commits] 88/437: move JIT_R1/JIT_R2 to R10/R11 for the x86_64 backend, Andy Wingo, 2018/07/02
- [Guile-commits] 133/437: Correct integer multiplication and add extra test case.,
Andy Wingo <=
- [Guile-commits] 116/437: Change jit_finish to work with varargs functions in x86_64., Andy Wingo, 2018/07/02
- [Guile-commits] 85/437: add (void) casts for C++ compatibility, Andy Wingo, 2018/07/02
- [Guile-commits] 127/437: Extra cleanup before update to new codebase., Andy Wingo, 2018/07/02
- [Guile-commits] 130/437: Add make rule to build test case dependencies., Andy Wingo, 2018/07/02
- [Guile-commits] 125/437: fix multiplication on x86_64, Andy Wingo, 2018/07/02
- [Guile-commits] 102/437: add ldst test, Andy Wingo, 2018/07/02
- [Guile-commits] 131/437: Add proper make clean rule to the check subdir., Andy Wingo, 2018/07/02
- [Guile-commits] 109/437: more fixes to fp branches, Andy Wingo, 2018/07/02
- [Guile-commits] 136/437: Update code to build and pass test cases in the arm port., Andy Wingo, 2018/07/02
- [Guile-commits] 124/437: Also reset alloca_slack after jit_prolog in i386., Andy Wingo, 2018/07/02