From: Julian Seward Date: Mon, 28 Aug 2006 18:53:25 +0000 (+0000) Subject: 64-bit regtest for #132813 (Assertion at priv/guest-x86/toIR.c:652 fails) X-Git-Tag: svn/VALGRIND_3_3_0~693 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=4fe694b2325d5f4907b3d9fa289aadc162f85bdb;p=thirdparty%2Fvalgrind.git 64-bit regtest for #132813 (Assertion at priv/guest-x86/toIR.c:652 fails) git-svn-id: svn://svn.valgrind.org/valgrind/trunk@6035 --- diff --git a/none/tests/amd64/Makefile.am b/none/tests/amd64/Makefile.am index 8cd9eaad39..797a89b427 100644 --- a/none/tests/amd64/Makefile.am +++ b/none/tests/amd64/Makefile.am @@ -6,6 +6,8 @@ INSN_TESTS = insn_basic insn_mmx insn_sse insn_sse2 insn_sse3 insn_fpu EXTRA_DIST = $(noinst_SCRIPTS) \ bug127521-64.vgtest bug127521-64.stdout.exp bug127521-64.stderr.exp \ + bug132813-amd64.vgtest bug132813-amd64.stdout.exp \ + bug132813-amd64.stderr.exp \ clc.vgtest clc.stdout.exp clc.stderr.exp \ faultstatus.disabled faultstatus.stderr.exp \ fcmovnu.vgtest fcmovnu.stderr.exp fcmovnu.stdout.exp \ @@ -22,7 +24,7 @@ EXTRA_DIST = $(noinst_SCRIPTS) \ check_PROGRAMS = \ - bug127521-64 \ + bug127521-64 bug132813-amd64 \ clc \ faultstatus fcmovnu fxtract $(INSN_TESTS) looper jrcxz smc1 shrld \ nibz_bennee_mmap diff --git a/none/tests/amd64/bug132813-amd64.c b/none/tests/amd64/bug132813-amd64.c new file mode 100644 index 0000000000..99bd3cb681 --- /dev/null +++ b/none/tests/amd64/bug132813-amd64.c @@ -0,0 +1,170 @@ + +#include + +void do_pushb_pos ( void ) +{ + unsigned long long int block[3]; + __asm__ __volatile__ ( + "movq %0, %%rdx\n\t" + "pushq $0x55555555\n\t" + "movq %%rsp, 0(%%rdx)\n\t" + ".byte 0x6A,0x22\n\t" + "movq %%rsp, 8(%%rdx)\n\t" + "popq %%rax\n\t" + "movq %%rax,16(%%rdx)\n\t" + "movq 0(%%rdx),%%rsp\n\t" + "addq $8, %%rsp" + : : "r"(&block) : "rax","rdx","cc","memory" + ); + printf(" pushb_pos: delta %lld, top64 0x%016llx\n", + block[0] - block[1], block[2]); +} + +void do_pushb_neg ( void ) +{ + unsigned long long int block[3]; + __asm__ __volatile__ ( + "movq %0, %%rdx\n\t" + "pushq $0x55555555\n\t" + "movq %%rsp, 0(%%rdx)\n\t" + ".byte 0x6A,0xEE\n\t" + "movq %%rsp, 8(%%rdx)\n\t" + "popq %%rax\n\t" + "movq %%rax,16(%%rdx)\n\t" + "movq 0(%%rdx),%%rsp\n\t" + "addq $8, %%rsp" + : : "r"(&block) : "rax","rdx","cc","memory" + ); + printf(" pushb_neg: delta %lld, top64 0x%016llx\n", + block[0] - block[1], block[2]); +} + +void do_pushw_pos ( void ) +{ + unsigned long long int block[3]; + __asm__ __volatile__ ( + "movq %0, %%rdx\n\t" + "pushq $0x55555555\n\t" + "movq %%rsp, 0(%%rdx)\n\t" + "pushw $0x3344\n\t" + "movq %%rsp, 8(%%rdx)\n\t" + "popq %%rax\n\t" + "movq %%rax,16(%%rdx)\n\t" + "movq 0(%%rdx),%%rsp\n\t" + "addq $8, %%rsp" + : : "r"(&block) : "rax","rdx","cc","memory" + ); + printf(" pushw_neg: delta %lld, top64 0x%016llx\n", + block[0] - block[1], block[2]); +} + +void do_pushw_neg ( void ) +{ + unsigned long long int block[3]; + __asm__ __volatile__ ( + "movq %0, %%rdx\n\t" + "pushq $0x55555555\n\t" + "movq %%rsp, 0(%%rdx)\n\t" + "pushw $0xDDCC\n\t" + "movq %%rsp, 8(%%rdx)\n\t" + "popq %%rax\n\t" + "movq %%rax,16(%%rdx)\n\t" + "movq 0(%%rdx),%%rsp\n\t" + "addq $8, %%rsp" + : : "r"(&block) : "rax","rdx","cc","memory" + ); + printf(" pushw_pos: delta %lld, top64 0x%016llx\n", + block[0] - block[1], block[2]); +} + +void do_pushq_pos ( void ) +{ + unsigned long long int block[3]; + __asm__ __volatile__ ( + "movq %0, %%rdx\n\t" + "pushq $0x55555555\n\t" + "movq %%rsp, 0(%%rdx)\n\t" + "pushq $0x67675656\n\t" + "movq %%rsp, 8(%%rdx)\n\t" + "popq %%rax\n\t" + "movq %%rax,16(%%rdx)\n\t" + "movq 0(%%rdx),%%rsp\n\t" + "addq $8, %%rsp" + : : "r"(&block) : "rax","rdx","cc","memory" + ); + printf(" pushq_pos: delta %lld, top64 0x%016llx\n", + block[0] - block[1], block[2]); +} + +void do_pushq_neg ( void ) +{ + unsigned long long int block[3]; + __asm__ __volatile__ ( + "movq %0, %%rdx\n\t" + "pushq $0x55555555\n\t" + "movq %%rsp, 0(%%rdx)\n\t" + "pushq $0x78988787\n\t" + "movq %%rsp, 8(%%rdx)\n\t" + "popq %%rax\n\t" + "movq %%rax,16(%%rdx)\n\t" + "movq 0(%%rdx),%%rsp\n\t" + "addq $8, %%rsp" + : : "r"(&block) : "rax","rdx","cc","memory" + ); + printf(" pushq_neg: delta %lld, top64 0x%016llx\n", + block[0] - block[1], block[2]); +} + + +void do_66pushb_pos ( void ) +{ + unsigned long long int block[3]; + __asm__ __volatile__ ( + "movq %0, %%rdx\n\t" + "pushq $0x55555555\n\t" + "movq %%rsp, 0(%%rdx)\n\t" + ".byte 0x66,0x6A,0x22\n\t" + "movq %%rsp, 8(%%rdx)\n\t" + "popq %%rax\n\t" + "movq %%rax,16(%%rdx)\n\t" + "movq 0(%%rdx),%%rsp\n\t" + "addq $8, %%rsp" + : : "r"(&block) : "rax","rdx","cc","memory" + ); + printf("66pushb_pos: delta %lld, top64 0x%016llx\n", + block[0] - block[1], block[2]); +} + +void do_66pushb_neg ( void ) +{ + unsigned long long int block[3]; + __asm__ __volatile__ ( + "movq %0, %%rdx\n\t" + "pushq $0x55555555\n\t" + "movq %%rsp, 0(%%rdx)\n\t" + ".byte 0x66,0x6A,0xEE\n\t" + "movq %%rsp, 8(%%rdx)\n\t" + "popq %%rax\n\t" + "movq %%rax,16(%%rdx)\n\t" + "movq 0(%%rdx),%%rsp\n\t" + "addq $8, %%rsp" + : : "r"(&block) : "rax","rdx","cc","memory" + ); + printf("66pushb_neg: delta %lld, top64 0x%016llx\n", + block[0] - block[1], block[2]); +} + + +int main ( void ) +{ + do_pushb_pos(); + do_pushb_neg(); + do_pushw_pos(); + do_pushw_neg(); + do_pushq_pos(); + do_pushq_neg(); + + do_66pushb_pos(); + do_66pushb_neg(); + return 0; +} diff --git a/none/tests/amd64/bug132813-amd64.stderr.exp b/none/tests/amd64/bug132813-amd64.stderr.exp new file mode 100644 index 0000000000..139597f9cb --- /dev/null +++ b/none/tests/amd64/bug132813-amd64.stderr.exp @@ -0,0 +1,2 @@ + + diff --git a/none/tests/amd64/bug132813-amd64.stdout.exp b/none/tests/amd64/bug132813-amd64.stdout.exp new file mode 100644 index 0000000000..91538ca45a --- /dev/null +++ b/none/tests/amd64/bug132813-amd64.stdout.exp @@ -0,0 +1,8 @@ + pushb_pos: delta 8, top64 0x0000000000000022 + pushb_neg: delta 8, top64 0xffffffffffffffee + pushw_neg: delta 2, top64 0x0000555555553344 + pushw_pos: delta 2, top64 0x000055555555ddcc + pushq_pos: delta 8, top64 0x0000000067675656 + pushq_neg: delta 8, top64 0x0000000078988787 +66pushb_pos: delta 2, top64 0x0000555555550022 +66pushb_neg: delta 2, top64 0x000055555555ffee diff --git a/none/tests/amd64/bug132813-amd64.vgtest b/none/tests/amd64/bug132813-amd64.vgtest new file mode 100644 index 0000000000..896026582f --- /dev/null +++ b/none/tests/amd64/bug132813-amd64.vgtest @@ -0,0 +1 @@ +prog: bug132813-amd64