[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