guile-commits
[Top][All Lists]
Advanced

[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



reply via email to

[Prev in Thread] Current Thread [Next in Thread]