From: Petar Jovanovic Date: Sun, 20 Jan 2013 18:27:39 +0000 (+0000) Subject: mips: additional test case for fix in VEX r2648 X-Git-Tag: svn/VALGRIND_3_9_0~433 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=00d404c5579b3df6931d6ddfe8feebf30c950ee0;p=thirdparty%2Fvalgrind.git mips: additional test case for fix in VEX r2648 Test program that triggers different corner cases related to position of branch instruction and max size of a translation block (60 instructions). Fix for these issues has been submitted in r2648. git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13248 --- diff --git a/none/tests/mips32/Makefile.am b/none/tests/mips32/Makefile.am index 4be7eee265..5d23ab6fa3 100644 --- a/none/tests/mips32/Makefile.am +++ b/none/tests/mips32/Makefile.am @@ -4,6 +4,7 @@ include $(top_srcdir)/Makefile.tool-tests.am dist_noinst_SCRIPTS = filter_stderr EXTRA_DIST = \ + block_size.stdout.exp block_size.stderr.exp block_size.vgtest \ branches.stdout.exp branches.stderr.exp branches.vgtest \ FPUarithmetic.stdout.exp FPUarithmetic.stdout.exp-mips32 \ FPUarithmetic.stderr.exp FPUarithmetic.vgtest \ @@ -22,6 +23,7 @@ EXTRA_DIST = \ check_PROGRAMS = \ allexec \ + block_size \ branches \ FPUarithmetic \ LoadStore \ diff --git a/none/tests/mips32/block_size.c b/none/tests/mips32/block_size.c new file mode 100644 index 0000000000..4b82196745 --- /dev/null +++ b/none/tests/mips32/block_size.c @@ -0,0 +1,71 @@ +#include + +__attribute__((noinline)) int test_block_size1 () +{ + int result = 1; + __asm__ __volatile__( + ".set noreorder" "\n\t" + ".set nomacro" "\n\t" + "b begin1" "\n\t" + "nop" "\n\t" + "begin1:" "\n\t" + ".rept 56" "\n\t" + ".word 0" "\n\t" + ".endr" "\n\t" + "li $4, 0" "\n\t" + "j end1" "\n\t" + "nop" "\n\t" + "b label1" "\n\t" + "nop" "\n\t" + "label1:" "\n\t" + "li $4, 1" "\n\t" + "end1:" "\n\t" + "move %0, $4" "\n\t" + ".set reorder" "\n\t" + ".set macro" "\n\t" + : /*out*/ "=r" (result) + : /*in*/ + : /*trash*/ "$4"); + return result; +} + +__attribute__((noinline)) int test_block_size2 () +{ + int result = 1; + __asm__ __volatile__( + ".set noreorder" "\n\t" + ".set nomacro" "\n\t" + "b begin2" "\n\t" + "nop" "\n\t" + "begin2:" "\n\t" + ".rept 58" "\n\t" + ".word 0" "\n\t" + ".endr" "\n\t" + "li $4, 1" "\n\t" + "j end2" "\n\t" + "li $4, 0" "\n\t" + "end2:" "\n\t" + "move %0, $4" "\n\t" + ".set reorder" "\n\t" + ".set macro" "\n\t" + : /*out*/ "=r" (result) + : /*in*/ + : /*trash*/ "$4"); + return result; +} + +int main () +{ + /*******************TEST1*******************/ + if (test_block_size1() == 0) + printf("test1 - PASS\n"); + else + printf("test1 - FAIL\n"); + + /*******************TEST2*******************/ + if (test_block_size2() == 0) + printf("test2 - PASS\n"); + else + printf("test2 - FAIL\n"); + return 0; +} diff --git a/none/tests/mips32/block_size.stderr.exp b/none/tests/mips32/block_size.stderr.exp new file mode 100644 index 0000000000..e69de29bb2 diff --git a/none/tests/mips32/block_size.stdout.exp b/none/tests/mips32/block_size.stdout.exp new file mode 100644 index 0000000000..3a48f4e71d --- /dev/null +++ b/none/tests/mips32/block_size.stdout.exp @@ -0,0 +1,2 @@ +test1 - PASS +test2 - PASS diff --git a/none/tests/mips32/block_size.vgtest b/none/tests/mips32/block_size.vgtest new file mode 100644 index 0000000000..d8eefe5253 --- /dev/null +++ b/none/tests/mips32/block_size.vgtest @@ -0,0 +1,2 @@ +prog: block_size +vgopts: -q