|
From: <sv...@va...> - 2005-10-03 02:23:25
|
Author: sewardj
Date: 2005-10-03 03:23:17 +0100 (Mon, 03 Oct 2005)
New Revision: 4848
Log:
Test misc sbb/adc insns.
Added:
trunk/none/tests/x86/sbbmisc.c
trunk/none/tests/x86/sbbmisc.stderr.exp
trunk/none/tests/x86/sbbmisc.stdout.exp
trunk/none/tests/x86/sbbmisc.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 2005-10-03 01:22:29 UTC (rev 4847)
+++ trunk/none/tests/x86/Makefile.am 2005-10-03 02:23:17 UTC (rev 4848)
@@ -19,6 +19,7 @@
$(addsuffix .vgtest,$(INSN_TESTS)) \
looper.stderr.exp looper.stdout.exp looper.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 \
sigcontext.stdout.exp sigcontext.stderr.exp sigcontext.vgtest \
smc1.stderr.exp smc1.stdout.exp smc1.vgtest \
@@ -28,7 +29,8 @@
badseg bt_everything bt_literal cmpxchg8b cpuid fpu_lazy_eflags \
fxtract \
getseg $(INSN_TESTS) \
- looper int pushpopseg seg_override sigcontext smc1 yield
+ looper int pushpopseg sbbmisc \
+ seg_override sigcontext smc1 yield
=20
AM_CFLAGS =3D $(WERROR) -Winline -Wall -Wshadow \
-g -I$(top_srcdir)/include \
Added: trunk/none/tests/x86/sbbmisc.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/sbbmisc.c 2005-10-03 01:22:29 UTC (rev 4847)
+++ trunk/none/tests/x86/sbbmisc.c 2005-10-03 02:23:17 UTC (rev 4848)
@@ -0,0 +1,181 @@
+
+#include <stdio.h>
+
+char in_b, out_b1, out_b2, in_b2;
+
+short in_w, out_w1, out_w2;
+
+int in_l, out_l1, out_l2;
+
+extern void sbb_ib_al ( void );
+asm("\n"
+"sbb_ib_al:\n"
+
+"\tmovb in_b, %al\n"
+"\tclc\n"
+"\tsbbb $5, %al\n"
+"\tmovb %al, out_b1\n"
+
+"\tmovb in_b, %al\n"
+"\tstc\n"
+"\tsbbb $5, %al\n"
+"\tmovb %al, out_b2\n"
+
+"\tret\n"
+);
+
+
+extern void sbb_iw_ax ( void );
+asm("\n"
+"sbb_iw_ax:\n"
+
+"\tmovw in_w, %ax\n"
+"\tclc\n"
+"\tsbbw $555, %ax\n"
+"\tmovw %ax, out_w1\n"
+
+"\tmovw in_w, %ax\n"
+"\tstc\n"
+"\tsbbw $555, %ax\n"
+"\tmovw %ax, out_w2\n"
+
+"\tret\n"
+);
+
+
+extern void sbb_il_eax ( void );
+asm("\n"
+"sbb_il_eax:\n"
+
+"\tmovl in_l, %eax\n"
+"\tclc\n"
+"\tsbbl $555666, %eax\n"
+"\tmovl %eax, out_l1\n"
+
+"\tmovl in_l, %eax\n"
+"\tstc\n"
+"\tsbbl $555666, %eax\n"
+"\tmovl %eax, out_l2\n"
+
+"\tret\n"
+);
+
+
+extern void sbb_eb_gb ( void );
+asm("\n"
+"sbb_eb_gb:\n"
+
+"\tmovb in_b, %al\n"
+"\tclc\n"
+"\tsbbb in_b2, %al\n"
+"\tmovb %al, out_b1\n"
+
+"\tmovb in_b, %al\n"
+"\tstc\n"
+"\tsbbb in_b2, %al\n"
+"\tmovb %al, out_b2\n"
+
+"\tret\n"
+);
+
+
+extern void sbb_eb_gb_2 ( void );
+asm("\n"
+"sbb_eb_gb_2:\n"
+"\tpushl %ecx\n"
+
+"\tmovb in_b, %cl\n"
+"\tmovb in_b2, %dh\n"
+"\tclc\n"
+"\tsbbb %dh,%cl\n"
+"\tmovb %cl, out_b1\n"
+
+"\tmovb in_b, %cl\n"
+"\tmovb in_b2, %dh\n"
+"\tstc\n"
+"\tsbbb %dh,%cl\n"
+"\tmovb %cl, out_b2\n"
+
+"\tpopl %ecx\n"
+"\tret\n"
+);
+
+
+extern void adc_eb_gb ( void );
+asm("\n"
+"adc_eb_gb:\n"
+
+"\tmovb in_b, %al\n"
+"\tclc\n"
+"\tadcb in_b2, %al\n"
+"\tmovb %al, out_b1\n"
+
+"\tmovb in_b, %al\n"
+"\tstc\n"
+"\tadcb in_b2, %al\n"
+"\tmovb %al, out_b2\n"
+
+"\tret\n"
+);
+
+
+extern void adc_eb_gb_2 ( void );
+asm("\n"
+"adc_eb_gb_2:\n"
+"\tpushl %ecx\n"
+
+"\tmovb in_b, %cl\n"
+"\tmovb in_b2, %dh\n"
+"\tclc\n"
+"\tadcb %dh,%cl\n"
+"\tmovb %cl, out_b1\n"
+
+"\tmovb in_b, %cl\n"
+"\tmovb in_b2, %dh\n"
+"\tstc\n"
+"\tadcb %dh,%cl\n"
+"\tmovb %cl, out_b2\n"
+
+"\tpopl %ecx\n"
+"\tret\n"
+);
+
+
+
+
+int main ( void )
+{
+ in_b =3D 99;
+ sbb_ib_al();
+ printf("r1 =3D %d %d\n", (int)out_b1, (int)out_b2);
+
+ in_w =3D 49999;
+ sbb_iw_ax();
+ printf("r2 =3D %d %d\n", (int)out_w1, (int)out_w2);
+
+ in_l =3D 0xF0000000;
+ sbb_il_eax();
+ printf("r3 =3D %d %d\n", (int)out_l1, (int)out_l2);
+
+ in_b =3D 99;
+ in_b2 =3D 88;
+ sbb_eb_gb();
+ printf("r4 =3D %d %d\n", (int)out_b1, (int)out_b2);
+
+ in_b =3D 66;
+ in_b2 =3D 77;
+ sbb_eb_gb_2();
+ printf("r5 =3D %d %d\n", (int)out_b1, (int)out_b2);
+
+ in_b =3D 99;
+ in_b2 =3D 88;
+ adc_eb_gb();
+ printf("r6 =3D %d %d\n", (int)out_b1, (int)out_b2);
+
+ in_b =3D 66;
+ in_b2 =3D 77;
+ adc_eb_gb_2();
+ printf("r7 =3D %d %d\n", (int)out_b1, (int)out_b2);
+
+ return 0;
+}
Added: trunk/none/tests/x86/sbbmisc.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/sbbmisc.stderr.exp 2005-10-03 01:22:29 UTC (rev =
4847)
+++ trunk/none/tests/x86/sbbmisc.stderr.exp 2005-10-03 02:23:17 UTC (rev =
4848)
@@ -0,0 +1,2 @@
+
+
Added: trunk/none/tests/x86/sbbmisc.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/sbbmisc.stdout.exp 2005-10-03 01:22:29 UTC (rev =
4847)
+++ trunk/none/tests/x86/sbbmisc.stdout.exp 2005-10-03 02:23:17 UTC (rev =
4848)
@@ -0,0 +1,7 @@
+r1 =3D 94 93
+r2 =3D -16092 -16093
+r3 =3D -268991122 -268991123
+r4 =3D 11 10
+r5 =3D -11 -12
+r6 =3D -69 -68
+r7 =3D -113 -112
Added: trunk/none/tests/x86/sbbmisc.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/sbbmisc.vgtest 2005-10-03 01:22:29 UTC (rev 4847=
)
+++ trunk/none/tests/x86/sbbmisc.vgtest 2005-10-03 02:23:17 UTC (rev 4848=
)
@@ -0,0 +1 @@
+prog: sbbmisc
|