From patchwork Fri Dec 14 03:19:09 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Henderson X-Patchwork-Id: 153726 Delivered-To: patch@linaro.org Received: by 2002:a2e:299d:0:0:0:0:0 with SMTP id p29-v6csp1603830ljp; Thu, 13 Dec 2018 19:35:17 -0800 (PST) X-Google-Smtp-Source: AFSGD/VbNzqgiYWJX/DEr13aCxiKGVuZg+EMQkSOu07fsSBfYIseJXXp8HDkcXlb7OdWp5Z98qVZ X-Received: by 2002:a0c:f74c:: with SMTP id e12mr1316608qvo.26.1544758517693; Thu, 13 Dec 2018 19:35:17 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1544758517; cv=none; d=google.com; s=arc-20160816; b=0629Xbdo/RZNY/CO1BZefXRFECgeIPW+e9byrlHVALrkETCdpEQPjKM0zzODWn1kUY lnWMAofTADFWsu/sW0X9TNm6+ZCmAPrNY2XONgmAjbUrjYPDb4rpNMhOxGRcMEbZYSXO b0Hht0KrBQN1m0auJLNeLhiDc12sEMjjC0lhEAjPhUyFfDy56tFN7Pucl5E7RIIn/Zxq /zrXmg2zLI3/wi1C40cQlKtXv9ONZR0McNW0p5aTw7O8SDuF20hIru/jFIPMlMLIXrOF a9TMHrU8Ahv5yDY9LTkYGNheoGgboIjlHEq67/EBO+g4Y9B9RKHamIQ44STYhnrpA7Ey qy7Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:cc:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:subject:references:in-reply-to :message-id:date:to:from:dkim-signature; bh=6mHwjj2JnZ4j8BKSV9ucEb9kxOPPQx5bB8d1Hiuehjc=; b=M2dNopxeoAkD03RTsgHC2lv98kt9FeTTN0leQTyTcCs5I/9A8KPA5S/lA95eVOiG/X U3pyfJ+BcGUdtj9kajZ97NYnHfKLgwg0t0F44eSJFTGWJI3DINP7+3lM99O+2x0BQVlh BCx/L+ifYRkaStoBzdsy26kseis2uCr6D0b1xS2mTadDCZlVfDVHA6u2eJAIX6F+ijO8 qKYb3pcfof/girRPtefErf6PM2/cuC5UsSxV+QKbo38vzV4ITFOSg7j3sBt/3l+3qLjL gRndJXbvgOKdEZ0xXTOu76uw9KHYagW8jwUMK1ZR7SMHcjl1tRcZ/NPitH5ZEDzJeBK5 hbGg== ARC-Authentication-Results: i=1; mx.google.com; dkim=fail header.i=@linaro.org header.s=google header.b="Yl/dJUBH"; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 2001:4830:134:3::11 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [2001:4830:134:3::11]) by mx.google.com with ESMTPS id j125si524628qkd.94.2018.12.13.19.35.17 for (version=TLS1 cipher=AES128-SHA bits=128/128); Thu, 13 Dec 2018 19:35:17 -0800 (PST) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 2001:4830:134:3::11 as permitted sender) client-ip=2001:4830:134:3::11; Authentication-Results: mx.google.com; dkim=fail header.i=@linaro.org header.s=google header.b="Yl/dJUBH"; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 2001:4830:134:3::11 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from localhost ([::1]:59135 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gXeFx-0003Cv-4A for patch@linaro.org; Thu, 13 Dec 2018 22:35:17 -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) 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-Received: by 2002:aca:5a88:: with SMTP id o130mr848199oib.275.1544757586335; Thu, 13 Dec 2018 19:19:46 -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) 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+patch=linaro.org@nongnu.org Sender: "Qemu-devel" 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(-) -- 2.17.2 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, TCGReg addrlo, TCGReg addrhi, * Record the context of a call to the out of line helper code for the slow path * for a load or store, so that we can later generate the correct helper code */ -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 is_ld, TCGMemOpIdx oi, label->is_ld = is_ld; label->oi = oi; + label->type = is_64 ? TCG_TYPE_I64 : TCG_TYPE_I32; label->datalo_reg = datalo; label->datahi_reg = datahi; label->addrlo_reg = addrlo; @@ -1722,6 +1724,7 @@ static void tcg_out_qemu_ld_slow_path(TCGContext *s, TCGLabelQemuLdst *l) TCGMemOp opc = get_memop(oi); TCGReg data_reg; tcg_insn_unit **label_ptr = &l->label_ptr[0]; + int rexw = (l->type == TCG_TYPE_I64 ? P_REXW : 0); /* 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 = 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 == 64 case MO_SL: @@ -2014,7 +2017,7 @@ static void tcg_out_qemu_ld(TCGContext *s, const TCGArg *args, bool is64) tcg_out_qemu_ld_direct(s, datalo, datahi, TCG_REG_L1, -1, 0, 0, is64, opc); /* 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 TCGArg *args, bool is64) tcg_out_qemu_st_direct(s, datalo, datahi, TCG_REG_L1, 0, 0, opc); /* 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 {