[{"id":1765553,"web_url":"http://patchwork.ozlabs.org/comment/1765553/","msgid":"<CAKmqyKMdfNLtVTnDGVytJKaaoWMkxt+G3+U6Ph5Vm8U2ZGzRaA@mail.gmail.com>","list_archive_url":null,"date":"2017-09-08T17:46:57","subject":"Re: [Qemu-devel] [PATCH] target/arm: Avoid an extra temporary for\n\tstore_exclusive","submitter":{"id":64571,"url":"http://patchwork.ozlabs.org/api/people/64571/","name":"Alistair Francis","email":"alistair23@gmail.com"},"content":"On Fri, Sep 8, 2017 at 9:38 AM, Richard Henderson\n<richard.henderson@linaro.org> wrote:\n> Instead of copying addr to a local temp, reuse the value (which we\n> have just compared as equal) already saved in cpu_exclusive_addr.\n>\n> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>\n\nReviewed-by: Alistair Francis <alistair.francis@xilinx.com>\n\nThanks,\nAlistair\n\n> ---\n>  target/arm/translate-a64.c | 26 +++++++++-----------------\n>  1 file changed, 9 insertions(+), 17 deletions(-)\n>\n> diff --git a/target/arm/translate-a64.c b/target/arm/translate-a64.c\n> index 9017e30510..114e21cc58 100644\n> --- a/target/arm/translate-a64.c\n> +++ b/target/arm/translate-a64.c\n> @@ -1894,7 +1894,7 @@ static void gen_load_exclusive(DisasContext *s, int rt, int rt2,\n>  }\n>\n>  static void gen_store_exclusive(DisasContext *s, int rd, int rt, int rt2,\n> -                                TCGv_i64 inaddr, int size, int is_pair)\n> +                                TCGv_i64 addr, int size, int is_pair)\n>  {\n>      /* if (env->exclusive_addr == addr && env->exclusive_val == [addr]\n>       *     && (!is_pair || env->exclusive_high == [addr + datasize])) {\n> @@ -1910,13 +1910,8 @@ static void gen_store_exclusive(DisasContext *s, int rd, int rt, int rt2,\n>       */\n>      TCGLabel *fail_label = gen_new_label();\n>      TCGLabel *done_label = gen_new_label();\n> -    TCGv_i64 addr = tcg_temp_local_new_i64();\n>      TCGv_i64 tmp;\n>\n> -    /* Copy input into a local temp so it is not trashed when the\n> -     * basic block ends at the branch insn.\n> -     */\n> -    tcg_gen_mov_i64(addr, inaddr);\n>      tcg_gen_brcond_i64(TCG_COND_NE, addr, cpu_exclusive_addr, fail_label);\n>\n>      tmp = tcg_temp_new_i64();\n> @@ -1927,27 +1922,24 @@ static void gen_store_exclusive(DisasContext *s, int rd, int rt, int rt2,\n>              } else {\n>                  tcg_gen_concat32_i64(tmp, cpu_reg(s, rt2), cpu_reg(s, rt));\n>              }\n> -            tcg_gen_atomic_cmpxchg_i64(tmp, addr, cpu_exclusive_val, tmp,\n> +            tcg_gen_atomic_cmpxchg_i64(tmp, cpu_exclusive_addr,\n> +                                       cpu_exclusive_val, tmp,\n>                                         get_mem_index(s),\n>                                         MO_64 | MO_ALIGN | s->be_data);\n>              tcg_gen_setcond_i64(TCG_COND_NE, tmp, tmp, cpu_exclusive_val);\n>          } else if (s->be_data == MO_LE) {\n> -            gen_helper_paired_cmpxchg64_le(tmp, cpu_env, addr, cpu_reg(s, rt),\n> -                                           cpu_reg(s, rt2));\n> +            gen_helper_paired_cmpxchg64_le(tmp, cpu_env, cpu_exclusive_addr,\n> +                                           cpu_reg(s, rt), cpu_reg(s, rt2));\n>          } else {\n> -            gen_helper_paired_cmpxchg64_be(tmp, cpu_env, addr, cpu_reg(s, rt),\n> -                                           cpu_reg(s, rt2));\n> +            gen_helper_paired_cmpxchg64_be(tmp, cpu_env, cpu_exclusive_addr,\n> +                                           cpu_reg(s, rt), cpu_reg(s, rt2));\n>          }\n>      } else {\n> -        TCGv_i64 val = cpu_reg(s, rt);\n> -        tcg_gen_atomic_cmpxchg_i64(tmp, addr, cpu_exclusive_val, val,\n> -                                   get_mem_index(s),\n> +        tcg_gen_atomic_cmpxchg_i64(tmp, cpu_exclusive_addr, cpu_exclusive_val,\n> +                                   cpu_reg(s, rt), get_mem_index(s),\n>                                     size | MO_ALIGN | s->be_data);\n>          tcg_gen_setcond_i64(TCG_COND_NE, tmp, tmp, cpu_exclusive_val);\n>      }\n> -\n> -    tcg_temp_free_i64(addr);\n> -\n>      tcg_gen_mov_i64(cpu_reg(s, rd), tmp);\n>      tcg_temp_free_i64(tmp);\n>      tcg_gen_br(done_label);\n> --\n> 2.13.5\n>\n>","headers":{"Return-Path":"<qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>","X-Original-To":"incoming@patchwork.ozlabs.org","Delivered-To":"patchwork-incoming@bilbo.ozlabs.org","Authentication-Results":["ozlabs.org;\n\tspf=pass (mailfrom) smtp.mailfrom=nongnu.org\n\t(client-ip=2001:4830:134:3::11; helo=lists.gnu.org;\n\tenvelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org;\n\treceiver=<UNKNOWN>)","ozlabs.org;\n\tdkim=fail reason=\"signature verification failed\" (2048-bit key;\n\tunprotected) header.d=gmail.com header.i=@gmail.com\n\theader.b=\"d1opRDao\"; dkim-atps=neutral"],"Received":["from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11])\n\t(using TLSv1 with cipher AES256-SHA (256/256 bits))\n\t(No client certificate requested)\n\tby ozlabs.org (Postfix) with ESMTPS id 3xplNj17ztz9ryk\n\tfor <incoming@patchwork.ozlabs.org>;\n\tSat,  9 Sep 2017 03:55:49 +1000 (AEST)","from localhost ([::1]:46758 helo=lists.gnu.org)\n\tby lists.gnu.org with esmtp (Exim 4.71) (envelope-from\n\t<qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>)\n\tid 1dqNVL-0006s9-2R\n\tfor incoming@patchwork.ozlabs.org; Fri, 08 Sep 2017 13:55:47 -0400","from eggs.gnu.org ([2001:4830:134:3::10]:46639)\n\tby lists.gnu.org with esmtp (Exim 4.71)\n\t(envelope-from <alistair23@gmail.com>) id 1dqNNL-0008G7-1G\n\tfor qemu-devel@nongnu.org; Fri, 08 Sep 2017 13:47:32 -0400","from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71)\n\t(envelope-from <alistair23@gmail.com>) id 1dqNNK-0007H3-2P\n\tfor qemu-devel@nongnu.org; Fri, 08 Sep 2017 13:47:31 -0400","from mail-wr0-x242.google.com ([2a00:1450:400c:c0c::242]:34554)\n\tby eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16)\n\t(Exim 4.71) (envelope-from <alistair23@gmail.com>)\n\tid 1dqNNJ-0007GY-SF; Fri, 08 Sep 2017 13:47:30 -0400","by mail-wr0-x242.google.com with SMTP id k20so1547200wre.1;\n\tFri, 08 Sep 2017 10:47:29 -0700 (PDT)","by 10.28.191.130 with HTTP; Fri, 8 Sep 2017 10:46:57 -0700 (PDT)"],"DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;\n\th=mime-version:in-reply-to:references:from:date:message-id:subject:to\n\t:cc; bh=vAJJkZKMPQCyb2d4mneOpzgaFZZrssp+9h9eVjMoQmI=;\n\tb=d1opRDao/ybnRhXbRk4SD9a6bsI9T6drHoCbBPmaVqdC/q9dupBP9bpvU1jEQ/IAo0\n\tfw4q3fvikH2VBnQGpCraDbkEgHYGgq2Dr2ZriFpDmasklbk6gWwyUokzTxMWVmrM+Fly\n\tYmo4jMOI0sCcBhf+deUSHUyGG4K8CmcTbEBiKYu3BSbtq9ADsJN/E/55CcpJYBSm4Yta\n\tyBXsUb5pHTtQur8W+4BArFLvrhZ2ayLQmbJOX8lj5lmLYp/JKe+2EEIEfQjEGTcYWSPW\n\t6JO+Wni0fQbKpqyJBlkd8aTfMA2hpyK4comv9UoEQVyHMbinami9LXm28jNKuImzruGy\n\tZ0Hg==","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20161025;\n\th=x-gm-message-state:mime-version:in-reply-to:references:from:date\n\t:message-id:subject:to:cc;\n\tbh=vAJJkZKMPQCyb2d4mneOpzgaFZZrssp+9h9eVjMoQmI=;\n\tb=odRWxE1MZpsYHh1rJDXg4GH/l1pFFNZ2gGMcRVaklC6ZF/Z6jB7an3SFzY04X2nzzw\n\tDOzsfh1qqV+60I/g8F/UtvEJgKB7HHRFx0SLNoAM9Of0AN3YucOwQAldAiQlu6Fw5kdj\n\tBdXtVNedp0MlcEhAwOVTxy/pE9ryIQqqwSZJQuBDWw9DpO6IcX0I58um3Kco100IRDOe\n\tYbZfVpLvBUS7ODA6LjhhQAapeKtIjezH7bVQ7fMRSt1rjXLIgDSPTUaWpZws3jiftM30\n\tZAD+xCvIig2qEyIggItenMogsdVEUcyrsfLG5FGIdyI8Rt3F/7JdhHX+iromG0K+FYmr\n\t8hSg==","X-Gm-Message-State":"AHPjjUhrzwjGT66fnrf2e3SZG5Siwlh6TVgmNA5S7zxT9V1XdV46XDDb\n\tmEUF6vZDWuYe49Q3zt41U8RflpN6Ww==","X-Google-Smtp-Source":"ADKCNb4DneqZ2nsAObAVcXC1V7VozceX9Eki12KL3bBzyKmd27+lXtMn6wkZDk78DhyGQBoeauc8ih9lgmry5D3TQ9Y=","X-Received":"by 10.223.144.71 with SMTP id h65mr2999286wrh.41.1504892848657; \n\tFri, 08 Sep 2017 10:47:28 -0700 (PDT)","MIME-Version":"1.0","In-Reply-To":"<20170908163859.29820-1-richard.henderson@linaro.org>","References":"<20170908163859.29820-1-richard.henderson@linaro.org>","From":"Alistair Francis <alistair23@gmail.com>","Date":"Fri, 8 Sep 2017 10:46:57 -0700","Message-ID":"<CAKmqyKMdfNLtVTnDGVytJKaaoWMkxt+G3+U6Ph5Vm8U2ZGzRaA@mail.gmail.com>","To":"Richard Henderson <richard.henderson@linaro.org>","Content-Type":"text/plain; charset=\"UTF-8\"","X-detected-operating-system":"by eggs.gnu.org: Genre and OS details not\n\trecognized.","X-Received-From":"2a00:1450:400c:c0c::242","Subject":"Re: [Qemu-devel] [PATCH] target/arm: Avoid an extra temporary for\n\tstore_exclusive","X-BeenThere":"qemu-devel@nongnu.org","X-Mailman-Version":"2.1.21","Precedence":"list","List-Id":"<qemu-devel.nongnu.org>","List-Unsubscribe":"<https://lists.nongnu.org/mailman/options/qemu-devel>,\n\t<mailto:qemu-devel-request@nongnu.org?subject=unsubscribe>","List-Archive":"<http://lists.nongnu.org/archive/html/qemu-devel/>","List-Post":"<mailto:qemu-devel@nongnu.org>","List-Help":"<mailto:qemu-devel-request@nongnu.org?subject=help>","List-Subscribe":"<https://lists.nongnu.org/mailman/listinfo/qemu-devel>,\n\t<mailto:qemu-devel-request@nongnu.org?subject=subscribe>","Cc":"Peter Maydell <peter.maydell@linaro.org>, qemu-arm <qemu-arm@nongnu.org>,\n\t\"qemu-devel@nongnu.org Developers\" <qemu-devel@nongnu.org>,\n\tPatch Tracking <patches@linaro.org>","Errors-To":"qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org","Sender":"\"Qemu-devel\"\n\t<qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>"}},{"id":1768566,"web_url":"http://patchwork.ozlabs.org/comment/1768566/","msgid":"<CAFEAcA8mdXdnbFQ0auivBNr2StWqSZhO2W-ZAr477rDqtxif2Q@mail.gmail.com>","list_archive_url":null,"date":"2017-09-14T12:47:38","subject":"Re: [Qemu-devel] [PATCH] target/arm: Avoid an extra temporary for\n\tstore_exclusive","submitter":{"id":5111,"url":"http://patchwork.ozlabs.org/api/people/5111/","name":"Peter Maydell","email":"peter.maydell@linaro.org"},"content":"On 8 September 2017 at 18:46, Alistair Francis <alistair23@gmail.com> wrote:\n> On Fri, Sep 8, 2017 at 9:38 AM, Richard Henderson\n> <richard.henderson@linaro.org> wrote:\n>> Instead of copying addr to a local temp, reuse the value (which we\n>> have just compared as equal) already saved in cpu_exclusive_addr.\n>>\n>> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>\n>\n> Reviewed-by: Alistair Francis <alistair.francis@xilinx.com>\n>\n\n\n\nApplied to target-arm.next, thanks.\n\n-- PMM","headers":{"Return-Path":"<qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>","X-Original-To":"incoming@patchwork.ozlabs.org","Delivered-To":"patchwork-incoming@bilbo.ozlabs.org","Authentication-Results":["ozlabs.org;\n\tspf=pass (mailfrom) smtp.mailfrom=nongnu.org\n\t(client-ip=2001:4830:134:3::11; helo=lists.gnu.org;\n\tenvelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org;\n\treceiver=<UNKNOWN>)","ozlabs.org;\n\tdkim=fail reason=\"signature verification failed\" (1024-bit key;\n\tunprotected) header.d=linaro.org header.i=@linaro.org\n\theader.b=\"dXGK8D2W\"; dkim-atps=neutral"],"Received":["from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11])\n\t(using TLSv1 with cipher AES256-SHA (256/256 bits))\n\t(No client certificate requested)\n\tby ozlabs.org (Postfix) with ESMTPS id 3xtJHM59yXz9sPt\n\tfor <incoming@patchwork.ozlabs.org>;\n\tThu, 14 Sep 2017 22:48:30 +1000 (AEST)","from localhost ([::1]:47652 helo=lists.gnu.org)\n\tby lists.gnu.org with esmtp (Exim 4.71) (envelope-from\n\t<qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>)\n\tid 1dsTZE-0004S5-7p\n\tfor incoming@patchwork.ozlabs.org; Thu, 14 Sep 2017 08:48:28 -0400","from eggs.gnu.org ([2001:4830:134:3::10]:37447)\n\tby lists.gnu.org with esmtp (Exim 4.71)\n\t(envelope-from <peter.maydell@linaro.org>) id 1dsTYm-0004Rp-Ot\n\tfor qemu-devel@nongnu.org; Thu, 14 Sep 2017 08:48:01 -0400","from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71)\n\t(envelope-from <peter.maydell@linaro.org>) id 1dsTYl-0004Vi-UY\n\tfor qemu-devel@nongnu.org; Thu, 14 Sep 2017 08:48:00 -0400","from mail-wm0-x22d.google.com ([2a00:1450:400c:c09::22d]:44338)\n\tby eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16)\n\t(Exim 4.71) (envelope-from <peter.maydell@linaro.org>)\n\tid 1dsTYl-0004Uo-Of\n\tfor qemu-devel@nongnu.org; Thu, 14 Sep 2017 08:47:59 -0400","by mail-wm0-x22d.google.com with SMTP id 189so5668738wmh.1\n\tfor <qemu-devel@nongnu.org>; Thu, 14 Sep 2017 05:47:59 -0700 (PDT)","by 10.223.139.215 with HTTP; Thu, 14 Sep 2017 05:47:38 -0700 (PDT)"],"DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google;\n\th=mime-version:in-reply-to:references:from:date:message-id:subject:to\n\t:cc; bh=kmG4Wh0EWXwxiIVoTd1P0p05ZsjSQWBXCPHiMzATZeU=;\n\tb=dXGK8D2W2QN2Bh2BspAB8YwbFCvvpex8q86wxdaDyg8h0WBO8ZIs/2OKNX11IsBZwz\n\taHi2izEvW/iaIaUt4vPJQI7tKj0QUVqR51JcC4Jf20ices2jiDdbS87c7Z38nVNUV6P8\n\t+H7JVqtI45Ap7kl42Pzzfp9WoxlEE7pSqB+us=","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20161025;\n\th=x-gm-message-state:mime-version:in-reply-to:references:from:date\n\t:message-id:subject:to:cc;\n\tbh=kmG4Wh0EWXwxiIVoTd1P0p05ZsjSQWBXCPHiMzATZeU=;\n\tb=rSxXoojkMPNkQknUZ0bi6CQg+6QaC8luML3R5IqW+iSifiFBRWReZPftJkYAShinqd\n\t+ImITvL0xICoHUQMNFR9rmSeZ/d8Qf8ykNNRmhbUbssCsTDIQgk5mYrr/ZYjglFua0vA\n\tl2ZxyVGXdGuoTaiqmVBbWxHEAu+1kuu8OdQo3FVGW9O0wuI7ntfmyRm3sn+bc5ErOKMB\n\txNjOHUVMKSIWN05DDLRwhlZ7Z2/h+uuyMnGtc1o4yA0hGb+zDTHC1Chbn4wlYfa/1Nxo\n\tKGbtd82UdRKg6jWfPKkSNh1ZUjnrxZHbK1GP78q2/h6YJffC/Vir7UWvNAyajp9gDqyy\n\tfu9A==","X-Gm-Message-State":"AHPjjUjWztXLAGeaTUiZ8cHgB/jVN/miIDzedqrvVdWe1JJMziyI91XV\n\tNrgUw2ID2l4gXRwpPvqChBI4RCWg4cYkZHiNgIsbKQ==","X-Google-Smtp-Source":"AOwi7QBlA4avhRHVZ2GBDug2uL/c+y6DMCKqY/T5R6tfrrO8OJByHoEptdioxrhv65sLj12nOm6DOeawNKYoDcIwD/4=","X-Received":"by 10.28.52.81 with SMTP id b78mr1865297wma.11.1505393278695;\n\tThu, 14 Sep 2017 05:47:58 -0700 (PDT)","MIME-Version":"1.0","In-Reply-To":"<CAKmqyKMdfNLtVTnDGVytJKaaoWMkxt+G3+U6Ph5Vm8U2ZGzRaA@mail.gmail.com>","References":"<20170908163859.29820-1-richard.henderson@linaro.org>\n\t<CAKmqyKMdfNLtVTnDGVytJKaaoWMkxt+G3+U6Ph5Vm8U2ZGzRaA@mail.gmail.com>","From":"Peter Maydell <peter.maydell@linaro.org>","Date":"Thu, 14 Sep 2017 13:47:38 +0100","Message-ID":"<CAFEAcA8mdXdnbFQ0auivBNr2StWqSZhO2W-ZAr477rDqtxif2Q@mail.gmail.com>","To":"Alistair Francis <alistair23@gmail.com>","Content-Type":"text/plain; charset=\"UTF-8\"","X-detected-operating-system":"by eggs.gnu.org: Genre and OS details not\n\trecognized.","X-Received-From":"2a00:1450:400c:c09::22d","Subject":"Re: [Qemu-devel] [PATCH] target/arm: Avoid an extra temporary for\n\tstore_exclusive","X-BeenThere":"qemu-devel@nongnu.org","X-Mailman-Version":"2.1.21","Precedence":"list","List-Id":"<qemu-devel.nongnu.org>","List-Unsubscribe":"<https://lists.nongnu.org/mailman/options/qemu-devel>,\n\t<mailto:qemu-devel-request@nongnu.org?subject=unsubscribe>","List-Archive":"<http://lists.nongnu.org/archive/html/qemu-devel/>","List-Post":"<mailto:qemu-devel@nongnu.org>","List-Help":"<mailto:qemu-devel-request@nongnu.org?subject=help>","List-Subscribe":"<https://lists.nongnu.org/mailman/listinfo/qemu-devel>,\n\t<mailto:qemu-devel-request@nongnu.org?subject=subscribe>","Cc":"qemu-arm <qemu-arm@nongnu.org>,\n\tRichard Henderson <richard.henderson@linaro.org>,\n\t\"qemu-devel@nongnu.org Developers\" <qemu-devel@nongnu.org>,\n\tPatch Tracking <patches@linaro.org>","Errors-To":"qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org","Sender":"\"Qemu-devel\"\n\t<qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>"}}]