[pypy-commit] pypy s390x-backend: stacklet switch removed one register move, rescuing f8-f15
plan_rich
pypy.commits at gmail.com
Mon Feb 15 06:26:50 EST 2016
Author: Richard Plangger <planrichi at gmail.com>
Branch: s390x-backend
Changeset: r82258:2d699125ebd7
Date: 2016-02-15 12:26 +0100
http://bitbucket.org/pypy/pypy/changeset/2d699125ebd7/
Log: stacklet switch removed one register move, rescuing f8-f15
diff --git a/rpython/translator/c/src/stacklet/switch_s390x_gcc.h b/rpython/translator/c/src/stacklet/switch_s390x_gcc.h
--- a/rpython/translator/c/src/stacklet/switch_s390x_gcc.h
+++ b/rpython/translator/c/src/stacklet/switch_s390x_gcc.h
@@ -10,6 +10,7 @@
/* The Stackless version by Kristjan Valur Jonsson,
ported to s390x by Richard Plangger */
+ "lay 15,-64(15)\n" /* additional stack space to store f8-f15 */
"stmg 6,15,48(15)\n"
"std 0,128(15)\n"
@@ -17,6 +18,15 @@
"std 4,144(15)\n"
"std 6,152(15)\n"
+ "std 8, 160(15)\n"
+ "std 9, 168(15)\n"
+ "std 10,176(15)\n"
+ "std 11,184(15)\n"
+ "std 12,192(15)\n"
+ "std 13,200(15)\n"
+ "std 14,208(15)\n"
+ "std 15,216(15)\n"
+
"lgr 10, %[restore_state]\n" /* save 'restore_state' for later */
"lgr 11, %[extra]\n" /* save 'extra' for later */
"lgr 14, %[save_state]\n" /* move 'save_state' into r14 for branching */
@@ -39,8 +49,7 @@
"lay 15, -160(15)\n" /* create temp stack space for callee to use */
- "lgr 14, 10\n" /* load restore_state */
- "basr 14, 14\n" /* call restore_state() */
+ "basr 14, 10\n" /* call restore_state() */
"lay 15, 160(15)\n" /* destroy temp stack space */
/* The stack's content is now restored. */
@@ -55,6 +64,15 @@
"ld 4,144(15)\n"
"ld 6,152(15)\n"
+ "ld 8, 160(15)\n"
+ "ld 9, 168(15)\n"
+ "ld 10,176(15)\n"
+ "ld 11,184(15)\n"
+ "ld 12,192(15)\n"
+ "ld 13,200(15)\n"
+ "ld 14,208(15)\n"
+ "ld 15,216(15)\n"
+
"lmg 6,15,48(15)\n"
: "=r"(result) /* output variable: expected to be r2 */
More information about the pypy-commit
mailing list