From: Julian Seward Date: Sat, 22 Oct 2011 09:55:37 +0000 (+0000) Subject: Add an excessively minimal testcase, from #279698, pertaining to the X-Git-Tag: svn/VALGRIND_3_7_0~45 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b9b6742e1fa54da8a21d2f46bf439398527a5538;p=thirdparty%2Fvalgrind.git Add an excessively minimal testcase, from #279698, pertaining to the propagation of V bits through saturated narrowing operations. git-svn-id: svn://svn.valgrind.org/valgrind/trunk@12194 --- diff --git a/memcheck/tests/amd64/Makefile.am b/memcheck/tests/amd64/Makefile.am index d276e992c4..6adb07aa89 100644 --- a/memcheck/tests/amd64/Makefile.am +++ b/memcheck/tests/amd64/Makefile.am @@ -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 index 0000000000..1274a5f41d --- /dev/null +++ b/memcheck/tests/amd64/bug279698.c @@ -0,0 +1,27 @@ +/* A very trivial test for undefinedness propagation through + saturating narrowing. Obviously need a much more thorough test. +*/ +#include +#include +#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 index 0000000000..e69de29bb2 diff --git a/memcheck/tests/amd64/bug279698.stdout.exp b/memcheck/tests/amd64/bug279698.stdout.exp new file mode 100644 index 0000000000..dd9cd10537 --- /dev/null +++ b/memcheck/tests/amd64/bug279698.stdout.exp @@ -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 index 0000000000..5fa6bb4a03 --- /dev/null +++ b/memcheck/tests/amd64/bug279698.vgtest @@ -0,0 +1,2 @@ +prog: bug279698 +vgopts: -q