From nobody Sat Apr 20 02:40:34 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1502554823581231.4823736280881; Sat, 12 Aug 2017 09:20:23 -0700 (PDT) Received: from localhost ([::1]:37708 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dgZ9B-0003q4-S9 for importer@patchew.org; Sat, 12 Aug 2017 12:20:21 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:54464) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dgZ84-0003CX-2W for qemu-devel@nongnu.org; Sat, 12 Aug 2017 12:19:13 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dgZ80-000173-2v for qemu-devel@nongnu.org; Sat, 12 Aug 2017 12:19:12 -0400 Received: from mail-pf0-x244.google.com ([2607:f8b0:400e:c00::244]:34703) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dgZ7z-00016f-Tu; Sat, 12 Aug 2017 12:19:08 -0400 Received: by mail-pf0-x244.google.com with SMTP id t86so6089402pfe.1; Sat, 12 Aug 2017 09:19:07 -0700 (PDT) Received: from bigtime.twiddle.net (50-233-235-3-static.hfc.comcastbusiness.net. [50.233.235.3]) by smtp.gmail.com with ESMTPSA id a67sm6865912pfl.167.2017.08.12.09.19.05 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Sat, 12 Aug 2017 09:19:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id; bh=Mc7qw1Vfs3qsF08MS8HxmRPcaiuIejYYbAVNjDiIB+k=; b=Ge5QRplw8OZm3oR/slSuRSogdsKOWsrlEqBpYO93vCYQYPrz7afH0y7ScE+Jj92S6P UM981lFUbm1L+n+0lOYweccyh/SGl9VTO/9mNN60lBOwV/DZFDBzyvl/N4FohbLdhakG D3NTqJBaU4zdb8ZrkB2YUQFBpO7XNRlGiNwxnPeFHX+qiSKRHy8VL8z0zhJsF8p01vJt de4oAvzpboMIgd/1iR+8Pj1UqzHQRa7iy8fApEFVUrWNbnp3GE8AifvjOw+H7rLS9yqb wM+IOmY3MhSEYk7Y7fdyZrCdvtSZyB87QgAN8+b6mRAMFPcbnnWWm/kHbs5Jj8Pgwyd/ NVhA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id; bh=Mc7qw1Vfs3qsF08MS8HxmRPcaiuIejYYbAVNjDiIB+k=; b=d6GvYa3Pd8C/A2hklVReELh2VnUmO1Sp6zifE64S+IZfy7abH4Gx9sZktdqStgIeiD 0QkEE1uO7Gv0ifj0y4mWLaCScq4VEZXhdGjd1LL4AKjE579zObOWQcxUeWBxoesfIY/J xTW8MOVupOfRbiNCcCbtYxe2KKWZahw/2ehQLAepSb2bb1CgyJrHRvORIPhYImgXUnaP xzUfsLgov4XtJ9WwBvbPuA44d37BKGJy5WoZsOLEDnJa9tlV1E2O8CzuOIJIdUAtV+nz UU9Xs55IimNGHAAayiqlnyfLaWrnxHNhfj/jbXpWdQoxmUJvB34nwnclNpf3QHRlBKuA sEmg== X-Gm-Message-State: AHYfb5hVUlLLYMwMTcarI3RqU2tp+DH0Q/OtY1knymfaCY8rAHy62qJr kVCJJ0su3Rb2I6vlMAc= X-Received: by 10.84.169.3 with SMTP id g3mr21509761plb.136.1502554746539; Sat, 12 Aug 2017 09:19:06 -0700 (PDT) From: Richard Henderson X-Google-Original-From: Richard Henderson To: qemu-devel@nongnu.org Date: Sat, 12 Aug 2017 09:19:03 -0700 Message-Id: <20170812161903.8622-1-richard.henderson@linaro.org> X-Mailer: git-send-email 2.13.4 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:400e:c00::244 Subject: [Qemu-devel] [PATCH] target/arm: Avoid an extra temporary for store_exclusive X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: peter.maydell@linaro.org, qemu-arm@nongnu.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Instead of copying addr to a local temp, reuse the value (which we have just compared as equal) already saved in cpu_exclusive_addr. Signed-off-by: Richard Henderson --- target/arm/translate-a64.c | 26 +++++++++----------------- 1 file changed, 9 insertions(+), 17 deletions(-) diff --git a/target/arm/translate-a64.c b/target/arm/translate-a64.c index f3643ac8dc..f3a1b1cecc 100644 --- a/target/arm/translate-a64.c +++ b/target/arm/translate-a64.c @@ -1896,7 +1896,7 @@ static void gen_load_exclusive(DisasContext *s, int r= t, int rt2, } =20 static void gen_store_exclusive(DisasContext *s, int rd, int rt, int rt2, - TCGv_i64 inaddr, int size, int is_pair) + TCGv_i64 addr, int size, int is_pair) { /* if (env->exclusive_addr =3D=3D addr && env->exclusive_val =3D=3D [a= ddr] * && (!is_pair || env->exclusive_high =3D=3D [addr + datasize])) { @@ -1912,13 +1912,8 @@ static void gen_store_exclusive(DisasContext *s, int= rd, int rt, int rt2, */ TCGLabel *fail_label =3D gen_new_label(); TCGLabel *done_label =3D gen_new_label(); - TCGv_i64 addr =3D tcg_temp_local_new_i64(); TCGv_i64 tmp; =20 - /* Copy input into a local temp so it is not trashed when the - * basic block ends at the branch insn. - */ - tcg_gen_mov_i64(addr, inaddr); tcg_gen_brcond_i64(TCG_COND_NE, addr, cpu_exclusive_addr, fail_label); =20 tmp =3D tcg_temp_new_i64(); @@ -1929,27 +1924,24 @@ static void gen_store_exclusive(DisasContext *s, in= t rd, int rt, int rt2, } else { tcg_gen_concat32_i64(tmp, cpu_reg(s, rt2), cpu_reg(s, rt)); } - tcg_gen_atomic_cmpxchg_i64(tmp, addr, cpu_exclusive_val, tmp, + tcg_gen_atomic_cmpxchg_i64(tmp, cpu_exclusive_addr, + cpu_exclusive_val, tmp, get_mem_index(s), MO_64 | MO_ALIGN | s->be_data); tcg_gen_setcond_i64(TCG_COND_NE, tmp, tmp, cpu_exclusive_val); } else if (s->be_data =3D=3D MO_LE) { - gen_helper_paired_cmpxchg64_le(tmp, cpu_env, addr, cpu_reg(s, = rt), - cpu_reg(s, rt2)); + gen_helper_paired_cmpxchg64_le(tmp, cpu_env, cpu_exclusive_add= r, + cpu_reg(s, rt), cpu_reg(s, rt2)= ); } else { - gen_helper_paired_cmpxchg64_be(tmp, cpu_env, addr, cpu_reg(s, = rt), - cpu_reg(s, rt2)); + gen_helper_paired_cmpxchg64_be(tmp, cpu_env, cpu_exclusive_add= r, + cpu_reg(s, rt), cpu_reg(s, rt2)= ); } } else { - TCGv_i64 val =3D cpu_reg(s, rt); - tcg_gen_atomic_cmpxchg_i64(tmp, addr, cpu_exclusive_val, val, - get_mem_index(s), + tcg_gen_atomic_cmpxchg_i64(tmp, cpu_exclusive_addr, cpu_exclusive_= val, + cpu_reg(s, rt), get_mem_index(s), size | MO_ALIGN | s->be_data); tcg_gen_setcond_i64(TCG_COND_NE, tmp, tmp, cpu_exclusive_val); } - - tcg_temp_free_i64(addr); - tcg_gen_mov_i64(cpu_reg(s, rd), tmp); tcg_temp_free_i64(tmp); tcg_gen_br(done_label); --=20 2.13.4