Hi Dmitry, I compiled it with gcc 4.7.2 and the bench.php performed well. Where did you find the errors?
Albert On Wed, Mar 18, 2015 at 12:22 AM, Dmitry Stogov <dmi...@zend.com> wrote: > Please also tell your GCC version. > We had problems with 4.6.3 and 4.7.0, so we disabled global variables for > GCC prior 4.8.0. > > Thanks. Dmitry. > > On Wed, Mar 18, 2015 at 12:36 AM, Dmitry Stogov <dmi...@zend.com> wrote: > >> Hi Caio, >> >> Could you please run "make test" with and without the patch and compare >> the failed tests. >> The patch must not add new failures. >> >> Thanks. Dmitry. >> >> On Tue, Mar 17, 2015 at 10:15 PM, Caio Souza Oliveira < >> caio.olive...@eldorado.org.br> wrote: >> >>> Hello guys! >>> I’ve included the optimization proposed in [1] on ppc64le machines and I >>> could get an outstanding performance improvement of about 69% when running >>> bench.php (from 2.394 sec to 1.640 sec in average). I’ve tested this on >>> POWER 8 machines. My patch can be seen at [2] >>> >>> Thank you! >>> Caio Souza Oliveira >>> >>> [1] >>> https://github.com/php/php-src/commit/fb4b7069842491eb66272587422a1f61d41eb869 >>> [2] https://github.com/php/php-src/pull/1181 >>> >>> ---------- >>> From: Albert Casademont Filella [mailto:albertcasadem...@gmail.com] >>> Sent: terça-feira, 17 de março de 2015 13:23 >>> To: Gustavo Frederico Temple Pedrosa >>> Cc: Dmitry Stogov; Ard Biesheuvel; PHP Internals; Leonardo Bianconi; >>> Caio Souza Oliveira >>> Subject: Re: [PHP-DEV] RE: [PHP-CVS] com php-src: Enable GCC global >>> register variables if available: Zend/Zend.m4 Zend/zend_execute.c >>> >>> Hi Dmitry, >>> I can confirm a ~10-11% reduction in execution time of the bench.php >>> from last month build (x64) to today's commit (from 1.154 sec to 1.010). >>> Amazing job! >>> Albert >>> >>> On Tue, Mar 17, 2015 at 1:39 PM, Gustavo Frederico Temple Pedrosa < >>> gustavo.pedr...@eldorado.org.br> wrote: >>> Hi, Dmitry. >>> >>> Thank you for contacting us. >>> >>> Leonardo and Caio (in CC), they will verify. >>> >>> Thank you very much. Temple. >>> >>> >>> >>> >>> >>> From: Dmitry Stogov [mailto:dmi...@zend.com] >>> Sent: terça-feira, 17 de março de 2015 08:01 >>> To: Ard Biesheuvel; Gustavo Frederico Temple Pedrosa >>> Cc: PHP Internals >>> Subject: Fwd: [PHP-CVS] com php-src: Enable GCC global register >>> variables if available: Zend/Zend.m4 Zend/zend_execute.c >>> >>> Hi, >>> Please consider possibility of using the same optimization for ARM, PPC >>> and may be other platforms. >>> On x86(_84) it makes 2-7% speedup. >>> Only the similar changes in zend_execute.c and Zend.m4 are required to >>> enable it. >>> Thanks. Dmitry. >>> >>> ---------- Forwarded message ---------- >>> From: Dmitry Stogov <dmi...@php.net> >>> Date: Tue, Mar 17, 2015 at 1:51 PM >>> Subject: [PHP-CVS] com php-src: Enable GCC global register variables if >>> available: Zend/Zend.m4 Zend/zend_execute.c >>> To: php-...@lists.php.net >>> >>> >>> Commit: fb4b7069842491eb66272587422a1f61d41eb869 >>> Author: Dmitry Stogov <dmi...@zend.com> Tue, 17 Mar 2015 >>> 13:51:02 +0300 >>> Parents: 92bf4566ea65042b8f84cae7840298ed151a4f7a >>> Branches: master >>> >>> Link: >>> http://git.php.net/?p=php-src.git;a=commitdiff;h=fb4b7069842491eb66272587422a1f61d41eb869 >>> >>> Log: >>> Enable GCC global register variables if available >>> >>> Changed paths: >>> M Zend/Zend.m4 >>> M Zend/zend_execute.c >>> >>> >>> Diff: >>> diff --git a/Zend/Zend.m4 b/Zend/Zend.m4 >>> index 16f2d5f..e12b00d 100644 >>> --- a/Zend/Zend.m4 >>> +++ b/Zend/Zend.m4 >>> @@ -409,3 +409,48 @@ else >>> AC_MSG_RESULT(no) >>> fi >>> fi >>> + >>> +AC_ARG_ENABLE(gcc-global-regs, >>> +[ --disable-gcc-global-regs >>> + whether to enable GCC global register >>> variables],[ >>> + ZEND_GCC_GLOBAL_REGS=$enableval >>> +],[ >>> + ZEND_GCC_GLOBAL_REGS=yes >>> +]) >>> +AC_MSG_CHECKING(for global register variables support) >>> +if test "$ZEND_GCC_GLOBAL_REGS" != "no"; then >>> + AC_TRY_COMPILE([ >>> + ],[ >>> +#if defined(__GNUC__) && defined(i386) >>> +# define ZEND_VM_FP_GLOBAL_REG "%esi" >>> +# define ZEND_VM_IP_GLOBAL_REG "%edi" >>> +#elif defined(__GNUC__) && defined(__x86_64__) >>> +# define ZEND_VM_FP_GLOBAL_REG "%r14" >>> +# define ZEND_VM_IP_GLOBAL_REG "%r15" >>> +#else >>> +# error "global register variables are not supported" >>> +#endif >>> +typedef int (*opcode_handler_t)(void); >>> +register void *FP __asm__(ZEND_VM_FP_GLOBAL_REG); >>> +register const opcode_handler_t *IP __asm__(ZEND_VM_IP_GLOBAL_REG); >>> +int emu(const opcode_handler_t *ip, void *fp) { >>> + const opcode_handler_t *orig_ip = IP; >>> + void *orig_fp = FP; >>> + IP = ip; >>> + FP = fp; >>> + while ((*ip)()); >>> + FP = orig_fp; >>> + IP = orig_ip; >>> +} >>> + ], [ >>> + ZEND_GCC_GLOBAL_REGS=yes >>> + ], [ >>> + ZEND_GCC_GLOBAL_REGS=no >>> + ]) >>> +fi >>> +if test "$ZEND_GCC_GLOBAL_REGS" = "yes"; then >>> + AC_DEFINE([HAVE_GCC_GLOBAL_REGS], 1, [Define if the target system has >>> support for global register variables]) >>> +else >>> + HAVE_GCC_GLOBAL_REGS=no >>> +fi >>> +AC_MSG_RESULT(ZEND_GCC_GLOBAL_REGS) >>> diff --git a/Zend/zend_execute.c b/Zend/zend_execute.c >>> index b24218a..17e68dc 100644 >>> --- a/Zend/zend_execute.c >>> +++ b/Zend/zend_execute.c >>> @@ -2049,7 +2049,7 @@ static zend_always_inline void >>> zend_vm_stack_extend_call_frame(zend_execute_data >>> } >>> /* }}} */ >>> >>> -#if HAVE_GCC_GLOBAL_REGS >>> +#ifdef HAVE_GCC_GLOBAL_REGS >>> # if defined(__GNUC__) && defined(i386) >>> # define ZEND_VM_FP_GLOBAL_REG "%esi" >>> # define ZEND_VM_IP_GLOBAL_REG "%edi" >>> >>> >>> -- >>> PHP CVS Mailing List (http://www.php.net/) >>> To unsubscribe, visit: http://www.php.net/unsub.php >>> >>> >> >