|
From: <sv...@va...> - 2006-05-03 18:09:50
|
Author: sewardj
Date: 2006-05-03 19:09:41 +0100 (Wed, 03 May 2006)
New Revision: 5879
Log:
Tests for the mov{z,s}{bw,bl,wl} instructions.
Added:
trunk/none/tests/x86/movx.c
trunk/none/tests/x86/movx.stderr.exp
trunk/none/tests/x86/movx.stdout.exp
trunk/none/tests/x86/movx.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-05-03 15:12:09 UTC (rev 5878)
+++ trunk/none/tests/x86/Makefile.am 2006-05-03 18:09:41 UTC (rev 5879)
@@ -22,6 +22,7 @@
$(addsuffix .vgtest,$(INSN_TESTS)) \
lahf.stdout.exp lahf.stderr.exp lahf.vgtest \
looper.stderr.exp looper.stdout.exp looper.vgtest \
+ movx.stderr.exp movx.stdout.exp movx.vgtest \
pushpopseg.stderr.exp pushpopseg.stdout.exp pushpopseg.vgtest \
sbbmisc.stderr.exp sbbmisc.stdout.exp sbbmisc.vgtest \
seg_override.stderr.exp seg_override.stdout.exp seg_override.vgtest \
@@ -33,7 +34,7 @@
badseg bt_everything bt_literal cmpxchg8b cpuid \
faultstatus fcmovnu fpu_lazy_eflags fxtract \
getseg incdec_alt $(INSN_TESTS) \
- lahf looper int pushpopseg sbbmisc \
+ lahf looper movx int pushpopseg sbbmisc \
seg_override sigcontext smc1 yield
=20
AM_CFLAGS =3D $(WERROR) -Winline -Wall -Wshadow \
Added: trunk/none/tests/x86/movx.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/movx.c (rev 0)
+++ trunk/none/tests/x86/movx.c 2006-05-03 18:09:41 UTC (rev 5879)
@@ -0,0 +1,177 @@
+
+#include <stdio.h>
+
+static int movzbw_1 ( void )
+{
+ int res;
+ __asm__ __volatile__(
+ "movl $0x12345678, %%eax\n\t"
+ "movb $0x22, %%al\n\t"
+ "movzbw %%al,%%ax\n\t"
+ "mov %%eax, %0"
+ : "=3Dr"(res) : : "eax"
+ );
+ return res;
+}
+
+static int movzbw_2 ( void )
+{
+ int res;
+ __asm__ __volatile__(
+ "movl $0x12345678, %%eax\n\t"
+ "movb $0x99, %%al\n\t"
+ "movzbw %%al,%%ax\n\t"
+ "mov %%eax, %0"
+ : "=3Dr"(res) : : "eax"
+ );
+ return res;
+}
+
+static int movzbl_1 ( void )
+{
+ int res;
+ __asm__ __volatile__(
+ "movl $0x12345678, %%eax\n\t"
+ "movb $0x22, %%al\n\t"
+ "movzbl %%al,%%eax\n\t"
+ "mov %%eax, %0"
+ : "=3Dr"(res) : : "eax"
+ );
+ return res;
+}
+
+static int movzbl_2 ( void )
+{
+ int res;
+ __asm__ __volatile__(
+ "movl $0x12345678, %%eax\n\t"
+ "movb $0x99, %%al\n\t"
+ "movzbl %%al,%%eax\n\t"
+ "mov %%eax, %0"
+ : "=3Dr"(res) : : "eax"
+ );
+ return res;
+}
+
+static int movzwl_1 ( void )
+{
+ int res;
+ __asm__ __volatile__(
+ "movl $0x12345678, %%eax\n\t"
+ "movw $0x2222, %%ax\n\t"
+ "movzwl %%ax,%%eax\n\t"
+ "mov %%eax, %0"
+ : "=3Dr"(res) : : "eax"
+ );
+ return res;
+}
+
+static int movzwl_2 ( void )
+{
+ int res;
+ __asm__ __volatile__(
+ "movl $0x12345678, %%eax\n\t"
+ "movw $0x9999, %%ax\n\t"
+ "movzwl %%ax,%%eax\n\t"
+ "mov %%eax, %0"
+ : "=3Dr"(res) : : "eax"
+ );
+ return res;
+}
+
+static int movsbw_1 ( void )
+{
+ int res;
+ __asm__ __volatile__(
+ "movl $0x12345678, %%eax\n\t"
+ "movb $0x22, %%al\n\t"
+ "movsbw %%al,%%ax\n\t"
+ "mov %%eax, %0"
+ : "=3Dr"(res) : : "eax"
+ );
+ return res;
+}
+
+static int movsbw_2 ( void )
+{
+ int res;
+ __asm__ __volatile__(
+ "movl $0x12345678, %%eax\n\t"
+ "movb $0x99, %%al\n\t"
+ "movsbw %%al,%%ax\n\t"
+ "mov %%eax, %0"
+ : "=3Dr"(res) : : "eax"
+ );
+ return res;
+}
+
+static int movsbl_1 ( void )
+{
+ int res;
+ __asm__ __volatile__(
+ "movl $0x12345678, %%eax\n\t"
+ "movb $0x22, %%al\n\t"
+ "movsbl %%al,%%eax\n\t"
+ "mov %%eax, %0"
+ : "=3Dr"(res) : : "eax"
+ );
+ return res;
+}
+
+static int movsbl_2 ( void )
+{
+ int res;
+ __asm__ __volatile__(
+ "movl $0x12345678, %%eax\n\t"
+ "movb $0x99, %%al\n\t"
+ "movsbl %%al,%%eax\n\t"
+ "mov %%eax, %0"
+ : "=3Dr"(res) : : "eax"
+ );
+ return res;
+}
+
+static int movswl_1 ( void )
+{
+ int res;
+ __asm__ __volatile__(
+ "movl $0x12345678, %%eax\n\t"
+ "movw $0x2222, %%ax\n\t"
+ "movswl %%ax,%%eax\n\t"
+ "mov %%eax, %0"
+ : "=3Dr"(res) : : "eax"
+ );
+ return res;
+}
+
+static int movswl_2 ( void )
+{
+ int res;
+ __asm__ __volatile__(
+ "movl $0x12345678, %%eax\n\t"
+ "movw $0x9999, %%ax\n\t"
+ "movswl %%ax,%%eax\n\t"
+ "mov %%eax, %0"
+ : "=3Dr"(res) : : "eax"
+ );
+ return res;
+}
+
+
+
+int main ( void )
+{
+ printf("%8s 0x%08x\n", "movzbw_1", movzbw_1());
+ printf("%8s 0x%08x\n", "movzbw_2", movzbw_2());
+ printf("%8s 0x%08x\n", "movzbl_1", movzbl_1());
+ printf("%8s 0x%08x\n", "movzbl_2", movzbl_2());
+ printf("%8s 0x%08x\n", "movzwl_1", movzwl_1());
+ printf("%8s 0x%08x\n", "movzwl_2", movzwl_2());
+ printf("%8s 0x%08x\n", "movsbw_1", movsbw_1());
+ printf("%8s 0x%08x\n", "movsbw_2", movsbw_2());
+ printf("%8s 0x%08x\n", "movsbl_1", movsbl_1());
+ printf("%8s 0x%08x\n", "movsbl_2", movsbl_2());
+ printf("%8s 0x%08x\n", "movswl_1", movswl_1());
+ printf("%8s 0x%08x\n", "movswl_2", movswl_2());
+ return 0;
+}
Added: trunk/none/tests/x86/movx.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
--- trunk/none/tests/x86/movx.stderr.exp (rev 0)
+++ trunk/none/tests/x86/movx.stderr.exp 2006-05-03 18:09:41 UTC (rev 587=
9)
@@ -0,0 +1,2 @@
+
+
Added: trunk/none/tests/x86/movx.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/movx.stdout.exp (rev 0)
+++ trunk/none/tests/x86/movx.stdout.exp 2006-05-03 18:09:41 UTC (rev 587=
9)
@@ -0,0 +1,12 @@
+movzbw_1 0x12340022
+movzbw_2 0x12340099
+movzbl_1 0x00000022
+movzbl_2 0x00000099
+movzwl_1 0x00002222
+movzwl_2 0x00009999
+movsbw_1 0x12340022
+movsbw_2 0x1234ff99
+movsbl_1 0x00000022
+movsbl_2 0xffffff99
+movswl_1 0x00002222
+movswl_2 0xffff9999
Added: trunk/none/tests/x86/movx.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/movx.vgtest (rev 0)
+++ trunk/none/tests/x86/movx.vgtest 2006-05-03 18:09:41 UTC (rev 5879)
@@ -0,0 +1 @@
+prog: movx
|