From nobody Tue Apr 30 02:32:47 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.zoho.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 1493753236246504.9379467359762; Tue, 2 May 2017 12:27:16 -0700 (PDT) Received: from localhost ([::1]:33298 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d5dS6-00057g-S2 for importer@patchew.org; Tue, 02 May 2017 15:27:14 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:59339) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d5dO8-0001cK-OM for qemu-devel@nongnu.org; Tue, 02 May 2017 15:23:09 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1d5dO7-0001SD-Ow for qemu-devel@nongnu.org; Tue, 02 May 2017 15:23:08 -0400 Received: from mail-qk0-x243.google.com ([2607:f8b0:400d:c09::243]:32951) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1d5dO7-0001Rn-KB for qemu-devel@nongnu.org; Tue, 02 May 2017 15:23:07 -0400 Received: by mail-qk0-x243.google.com with SMTP id o85so22939885qkh.0 for ; Tue, 02 May 2017 12:23:07 -0700 (PDT) Received: from bigtime.twiddle.net.com ([2602:47:d954:1500:5e51:4fff:fe40:9c64]) by smtp.gmail.com with ESMTPSA id d65sm10664657qkc.53.2017.05.02.12.23.05 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 02 May 2017 12:23:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=ci4Jaaj0M2OZk0CKk3ir8bgSsFuLd/dzRVIjrdQ+7AA=; b=YE2T7fllmGi2nGmPCBOz/QhEjI3Jor6uItlKp1Df3PulMMSwP9LOps1+hf/CUfneaC wMAaxM1pP6SI2aAzl1Rn3Hh/a89jok914ns5+klVLfNRr7jDXgpW3kD3aalcXVNLEeHG 8vJAMOLKmmPJR+tHzpsSTe/a/4Jj/pzKj5iiI5v0VwoT+hN0Ts3eiW2ifCa/tkVTG4zm TXyAhPCu+A1nPrYfHF/AL+4U1IehaVBiRQkR/x4vFKnJVITpGym2X3gGevAWjVZPUpE0 nOoF7kKI+wl724IT3SDO4b32ecJCdI2TOSiK+6J5icOBtDPcwc+oPM/AmT5Ry/Fvi/2G 8Zrw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references:mime-version:content-transfer-encoding; bh=ci4Jaaj0M2OZk0CKk3ir8bgSsFuLd/dzRVIjrdQ+7AA=; b=ZHVixCFfqDduZ8Zi/jBmb8SgmC4ypi8ZmOdJbrgXxDUav9kP70uLp/6YV6LU6kqmPb Hq49cISu9CfTwZ6sxBVXryhIcwwd35pzJ5pjRSCL+0dXGYL9IXhtm9ch9kUQrlTtcrpw 1J9bZAcI9/wimNi96SqbmwDTTNKbB9szCh6zWm9ZHPAsh+2X4iBxL4Gvqt6Tp5QZgGiF 8DNzaxbCTB+vMyzpFPQ8K8fmIyjp9s+OStrO81owazmkDZqCPiH48/ulSwgDisNXhXJB pCbwbEu98wGDCOSjd+G77+9yJO5HpeESQhDWPffJmHQEgylld+z6aZiJHwT2cVNM4X9N xZ3w== X-Gm-Message-State: AN3rC/6XypY0+GgtD96O1PxXxEJQTCeUMnTpL0QCqK1vXhn0woclmL8h jVLVO8aV8waTpRrO5xU= X-Received: by 10.55.176.135 with SMTP id z129mr26815210qke.308.1493752986832; Tue, 02 May 2017 12:23:06 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Tue, 2 May 2017 12:22:36 -0700 Message-Id: <20170502192300.2124-2-rth@twiddle.net> X-Mailer: git-send-email 2.9.3 In-Reply-To: <20170502192300.2124-1-rth@twiddle.net> References: <20170502192300.2124-1-rth@twiddle.net> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:400d:c09::243 Subject: [Qemu-devel] [PATCH v6 01/25] target/nios2: Fix 64-bit ilp32 compilation 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: cota@braap.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 Avoid a "cast from pointer to integer of different size" warning by using the proper host type. Reviewed-by: Alex Benn=C3=A9e Signed-off-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- target/nios2/translate.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/target/nios2/translate.c b/target/nios2/translate.c index cfec479..2f3c2e5 100644 --- a/target/nios2/translate.c +++ b/target/nios2/translate.c @@ -164,7 +164,7 @@ static void gen_goto_tb(DisasContext *dc, int n, uint32= _t dest) if (use_goto_tb(dc, dest)) { tcg_gen_goto_tb(n); tcg_gen_movi_tl(dc->cpu_R[R_PC], dest); - tcg_gen_exit_tb((tcg_target_long)tb + n); + tcg_gen_exit_tb((uintptr_t)tb + n); } else { tcg_gen_movi_tl(dc->cpu_R[R_PC], dest); tcg_gen_exit_tb(0); --=20 2.9.3 From nobody Tue Apr 30 02:32:47 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.zoho.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 1493753097879677.383849060301; Tue, 2 May 2017 12:24:57 -0700 (PDT) Received: from localhost ([::1]:33281 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d5dPs-00036B-EL for importer@patchew.org; Tue, 02 May 2017 15:24:56 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:59359) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d5dO9-0001cU-Vu for qemu-devel@nongnu.org; Tue, 02 May 2017 15:23:10 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1d5dO9-0001TU-33 for qemu-devel@nongnu.org; Tue, 02 May 2017 15:23:09 -0400 Received: from mail-qk0-x242.google.com ([2607:f8b0:400d:c09::242]:36317) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1d5dO8-0001T3-VU for qemu-devel@nongnu.org; Tue, 02 May 2017 15:23:09 -0400 Received: by mail-qk0-x242.google.com with SMTP id o4so4541146qkb.3 for ; Tue, 02 May 2017 12:23:08 -0700 (PDT) Received: from bigtime.twiddle.net.com ([2602:47:d954:1500:5e51:4fff:fe40:9c64]) by smtp.gmail.com with ESMTPSA id d65sm10664657qkc.53.2017.05.02.12.23.07 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 02 May 2017 12:23:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=N4UMolMgXt7d3B4URa3dbF6/Y3i0vtBxAnEsVS/beic=; b=sg22Ijr5BAbvwDjvaz53OGEVI7Qvr6TpiXs6v+WJpEGcr/gr5BELcvC82ojSBUxb2V afGADXndnDYDf5T5baO186DIu4Ckl6PvzfrB7R5NH1qMFUapUYsU8kvX2XDKSvlGQs7N hATQ13AjQ+nP1R7VqHiSK6X30uau6v9p1rb/wCn4LsQIjDCiZnj1xDeUaJayYNR9owfn CCjsJKH49XXWIONRxCH4P9aG/OCwXRmc7hCBMtopklqNGCvE82nrJTCUcvQjTiOQBogy 2fE6pJIljJJMRIiDYJfyVwMe5DIYq7FpblDf+yUx317lGa/oMEQBM4joquCHNzDKEzcG fLQg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references:mime-version:content-transfer-encoding; bh=N4UMolMgXt7d3B4URa3dbF6/Y3i0vtBxAnEsVS/beic=; b=kz18UADjoOAyerVb4MH2rqkB4s6FPG6hH5OM6s3BfZipNNjen4A69d0UCq/+rSf198 L2DGKy9hNB9GUKNOBfCICkI8Kre4+HFCWfkuE2QjZAVzfQ+2FBYj6XFpBD5VD+R0aGoe VhLLJ3UkY7Fz2cnsrfBgoVghdt/srORQe5KVjbxHev/eRUJsyu6H9OFIfEJyvQrp1jPK CIKdaAk2OieQ+WoaYC5AHsTxPPlrcqaFzSKoy3MR6dAwN5oA2PIbSjZJIprAjj8Hjy+p SwBWoQ0wiwZrHFHj8SDB+3d73MlrxlbkvqR+7b6roTgeAyyyOupYqP40qInJV8VcF0xm X+Dw== X-Gm-Message-State: AN3rC/5ybThwPL2I3zZCy7qCkfH2eiy0Nd3DeY6wWzda5HuXPvV6TXx/ lHwFXskmG89r9k+xv8c= X-Received: by 10.55.183.196 with SMTP id h187mr9114324qkf.203.1493752988197; Tue, 02 May 2017 12:23:08 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Tue, 2 May 2017 12:22:37 -0700 Message-Id: <20170502192300.2124-3-rth@twiddle.net> X-Mailer: git-send-email 2.9.3 In-Reply-To: <20170502192300.2124-1-rth@twiddle.net> References: <20170502192300.2124-1-rth@twiddle.net> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:400d:c09::242 Subject: [Qemu-devel] [PATCH v6 02/25] tcg/sparc: Use the proper compilation flags for 32-bit 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: cota@braap.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 We have required a v9 cpu since 9b9c37c36439ee0452632253dac7a31897f27f70. However, the flags we were using did not reliably enable v8plus, which meant that the compiler didn't know it could inline 64-bit atomics. Reviewed-by: Alex Benn=C3=A9e Signed-off-by: Richard Henderson --- configure | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/configure b/configure index 48a9370..d404374 100755 --- a/configure +++ b/configure @@ -1206,12 +1206,12 @@ case "$cpu" in LDFLAGS=3D"-m64 $LDFLAGS" ;; sparc) - LDFLAGS=3D"-m32 $LDFLAGS" - CPU_CFLAGS=3D"-m32 -mcpu=3Dultrasparc" + CPU_CFLAGS=3D"-m32 -mv8plus -mcpu=3Dultrasparc" + LDFLAGS=3D"-m32 -mv8plus $LDFLAGS" ;; sparc64) - LDFLAGS=3D"-m64 $LDFLAGS" CPU_CFLAGS=3D"-m64 -mcpu=3Dultrasparc" + LDFLAGS=3D"-m64 $LDFLAGS" ;; s390) CPU_CFLAGS=3D"-m31" --=20 2.9.3 From nobody Tue Apr 30 02:32:47 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.zoho.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 1493753244312760.5108949205846; Tue, 2 May 2017 12:27:24 -0700 (PDT) Received: from localhost ([::1]:33299 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d5dSE-0005Eh-Qx for importer@patchew.org; Tue, 02 May 2017 15:27:22 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:59371) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d5dOB-0001dY-BY for qemu-devel@nongnu.org; Tue, 02 May 2017 15:23:12 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1d5dOA-0001Uo-D9 for qemu-devel@nongnu.org; Tue, 02 May 2017 15:23:11 -0400 Received: from mail-qk0-x241.google.com ([2607:f8b0:400d:c09::241]:35792) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1d5dOA-0001UI-8v for qemu-devel@nongnu.org; Tue, 02 May 2017 15:23:10 -0400 Received: by mail-qk0-x241.google.com with SMTP id u68so7538399qkd.2 for ; Tue, 02 May 2017 12:23:10 -0700 (PDT) Received: from bigtime.twiddle.net.com ([2602:47:d954:1500:5e51:4fff:fe40:9c64]) by smtp.gmail.com with ESMTPSA id d65sm10664657qkc.53.2017.05.02.12.23.08 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 02 May 2017 12:23:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=TcTIJDOVhq0UEfnySky015zN22k+raltX+yg6RCJ3q8=; b=IYEirggAj6jx6WYFzQrqqBFU9TQgh6V3UOVwowG5Xban0tFPgCP4GfGKS2WnxUbyim WVtf74KNWOYJDYYbocRctasR4CcPmUiqAnUg1aieZqBS7JtQ9qvpHZx5jp6tgiJbQCkf INKMHOBC77y1krDNyHIZoPth7SR25LzTQ50DHD4J6pml4fCIdUkRxbbrhKPqUSCIfnW3 AtkL1I0rUD3I01shpWIEW2aZ1bk6g+H3aSXoi2pt/k8/vZUfCEVoOmUz40uu6ODd8l9F ZvMLSueOG36JNm9oraYy42sB2GZV8IAi+auwN4d8w6OyxAVktgnmRf5Yfsl6nQDpR5WU 02RQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references:mime-version:content-transfer-encoding; bh=TcTIJDOVhq0UEfnySky015zN22k+raltX+yg6RCJ3q8=; b=Flx7rxTAo1chO5JKgnOuVs/i3iZX1mawJFB4k8sSM2McXaVh4cfIZ75xltEzdvZrBN fhDPz1M3D7dxbs7UIKNS7lyUbH/2wUyWPwS47vyP4BcZM1Ry23WnspKjmLdx7zgQhVeh 4srtaWTMDy6udTLWsKPB0kxGxvd//LwxHaiCVNmdgVcpAR9EQNbpz1IGzzzlc/eFJSZV BCjIOMf7qCukkdyMxMPiZvXexX/8KgRkRprbm1rDfeOzVKJtpNIxCxcBjHUnYraCuG+l //USXriicqMxLTIP4rrKhdz43LCjIwJA/pyQlfItUIp0eGSyNjBjg1PeU4RLrMU65wd1 OQHQ== X-Gm-Message-State: AN3rC/7fblKntbt2+ZRp9IwjkdokgpxhhUyIaEr0dp1R0D63bQsQzfMv tzUlCX3Kemo3pWw3ZbM= X-Received: by 10.55.54.204 with SMTP id d195mr26440231qka.255.1493752989434; Tue, 02 May 2017 12:23:09 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Tue, 2 May 2017 12:22:38 -0700 Message-Id: <20170502192300.2124-4-rth@twiddle.net> X-Mailer: git-send-email 2.9.3 In-Reply-To: <20170502192300.2124-1-rth@twiddle.net> References: <20170502192300.2124-1-rth@twiddle.net> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:400d:c09::241 Subject: [Qemu-devel] [PATCH v6 03/25] qemu/atomic: Loosen restrictions for 64-bit ILP32 hosts 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: cota@braap.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 We need to coordinate with the TCG_OVERSIZED_GUEST test in cputlb.c, and allow 64-bit atomics even though sizeof(void *) =3D=3D 4. Reviewed-by: Alex Benn=C3=A9e Signed-off-by: Richard Henderson --- include/qemu/atomic.h | 34 ++++++++++++++++++++++++++-------- 1 file changed, 26 insertions(+), 8 deletions(-) diff --git a/include/qemu/atomic.h b/include/qemu/atomic.h index 878fa07..e07c797 100644 --- a/include/qemu/atomic.h +++ b/include/qemu/atomic.h @@ -88,6 +88,24 @@ #define smp_read_barrier_depends() barrier() #endif =20 +/* Sanity check that the size of an atomic operation isn't "overly large". + * Despite the fact that e.g. i686 has 64-bit atomic operations, we do not + * want to use them because we ought not need them, and this lets us do a + * bit of sanity checking that other 32-bit hosts might build. + * + * That said, we have a problem on 64-bit ILP32 hosts in that in order to + * sync with TCG_OVERSIZED_GUEST, this must match TCG_TARGET_REG_BITS. + * We'd prefer not want to pull in everything else TCG related, so handle + * those few cases by hand. + * + * Note that x32 is fully detected with __x64_64__ + _ILP32, and that for + * Sparc we always force the use of sparcv9 in configure. + */ +#if defined(__x86_64__) || defined(__sparc__) +# define ATOMIC_REG_SIZE 8 +#else +# define ATOMIC_REG_SIZE sizeof(void *) +#endif =20 /* Weak atomic operations prevent the compiler moving other * loads/stores past the atomic operation load/store. However there is @@ -104,7 +122,7 @@ =20 #define atomic_read(ptr) \ ({ \ - QEMU_BUILD_BUG_ON(sizeof(*ptr) > sizeof(void *)); \ + QEMU_BUILD_BUG_ON(sizeof(*ptr) > ATOMIC_REG_SIZE); \ atomic_read__nocheck(ptr); \ }) =20 @@ -112,7 +130,7 @@ __atomic_store_n(ptr, i, __ATOMIC_RELAXED) =20 #define atomic_set(ptr, i) do { \ - QEMU_BUILD_BUG_ON(sizeof(*ptr) > sizeof(void *)); \ + QEMU_BUILD_BUG_ON(sizeof(*ptr) > ATOMIC_REG_SIZE); \ atomic_set__nocheck(ptr, i); \ } while(0) =20 @@ -130,27 +148,27 @@ =20 #define atomic_rcu_read(ptr) \ ({ \ - QEMU_BUILD_BUG_ON(sizeof(*ptr) > sizeof(void *)); \ + QEMU_BUILD_BUG_ON(sizeof(*ptr) > ATOMIC_REG_SIZE); \ typeof_strip_qual(*ptr) _val; \ atomic_rcu_read__nocheck(ptr, &_val); \ _val; \ }) =20 #define atomic_rcu_set(ptr, i) do { \ - QEMU_BUILD_BUG_ON(sizeof(*ptr) > sizeof(void *)); \ + QEMU_BUILD_BUG_ON(sizeof(*ptr) > ATOMIC_REG_SIZE); \ __atomic_store_n(ptr, i, __ATOMIC_RELEASE); \ } while(0) =20 #define atomic_load_acquire(ptr) \ ({ \ - QEMU_BUILD_BUG_ON(sizeof(*ptr) > sizeof(void *)); \ + QEMU_BUILD_BUG_ON(sizeof(*ptr) > ATOMIC_REG_SIZE); \ typeof_strip_qual(*ptr) _val; \ __atomic_load(ptr, &_val, __ATOMIC_ACQUIRE); \ _val; \ }) =20 #define atomic_store_release(ptr, i) do { \ - QEMU_BUILD_BUG_ON(sizeof(*ptr) > sizeof(void *)); \ + QEMU_BUILD_BUG_ON(sizeof(*ptr) > ATOMIC_REG_SIZE); \ __atomic_store_n(ptr, i, __ATOMIC_RELEASE); \ } while(0) =20 @@ -162,7 +180,7 @@ }) =20 #define atomic_xchg(ptr, i) ({ \ - QEMU_BUILD_BUG_ON(sizeof(*ptr) > sizeof(void *)); \ + QEMU_BUILD_BUG_ON(sizeof(*ptr) > ATOMIC_REG_SIZE); \ atomic_xchg__nocheck(ptr, i); \ }) =20 @@ -175,7 +193,7 @@ }) =20 #define atomic_cmpxchg(ptr, old, new) ({ \ - QEMU_BUILD_BUG_ON(sizeof(*ptr) > sizeof(void *)); \ + QEMU_BUILD_BUG_ON(sizeof(*ptr) > ATOMIC_REG_SIZE); \ atomic_cmpxchg__nocheck(ptr, old, new); \ }) =20 --=20 2.9.3 From nobody Tue Apr 30 02:32:47 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.zoho.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 1493753394690884.302337981837; Tue, 2 May 2017 12:29:54 -0700 (PDT) Received: from localhost ([::1]:33313 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d5dUd-0007SX-Uu for importer@patchew.org; Tue, 02 May 2017 15:29:52 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:59393) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d5dOE-0001fy-6G for qemu-devel@nongnu.org; Tue, 02 May 2017 15:23:16 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1d5dOC-0001W2-3g for qemu-devel@nongnu.org; Tue, 02 May 2017 15:23:14 -0400 Received: from mail-qt0-x242.google.com ([2607:f8b0:400d:c0d::242]:32857) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1d5dOB-0001Vm-Tx for qemu-devel@nongnu.org; Tue, 02 May 2017 15:23:12 -0400 Received: by mail-qt0-x242.google.com with SMTP id c45so21741861qtb.0 for ; Tue, 02 May 2017 12:23:11 -0700 (PDT) Received: from bigtime.twiddle.net.com ([2602:47:d954:1500:5e51:4fff:fe40:9c64]) by smtp.gmail.com with ESMTPSA id d65sm10664657qkc.53.2017.05.02.12.23.09 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 02 May 2017 12:23:10 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=tH9FWyzhLKVR4UKMS4bCB7c0eOcub+EOk6ywpJsX9Yo=; b=P7ktDoQIP1Es4Wdw6TijfNt1h8at8OAW0nUaNHONSSYF3iEFS7n25J34eDDFeMai7+ BVsVDvL6BoNbpjoy1K3jBUzuSkipASSarUI0U00GeZoB9zH9rp5x/jrtqjxuNB5JAN3C MHk7GR2+0PvRKLfU1fH8qBj5VvSD9zHLD/IWhkXAQQ4h2oS1X8cJUhPf05QTESCBNALQ YDgECwGlUjOmwN6CueCRRjz4QJPfxYqK3WhZD4FT5afroLsszxrO7fB2uLoVEh5F8Wea lxmjLpDR0KCueo0bX0OqnFUuXm9A6GuFXwlyiEsdjbVejsDVoZjo3Mhhi2bJ06Ra1a7w 6BDA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references:mime-version:content-transfer-encoding; bh=tH9FWyzhLKVR4UKMS4bCB7c0eOcub+EOk6ywpJsX9Yo=; b=pvZUF2w+VGGqei+iggEk4S3nINaaT+MqXvsMfFth9Bu/WPzEBWVSRucDYmz47HwZf0 GddagdPGC5JgePfnQSHEVsGRX3qRnTSfCWRZdv2B+ckjI3Is1fqXw3W7E3N4HfNTUtPI 3UjtEIkZ5j55QcXwd0ew8vMV19t1fEUtZaoLTk8DK8s5OMGkoyuUvU0JDrxHZLIpXrY4 i9pg0aiZytW81eKYimWevAMtagub3kLXg5Ewx0qcilltgko4eSJvA3lEOk1Hw4sGOWxn mRLzQIxhs8HiYN4cIMGagNnzXoez2UUaI3HPSo0vHBE0z1aBGyVPb+DVXb4ei5XnsO2/ edRQ== X-Gm-Message-State: AN3rC/7yk5KZRo/GYXr0J0XEnxZ4sBvxdVhpzogqtQENoKk+47Y7mWQg 02kMevCoqs5sY/LMygE= X-Received: by 10.237.41.195 with SMTP id o61mr30640604qtd.170.1493752990876; Tue, 02 May 2017 12:23:10 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Tue, 2 May 2017 12:22:39 -0700 Message-Id: <20170502192300.2124-5-rth@twiddle.net> X-Mailer: git-send-email 2.9.3 In-Reply-To: <20170502192300.2124-1-rth@twiddle.net> References: <20170502192300.2124-1-rth@twiddle.net> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:400d:c0d::242 Subject: [Qemu-devel] [PATCH v6 04/25] tcg: Introduce goto_ptr opcode and tcg_gen_lookup_and_goto_ptr 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: cota@braap.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 From: "Emilio G. Cota" Instead of exporting goto_ptr directly to TCG frontends, export tcg_gen_lookup_and_goto_ptr(), which calls goto_ptr with the pointer returned by the lookup_tb_ptr() helper. This is the only use case we have for goto_ptr and lookup_tb_ptr, so having this function is very convenient. Furthermore, it trivially allows us to avoid calling the lookup helper if goto_ptr is not implemented by the backend. Reviewed-by: Alex Benn=C3=A9e Signed-off-by: Emilio G. Cota Message-Id: <1493263764-18657-2-git-send-email-cota@braap.org> Message-Id: <1493263764-18657-3-git-send-email-cota@braap.org> Message-Id: <1493263764-18657-4-git-send-email-cota@braap.org> Message-Id: <1493263764-18657-5-git-send-email-cota@braap.org> [rth: Squashed 4 related commits.] Signed-off-by: Richard Henderson --- cpu-exec.c | 6 ++---- include/exec/exec-all.h | 2 ++ tcg-runtime.c | 32 ++++++++++++++++++++++++++++++++ tcg/README | 8 ++++++++ tcg/aarch64/tcg-target.h | 1 + tcg/arm/tcg-target.h | 1 + tcg/i386/tcg-target.h | 1 + tcg/ia64/tcg-target.h | 1 + tcg/mips/tcg-target.h | 1 + tcg/ppc/tcg-target.h | 1 + tcg/s390/tcg-target.h | 1 + tcg/sparc/tcg-target.h | 1 + tcg/tcg-op.c | 13 +++++++++++++ tcg/tcg-op.h | 11 +++++++++++ tcg/tcg-opc.h | 1 + tcg/tcg-runtime.h | 2 ++ tcg/tcg.c | 5 +++++ tcg/tcg.h | 1 + tcg/tci/tcg-target.h | 1 + 19 files changed, 86 insertions(+), 4 deletions(-) diff --git a/cpu-exec.c b/cpu-exec.c index 63a56d0..5b181c1 100644 --- a/cpu-exec.c +++ b/cpu-exec.c @@ -309,10 +309,8 @@ static bool tb_cmp(const void *p, const void *d) return false; } =20 -static TranslationBlock *tb_htable_lookup(CPUState *cpu, - target_ulong pc, - target_ulong cs_base, - uint32_t flags) +TranslationBlock *tb_htable_lookup(CPUState *cpu, target_ulong pc, + target_ulong cs_base, uint32_t flags) { tb_page_addr_t phys_pc; struct tb_desc desc; diff --git a/include/exec/exec-all.h b/include/exec/exec-all.h index bcde1e6..87ae10b 100644 --- a/include/exec/exec-all.h +++ b/include/exec/exec-all.h @@ -368,6 +368,8 @@ struct TranslationBlock { void tb_free(TranslationBlock *tb); void tb_flush(CPUState *cpu); void tb_phys_invalidate(TranslationBlock *tb, tb_page_addr_t page_addr); +TranslationBlock *tb_htable_lookup(CPUState *cpu, target_ulong pc, + target_ulong cs_base, uint32_t flags); =20 #if defined(USE_DIRECT_JUMP) =20 diff --git a/tcg-runtime.c b/tcg-runtime.c index 4c60c96..7fa90ce 100644 --- a/tcg-runtime.c +++ b/tcg-runtime.c @@ -27,6 +27,9 @@ #include "exec/helper-proto.h" #include "exec/cpu_ldst.h" #include "exec/exec-all.h" +#include "exec/tb-hash.h" +#include "disas/disas.h" +#include "exec/log.h" =20 /* 32-bit helpers */ =20 @@ -141,6 +144,35 @@ uint64_t HELPER(ctpop_i64)(uint64_t arg) return ctpop64(arg); } =20 +void *HELPER(lookup_tb_ptr)(CPUArchState *env, target_ulong addr) +{ + CPUState *cpu =3D ENV_GET_CPU(env); + TranslationBlock *tb; + target_ulong cs_base, pc; + uint32_t flags; + + tb =3D atomic_rcu_read(&cpu->tb_jmp_cache[tb_jmp_cache_hash_func(addr)= ]); + if (likely(tb)) { + cpu_get_tb_cpu_state(env, &pc, &cs_base, &flags); + if (likely(tb->pc =3D=3D addr && tb->cs_base =3D=3D cs_base && + tb->flags =3D=3D flags)) { + goto found; + } + tb =3D tb_htable_lookup(cpu, addr, cs_base, flags); + if (likely(tb)) { + atomic_set(&cpu->tb_jmp_cache[tb_jmp_cache_hash_func(addr)], t= b); + goto found; + } + } + return tcg_ctx.code_gen_epilogue; + found: + qemu_log_mask_and_addr(CPU_LOG_EXEC, addr, + "Chain %p [%d: " TARGET_FMT_lx "] %s\n", + tb->tc_ptr, cpu->cpu_index, addr, + lookup_symbol(addr)); + return tb->tc_ptr; +} + void HELPER(exit_atomic)(CPUArchState *env) { cpu_loop_exit_atomic(ENV_GET_CPU(env), GETPC()); diff --git a/tcg/README b/tcg/README index a9858c2..bf49e82 100644 --- a/tcg/README +++ b/tcg/README @@ -477,6 +477,14 @@ current TB was linked to this TB. Otherwise execute th= e next instructions. Only indices 0 and 1 are valid and tcg_gen_goto_tb may be is= sued at most once with each slot index per TB. =20 +* lookup_and_goto_ptr tb_addr + +Look up a TB address ('tb_addr') and jump to it if valid. If not valid, +jump to the TCG epilogue to go back to the exec loop. + +This operation is optional. If the TCG backend does not implement the +goto_ptr opcode, emitting this op is equivalent to emitting exit_tb(0). + * qemu_ld_i32/i64 t0, t1, flags, memidx * qemu_st_i32/i64 t0, t1, flags, memidx =20 diff --git a/tcg/aarch64/tcg-target.h b/tcg/aarch64/tcg-target.h index 1a5ea23..b82eac4 100644 --- a/tcg/aarch64/tcg-target.h +++ b/tcg/aarch64/tcg-target.h @@ -77,6 +77,7 @@ typedef enum { #define TCG_TARGET_HAS_mulsh_i32 0 #define TCG_TARGET_HAS_extrl_i64_i32 0 #define TCG_TARGET_HAS_extrh_i64_i32 0 +#define TCG_TARGET_HAS_goto_ptr 0 =20 #define TCG_TARGET_HAS_div_i64 1 #define TCG_TARGET_HAS_rem_i64 1 diff --git a/tcg/arm/tcg-target.h b/tcg/arm/tcg-target.h index 75ea247..c114df7 100644 --- a/tcg/arm/tcg-target.h +++ b/tcg/arm/tcg-target.h @@ -123,6 +123,7 @@ extern bool use_idiv_instructions; #define TCG_TARGET_HAS_mulsh_i32 0 #define TCG_TARGET_HAS_div_i32 use_idiv_instructions #define TCG_TARGET_HAS_rem_i32 0 +#define TCG_TARGET_HAS_goto_ptr 0 =20 enum { TCG_AREG0 =3D TCG_REG_R6, diff --git a/tcg/i386/tcg-target.h b/tcg/i386/tcg-target.h index 4275787..59d9835 100644 --- a/tcg/i386/tcg-target.h +++ b/tcg/i386/tcg-target.h @@ -107,6 +107,7 @@ extern bool have_popcnt; #define TCG_TARGET_HAS_muls2_i32 1 #define TCG_TARGET_HAS_muluh_i32 0 #define TCG_TARGET_HAS_mulsh_i32 0 +#define TCG_TARGET_HAS_goto_ptr 0 =20 #if TCG_TARGET_REG_BITS =3D=3D 64 #define TCG_TARGET_HAS_extrl_i64_i32 0 diff --git a/tcg/ia64/tcg-target.h b/tcg/ia64/tcg-target.h index 42aea03..901bb75 100644 --- a/tcg/ia64/tcg-target.h +++ b/tcg/ia64/tcg-target.h @@ -173,6 +173,7 @@ typedef enum { #define TCG_TARGET_HAS_mulsh_i64 0 #define TCG_TARGET_HAS_extrl_i64_i32 0 #define TCG_TARGET_HAS_extrh_i64_i32 0 +#define TCG_TARGET_HAS_goto_ptr 0 =20 #define TCG_TARGET_deposit_i32_valid(ofs, len) ((len) <=3D 16) #define TCG_TARGET_deposit_i64_valid(ofs, len) ((len) <=3D 16) diff --git a/tcg/mips/tcg-target.h b/tcg/mips/tcg-target.h index f46d64a..e3240cf 100644 --- a/tcg/mips/tcg-target.h +++ b/tcg/mips/tcg-target.h @@ -130,6 +130,7 @@ extern bool use_mips32r2_instructions; #define TCG_TARGET_HAS_muluh_i32 1 #define TCG_TARGET_HAS_mulsh_i32 1 #define TCG_TARGET_HAS_bswap32_i32 1 +#define TCG_TARGET_HAS_goto_ptr 0 =20 #if TCG_TARGET_REG_BITS =3D=3D 64 #define TCG_TARGET_HAS_add2_i32 0 diff --git a/tcg/ppc/tcg-target.h b/tcg/ppc/tcg-target.h index abd8b3d..a9aa974 100644 --- a/tcg/ppc/tcg-target.h +++ b/tcg/ppc/tcg-target.h @@ -82,6 +82,7 @@ extern bool have_isa_3_00; #define TCG_TARGET_HAS_muls2_i32 0 #define TCG_TARGET_HAS_muluh_i32 1 #define TCG_TARGET_HAS_mulsh_i32 1 +#define TCG_TARGET_HAS_goto_ptr 0 =20 #if TCG_TARGET_REG_BITS =3D=3D 64 #define TCG_TARGET_HAS_add2_i32 0 diff --git a/tcg/s390/tcg-target.h b/tcg/s390/tcg-target.h index cbdd2a6..6b7bcfb 100644 --- a/tcg/s390/tcg-target.h +++ b/tcg/s390/tcg-target.h @@ -92,6 +92,7 @@ extern uint64_t s390_facilities; #define TCG_TARGET_HAS_mulsh_i32 0 #define TCG_TARGET_HAS_extrl_i64_i32 0 #define TCG_TARGET_HAS_extrh_i64_i32 0 +#define TCG_TARGET_HAS_goto_ptr 0 =20 #define TCG_TARGET_HAS_div2_i64 1 #define TCG_TARGET_HAS_rot_i64 1 diff --git a/tcg/sparc/tcg-target.h b/tcg/sparc/tcg-target.h index b8b74f96f..9348ddd 100644 --- a/tcg/sparc/tcg-target.h +++ b/tcg/sparc/tcg-target.h @@ -123,6 +123,7 @@ extern bool use_vis3_instructions; #define TCG_TARGET_HAS_muls2_i32 1 #define TCG_TARGET_HAS_muluh_i32 0 #define TCG_TARGET_HAS_mulsh_i32 0 +#define TCG_TARGET_HAS_goto_ptr 0 =20 #define TCG_TARGET_HAS_extrl_i64_i32 1 #define TCG_TARGET_HAS_extrh_i64_i32 1 diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c index 6b1f415..660dac9 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -2587,6 +2587,19 @@ void tcg_gen_goto_tb(unsigned idx) tcg_gen_op1i(INDEX_op_goto_tb, idx); } =20 +void tcg_gen_lookup_and_goto_ptr(TCGv addr) +{ + if (TCG_TARGET_HAS_goto_ptr) { + TCGv_ptr ptr =3D tcg_temp_new_ptr(); + + gen_helper_lookup_tb_ptr(ptr, tcg_ctx.tcg_env, addr); + tcg_gen_op1i(INDEX_op_goto_ptr, GET_TCGV_PTR(ptr)); + tcg_temp_free_ptr(ptr); + } else { + tcg_gen_exit_tb(0); + } +} + static inline TCGMemOp tcg_canonicalize_memop(TCGMemOp op, bool is64, bool= st) { /* Trigger the asserts within as early as possible. */ diff --git a/tcg/tcg-op.h b/tcg/tcg-op.h index c68e300..5d3278f 100644 --- a/tcg/tcg-op.h +++ b/tcg/tcg-op.h @@ -796,6 +796,17 @@ static inline void tcg_gen_exit_tb(uintptr_t val) */ void tcg_gen_goto_tb(unsigned idx); =20 +/** + * tcg_gen_lookup_and_goto_ptr() - look up a TB and jump to it if valid + * @addr: Guest address of the target TB + * + * If the TB is not valid, jump to the epilogue. + * + * This operation is optional. If the TCG backend does not implement goto_= ptr, + * this op is equivalent to calling tcg_gen_exit_tb() with 0 as the argume= nt. + */ +void tcg_gen_lookup_and_goto_ptr(TCGv addr); + #if TARGET_LONG_BITS =3D=3D 32 #define tcg_temp_new() tcg_temp_new_i32() #define tcg_global_reg_new tcg_global_reg_new_i32 diff --git a/tcg/tcg-opc.h b/tcg/tcg-opc.h index f06f894..956fb1e 100644 --- a/tcg/tcg-opc.h +++ b/tcg/tcg-opc.h @@ -193,6 +193,7 @@ DEF(insn_start, 0, 0, TLADDR_ARGS * TARGET_INSN_START_W= ORDS, TCG_OPF_NOT_PRESENT) DEF(exit_tb, 0, 0, 1, TCG_OPF_BB_END) DEF(goto_tb, 0, 0, 1, TCG_OPF_BB_END) +DEF(goto_ptr, 0, 1, 0, TCG_OPF_BB_END | IMPL(TCG_TARGET_HAS_goto_ptr)) =20 DEF(qemu_ld_i32, 1, TLADDR_ARGS, 1, TCG_OPF_CALL_CLOBBER | TCG_OPF_SIDE_EFFECTS) diff --git a/tcg/tcg-runtime.h b/tcg/tcg-runtime.h index 114ea6f..c41d38a 100644 --- a/tcg/tcg-runtime.h +++ b/tcg/tcg-runtime.h @@ -24,6 +24,8 @@ DEF_HELPER_FLAGS_1(clrsb_i64, TCG_CALL_NO_RWG_SE, i64, i6= 4) DEF_HELPER_FLAGS_1(ctpop_i32, TCG_CALL_NO_RWG_SE, i32, i32) DEF_HELPER_FLAGS_1(ctpop_i64, TCG_CALL_NO_RWG_SE, i64, i64) =20 +DEF_HELPER_FLAGS_2(lookup_tb_ptr, TCG_CALL_NO_WG_SE, ptr, env, tl) + DEF_HELPER_FLAGS_1(exit_atomic, TCG_CALL_NO_WG, noreturn, env) =20 #ifdef CONFIG_SOFTMMU diff --git a/tcg/tcg.c b/tcg/tcg.c index cb898f1..564292f 100644 --- a/tcg/tcg.c +++ b/tcg/tcg.c @@ -424,6 +424,11 @@ void tcg_prologue_init(TCGContext *s) qemu_log_unlock(); } #endif + + /* Assert that goto_ptr is implemented completely. */ + if (TCG_TARGET_HAS_goto_ptr) { + tcg_debug_assert(s->code_gen_epilogue !=3D NULL); + } } =20 void tcg_func_start(TCGContext *s) diff --git a/tcg/tcg.h b/tcg/tcg.h index 6c216bb..5ec48d1 100644 --- a/tcg/tcg.h +++ b/tcg/tcg.h @@ -699,6 +699,7 @@ struct TCGContext { extension that allows arithmetic on void*. */ int code_gen_max_blocks; void *code_gen_prologue; + void *code_gen_epilogue; void *code_gen_buffer; size_t code_gen_buffer_size; void *code_gen_ptr; diff --git a/tcg/tci/tcg-target.h b/tcg/tci/tcg-target.h index 838bf3a..0696328 100644 --- a/tcg/tci/tcg-target.h +++ b/tcg/tci/tcg-target.h @@ -85,6 +85,7 @@ #define TCG_TARGET_HAS_muls2_i32 0 #define TCG_TARGET_HAS_muluh_i32 0 #define TCG_TARGET_HAS_mulsh_i32 0 +#define TCG_TARGET_HAS_goto_ptr 0 =20 #if TCG_TARGET_REG_BITS =3D=3D 64 #define TCG_TARGET_HAS_extrl_i64_i32 0 --=20 2.9.3 From nobody Tue Apr 30 02:32:47 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.zoho.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 1493753101391628.9985429191182; Tue, 2 May 2017 12:25:01 -0700 (PDT) Received: from localhost ([::1]:33282 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d5dPv-0003CS-Su for importer@patchew.org; Tue, 02 May 2017 15:25:00 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:59389) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d5dOE-0001fh-17 for qemu-devel@nongnu.org; Tue, 02 May 2017 15:23:15 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1d5dOD-0001Wx-29 for qemu-devel@nongnu.org; Tue, 02 May 2017 15:23:14 -0400 Received: from mail-qk0-x244.google.com ([2607:f8b0:400d:c09::244]:32957) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1d5dOC-0001Wb-TR for qemu-devel@nongnu.org; Tue, 02 May 2017 15:23:12 -0400 Received: by mail-qk0-x244.google.com with SMTP id o85so22940158qkh.0 for ; Tue, 02 May 2017 12:23:12 -0700 (PDT) Received: from bigtime.twiddle.net.com ([2602:47:d954:1500:5e51:4fff:fe40:9c64]) by smtp.gmail.com with ESMTPSA id d65sm10664657qkc.53.2017.05.02.12.23.11 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 02 May 2017 12:23:11 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references; bh=/7RPKOrF4upE4pTU8vz1GzObama5Ca73v1djSLCpa2s=; b=LQ5qHjKsBOUi7BGBbynzNEst5lhoiTQkKCqXUGrsNOcU0ZYZA0juDSmIiFVFz1NWzy vl4PvqI/gcxb4FHilNKu/Mt+2kTLi7BB7+6vZRmnT1c7kOr7Xzsdp2QOn+w5LdKRizwG LHiAnXnE/Go36dLHCHfBYdmINwKFtAJU7Pzn53X4YrlaJnaBl6uYCjz+lWvHgFlp8r0s zN/ihuO4XGcIAcBUWU/U9nFre7/Pw9nwe+y/9iB0yTbPWubm5oNafPiLBTzQ/eo+iSaU ahfjBvQ2RTqBA50npV9oAOg7eThFEMNQnfRSrRQDNPGOXZTesMuKF0X5L/oIEtu4f7SB e54g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references; bh=/7RPKOrF4upE4pTU8vz1GzObama5Ca73v1djSLCpa2s=; b=Y4TXuj49wDyhfAt9HHqec95ztJ+odegsFFVgbTBGcTPTYJUZJeWvxjs2HxrulMoRiY IQmQY4tO+HMAYDRiJtDyfUlxUu1a1miht45OopNueYkwgapmp39b9Vo9C8HlCGUWXeFh 25aVaHfXUinmnYGu1sAMJaYMT2x8TIdq9mPuLVRP/raki6VcmQ4ioQgayLYfT4+gHitc vzZRGC6ZyL7sel51JebPo3JXqt9KbKpOZF9BpMyoVxxeMeCoKaggYQfq8eT7MJlwy9X0 M2K4Tb4fRHvozpL71ghJgAGPNDbhFUnDoeKpy1hVfhQTaNOQDzItmxVOjlYy4LzBh5KC fg4A== X-Gm-Message-State: AN3rC/6S0u8E5MsH4G8tSJCFxkR+y0A2h083G7wIO4ZBqhLwgkvJ6/GW AU4B5SdGTd0N6w== X-Received: by 10.233.239.65 with SMTP id d62mr12758327qkg.119.1493752992373; Tue, 02 May 2017 12:23:12 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Tue, 2 May 2017 12:22:40 -0700 Message-Id: <20170502192300.2124-6-rth@twiddle.net> X-Mailer: git-send-email 2.9.3 In-Reply-To: <20170502192300.2124-1-rth@twiddle.net> References: <20170502192300.2124-1-rth@twiddle.net> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:400d:c09::244 Subject: [Qemu-devel] [PATCH v6 05/25] tcg/i386: implement goto_ptr 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: cota@braap.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" From: "Emilio G. Cota" Suggested-by: Richard Henderson Reviewed-by: Richard Henderson Signed-off-by: Emilio G. Cota Message-Id: <1493263764-18657-6-git-send-email-cota@braap.org> [rth: Reuse goto_ptr epilogue for exit_tb 0.] Signed-off-by: Richard Henderson --- tcg/i386/tcg-target.h | 2 +- tcg/i386/tcg-target.inc.c | 24 ++++++++++++++++++++++-- 2 files changed, 23 insertions(+), 3 deletions(-) diff --git a/tcg/i386/tcg-target.h b/tcg/i386/tcg-target.h index 59d9835..73a15f7 100644 --- a/tcg/i386/tcg-target.h +++ b/tcg/i386/tcg-target.h @@ -107,7 +107,7 @@ extern bool have_popcnt; #define TCG_TARGET_HAS_muls2_i32 1 #define TCG_TARGET_HAS_muluh_i32 0 #define TCG_TARGET_HAS_mulsh_i32 0 -#define TCG_TARGET_HAS_goto_ptr 0 +#define TCG_TARGET_HAS_goto_ptr 1 =20 #if TCG_TARGET_REG_BITS =3D=3D 64 #define TCG_TARGET_HAS_extrl_i64_i32 0 diff --git a/tcg/i386/tcg-target.inc.c b/tcg/i386/tcg-target.inc.c index 5918008..01e3b4e 100644 --- a/tcg/i386/tcg-target.inc.c +++ b/tcg/i386/tcg-target.inc.c @@ -1882,8 +1882,13 @@ static inline void tcg_out_op(TCGContext *s, TCGOpco= de opc, =20 switch (opc) { case INDEX_op_exit_tb: - tcg_out_movi(s, TCG_TYPE_PTR, TCG_REG_EAX, a0); - tcg_out_jmp(s, tb_ret_addr); + /* Reuse the zeroing that exists for goto_ptr. */ + if (a0 =3D=3D 0) { + tcg_out_jmp(s, s->code_gen_epilogue); + } else { + tcg_out_movi(s, TCG_TYPE_PTR, TCG_REG_EAX, a0); + tcg_out_jmp(s, tb_ret_addr); + } break; case INDEX_op_goto_tb: if (s->tb_jmp_insn_offset) { @@ -1906,6 +1911,10 @@ static inline void tcg_out_op(TCGContext *s, TCGOpco= de opc, } s->tb_jmp_reset_offset[a0] =3D tcg_current_code_size(s); break; + case INDEX_op_goto_ptr: + /* jmp to the given host address (could be epilogue) */ + tcg_out_modrm(s, OPC_GRP5, EXT5_JMPN_Ev, a0); + break; case INDEX_op_br: tcg_out_jxx(s, JCC_JMP, arg_label(a0), 0); break; @@ -2277,6 +2286,7 @@ static inline void tcg_out_op(TCGContext *s, TCGOpcod= e opc, =20 static const TCGTargetOpDef *tcg_target_op_def(TCGOpcode op) { + static const TCGTargetOpDef r =3D { .args_ct_str =3D { "r" } }; static const TCGTargetOpDef ri_r =3D { .args_ct_str =3D { "ri", "r" } = }; static const TCGTargetOpDef re_r =3D { .args_ct_str =3D { "re", "r" } = }; static const TCGTargetOpDef qi_r =3D { .args_ct_str =3D { "qi", "r" } = }; @@ -2299,6 +2309,9 @@ static const TCGTargetOpDef *tcg_target_op_def(TCGOpc= ode op) =3D { .args_ct_str =3D { "L", "L", "L", "L" } }; =20 switch (op) { + case INDEX_op_goto_ptr: + return &r; + case INDEX_op_ld8u_i32: case INDEX_op_ld8u_i64: case INDEX_op_ld8s_i32: @@ -2567,6 +2580,13 @@ static void tcg_target_qemu_prologue(TCGContext *s) tcg_out_modrm(s, OPC_GRP5, EXT5_JMPN_Ev, tcg_target_call_iarg_regs[1]); #endif =20 + /* + * Return path for goto_ptr. Set return value to 0, a-la exit_tb, + * and fall through to the rest of the epilogue. + */ + s->code_gen_epilogue =3D s->code_ptr; + tcg_out_movi(s, TCG_TYPE_REG, TCG_REG_EAX, 0); + /* TB epilogue */ tb_ret_addr =3D s->code_ptr; =20 --=20 2.9.3 From nobody Tue Apr 30 02:32:47 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.zoho.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 1493753248933190.1809265594045; Tue, 2 May 2017 12:27:28 -0700 (PDT) Received: from localhost ([::1]:33300 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d5dSJ-0005N9-NH for importer@patchew.org; Tue, 02 May 2017 15:27:27 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:59408) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d5dOF-0001gu-5W for qemu-devel@nongnu.org; Tue, 02 May 2017 15:23:16 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1d5dOE-0001Y8-6q for qemu-devel@nongnu.org; Tue, 02 May 2017 15:23:15 -0400 Received: from mail-qt0-x243.google.com ([2607:f8b0:400d:c0d::243]:36145) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1d5dOE-0001Xe-1z for qemu-devel@nongnu.org; Tue, 02 May 2017 15:23:14 -0400 Received: by mail-qt0-x243.google.com with SMTP id t52so21724352qtb.3 for ; Tue, 02 May 2017 12:23:14 -0700 (PDT) Received: from bigtime.twiddle.net.com ([2602:47:d954:1500:5e51:4fff:fe40:9c64]) by smtp.gmail.com with ESMTPSA id d65sm10664657qkc.53.2017.05.02.12.23.12 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 02 May 2017 12:23:13 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=kPLjqqMV7yRU8XEV3KNasm3OP1PxYZeVEeYMXwN9p0w=; b=rtekTCTLgZ8VmGmfanQoAWBRXrqjHb3301BxBbbfuPBg8+VhiceCtLvB8rVIdAmmB9 9cP6tjr31LqY0mKw44uVf4uHxdHNAF+u9zRHBBKIY+UVKoU1yHGj41R8oBclVpOSTSbm 5yD2WM4fsss6ABSv/C/SE7ttAQ3hfPLCmm4A6jYrJ83n0IcFKPvZOKXXei6sxpYBsVwD O/UOpbyZ1tWuk8eu9dLmG2CO2O6W5686h03MBCG0+tqnuNO2+Rfmevz1xNpQFWeYvQDj 3LEDiZB5Aa5nwg8HfWK5H3/vYRLL/ljtHtCLgwzekxn7rwhoMd5MlLpj3LZDsBwSoeO9 9kQw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references:mime-version:content-transfer-encoding; bh=kPLjqqMV7yRU8XEV3KNasm3OP1PxYZeVEeYMXwN9p0w=; b=BU/qiTb53yYp5dnq5euokPW9UCO6Wp5VeaPIw7cGwm2lnxQdBxR8VPHTNbMuYPu2FN AjNLtEAXvBiiFMfMzw7V0/AjECfpL8hGGF4y1NhT5x0ZmepqbEqqIqZsO91gsx/HioeQ bNDdl1IY+gLyoRPB71jBpKKyXIU+B1j5S9vwIyNEYxXiHYR4UEm0Cnon1JIpKhk5CV6R 7gyzLXy315YROEsxbeymZUr3svurYH5Dr4TZyaIF8+f4L1jyn6CsVifpoKUs/s1h0OKK jtGSDtsTWb7xwxCMW5sFEA8puPQ8J/3LAMdvHeR7PLKhzSzG8x8cWZnN1WtdA/A/aLU1 LOQA== X-Gm-Message-State: AN3rC/5VXsHfA9l6CqgyLgyBUFB+g+zFsc8BuzYY/Z6pfH88W2u+Lgbv MVWw2HGg0d1u6w== X-Received: by 10.200.49.61 with SMTP id g58mr30481387qtb.151.1493752993569; Tue, 02 May 2017 12:23:13 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Tue, 2 May 2017 12:22:41 -0700 Message-Id: <20170502192300.2124-7-rth@twiddle.net> X-Mailer: git-send-email 2.9.3 In-Reply-To: <20170502192300.2124-1-rth@twiddle.net> References: <20170502192300.2124-1-rth@twiddle.net> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:400d:c0d::243 Subject: [Qemu-devel] [PATCH v6 06/25] target/arm: optimize cross-page direct jumps in softmmu 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: cota@braap.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 From: "Emilio G. Cota" Instead of unconditionally exiting to the exec loop, use the lookup_and_goto_ptr helper to jump to the target if it is valid. Perf impact: see next commit's log. Reviewed-by: Alex Benn=C3=A9e Reviewed-by: Richard Henderson Signed-off-by: Emilio G. Cota Message-Id: <1493263764-18657-7-git-send-email-cota@braap.org> Signed-off-by: Richard Henderson --- target/arm/translate.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/target/arm/translate.c b/target/arm/translate.c index 0b5a0bc..facb52f 100644 --- a/target/arm/translate.c +++ b/target/arm/translate.c @@ -4153,8 +4153,12 @@ static inline void gen_goto_tb(DisasContext *s, int = n, target_ulong dest) gen_set_pc_im(s, dest); tcg_gen_exit_tb((uintptr_t)s->tb + n); } else { + TCGv addr =3D tcg_temp_new(); + gen_set_pc_im(s, dest); - tcg_gen_exit_tb(0); + tcg_gen_extu_i32_tl(addr, cpu_R[15]); + tcg_gen_lookup_and_goto_ptr(addr); + tcg_temp_free(addr); } } =20 --=20 2.9.3 From nobody Tue Apr 30 02:32:47 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.zoho.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 1493753549558877.4844232048952; Tue, 2 May 2017 12:32:29 -0700 (PDT) Received: from localhost ([::1]:33331 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d5dXA-0001PB-2k for importer@patchew.org; Tue, 02 May 2017 15:32:28 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:59429) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d5dOH-0001iO-3l for qemu-devel@nongnu.org; Tue, 02 May 2017 15:23:18 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1d5dOF-0001ZR-Nq for qemu-devel@nongnu.org; Tue, 02 May 2017 15:23:17 -0400 Received: from mail-qk0-x242.google.com ([2607:f8b0:400d:c09::242]:32966) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1d5dOF-0001ZD-Hp for qemu-devel@nongnu.org; Tue, 02 May 2017 15:23:15 -0400 Received: by mail-qk0-x242.google.com with SMTP id o85so22940366qkh.0 for ; Tue, 02 May 2017 12:23:15 -0700 (PDT) Received: from bigtime.twiddle.net.com ([2602:47:d954:1500:5e51:4fff:fe40:9c64]) by smtp.gmail.com with ESMTPSA id d65sm10664657qkc.53.2017.05.02.12.23.13 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 02 May 2017 12:23:14 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references; bh=MTIofX2HSUo350jJsb2QJZoE/hDlny/hk0KoBg8Jjpw=; b=r+5NA9MtAtJ2F1clcYn75fTCiNrAfjF6Q3xEJcNHV9uNNj8gTCyuWxtZuWJlfW5sv5 cDxJv7d8Mi18ETHM4kRaPH6Gff+BruFUkrIBiw1bv0IiB6lNgUWhI+vnWLOHAnTe4eYh 7PLEYCYgebqgmDrx725H+ket0nhNsEX/xYdTeQihTBanGbB0w7fOpicgpLsPdBk3GtKj 9Gn+vjaMJDNBhrtu+kxKCEaM/bnHMcwmIqa6I0rMQc7WrAa1FzwTvdQK828P282t0Jt3 HaWUQxH8K71xTgoGAWbhLl5ajOC3i7GH8dmZLbDHK9YhMVc76931eSYOxahdZbztKxkC dbyQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references; bh=MTIofX2HSUo350jJsb2QJZoE/hDlny/hk0KoBg8Jjpw=; b=bdUQL+LYR6lAH4szPaRnquwyJ3K4utn02OWQwnu1CVk2XG6yHgFg+nnTH/EqyM6Iam 0LIxhMMIBWDJ4aDcJVQvEHX14Ky3MnbttXf5m6xe9rZoeskDevqyQjOfNAHEDBHdbLlB BqEizBoYIVJjVe8teIcwAiuyty6nWHpMCc7zipUR/HWDSBHxy3RoquoDzIYe7783eA4d LJMiylLP32YZHXAkuiRQEGrKLF/dm3dpttLN7m0hBzEuPRA/mcUnGGW3sgIi16/BOReV i5DHRQugSpNcIV0pAzPWv0dFM6W1E82Fckpkvpif1BMzSm4Shc5KL8DgOHPdWRCUDgtF 0dMw== X-Gm-Message-State: AN3rC/74TfmRj++AJ7bGO1hfuCOdKR7eDBVQO0EcOxfRAMhCG0qHex7c As/NMQ1Lp++OB5Ct8fM= X-Received: by 10.55.137.193 with SMTP id l184mr30298369qkd.122.1493752994825; Tue, 02 May 2017 12:23:14 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Tue, 2 May 2017 12:22:42 -0700 Message-Id: <20170502192300.2124-8-rth@twiddle.net> X-Mailer: git-send-email 2.9.3 In-Reply-To: <20170502192300.2124-1-rth@twiddle.net> References: <20170502192300.2124-1-rth@twiddle.net> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:400d:c09::242 Subject: [Qemu-devel] [PATCH v6 07/25] target/arm: optimize indirect branches 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: cota@braap.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" From: "Emilio G. Cota" Speed up indirect branches by jumping to the target if it is valid. Softmmu measurements (see later commit for user-mode results): Note: baseline (i.e. speedup =3D=3D 1x) is QEMU v2.9.0. - Impact on Boot time | setup | ARM debian jessie boot+shutdown time | stddev | |--------+--------------------------------------+--------| | v2.9.0 | 8.84 | 0.07 | | +cross | 8.85 | 0.03 | | +jr | 8.83 | 0.06 | - NBench, arm-softmmu (debian jessie guest). Hos= t: Intel i7-4790K @ 4.00GHz 1.3x +-+-----------------------------------------------------------------= --------------------------------------------+-+ | = | | cross #= ### | 1.25x +cross+jr..........................................................#= ++#.........................................+-+ | #### #= # | | +++# # #= # | | +++ **** # #= # | 1.2x +-+...................................####............*..*..#......#= ..#.........................................+-+ | **** # * * # #= # #### | | * * # * * # #= # # # | 1.15x +-+................................*..*..#............*..*..#......#= ..#.....#..#................................+-+ | * * # * * # #= # # # | | * * # #### * * # #= # # # | | * * # # # * * # #= # # # #### | 1.1x +-+................................*..*..#......#..#..*..*..#......#= ..#.....#..#.........................#..#...+-+ | * * # # # * * # #= # # # # # | | * * # # # * * # #= # # # # # | 1.05x +-+..........................####..*..*..#......#..#..*..*..#......#= ..#.....#..#......+++............*****..#...+-+ | ***** # * * # # # * * # *****= # # # +++ | ****### * * # | | *+++* # * * # # # * * # *+++*= # **** # *****### * * # * * # | | *****### +++#### * * # * * # ***** # * * # * *= # * * # * | *++# * * # * * # | 1x +-++-+*+++*-+#++****++#++*+-+*++#+-*++*++#-+*+++*-+#++*++*++#++*+-+*= ++#+-*++*++#-+*+++*-+#++*++*++#++*+-+*++#+-++-+ | * * # * * # * * # * * # * * # * * # * *= # * * # * * # * * # * * # | | * * # * * # * * # * * # * * # * * # * *= # * * # * * # * * # * * # | 0.95x +-+---*****###--****###--*****###--****###--*****###--****###--*****= ###--****###--*****###--****###--*****###---+-+ ASSIGNMENT BITFIELD FOURFP EMULATION HUFFMAN LU DECOMPOSITIONE= URAL NNUMERIC SOSTRING SORT hmean png: http://imgur.com/eOLmZNR NB. 'cross' represents the previous commit. Signed-off-by: Emilio G. Cota Message-Id: <1493263764-18657-8-git-send-email-cota@braap.org> [rth: Replace gen_jr global variable with DISAS_EXIT state.] Signed-off-by: Richard Henderson --- target/arm/translate.c | 25 ++++++++++++++++--------- target/arm/translate.h | 4 ++++ 2 files changed, 20 insertions(+), 9 deletions(-) diff --git a/target/arm/translate.c b/target/arm/translate.c index facb52f..f879da6 100644 --- a/target/arm/translate.c +++ b/target/arm/translate.c @@ -1178,7 +1178,7 @@ static void gen_exception_internal_insn(DisasContext = *s, int offset, int excp) gen_set_condexec(s); gen_set_pc_im(s, s->pc - offset); gen_exception_internal(excp); - s->is_jmp =3D DISAS_JUMP; + s->is_jmp =3D DISAS_EXC; } =20 static void gen_exception_insn(DisasContext *s, int offset, int excp, @@ -1187,14 +1187,14 @@ static void gen_exception_insn(DisasContext *s, int= offset, int excp, gen_set_condexec(s); gen_set_pc_im(s, s->pc - offset); gen_exception(excp, syn, target_el); - s->is_jmp =3D DISAS_JUMP; + s->is_jmp =3D DISAS_EXC; } =20 /* Force a TB lookup after an instruction that changes the CPU state. */ static inline void gen_lookup_tb(DisasContext *s) { tcg_gen_movi_i32(cpu_R[15], s->pc & ~1); - s->is_jmp =3D DISAS_JUMP; + s->is_jmp =3D DISAS_EXIT; } =20 static inline void gen_hlt(DisasContext *s, int imm) @@ -4146,19 +4146,23 @@ static inline bool use_goto_tb(DisasContext *s, tar= get_ulong dest) #endif } =20 -static inline void gen_goto_tb(DisasContext *s, int n, target_ulong dest) +static void gen_goto_ptr(void) +{ + TCGv addr =3D tcg_temp_new(); + tcg_gen_extu_i32_tl(addr, cpu_R[15]); + tcg_gen_lookup_and_goto_ptr(addr); + tcg_temp_free(addr); +} + +static void gen_goto_tb(DisasContext *s, int n, target_ulong dest) { if (use_goto_tb(s, dest)) { tcg_gen_goto_tb(n); gen_set_pc_im(s, dest); tcg_gen_exit_tb((uintptr_t)s->tb + n); } else { - TCGv addr =3D tcg_temp_new(); - gen_set_pc_im(s, dest); - tcg_gen_extu_i32_tl(addr, cpu_R[15]); - tcg_gen_lookup_and_goto_ptr(addr); - tcg_temp_free(addr); + gen_goto_ptr(); } } =20 @@ -12091,11 +12095,14 @@ void gen_intermediate_code(CPUARMState *env, Tran= slationBlock *tb) gen_set_pc_im(dc, dc->pc); /* fall through */ case DISAS_JUMP: + gen_goto_ptr(); + break; default: /* indicate that the hash table must be used to find the next = TB */ tcg_gen_exit_tb(0); break; case DISAS_TB_JUMP: + case DISAS_EXC: /* nothing more to generate */ break; case DISAS_WFI: diff --git a/target/arm/translate.h b/target/arm/translate.h index 629dab9..93de13f 100644 --- a/target/arm/translate.h +++ b/target/arm/translate.h @@ -139,6 +139,10 @@ static void disas_set_insn_syndrome(DisasContext *s, u= int32_t syn) * custom end-of-TB code) */ #define DISAS_BX_EXCRET 11 +/* For instructions which want an immediate exit to the main loop, + * as opposed to attempting to use lookup_and_goto_ptr. + */ +#define DISAS_EXIT 12 =20 #ifdef TARGET_AARCH64 void a64_translate_init(void); --=20 2.9.3 From nobody Tue Apr 30 02:32:47 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.zoho.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 1493753110800361.28789447504835; Tue, 2 May 2017 12:25:10 -0700 (PDT) Received: from localhost ([::1]:33283 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d5dQ5-0003Lf-Gk for importer@patchew.org; Tue, 02 May 2017 15:25:09 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:59445) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d5dOI-0001kL-FW for qemu-devel@nongnu.org; Tue, 02 May 2017 15:23:19 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1d5dOH-0001am-AQ for qemu-devel@nongnu.org; Tue, 02 May 2017 15:23:18 -0400 Received: from mail-qk0-x244.google.com ([2607:f8b0:400d:c09::244]:35803) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1d5dOH-0001aO-6T for qemu-devel@nongnu.org; Tue, 02 May 2017 15:23:17 -0400 Received: by mail-qk0-x244.google.com with SMTP id u68so7538998qkd.2 for ; Tue, 02 May 2017 12:23:17 -0700 (PDT) Received: from bigtime.twiddle.net.com ([2602:47:d954:1500:5e51:4fff:fe40:9c64]) by smtp.gmail.com with ESMTPSA id d65sm10664657qkc.53.2017.05.02.12.23.14 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 02 May 2017 12:23:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=UqF5hJIO5G6pT2YlF1JFUFz4qbZwSVm32VIL7xLd+HA=; b=UK95O3Ze1ow9YJdpnzzkNHiAezd8eSI+yKee7hOe9I5nXoTNdY5mSKW1Ypelmgf/2U nV3R4jvpqVxtX6eeGma5Ifz7x1rl9Adrld48HazlDpcsiURsl+Eg35HSeEGkLmCuyFYF +Fs0NrpZMgI9a9D86W+6wMZ2qD9WhFAdD+URWdMIdG7GC7phAUVx+pCiEt2uCK5u/c+r L5ieIqILdpK1Sm0cZ4e8Wqe1WtWp+ULix8r1pisjpks8hFPYCGSgWZpIcbka5wxSB4sb NnThvstkoJH8RapXxM6eOd+Ei9S6OmFzzACMvMASjMqOY/qCbT9JsTjAlPcYpe7WqCfj Ropg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references:mime-version:content-transfer-encoding; bh=UqF5hJIO5G6pT2YlF1JFUFz4qbZwSVm32VIL7xLd+HA=; b=qMW95nptwZIufaugvWL5lbrsI6yTgjU06ekhCbXnWgdUP0DFz7TOZipTo/IL3lCowj TAleV8f7o9oytGVnCb/0X4mkUggH/ALOdBWqTjo+kuH6mfNgEvlsGW9ZlexcjxuQuO8/ U5lzusrYRf+T448ziDRM5pOO7PA3Z9uyu0189Jz8IvvzIvS81YYIj0wNvbX04nYJcxFH tz+fzGn1D5T2x1qeEcYP3LsOdyaj2/W+tMDCSzLK2/Mv8hQmhNUpmHgIpo5GMT9dMGLI cfF0qhRgPV/rR1OUO+EIGLc14RG/5CNEHmPwJ6ruYxsRqZbtLKQNB/ryPR+evK8p2ACs gq9A== X-Gm-Message-State: AN3rC/5joO5NNrWzqzJwlZxbufVmd17L9qtgYS2ohGTM1uKstBBhHzbu x6JbXRYRaEFPHw== X-Received: by 10.55.124.71 with SMTP id x68mr2818325qkc.319.1493752996156; Tue, 02 May 2017 12:23:16 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Tue, 2 May 2017 12:22:43 -0700 Message-Id: <20170502192300.2124-9-rth@twiddle.net> X-Mailer: git-send-email 2.9.3 In-Reply-To: <20170502192300.2124-1-rth@twiddle.net> References: <20170502192300.2124-1-rth@twiddle.net> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:400d:c09::244 Subject: [Qemu-devel] [PATCH v6 08/25] target/i386: introduce gen_jr helper to generate lookup_and_goto_ptr 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: cota@braap.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 From: "Emilio G. Cota" This helper will be used by subsequent changes. Reviewed-by: Alex Benn=C3=A9e Signed-off-by: Emilio G. Cota Message-Id: <1493263764-18657-9-git-send-email-cota@braap.org> Signed-off-by: Richard Henderson --- target/i386/translate.c | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/target/i386/translate.c b/target/i386/translate.c index 1d1372f..f0e48dc 100644 --- a/target/i386/translate.c +++ b/target/i386/translate.c @@ -141,6 +141,7 @@ typedef struct DisasContext { } DisasContext; =20 static void gen_eob(DisasContext *s); +static void gen_jr(DisasContext *s, TCGv dest); static void gen_jmp(DisasContext *s, target_ulong eip); static void gen_jmp_tb(DisasContext *s, target_ulong eip, int tb_num); static void gen_op(DisasContext *s1, int op, TCGMemOp ot, int d); @@ -2509,7 +2510,8 @@ static void gen_bnd_jmp(DisasContext *s) If INHIBIT, set HF_INHIBIT_IRQ_MASK if it isn't already set. If RECHECK_TF, emit a rechecking helper for #DB, ignoring the state of S->TF. This is used by the syscall/sysret insns. */ -static void gen_eob_worker(DisasContext *s, bool inhibit, bool recheck_tf) +static void +do_gen_eob_worker(DisasContext *s, bool inhibit, bool recheck_tf, TCGv jr) { gen_update_cc_op(s); =20 @@ -2530,12 +2532,27 @@ static void gen_eob_worker(DisasContext *s, bool in= hibit, bool recheck_tf) tcg_gen_exit_tb(0); } else if (s->tf) { gen_helper_single_step(cpu_env); + } else if (!TCGV_IS_UNUSED(jr)) { + TCGv vaddr =3D tcg_temp_new(); + + tcg_gen_add_tl(vaddr, jr, cpu_seg_base[R_CS]); + tcg_gen_lookup_and_goto_ptr(vaddr); + tcg_temp_free(vaddr); } else { tcg_gen_exit_tb(0); } s->is_jmp =3D DISAS_TB_JUMP; } =20 +static inline void +gen_eob_worker(DisasContext *s, bool inhibit, bool recheck_tf) +{ + TCGv unused; + + TCGV_UNUSED(unused); + do_gen_eob_worker(s, inhibit, recheck_tf, unused); +} + /* End of block. If INHIBIT, set HF_INHIBIT_IRQ_MASK if it isn't already set. */ static void gen_eob_inhibit_irq(DisasContext *s, bool inhibit) @@ -2549,6 +2566,12 @@ static void gen_eob(DisasContext *s) gen_eob_worker(s, false, false); } =20 +/* Jump to register */ +static void gen_jr(DisasContext *s, TCGv dest) +{ + do_gen_eob_worker(s, false, false, dest); +} + /* generate a jump to eip. No segment change must happen before as a direct call to the next block may occur */ static void gen_jmp_tb(DisasContext *s, target_ulong eip, int tb_num) --=20 2.9.3 From nobody Tue Apr 30 02:32:47 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.zoho.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 1493753388383682.3266507675885; Tue, 2 May 2017 12:29:48 -0700 (PDT) Received: from localhost ([::1]:33312 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d5dUY-0007Nb-3X for importer@patchew.org; Tue, 02 May 2017 15:29:46 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:59447) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d5dOI-0001kf-OU for qemu-devel@nongnu.org; Tue, 02 May 2017 15:23:19 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1d5dOH-0001bJ-Tl for qemu-devel@nongnu.org; Tue, 02 May 2017 15:23:18 -0400 Received: from mail-qk0-x244.google.com ([2607:f8b0:400d:c09::244]:32974) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1d5dOH-0001ay-Ow for qemu-devel@nongnu.org; Tue, 02 May 2017 15:23:17 -0400 Received: by mail-qk0-x244.google.com with SMTP id o85so22940662qkh.0 for ; Tue, 02 May 2017 12:23:17 -0700 (PDT) Received: from bigtime.twiddle.net.com ([2602:47:d954:1500:5e51:4fff:fe40:9c64]) by smtp.gmail.com with ESMTPSA id d65sm10664657qkc.53.2017.05.02.12.23.16 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 02 May 2017 12:23:16 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references; bh=A4MgwEOeX4xKUWBJTE5PamsNzrZJ4Ns/0VBFdKYA+hE=; b=l2GW88ZrpVlNl0JJE/9kVJAnAHz61Xib5buTi224A7XFgRCWWUXaMkNDmJij5OZImn Ebv7wi+gJ2zsG4mC7bSAh/9fHPtsiHRmNFQsHwvQDWmMg2kC6Eu9FnyQVT+4FWzNFiv5 E1c/bKKdEo+FVK1CLCy1DdCX+21hkrH8p/42kwEHuXNPWGHrhkQ5BUEz+vEec6sf9ISu zrsGH0LughphCx9VOSl0bvKE4iZzfn053zImaTM2FR7FfFIxzthnyWmM+ULrxIofG1LZ dZh3PBa9TPIxNjArVJFq1XGEX2cWtL3NSS2KzBMUHDPnD9/JLsAvUUeUEAaDxX1F1cX7 852A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references; bh=A4MgwEOeX4xKUWBJTE5PamsNzrZJ4Ns/0VBFdKYA+hE=; b=JWwE1Izk5cblL8ysIlA/+/13/bg0HIpJznDYPezjmViWlIi7QA0v5aCq5KEWDf9myu 4zYkeMZTZOVyV3ww9Moqd8WKKhBt6yqzWvZ4XlDKJCmSmmwxX0eoji2AS195pGtg5oCZ L5HM0i9gI2dgf0cetagu/gY3Od21Pry25D4a63n7qnA/4Z+Fzb5J6MAMaM5dKQKfDJ0t 3URhDEBUGt93DUGMic/5/Q1dKc3Mdkgyfj7pCi4czf/frLMCX81kScLy7nnMHY0kHiYZ sj39iJEhHyI7mjOmZde9rtSBKEXrm+ZqLqihA9plu+UHXpB6bjkXLUnMy1mp/2avvtgR wX+Q== X-Gm-Message-State: AN3rC/79QlvSg5s41Coo0SW0+ZbDGMOGTwP8Lx6ejei0ODUCaPHMzWyI Wm9kVeULeyxVyg== X-Received: by 10.55.176.135 with SMTP id z129mr26815885qke.308.1493752997411; Tue, 02 May 2017 12:23:17 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Tue, 2 May 2017 12:22:44 -0700 Message-Id: <20170502192300.2124-10-rth@twiddle.net> X-Mailer: git-send-email 2.9.3 In-Reply-To: <20170502192300.2124-1-rth@twiddle.net> References: <20170502192300.2124-1-rth@twiddle.net> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:400d:c09::244 Subject: [Qemu-devel] [PATCH v6 09/25] target/i386: optimize cross-page direct jumps in softmmu 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: cota@braap.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" From: "Emilio G. Cota" Instead of unconditionally exiting to the exec loop, use the gen_jr helper to jump to the target if it is valid. Perf impact: see next commit's log. Reviewed-by: Richard Henderson Signed-off-by: Emilio G. Cota Message-Id: <1493263764-18657-10-git-send-email-cota@braap.org> Signed-off-by: Richard Henderson --- target/i386/translate.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/target/i386/translate.c b/target/i386/translate.c index f0e48dc..ea113fe 100644 --- a/target/i386/translate.c +++ b/target/i386/translate.c @@ -2154,9 +2154,9 @@ static inline void gen_goto_tb(DisasContext *s, int t= b_num, target_ulong eip) gen_jmp_im(eip); tcg_gen_exit_tb((uintptr_t)s->tb + tb_num); } else { - /* jump to another page: currently not optimized */ + /* jump to another page */ gen_jmp_im(eip); - gen_eob(s); + gen_jr(s, cpu_tmp0); } } =20 --=20 2.9.3 From nobody Tue Apr 30 02:32:47 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.zoho.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 149375343612553.56770149354713; Tue, 2 May 2017 12:30:36 -0700 (PDT) Received: from localhost ([::1]:33320 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d5dVJ-0008P5-Np for importer@patchew.org; Tue, 02 May 2017 15:30:33 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:59464) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d5dOK-0001nk-QF for qemu-devel@nongnu.org; Tue, 02 May 2017 15:23:22 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1d5dOJ-0001cj-KF for qemu-devel@nongnu.org; Tue, 02 May 2017 15:23:20 -0400 Received: from mail-qk0-x244.google.com ([2607:f8b0:400d:c09::244]:35810) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1d5dOJ-0001cR-Eh for qemu-devel@nongnu.org; Tue, 02 May 2017 15:23:19 -0400 Received: by mail-qk0-x244.google.com with SMTP id u68so7539189qkd.2 for ; Tue, 02 May 2017 12:23:19 -0700 (PDT) Received: from bigtime.twiddle.net.com ([2602:47:d954:1500:5e51:4fff:fe40:9c64]) by smtp.gmail.com with ESMTPSA id d65sm10664657qkc.53.2017.05.02.12.23.17 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 02 May 2017 12:23:18 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=Sx8VeNiHYqaw+o/aOtYXyhpMRTHBwDTJUlE4NWD2wIk=; b=UA+ecQ2RFd+HfRJTfwnz5+t8zQuXyOUBh5HJvfTBfOd5knKa68PZfgj/ww6PHg5ItT ENj13ApXqQUN8fHSZMAGUQfmyWOk/TVo11h5Akfq9vZzWYVt9wN7kDY3EzmDfXF4TQBZ 95QdgArqaxcsxbJIEjTNqW3D5lpJxS/krt3dTWDWVCMwXcPPeba6wmxZ3RtaL/kHxI8l yMtPfE00PwX98IjsEK3hEnrMgX1hLrISQzELrLiOEsDtNNzCtcVzSd/NB81fEQWPHuEH YNIHnKOGja2+ou8mTpJBFN5CI1h4sq0ECKW+tb1SYozzbMx/y075+WX7cobcU4R89/Bt x70A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references:mime-version:content-transfer-encoding; bh=Sx8VeNiHYqaw+o/aOtYXyhpMRTHBwDTJUlE4NWD2wIk=; b=QoQzA3ArxLt3eSAjXQCCIY2trBeH4q/5noOcGvMnRDYeFvo0TuNEgeQvooWuoN8y/v m0ftFJObhaiEm3eO/0t78rwooe9ok0+QLXYMmgKW+RshcXo50R8YjRJR5TFK7SW/TGJm R9XUx6i8z9QzMz2P3f3TNi67P5ey6GOEDXy4NqjfxqOzWvSTGitv62KWJXMH2/g1f6ib ZQSDE0ritvpxtL+op6UFS91cI0LVhFeKpiATgZhmbqW04iMuNKC1MIyQQK7YQZxxhWf8 McJPFXMjVn5CTRDyFYDyWiekUM/f85WZCLz7VczxyTEZkq9Qmp6+9bA10T/H8/Jyraa1 KjCQ== X-Gm-Message-State: AN3rC/5c668rgYSCS8hcoaJgLgjzeCtc3dAdumLCocqNuEs9PVuOA18a 5W2p44UhubPvTdBDYyU= X-Received: by 10.55.22.131 with SMTP id 3mr26876775qkw.16.1493752998714; Tue, 02 May 2017 12:23:18 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Tue, 2 May 2017 12:22:45 -0700 Message-Id: <20170502192300.2124-11-rth@twiddle.net> X-Mailer: git-send-email 2.9.3 In-Reply-To: <20170502192300.2124-1-rth@twiddle.net> References: <20170502192300.2124-1-rth@twiddle.net> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:400d:c09::244 Subject: [Qemu-devel] [PATCH v6 10/25] target/i386: optimize indirect branches 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: cota@braap.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 From: "Emilio G. Cota" Speed up indirect branches by jumping to the target if it is valid. Softmmu measurements (see later commit for user-mode numbers): Note: baseline (i.e. speedup =3D=3D 1x) is QEMU v2.9.0. - SPECint06 (test set), x86_64-softmmu (Ubuntu 16.04 guest= ). Host: Intel i7-4790K @ 4.00GHz 2.4x +-+------------------------------------------------------------------= --------------------------------------------+-+ | = | | cross = | 2.2x +cross+jr............................................................= ..............+++...........................+-+ | = | | | = +++ | | 2x +-+..................................................................= ............|..|............................+-+ | = | | | | = | | | 1.8x +-+..................................................................= ............|####...........................+-+ | = |# |# | | = **** |# | 1.6x +-+..................................................................= ..........*.|*.|#...........................+-+ | = * |* |# | | = * |* |# | 1.4x +-+..................................................................= .....+++..*.|*.|#...........................+-+ | ++++++ = #### * |*++# +++ | | +++ | | = #++# *++* # +++ | | 1.2x +-+......................###.....####....+++............|..|.........= ..****..#.*..*..#....####...|.###.....####..+-+ | +++ **** # **** # #### ***### = *++* # * * # #++# ****|# +++#++# | | ****### +++ *++* # *++* # ++# # #### *|* |# +++= * * # * * # *** # *| *|# **** # | 1x +-++-*++*++#++***###++*++*+#++*+-*++#+****++#++***++#+-*+*++#-+****##= ++*++*-+#+*++*-+#++*+*++#++*-+*+#++*++*++#-++-+ | * * # * * # * * # * * # * * # * * # *|* |# *++* #= * * # * * # * * # * * # * * # | | * * # * * # * * # * * # * * # * * # *+*++# * * #= * * # * * # * * # * * # * * # | 0.8x +-+--****###--***###--****##--****###-****###--***###--***###--****##= --****###-****###--***###--****##--****###--+-+ astar bzip2 gcc gobmk h264ref hmmlibquantum mcf om= netpperlbench sjengxalancbmk hmean png: http://imgur.com/DU36YFU NB. 'cross' represents the previous commit. Reviewed-by: Alex Benn=C3=A9e Reviewed-by: Richard Henderson Signed-off-by: Emilio G. Cota Message-Id: <1493263764-18657-11-git-send-email-cota@braap.org> Signed-off-by: Richard Henderson --- target/i386/translate.c | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/target/i386/translate.c b/target/i386/translate.c index ea113fe..674ec96 100644 --- a/target/i386/translate.c +++ b/target/i386/translate.c @@ -4996,7 +4996,7 @@ static target_ulong disas_insn(CPUX86State *env, Disa= sContext *s, gen_push_v(s, cpu_T1); gen_op_jmp_v(cpu_T0); gen_bnd_jmp(s); - gen_eob(s); + gen_jr(s, cpu_T0); break; case 3: /* lcall Ev */ gen_op_ld_v(s, ot, cpu_T1, cpu_A0); @@ -5014,7 +5014,8 @@ static target_ulong disas_insn(CPUX86State *env, Disa= sContext *s, tcg_const_i32(dflag - 1), tcg_const_i32(s->pc - s->cs_base)); } - gen_eob(s); + tcg_gen_ld_tl(cpu_tmp4, cpu_env, offsetof(CPUX86State, eip)); + gen_jr(s, cpu_tmp4); break; case 4: /* jmp Ev */ if (dflag =3D=3D MO_16) { @@ -5022,7 +5023,7 @@ static target_ulong disas_insn(CPUX86State *env, Disa= sContext *s, } gen_op_jmp_v(cpu_T0); gen_bnd_jmp(s); - gen_eob(s); + gen_jr(s, cpu_T0); break; case 5: /* ljmp Ev */ gen_op_ld_v(s, ot, cpu_T1, cpu_A0); @@ -5037,7 +5038,8 @@ static target_ulong disas_insn(CPUX86State *env, Disa= sContext *s, gen_op_movl_seg_T0_vm(R_CS); gen_op_jmp_v(cpu_T1); } - gen_eob(s); + tcg_gen_ld_tl(cpu_tmp4, cpu_env, offsetof(CPUX86State, eip)); + gen_jr(s, cpu_tmp4); break; case 6: /* push Ev */ gen_push_v(s, cpu_T0); @@ -6417,7 +6419,7 @@ static target_ulong disas_insn(CPUX86State *env, Disa= sContext *s, /* Note that gen_pop_T0 uses a zero-extending load. */ gen_op_jmp_v(cpu_T0); gen_bnd_jmp(s); - gen_eob(s); + gen_jr(s, cpu_T0); break; case 0xc3: /* ret */ ot =3D gen_pop_T0(s); @@ -6425,7 +6427,7 @@ static target_ulong disas_insn(CPUX86State *env, Disa= sContext *s, /* Note that gen_pop_T0 uses a zero-extending load. */ gen_op_jmp_v(cpu_T0); gen_bnd_jmp(s); - gen_eob(s); + gen_jr(s, cpu_T0); break; case 0xca: /* lret im */ val =3D cpu_ldsw_code(env, s->pc); --=20 2.9.3 From nobody Tue Apr 30 02:32:47 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.zoho.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 1493753850075151.55826541160252; Tue, 2 May 2017 12:37:30 -0700 (PDT) Received: from localhost ([::1]:33362 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d5dbz-0005Sb-Mt for importer@patchew.org; Tue, 02 May 2017 15:37:27 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:59487) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d5dOM-0001q3-Rp for qemu-devel@nongnu.org; Tue, 02 May 2017 15:23:26 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1d5dOL-0001dw-2B for qemu-devel@nongnu.org; Tue, 02 May 2017 15:23:22 -0400 Received: from mail-qt0-x243.google.com ([2607:f8b0:400d:c0d::243]:32877) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1d5dOK-0001dc-TD for qemu-devel@nongnu.org; Tue, 02 May 2017 15:23:20 -0400 Received: by mail-qt0-x243.google.com with SMTP id c45so21742430qtb.0 for ; Tue, 02 May 2017 12:23:20 -0700 (PDT) Received: from bigtime.twiddle.net.com ([2602:47:d954:1500:5e51:4fff:fe40:9c64]) by smtp.gmail.com with ESMTPSA id d65sm10664657qkc.53.2017.05.02.12.23.18 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 02 May 2017 12:23:19 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=Bn8ht2JwEYe+vTKPxUEZjoNNVAsQsgOakso8Qn7Q/so=; b=tXWwAGbzmK9Ay50GAQfgYfIqDY5dCwNKyDj2ZSP3yP0OvUSm2WgKkHM+VaW7WUimmT lf9+cqY6N3wYgnaurm26eeXmOcQU/nF4waipL+9fXiKP635eigC8vqiMKJfSEy/J+foZ cu6BhN8U5+6s1g789WFo9s5Q+8q48RZgv9I3Qa2mlmjSyg8ieWOcYV+uoag/iCDFhuzW jFSXjDHJugSUORLseZ4OyDjkHkOJHg2TZScO6uBnopb6omEs/WkpVbHDRMkboKrzcuHT YO11IracSjBdnfJx3HhnMNcZIlAQt4WOfYa2/RpZmuVDQJsF5vOpVGRWWW91/zoBEPnD fagw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references:mime-version:content-transfer-encoding; bh=Bn8ht2JwEYe+vTKPxUEZjoNNVAsQsgOakso8Qn7Q/so=; b=SxDlfxh+1RE/DiJ2m31JXj01Siqm3F5HdYfJ3F9QYngECKW1Fw/6vtYgXAKr/iu73G jfz3mglnQhsw1gQ3r0tpuVtGML1l2/xzcX4zhLdPMqeK+XtG93HNfX91BSQLf8bT/Nb/ Kpk+4B4J9mdpW8SAcbfGnYFDmq8ItMWWoZ3A/oXdw6lNKXxYFMlOs4sg8uZ69g5cvZts iENBmks2NAmG/C9eRJcQcWDdIONvPrrsQjuJ0bIN0rr/aOjFtDfV1Xf93b+m07UglSLw +CjsNhv2qk5z5gECr8nYEKD3emX9+caHOIumovZ83micmVE5y310P4wHvy5XTru8jZk9 bHiw== X-Gm-Message-State: AN3rC/6Eox61AP01JmDyVpgprC4Z63ZmIpTEH1YTyOvifKj9DDt4bsQa FrN2Qpw7s9QdlWueXo0= X-Received: by 10.200.37.70 with SMTP id 6mr30042451qtn.130.1493753000010; Tue, 02 May 2017 12:23:20 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Tue, 2 May 2017 12:22:46 -0700 Message-Id: <20170502192300.2124-12-rth@twiddle.net> X-Mailer: git-send-email 2.9.3 In-Reply-To: <20170502192300.2124-1-rth@twiddle.net> References: <20170502192300.2124-1-rth@twiddle.net> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:400d:c0d::243 Subject: [Qemu-devel] [PATCH v6 11/25] tb-hash: improve tb_jmp_cache hash function in user mode 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: cota@braap.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 From: "Emilio G. Cota" Optimizations to cross-page chaining and indirect branches make performance more sensitive to the hit rate of tb_jmp_cache. The constraint of reserving some bits for the page number lowers the achievable quality of the hashing function. However, user-mode does not have this requirement. Thus, with this change we use for user-mode a hashing function that is both faster and of better quality than the previous one. Measurements: Note: baseline (i.e. speedup =3D=3D 1x) is QEMU v2.9.0. - SPECint06 (test set), x86_64-linux-user. Host: = Intel i7-6700K @ 4.00GHz 2.2x +-+------------------------------------------------------------------= --------------------------------------------+-+ | = | | jr = | 2x +jr+multhash +................................................= ....+++++...................................+-+ | jr+hash = |$$$ | | = |$+$ | | = ### $ | 1.8x +-+..................................................................= ....#|#.$...................................+-+ | = ++#+# $ | | = |# # $ | 1.6x +-+..................................................................= ..***.#.$....................++$$$..........+-+ | $$$ = *+* # $ |$+$ | | ++$$$ ### $ = * * # $ +++|$ $ | | ++###+$ # # $ = * * # $ ### ****## $ | 1.4x +-+...................***+#.$.........***.#.$........................= ..*.*.#.$...........#+#$$.*++*|#.$..........+-+ | *+* # $ * * # $ = * * # $ # # $ * *+# $ | | * * # $ +++++ * * # $ = * * # $ *** # $ * * # $ ###$$ | 1.2x +-+...................*.*.#.$.***##$$.*.*.#.$........................= ..*.*.#.$.........*.*.#.$.*..*.#.$.***+#+$..+-+ | * * # $ *+* # $ * * # $ +++ = * * # $ ++###$$ * * # $ * * # $ * * # $ | | ***##$$ * * # $ * * # $ * * # $ ***##$$ ++### = * * # $ *** #+$ * * # $ * * # $ * * # $ | | *+*+#+$ ***##$$$ * * # $ * * # $ * * # $ *+* # $ ++####$$ ***+# = * * # $ * * # $ * * # $ * * # $ * * # $ | 1x +-++-*+*+#+$+*+*+#-+$+*+*-#+$+*+*+#+$+*+*+#+$+*-*+#+$+***++#+$+*+*+#$= $+*+*+#+$+*+*+#+$+*+*-#+$+*+-*+#+$+*+*+#+$-++-+ | * * # $ * * # $ * * # $ * * # $ * * # $ * * # $ * * # $ * * # = $ * * # $ * * # $ * * # $ * * # $ * * # $ | | * * # $ * * # $ * * # $ * * # $ * * # $ * * # $ * * # $ * * # = $ * * # $ * * # $ * * # $ * * # $ * * # $ | 0.8x +-+--***##$$-***##$$$-***##$$-***##$$-***##$$-***##$$-***###$$-***##$= $-***##$$-***##$$-***##$$-****##$$-***##$$--+-+ astar bzip2 gcc gobmk h264ref hmmlibquantum mcf om= netpperlbench sjengxalancbmk hmean png: http://imgur.com/4UXTrEc Here I also tried the hash function suggested by Paolo ("multhash"): return ((uint64_t) (pc * 2654435761) >> 32) & (TB_JMP_CACHE_SIZE - 1); As you can see it is just as good as the other new function ("hash"), which is what I ended up going with. - SPECint06 (train set), x86_64-linux-user. Host: = Intel i7-6700K @ 4.00GHz 2.6x +-+------------------------------------------------------------------= --------------------------------------------+-+ | = | | jr = ### | 2.4x +jr+hash.............................................................= ..............................#.#...........+-+ | = # # | | = # # | 2.2x +-+..................................................................= ..............................#.#...........+-+ | = # # | | = # # | 2x +-+..................................................................= ..............................#.#...........+-+ | = **** # | | = * * # | 1.8x +-+..................................................................= ...........................*..*.#...........+-+ | = +++ * * # | | = #### #### * * # | 1.6x +-+......................................####........................= .....#..#.****..#..........*..*.#...........+-+ | +++ #++# = **** # * * # #### * * # | | ### # # = * * # * * # # # * * # | 1.4x +-+...................****+#..........****..#........................= ..*..*..#.*..*..#....#..#..*..*.#...........+-+ | *++* # * * # = * * # * * # *** # * * # #### | | * * # #### * * # = * * # * * # * * # * * # **** # | 1.2x +-+...................*..*.#..****++#.*..*..#........................= ..*..*..#.*..*..#..*.*..#..*..*.#..*..*..#..+-+ | ****### * * # * * # * * # = * * # * * # * * # * * # * * # | | * * # ***### * * # * * # * * # ****##= * * # * * # * * # * * # * * # | 1x +-+--****###--***###--****##--****###-****###--***###--***###--****##= --****###-****###--***###--****##--****###--+-+ astar bzip2 gcc gobmk h264ref hmmlibquantum mcf om= netpperlbench sjengxalancbmk hmean png: http://imgur.com/ArCbHqo - NBench, x86_64-linux-user. Host: Intel= i7-6700K @ 4.00GHz 1.12x +-+-----------------------------------------------------------------= --------------------------------------------+-+ | = | | jr += ++ | 1.1x +jr+hash...........................................................#= ###.........................................+-+ | +++#= | # | | | #= ++# | 1.08x +-+................................+++................+++.+++..*****= ..#.........................................+-+ | | +++ | | * | *= # | | | | | | *+++*= # | 1.06x +-+................................****###.............|...|...*...*= ..#.........................+++.............+-+ | *| * |# ****### * *= # | | | *| *++# *| * |# * *= # #### | 1.04x +-+................................*++*..#............*|.*.|#..*...*= ..#........................#.|#.............+-+ | * * # *++*++# * *= # +++#++# | | * * # * * # * *= # | # # +++#### | 1.02x +-+................................*..*..#......+++...*..*..#..*...*= ..#.....................****..#..*****++#...+-+ | +++ * * # +++ | * * # * *= # +++ *| * # *+++* # | | +++ | +++ +++ ++++++ * * # *****### * * # * *= # | +++ ++++++ *++* # * * # | 1x +-++-+++++####++****###++++-+####+-*++*++#-+*+++*-+#++*++*++#++*+-+*= ++#+-+++####-+*****###++*++*++#++*+-+*++#+-++-+ | *****| # *++* |# *****| # * * # * *++# * * # * *= # **** |# * * # * * # * * # | | * | *| # * *++# * | *++# * * # * * # * * # * *= # *| *++# * * # * * # * * # | 0.98x +-+...*.|.*++#..*..*..#..*+++*..#..*..*..#..*...*..#..*..*..#..*...*= ..#..*++*..#..*...*..#..*..*..#..*...*..#...+-+ | *+++* # * * # * * # * * # * * # * * # * *= # * * # * * # * * # * * # | | * * # * * # * * # * * # * * # * * # * *= # * * # * * # * * # * * # | 0.96x +-+---*****###--****###--*****###--****###--*****###--****###--*****= ###--****###--*****###--****###--*****###---+-+ ASSIGNMENT BITFIELD FOURFP EMULATION HUFFMAN LU DECOMPOSITIONE= URAL NNUMERIC SOSTRING SORT hmean png: http://imgur.com/ZXFX0hJ - NBench, arm-linux-user. Host: Intel i7-= 4790K @ 4.00GHz 1.3x +-+-----------------------------------------------------------------= --------------------------------------------+-+ | #### = | | jr # # = +++ | 1.25x +jr+hash.....................#..#...................................= ........####................................+-+ | # # = # # | | # # = # # | 1.2x +-+..........................#..#...................................= ........#..#................................+-+ | # # = # # | | # # = # # | 1.15x +-+..........................#..#...................................= ........#..#................................+-+ | # # #= ### # # | | # # #= # # # | 1.1x +-+..........................#..#..................................#= ..#.....#..#................................+-+ | # # #= # # # +++ | | # # #### #= # # # #### | 1.05x +-+..........................#..#...............#..#.....####......#= ..#.....#..#.........................#..#...+-+ | # # # # # # #= # # # +++ # # | | +++ ***** # #### ***** # # # +++#= # **** # ****### # # | 1x +-++-+*****###++****+++++*+-+*++#+-****++#-+*+++*-+#+++++#++#++*****= ++#+-*++*++#-+*****-++++*++*++#++*****++#+-++-+ | * * # * * | * * # * * # * * # **** # * *= # * * # * *### * *++# * * # | | * * # * *### * * # * * # * * # * * # * *= # * * # * * # * * # * * # | 0.95x +-+...*...*..#..*..*.|#..*...*..#..*..*..#..*...*..#..*..*..#..*...*= ..#..*..*..#..*...*..#..*..*..#..*...*..#...+-+ | * * # * * |# * * # * * # * * # * * # * *= # * * # * * # * * # * * # | | * * # * * |# * * # * * # * * # * * # * *= # * * # * * # * * # * * # | 0.9x +-+---*****###--****###--*****###--****###--*****###--****###--*****= ###--****###--*****###--****###--*****###---+-+ ASSIGNMENT BITFIELD FOURFP EMULATION HUFFMAN LU DECOMPOSITIONE= URAL NNUMERIC SOSTRING SORT hmean png: http://imgur.com/FfD27ey Reviewed-by: Alex Benn=C3=A9e Reviewed-by: Richard Henderson Signed-off-by: Emilio G. Cota Message-Id: <1493263764-18657-12-git-send-email-cota@braap.org> Signed-off-by: Richard Henderson --- include/exec/tb-hash.h | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/include/exec/tb-hash.h b/include/exec/tb-hash.h index 2c27490..b1fe2d0 100644 --- a/include/exec/tb-hash.h +++ b/include/exec/tb-hash.h @@ -22,6 +22,8 @@ =20 #include "exec/tb-hash-xx.h" =20 +#ifdef CONFIG_SOFTMMU + /* Only the bottom TB_JMP_PAGE_BITS of the jump cache hash bits vary for addresses on the same page. The top bits are the same. This allows TLB invalidation to quickly clear a subset of the hash table. */ @@ -45,6 +47,16 @@ static inline unsigned int tb_jmp_cache_hash_func(target= _ulong pc) | (tmp & TB_JMP_ADDR_MASK)); } =20 +#else + +/* In user-mode we can get better hashing because we do not have a TLB */ +static inline unsigned int tb_jmp_cache_hash_func(target_ulong pc) +{ + return (pc ^ (pc >> TB_JMP_CACHE_BITS)) & (TB_JMP_CACHE_SIZE - 1); +} + +#endif /* CONFIG_SOFTMMU */ + static inline uint32_t tb_hash_func(tb_page_addr_t phys_pc, target_ulong pc, uint32_t fl= ags) { --=20 2.9.3 From nobody Tue Apr 30 02:32:47 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.zoho.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 1493753397895885.1426724813716; Tue, 2 May 2017 12:29:57 -0700 (PDT) Received: from localhost ([::1]:33314 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d5dUi-0007bk-JJ for importer@patchew.org; Tue, 02 May 2017 15:29:56 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:59486) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d5dOM-0001q2-RZ for qemu-devel@nongnu.org; Tue, 02 May 2017 15:23:26 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1d5dOL-0001ep-VR for qemu-devel@nongnu.org; Tue, 02 May 2017 15:23:22 -0400 Received: from mail-qt0-x244.google.com ([2607:f8b0:400d:c0d::244]:36161) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1d5dOL-0001eV-SD for qemu-devel@nongnu.org; Tue, 02 May 2017 15:23:21 -0400 Received: by mail-qt0-x244.google.com with SMTP id t52so21724850qtb.3 for ; Tue, 02 May 2017 12:23:21 -0700 (PDT) Received: from bigtime.twiddle.net.com ([2602:47:d954:1500:5e51:4fff:fe40:9c64]) by smtp.gmail.com with ESMTPSA id d65sm10664657qkc.53.2017.05.02.12.23.20 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 02 May 2017 12:23:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references; bh=J1rjkpjIDXi2yU645dTm3yUHIGMCITTDyhEvIXPjjMI=; b=NplpeW42m9KrbFXHPheaffm3NcU0+ZqIEEvlOo0jygn8ijZFy9OrCrjOrUg7uDBRuV b28qkzKDzMn7MyRopTzZUS7pqAxpdLc/dsTPcJrNx5jMLeHpzeXlOJR2YgLfITKPr7q+ vfu4hg9kcXEyqScudQ8YIT8lgLcFmw9rURMQMdBVn+SdmTrYY6qpv9Q4iV4Y3TpnwBS3 7+mSt73zOMUqutcvdnPjXK95ImW2fq7+juKNob8XUujWv+Hq1/6pacuISFLXfYw0aEor KfB95Zo0h05BXv4xBUhghgEEtVCyJ2K59mJo1eCUSSoaaZ1LbV1Q0N9yplakMWgI9Y07 NZRA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references; bh=J1rjkpjIDXi2yU645dTm3yUHIGMCITTDyhEvIXPjjMI=; b=AeHIa1qCnilWADYz/HfZOCDYyAEK9N1TojMldeSF0yfEqhg2wPavpnXZhlbKIxeBbC eDuM09tAEVeQo7SlslVB9aAq/Tk7ExL3ZTsBjzsViL/d0ZSof1po+K1gu9b/b7MvOd9m j6k6U7uF8bu8WrTG9U21NCqktlzBz3VqXjm/ljbzUOJnTnF1Bgr80ku1TEWeXBHK0uqC r4WV+tJnHIEAHg5CVv5PpxX+jCqO8wZG3QVH6RAhsJTKovJtYIJYEKPedsYg/M8zU6ye ZFvhj1++OsdEav2TOGvjUA+HilvyysKduyYvz0bvE+ASNfGy4ZaRQUEiRUfRphBOxAbY 6Ncw== X-Gm-Message-State: AN3rC/6DFOMr02uTmEC1LOllrJC5LxEW9eW7ajSr/mt7m9VLgwmFqXUL 28UZFh7ko+aiSzhU3mw= X-Received: by 10.237.61.170 with SMTP id i39mr31403061qtf.245.1493753001182; Tue, 02 May 2017 12:23:21 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Tue, 2 May 2017 12:22:47 -0700 Message-Id: <20170502192300.2124-13-rth@twiddle.net> X-Mailer: git-send-email 2.9.3 In-Reply-To: <20170502192300.2124-1-rth@twiddle.net> References: <20170502192300.2124-1-rth@twiddle.net> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:400d:c0d::244 Subject: [Qemu-devel] [PATCH v6 12/25] tcg/ppc: Implement goto_ptr 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: cota@braap.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" Signed-off-by: Richard Henderson --- tcg/ppc/tcg-target.h | 2 +- tcg/ppc/tcg-target.inc.c | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/tcg/ppc/tcg-target.h b/tcg/ppc/tcg-target.h index a9aa974..5f4a40a 100644 --- a/tcg/ppc/tcg-target.h +++ b/tcg/ppc/tcg-target.h @@ -82,7 +82,7 @@ extern bool have_isa_3_00; #define TCG_TARGET_HAS_muls2_i32 0 #define TCG_TARGET_HAS_muluh_i32 1 #define TCG_TARGET_HAS_mulsh_i32 1 -#define TCG_TARGET_HAS_goto_ptr 0 +#define TCG_TARGET_HAS_goto_ptr 1 =20 #if TCG_TARGET_REG_BITS =3D=3D 64 #define TCG_TARGET_HAS_add2_i32 0 diff --git a/tcg/ppc/tcg-target.inc.c b/tcg/ppc/tcg-target.inc.c index 64f67d2..8d50f18 100644 --- a/tcg/ppc/tcg-target.inc.c +++ b/tcg/ppc/tcg-target.inc.c @@ -1932,6 +1932,7 @@ static void tcg_target_qemu_prologue(TCGContext *s) =20 /* Epilogue */ tcg_debug_assert(tb_ret_addr =3D=3D s->code_ptr); + s->code_gen_epilogue =3D tb_ret_addr; =20 tcg_out_ld(s, TCG_TYPE_PTR, TCG_REG_R0, TCG_REG_R1, FRAME_SIZE+LR_OFFS= ET); for (i =3D 0; i < ARRAY_SIZE(tcg_target_callee_save_regs); ++i) { @@ -1986,6 +1987,11 @@ static void tcg_out_op(TCGContext *s, TCGOpcode opc,= const TCGArg *args, #endif s->tb_jmp_reset_offset[args[0]] =3D tcg_current_code_size(s); break; + case INDEX_op_goto_ptr: + tcg_out32(s, MTSPR | RS(args[0]) | CTR); + tcg_out_movi(s, TCG_TYPE_PTR, TCG_REG_R3, 0); + tcg_out32(s, BCCTR | BO_ALWAYS); + break; case INDEX_op_br: { TCGLabel *l =3D arg_label(args[0]); @@ -2555,6 +2561,7 @@ static const TCGTargetOpDef ppc_op_defs[] =3D { { INDEX_op_exit_tb, { } }, { INDEX_op_goto_tb, { } }, { INDEX_op_br, { } }, + { INDEX_op_goto_ptr, { "r" } }, =20 { INDEX_op_ld8u_i32, { "r", "r" } }, { INDEX_op_ld8s_i32, { "r", "r" } }, --=20 2.9.3 From nobody Tue Apr 30 02:32:47 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.zoho.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 1493753711438297.96947992573814; Tue, 2 May 2017 12:35:11 -0700 (PDT) Received: from localhost ([::1]:33343 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d5dZm-0003kO-36 for importer@patchew.org; Tue, 02 May 2017 15:35:10 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:59505) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d5dOO-0001qc-S9 for qemu-devel@nongnu.org; Tue, 02 May 2017 15:23:26 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1d5dON-0001fy-A2 for qemu-devel@nongnu.org; Tue, 02 May 2017 15:23:24 -0400 Received: from mail-qk0-x241.google.com ([2607:f8b0:400d:c09::241]:33835) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1d5dON-0001fk-5Z for qemu-devel@nongnu.org; Tue, 02 May 2017 15:23:23 -0400 Received: by mail-qk0-x241.google.com with SMTP id u75so22887739qka.1 for ; Tue, 02 May 2017 12:23:23 -0700 (PDT) Received: from bigtime.twiddle.net.com ([2602:47:d954:1500:5e51:4fff:fe40:9c64]) by smtp.gmail.com with ESMTPSA id d65sm10664657qkc.53.2017.05.02.12.23.21 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 02 May 2017 12:23:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references; bh=4WhADEQn6T5MJNdNS1R/RLB1tcVezGSCUjZeOeqMB0A=; b=BUq8io9e/vYDtYR4oOq2SEH6KKyoYdtLdhfhzjXzalvX6my6NPSyFpCtcpHaa9zOcQ EL5cADXhzmdET3a83Xo+EmsQM/FwW9NseaGN5GY0iWP6boPCYER12DgNwbjHFjQevaOY tZmQq0ZKBxZCZFJu7uFlhcGCg8SvhBgzNsfwA6afq5B8T//0OE2OjuTq6MtKSFECNszt HpG8hbbzmCCZphu+g9tvVO5oJWqS7EwqWDaK+kI12kt8KlzNGF4Iz8oU/0m9TWVBaxhY 7Urya07DFINxavaRi7pj10A4HH/BmFXNFy5A8l6PL/XOJZsA220FQBfPPVMdQEfeglHj ZbkQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references; bh=4WhADEQn6T5MJNdNS1R/RLB1tcVezGSCUjZeOeqMB0A=; b=ojmLKGxgOCaqLH/YGn0EMpEIxnTAo0aWbwhSiAua5g9A9cC3Wxc4wsZW96q5qLRhTr m4ciIk55lSJjhbQhY6R8HY0o7rEIND5v9pjk2HYlbWM91vCHFQRgvMGs3n1EnZGeo4tS PA9kAAu8R2oEDY8yNP6v3ZEXE88Y+bNug4QyPW9kHLDOyDXXIsv7ZaLw1+UWOnW9hvWF duYHRsn4VF/3j/DjM2FzoZNRIP8kzB+XfRErnfo+OpqMwSsDvf5WqptIUgJ6k+SSDCHQ fP0hWD2AQ/XqVClcvb8MxkifScBYeaVBy+mtPZdZoh7B3fLeA73I0jxY/SXc7CKZhbd4 gQqg== X-Gm-Message-State: AN3rC/4G5jCEqLKYUJ1be/s4V2+deEnROfMBX2tLmxq/M02YXTexzyUG pctPyzkMt59WBJmWE8w= X-Received: by 10.55.45.134 with SMTP id t128mr25712763qkh.247.1493753002481; Tue, 02 May 2017 12:23:22 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Tue, 2 May 2017 12:22:48 -0700 Message-Id: <20170502192300.2124-14-rth@twiddle.net> X-Mailer: git-send-email 2.9.3 In-Reply-To: <20170502192300.2124-1-rth@twiddle.net> References: <20170502192300.2124-1-rth@twiddle.net> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:400d:c09::241 Subject: [Qemu-devel] [PATCH v6 13/25] tcg/aarch64: Implement goto_ptr 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: cota@braap.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" Measurements: SPECint06 (test set), x86_64-linux-user. Host: APM 64= -bit ARMv8 (Atlas/A57) @ 2.4 GHz 1.45x +-+-----------------------------------------------------------------= --------------------------------------------+-+ | ***** = | | +++ * * = +goto-ptr | 1.4x +-+...*****............................*...*........................= ............................................+-+ | *+++* * * = +++ | 1.35x +-+...*...*............................*...*........................= ...*****....................................+-+ | * * * * = *+++* | | * * * * = * * | 1.3x +-+...*...*............................*...*........................= ...*...*....................................+-+ | * * * * = * * | | * * * * = * * ***** | 1.25x +-+...*...*...........*****............*...*........................= ...*...*............*****...*...*...........+-+ | * * * * * * = * * *+++* * * | 1.2x +-+...*...*...........*...*............*...*........................= ...*...*............*...*...*...*...........+-+ | * * * * * * = * * * * * * | | * * * * * * = * * * * * * ***** | 1.15x +-+...*...*...........*...*............*...*........................= ...*...*............*...*...*...*...*...*...+-+ | * * * * * * = * * +++ * * * * * * | | * * * * * * = * * ***** * * * * * * | 1.1x +-+...*...*...........*...*....*****...*...*...*****................= ...*...*...*...*....*...*...*...*...*...*...+-+ | * * * * * * * * * * = * * * * * * * * * * | 1.05x +-+...*...*...........*...*....*...*...*...*...*...*................= ...*...*...*...*....*...*...*...*...*...*...+-+ | * * ***** * * * * * * * * = * * * * * * * * * * | | * * * * * * * * * * * * ***** *****= * * * * * * * * * * | 1x +-+---*****---*****---*****----*****---*****---*****---*****---*****= ---*****---*****----*****---*****---*****---+-+ astar bzip2 gcc gobmk h264ref hmmlibquantum mcf om= netpperlbench sjenxalancbmk hmean png: http://imgur.com/en9HE8L Tested-by: Emilio G. Cota Signed-off-by: Richard Henderson Reviewed-by: Aurelien Jarno --- tcg/aarch64/tcg-target.h | 2 +- tcg/aarch64/tcg-target.inc.c | 22 ++++++++++++++++++++-- 2 files changed, 21 insertions(+), 3 deletions(-) diff --git a/tcg/aarch64/tcg-target.h b/tcg/aarch64/tcg-target.h index b82eac4..55a46ac 100644 --- a/tcg/aarch64/tcg-target.h +++ b/tcg/aarch64/tcg-target.h @@ -77,7 +77,7 @@ typedef enum { #define TCG_TARGET_HAS_mulsh_i32 0 #define TCG_TARGET_HAS_extrl_i64_i32 0 #define TCG_TARGET_HAS_extrh_i64_i32 0 -#define TCG_TARGET_HAS_goto_ptr 0 +#define TCG_TARGET_HAS_goto_ptr 1 =20 #define TCG_TARGET_HAS_div_i64 1 #define TCG_TARGET_HAS_rem_i64 1 diff --git a/tcg/aarch64/tcg-target.inc.c b/tcg/aarch64/tcg-target.inc.c index 290de6d..5f18545 100644 --- a/tcg/aarch64/tcg-target.inc.c +++ b/tcg/aarch64/tcg-target.inc.c @@ -1357,8 +1357,13 @@ static void tcg_out_op(TCGContext *s, TCGOpcode opc, =20 switch (opc) { case INDEX_op_exit_tb: - tcg_out_movi(s, TCG_TYPE_I64, TCG_REG_X0, a0); - tcg_out_goto(s, tb_ret_addr); + /* Reuse the zeroing that exists for goto_ptr. */ + if (a0 =3D=3D 0) { + tcg_out_goto(s, s->code_gen_epilogue); + } else { + tcg_out_movi(s, TCG_TYPE_I64, TCG_REG_X0, a0); + tcg_out_goto(s, tb_ret_addr); + } break; =20 case INDEX_op_goto_tb: @@ -1374,6 +1379,10 @@ static void tcg_out_op(TCGContext *s, TCGOpcode opc, s->tb_jmp_reset_offset[a0] =3D tcg_current_code_size(s); break; =20 + case INDEX_op_goto_ptr: + tcg_out_insn(s, 3207, BR, a0); + break; + case INDEX_op_br: tcg_out_goto_label(s, arg_label(a0)); break; @@ -1735,6 +1744,7 @@ static const TCGTargetOpDef aarch64_op_defs[] =3D { { INDEX_op_exit_tb, { } }, { INDEX_op_goto_tb, { } }, { INDEX_op_br, { } }, + { INDEX_op_goto_ptr, { "r" } }, =20 { INDEX_op_ld8u_i32, { "r", "r" } }, { INDEX_op_ld8s_i32, { "r", "r" } }, @@ -1942,6 +1952,14 @@ static void tcg_target_qemu_prologue(TCGContext *s) tcg_out_mov(s, TCG_TYPE_PTR, TCG_AREG0, tcg_target_call_iarg_regs[0]); tcg_out_insn(s, 3207, BR, tcg_target_call_iarg_regs[1]); =20 + /* + * Return path for goto_ptr. Set return value to 0, a-la exit_tb, + * and fall through to the rest of the epilogue. + */ + s->code_gen_epilogue =3D s->code_ptr; + tcg_out_movi(s, TCG_TYPE_REG, TCG_REG_X0, 0); + + /* TB epilogue */ tb_ret_addr =3D s->code_ptr; =20 /* Remove TCG locals stack space. */ --=20 2.9.3 From nobody Tue Apr 30 02:32:47 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.zoho.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 1493753257220260.5201875965414; Tue, 2 May 2017 12:27:37 -0700 (PDT) Received: from localhost ([::1]:33301 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d5dSR-0005WQ-LI for importer@patchew.org; Tue, 02 May 2017 15:27:35 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:59511) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d5dOP-0001qe-Gq for qemu-devel@nongnu.org; Tue, 02 May 2017 15:23:26 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1d5dOO-0001gm-Bl for qemu-devel@nongnu.org; Tue, 02 May 2017 15:23:25 -0400 Received: from mail-qk0-x241.google.com ([2607:f8b0:400d:c09::241]:32996) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1d5dOO-0001gX-6t for qemu-devel@nongnu.org; Tue, 02 May 2017 15:23:24 -0400 Received: by mail-qk0-x241.google.com with SMTP id o85so22941125qkh.0 for ; Tue, 02 May 2017 12:23:24 -0700 (PDT) Received: from bigtime.twiddle.net.com ([2602:47:d954:1500:5e51:4fff:fe40:9c64]) by smtp.gmail.com with ESMTPSA id d65sm10664657qkc.53.2017.05.02.12.23.22 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 02 May 2017 12:23:23 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references; bh=mcHYbekBog45VUoPtmzy8HfKy2CCLzb9V2qQHFRTxp8=; b=XylXZfyX59sI32zgBuApJgSNA4bxdTb28YLHXZzVrDwnltQ2fIbmyLqVjN0pLtzyQQ 7ke9HglF6SDBUdTIfug8OzUYBCnNGI/B1jzkNNjqEk+RqqA3U2EmJnS2+/I7AVN6r4og SVEvfkfmkDJowWk5aLV02JReBPnEQQM1yMdE3WdPkGkw2r2JPj7G5bEm1w2zyBVOeXJk 4Bn1BeBAYJz3j6YwmrjmCosXAtdLZx0AOVHkj5YkDYxGO8iGKkCm+FmcZMQR6yYEihOx yXpUwDnafBi7Ft40coV0E9P2//b6sVyTiqCJEeIw7xUHOmhPHWFyQBPtJVdJjAyf27n2 Bh/Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references; bh=mcHYbekBog45VUoPtmzy8HfKy2CCLzb9V2qQHFRTxp8=; b=AAtLKqlG7Egy/WkgJ1O6RCP+isnEPaWMz27JLg9efBWhsjDb8c/PLGvF1xR6qKp0sX 8JZRHUojJ4QuOaK0jPKijVi071wLx/PPq53+a3U5kq3HwSArc6Eo9fVBk4eDq8VzKThD 9eaLFvVicJQyv/cMl/s3dox8NUh7/fZ0ZvUKKCpf40GboZZZ9PctB7ieBmRbjv2WFOn7 LZogAEJ7fp/dVQrtsY8FlsNKwWXoSvEycQzsCD1eB0EqSOraLsJ8nSa5w+TO4c0WH0Cn CopP7NDoxY7+y2s4rLmO11vNGi+hBRpdU3DxoliJdQhCYeGQGUDwgr9o2tECI2bBNdKa XqqQ== X-Gm-Message-State: AN3rC/7WQKpT/wJX+TzDUrfZe6nr41vqdGlcvLGtN7hJScXiY4P3g/ug 5ZMRxAOkk3Xsug== X-Received: by 10.233.239.65 with SMTP id d62mr12759038qkg.119.1493753003759; Tue, 02 May 2017 12:23:23 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Tue, 2 May 2017 12:22:49 -0700 Message-Id: <20170502192300.2124-15-rth@twiddle.net> X-Mailer: git-send-email 2.9.3 In-Reply-To: <20170502192300.2124-1-rth@twiddle.net> References: <20170502192300.2124-1-rth@twiddle.net> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:400d:c09::241 Subject: [Qemu-devel] [PATCH v6 14/25] tcg/sparc: Implement goto_ptr 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: cota@braap.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" Signed-off-by: Richard Henderson --- tcg/sparc/tcg-target.h | 2 +- tcg/sparc/tcg-target.inc.c | 11 ++++++++++- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/tcg/sparc/tcg-target.h b/tcg/sparc/tcg-target.h index 9348ddd..854a0af 100644 --- a/tcg/sparc/tcg-target.h +++ b/tcg/sparc/tcg-target.h @@ -123,7 +123,7 @@ extern bool use_vis3_instructions; #define TCG_TARGET_HAS_muls2_i32 1 #define TCG_TARGET_HAS_muluh_i32 0 #define TCG_TARGET_HAS_mulsh_i32 0 -#define TCG_TARGET_HAS_goto_ptr 0 +#define TCG_TARGET_HAS_goto_ptr 1 =20 #define TCG_TARGET_HAS_extrl_i64_i32 1 #define TCG_TARGET_HAS_extrh_i64_i32 1 diff --git a/tcg/sparc/tcg-target.inc.c b/tcg/sparc/tcg-target.inc.c index 3785d77..18afce2 100644 --- a/tcg/sparc/tcg-target.inc.c +++ b/tcg/sparc/tcg-target.inc.c @@ -1003,7 +1003,11 @@ static void tcg_target_qemu_prologue(TCGContext *s) /* delay slot */ tcg_out_nop(s); =20 - /* No epilogue required. We issue ret + restore directly in the TB. = */ + /* Epilogue for goto_ptr. */ + s->code_gen_epilogue =3D s->code_ptr; + tcg_out_arithi(s, TCG_REG_G0, TCG_REG_I7, 8, RETURN); + /* delay slot */ + tcg_out_movi_imm13(s, TCG_REG_O0, 0); =20 #ifdef CONFIG_SOFTMMU build_trampolines(s); @@ -1288,6 +1292,10 @@ static void tcg_out_op(TCGContext *s, TCGOpcode opc, tcg_out_nop(s); s->tb_jmp_reset_offset[a0] =3D tcg_current_code_size(s); break; + case INDEX_op_goto_ptr: + tcg_out_arithi(s, TCG_REG_G0, a0, 0, JMPL); + tcg_out_nop(s); + break; case INDEX_op_br: tcg_out_bpcc(s, COND_A, BPCC_PT, arg_label(a0)); tcg_out_nop(s); @@ -1513,6 +1521,7 @@ static const TCGTargetOpDef sparc_op_defs[] =3D { { INDEX_op_exit_tb, { } }, { INDEX_op_goto_tb, { } }, { INDEX_op_br, { } }, + { INDEX_op_goto_ptr, { "r" } }, =20 { INDEX_op_ld8u_i32, { "r", "r" } }, { INDEX_op_ld8s_i32, { "r", "r" } }, --=20 2.9.3 From nobody Tue Apr 30 02:32:47 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.zoho.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 1493753975329982.6730097532626; Tue, 2 May 2017 12:39:35 -0700 (PDT) Received: from localhost ([::1]:33376 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d5de0-0007Bc-Pe for importer@patchew.org; Tue, 02 May 2017 15:39:32 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:59526) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d5dOQ-0001rc-TC for qemu-devel@nongnu.org; Tue, 02 May 2017 15:23:27 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1d5dOP-0001iy-Qt for qemu-devel@nongnu.org; Tue, 02 May 2017 15:23:26 -0400 Received: from mail-qt0-x242.google.com ([2607:f8b0:400d:c0d::242]:34799) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1d5dOP-0001iP-Mn for qemu-devel@nongnu.org; Tue, 02 May 2017 15:23:25 -0400 Received: by mail-qt0-x242.google.com with SMTP id g60so3856234qtd.1 for ; Tue, 02 May 2017 12:23:25 -0700 (PDT) Received: from bigtime.twiddle.net.com ([2602:47:d954:1500:5e51:4fff:fe40:9c64]) by smtp.gmail.com with ESMTPSA id d65sm10664657qkc.53.2017.05.02.12.23.24 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 02 May 2017 12:23:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references; bh=dBmwEVB48wsKeXdziLR1GCg4mcvU+OTonPoNNJb7lI4=; b=UEySYUrwaxfF+n+d+ni6bMBSGloeoY4StQRuSEY4LtBY7Q6af6otO9Tm9PtmEU7y+S ccD/uKraFPdFQc+sJFzY+l1GWafcsl2yMQm4fzdQGRYZLGh+j/xR3my4ysjRqZNif5hJ BuiIxpMxBePjs1a6Fb2ptznC4OFKDYjBsD7BOAifWqNMiWjREBgioqOzrxfuD3r8BsEa 7hsKbJW2AlY/ENdOQWhlPnBekfHgYErdvNLddxE4RiMquf3VoCs4zgv7XXESC/5K9L7G UfKu3hMDL6wUBoUd78jTvNpdm9+SOUeX51URdqS8bUrpc+Dbcpy0WpOur1/Dj83QmXPl KOyw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references; bh=dBmwEVB48wsKeXdziLR1GCg4mcvU+OTonPoNNJb7lI4=; b=mV5mncqUQ5+IwmHTzo7nEASTBP2lmbxRf8YxcZ/HBipRmiG3qijrtfyY5VzEy5GWRw 5+BUSB/cwkZe6YaQAZdX0+wbDC+a5GT4x4D8863uN4VXOf22dv1OlQaF6gR6Eic31z0K Jxpd0NjuOeWSqPEawih+ZKZ3lBmyZalmm7F3EBgVa8fwVEhXaaV1QFgWcuGvy3EOEx3A 5XfCrmCmHgsFb9nP9G2h+ypk5MXgVwG0EHB/0rZRECIriNFrzDbrX3WfpBFdUjUPL55q RvoydQCcXSEiTn93JoGwLv0lADYZW5OkhsQQ0UEhbVnDLgCHq45yFZAKguM81RvThO+G rOaw== X-Gm-Message-State: AN3rC/4M1JJR4QVwBcLJ0+mhhhj3UNNycX0xP/aNXipVps1ZbWbUh5Ac sfPTNfIj/ZrQd0wd5dU= X-Received: by 10.200.46.23 with SMTP id r23mr29623834qta.17.1493753005040; Tue, 02 May 2017 12:23:25 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Tue, 2 May 2017 12:22:50 -0700 Message-Id: <20170502192300.2124-16-rth@twiddle.net> X-Mailer: git-send-email 2.9.3 In-Reply-To: <20170502192300.2124-1-rth@twiddle.net> References: <20170502192300.2124-1-rth@twiddle.net> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:400d:c0d::242 Subject: [Qemu-devel] [PATCH v6 15/25] tcg/s390: Implement goto_ptr 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: cota@braap.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" Signed-off-by: Richard Henderson Reviewed-by: Aurelien Jarno Tested-by: Aurelien Jarno --- tcg/s390/tcg-target.h | 2 +- tcg/s390/tcg-target.inc.c | 24 +++++++++++++++++++++--- 2 files changed, 22 insertions(+), 4 deletions(-) diff --git a/tcg/s390/tcg-target.h b/tcg/s390/tcg-target.h index 6b7bcfb..957f0c0 100644 --- a/tcg/s390/tcg-target.h +++ b/tcg/s390/tcg-target.h @@ -92,7 +92,7 @@ extern uint64_t s390_facilities; #define TCG_TARGET_HAS_mulsh_i32 0 #define TCG_TARGET_HAS_extrl_i64_i32 0 #define TCG_TARGET_HAS_extrh_i64_i32 0 -#define TCG_TARGET_HAS_goto_ptr 0 +#define TCG_TARGET_HAS_goto_ptr 1 =20 #define TCG_TARGET_HAS_div2_i64 1 #define TCG_TARGET_HAS_rot_i64 1 diff --git a/tcg/s390/tcg-target.inc.c b/tcg/s390/tcg-target.inc.c index a679280..5d7083e 100644 --- a/tcg/s390/tcg-target.inc.c +++ b/tcg/s390/tcg-target.inc.c @@ -1741,9 +1741,14 @@ static inline void tcg_out_op(TCGContext *s, TCGOpco= de opc, =20 switch (opc) { case INDEX_op_exit_tb: - /* return value */ - tcg_out_movi(s, TCG_TYPE_PTR, TCG_REG_R2, args[0]); - tgen_gotoi(s, S390_CC_ALWAYS, tb_ret_addr); + /* Reuse the zeroing that exists for goto_ptr. */ + a0 =3D args[0]; + if (a0 =3D=3D 0) { + tgen_gotoi(s, S390_CC_ALWAYS, s->code_gen_epilogue); + } else { + tcg_out_movi(s, TCG_TYPE_PTR, TCG_REG_R2, a0); + tgen_gotoi(s, S390_CC_ALWAYS, tb_ret_addr); + } break; =20 case INDEX_op_goto_tb: @@ -1767,6 +1772,10 @@ static inline void tcg_out_op(TCGContext *s, TCGOpco= de opc, s->tb_jmp_reset_offset[args[0]] =3D tcg_current_code_size(s); break; =20 + case INDEX_op_goto_ptr: + tcg_out_insn(s, RR, BCR, S390_CC_ALWAYS, args[0]); + break; + OP_32_64(ld8u): /* ??? LLC (RXY format) is only present with the extended-immediate facility, whereas LLGC is always present. */ @@ -2241,6 +2250,7 @@ static const TCGTargetOpDef s390_op_defs[] =3D { { INDEX_op_exit_tb, { } }, { INDEX_op_goto_tb, { } }, { INDEX_op_br, { } }, + { INDEX_op_goto_ptr, { "r" } }, =20 { INDEX_op_ld8u_i32, { "r", "r" } }, { INDEX_op_ld8s_i32, { "r", "r" } }, @@ -2439,6 +2449,14 @@ static void tcg_target_qemu_prologue(TCGContext *s) /* br %r3 (go to TB) */ tcg_out_insn(s, RR, BCR, S390_CC_ALWAYS, tcg_target_call_iarg_regs[1]); =20 + /* + * Return path for goto_ptr. Set return value to 0, a-la exit_tb, + * and fall through to the rest of the epilogue. + */ + s->code_gen_epilogue =3D s->code_ptr; + tcg_out_movi(s, TCG_TYPE_PTR, TCG_REG_R2, 0); + + /* TB epilogue */ tb_ret_addr =3D s->code_ptr; =20 /* lmg %r6,%r15,fs+48(%r15) (restore registers) */ --=20 2.9.3 From nobody Tue Apr 30 02:32:47 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.zoho.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 1493753542385241.73204851957746; Tue, 2 May 2017 12:32:22 -0700 (PDT) Received: from localhost ([::1]:33330 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d5dX3-0001I0-5Y for importer@patchew.org; Tue, 02 May 2017 15:32:21 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:59538) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d5dOS-0001sr-0D for qemu-devel@nongnu.org; Tue, 02 May 2017 15:23:29 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1d5dOR-0001kB-44 for qemu-devel@nongnu.org; Tue, 02 May 2017 15:23:27 -0400 Received: from mail-qk0-x243.google.com ([2607:f8b0:400d:c09::243]:33004) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1d5dOR-0001jo-04 for qemu-devel@nongnu.org; Tue, 02 May 2017 15:23:27 -0400 Received: by mail-qk0-x243.google.com with SMTP id o85so22941289qkh.0 for ; Tue, 02 May 2017 12:23:26 -0700 (PDT) Received: from bigtime.twiddle.net.com ([2602:47:d954:1500:5e51:4fff:fe40:9c64]) by smtp.gmail.com with ESMTPSA id d65sm10664657qkc.53.2017.05.02.12.23.25 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 02 May 2017 12:23:25 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references; bh=q1Mp4i5/uMtMIq128w7Gz5f9ZjF2uH9GW7eN9vkWC8o=; b=TRK+8ngtX5Yv4rArIoR3dWsoH3i6nuwSQISSjXcHQYswEh68GZ3pmZslegweiEfNgC MBO9uxcvEkZjiGVmE+QamD8UUe75UkRGuGcv9vYHZFQLrVOfdeCotfTmqAx74eSA8VYf YF5uwxO1ahIDmTZVsa9RD7eRDmkBE+dUCoYaHk5hQ3NAtexFzi/2YpaAZgTKgYT+bxD7 orYMrdPO+1hOH5hFI+dJlZXM/VVrrqUE4yGLMYQliIUSbNwlPl92TDNMuglROmsRNI2L HmxnOdmmno0aYhX9A1y6nGVcSMsgF7wIPoeThrDGw0uphsLLAdGS324cCmUZk1pRLDGB zF9g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references; bh=q1Mp4i5/uMtMIq128w7Gz5f9ZjF2uH9GW7eN9vkWC8o=; b=p6h1vRF6Vhf+yVUSuz2IQTTRBPC0cLFSwVm+AmJaFUKaJafwyWfYA60NL6yEeinnFE WHQHdU4Wf15enSjlY8Sg3EJmu6ulELCCOl3W21KHha86GXsLN52DggTCtmXyoqceXTHi awhReX8FWDbOdf2QrXEPtNLo6YDZ/hidq5ONYIaiyoITBlgq0uK/MV1y0uJ1tddPrHW4 lei5AgrKR6mzDI2Qol2hGFzZXRTwIfTidFib0NcYWe9wIOITxYxeb1ISeTYG70vnCjkm d0+uKppB6X+MMumaZz0rN8jS6AXNrVR0ZeQJ/3E6o308Gl+x0FJHnGI6jmOKv6BG4ONG 1vyQ== X-Gm-Message-State: AN3rC/4mliMm9BekZBupYcYM6NJ9Bqwpp3TxP2QOMXOEkUV2KGYOrxDn oFS54wMO+i3p9Z2Rlus= X-Received: by 10.55.189.1 with SMTP id n1mr26080544qkf.136.1493753006312; Tue, 02 May 2017 12:23:26 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Tue, 2 May 2017 12:22:51 -0700 Message-Id: <20170502192300.2124-17-rth@twiddle.net> X-Mailer: git-send-email 2.9.3 In-Reply-To: <20170502192300.2124-1-rth@twiddle.net> References: <20170502192300.2124-1-rth@twiddle.net> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:400d:c09::243 Subject: [Qemu-devel] [PATCH v6 16/25] tcg/arm: Clarify tcg_out_bx for arm4 host 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: cota@braap.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" In theory this would re-enable usage of QEMU on an armv4 host. Whether this is worthwhile is debatable -- we've been unconditionally issuing the armv5t BX instruction in the prologue since 2011 without complaint. Possibly we should simply require an armv6 host. Signed-off-by: Richard Henderson --- tcg/arm/tcg-target.inc.c | 29 +++++++++++++++-------------- 1 file changed, 15 insertions(+), 14 deletions(-) diff --git a/tcg/arm/tcg-target.inc.c b/tcg/arm/tcg-target.inc.c index e75a6d4..590c57d 100644 --- a/tcg/arm/tcg-target.inc.c +++ b/tcg/arm/tcg-target.inc.c @@ -329,11 +329,6 @@ static const uint8_t tcg_cond_to_arm_cond[] =3D { [TCG_COND_GTU] =3D COND_HI, }; =20 -static inline void tcg_out_bx(TCGContext *s, int cond, int rn) -{ - tcg_out32(s, (cond << 28) | 0x012fff10 | rn); -} - static inline void tcg_out_b(TCGContext *s, int cond, int32_t offset) { tcg_out32(s, (cond << 28) | 0x0a000000 | @@ -402,6 +397,18 @@ static inline void tcg_out_mov_reg(TCGContext *s, int = cond, int rd, int rm) } } =20 +static inline void tcg_out_bx(TCGContext *s, int cond, TCGReg rn) +{ + /* Unless the C portion of QEMU is compiled as thumb, we don't + actually need true BX semantics; merely a branch to an address + held in a register. */ + if (use_armv5t_instructions) { + tcg_out32(s, (cond << 28) | 0x012fff10 | rn); + } else { + tcg_out_mov_reg(s, cond, TCG_REG_PC, rn); + } +} + static inline void tcg_out_dat_imm(TCGContext *s, int cond, int opc, int rd, int rn, int im) { @@ -977,7 +984,7 @@ static inline void tcg_out_st8(TCGContext *s, int cond, * with the code buffer limited to 16MB we wouldn't need the long case. * But we also use it for the tail-call to the qemu_ld/st helpers, which d= oes. */ -static inline void tcg_out_goto(TCGContext *s, int cond, tcg_insn_unit *ad= dr) +static void tcg_out_goto(TCGContext *s, int cond, tcg_insn_unit *addr) { intptr_t addri =3D (intptr_t)addr; ptrdiff_t disp =3D tcg_pcrel_diff(s, addr); @@ -987,15 +994,9 @@ static inline void tcg_out_goto(TCGContext *s, int con= d, tcg_insn_unit *addr) return; } =20 + assert(use_armv5t_instructions || (addri & 1) =3D=3D 0); tcg_out_movi32(s, cond, TCG_REG_TMP, addri); - if (use_armv5t_instructions) { - tcg_out_bx(s, cond, TCG_REG_TMP); - } else { - if (addri & 1) { - tcg_abort(); - } - tcg_out_mov_reg(s, cond, TCG_REG_PC, TCG_REG_TMP); - } + tcg_out_bx(s, cond, TCG_REG_TMP); } =20 /* The call case is mostly used for helpers - so it's not unreasonable --=20 2.9.3 From nobody Tue Apr 30 02:32:47 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.zoho.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 1493753602643546.0990291372009; Tue, 2 May 2017 12:33:22 -0700 (PDT) Received: from localhost ([::1]:33333 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d5dXy-0002Nl-TK for importer@patchew.org; Tue, 02 May 2017 15:33:19 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:59550) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d5dOT-0001vc-31 for qemu-devel@nongnu.org; Tue, 02 May 2017 15:23:30 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1d5dOS-0001l2-2o for qemu-devel@nongnu.org; Tue, 02 May 2017 15:23:29 -0400 Received: from mail-qt0-x244.google.com ([2607:f8b0:400d:c0d::244]:34972) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1d5dOR-0001kj-UV for qemu-devel@nongnu.org; Tue, 02 May 2017 15:23:28 -0400 Received: by mail-qt0-x244.google.com with SMTP id o36so21703902qtb.2 for ; Tue, 02 May 2017 12:23:27 -0700 (PDT) Received: from bigtime.twiddle.net.com ([2602:47:d954:1500:5e51:4fff:fe40:9c64]) by smtp.gmail.com with ESMTPSA id d65sm10664657qkc.53.2017.05.02.12.23.26 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 02 May 2017 12:23:26 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references; bh=f1eqa440bot9IZFfXRg3MSOsjg4asuiqgprt5Ag0blE=; b=G96vqmnXFnT5ess54jL0ICyLvaoeN7v2JcmDZxRxF3zMcJqSFbQhNDQsCdtpORfPG3 xGZK0GwgPUlE31wsFLN4DRITqpvg1QggYN7sjsQa1VX1orvkESpG485+AjyF8He1ab2i Ri08ujQh5p6ZLL1kgpDmEjpDKjOwUueIoXhBKIbAtfCJQj7HHWT/lkhLpc6HF3pTglMX 2Fx6FrHpw6/jxuwUYDA8f5qPcN9MwPrgw5YoA09sl0QBnCAchDqbin4/MLX7jSj3QqYV 42CKfhmh+5SxLRJD5Y7blTwVTyCOBKAhpzG7Jp4K5X16PEh65v6/yh7igqjcUETN8CO7 C1yw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references; bh=f1eqa440bot9IZFfXRg3MSOsjg4asuiqgprt5Ag0blE=; b=XK4bz/AF6EnSgwm8a9BgA2j1WzQlMCUtNSykz8s+BMXTB3uy2WjchbmP4mNybVKScP XWb+dgE0YrVU3FshBY7tfXtT1SqvW5KDFvKxcaJL4ukaxq4zoDiicA5tyP+YBT8Exd9k JG7YIiq+Q6sjRIA3wkNZbVoYsRo8ZAxBBsloGhe0WrXGBS2vnUghKmsEJ7p1oUV5f3L7 KP69L0QqGjX8gFXPfozKoi8NGBBJDlmiyguTLP/u9GPtN2kpNI3fRUhcv1ER60Ul4nHu ExjfkXZQNNPf8VBt04zWBeYIOcir8CVsTbL0clYXM/e0TSQMdarWczFmTQ2T0P9em5mZ I4iQ== X-Gm-Message-State: AN3rC/4eEli1ZIoXgA5FbDSgcTl7SVNHPG5VAMNaSMGKM+0gzHQjY1ck NE9yr1pAAbsq2g== X-Received: by 10.200.41.196 with SMTP id 4mr30983804qtt.166.1493753007503; Tue, 02 May 2017 12:23:27 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Tue, 2 May 2017 12:22:52 -0700 Message-Id: <20170502192300.2124-18-rth@twiddle.net> X-Mailer: git-send-email 2.9.3 In-Reply-To: <20170502192300.2124-1-rth@twiddle.net> References: <20170502192300.2124-1-rth@twiddle.net> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:400d:c0d::244 Subject: [Qemu-devel] [PATCH v6 17/25] tcg/arm: Implement goto_ptr 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: cota@braap.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" Signed-off-by: Richard Henderson --- tcg/arm/tcg-target.h | 2 +- tcg/arm/tcg-target.inc.c | 25 +++++++++++++++++++++---- 2 files changed, 22 insertions(+), 5 deletions(-) diff --git a/tcg/arm/tcg-target.h b/tcg/arm/tcg-target.h index c114df7..5ef1086 100644 --- a/tcg/arm/tcg-target.h +++ b/tcg/arm/tcg-target.h @@ -123,7 +123,7 @@ extern bool use_idiv_instructions; #define TCG_TARGET_HAS_mulsh_i32 0 #define TCG_TARGET_HAS_div_i32 use_idiv_instructions #define TCG_TARGET_HAS_rem_i32 0 -#define TCG_TARGET_HAS_goto_ptr 0 +#define TCG_TARGET_HAS_goto_ptr 1 =20 enum { TCG_AREG0 =3D TCG_REG_R6, diff --git a/tcg/arm/tcg-target.inc.c b/tcg/arm/tcg-target.inc.c index 590c57d..9f5cb66 100644 --- a/tcg/arm/tcg-target.inc.c +++ b/tcg/arm/tcg-target.inc.c @@ -1655,8 +1655,14 @@ static inline void tcg_out_op(TCGContext *s, TCGOpco= de opc, =20 switch (opc) { case INDEX_op_exit_tb: - tcg_out_movi32(s, COND_AL, TCG_REG_R0, args[0]); - tcg_out_goto(s, COND_AL, tb_ret_addr); + /* Reuse the zeroing that exists for goto_ptr. */ + a0 =3D args[0]; + if (a0 =3D=3D 0) { + tcg_out_goto(s, COND_AL, s->code_gen_epilogue); + } else { + tcg_out_movi32(s, COND_AL, TCG_REG_R0, args[0]); + tcg_out_goto(s, COND_AL, tb_ret_addr); + } break; case INDEX_op_goto_tb: if (s->tb_jmp_insn_offset) { @@ -1671,6 +1677,9 @@ static inline void tcg_out_op(TCGContext *s, TCGOpcod= e opc, } s->tb_jmp_reset_offset[args[0]] =3D tcg_current_code_size(s); break; + case INDEX_op_goto_ptr: + tcg_out_bx(s, COND_AL, args[0]); + break; case INDEX_op_br: tcg_out_goto_label(s, COND_AL, arg_label(args[0])); break; @@ -1961,6 +1970,7 @@ static const TCGTargetOpDef arm_op_defs[] =3D { { INDEX_op_exit_tb, { } }, { INDEX_op_goto_tb, { } }, { INDEX_op_br, { } }, + { INDEX_op_goto_ptr, { "r" } }, =20 { INDEX_op_ld8u_i32, { "r", "r" } }, { INDEX_op_ld8s_i32, { "r", "r" } }, @@ -2136,9 +2146,16 @@ static void tcg_target_qemu_prologue(TCGContext *s) tcg_out_mov(s, TCG_TYPE_PTR, TCG_AREG0, tcg_target_call_iarg_regs[0]); =20 tcg_out_bx(s, COND_AL, tcg_target_call_iarg_regs[1]); - tb_ret_addr =3D s->code_ptr; =20 - /* Epilogue. We branch here via tb_ret_addr. */ + /* + * Return path for goto_ptr. Set return value to 0, a-la exit_tb, + * and fall through to the rest of the epilogue. + */ + s->code_gen_epilogue =3D s->code_ptr; + tcg_out_movi(s, TCG_TYPE_PTR, TCG_REG_R0, 0); + + /* TB epilogue */ + tb_ret_addr =3D s->code_ptr; tcg_out_dat_rI(s, COND_AL, ARITH_ADD, TCG_REG_CALL_STACK, TCG_REG_CALL_STACK, stack_addend, 1); =20 --=20 2.9.3 From nobody Tue Apr 30 02:32:47 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.zoho.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 1493754097610763.0654810011365; Tue, 2 May 2017 12:41:37 -0700 (PDT) Received: from localhost ([::1]:33393 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d5dg0-0000ak-AW for importer@patchew.org; Tue, 02 May 2017 15:41:36 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:59561) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d5dOU-0001xL-27 for qemu-devel@nongnu.org; Tue, 02 May 2017 15:23:30 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1d5dOT-0001lz-4d for qemu-devel@nongnu.org; Tue, 02 May 2017 15:23:30 -0400 Received: from mail-qk0-x243.google.com ([2607:f8b0:400d:c09::243]:36364) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1d5dOT-0001le-0Y for qemu-devel@nongnu.org; Tue, 02 May 2017 15:23:29 -0400 Received: by mail-qk0-x243.google.com with SMTP id o4so4542592qkb.3 for ; Tue, 02 May 2017 12:23:28 -0700 (PDT) Received: from bigtime.twiddle.net.com ([2602:47:d954:1500:5e51:4fff:fe40:9c64]) by smtp.gmail.com with ESMTPSA id d65sm10664657qkc.53.2017.05.02.12.23.27 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 02 May 2017 12:23:28 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references; bh=PAUWgezZlHogVWurFQ47Kz0+6BAYyVOmW18fRuS1QrE=; b=rxjtKs7MbThWDTLAZNWgg7Q48NSGvGg4rgboZArGlKi5QO+/SxIQcyvwrhQWjm00pW i0ajHT7VFPs3gGCrCQMCuJq2MS781hLQoupX7v9qtlrwIkJDJjNzk9tzUPFFZkzD+JVZ Dert6mEPxMU1/3cE6TLXwnkzzxh1zqzcyvw1uW4KPlAp9pXjE4vu0e9foUT2JMEyeCVy vPhGHSdMvKeFokPPpjVx88NV2//Pnf1Oilf2lP5OElqot6PiQGy6L27k/mOPaAudqOt9 oPaaHtGwoO/yDaShOkPxP/WrHo4DSL98z9oAAjfcQJyWdU3VazjxyfJB8afEafi8J0S6 gOJQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references; bh=PAUWgezZlHogVWurFQ47Kz0+6BAYyVOmW18fRuS1QrE=; b=a47IvcHj4a+i7V2HLBqZRw22mPjEp3smUnIcetpUPKyQm3Lebv3AOg99UaRYXICCEQ 45g5TbOqSYB40Q12UoatPsuLUST9sWREsSXb7dcQejPgRaJ3SgUSG+oksqHkSXNeRzjo 837S8tI8XGiGbq2qJGwRj8MDxiEsRLZXDdxGVepUZ21rgPF0VX2oFMwKVE4IQeIVSkoS zHSv8v8DEQIbn7jmB7r1CIOiT31VijLS5KlGLKCY9TtQ+rLRRLGr2mf9nIBTqMU/V5lT JPzKKdsk39/ZUmXoC+m6quY1AR5Icxz7pXGvIRPt+qC+CjbGYp8wqISRhSqG0BtJuB/C BSCA== X-Gm-Message-State: AN3rC/7EUZawCWWztoRbr99lz+ETOVL2GjTNBQLP1jSVVDKsvWYuL8ws 2pyAXnYhNntseA== X-Received: by 10.55.174.2 with SMTP id x2mr26058675qke.237.1493753008612; Tue, 02 May 2017 12:23:28 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Tue, 2 May 2017 12:22:53 -0700 Message-Id: <20170502192300.2124-19-rth@twiddle.net> X-Mailer: git-send-email 2.9.3 In-Reply-To: <20170502192300.2124-1-rth@twiddle.net> References: <20170502192300.2124-1-rth@twiddle.net> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:400d:c09::243 Subject: [Qemu-devel] [PATCH v6 18/25] target/s390: Use tcg_gen_lookup_and_goto_ptr 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: cota@braap.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" Signed-off-by: Richard Henderson Reviewed-by: Aurelien Jarno Tested-by: Aurelien Jarno --- target/s390x/translate.c | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/target/s390x/translate.c b/target/s390x/translate.c index 01c6217..f7c2123 100644 --- a/target/s390x/translate.c +++ b/target/s390x/translate.c @@ -608,11 +608,16 @@ static void gen_op_calc_cc(DisasContext *s) set_cc_static(s); } =20 -static int use_goto_tb(DisasContext *s, uint64_t dest) +static bool use_exit_tb(DisasContext *s) { - if (unlikely(s->singlestep_enabled) || - (s->tb->cflags & CF_LAST_IO) || - (s->tb->flags & FLAG_MASK_PER)) { + return (s->singlestep_enabled || + (s->tb->cflags & CF_LAST_IO) || + (s->tb->flags & FLAG_MASK_PER)); +} + +static bool use_goto_tb(DisasContext *s, uint64_t dest) +{ + if (unlikely(use_exit_tb(s))) { return false; } #ifndef CONFIG_USER_ONLY @@ -5426,8 +5431,10 @@ void gen_intermediate_code(CPUS390XState *env, struc= t TranslationBlock *tb) /* Exit the TB, either by raising a debug exception or by return. = */ if (do_debug) { gen_exception(EXCP_DEBUG); - } else { + } else if (use_exit_tb(&dc)) { tcg_gen_exit_tb(0); + } else { + tcg_gen_lookup_and_goto_ptr(psw_addr); } break; default: --=20 2.9.3 From nobody Tue Apr 30 02:32:47 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.zoho.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 149375355640115.216000417772534; Tue, 2 May 2017 12:32:36 -0700 (PDT) Received: from localhost ([::1]:33332 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d5dXG-0001bP-UE for importer@patchew.org; Tue, 02 May 2017 15:32:35 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:59573) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d5dOV-0001yy-GF for qemu-devel@nongnu.org; Tue, 02 May 2017 15:23:33 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1d5dOU-0001nH-Mn for qemu-devel@nongnu.org; Tue, 02 May 2017 15:23:31 -0400 Received: from mail-qk0-x244.google.com ([2607:f8b0:400d:c09::244]:36372) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1d5dOU-0001mw-Ie for qemu-devel@nongnu.org; Tue, 02 May 2017 15:23:30 -0400 Received: by mail-qk0-x244.google.com with SMTP id o4so4542716qkb.3 for ; Tue, 02 May 2017 12:23:30 -0700 (PDT) Received: from bigtime.twiddle.net.com ([2602:47:d954:1500:5e51:4fff:fe40:9c64]) by smtp.gmail.com with ESMTPSA id d65sm10664657qkc.53.2017.05.02.12.23.28 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 02 May 2017 12:23:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references; bh=SJIdjwDoltzYDsMGOSY21WiG9xGlEgTZnOSiLcGTlEU=; b=kJII7omigjDYKMWE1ZMV/TFuuZI7m4e6WwACJz4UUVnBsSNXfdNXaGHmi22/ir9XYN 0jo7JcIzbr1I+5xAUlWXyS+XaXQvnxHoTIO1BWmjXiuaFtGFkySgJfoG7Nt9iMSLkYfa NHzDY5Zl8natPRqvLRexHdyxZh73tgbHgWtVD7rBfi0IELLmGodPGwTBB9OuGyIWhTu1 WNn1pDdh7ByIvpmMPpcfBPGoAm1DLuaXfu1fC5M+hYG2+t4J8Z0BUm/RudYib+nobUTJ jShXt1F/QmmC++dlyvlMe5wn8cjY2x0sHR5C8YzjI/351kCkcCGoVp15ln1NRRooChQX XF4g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references; bh=SJIdjwDoltzYDsMGOSY21WiG9xGlEgTZnOSiLcGTlEU=; b=oWgofk1wW4wlGz1qo48/TBi1aLEVhCNSHpWfSweYF5GodJCFINsJMcPZOt3tnRMs8R nfszqJIxZ4SKg8A6dJCDxrRMo7E7SKd9o3v0ZWAUkLMCaEiqqNI+W6f7K5hkwo7Ydo98 a7hg15y0BCzKnE+nI1TPRyuoG7Vqz7FO4kaZD61gJl2+qTST1huLg3au7f1QPltM1Jr0 VlJZ2E0oxW1qIriFKdXqKt+wEunUMkgp5q3EwKeqkj4FSNgY6JVk4BryIxyi4VZ9RTzi upnjEBLYxgI7YR0BSetWUcvztknCd51JNcR8edecTzGSYpw+8AW1Uj4P4k/GniM1rXT2 qeqQ== X-Gm-Message-State: AN3rC/4TkDUfzG2YSrZ2+Vzy9vaA72LRFKt+YqGoKcI3E00ODS/8rEpV 8fc63KQuLpJntQ9GCqQ= X-Received: by 10.55.176.7 with SMTP id z7mr26404957qke.182.1493753009929; Tue, 02 May 2017 12:23:29 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Tue, 2 May 2017 12:22:54 -0700 Message-Id: <20170502192300.2124-20-rth@twiddle.net> X-Mailer: git-send-email 2.9.3 In-Reply-To: <20170502192300.2124-1-rth@twiddle.net> References: <20170502192300.2124-1-rth@twiddle.net> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:400d:c09::244 Subject: [Qemu-devel] [PATCH v6 19/25] target/hppa: Use tcg_gen_lookup_and_goto_ptr 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: cota@braap.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" Signed-off-by: Richard Henderson --- target/hppa/translate.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/target/hppa/translate.c b/target/hppa/translate.c index 9e8c233..e10abc5 100644 --- a/target/hppa/translate.c +++ b/target/hppa/translate.c @@ -517,7 +517,7 @@ static void gen_goto_tb(DisasContext *ctx, int which, if (ctx->singlestep_enabled) { gen_excp_1(EXCP_DEBUG); } else { - tcg_gen_exit_tb(0); + tcg_gen_lookup_and_goto_ptr(cpu_iaoq_f); } } } @@ -1510,7 +1510,7 @@ static ExitStatus do_ibranch(DisasContext *ctx, TCGv = dest, } else if (is_n && use_nullify_skip(ctx)) { /* The (conditional) branch, B, nullifies the next insn, N, and we're allowed to skip execution N (no single-step or - tracepoint in effect). Since the exit_tb that we must use + tracepoint in effect). Since the goto_ptr that we must use for the indirect branch consumes no special resources, we can (conditionally) skip B and continue execution. */ /* The use_nullify_skip test implies we have a known control path.= */ @@ -1527,7 +1527,7 @@ static ExitStatus do_ibranch(DisasContext *ctx, TCGv = dest, if (link !=3D 0) { tcg_gen_movi_tl(cpu_gr[link], ctx->iaoq_n); } - tcg_gen_exit_tb(0); + tcg_gen_lookup_and_goto_ptr(cpu_iaoq_f); return nullify_end(ctx, NO_EXIT); } else { cond_prep(&ctx->null_cond); @@ -3885,7 +3885,7 @@ void gen_intermediate_code(CPUHPPAState *env, struct = TranslationBlock *tb) if (ctx.singlestep_enabled) { gen_excp_1(EXCP_DEBUG); } else { - tcg_gen_exit_tb(0); + tcg_gen_lookup_and_goto_ptr(cpu_iaoq_f); } break; default: --=20 2.9.3 From nobody Tue Apr 30 02:32:47 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.zoho.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 1493753705696427.51204497074093; Tue, 2 May 2017 12:35:05 -0700 (PDT) Received: from localhost ([::1]:33342 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d5dZe-0003el-UA for importer@patchew.org; Tue, 02 May 2017 15:35:02 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:59584) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d5dOX-00021s-UT for qemu-devel@nongnu.org; Tue, 02 May 2017 15:23:35 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1d5dOW-0001on-Od for qemu-devel@nongnu.org; Tue, 02 May 2017 15:23:33 -0400 Received: from mail-qk0-x243.google.com ([2607:f8b0:400d:c09::243]:33023) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1d5dOW-0001oZ-JK for qemu-devel@nongnu.org; Tue, 02 May 2017 15:23:32 -0400 Received: by mail-qk0-x243.google.com with SMTP id o85so22941788qkh.0 for ; Tue, 02 May 2017 12:23:32 -0700 (PDT) Received: from bigtime.twiddle.net.com ([2602:47:d954:1500:5e51:4fff:fe40:9c64]) by smtp.gmail.com with ESMTPSA id d65sm10664657qkc.53.2017.05.02.12.23.30 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 02 May 2017 12:23:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references; bh=xnZ71bx9Vv9OjBHci2FVggBSPN2S+I5z9fCyDOCY5fM=; b=CFbj2+4ViM45NWzK2DtAOVVfzDgQRCbdP+3M7dlN+82P3mpPLhygBjMWQNEabE8e+i Kv/OcnPqVR37OUUGwp2NqWtfjBqbsc9YRKIRz/2R6dSadX8HJezXT3apoOfUZAdLKwSc I0H0yOhJADC+5jXAet4RgaKQIMhKh6zT4WKCIksezWTCkmIK7Eoa0FEsKysRvSBWNyY5 29Xd9NFmjKsgfdwkhZJlCAIHTdPwMTvVLRAJuBj02eUZ+ALMsOeWMyKF4v3x4jENQtp5 Y2QsrNpajtJjXG196WawHpOmXBewNzdK9Wq8y/om1NujuzwtTDPp6u4a0GGTlQMh693Y MFew== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references; bh=xnZ71bx9Vv9OjBHci2FVggBSPN2S+I5z9fCyDOCY5fM=; b=Z5PLeQROcHcX8p9mg7DfQ2TAS8InuE3JcxXEQQozkz0CKfpiigmOb786RzMxLJHRoC cBXcjoV4vVM89/u+IubVIDT5bgpGkTeSDSb6MHapVmY2rlJ5isgNYGglosftuz1nYZYV z4DEK2ZQa+rYkFoNUoohGcJgCmjf60K7yEktJf51se/WJM5005OvJiGOH3qwDNTwOIh4 zs6Ap/m1yyfgpQtAXSYP/MsD+F6RUdJwDjPCGyV/JMDyK+9n1423EhQhhx7CeCmpf6hQ GkhfE/Ey7y7/i1RIiOAXEyJf/yS+O1zpWYe6BAZQl946rfJUHlFcX18Yif+o19UdMlC1 GeRA== X-Gm-Message-State: AN3rC/6vdyFLZkQBQ8AN75VzZU4ugoO+ZUU4aUYltqZ0gT6bNQMT+K9I lv59siKbeZEHnw== X-Received: by 10.55.128.1 with SMTP id b1mr27015219qkd.226.1493753012148; Tue, 02 May 2017 12:23:32 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Tue, 2 May 2017 12:22:55 -0700 Message-Id: <20170502192300.2124-21-rth@twiddle.net> X-Mailer: git-send-email 2.9.3 In-Reply-To: <20170502192300.2124-1-rth@twiddle.net> References: <20170502192300.2124-1-rth@twiddle.net> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:400d:c09::243 Subject: [Qemu-devel] [PATCH v6 20/25] target/alpha: Use tcg_gen_lookup_and_goto_ptr 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: cota@braap.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" Signed-off-by: Richard Henderson --- target/alpha/translate.c | 54 +++++++++++++++++++++++++++++++++++++++++---= ---- 1 file changed, 47 insertions(+), 7 deletions(-) diff --git a/target/alpha/translate.c b/target/alpha/translate.c index df5d695..c2941ae 100644 --- a/target/alpha/translate.c +++ b/target/alpha/translate.c @@ -89,6 +89,9 @@ typedef enum { updated the PC for the next instruction to be executed. */ EXIT_PC_STALE, =20 + /* We are exiting the TB due to page crossing or space constraints. */ + EXIT_FALLTHRU, + /* We are ending the TB with a noreturn function call, e.g. longjmp. No following code will be executed. */ EXIT_NORETURN, @@ -455,11 +458,17 @@ static bool in_superpage(DisasContext *ctx, int64_t a= ddr) #endif } =20 +static bool use_exit_tb(DisasContext *ctx) +{ + return ((ctx->tb->cflags & CF_LAST_IO) + || ctx->singlestep_enabled + || singlestep); +} + static bool use_goto_tb(DisasContext *ctx, uint64_t dest) { /* Suppress goto_tb in the case of single-steping and IO. */ - if ((ctx->tb->cflags & CF_LAST_IO) - || ctx->singlestep_enabled || singlestep) { + if (unlikely(use_exit_tb(ctx))) { return false; } #ifndef CONFIG_USER_ONLY @@ -492,7 +501,12 @@ static ExitStatus gen_bdirect(DisasContext *ctx, int r= a, int32_t disp) return EXIT_GOTO_TB; } else { tcg_gen_movi_i64(cpu_pc, dest); - return EXIT_PC_UPDATED; + if (use_exit_tb(ctx)) { + return EXIT_PC_UPDATED; + } else { + tcg_gen_lookup_and_goto_ptr(cpu_pc); + return EXIT_GOTO_TB; + } } } =20 @@ -2421,7 +2435,12 @@ static ExitStatus translate_one(DisasContext *ctx, u= int32_t insn) if (ra !=3D 31) { tcg_gen_movi_i64(ctx->ir[ra], ctx->pc); } - ret =3D EXIT_PC_UPDATED; + if (use_exit_tb(ctx)) { + ret =3D EXIT_PC_UPDATED; + } else { + tcg_gen_lookup_and_goto_ptr(cpu_pc); + ret =3D EXIT_GOTO_TB; + } break; =20 case 0x1B: @@ -2677,7 +2696,12 @@ static ExitStatus translate_one(DisasContext *ctx, u= int32_t insn) tcg_gen_andi_i64(tmp, vb, 1); tcg_gen_st8_i64(tmp, cpu_env, offsetof(CPUAlphaState, pal_mode)); tcg_gen_andi_i64(cpu_pc, vb, ~3); - ret =3D EXIT_PC_UPDATED; + if (use_exit_tb(ctx)) { + ret =3D EXIT_PC_UPDATED; + } else { + tcg_gen_lookup_and_goto_ptr(cpu_pc); + ret =3D EXIT_GOTO_TB; + } break; #else goto invalid_opc; @@ -2978,7 +3002,7 @@ void gen_intermediate_code(CPUAlphaState *env, struct= TranslationBlock *tb) || num_insns >=3D max_insns || singlestep || ctx.singlestep_enabled)) { - ret =3D EXIT_PC_STALE; + ret =3D EXIT_FALLTHRU; } } while (ret =3D=3D NO_EXIT); =20 @@ -3000,8 +3024,24 @@ void gen_intermediate_code(CPUAlphaState *env, struc= t TranslationBlock *tb) tcg_gen_exit_tb(0); } break; + case EXIT_FALLTHRU: + if (ctx.singlestep_enabled) { + tcg_gen_movi_i64(cpu_pc, ctx.pc); + gen_excp_1(EXCP_DEBUG, 0); + } else if (use_exit_tb(&ctx)) { + tcg_gen_movi_i64(cpu_pc, ctx.pc); + tcg_gen_exit_tb(0); + } else if (use_goto_tb(&ctx, ctx.pc)) { + tcg_gen_goto_tb(0); + tcg_gen_movi_i64(cpu_pc, ctx.pc); + tcg_gen_exit_tb((uintptr_t)ctx.tb); + } else { + tcg_gen_movi_i64(cpu_pc, ctx.pc); + tcg_gen_lookup_and_goto_ptr(cpu_pc); + } + break; default: - abort(); + g_assert_not_reached(); } =20 gen_tb_end(tb, num_insns); --=20 2.9.3 From nobody Tue Apr 30 02:32:47 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.zoho.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 1493754198641722.8760881400367; Tue, 2 May 2017 12:43:18 -0700 (PDT) Received: from localhost ([::1]:33405 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d5dhd-0001tJ-7J for importer@patchew.org; Tue, 02 May 2017 15:43:17 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:59594) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d5dOY-00022u-QT for qemu-devel@nongnu.org; Tue, 02 May 2017 15:23:35 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1d5dOY-0001pn-1X for qemu-devel@nongnu.org; Tue, 02 May 2017 15:23:34 -0400 Received: from mail-qt0-x241.google.com ([2607:f8b0:400d:c0d::241]:34809) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1d5dOX-0001pM-Sv for qemu-devel@nongnu.org; Tue, 02 May 2017 15:23:33 -0400 Received: by mail-qt0-x241.google.com with SMTP id g60so3856604qtd.1 for ; Tue, 02 May 2017 12:23:33 -0700 (PDT) Received: from bigtime.twiddle.net.com ([2602:47:d954:1500:5e51:4fff:fe40:9c64]) by smtp.gmail.com with ESMTPSA id d65sm10664657qkc.53.2017.05.02.12.23.32 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 02 May 2017 12:23:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references; bh=M4bTGrxd+JYSOUsJbbOJXK8VKXNrlPlOgLDdH1sRe7I=; b=lr6Ub1OzvmrhCGWXZUKiokZSqeBhS1xjZ0NON90Tvm6xIlVGx4VJgdVniDm6lzlHwP OlmK0REhgsOmnX79RJSZe7aYmbUsLu1eUMnhQQEKqSYRHyV7c5PtvIQkNHYttzsERaNZ 8KCvINul1U6VkaH0zySbiDtDOCOVuRJnlULKHOSiiV07IbPYQZPbGmehfNQiPYKeb/vq sgsUM/1EMZyf39EMqxg6ESMkLo4aRsAm55BYlaJUkMFQ5QCPv99Nmaj9NV1SAkfCU6E4 6Jbsk7ha4NCAp8Z26mMwt+eBFIiP5M9YJ3nh3sDqGeSRnIumqlXODaV8bk5bI8OsfidJ RUoA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references; bh=M4bTGrxd+JYSOUsJbbOJXK8VKXNrlPlOgLDdH1sRe7I=; b=cg5IlRrHKtzrboKfNsMBaPguXeeWJK5iyDhd4Cbc4raf84sEQrc3Y6gogqniN6NBuF wyAdqaxME9GNJZ6xzTbxzmeWe46BKMWkuFiTWjQ/ik2IxWXW5jBfrSDHSZzKVmrCv6vm +LK956QUyzKR974rjA2qoXKkYuLZTZAXQIi/WMRBj8zNI7dg7zdZf6RwGphIDxdn5Dx0 skAa0u68Frz3m0pp+Fn4fRQCTHdS2ieIPywN6xhl1AVXyztiph6hx3QJMUAqqJKZUq84 2o2ONSNiHYZgZnAo8NCQnpg91hponwbQSg6aMxypWSWRUBwGWkPvtrZjISSmzp1kNIqZ oyAw== X-Gm-Message-State: AN3rC/7QezelpoTD8LLekUV4OOm99OtHgYeMxfWKTQuqWnqF3l8dCi5F va6PwSUrCLw+6Q== X-Received: by 10.200.44.130 with SMTP id 2mr29799032qtw.59.1493753013379; Tue, 02 May 2017 12:23:33 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Tue, 2 May 2017 12:22:56 -0700 Message-Id: <20170502192300.2124-22-rth@twiddle.net> X-Mailer: git-send-email 2.9.3 In-Reply-To: <20170502192300.2124-1-rth@twiddle.net> References: <20170502192300.2124-1-rth@twiddle.net> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:400d:c0d::241 Subject: [Qemu-devel] [PATCH v6 21/25] target/aarch64: optimize cross-page direct jumps in softmmu 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: cota@braap.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" From: "Emilio G. Cota" Perf numbers in next commit's log. Signed-off-by: Emilio G. Cota Signed-off-by: Richard Henderson --- target/arm/translate-a64.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/target/arm/translate-a64.c b/target/arm/translate-a64.c index 24de30d..1e28094 100644 --- a/target/arm/translate-a64.c +++ b/target/arm/translate-a64.c @@ -373,7 +373,7 @@ static inline void gen_goto_tb(DisasContext *s, int n, = uint64_t dest) } else if (s->singlestep_enabled) { gen_exception_internal(EXCP_DEBUG); } else { - tcg_gen_exit_tb(0); + tcg_gen_lookup_and_goto_ptr(cpu_pc); s->is_jmp =3D DISAS_TB_JUMP; } } --=20 2.9.3 From nobody Tue Apr 30 02:32:47 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.zoho.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 1493754288820972.8326220526815; Tue, 2 May 2017 12:44:48 -0700 (PDT) Received: from localhost ([::1]:33419 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d5dj5-000315-Bl for importer@patchew.org; Tue, 02 May 2017 15:44:47 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:59606) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d5dOa-000266-V5 for qemu-devel@nongnu.org; Tue, 02 May 2017 15:23:38 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1d5dOZ-0001qs-H6 for qemu-devel@nongnu.org; Tue, 02 May 2017 15:23:36 -0400 Received: from mail-qt0-x243.google.com ([2607:f8b0:400d:c0d::243]:34983) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1d5dOZ-0001qa-Bn for qemu-devel@nongnu.org; Tue, 02 May 2017 15:23:35 -0400 Received: by mail-qt0-x243.google.com with SMTP id o36so21704318qtb.2 for ; Tue, 02 May 2017 12:23:35 -0700 (PDT) Received: from bigtime.twiddle.net.com ([2602:47:d954:1500:5e51:4fff:fe40:9c64]) by smtp.gmail.com with ESMTPSA id d65sm10664657qkc.53.2017.05.02.12.23.33 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 02 May 2017 12:23:33 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references; bh=15oJ74dROGbtYITcbTklKFua68lpYWHV+lkXp0paUdE=; b=KgJ4PGMK94I8VPu51f2wZfLEOM/JKZCigjlNIMQLRiqWqRRGeUqW8xhgg6in5xzyU8 9VAzvRKzaJ2O7AT6QTUcZjySnu5yNpBtmifzXmG3Qq5dXdMzCPuJBXn4g+ogKFTXGBoP a5E2hmZ6fNqfvaoam9E+xTlWnoyOWI1q7oap8YwhrggudEHk/Gc2w6EWNBu6waFBIvEd vrruZHOOqhvCfaiutsgqJ48ztEVh0njSfCbOX6Ef8L8ufzN19HfxRZiM21r4jxFKTUgK PL+2nXsCdwRq5ha1KyNIVw63/DQ+sQAyXzN9IZwRHlLcaUl8iKAZqH1obMmCZGVpYjGt T8TQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references; bh=15oJ74dROGbtYITcbTklKFua68lpYWHV+lkXp0paUdE=; b=CxGC2/nEQBRLEJzwoqpe5ZKHOEHQNxa8UIRq8G5glZ+94pkeR9vY4PhwirWtZueSd8 XB1CcxsoGzdMv0dTH9QJLCPH7bdfLvJX7MIGJA3qyaxmVatqs5P4hDaWz0Ysni7spepq 9oxqTIPOqdxy2sipZwpV1J4Zu6fExcY16WInEFtq0vJQQWSnmZjTfTFkkSyZ3QfSKxN1 YyZ8ukycREY5Gfm1IfnvlU6uVriKmdEHtorBIKVdGudo9LSrcfkOS4AiSw9Fysmo/9p/ TnyMoXSL3GrKDGG2358aJkG2vW/5nXvlAR61Vwt8AqDOVhGnVVM0/LxMrEn81F8yhlKA w8Ng== X-Gm-Message-State: AN3rC/6V2G0zr8zqhPzolUoM+qZN96kaXOi4GDI5Rj6tWkGADU3H6vHB U0g2IM6axZHbzfUVqKk= X-Received: by 10.200.41.70 with SMTP id z6mr28325072qtz.112.1493753014628; Tue, 02 May 2017 12:23:34 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Tue, 2 May 2017 12:22:57 -0700 Message-Id: <20170502192300.2124-23-rth@twiddle.net> X-Mailer: git-send-email 2.9.3 In-Reply-To: <20170502192300.2124-1-rth@twiddle.net> References: <20170502192300.2124-1-rth@twiddle.net> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:400d:c0d::243 Subject: [Qemu-devel] [PATCH v6 22/25] target/aarch64: optimize indirect branches 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: cota@braap.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" From: "Emilio G. Cota" Measurements: [Baseline performance is that before applying this and the previous commit] - NBench, aarch64-softmmu. Host: Intel i= 7-4790K @ 4.00GHz 1.7x +-+------------------------------------------------------------------= --------------------------------------------+-+ | = | | cross = | 1.6x +cross+jr.................................................####.......= ............................................+-+ | #++# = | | # # = | 1.5x +-+...................................................*****..#.......= ............................................+-+ | *+++* # = | | * * # = | 1.4x +-+...................................................*...*..#.......= ............................................+-+ | * * # = | | ##### * * # = | 1.3x +-+................................****+++#...........*...*..#.......= ............................................+-+ | *++* # * * # = | | * * # * * # = | 1.2x +-+................................*..*...#...........*...*..#.......= ............................................+-+ | * * # * * # = | | #### * * # * * # = | 1.1x +-+.......................+++#..#..*..*...#...........*...*..#.......= ............................................+-+ | **** # * * # * * # = ****#### | | * * # * * # * * # ****#= ## +++#### ****### * * # | 1x +-++-++++++-++++****###++-*++*++#++*++*+-+#++****+++++*+++*++#++*++*-= +#++*****++#++****###-++*++*-+#++*+-*+++#+-++-+ | *****### * * # * * # * * # *++*### * * # * * = # * * # * *++# * * # * * # | | * *++# * * # * * # * * # * * # * * # * * = # * * # * * # * * # * * # | 0.9x +-+---*****###--****###---****###--****####--****###--*****###--****#= ##--*****###--****###---****###--****####---+-+ ASSIGNMENT BITFIELD FOURFP EMULATION HUFFMAN LU DECOMPOSITIONNE= URAL NUMERIC SORSTRING SORT hmean png: http://imgur.com/qO9ubtk NB. cross here represents the previous commit. - SPECint06 (test set), aarch64-linux-user. Host= : Intel i7-4790K @ 4.00GHz 1.5x +-+------------------------------------------------------------------= --------------------------------------------+-+ | = ***** | | = *+++* jr | | = * * | 1.4x +-+..................................................................= ...*...*.....................+++............+-+ | = * * | | | ***** = * * | | | * * = * * ***** | 1.3x +-+....................................*...*.........................= ...*...*....................*.|.*...........+-+ | +++ * * = * * * | * | | ***** * * = * * *+++* | | * * * * = * * * * | 1.2x +-+....................*...*...........*...*.........................= ...*...*...........*****....*...*...........+-+ | ***** * * * * = * * * * * * +++ | | * * * * * * = * * * * * * ***** | | * * * * ***** * * = * * * * * * * * | 1.1x +-+...*...*............*...*...*...*...*...*.........................= ...*...*....+++....*...*....*...*...*...*...+-+ | * * * * * * * * = * * ***** * * * * * * | | * * * * * * * * ***** = * * * * * * * * * * | | * * ***** * * * * * * * * ****** = * * * * * * * * * * | 1x +-++-+*+++*-++*+++*++++*+-+*+++*-++*+++*-++*+++*+++*++-*++++*-++*****= +++*++-*+++*++-*+++*+-+*++++*+++*++-*+++*+-++-+ | * * * * * * * * * * * * * * *+++*= * * * * * * * * * * | | * * * * * * * * * * * * * * * *= * * * * * * * * * * | | * * * * * * * * * * * * * * * *= * * * * * * * * * * | 0.9x +-+---*****---*****----*****---*****---*****---*****---******---*****= ---*****---*****---*****----*****---*****---+-+ astar bzip2 gcc gobmk h264ref hmmlibquantum mcf om= netpperlbench sjengxalancbmk hmean png: http://imgur.com/3Dp4vvq - SPECint06 (train set), aarch64-linux-user. Host= : Intel i7-4790K @ 4.00GHz 1.7x +-+------------------------------------------------------------------= --------------------------------------------+-+ | = | | = jr | 1.6x +-+..................................................................= .............................+++............+-+ | = ***** | | = *+++* | | = * * | 1.5x +-+..................................................................= ............................*...*...........+-+ | = +++ * * | | = ***** * * | 1.4x +-+..................................................................= ...*+++*....................*...*...........+-+ | = * * * * | | ***** = * * * * | | * * = * * ***** * * | 1.3x +-+....................................*...*.........................= ...*...*...*...*............*...*...........+-+ | +++ * * = * * * * * * | | ***** * * = * * * * ***** * * | 1.2x +-+....................*...*...........*...*.........................= ...*...*...*...*...*+++*....*...*...*****...+-+ | * * * * = * * * * * * * * *+++* | | ***** * * ***** * * = * * * * * * * * * * | | * * * * *+++* * * = * * * * * * * * * * | 1.1x +-+...*...*............*...*...*...*...*...*.........................= ...*...*...*...*...*...*....*...*...*...*...+-+ | * * ***** * * * * * * *****= * * * * * * * * * * | | * * * * * * * * * * +++ ****** *+++*= * * * * * * * * * * | 1x +-+---*****---*****----*****---*****---*****---*****---******---*****= ---*****---*****---*****----*****---*****---+-+ astar bzip2 gcc gobmk h264ref hmmlibquantum mcf om= netpperlbench sjengxalancbmk hmean png: http://imgur.com/vRrdc9j Signed-off-by: Emilio G. Cota Signed-off-by: Richard Henderson --- target/arm/translate-a64.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/target/arm/translate-a64.c b/target/arm/translate-a64.c index 1e28094..e0e8b80 100644 --- a/target/arm/translate-a64.c +++ b/target/arm/translate-a64.c @@ -11361,8 +11361,7 @@ void gen_intermediate_code_a64(ARMCPU *cpu, Transla= tionBlock *tb) gen_a64_set_pc_im(dc->pc); /* fall through */ case DISAS_JUMP: - /* indicate that the hash table must be used to find the next = TB */ - tcg_gen_exit_tb(0); + tcg_gen_lookup_and_goto_ptr(cpu_pc); break; case DISAS_TB_JUMP: case DISAS_EXC: --=20 2.9.3 From nobody Tue Apr 30 02:32:47 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.zoho.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 149375371498484.22472773706784; Tue, 2 May 2017 12:35:14 -0700 (PDT) Received: from localhost ([::1]:33344 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d5dZp-0003nt-MY for importer@patchew.org; Tue, 02 May 2017 15:35:13 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:59618) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d5dOc-00027I-1q for qemu-devel@nongnu.org; Tue, 02 May 2017 15:23:39 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1d5dOb-0001s9-2G for qemu-devel@nongnu.org; Tue, 02 May 2017 15:23:38 -0400 Received: from mail-qk0-x244.google.com ([2607:f8b0:400d:c09::244]:33032) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1d5dOa-0001rm-TM for qemu-devel@nongnu.org; Tue, 02 May 2017 15:23:36 -0400 Received: by mail-qk0-x244.google.com with SMTP id o85so22942004qkh.0 for ; Tue, 02 May 2017 12:23:36 -0700 (PDT) Received: from bigtime.twiddle.net.com ([2602:47:d954:1500:5e51:4fff:fe40:9c64]) by smtp.gmail.com with ESMTPSA id d65sm10664657qkc.53.2017.05.02.12.23.34 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 02 May 2017 12:23:35 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=2VHZoADljCGEOGUHgO434bUX/zLC/5WfcXwqGXqaqn8=; b=dr/FMJsz5NfblzxFZ7erT1Zs81LnSNUCoZHfVzelauDBZAEFI5hefitx6fQl1Q1lib 6agteDl0bVWWLMB8xfcXNqOz6U1oqrs1G3kKf+ujfxXE7jY+2aeKh22FsZOGvsBHlkuH 37ENi6+UUQ3mQYAT3Pn4KNNB9LPNTJmALI3jLHH7S1wdch0OlQssys9NsxGdyO5N+xPZ ojxl8ozYMQqiKGV+6o9nOsfbNQQdXcleXK1NMkjXiLu0X32xMafm5aQwuCUCqbYNkyjY qlhXGN5omYcRuLbuLHC+KcUH7nuNSTZqetwNdhe8bu9YIm+1PWay48Ha1pWRQxjt1pVb zp0Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references:mime-version:content-transfer-encoding; bh=2VHZoADljCGEOGUHgO434bUX/zLC/5WfcXwqGXqaqn8=; b=SJzkBweckGjKHl9F/4O58YjUAulRpcB55bxiDuksi7uiudSP6ffrOXpD4YQd7FlA3C 41yxAoYmXgdkr7CBY7xX/QImm4KbUV52A9EJNfEe380nLoc/EkkKhrkG6f3WTUbkhOGg +wRLAkAXS74zVAVfrhJb7z0X7VZVyEm1//U7DA22seY6rea+9FD2yHnVhsgZtLx6fkli iNkN+YVDzWNyLBV4L9miidkvAhkzNd/DK10sm7HKvezQ0gNKJlkrBxCp88SyjeBqkFdC 1HMu6BCtwhwNyV1Vv3gV1roNNFOMRaw2FE4Hk8vt7HFIE0vr0f4hmB3Cc/Me6En8nNda 6imA== X-Gm-Message-State: AN3rC/5cyRw1Nk4/E01BGws6cHbeGn14c5MX8S5Cv00cA9EGPLmcXdgF dt8Ws0sBtxnbNqYdbMw= X-Received: by 10.55.137.193 with SMTP id l184mr30299842qkd.122.1493753016287; Tue, 02 May 2017 12:23:36 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Tue, 2 May 2017 12:22:58 -0700 Message-Id: <20170502192300.2124-24-rth@twiddle.net> X-Mailer: git-send-email 2.9.3 In-Reply-To: <20170502192300.2124-1-rth@twiddle.net> References: <20170502192300.2124-1-rth@twiddle.net> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:400d:c09::244 Subject: [Qemu-devel] [PATCH v6 23/25] tcg/mips: implement goto_ptr 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: cota@braap.org, Aurelien Jarno 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 From: Aurelien Jarno Reviewed-by: Philippe Mathieu-Daud=C3=A9 Signed-off-by: Aurelien Jarno Message-Id: <20170430145254.25616-2-aurelien@aurel32.net> Signed-off-by: Richard Henderson --- tcg/mips/tcg-target.h | 2 +- tcg/mips/tcg-target.inc.c | 13 +++++++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/tcg/mips/tcg-target.h b/tcg/mips/tcg-target.h index e3240cf..d75cb63 100644 --- a/tcg/mips/tcg-target.h +++ b/tcg/mips/tcg-target.h @@ -130,7 +130,7 @@ extern bool use_mips32r2_instructions; #define TCG_TARGET_HAS_muluh_i32 1 #define TCG_TARGET_HAS_mulsh_i32 1 #define TCG_TARGET_HAS_bswap32_i32 1 -#define TCG_TARGET_HAS_goto_ptr 0 +#define TCG_TARGET_HAS_goto_ptr 1 =20 #if TCG_TARGET_REG_BITS =3D=3D 64 #define TCG_TARGET_HAS_add2_i32 0 diff --git a/tcg/mips/tcg-target.inc.c b/tcg/mips/tcg-target.inc.c index 01ac7b2..9e5b9f4 100644 --- a/tcg/mips/tcg-target.inc.c +++ b/tcg/mips/tcg-target.inc.c @@ -1747,6 +1747,11 @@ static inline void tcg_out_op(TCGContext *s, TCGOpco= de opc, tcg_out_nop(s); s->tb_jmp_reset_offset[a0] =3D tcg_current_code_size(s); break; + case INDEX_op_goto_ptr: + /* jmp to the given host address (could be epilogue) */ + tcg_out_opc_reg(s, OPC_JR, 0, a0, 0); + tcg_out_nop(s); + break; case INDEX_op_br: tcg_out_brcond(s, TCG_COND_EQ, TCG_REG_ZERO, TCG_REG_ZERO, arg_label(a0)); @@ -2160,6 +2165,7 @@ static const TCGTargetOpDef mips_op_defs[] =3D { { INDEX_op_exit_tb, { } }, { INDEX_op_goto_tb, { } }, { INDEX_op_br, { } }, + { INDEX_op_goto_ptr, { "r" } }, =20 { INDEX_op_ld8u_i32, { "r", "r" } }, { INDEX_op_ld8s_i32, { "r", "r" } }, @@ -2451,6 +2457,13 @@ static void tcg_target_qemu_prologue(TCGContext *s) /* delay slot */ tcg_out_mov(s, TCG_TYPE_PTR, TCG_AREG0, tcg_target_call_iarg_regs[0]); =20 + /* + * Return path for goto_ptr. Set return value to 0, a-la exit_tb, + * and fall through to the rest of the epilogue. + */ + s->code_gen_epilogue =3D s->code_ptr; + tcg_out_mov(s, TCG_TYPE_REG, TCG_REG_V0, TCG_REG_ZERO); + /* TB epilogue */ tb_ret_addr =3D s->code_ptr; for (i =3D 0; i < ARRAY_SIZE(tcg_target_callee_save_regs); i++) { --=20 2.9.3 From nobody Tue Apr 30 02:32:47 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.zoho.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 1493753856178584.7585132834199; Tue, 2 May 2017 12:37:36 -0700 (PDT) Received: from localhost ([::1]:33363 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d5dc6-0005XR-W5 for importer@patchew.org; Tue, 02 May 2017 15:37:35 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:59631) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d5dOd-00028r-8U for qemu-devel@nongnu.org; Tue, 02 May 2017 15:23:40 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1d5dOc-0001tD-95 for qemu-devel@nongnu.org; Tue, 02 May 2017 15:23:39 -0400 Received: from mail-qk0-x242.google.com ([2607:f8b0:400d:c09::242]:36389) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1d5dOc-0001ss-59 for qemu-devel@nongnu.org; Tue, 02 May 2017 15:23:38 -0400 Received: by mail-qk0-x242.google.com with SMTP id o4so4543192qkb.3 for ; Tue, 02 May 2017 12:23:38 -0700 (PDT) Received: from bigtime.twiddle.net.com ([2602:47:d954:1500:5e51:4fff:fe40:9c64]) by smtp.gmail.com with ESMTPSA id d65sm10664657qkc.53.2017.05.02.12.23.36 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 02 May 2017 12:23:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references; bh=1WrDlSSzIIMdi4HXj2KvQKlv7xPjFBJdTBbObtOMzVU=; b=fDr7lbkRV7rrPyKGilaiuxOASNJcj4DeyOOYXZ/1w4/qodjyjMsfQA1tkb4Rq6JQni NUfwrAqEI4c0IDje01x2cCHbY/5YMeJUS6Qyl0qvSfxl5AsR6ZK0e+YZLfpKiw2zWTLP vWnPr1mES00lSgW01NhZzRbWCuE+u0sMT06G3ywMpMrvL266ssFgpFrITkQHLBLM4PJW tVFJwt+WauxPs2cFPiyyRZQ+HBMvaRj4YPNzmEmmnpwbMBH0PyyXM0elH6tPLZhoBKWG Y0ckvoRP6HcXLeN/hAHVQOtnk7Cuq4S1c0HzwMx6knr7tH8JP5ebyfuS0oV1wyoUmQzw OYcA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references; bh=1WrDlSSzIIMdi4HXj2KvQKlv7xPjFBJdTBbObtOMzVU=; b=KuzI7JxfVSMOO03HzCX9i87VtWY4VrF9oXCivhtkEPOa/w1J12O/ZBQjF9dWMVg0Yf ISUD0tZ+MNwFTEadkqjz5Qn9xt7r1ZU+7040H2rwc7zOuW36wx2Q2wmI3aK5BI0Zg4WY 3Os6aff1NFMuqVHYbvSB39xGt5yHbLMK556wj0u9u1znfn8Vtl4fStIToKxGa3Vy+1s5 RibPV20H5ZqE8EQo5MFem0zjpGVlJHa2Z+bhEgGioqzWLSzyQG8oFoTv7yXmYZW7hYAu JNiMn9Yo/eLxVqu3T2wTnopf8XBPMOzwUkLLFlBMs48OZjj7BeNUwba7quT6gsTmY+NJ Xhkw== X-Gm-Message-State: AN3rC/5IysgRqUMA5VZx7lwYA+yxUvyFOoqqJxezDXdgX8qrAUAsqdUT m2S15bu/om6+lQ== X-Received: by 10.55.169.193 with SMTP id s184mr7198993qke.118.1493753017786; Tue, 02 May 2017 12:23:37 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Tue, 2 May 2017 12:22:59 -0700 Message-Id: <20170502192300.2124-25-rth@twiddle.net> X-Mailer: git-send-email 2.9.3 In-Reply-To: <20170502192300.2124-1-rth@twiddle.net> References: <20170502192300.2124-1-rth@twiddle.net> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:400d:c09::242 Subject: [Qemu-devel] [PATCH v6 24/25] target/mips: optimize cross-page direct jumps in softmmu 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: Yongbok Kim , cota@braap.org, Aurelien Jarno 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" From: Aurelien Jarno Cc: Yongbok Kim Signed-off-by: Aurelien Jarno Message-Id: <20170430145254.25616-3-aurelien@aurel32.net> Signed-off-by: Richard Henderson --- target/mips/translate.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/target/mips/translate.c b/target/mips/translate.c index 3022f34..1a7ac07 100644 --- a/target/mips/translate.c +++ b/target/mips/translate.c @@ -4233,7 +4233,7 @@ static inline void gen_goto_tb(DisasContext *ctx, int= n, target_ulong dest) save_cpu_state(ctx, 0); gen_helper_raise_exception_debug(cpu_env); } - tcg_gen_exit_tb(0); + tcg_gen_lookup_and_goto_ptr(cpu_PC); } } =20 --=20 2.9.3 From nobody Tue Apr 30 02:32:47 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.zoho.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 1493753843364380.1949207793434; Tue, 2 May 2017 12:37:23 -0700 (PDT) Received: from localhost ([::1]:33361 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d5dbu-0005Nf-38 for importer@patchew.org; Tue, 02 May 2017 15:37:22 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:59663) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d5dOf-0002Aj-1q for qemu-devel@nongnu.org; Tue, 02 May 2017 15:23:41 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1d5dOe-0001v7-60 for qemu-devel@nongnu.org; Tue, 02 May 2017 15:23:41 -0400 Received: from mail-qk0-x242.google.com ([2607:f8b0:400d:c09::242]:33036) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1d5dOe-0001uq-10 for qemu-devel@nongnu.org; Tue, 02 May 2017 15:23:40 -0400 Received: by mail-qk0-x242.google.com with SMTP id o85so22942139qkh.0 for ; Tue, 02 May 2017 12:23:39 -0700 (PDT) Received: from bigtime.twiddle.net.com ([2602:47:d954:1500:5e51:4fff:fe40:9c64]) by smtp.gmail.com with ESMTPSA id d65sm10664657qkc.53.2017.05.02.12.23.38 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 02 May 2017 12:23:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references; bh=tTHMAZ5sBKUsqEDSyUp6KqTAwSZyGDZ5VMB4yMQML+c=; b=qRjUXROmQaYt5FADbSkvtGrGhH/+jhSNGf3slKZt/Ays9XT5a+76Tyn2unICgE+VTd asVxZyybMrHVmz8ubLsAwc+aaIAD7QR1TzIfQFgWookGC0dVagsfPpn2HFiRue1ykiJa va4YmwRSiub5OLvnCRIKstouztZyjsC+Wn/KrbirjB9PZSHuvceM/H2iB1AJiHhsWIXc aoVGKykHUWqwwjcgH/tRoQIPNNDA//yE2Z+L4gRI8/QZaBLxLcyuYq9CoDv+aemjitcq +D8DzjqRRaaULii++7AGyfC9FTsDVMBXfScNrM+GcUwLHbikL2km0KTAYuDPP7HR2BPu MKxQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references; bh=tTHMAZ5sBKUsqEDSyUp6KqTAwSZyGDZ5VMB4yMQML+c=; b=Hlc+AyyrudNpDpqUEHUr+f/V2KNHfclDy8x636byMCjHa/YmwKsJLiKzj7gR9zGw7B vVQilJh4ZAvieMaa5kU0k3NpXM1QvUTsO0MsBRjKnyVtTTr17EXUjjBbMFkwzT3vFgvG 6WpHNWNfiPo+D41z/yaOhjp+is1rNV+isDF1cxPClPDz7Nss8T50/s90dlpsuYS7vlRC CMtSJyppPM2OT/EhG7tT+r4FbkQVX+YqxOsm4TUr6xSEkblu0yNsCZr+FK0Qn5DkfEY1 dSGR1sYxcXMQ3VC7tHrqa1QqfJMfIVp43Upga+W56VMZd/JqQJDFhsssSrS+sQD0TZT9 ZQOw== X-Gm-Message-State: AN3rC/7AmHQkKYGYXRve0Ap+QL/TUMC5Dypr6kQnRdYucyV0aIOnoiKb heHfdrWtGRk15SZBbik= X-Received: by 10.55.207.140 with SMTP id v12mr26762519qkl.68.1493753019423; Tue, 02 May 2017 12:23:39 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Tue, 2 May 2017 12:23:00 -0700 Message-Id: <20170502192300.2124-26-rth@twiddle.net> X-Mailer: git-send-email 2.9.3 In-Reply-To: <20170502192300.2124-1-rth@twiddle.net> References: <20170502192300.2124-1-rth@twiddle.net> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:400d:c09::242 Subject: [Qemu-devel] [PATCH v6 25/25] target/mips: optimize indirect branches 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: Yongbok Kim , cota@braap.org, Aurelien Jarno 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" From: Aurelien Jarno Cc: Yongbok Kim Signed-off-by: Aurelien Jarno Message-Id: <20170430145254.25616-4-aurelien@aurel32.net> Signed-off-by: Richard Henderson --- target/mips/translate.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/target/mips/translate.c b/target/mips/translate.c index 1a7ac07..559f8fe 100644 --- a/target/mips/translate.c +++ b/target/mips/translate.c @@ -10725,7 +10725,7 @@ static void gen_branch(DisasContext *ctx, int insn_= bytes) save_cpu_state(ctx, 0); gen_helper_raise_exception_debug(cpu_env); } - tcg_gen_exit_tb(0); + tcg_gen_lookup_and_goto_ptr(cpu_PC); break; default: fprintf(stderr, "unknown branch 0x%x\n", proc_hflags); --=20 2.9.3