aboutsummaryrefslogtreecommitdiff
path: root/sim
diff options
context:
space:
mode:
authorAndrew Cagney <cagney@redhat.com>1997-09-01 09:47:03 +0000
committerAndrew Cagney <cagney@redhat.com>1997-09-01 09:47:03 +0000
commit52352d38d6218b8c7dcc2b59e88820f702c89fd1 (patch)
treead38de9df23e2d51d7defc9efa12e05a547ac86d /sim
parent0ffba68fdc03f68c2cf78cb16ac87464cacf8fde (diff)
downloadgdb-52352d38d6218b8c7dcc2b59e88820f702c89fd1.zip
gdb-52352d38d6218b8c7dcc2b59e88820f702c89fd1.tar.gz
gdb-52352d38d6218b8c7dcc2b59e88820f702c89fd1.tar.bz2
Test/fix pabsh, pabsw, psrlvw.
Diffstat (limited to 'sim')
-rw-r--r--sim/ChangeLog5
-rwxr-xr-xsim/configure11
-rw-r--r--sim/configure.in10
-rw-r--r--sim/mips/ChangeLog8
-rw-r--r--sim/mips/gencode.c14
-rw-r--r--sim/testsuite/ChangeLog13
-rw-r--r--sim/testsuite/configure.in17
-rw-r--r--sim/testsuite/mips64vr5900el-elf/.Sanitize6
-rw-r--r--sim/testsuite/mips64vr5900el-elf/ChangeLog8
-rw-r--r--sim/testsuite/mips64vr5900el-elf/Makefile.in32
-rw-r--r--sim/testsuite/mips64vr5900el-elf/t-macros.i1
-rw-r--r--sim/testsuite/mips64vr5900el-elf/t-pabsh.s10
-rw-r--r--sim/testsuite/mips64vr5900el-elf/t-pabsw.s10
-rw-r--r--sim/testsuite/mips64vr5900el-elf/t-psrlvw.s11
14 files changed, 119 insertions, 37 deletions
diff --git a/sim/ChangeLog b/sim/ChangeLog
index 5aebd70..4d1d20b 100644
--- a/sim/ChangeLog
+++ b/sim/ChangeLog
@@ -1,3 +1,8 @@
+Mon Sep 1 16:48:23 1997 Andrew Cagney <cagney@b1.cygnus.com>
+
+ * configure.in (testdir): When a testsuite directory, add that to
+ the list of confdirs.
+
Tue Aug 19 11:17:46 1997 Andrew Cagney <cagney@b1.cygnus.com>
* configure.in (extra_subdirs): Enable igen ready for V850.
diff --git a/sim/configure b/sim/configure
index 72b7ac6..1aea893 100755
--- a/sim/configure
+++ b/sim/configure
@@ -1288,7 +1288,7 @@ case "${target}" in
d30v-*-*)
sim_target=d30v
only_if_gcc=yes
- extra_subdirs="${extra_subdirs} igen testsuite"
+ extra_subdirs="${extra_subdirs} igen"
;;
# end-sanitize-d30v
h8300*-*-*) sim_target=h8300 ;;
@@ -1343,7 +1343,6 @@ case "${target}" in
v850eq-*-*)
# The V850 simulator can only be compiled by gcc.
sim_target=v850
- extra_subdirs="${extra_subdirs} igen"
only_if_gcc=yes
;;
# end-sanitize-v850eq
@@ -1367,6 +1366,14 @@ case "${target}" in
*) sim_target=none ;;
esac
+
+# Is there a testsuite directory for the target?
+testdir=`echo ${target} | sed -e 's/-.*-/-/'`
+if test -r ${srcdir}/testsuite/${testdir}/configure ; then
+ extra_subdirs="${extra_subdirs} testsuite"
+fi
+
+
case "${enable_sim}" in
no) sim_target=none ;;
yes)
diff --git a/sim/configure.in b/sim/configure.in
index 99f4aed..0d4e800 100644
--- a/sim/configure.in
+++ b/sim/configure.in
@@ -53,7 +53,7 @@ case "${target}" in
d30v-*-*)
sim_target=d30v
only_if_gcc=yes
- extra_subdirs="${extra_subdirs} igen testsuite"
+ extra_subdirs="${extra_subdirs} igen"
;;
# end-sanitize-d30v
h8300*-*-*) sim_target=h8300 ;;
@@ -131,6 +131,14 @@ case "${target}" in
*) sim_target=none ;;
esac
+
+# Is there a testsuite directory for the target?
+testdir=`echo ${target} | sed -e 's/-.*-/-/'`
+if test -r ${srcdir}/testsuite/${testdir}/configure ; then
+ extra_subdirs="${extra_subdirs} testsuite"
+fi
+
+
case "${enable_sim}" in
no) sim_target=none ;;
yes)
diff --git a/sim/mips/ChangeLog b/sim/mips/ChangeLog
index 037e1df..8831969 100644
--- a/sim/mips/ChangeLog
+++ b/sim/mips/ChangeLog
@@ -1,3 +1,11 @@
+start-sanitize-r5900
+Mon Sep 1 18:43:30 1997 Andrew Cagney <cagney@b1.cygnus.com>
+
+ * gencode.c (build_instruction): For "pabsw" and "pabsh", check
+ for overflow due to ABS of MININT, set result to MAXINT.
+ (build_instruction): For "psrlvw", signextend bit 31.
+
+end-sanitize-r5900
Wed Aug 27 18:13:22 1997 Andrew Cagney <cagney@b1.cygnus.com>
* configure: Regenerated to track ../common/aclocal.m4 changes.
diff --git a/sim/mips/gencode.c b/sim/mips/gencode.c
index 6ef01bf..4c6937d 100644
--- a/sim/mips/gencode.c
+++ b/sim/mips/gencode.c
@@ -3580,8 +3580,8 @@ build_instruction (doisa, features, mips16, insn)
break;
case PSRLVW:
- printf("GPR_UD(destreg,0) = RT_UW(0) >> (RS_UB(0) & 0x1F);\n");
- printf("GPR_UD(destreg,1) = RT_UW(2) >> (RS_UB(8) & 0x1F);\n");
+ printf("GPR_UD(destreg,0) = SIGNEXTEND ( RT_UW(0) >> (RS_UB(0) & 0x1F), 31);\n");
+ printf("GPR_UD(destreg,1) = SIGNEXTEND ( RT_UW(2) >> (RS_UB(8) & 0x1F), 31);\n");
break;
case PSRAVW:
@@ -3658,14 +3658,18 @@ build_instruction (doisa, features, mips16, insn)
{
char* name = name_for_data_len( insn );
char* letter = letter_for_data_len( insn );
+ char* min = min_for_data_len( insn );
+ char* max = max_for_data_len( insn );
printf("int i;\n");
printf("for(i=0;i<%sS_IN_MMI_REGS;i++)\n", name );
printf(" {\n");
- printf(" if (RT_S%s(i) < 0)\n", letter );
- printf(" GPR_S%s(destreg,i) = -RT_S%s(i);\n", letter, letter );
- printf(" else\n");
+ printf(" if (RT_S%s(i) >= 0)\n", letter );
printf(" GPR_S%s(destreg,i) = RT_S%s(i);\n", letter, letter );
+ printf(" else if (RT_S%s(i) == %s)\n", letter, min );
+ printf(" GPR_S%s(destreg,i) = %s;\n", letter, max );
+ printf(" else\n");
+ printf(" GPR_S%s(destreg,i) = -RT_S%s(i);\n", letter, letter );
printf(" }\n");
break;
}
diff --git a/sim/testsuite/ChangeLog b/sim/testsuite/ChangeLog
new file mode 100644
index 0000000..736aacc
--- /dev/null
+++ b/sim/testsuite/ChangeLog
@@ -0,0 +1,13 @@
+Mon Sep 1 16:43:55 1997 Andrew Cagney <cagney@b1.cygnus.com>
+
+ * configure.in (configdirs): Test for the target directory instead
+ of matching on a target.
+
+end-sanitize-r5900
+Tue Jul 15 13:43:20 1997 Andrew Cagney <cagney@sendai.cygnus.com>
+
+ * configure.in (configdirs): Configure mipsr5900rv5900el
+ directory.
+ * configure: Regenerate.
+
+start-sanitize-r5900
diff --git a/sim/testsuite/configure.in b/sim/testsuite/configure.in
index 37371bd..7c1b73e 100644
--- a/sim/testsuite/configure.in
+++ b/sim/testsuite/configure.in
@@ -5,8 +5,7 @@ dnl script appropriate for this directory. For more information, check
dnl any existing configure script.
AC_PREREQ(2.5)
-dnl FIXME - think of a truly uniq file to this directory
-AC_INIT(d30v-elf)
+AC_INIT(common/bits-tst.c)
CC=${CC-cc}
AC_SUBST(CC)
@@ -16,17 +15,11 @@ AC_CANONICAL_SYSTEM
# Directories to use in all configurations.
configdirs=""
-
# add test sub-directory for appropriate targets
-case "${target}" in
-# start-sanitize-d30v
- d30v-*-elf) configdirs="${configdirs} d30v-elf" ;;
-# end-sanitize-d30v
-# start-sanitize-r5900
- mips64vr5900el-*-elf) configdirs="${configdirs} mips64vr5900el-elf" ;;
-# end-sanitize-r5900
- *) ;;
-esac
+testdir=`echo ${target} | sed -e 's/-.*-/-/'`
+if test -r ${srcdir}/${testdir}/configure ; then
+ configdirs="${configdirs} $testdir"
+fi
# configure the subdirectories too
AC_CONFIG_SUBDIRS($configdirs)
diff --git a/sim/testsuite/mips64vr5900el-elf/.Sanitize b/sim/testsuite/mips64vr5900el-elf/.Sanitize
index 06716fc..7f83da8 100644
--- a/sim/testsuite/mips64vr5900el-elf/.Sanitize
+++ b/sim/testsuite/mips64vr5900el-elf/.Sanitize
@@ -31,6 +31,10 @@ exit47.s
hello.s
loop.s
t-macros.i
+
+t-mtsa.s
+t-pabsh.s
+t-pabsw.s
t-paddb.s
t-paddsb.s
t-paddsh.s
@@ -75,6 +79,7 @@ t-ppacw.s
t-prot3w.s
t-psllvw.s
t-psravw.s
+t-psrlvw.s
t-psubsb.s
t-psubsh.s
t-psubsw.s
@@ -83,6 +88,7 @@ t-psubuh.s
t-psubuw.s
t-psubw.s
t-qfsrv.s
+
tick.s
Things-to-lose:
diff --git a/sim/testsuite/mips64vr5900el-elf/ChangeLog b/sim/testsuite/mips64vr5900el-elf/ChangeLog
index 444ff9a..4381f13 100644
--- a/sim/testsuite/mips64vr5900el-elf/ChangeLog
+++ b/sim/testsuite/mips64vr5900el-elf/ChangeLog
@@ -1,3 +1,11 @@
+Mon Sep 1 16:58:13 1997 Andrew Cagney <cagney@b1.cygnus.com>
+
+ * Makefile.in (TESTS): Add t-psrlvw, t-pabsh, t-pabsw.
+ (.s.o, .o.tx59): Add -Ttext 0xa002000, to ld. Add -I <srcdir> to
+ as.
+
+ t-psrlvw.s, t-pabsh, t-pabsw: New files.
+
Tue Jul 29 10:56:53 1997 Andrew Cagney <cagney@b1.cygnus.com>
* t-mtsa.s: Check move/from SA instructions.
diff --git a/sim/testsuite/mips64vr5900el-elf/Makefile.in b/sim/testsuite/mips64vr5900el-elf/Makefile.in
index 849efb3..704b77d 100644
--- a/sim/testsuite/mips64vr5900el-elf/Makefile.in
+++ b/sim/testsuite/mips64vr5900el-elf/Makefile.in
@@ -72,8 +72,8 @@ LD_FOR_TARGET = `\
fi`
RUN_FOR_TARGET = `\
- if [ -x ../../../sim/${target_cpu}/run ]; then \
- echo ../../../sim/${target_cpu}/run ; \
+ if [ -x ../../../sim/mips/run ]; then \
+ echo ../../../sim/mips/run ; \
else \
echo $(target_alias)-run ; \
fi`
@@ -83,6 +83,8 @@ TESTS = \
exit47.ko \
\
t-mtsa.ok \
+ t-pabsh.ok \
+ t-pabsw.ok \
t-paddb.ok \
t-paddsb.ok \
t-paddsh.ok \
@@ -126,6 +128,7 @@ TESTS = \
t-ppacw.ok \
t-prot3w.ok \
t-psllvw.ok \
+ t-psrlvw.ok \
t-psravw.ok \
t-psubsb.ok \
t-psubsh.ok \
@@ -154,7 +157,7 @@ sanity:
# Rules for running the tests
-.SUFFIXES: .u .ok .tx59 .hi .ko
+.SUFFIXES: .u .uue .ok .ok .tx59 .hi .ko .ko
.tx59.ok:
rm -f tmp-$* $*.hi
ulimit -t 5 ; $(RUN_FOR_TARGET) $*.tx59 > tmp-$*
@@ -179,20 +182,15 @@ sanity:
# Rules for building all the tests and packing them into
# uuencoded files.
-
-.SUFFIXES: .u .S .tx59
-.S.u:
- rm -f $*.o $*.tx59
- $(AS_FOR_TARGET) $(srcdir)/$*.S -o $*.o
- $(LD_FOR_TARGET) -o $* $*.o
- uuencode < $* $* > $*.u
- rm -f $*.o $*
-.S.tx59:
- rm -f $*.o $*.tx59
- $(AS_FOR_TARGET) $(srcdir)/$*.S -o $*.o
- $(LD_FOR_TARGET) -o $*.tx59 $*.o
- rm -f $*.o $*
-
+.tx59.u:
+ uuencode < $*.tx59 $*.tx59 > $*.u
+ @echo "Move $*.u $*.uue"
+.uue.tx59:
+ uudecode $(srcdir)/$*.uue
+.o.tx59:
+ $(LD_FOR_TARGET) -Ttext 0xa0020000 -o $*.tx59 $*.o
+.s.o:
+ $(AS_FOR_TARGET) -I $(srcdir) $(srcdir)/$*.s -o $*.o
#
diff --git a/sim/testsuite/mips64vr5900el-elf/t-macros.i b/sim/testsuite/mips64vr5900el-elf/t-macros.i
index 47844a7..5129781 100644
--- a/sim/testsuite/mips64vr5900el-elf/t-macros.i
+++ b/sim/testsuite/mips64vr5900el-elf/t-macros.i
@@ -95,6 +95,7 @@
.endm
.macro start
+ .text
.globl _start
.set noreorder
_start:
diff --git a/sim/testsuite/mips64vr5900el-elf/t-pabsh.s b/sim/testsuite/mips64vr5900el-elf/t-pabsh.s
new file mode 100644
index 0000000..0d29843
--- /dev/null
+++ b/sim/testsuite/mips64vr5900el-elf/t-pabsh.s
@@ -0,0 +1,10 @@
+.include "t-macros.i"
+
+ start
+
+ load $8 0x8000800080008000 0xffffffffffffffff
+test_pabsh:
+ pabsh $10, $8
+ check10 0x7fff7fff7fff7fff 0x0001000100010001
+
+ exit0
diff --git a/sim/testsuite/mips64vr5900el-elf/t-pabsw.s b/sim/testsuite/mips64vr5900el-elf/t-pabsw.s
new file mode 100644
index 0000000..18a02da
--- /dev/null
+++ b/sim/testsuite/mips64vr5900el-elf/t-pabsw.s
@@ -0,0 +1,10 @@
+.include "t-macros.i"
+
+ start
+
+ load $8 0x8000000080000000 0xffffffffffffffff
+test_pabsw:
+ pabsw $10, $8
+ check10 0x7fffffff7fffffff 0x0000000100000001
+
+ exit0
diff --git a/sim/testsuite/mips64vr5900el-elf/t-psrlvw.s b/sim/testsuite/mips64vr5900el-elf/t-psrlvw.s
new file mode 100644
index 0000000..c3e8597
--- /dev/null
+++ b/sim/testsuite/mips64vr5900el-elf/t-psrlvw.s
@@ -0,0 +1,11 @@
+.include "t-macros.i"
+
+ start
+
+ load $8 0x00ff0000ffff0000 0x0000ffffffff0000
+ load $9 0x00ff0000ffff0000 0x0000ffffffff0000
+test_psrlvw:
+ psrlvw $10,$8,$9 #Expectation:
+ check10 0xffffffffffff0000 0xffffffffffff0000
+
+ exit0