From nobody Tue Apr 15 03:09:23 2025 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; dmarc=fail(p=none dis=none) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1544758616651271.7756252928684; Thu, 13 Dec 2018 19:36:56 -0800 (PST) Received: from localhost ([::1]:59146 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gXeHX-0004Q0-J1 for importer@patchew.org; Thu, 13 Dec 2018 22:36:55 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:58917) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gXe1B-0006FN-1R for qemu-devel@nongnu.org; Thu, 13 Dec 2018 22:20:02 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1gXe16-0007Sf-65 for qemu-devel@nongnu.org; Thu, 13 Dec 2018 22:19:59 -0500 Received: from mail-oi1-x22c.google.com ([2607:f8b0:4864:20::22c]:44007) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1gXe12-00075T-E5 for qemu-devel@nongnu.org; Thu, 13 Dec 2018 22:19:54 -0500 Received: by mail-oi1-x22c.google.com with SMTP id u18so3450672oie.10 for ; Thu, 13 Dec 2018 19:19:47 -0800 (PST) Received: from cloudburst.twiddle.net ([187.217.227.243]) by smtp.gmail.com with ESMTPSA id g138sm2367537oib.26.2018.12.13.19.19.45 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Thu, 13 Dec 2018 19:19:45 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=6mHwjj2JnZ4j8BKSV9ucEb9kxOPPQx5bB8d1Hiuehjc=; b=Yl/dJUBH6TUoEcam28ZGxQzpgv0HzOf9jbYvUt5QwUWnfDw/CgBI2ZIFVnm1AkaMHE Jrr1gclq67wGRpAyEO6LXygLjy2sDsoGnWO4rmuR32+UfeWMpynf8ojULuXl2uVWP9rO 50plCb29FJhsy+gx7PjDkG1OlMEcFMRhoctao= 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:in-reply-to :references; bh=6mHwjj2JnZ4j8BKSV9ucEb9kxOPPQx5bB8d1Hiuehjc=; b=qMyO8JCUQNUri+1ormh4zue6GjHNLuUxQw0hAKsaY56TkAjsGRw/SFr+LcgooP2DFL web4q5mc1GAMECN10oNQ5ThbBLCjjkeGr0gF/yVi+X+r8mjRy023g5zVxhHGE/yc9NiT gC4L8Afiv4wlLviy7VePBwPXDX+pwsWkbdD+E496kI+bOpHp/8mUIbNWOYJ8IAyJXaY6 6kgNj5HDqcsk7Y/TMB/pria9YozZyTeYKEMboecQpsjvFuuSiOuRmfDwVKg6mlWCcmrH 6IeEMpzE0nfidgRsSkpUD0syMy6vVHUvYM3rpyBw9z17Ce4mmKmSKlNouPK5JESumtxR Xz4Q== X-Gm-Message-State: AA+aEWYFDyk6yGgOm6cI1hr1O9gw8H3rCyRXf2LnClJLI82+e1waQy+s HxRnLoEg1Dh+BPtGhb0cLilKPW8fVuZRMg== X-Google-Smtp-Source: AFSGD/UtYDw83IrmFKl2D2NFa+KrtFp+UOKmNSBwXM1o8GkMJ8pJftvuEC3IsBp/YOmX/hcXPFBxfg== X-Received: by 2002:aca:5a88:: with SMTP id o130mr848199oib.275.1544757586335; Thu, 13 Dec 2018 19:19:46 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Date: Thu, 13 Dec 2018 21:19:09 -0600 Message-Id: <20181214031923.29527-20-richard.henderson@linaro.org> X-Mailer: git-send-email 2.17.2 In-Reply-To: <20181214031923.29527-1-richard.henderson@linaro.org> References: <20181214031923.29527-1-richard.henderson@linaro.org> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:4864:20::22c Subject: [Qemu-devel] [PULL 18/32] tcg/i386: Propagate is64 to tcg_out_qemu_ld_slow_path 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 Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" This helps preserve the invariant that all TCG_TYPE_I32 values are stored zero-extended in the 64-bit host registers. Signed-off-by: Richard Henderson --- tcg/i386/tcg-target.inc.c | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/tcg/i386/tcg-target.inc.c b/tcg/i386/tcg-target.inc.c index 6bf4f84b20..695b406b4e 100644 --- a/tcg/i386/tcg-target.inc.c +++ b/tcg/i386/tcg-target.inc.c @@ -1692,7 +1692,8 @@ static inline void tcg_out_tlb_load(TCGContext *s, TC= GReg addrlo, TCGReg addrhi, * Record the context of a call to the out of line helper code for the slo= w path * for a load or store, so that we can later generate the correct helper c= ode */ -static void add_qemu_ldst_label(TCGContext *s, bool is_ld, TCGMemOpIdx oi, +static void add_qemu_ldst_label(TCGContext *s, bool is_ld, bool is_64, + TCGMemOpIdx oi, TCGReg datalo, TCGReg datahi, TCGReg addrlo, TCGReg addrhi, tcg_insn_unit *raddr, @@ -1702,6 +1703,7 @@ static void add_qemu_ldst_label(TCGContext *s, bool i= s_ld, TCGMemOpIdx oi, =20 label->is_ld =3D is_ld; label->oi =3D oi; + label->type =3D is_64 ? TCG_TYPE_I64 : TCG_TYPE_I32; label->datalo_reg =3D datalo; label->datahi_reg =3D datahi; label->addrlo_reg =3D addrlo; @@ -1722,6 +1724,7 @@ static void tcg_out_qemu_ld_slow_path(TCGContext *s, = TCGLabelQemuLdst *l) TCGMemOp opc =3D get_memop(oi); TCGReg data_reg; tcg_insn_unit **label_ptr =3D &l->label_ptr[0]; + int rexw =3D (l->type =3D=3D TCG_TYPE_I64 ? P_REXW : 0); =20 /* resolve label address */ tcg_patch32(label_ptr[0], s->code_ptr - label_ptr[0] - 4); @@ -1760,10 +1763,10 @@ static void tcg_out_qemu_ld_slow_path(TCGContext *s= , TCGLabelQemuLdst *l) data_reg =3D l->datalo_reg; switch (opc & MO_SSIZE) { case MO_SB: - tcg_out_ext8s(s, data_reg, TCG_REG_EAX, P_REXW); + tcg_out_ext8s(s, data_reg, TCG_REG_EAX, rexw); break; case MO_SW: - tcg_out_ext16s(s, data_reg, TCG_REG_EAX, P_REXW); + tcg_out_ext16s(s, data_reg, TCG_REG_EAX, rexw); break; #if TCG_TARGET_REG_BITS =3D=3D 64 case MO_SL: @@ -2014,7 +2017,7 @@ static void tcg_out_qemu_ld(TCGContext *s, const TCGA= rg *args, bool is64) tcg_out_qemu_ld_direct(s, datalo, datahi, TCG_REG_L1, -1, 0, 0, is64, = opc); =20 /* Record the current context of a load into ldst label */ - add_qemu_ldst_label(s, true, oi, datalo, datahi, addrlo, addrhi, + add_qemu_ldst_label(s, true, is64, oi, datalo, datahi, addrlo, addrhi, s->code_ptr, label_ptr); #else { @@ -2154,7 +2157,7 @@ static void tcg_out_qemu_st(TCGContext *s, const TCGA= rg *args, bool is64) tcg_out_qemu_st_direct(s, datalo, datahi, TCG_REG_L1, 0, 0, opc); =20 /* Record the current context of a store into ldst label */ - add_qemu_ldst_label(s, false, oi, datalo, datahi, addrlo, addrhi, + add_qemu_ldst_label(s, false, is64, oi, datalo, datahi, addrlo, addrhi, s->code_ptr, label_ptr); #else { --=20 2.17.2