Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:85644 Return-Path: Mailing-List: contact internals-help@lists.php.net; run by ezmlm Delivered-To: mailing list internals@lists.php.net Received: (qmail 38906 invoked from network); 1 Apr 2015 18:19:38 -0000 Received: from unknown (HELO lists.php.net) (127.0.0.1) by localhost with SMTP; 1 Apr 2015 18:19:38 -0000 Authentication-Results: pb1.pair.com header.from=justin.grice.18@gmail.com; sender-id=pass Authentication-Results: pb1.pair.com smtp.mail=justin.grice.18@gmail.com; spf=pass; sender-id=pass Received-SPF: pass (pb1.pair.com: domain gmail.com designates 209.85.214.169 as permitted sender) X-PHP-List-Original-Sender: justin.grice.18@gmail.com X-Host-Fingerprint: 209.85.214.169 mail-ob0-f169.google.com Received: from [209.85.214.169] ([209.85.214.169:34765] helo=mail-ob0-f169.google.com) by pb1.pair.com (ecelerity 2.1.1.9-wez r(12769M)) with ESMTP id 66/A2-21906-9B63C155 for ; Wed, 01 Apr 2015 13:19:38 -0500 Received: by obbgh1 with SMTP id gh1so87043148obb.1 for ; Wed, 01 Apr 2015 11:19:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:date:message-id:subject:from:to:content-type; bh=kqaB8RK4KVdSe/fSxEN0DNG7qiTniyZDePlSjJ/FzjM=; b=CmxMVbAeF6OlswlZOKMMLXMIqSD64i6pgvoD4MOeq/zreoxNXdlfx9UMAPErdNQWpX jmbrIaKx53p8BccT9g4Svey4Hr8LnuXeltfU6FlVBn97aH6lBRQJtF7ydfKFG8zw4E9E qTLSd8uEwlQXwhlD+ZOBl0iDHVOBlTYa6qC7Z6Bub3ohNVB0OclCZKdyLtURTDzR42me NJ3sDqyvHzghiGcL9/cq78yMCz6vlVGDb+af/q9nVmHKKY5mb7yOo6tvVi40WJ73yV37 JwJSAjpPyImD37V92f9Hc7jsL7cKrE+xMduEB+NIoz3cLC+Xn4pOOMwc8kU28G04BAH1 ttlQ== MIME-Version: 1.0 X-Received: by 10.60.124.6 with SMTP id me6mr41662864oeb.46.1427912373818; Wed, 01 Apr 2015 11:19:33 -0700 (PDT) Received: by 10.202.213.87 with HTTP; Wed, 1 Apr 2015 11:19:33 -0700 (PDT) Date: Wed, 1 Apr 2015 14:19:33 -0400 Message-ID: To: internals@lists.php.net Content-Type: multipart/alternative; boundary=047d7b5d4a1ccfdbb40512adc180 Subject: zend_operators Optimization From: justin.grice.18@gmail.com (Justin Grice) --047d7b5d4a1ccfdbb40512adc180 Content-Type: text/plain; charset=UTF-8 I am looking into optimizing the fast_increment_function in Zend/zend-operators.h for better performance on aarch64 systems by adding some inline assembly that will reproduce what currently exists for x86_64 and i386 systems. My main issue at the moment is understanding what occurs in the x86_64 assembly section when the incremented register overflows. I understand that it moves a some constant values into the registers, but I don't understand the significance of these values or why we use them. __asm__( "incq (%0)\n\t" "jno 0f\n\t" "movl $0x0, (%0)\n\t" "movl $0x43e00000, 0x4(%0)\n\t" "movb %1, %c2(%0)\n" "0:" : : "r"(&op1->value), "n"(IS_DOUBLE), "n"(ZVAL_OFFSETOF_TYPE) : "cc"); Can anyone clarify the purpose of the 3 'mov' instructions? Thanks, Justin --047d7b5d4a1ccfdbb40512adc180--