]> git.ipfire.org Git - thirdparty/valgrind.git/commitdiff
mips64: add tests for Cavium BBIT0 and BBIT1
authorPetar Jovanovic <mips32r2@gmail.com>
Thu, 4 Sep 2014 01:07:08 +0000 (01:07 +0000)
committerPetar Jovanovic <mips32r2@gmail.com>
Thu, 4 Sep 2014 01:07:08 +0000 (01:07 +0000)
Follow up to VEX r2942 in which support for Cavium BBIT0/1 instructions
has been added.

git-svn-id: svn://svn.valgrind.org/valgrind/trunk@14449

none/tests/mips64/Makefile.am
none/tests/mips64/cvm_bbit.c [new file with mode: 0644]
none/tests/mips64/cvm_bbit.stderr.exp [new file with mode: 0644]
none/tests/mips64/cvm_bbit.stdout.exp [new file with mode: 0644]
none/tests/mips64/cvm_bbit.stdout.exp-non-octeon [new file with mode: 0644]
none/tests/mips64/cvm_bbit.vgtest [new file with mode: 0644]

index 9175cbab405bc6b6c9af4984f3d15f97eba5c544..2876030afef5bdf252183e6d249e820cd7b3b315 100644 (file)
@@ -10,6 +10,8 @@ EXTRA_DIST = \
        branch_and_jump_instructions.stdout.exp \
        branch_and_jump_instructions.stderr.exp branch_and_jump_instructions.vgtest \
        branches.stdout.exp branches.stderr.exp branches.vgtest \
+       cvm_bbit.stdout.exp cvm_bbit.stdout.exp-non-octeon \
+       cvm_bbit.stderr.exp cvm_bbit.vgtest \
        cvm_ins.stdout.exp cvm_ins.stdout.exp-non-octeon \
        cvm_ins.stderr.exp cvm_ins.vgtest \
        cvm_lx_ins.stdout.exp-LE cvm_lx_ins.stdout.exp-BE \
@@ -63,6 +65,7 @@ check_PROGRAMS = \
        arithmetic_instruction \
        branch_and_jump_instructions \
        branches \
+       cvm_bbit \
        cvm_ins \
        cvm_lx_ins \
        cvm_atomic \
@@ -93,6 +96,7 @@ AM_CCASFLAGS += @FLAG_M64@
 
 allexec_CFLAGS          = $(AM_CFLAGS) @FLAG_W_NO_NONNULL@
 
+cvm_bbit_CFLAGS = $(AM_CFLAGS) -g -O0 @FLAG_OCTEON@
 cvm_ins_CFLAGS = $(AM_CFLAGS) -g -O0 @FLAG_OCTEON@
 cvm_lx_ins_CFLAGS = $(AM_CFLAGS) -g -O0 @FLAG_OCTEON2@
 cvm_atomic_CFLAGS = $(AM_CFLAGS) -g -O0 @FLAG_OCTEON2@
diff --git a/none/tests/mips64/cvm_bbit.c b/none/tests/mips64/cvm_bbit.c
new file mode 100644 (file)
index 0000000..3281886
--- /dev/null
@@ -0,0 +1,38 @@
+#include <stdio.h>
+
+int main()
+{
+#if (_MIPS_ARCH_OCTEON)
+   int t1 = 0;
+   int t2 = 0;
+   __asm__ volatile(
+      ".set noreorder"          "\n\t"
+      "move  $t0, $zero"        "\n\t"
+      "label2:"                 "\n\t"
+      "addiu $t0, $t0, 1"       "\n\t"
+      "bbit0 $t0, 0x3, label2"  "\n\t"
+      "nop"                     "\n\t"
+      "move %0, $t0"            "\n\t"
+      ".set reorder"            "\n\t"
+      : "=r" (t1)
+      :
+      : "t0");
+   __asm__ volatile(
+      ".set noreorder"          "\n\t"
+      "li    $t0, 0xff"         "\n\t"
+      "label1:"                 "\n\t"
+      "addiu $t0, $t0, -1"      "\n\t"
+      "bbit1 $t0, 0x3, label1"  "\n\t"
+      "nop"                     "\n\t"
+      "move %0, $t0"            "\n\t"
+      ".set reorder"            "\n\t"
+      : "=r" (t2)
+      :
+      : "t0");
+
+   printf("TEST bbit0: %s\n", t1 == 0x08 ? "PASS" : "FAIL");
+   printf("TEST bbit1: %s\n", t2 == 0xF7 ? "PASS" : "FAIL");
+
+#endif
+   return 0;
+}
diff --git a/none/tests/mips64/cvm_bbit.stderr.exp b/none/tests/mips64/cvm_bbit.stderr.exp
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/none/tests/mips64/cvm_bbit.stdout.exp b/none/tests/mips64/cvm_bbit.stdout.exp
new file mode 100644 (file)
index 0000000..71e1971
--- /dev/null
@@ -0,0 +1,2 @@
+TEST bbit0: PASS
+TEST bbit1: PASS
diff --git a/none/tests/mips64/cvm_bbit.stdout.exp-non-octeon b/none/tests/mips64/cvm_bbit.stdout.exp-non-octeon
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/none/tests/mips64/cvm_bbit.vgtest b/none/tests/mips64/cvm_bbit.vgtest
new file mode 100644 (file)
index 0000000..00c0b96
--- /dev/null
@@ -0,0 +1,3 @@
+prog: cvm_bbit
+prereq: ../../../tests/mips_features cavium-octeon
+vgopts: -q