From 52352d38d6218b8c7dcc2b59e88820f702c89fd1 Mon Sep 17 00:00:00 2001 From: Andrew Cagney Date: Mon, 1 Sep 1997 09:47:03 +0000 Subject: [PATCH] Test/fix pabsh, pabsw, psrlvw. --- sim/ChangeLog | 5 +++++ sim/configure | 11 ++++++++-- sim/configure.in | 10 ++++++++- sim/mips/ChangeLog | 8 +++++++ sim/mips/gencode.c | 14 +++++++----- sim/testsuite/ChangeLog | 13 +++++++++++ sim/testsuite/configure.in | 17 +++++---------- sim/testsuite/mips64vr5900el-elf/.Sanitize | 6 ++++++ sim/testsuite/mips64vr5900el-elf/ChangeLog | 8 +++++++ sim/testsuite/mips64vr5900el-elf/Makefile.in | 32 +++++++++++++--------------- sim/testsuite/mips64vr5900el-elf/t-macros.i | 1 + sim/testsuite/mips64vr5900el-elf/t-pabsh.s | 10 +++++++++ sim/testsuite/mips64vr5900el-elf/t-pabsw.s | 10 +++++++++ sim/testsuite/mips64vr5900el-elf/t-psrlvw.s | 11 ++++++++++ 14 files changed, 119 insertions(+), 37 deletions(-) create mode 100644 sim/testsuite/ChangeLog create mode 100644 sim/testsuite/mips64vr5900el-elf/t-pabsh.s create mode 100644 sim/testsuite/mips64vr5900el-elf/t-pabsw.s create mode 100644 sim/testsuite/mips64vr5900el-elf/t-psrlvw.s 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 + + * configure.in (testdir): When a testsuite directory, add that to + the list of confdirs. + Tue Aug 19 11:17:46 1997 Andrew Cagney * 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 + + * 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 * 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 + + * 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 + + * 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 + + * Makefile.in (TESTS): Add t-psrlvw, t-pabsh, t-pabsw. + (.s.o, .o.tx59): Add -Ttext 0xa002000, to ld. Add -I to + as. + + t-psrlvw.s, t-pabsh, t-pabsw: New files. + Tue Jul 29 10:56:53 1997 Andrew Cagney * 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 -- 2.7.4