From nobody Fri May 3 03:35:43 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 1504888838314363.86033413823554; Fri, 8 Sep 2017 09:40:38 -0700 (PDT) Received: from localhost ([::1]:46436 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dqMKa-00069V-4v for importer@patchew.org; Fri, 08 Sep 2017 12:40:36 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:46060) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dqMJA-00058Q-7F for qemu-devel@nongnu.org; Fri, 08 Sep 2017 12:39:10 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dqMJ5-00060a-GV for qemu-devel@nongnu.org; Fri, 08 Sep 2017 12:39:08 -0400 Received: from mail-pg0-x22f.google.com ([2607:f8b0:400e:c05::22f]:37156) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dqMJ5-00060K-B2 for qemu-devel@nongnu.org; Fri, 08 Sep 2017 12:39:03 -0400 Received: by mail-pg0-x22f.google.com with SMTP id d8so5682378pgt.4 for ; Fri, 08 Sep 2017 09:39:03 -0700 (PDT) Received: from bigtime.twiddle.net (97-126-108-236.tukw.qwest.net. [97.126.108.236]) by smtp.gmail.com with ESMTPSA id q28sm4515173pfj.77.2017.09.08.09.39.00 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Fri, 08 Sep 2017 09:39:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id; bh=idWlPc4sVNdDvysx4VVV5IIav5gIxi0kIVm3/FP7va4=; b=e/CVhD6aqkDe6wMVmizPhVHg3J7CKlo4+sTYRXAwzjYgztBKVpmImupxTAF/HFFH2L DXx7UsMzeN1ubypgyZdh9TmOmUwp4tDcWVumX8EN1KX50lMoXDn1PGz9vhB01ouO/yBa 7o5iFfpu6nrv+vmzAVZRi2u+d8ewFdXoh1rfQ= 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=idWlPc4sVNdDvysx4VVV5IIav5gIxi0kIVm3/FP7va4=; b=oi3fHGocDCc/FGPWt6ygp6QQqL393WXaPNUnZtUn8SFxAPNcmDT/xilNk/qxMZsiUl wpBkOMhJhWEclz/sOh+OT40Wtvu2AePytYW0QgzGL6mmiHJm8bHYgA7ImxysSxpfLyTT 6zalY1OAVAs6YjKOGCCNP8Y9KUvWBbfUpYobGNlqwGEom1xP5XNGQcylReS7audLDYBE RkfQtaiKQOBqGo/KvVRFlviyhomNaYiUcN+rh8z1hF5mlYzo0cl++waB28zHiLeuzKik NZp3qSi/3ApBfxcvA5KGlUSBNyzbwjMqD2RfmCY9utmykL8OnlhZf1F3mJmmrlQwoDlx INtg== X-Gm-Message-State: AHPjjUjusYE6cAfGP9MHpIj68KpFwVehyaZeRx2L57VkmciaUjfLfehl xIwxA6KwWMEixt2678m4Jg== X-Google-Smtp-Source: ADKCNb6777LaREK3n5kaLgWvOeRp7asd0YZMWmw9PeGZNBYSDi7tIqmjW9J1KFJ+u5ZAMEHME+Nqng== X-Received: by 10.84.168.98 with SMTP id e89mr4084662plb.292.1504888741739; Fri, 08 Sep 2017 09:39:01 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Fri, 8 Sep 2017 09:38:59 -0700 Message-Id: <20170908163859.29820-1-richard.henderson@linaro.org> X-Mailer: git-send-email 2.13.5 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:400e:c05::22f 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, patches@linaro.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 Reviewed-by: Alistair Francis --- 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 9017e30510..114e21cc58 100644 --- a/target/arm/translate-a64.c +++ b/target/arm/translate-a64.c @@ -1894,7 +1894,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])) { @@ -1910,13 +1910,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(); @@ -1927,27 +1922,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.5