|
From: <sv...@va...> - 2005-09-09 11:33:31
|
Author: sewardj
Date: 2005-09-09 12:33:25 +0100 (Fri, 09 Sep 2005)
New Revision: 4613
Log:
Add a test for {l,st}sw{s,i}. At the moment only works when the program =
is
compiled -O due to inline assembly problems, and so it fails in a standar=
d
'make regtest'.
Added:
trunk/none/tests/ppc32/lsw.c
trunk/none/tests/ppc32/lsw.stderr.exp
trunk/none/tests/ppc32/lsw.stdout.exp
trunk/none/tests/ppc32/lsw.vgtest
Modified:
trunk/none/tests/ppc32/Makefile.am
Modified: trunk/none/tests/ppc32/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/ppc32/Makefile.am 2005-09-09 11:28:02 UTC (rev 4612)
+++ trunk/none/tests/ppc32/Makefile.am 2005-09-09 11:33:25 UTC (rev 4613)
@@ -0,0 +1,13 @@
+
+noinst_SCRIPTS =3D filter_cpuid filter_stderr filter_int
+
+CLEANFILES =3D $(addsuffix .c,$(INSN_TESTS))
+
+EXTRA_DIST =3D $(noinst_SCRIPTS) \
+ lsw.stderr.exp lsw.stdout.exp lsw.vgtest
+
+check_PROGRAMS =3D \
+ lsw
+
+AM_CFLAGS =3D $(WERROR) -Winline -Wall -Wshadow -g -I$(top_srcdir)/inc=
lude
+AM_CXXFLAGS =3D $(AM_CFLAGS)
Added: trunk/none/tests/ppc32/lsw.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/ppc32/lsw.c 2005-09-09 11:28:02 UTC (rev 4612)
+++ trunk/none/tests/ppc32/lsw.c 2005-09-09 11:33:25 UTC (rev 4613)
@@ -0,0 +1,97 @@
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+static void announce ( char* str )
+{
+ printf("------ %s ------\n", str);
+}
+
+int main ( void )
+{
+ int i;
+ char* a1 =3D malloc(100);
+ char* a2 =3D malloc(100);
+ strcpy(a1,"here is a stringHERE IS A STRING");
+
+ announce("lswi n =3D=3D 8 (fe special cased)");
+ asm volatile("li 5,0\n\t"
+ "lswi 3,%0, 8\n\t"=20
+ "stw 3,0(%1)\n\t"
+ "stw 4,4(%1)\n\t"
+ "stw 5,8(%1)\n\t"
+ : : "r"(a1), "r"(a2) : "r3", "r4", "r5",=20
+ "cc", "memory" );
+ printf("%s\n", a2);
+ for (i =3D 0; i < 12; i++)
+ printf("%d =3D 0x%2x\n", i, a2[i]);
+ printf("\n");
+
+
+ announce("lswi n /=3D 8");
+ asm volatile("lswi 3,%0, 9\n\t"=20
+ "stw 3,0(%1)\n\t"
+ "stw 4,4(%1)\n\t"
+ "stw 5,8(%1)\n\t"
+ : : "r"(a1), "r"(a2) : "r3", "r4", "r5",=20
+ "cc", "memory" );
+ printf("%s\n", a2);
+ for (i =3D 0; i < 12; i++)
+ printf("%d =3D 0x%2x\n", i, a2[i]);
+ printf("\n");
+
+
+ announce("lswx");
+ free(a2);
+ a2 =3D malloc(100);
+ asm volatile("li 8, 11\n\t"
+ "mtxer 8\n\t"
+ "lswx 3,%0,%2\n\t"=20
+ "stw 3,0(%1)\n\t"
+ "stw 4,4(%1)\n\t"
+ "stw 5,8(%1)\n\t"
+ : : "r"(a1), "r"(a2), "r"(16) : "r3", "r4", "r5", "r8",=20
+ "cc", "memory" );
+ printf("%s\n", a2);
+ for (i =3D 0; i < 12; i++)
+ printf("%d =3D 0x%2x\n", i, a2[i]);
+ printf("\n");
+
+
+ announce("stswi n =3D=3D 8 (fe special cased)");
+ free(a2);
+ a2 =3D calloc(100,1);
+ asm volatile("lswi 3,%0, 19\n\t"
+ "stswi 3,%1, 8\n"
+ : : "r"(a1), "r"(a2) : "r3","r4","r5","r6","r7",
+ "cc", "memory" );
+ printf("%s\n", a2);
+ printf("\n");
+
+
+ announce("stswi n /=3D 8");
+ free(a2);
+ a2 =3D calloc(100,1);
+ asm volatile("lswi 3,%0, 19\n\t"
+ "stswi 3,%1, 17\n"
+ : : "r"(a1), "r"(a2) : "r3","r4","r5","r6","r7",
+ "cc", "memory" );
+ printf("%s\n", a2);
+ printf("\n");
+
+
+ announce("stswx");
+ free(a2);
+ a2 =3D calloc(100,1);
+ asm volatile("li 8, 11\n\t"
+ "mtxer 8\n\t"
+ "lswx 3,%0,%2\n\t"=20
+ "stswx 3,%1,%2\n\t"=20
+ : : "r"(a1), "r"(a2), "r"(16) : "r3", "r4", "r5", "r8",=20
+ "cc", "memory" );
+ printf("%s\n", a2+16);
+ printf("\n");
+
+ return 0;
+}
Added: trunk/none/tests/ppc32/lsw.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/ppc32/lsw.stderr.exp 2005-09-09 11:28:02 UTC (rev 46=
12)
+++ trunk/none/tests/ppc32/lsw.stderr.exp 2005-09-09 11:33:25 UTC (rev 46=
13)
@@ -0,0 +1,2 @@
+
+
Added: trunk/none/tests/ppc32/lsw.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/ppc32/lsw.stdout.exp 2005-09-09 11:28:02 UTC (rev 46=
12)
+++ trunk/none/tests/ppc32/lsw.stdout.exp 2005-09-09 11:33:25 UTC (rev 46=
13)
@@ -0,0 +1,54 @@
+------ lswi n =3D=3D 8 (fe special cased) ------
+here is=20
+0 =3D 0x68
+1 =3D 0x65
+2 =3D 0x72
+3 =3D 0x65
+4 =3D 0x20
+5 =3D 0x69
+6 =3D 0x73
+7 =3D 0x20
+8 =3D 0x 0
+9 =3D 0x 0
+10 =3D 0x 0
+11 =3D 0x 0
+
+------ lswi n /=3D 8 ------
+here is a
+0 =3D 0x68
+1 =3D 0x65
+2 =3D 0x72
+3 =3D 0x65
+4 =3D 0x20
+5 =3D 0x69
+6 =3D 0x73
+7 =3D 0x20
+8 =3D 0x61
+9 =3D 0x 0
+10 =3D 0x 0
+11 =3D 0x 0
+
+------ lswx ------
+HERE IS A S
+0 =3D 0x48
+1 =3D 0x45
+2 =3D 0x52
+3 =3D 0x45
+4 =3D 0x20
+5 =3D 0x49
+6 =3D 0x53
+7 =3D 0x20
+8 =3D 0x41
+9 =3D 0x20
+10 =3D 0x53
+11 =3D 0x 0
+
+------ stswi n =3D=3D 8 (fe special cased) ------
+here is=20
+
+------ stswi n /=3D 8 ------
+here is a stringH
+
+------ stswx ------
+HERE IS A S
+
Added: trunk/none/tests/ppc32/lsw.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/ppc32/lsw.vgtest 2005-09-09 11:28:02 UTC (rev 4612)
+++ trunk/none/tests/ppc32/lsw.vgtest 2005-09-09 11:33:25 UTC (rev 4613)
@@ -0,0 +1 @@
+prog: lsw
|