64-bit regtest for #132813 (Assertion at priv/guest-x86/toIR.c:652 fails)

git-svn-id: svn://svn.valgrind.org/valgrind/trunk@6035
This commit is contained in:
Julian Seward 2006-08-28 18:53:25 +00:00
parent 3deb872d72
commit 4fe694b232
5 changed files with 184 additions and 1 deletions

View File

@ -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

View File

@ -0,0 +1,170 @@
#include <stdio.h>
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;
}

View File

@ -0,0 +1,2 @@

View File

@ -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

View File

@ -0,0 +1 @@
prog: bug132813-amd64