]> git.ipfire.org Git - thirdparty/valgrind.git/commitdiff
Add an excessively minimal testcase, from #279698, pertaining to the
authorJulian Seward <jseward@acm.org>
Sat, 22 Oct 2011 09:55:37 +0000 (09:55 +0000)
committerJulian Seward <jseward@acm.org>
Sat, 22 Oct 2011 09:55:37 +0000 (09:55 +0000)
propagation of V bits through saturated narrowing operations.

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

memcheck/tests/amd64/Makefile.am
memcheck/tests/amd64/bug279698.c [new file with mode: 0644]
memcheck/tests/amd64/bug279698.stderr.exp [new file with mode: 0644]
memcheck/tests/amd64/bug279698.stdout.exp [new file with mode: 0644]
memcheck/tests/amd64/bug279698.vgtest [new file with mode: 0644]

index d276e992c466b4bfdd1e6bd14d2ada9bfbb45ae9..6adb07aa8976ab4379032830044c222be3b7ae14 100644 (file)
@@ -12,6 +12,7 @@ EXTRA_DIST = \
        bt_everything.stderr.exp bt_everything.stdout.exp \
                bt_everything.vgtest \
        bug132146.vgtest bug132146.stderr.exp bug132146.stdout.exp \
+       bug279698.vgtest bug279698.stderr.exp bug279698.stdout.exp \
        fxsave-amd64.vgtest fxsave-amd64.stdout.exp fxsave-amd64.stderr.exp \
        more_x87_fp.stderr.exp more_x87_fp.stdout.exp more_x87_fp.vgtest \
        sse_memory.stderr.exp sse_memory.stdout.exp sse_memory.vgtest \
@@ -21,6 +22,7 @@ EXTRA_DIST = \
 check_PROGRAMS = \
        bt_everything \
        bug132146 \
+       bug279698 \
        fxsave-amd64 \
        more_x87_fp \
        sse_memory \
diff --git a/memcheck/tests/amd64/bug279698.c b/memcheck/tests/amd64/bug279698.c
new file mode 100644 (file)
index 0000000..1274a5f
--- /dev/null
@@ -0,0 +1,27 @@
+/* A very trivial test for undefinedness propagation through
+   saturating narrowing.  Obviously need a much more thorough test.
+*/
+#include <stdio.h>
+#include <assert.h>
+#include "../../memcheck.h"
+int main()
+{
+    unsigned char data[32], vbits[32];
+    __asm__ __volatile__
+       ("movdqu     (%0), %%xmm0 \n"
+        "packuswb %%xmm0, %%xmm0 \n"
+        "movdqu   %%xmm0, 16(%0) \n"
+        ::"r"(data)
+        :"memory","xmm0"
+    );
+    unsigned int res =
+       VALGRIND_GET_VBITS( data, vbits, 32 );
+    assert(res == 1); /* 1 == success */
+    int i, j;
+    for(i=0; i<2; i++) {
+        for(j=0; j<16; j++)
+            printf("%02x ", vbits[i*16+j]);
+        printf("\n");
+    }
+    return 0;
+}
diff --git a/memcheck/tests/amd64/bug279698.stderr.exp b/memcheck/tests/amd64/bug279698.stderr.exp
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/memcheck/tests/amd64/bug279698.stdout.exp b/memcheck/tests/amd64/bug279698.stdout.exp
new file mode 100644 (file)
index 0000000..dd9cd10
--- /dev/null
@@ -0,0 +1,2 @@
+ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff 
+ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff 
diff --git a/memcheck/tests/amd64/bug279698.vgtest b/memcheck/tests/amd64/bug279698.vgtest
new file mode 100644 (file)
index 0000000..5fa6bb4
--- /dev/null
@@ -0,0 +1,2 @@
+prog: bug279698
+vgopts: -q