|
From: <sv...@va...> - 2006-11-16 11:01:50
|
Author: sewardj
Date: 2006-11-16 11:01:48 +0000 (Thu, 16 Nov 2006)
New Revision: 6355
Log:
A test for JECXZ and JCXZ.
Added:
trunk/none/tests/x86/jcxz.c
trunk/none/tests/x86/jcxz.stderr.exp
trunk/none/tests/x86/jcxz.stdout.exp
trunk/none/tests/x86/jcxz.vgtest
Modified:
trunk/none/tests/x86/Makefile.am
Modified: trunk/none/tests/x86/Makefile.am
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/none/tests/x86/Makefile.am 2006-11-14 18:36:02 UTC (rev 6354)
+++ trunk/none/tests/x86/Makefile.am 2006-11-16 11:01:48 UTC (rev 6355)
@@ -24,6 +24,7 @@
$(addsuffix .stderr.exp,$(INSN_TESTS)) \
$(addsuffix .stdout.exp,$(INSN_TESTS)) \
$(addsuffix .vgtest,$(INSN_TESTS)) \
+ jcxz.stdout.exp jcxz.stderr.exp jcxz.vgtest \
lahf.stdout.exp lahf.stderr.exp lahf.vgtest \
looper.stderr.exp looper.stdout.exp looper.vgtest \
movx.stderr.exp movx.stdout.exp movx.vgtest \
@@ -42,6 +43,7 @@
cmpxchg8b cpuid \
faultstatus fcmovnu fpu_lazy_eflags fxtract \
getseg incdec_alt $(INSN_TESTS) \
+ jcxz \
lahf looper movx int pushpopseg sbbmisc \
seg_override sigcontext smc1 yield
=20
Added: trunk/none/tests/x86/jcxz.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/none/tests/x86/jcxz.c (rev 0)
+++ trunk/none/tests/x86/jcxz.c 2006-11-16 11:01:48 UTC (rev 6355)
@@ -0,0 +1,54 @@
+
+#include <stdio.h>
+
+typedef unsigned int UInt;
+
+UInt test_jcxz ( UInt arg )
+{
+ UInt block[2];
+ block[0] =3D arg;
+ block[1] =3D 0xdeadbeef;
+ __asm__ __volatile__(
+ "movl %0,%%ecx\n\t"
+ "movl $0,%%eax\n"
+ ".Lxyzzy1:\n\t"
+ "jcxz .Lfoobar1\n\t"
+ "addl $1, %%eax\n\t"
+ "subl $1, %%ecx\n\t"
+ "jmp .Lxyzzy1\n"
+ ".Lfoobar1:\n\t"
+ "movl %%eax, %1"
+ : /*out*/ : /*in*/ "m"(block[0]),
+ "m"(block[1]) : /*trash*/ "eax","ecx","cc","mem=
ory"
+ );
+ return block[1];
+}
+
+UInt test_jecxz ( UInt arg )
+{
+ UInt block[2];
+ block[0] =3D arg;
+ block[1] =3D 0xdeadbeef;
+ __asm__ __volatile__(
+ "movl %0,%%ecx\n\t"
+ "movl $0,%%eax\n"
+ ".Lxyzzy2:\n\t"
+ "jecxz .Lfoobar2\n\t"
+ "addl $1, %%eax\n\t"
+ "subl $1, %%ecx\n\t"
+ "jmp .Lxyzzy2\n"
+ ".Lfoobar2:\n\t"
+ "movl %%eax, %1"
+ : /*out*/ : /*in*/ "m"(block[0]),
+ "m"(block[1]) : /*trash*/ "eax","ecx","cc","mem=
ory"
+ );
+ return block[1];
+}
+
+int main ( void )
+{
+ UInt arg =3D 0x01028374;
+ printf("test_jcxz(0x%x) =3D 0x%x\n", arg, test_jcxz(arg));
+ printf("test_jecxz(0x%x) =3D 0x%x\n", arg, test_jecxz(arg));
+ return 0;
+}
Added: trunk/none/tests/x86/jcxz.stderr.exp
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
Added: trunk/none/tests/x86/jcxz.stdout.exp
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/none/tests/x86/jcxz.stdout.exp (rev 0)
+++ trunk/none/tests/x86/jcxz.stdout.exp 2006-11-16 11:01:48 UTC (rev 635=
5)
@@ -0,0 +1,2 @@
+test_jcxz(0x1028374) =3D 0x8374
+test_jecxz(0x1028374) =3D 0x1028374
Added: trunk/none/tests/x86/jcxz.vgtest
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/none/tests/x86/jcxz.vgtest (rev 0)
+++ trunk/none/tests/x86/jcxz.vgtest 2006-11-16 11:01:48 UTC (rev 6355)
@@ -0,0 +1,2 @@
+prog: jcxz
+vgopts: -q
|