From nobody Fri Apr 26 19:55:23 2024 Delivered-To: importer2@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1674526001; cv=none; d=zohomail.com; s=zohoarc; b=HfiPnzUAtuG1/o5ssIpOu3FVUKU5zLHcaeT+9udfinns7vnJyHRhef+cxstQRtS2nJQZXwQ2xqBS7j24m63Dpe3M6Pxi6zEuintadSt5g2du9IAV/sDEJUo9P+pUej7MFQ8llzDGAWpNYMFg0O6ZD+GsC8ZmmJumUyEsJp7V0K4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1674526001; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=U9vjpxFE1AEIlgkthxEfz8zh3TVx+kl7oOc+q8wWGhQ=; b=Uf1+L3n7QZ6UMaoLNmaJX2294AYvBRAll57ID7FGhjefcG+yuG0Kam8iiWOtvxow66mG7BLm0QtAVUOfLTLD4fRVPuoC77c8JCln3fQXzgdOBi6JJ7SVl2PPVAINavXW2JxK54AI+4cHVpCfPHsonjzZ6pmCuDU9l71K4BK7uvc= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1674526001654434.4028200098445; Mon, 23 Jan 2023 18:06:41 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1pK8gX-0008NU-Ll; Mon, 23 Jan 2023 21:05:17 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pK8gV-0008Mx-V2 for qemu-devel@nongnu.org; Mon, 23 Jan 2023 21:05:15 -0500 Received: from mail-pl1-x634.google.com ([2607:f8b0:4864:20::634]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1pK8gU-0003mC-5N for qemu-devel@nongnu.org; Mon, 23 Jan 2023 21:05:15 -0500 Received: by mail-pl1-x634.google.com with SMTP id d3so13324236plr.10 for ; Mon, 23 Jan 2023 18:05:13 -0800 (PST) Received: from stoup.. (rrcs-173-198-77-218.west.biz.rr.com. [173.198.77.218]) by smtp.gmail.com with ESMTPSA id fh3-20020a17090b034300b00228e56d375asm283936pjb.33.2023.01.23.18.05.11 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 23 Jan 2023 18:05:11 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=U9vjpxFE1AEIlgkthxEfz8zh3TVx+kl7oOc+q8wWGhQ=; b=CRIAj2FyiN/mdJPd0XgC9uAKSugvVSw3c/p6X7+jOGRJeypSCtTwv102R/pRFRjdUO 46fdVIVZDLaPlShg1zdNwBsOZ5cwCoTw8uDdiKhkfQ7EL+ofShGl61q4v99cKD+Q27YI SrYxMZTaaSfW0NVtH5SIG5u9+wpi34TiQmgAXYzV/g69Ag+ViYUll3Q1fW+/c+smokpu B/3o4qTjOhAqHVtDwLp87Up4aXWTTtPJjpe5q3Au8gFF530mz2b3kuHvjBOfT6RJsDtg lHGXUapyhp6TDBpHiuRCye5Y8/UzeZ8Ecii9rviuzEnb+dkhi3SDj0EX045AXSoO0vhJ GPWw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=U9vjpxFE1AEIlgkthxEfz8zh3TVx+kl7oOc+q8wWGhQ=; b=IKs4bRXCMArV3Z9LBZ39rp/6tcSXn4UnafPKk8psDmReL1HYJHCFIWBuA4zp48U9Hh sOzvxw2eOPanUrWoHDkVdVxvvCAg5+m7pcEzT0tUkLMaofU6U3m7RLblSLscLzy3RIO7 ocwEJYrQNJnYnxRkCevbZ4dzGp1McSUOYIbOEZccfT/NUZ7pbH07VMRVp5LmnGFRxPl0 Y/DzMhQgQyQDoPGXxlCpkernzx7gorhhb8KDt4wA6Zm07HxWOGZWbf8AaDr9atWA8XVr Ya2UG0fuIQQ20mcpsB7iA3fDgiAYGIvSHjFqjnzH5txjM9UsA+n4h4obTpnbJ0kVipDc 6uug== X-Gm-Message-State: AFqh2krHQtmFISMzP2qMY+cDpxnlSJpvPMmLP0sgKtA33d3hESbjq1hB qtcWGj34CU8kopeV2QY0la8kyVxRm67ALV6L X-Google-Smtp-Source: AMrXdXtmK6BgDkWd7QY97ndptLfMvqsXXNeJaHkYL4RWe3iSE2P5Eme6zu3gU8BpzHa2WOzhoUfK2Q== X-Received: by 2002:a05:6a21:910a:b0:b9:46a1:7f14 with SMTP id tn10-20020a056a21910a00b000b946a17f14mr15480317pzb.56.1674525912397; Mon, 23 Jan 2023 18:05:12 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Cc: peter.maydell@linaro.org Subject: [PULL v2 01/15] tcg: Avoid recursion in tcg_gen_mulu2_i32 Date: Mon, 23 Jan 2023 16:04:53 -1000 Message-Id: <20230124020507.3732200-2-richard.henderson@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230124020507.3732200-1-richard.henderson@linaro.org> References: <20230124020507.3732200-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer2=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::634; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x634.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer2=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer2=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1674526002813100003 Content-Type: text/plain; charset="utf-8" We have a test for one of TCG_TARGET_HAS_mulu2_i32 or TCG_TARGET_HAS_muluh_i32 being defined, but the test became non-functional when we changed to always define all of these macros. Replace this with a build-time test in tcg_gen_mulu2_i32. Fixes: 25c4d9cc845 ("tcg: Always define all of the TCGOpcode enum members.") Resolves: https://gitlab.com/qemu-project/qemu/-/issues/1435 Signed-off-by: Richard Henderson --- include/tcg/tcg.h | 7 ------- tcg/tcg-op.c | 4 +++- 2 files changed, 3 insertions(+), 8 deletions(-) diff --git a/include/tcg/tcg.h b/include/tcg/tcg.h index 6f497172f8..9a0ae7d20b 100644 --- a/include/tcg/tcg.h +++ b/include/tcg/tcg.h @@ -155,13 +155,6 @@ typedef uint64_t TCGRegSet; #define TCG_TARGET_HAS_rem_i64 0 #endif =20 -/* For 32-bit targets, some sort of unsigned widening multiply is required= . */ -#if TCG_TARGET_REG_BITS =3D=3D 32 \ - && !(defined(TCG_TARGET_HAS_mulu2_i32) \ - || defined(TCG_TARGET_HAS_muluh_i32)) -# error "Missing unsigned widening multiply" -#endif - #if !defined(TCG_TARGET_HAS_v64) \ && !defined(TCG_TARGET_HAS_v128) \ && !defined(TCG_TARGET_HAS_v256) diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c index 9fa9f1b0fd..326a9180ef 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -874,7 +874,7 @@ void tcg_gen_mulu2_i32(TCGv_i32 rl, TCGv_i32 rh, TCGv_i= 32 arg1, TCGv_i32 arg2) tcg_gen_op3_i32(INDEX_op_muluh_i32, rh, arg1, arg2); tcg_gen_mov_i32(rl, t); tcg_temp_free_i32(t); - } else { + } else if (TCG_TARGET_REG_BITS =3D=3D 64) { TCGv_i64 t0 =3D tcg_temp_new_i64(); TCGv_i64 t1 =3D tcg_temp_new_i64(); tcg_gen_extu_i32_i64(t0, arg1); @@ -883,6 +883,8 @@ void tcg_gen_mulu2_i32(TCGv_i32 rl, TCGv_i32 rh, TCGv_i= 32 arg1, TCGv_i32 arg2) tcg_gen_extr_i64_i32(rl, rh, t0); tcg_temp_free_i64(t0); tcg_temp_free_i64(t1); + } else { + qemu_build_not_reached(); } } =20 --=20 2.34.1 From nobody Fri Apr 26 19:55:23 2024 Delivered-To: importer2@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1674526015677885.2837986603865; Mon, 23 Jan 2023 18:06:55 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1pK8gY-0008Nc-Or; Mon, 23 Jan 2023 21:05:18 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pK8gX-0008NM-2u for qemu-devel@nongnu.org; Mon, 23 Jan 2023 21:05:17 -0500 Received: from mail-pj1-x102e.google.com ([2607:f8b0:4864:20::102e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1pK8gV-0003mP-98 for qemu-devel@nongnu.org; Mon, 23 Jan 2023 21:05:16 -0500 Received: by mail-pj1-x102e.google.com with SMTP id u1-20020a17090a450100b0022936a63a21so17062125pjg.4 for ; Mon, 23 Jan 2023 18:05:14 -0800 (PST) Received: from stoup.. (rrcs-173-198-77-218.west.biz.rr.com. [173.198.77.218]) by smtp.gmail.com with ESMTPSA id fh3-20020a17090b034300b00228e56d375asm283936pjb.33.2023.01.23.18.05.12 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 23 Jan 2023 18:05:13 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=aZuwAJqzP7Egb7aI8Buoh7A0UjJ62m3w+Hid4HWJcXg=; b=J1r6zS48hsSBZEnMRIYUBjIm4Jo4mEFqZW/cElMYC9vuHc5Et93JKACBBnhSLWeFIl mT6uJd/N9fudNbBxwt7DT81L0bWZUaB25YHwlP/YnPNzKVul6uLdQsuT1gOs0+XgCiIn TjMZFw5Kqu45wAVfm7gj7VzvWAW6SR3+xf8ag7TDMPEislr1/MCSqmsO+CatWmF00tf9 ZtpDTF8gbSmm3u6UWTCwloZ8p1im+OA2DTP6vJQn7ZBFtGsLUCGGS1sNZy/RuZdDcX1B nJw7oHxlJBGP5vPb8qSSr63uDjgwFTPDz3Xd3LBPgthp3XNbdcV+Eaze4X9bbq2HI2p6 K6bw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=aZuwAJqzP7Egb7aI8Buoh7A0UjJ62m3w+Hid4HWJcXg=; b=MJTW37OWD67BP6tKTRsTDlrDywvkbLswcKASG34rbT5kYbepLZy5tshr+Kw9v8aRcQ rbTkgkq4q53IgmSyACHPdPHJhu9ocmcuKFibmWNkTJgNhkp1wu7bJjP3KZNq2dB13fVF mg6hxBWSD3VrhxW7M9KQPx22iCvtrxrUej/0zAeTwts0FMQRruJmDXIIbpi56HV5hMKj YjjoURNTz/lfF8gjJl2sFIaVi9dZ1uwitFsqN+IVPeK3F0tF4Gq85Je3NWQXT66ei7qa fZhMdf927k4ObwRLIdk7r/IInsVIampKSSEhlVNyFwumtckK+RD54BR93Sty+kDYA4c4 8WEw== X-Gm-Message-State: AFqh2kotyOL/aF538qn8rULKI5kUIKrJdrmGjrzC562HlkD8OW1ma4Z5 3TKsRpe/OtmbtM2/4kgRc32ugO6YS1aQ8G/z X-Google-Smtp-Source: AMrXdXvYC9LA5E8PHdw/Tp6dMtn23DLTHyH3VPtJW6JETGzaL0PKeFbwTEohWX4hTxPBc8dY2SC2aA== X-Received: by 2002:a17:90a:1a5c:b0:22b:b76b:5043 with SMTP id 28-20020a17090a1a5c00b0022bb76b5043mr13466244pjl.9.1674525913762; Mon, 23 Jan 2023 18:05:13 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Cc: peter.maydell@linaro.org Subject: [PULL v2 02/15] tcg/arm: Use register pair allocation for qemu_{ld, st}_i64 Date: Mon, 23 Jan 2023 16:04:54 -1000 Message-Id: <20230124020507.3732200-3-richard.henderson@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230124020507.3732200-1-richard.henderson@linaro.org> References: <20230124020507.3732200-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer2=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::102e; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x102e.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer2=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer2=patchew.org@nongnu.org X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZM-MESSAGEID: 1674526016923100004 Content-Type: text/plain; charset="utf-8" Although we still can't use ldrd and strd for all operations, increase the chances by getting the register allocation correct. Signed-off-by: Richard Henderson --- tcg/arm/tcg-target-con-set.h | 7 ++++--- tcg/arm/tcg-target-con-str.h | 2 ++ tcg/arm/tcg-target.c.inc | 28 ++++++++++++++++++---------- 3 files changed, 24 insertions(+), 13 deletions(-) diff --git a/tcg/arm/tcg-target-con-set.h b/tcg/arm/tcg-target-con-set.h index 3685e1786a..b8849b2478 100644 --- a/tcg/arm/tcg-target-con-set.h +++ b/tcg/arm/tcg-target-con-set.h @@ -15,8 +15,9 @@ C_O0_I2(r, rIN) C_O0_I2(s, s) C_O0_I2(w, r) C_O0_I3(s, s, s) +C_O0_I3(S, p, s) C_O0_I4(r, r, rI, rI) -C_O0_I4(s, s, s, s) +C_O0_I4(S, p, s, s) C_O1_I1(r, l) C_O1_I1(r, r) C_O1_I1(w, r) @@ -38,8 +39,8 @@ C_O1_I2(w, w, wZ) C_O1_I3(w, w, w, w) C_O1_I4(r, r, r, rI, rI) C_O1_I4(r, r, rIN, rIK, 0) -C_O2_I1(r, r, l) -C_O2_I2(r, r, l, l) +C_O2_I1(e, p, l) +C_O2_I2(e, p, l, l) C_O2_I2(r, r, r, r) C_O2_I4(r, r, r, r, rIN, rIK) C_O2_I4(r, r, rI, rI, rIN, rIK) diff --git a/tcg/arm/tcg-target-con-str.h b/tcg/arm/tcg-target-con-str.h index 8f501149e1..24b4b59feb 100644 --- a/tcg/arm/tcg-target-con-str.h +++ b/tcg/arm/tcg-target-con-str.h @@ -8,9 +8,11 @@ * Define constraint letters for register sets: * REGS(letter, register_mask) */ +REGS('e', ALL_GENERAL_REGS & 0x5555) /* even regs */ REGS('r', ALL_GENERAL_REGS) REGS('l', ALL_QLOAD_REGS) REGS('s', ALL_QSTORE_REGS) +REGS('S', ALL_QSTORE_REGS & 0x5555) /* even qstore */ REGS('w', ALL_VECTOR_REGS) =20 /* diff --git a/tcg/arm/tcg-target.c.inc b/tcg/arm/tcg-target.c.inc index 6abe94137e..0f5f9f4925 100644 --- a/tcg/arm/tcg-target.c.inc +++ b/tcg/arm/tcg-target.c.inc @@ -1694,9 +1694,11 @@ static void tcg_out_qemu_ld_index(TCGContext *s, Mem= Op opc, tcg_out_ld32_r(s, COND_AL, datalo, addrlo, addend); break; case MO_UQ: + /* We used pair allocation for datalo, so already should be aligne= d. */ + tcg_debug_assert((datalo & 1) =3D=3D 0); + tcg_debug_assert(datahi =3D=3D datalo + 1); /* LDRD requires alignment; double-check that. */ - if (get_alignment_bits(opc) >=3D MO_64 - && (datalo & 1) =3D=3D 0 && datahi =3D=3D datalo + 1) { + if (get_alignment_bits(opc) >=3D MO_64) { /* * Rm (the second address op) must not overlap Rt or Rt + 1. * Since datalo is aligned, we can simplify the test via align= ment. @@ -1750,9 +1752,11 @@ static void tcg_out_qemu_ld_direct(TCGContext *s, Me= mOp opc, TCGReg datalo, tcg_out_ld32_12(s, COND_AL, datalo, addrlo, 0); break; case MO_UQ: + /* We used pair allocation for datalo, so already should be aligne= d. */ + tcg_debug_assert((datalo & 1) =3D=3D 0); + tcg_debug_assert(datahi =3D=3D datalo + 1); /* LDRD requires alignment; double-check that. */ - if (get_alignment_bits(opc) >=3D MO_64 - && (datalo & 1) =3D=3D 0 && datahi =3D=3D datalo + 1) { + if (get_alignment_bits(opc) >=3D MO_64) { tcg_out_ldrd_8(s, COND_AL, datalo, addrlo, 0); } else if (datalo =3D=3D addrlo) { tcg_out_ld32_12(s, COND_AL, datahi, addrlo, 4); @@ -1834,9 +1838,11 @@ static void tcg_out_qemu_st_index(TCGContext *s, ARM= Cond cond, MemOp opc, tcg_out_st32_r(s, cond, datalo, addrlo, addend); break; case MO_64: + /* We used pair allocation for datalo, so already should be aligne= d. */ + tcg_debug_assert((datalo & 1) =3D=3D 0); + tcg_debug_assert(datahi =3D=3D datalo + 1); /* STRD requires alignment; double-check that. */ - if (get_alignment_bits(opc) >=3D MO_64 - && (datalo & 1) =3D=3D 0 && datahi =3D=3D datalo + 1) { + if (get_alignment_bits(opc) >=3D MO_64) { tcg_out_strd_r(s, cond, datalo, addrlo, addend); } else if (scratch_addend) { tcg_out_st32_rwb(s, cond, datalo, addend, addrlo); @@ -1871,9 +1877,11 @@ static void tcg_out_qemu_st_direct(TCGContext *s, Me= mOp opc, TCGReg datalo, tcg_out_st32_12(s, COND_AL, datalo, addrlo, 0); break; case MO_64: + /* We used pair allocation for datalo, so already should be aligne= d. */ + tcg_debug_assert((datalo & 1) =3D=3D 0); + tcg_debug_assert(datahi =3D=3D datalo + 1); /* STRD requires alignment; double-check that. */ - if (get_alignment_bits(opc) >=3D MO_64 - && (datalo & 1) =3D=3D 0 && datahi =3D=3D datalo + 1) { + if (get_alignment_bits(opc) >=3D MO_64) { tcg_out_strd_8(s, COND_AL, datalo, addrlo, 0); } else { tcg_out_st32_12(s, COND_AL, datalo, addrlo, 0); @@ -2372,11 +2380,11 @@ static TCGConstraintSetIndex tcg_target_op_def(TCGO= pcode op) case INDEX_op_qemu_ld_i32: return TARGET_LONG_BITS =3D=3D 32 ? C_O1_I1(r, l) : C_O1_I2(r, l, = l); case INDEX_op_qemu_ld_i64: - return TARGET_LONG_BITS =3D=3D 32 ? C_O2_I1(r, r, l) : C_O2_I2(r, = r, l, l); + return TARGET_LONG_BITS =3D=3D 32 ? C_O2_I1(e, p, l) : C_O2_I2(e, = p, l, l); case INDEX_op_qemu_st_i32: return TARGET_LONG_BITS =3D=3D 32 ? C_O0_I2(s, s) : C_O0_I3(s, s, = s); case INDEX_op_qemu_st_i64: - return TARGET_LONG_BITS =3D=3D 32 ? C_O0_I3(s, s, s) : C_O0_I4(s, = s, s, s); + return TARGET_LONG_BITS =3D=3D 32 ? C_O0_I3(S, p, s) : C_O0_I4(S, = p, s, s); =20 case INDEX_op_st_vec: return C_O0_I2(w, r); --=20 2.34.1 From nobody Fri Apr 26 19:55:23 2024 Delivered-To: importer2@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1674525953; cv=none; d=zohomail.com; s=zohoarc; b=dWSjLG5nLwIV1MVpTXcF/Yusah9MgAyC+elw0s6xMKuqa/y69QqDChQsMD7IRTv6XHSW4wwNRool6CIG7Y7Evr26TIHnSC7irzR2dRvLxsg05oQemw/6JZN0V1uBTrMfWlRwLH0/ZiPQnd4zGY+PwZiERRGko8S/HPziZs0eoPU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1674525953; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=PZScXMlEaGULysLczewzRnr1DphZcQFOhwL94oC81cs=; b=lXtGYhgUOvnpbd6xgbjiVNUNZGFncZuanMFqiKD3NtgIFpS4tfq8tkQtwPDt9qKb8nCHm6zzHsfq3llBX4FKLtB6qeHejOB+giPwhdmyn8y+3U/n4IRrPcSKUhsluObkdPTaske8p5joB8pCqRmJ3rWsATOzGYgMfSmh8jpRYRI= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1674525953117721.0773251830865; Mon, 23 Jan 2023 18:05:53 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1pK8ga-0008OO-TJ; Mon, 23 Jan 2023 21:05:20 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pK8gZ-0008Ns-94 for qemu-devel@nongnu.org; Mon, 23 Jan 2023 21:05:19 -0500 Received: from mail-pl1-x635.google.com ([2607:f8b0:4864:20::635]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1pK8gX-0003mr-5x for qemu-devel@nongnu.org; Mon, 23 Jan 2023 21:05:18 -0500 Received: by mail-pl1-x635.google.com with SMTP id c6so13362445pls.4 for ; Mon, 23 Jan 2023 18:05:16 -0800 (PST) Received: from stoup.. (rrcs-173-198-77-218.west.biz.rr.com. [173.198.77.218]) by smtp.gmail.com with ESMTPSA id fh3-20020a17090b034300b00228e56d375asm283936pjb.33.2023.01.23.18.05.14 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 23 Jan 2023 18:05:14 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=PZScXMlEaGULysLczewzRnr1DphZcQFOhwL94oC81cs=; b=Yy67SUopQxznhg4z+En77gJiBxzx1utthusqg6vseSq6MRl1XgpHv3kku81MtiQvIJ ILs7tRLfUMwUbTubsLJe85UQVyvYO5l7FhL0KQRSN6j8/zq074H2Zq6cP+CPgHNUeQ71 7LSmFBQvqZ1Ir9Vj5+8RVBaj4zax1CbaVc7sh4nkeahCSOCJ+/ewek6j90scM4XJ2j2G K2GwQzfmhKrvCdLSdbRSL0QHmrQUY7/OVI0u75KWnuXmKn70G2A9m6W8khAsnBvTvLwe Gs/8hJnw82CToTkO4WttvfOyfJemlesVRM04p/yH40N1yiumkSd/wVZA9a0dlRLqzJ9N atmQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=PZScXMlEaGULysLczewzRnr1DphZcQFOhwL94oC81cs=; b=h26FAnuI0aKMZyPXHBBxghJPjcl/IpOgufbwISGSY144GRG1ZRCWARlHwiDpNxY9bP n6LfPP/sAVN4x3zKtfpZ2X612wAi2qrDNZx0fwcowG7zs+R3NKYKN249NKZV3RgKvBw7 4nSfG5NBfO+jHxAcGCuhFMWOZt5CEzp+rHJUspFctKDEWrKUzUSmVI1GE4MaX8pyZ0Py 86apAScpTJ7Em+4lYxIOFpQRlsXUjcnjRz1RD73z23xK39WH6DXGEePBQfwZLRu75AVs msVknu+XMEwSKHnvPOA/p8axQFEhQwa/HBTe6HN3JRsGM7+a5hOQ0QbLz+gORnacc9Ur bs4Q== X-Gm-Message-State: AFqh2kplMLTmcimWYn4SYyLFZVsT96R1M3kzOwQiK5D93z1V917oifVe WyFVHAtDC5ZzOnKYEhCe00fKkJ3NdaEzTfHA X-Google-Smtp-Source: AMrXdXuu6WlG9/QY1OJtdnKgn040nNqTPxPCzdSUJpMiRwfE7+OU0BIi1sYiiMW4uPLg7ZdsLf96gw== X-Received: by 2002:a17:90b:887:b0:229:5041:c590 with SMTP id bj7-20020a17090b088700b002295041c590mr27731653pjb.18.1674525915303; Mon, 23 Jan 2023 18:05:15 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Cc: peter.maydell@linaro.org, Daniel Henrique Barboza Subject: [PULL v2 03/15] common-user/host/ppc: Implement safe-syscall.inc.S Date: Mon, 23 Jan 2023 16:04:55 -1000 Message-Id: <20230124020507.3732200-4-richard.henderson@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230124020507.3732200-1-richard.henderson@linaro.org> References: <20230124020507.3732200-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer2=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::635; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x635.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer2=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer2=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1674525954926100005 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson Reviewed-by: Daniel Henrique Barboza Message-Id: <20220729172141.1789105-2-richard.henderson@linaro.org> --- common-user/host/ppc/safe-syscall.inc.S | 107 ++++++++++++++++++++++++ 1 file changed, 107 insertions(+) create mode 100644 common-user/host/ppc/safe-syscall.inc.S diff --git a/common-user/host/ppc/safe-syscall.inc.S b/common-user/host/ppc= /safe-syscall.inc.S new file mode 100644 index 0000000000..0851f6c0b8 --- /dev/null +++ b/common-user/host/ppc/safe-syscall.inc.S @@ -0,0 +1,107 @@ +/* + * safe-syscall.inc.S : host-specific assembly fragment + * to handle signals occurring at the same time as system calls. + * This is intended to be included by common-user/safe-syscall.S + * + * Copyright (C) 2022 Linaro, Ltd. + * + * This work is licensed under the terms of the GNU GPL, version 2 or late= r. + * See the COPYING file in the top-level directory. + */ + +/* + * Standardize on the _CALL_FOO symbols used by GCC: + * Apple XCode does not define _CALL_DARWIN. + * Clang defines _CALL_ELF (64-bit) but not _CALL_SYSV (32-bit). + */ +#if !defined(_CALL_SYSV) && \ + !defined(_CALL_DARWIN) && \ + !defined(_CALL_AIX) && \ + !defined(_CALL_ELF) +# if defined(__APPLE__) +# define _CALL_DARWIN +# elif defined(__ELF__) && TCG_TARGET_REG_BITS =3D=3D 32 +# define _CALL_SYSV +# else +# error "Unknown ABI" +# endif +#endif=20 + +#ifndef _CALL_SYSV +# error "Unsupported ABI" +#endif + + + .global safe_syscall_base + .global safe_syscall_start + .global safe_syscall_end + .type safe_syscall_base, @function + + .text + + /* + * This is the entry point for making a system call. The calling + * convention here is that of a C varargs function with the + * first argument an 'int *' to the signal_pending flag, the + * second one the system call number (as a 'long'), and all further + * arguments being syscall arguments (also 'long'). + */ +safe_syscall_base: + .cfi_startproc + stwu 1, -8(1) + .cfi_def_cfa_offset 8 + stw 30, 4(1) + .cfi_offset 30, -4 + + /* + * We enter with r3 =3D=3D &signal_pending + * r4 =3D=3D syscall number + * r5 ... r10 =3D=3D syscall arguments + * and return the result in r3 + * and the syscall instruction needs + * r0 =3D=3D syscall number + * r3 ... r8 =3D=3D syscall arguments + * and returns the result in r3 + * Shuffle everything around appropriately. + */ + mr 30, 3 /* signal_pending */ + mr 0, 4 /* syscall number */ + mr 3, 5 /* syscall arguments */ + mr 4, 6 + mr 5, 7 + mr 6, 8 + mr 7, 9 + mr 8, 10 + + /* + * This next sequence of code works in conjunction with the + * rewind_if_safe_syscall_function(). If a signal is taken + * and the interrupted PC is anywhere between 'safe_syscall_start' + * and 'safe_syscall_end' then we rewind it to 'safe_syscall_start= '. + * The code sequence must therefore be able to cope with this, and + * the syscall instruction must be the final one in the sequence. + */ +safe_syscall_start: + /* if signal_pending is non-zero, don't do the call */ + lwz 12, 0(30) + cmpwi 0, 12, 0 + bne- 2f + sc +safe_syscall_end: + /* code path when we did execute the syscall */ + lwz 30, 4(1) /* restore r30 */ + addi 1, 1, 8 /* restore stack */ + .cfi_restore 30 + .cfi_def_cfa_offset 0 + bnslr+ /* return on success */ + b safe_syscall_set_errno_tail + + /* code path when we didn't execute the syscall */ +2: lwz 30, 4(1) + addi 1, 1, 8 + addi 3, 0, QEMU_ERESTARTSYS + b safe_syscall_set_errno_tail + + .cfi_endproc + + .size safe_syscall_base, .-safe_syscall_base --=20 2.34.1 From nobody Fri Apr 26 19:55:23 2024 Delivered-To: importer2@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1674526021; cv=none; d=zohomail.com; s=zohoarc; b=ZDqVeR1mxwbca3OKcZfh1ajD+q29prlg8KJsmhAeFL1oUY4JNOVLZJVgAUypwjQ9GRqa4MCZXm5k4VTlXbMf2CNa4xoRbcwXAcfyMyjb7ZA6VlRckchUppzMFAQc1SwOTlsAWziAS/cWlJOYDwZL4C21BUVP8zq1vXq+pRPcr+g= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1674526021; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=CfRyloWDcwQ5PnWko6alt4B+5d+l5sPHbkZcyIVlTxE=; b=BW3mOZNwPrWT5Sjm96FV8Hbg2txrt/Bl7btiaAkl8xZDrQQYjdu3wINBgMuvBmrvDh5EToU0Y/qx7TnmgYWP8qHInFhXcErTFr38HAreh8lnBSc6S30l/0K+Pq8kpi5kzH1rofWwMuOpzvVN4hOMDCctjoa50NjE/VQ1DPbGFrQ= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1674526021794998.6503833413573; Mon, 23 Jan 2023 18:07:01 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1pK8gc-0008On-K2; Mon, 23 Jan 2023 21:05:22 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pK8ga-0008OJ-On for qemu-devel@nongnu.org; Mon, 23 Jan 2023 21:05:20 -0500 Received: from mail-pl1-x62a.google.com ([2607:f8b0:4864:20::62a]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1pK8gY-0003oT-Ag for qemu-devel@nongnu.org; Mon, 23 Jan 2023 21:05:19 -0500 Received: by mail-pl1-x62a.google.com with SMTP id a18so789830plm.2 for ; Mon, 23 Jan 2023 18:05:17 -0800 (PST) Received: from stoup.. (rrcs-173-198-77-218.west.biz.rr.com. [173.198.77.218]) by smtp.gmail.com with ESMTPSA id fh3-20020a17090b034300b00228e56d375asm283936pjb.33.2023.01.23.18.05.15 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 23 Jan 2023 18:05:16 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=CfRyloWDcwQ5PnWko6alt4B+5d+l5sPHbkZcyIVlTxE=; b=lWTxdJNpXyotrOLdViv5VBxkHWatqx597XhzkbfENSkcvsmY9qyGTquad9psZj1hGQ U8lqzsM8+PLH1HWXE/IfoKWrpd63UoLfhAMaZEdUNsE6QO/fLyvuYJawH48YSbtHzIQ6 219k5ODe/LhptpNQiKRj+lKjqBTkWAucF+M+z6IYZU1tXD7wRO5PKAzN38bDHG3SS5wc F2Y7/qMcwnqQrtfMYiiAgHx7XzutcjZTrjFx8FzicweOYb5Fab5HmkQmKaecJHqm53IX TuzN29SfSy5mcvOW6k1+lYZXp4mcKaQjYYx4iXF170oUEINXQEHW3gnf9XmHb7tnuY6b ++Kg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=CfRyloWDcwQ5PnWko6alt4B+5d+l5sPHbkZcyIVlTxE=; b=z3O1iU0r97lThc2flxYpXqOEmqetxDDHFLg+rIV6QSZQ+Zzrf6LQJG0ny6+n+Sk3dH fMFksHsB+JQ5F4G091l2k4IgcqjQetWftBXdBI/VCo//QzD5H0uHefiEThS3XMwbjgcs qaigjcngIfLSvVZK5W1/k44lwA5yrml90fS27/ztDg/NEiGL8VRS8mQPIi7U/SNh0q78 7bTgD8z28w/HCWk/TCdk0VtdhAKhtYPXhET4I3eTbmgMNANNslhRW93KDpMR0R1TcaEf KRc/XCYGzK7eyLGQOmjZSCcpybjSwysF747iL7qRmaGtgrvszUM6O0KnhmBNDv7Vv9jA 2fng== X-Gm-Message-State: AFqh2kqVIvkry9ZAqzS0gFPm+xtf6kjGkhfyr31lO4DOmYuzgNkA4hCy bBzpoNd/UwsBIi1MMaTVdtltifoQPi5bWaRr X-Google-Smtp-Source: AMrXdXvskSkykSQWRfzmX31nsxAdGCzkuFujXjMp/CBlff8nVJuNBWt3V7ydALb8GJiUbeLsx+xYiA== X-Received: by 2002:a17:90a:460f:b0:227:23c3:5db1 with SMTP id w15-20020a17090a460f00b0022723c35db1mr27648486pjg.47.1674525916783; Mon, 23 Jan 2023 18:05:16 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Cc: peter.maydell@linaro.org, Daniel Henrique Barboza Subject: [PULL v2 04/15] linux-user: Implment host/ppc/host-signal.h Date: Mon, 23 Jan 2023 16:04:56 -1000 Message-Id: <20230124020507.3732200-5-richard.henderson@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230124020507.3732200-1-richard.henderson@linaro.org> References: <20230124020507.3732200-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer2=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::62a; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x62a.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer2=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer2=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1674526022905100001 Content-Type: text/plain; charset="utf-8" This commit re-enables ppc32 as a linux-user host, as existance of the directory is noted by configure. Resolves: https://gitlab.com/qemu-project/qemu/-/issues/1097 Signed-off-by: Richard Henderson Reviewed-by: Daniel Henrique Barboza Message-Id: <20220729172141.1789105-3-richard.henderson@linaro.org> --- linux-user/include/host/ppc/host-signal.h | 39 +++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 linux-user/include/host/ppc/host-signal.h diff --git a/linux-user/include/host/ppc/host-signal.h b/linux-user/include= /host/ppc/host-signal.h new file mode 100644 index 0000000000..de25c803f5 --- /dev/null +++ b/linux-user/include/host/ppc/host-signal.h @@ -0,0 +1,39 @@ +/* + * host-signal.h: signal info dependent on the host architecture + * + * Copyright (c) 2022 Linaro Ltd. + * + * This work is licensed under the terms of the GNU LGPL, version 2.1 or l= ater. + * See the COPYING file in the top-level directory. + */ + +#ifndef PPC_HOST_SIGNAL_H +#define PPC_HOST_SIGNAL_H + +#include + +/* The third argument to a SA_SIGINFO handler is ucontext_t. */ +typedef ucontext_t host_sigcontext; + +static inline uintptr_t host_signal_pc(host_sigcontext *uc) +{ + return uc->uc_mcontext.regs->nip; +} + +static inline void host_signal_set_pc(host_sigcontext *uc, uintptr_t pc) +{ + uc->uc_mcontext.regs->nip =3D pc; +} + +static inline void *host_signal_mask(host_sigcontext *uc) +{ + return &uc->uc_sigmask; +} + +static inline bool host_signal_write(siginfo_t *info, host_sigcontext *uc) +{ + return uc->uc_mcontext.regs->trap !=3D 0x400 + && (uc->uc_mcontext.regs->dsisr & 0x02000000); +} + +#endif --=20 2.34.1 From nobody Fri Apr 26 19:55:23 2024 Delivered-To: importer2@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1674525965; cv=none; d=zohomail.com; s=zohoarc; b=GowrUgIvgVDgK3DQFDa/UywElVwIPKUAZJd1UxVFtXCtHIdP69bvT6eqM2YBFRkSnoLy3ehiLNEELlIkYoJB+GvJIHMZ3CbwBjnjjGTtanvhGmlUsGdV+L0l/feyQe+czokoiZaEnXi7ARJiNwtRGL+YShP+E5cxb/9TSBziB9Q= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1674525965; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=M+X3JDFyAdIiq7GuR1lXz08iKvUAJh5EzFJMUQ6OLSg=; b=RkOUpDDElHx9uU1+xfzAYqGxMY1CDURIrsinXfK7vsUVh7/DbP9FFc+sLStoTBYAYvMVq1aveCgxptml75Z+ItTHsSE/q/4Yxvvoe0LMB69/rVtXXR3cbWUWxW+Wike9x2UBjQpuG/6QZfaunk1650u0jpfXv+L/m1HoBJBAvtA= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1674525965870893.9914592571606; Mon, 23 Jan 2023 18:06:05 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1pK8gh-0008Q9-MM; Mon, 23 Jan 2023 21:05:27 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pK8gc-0008Oi-Cc for qemu-devel@nongnu.org; Mon, 23 Jan 2023 21:05:22 -0500 Received: from mail-pl1-x634.google.com ([2607:f8b0:4864:20::634]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1pK8ga-0003rF-I5 for qemu-devel@nongnu.org; Mon, 23 Jan 2023 21:05:22 -0500 Received: by mail-pl1-x634.google.com with SMTP id v23so13366929plo.1 for ; Mon, 23 Jan 2023 18:05:19 -0800 (PST) Received: from stoup.. (rrcs-173-198-77-218.west.biz.rr.com. [173.198.77.218]) by smtp.gmail.com with ESMTPSA id fh3-20020a17090b034300b00228e56d375asm283936pjb.33.2023.01.23.18.05.17 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 23 Jan 2023 18:05:17 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=M+X3JDFyAdIiq7GuR1lXz08iKvUAJh5EzFJMUQ6OLSg=; b=zhZKY1iLJ0tJpVwvD/7YJDpyoW/JarwVO0HSzDFFj/eL90SQtR8B3slbGcZ+dgOLF8 wwAvIrncNf7S1aIosQ6DzLS0QPiWj3A981O1c3tiOI0xLrKcDGw2fbvFyAuppjmuEDEO i0L3jsnhQ0bd3BT9M0T7REhYh8tQZTTfuMz8uA/bLJ0qrgy475EjvCoCUC6ZKLxv/35Z LieOeJeBkptKOA+YHbbD3WopmUELmWtV/dZRoLPaRz+FL/WLVSf8SRNkG5wFZ5UdthAi bxma+CHLPb1HLOJLR5XN08aHbnGcvNBlC6SpSvZOwxGfvIj52C2g5F291oBxZSuasTta 3tGw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=M+X3JDFyAdIiq7GuR1lXz08iKvUAJh5EzFJMUQ6OLSg=; b=1tKjPU1F4L0XfBDUKM5likXW9KrSxn8LYrnGpajGPX2i321Y4fnak51kX8x98iuREZ 44hwSj680WTugp9C+YYBL8QP4vUuz7DRtvxYFqN9XWoySjABDsPhsfuCZmh55uSokvBL llcOSfdD+54wJEixafbYp5e5eizLDQQKD6qo9KcWCJ6dY4XyuqRFahUqgFhYZtHr8SZp RdneckcuyGmqMff8tytAuWgl/R8s625uRKVANIZynne8Xx5+uehTq7TWmtyNM8Qedh/D mdQ/4s1E1GUFPYV/xpWjlXddIerpntUcG0ROWHrYAl97QceeHQpJmjCr+AMKUOGcqSaL jRTQ== X-Gm-Message-State: AFqh2kqMVvhkMWz4+eKgzYDKNahg77dzpEh72dz6rN15VCBKLIIbFmnO F9aAmYkOE+pIOgF8HPki8tsIW60YJCkaukvl X-Google-Smtp-Source: AMrXdXuW0qGHylvRtLGZSm8/0unQiw5UBloK/Rs6953GNhN2Tn27W+AEFpgUcp8OlWU1aCIhPOun3g== X-Received: by 2002:a17:90a:1a5e:b0:22b:bc63:c8b0 with SMTP id 30-20020a17090a1a5e00b0022bbc63c8b0mr12528204pjl.34.1674525918509; Mon, 23 Jan 2023 18:05:18 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Cc: peter.maydell@linaro.org, =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Idan Horowitz Subject: [PULL v2 05/15] tcg: Mark tcg helpers noinline to avoid an issue with LTO Date: Mon, 23 Jan 2023 16:04:57 -1000 Message-Id: <20230124020507.3732200-6-richard.henderson@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230124020507.3732200-1-richard.henderson@linaro.org> References: <20230124020507.3732200-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer2=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::634; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x634.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer2=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer2=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1674525966741100003 Marking helpers __attribute__((noinline)) prevents an issue with GCC's ipa-split pass under --enable-lto. Resolves: https://gitlab.com/qemu-project/qemu/-/issues/1454 Reviewed-by: Philippe Mathieu-Daud=C3=A9 Tested-by: Idan Horowitz Signed-off-by: Richard Henderson --- include/exec/helper-proto.h | 32 ++++++++++++++++++++++++-------- 1 file changed, 24 insertions(+), 8 deletions(-) diff --git a/include/exec/helper-proto.h b/include/exec/helper-proto.h index c4b1bda632..7a3f04b58c 100644 --- a/include/exec/helper-proto.h +++ b/include/exec/helper-proto.h @@ -6,34 +6,49 @@ =20 #include "exec/helper-head.h" =20 +/* + * Work around an issue with --enable-lto, in which GCC's ipa-split pass + * decides to split out the noreturn code paths that raise an exception, + * taking the __builtin_return_address() along into the new function, + * where it no longer computes a value that returns to TCG generated code. + * Despite the name, the noinline attribute affects splitter, so this + * prevents the optimization in question. Given that helpers should not + * otherwise be called directly, this should have any other visible effect. + * + * See https://gitlab.com/qemu-project/qemu/-/issues/1454 + */ +#define DEF_HELPER_ATTR __attribute__((noinline)) + #define DEF_HELPER_FLAGS_0(name, flags, ret) \ -dh_ctype(ret) HELPER(name) (void); +dh_ctype(ret) HELPER(name) (void) DEF_HELPER_ATTR; =20 #define DEF_HELPER_FLAGS_1(name, flags, ret, t1) \ -dh_ctype(ret) HELPER(name) (dh_ctype(t1)); +dh_ctype(ret) HELPER(name) (dh_ctype(t1)) DEF_HELPER_ATTR; =20 #define DEF_HELPER_FLAGS_2(name, flags, ret, t1, t2) \ -dh_ctype(ret) HELPER(name) (dh_ctype(t1), dh_ctype(t2)); +dh_ctype(ret) HELPER(name) (dh_ctype(t1), dh_ctype(t2)) DEF_HELPER_ATTR; =20 #define DEF_HELPER_FLAGS_3(name, flags, ret, t1, t2, t3) \ -dh_ctype(ret) HELPER(name) (dh_ctype(t1), dh_ctype(t2), dh_ctype(t3)); +dh_ctype(ret) HELPER(name) (dh_ctype(t1), dh_ctype(t2), \ + dh_ctype(t3)) DEF_HELPER_ATTR; =20 #define DEF_HELPER_FLAGS_4(name, flags, ret, t1, t2, t3, t4) \ dh_ctype(ret) HELPER(name) (dh_ctype(t1), dh_ctype(t2), dh_ctype(t3), \ - dh_ctype(t4)); + dh_ctype(t4)) DEF_HELPER_ATTR; =20 #define DEF_HELPER_FLAGS_5(name, flags, ret, t1, t2, t3, t4, t5) \ dh_ctype(ret) HELPER(name) (dh_ctype(t1), dh_ctype(t2), dh_ctype(t3), \ - dh_ctype(t4), dh_ctype(t5)); + dh_ctype(t4), dh_ctype(t5)) DEF_HELPER_ATTR; =20 #define DEF_HELPER_FLAGS_6(name, flags, ret, t1, t2, t3, t4, t5, t6) \ dh_ctype(ret) HELPER(name) (dh_ctype(t1), dh_ctype(t2), dh_ctype(t3), \ - dh_ctype(t4), dh_ctype(t5), dh_ctype(t6)); + dh_ctype(t4), dh_ctype(t5), \ + dh_ctype(t6)) DEF_HELPER_ATTR; =20 #define DEF_HELPER_FLAGS_7(name, flags, ret, t1, t2, t3, t4, t5, t6, t7) \ dh_ctype(ret) HELPER(name) (dh_ctype(t1), dh_ctype(t2), dh_ctype(t3), \ dh_ctype(t4), dh_ctype(t5), dh_ctype(t6), \ - dh_ctype(t7)); + dh_ctype(t7)) DEF_HELPER_ATTR; =20 #define IN_HELPER_PROTO =20 @@ -51,5 +66,6 @@ dh_ctype(ret) HELPER(name) (dh_ctype(t1), dh_ctype(t2), d= h_ctype(t3), \ #undef DEF_HELPER_FLAGS_5 #undef DEF_HELPER_FLAGS_6 #undef DEF_HELPER_FLAGS_7 +#undef DEF_HELPER_ATTR =20 #endif /* HELPER_PROTO_H */ --=20 2.34.1 From nobody Fri Apr 26 19:55:23 2024 Delivered-To: importer2@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1674525953; cv=none; d=zohomail.com; s=zohoarc; b=ZacKy0RJ6DHVQCbjiFBQZruuaeavORIesHcNRrwVG6TJaiFSNg97F/FhhKFo+cdAwpTdxU9OM85FvI1nUfqhtvxKMq4uqIps4wuE4CIm4mUQRUwkJwdgtCP63uClYy96IF9tPtYbALZB8CFFm1Atsv/KmA3yvE0n6JPN/+MjIKI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1674525953; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=gK/RYDKYmyheuWzEx2e/8fES02grPktU+6HiGLPgSJw=; b=NrgQpcIoH4OYNV2ByeUNy0FvZrL6qitWfdcb9U9jy/3FXCGKeeeXp6nFT7AeGTG8BncyQEbioYLkarIKQARHAwMpHbzcvGyXA4iiWedKiN353ZvXUppfvSF2S9NwXMHIdckHMCL9q/1x1fZiPTkieGvODP/HyjEiLob+zrQs9B0= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1674525953758254.7338635342096; Mon, 23 Jan 2023 18:05:53 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1pK8gk-0008Qs-3o; Mon, 23 Jan 2023 21:05:30 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pK8gd-0008PB-He for qemu-devel@nongnu.org; Mon, 23 Jan 2023 21:05:24 -0500 Received: from mail-pj1-x102f.google.com ([2607:f8b0:4864:20::102f]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1pK8gb-0003se-Lb for qemu-devel@nongnu.org; Mon, 23 Jan 2023 21:05:23 -0500 Received: by mail-pj1-x102f.google.com with SMTP id o13so13449916pjg.2 for ; Mon, 23 Jan 2023 18:05:21 -0800 (PST) Received: from stoup.. (rrcs-173-198-77-218.west.biz.rr.com. [173.198.77.218]) by smtp.gmail.com with ESMTPSA id fh3-20020a17090b034300b00228e56d375asm283936pjb.33.2023.01.23.18.05.18 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 23 Jan 2023 18:05:19 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=gK/RYDKYmyheuWzEx2e/8fES02grPktU+6HiGLPgSJw=; b=daAYxI9MwewWigLTaaAZX8CvImZz5m630ZPFGko+cTVKJTB6TEcdjuPoMFJB1yzBD9 LnfU5guLbNTgJcIU3xuUQ60at8IBYVTESrZsvcQLUamW5BX20y9oSt48nxyRtLOkhx5K FoDT9rSCHeqNX/ofK7ftjqn7XtQSq3Wdv7ATZeiXV1C0kIXhqcRBQKkrHDdmuiCB+k7/ qiOkRhl6P8lP70bS9qj8rYiwJSNdw7p616LDJsqToCcBMpftKdeHOK3LbZrIG24vUGxS zcl2+nNua13Qe3nVB0WhiHYI8MiRD55Ur7I1hEntVzDOhEtcFM+zDRkOikYl4POhUta3 kHTg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=gK/RYDKYmyheuWzEx2e/8fES02grPktU+6HiGLPgSJw=; b=Q/7DIQeaorsqCOrqElgJwyXxWgM6ppOsQT5pumd14TB8nZb9seYP6gNZhSoJkDVo2k Z2fZqGzP4KdUu6Fc/LtWtdCQDYYbrOqLm6TpquDPsyqrexmWoyu2jERvqxz/CaSSA7fS 17L+3Q2BX48tpRRbs+pAi6AM6rbtD/tsUy7SJ/U3XWNst03aQiZMouTX8z1LhQX8/usX UixAEPMxEn+QqbfQSa2b58yBi71gpBaOkXIPIF1Lanr9cAde4XzFhxEyS28mpzv3zjUn DHxRO+3YSnl1pA8cNTGTie43ECVGFyTUdDbet18u9dNZK98U1TvqxA61JQFdCxG7MJ5x SjBA== X-Gm-Message-State: AFqh2kppyPa6N3Cdrz4MhrMxsWnigD2obxMXkYzR9iX0+dMTOstrGVaQ zISX2JtqVLEWenMADkVb4k0t4C71p6Fqr4HJ X-Google-Smtp-Source: AMrXdXvtkSKH0gY+SO5SpgSilBsyLlDhLK8YgSxEPyPrDlNjwAMtfR1sjbUV5hyr5uVIvGAkH2nbyA== X-Received: by 2002:a17:90b:1d0c:b0:22b:b76b:5047 with SMTP id on12-20020a17090b1d0c00b0022bb76b5047mr14092285pjb.8.1674525920227; Mon, 23 Jan 2023 18:05:20 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Cc: peter.maydell@linaro.org, WANG Xuerui , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Subject: [PULL v2 06/15] target/loongarch: Enable the disassembler for host tcg Date: Mon, 23 Jan 2023 16:04:58 -1000 Message-Id: <20230124020507.3732200-7-richard.henderson@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230124020507.3732200-1-richard.henderson@linaro.org> References: <20230124020507.3732200-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer2=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::102f; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x102f.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer2=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer2=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1674525954921100004 Reuse the decodetree based disassembler from target/loongarch/ for tcg/loongarch64/. The generation of decode-insns.c.inc into ./libcommon.fa.p/ could eventually result in conflict, if any other host requires the same trick, but this is good enough for now. Reviewed-by: WANG Xuerui Reviewed-by: Philippe Mathieu-Daud=C3=A9 Signed-off-by: Richard Henderson --- disas.c | 2 ++ target/loongarch/meson.build | 3 ++- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/disas.c b/disas.c index 3b31315f40..b087c12c47 100644 --- a/disas.c +++ b/disas.c @@ -198,6 +198,8 @@ static void initialize_debug_host(CPUDebug *s) s->info.cap_insn_split =3D 6; #elif defined(__hppa__) s->info.print_insn =3D print_insn_hppa; +#elif defined(__loongarch__) + s->info.print_insn =3D print_insn_loongarch; #endif } =20 diff --git a/target/loongarch/meson.build b/target/loongarch/meson.build index 6376f9e84b..690633969f 100644 --- a/target/loongarch/meson.build +++ b/target/loongarch/meson.build @@ -3,7 +3,6 @@ gen =3D decodetree.process('insns.decode') loongarch_ss =3D ss.source_set() loongarch_ss.add(files( 'cpu.c', - 'disas.c', )) loongarch_tcg_ss =3D ss.source_set() loongarch_tcg_ss.add(gen) @@ -24,6 +23,8 @@ loongarch_softmmu_ss.add(files( 'iocsr_helper.c', )) =20 +common_ss.add(when: 'CONFIG_LOONGARCH_DIS', if_true: [files('disas.c'), ge= n]) + loongarch_ss.add_all(when: 'CONFIG_TCG', if_true: [loongarch_tcg_ss]) =20 target_arch +=3D {'loongarch': loongarch_ss} --=20 2.34.1 From nobody Fri Apr 26 19:55:23 2024 Delivered-To: importer2@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1674525983; cv=none; d=zohomail.com; s=zohoarc; b=ULCsQ6QiS7ECPN3cmrEKFBymG45/KgaPZvzoUuI7PICNLfRzf0pETK88pbQIBafWUeVAoGfO9PBmJq8Cmoh74/emmVGP+GCS0rAUr9kP8nApKFk0kMhD78QroREHx9/cyv939NO0ygFzLVDsZCDi7lIilqnKLQbO+sIAnMEFbmc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1674525983; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=S4RKktMcPf3rE7CRNPQPl4hZIXa54SUO3jBV2MtYQsw=; b=B24p/cm7jRSpfWOrIC+aUlbW+nMXf6g1KiHREaFe5zqnZEPI9+IuLXTXUl8aAaXunfUtmONG9BbXs/kioUpLQPDMmMwYFtARbTpXqnLXdFnmTE5jffQ6Dl0/Fhz5Eld7g1es9N/+C+RqKf/IkVhNieAQVdtIu9BNm44klulSaKY= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 16745259832427.427355198090936; Mon, 23 Jan 2023 18:06:23 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1pK8gi-0008QS-EB; Mon, 23 Jan 2023 21:05:28 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pK8ge-0008PD-Cd for qemu-devel@nongnu.org; Mon, 23 Jan 2023 21:05:24 -0500 Received: from mail-pl1-x62a.google.com ([2607:f8b0:4864:20::62a]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1pK8gc-0003oT-KD for qemu-devel@nongnu.org; Mon, 23 Jan 2023 21:05:24 -0500 Received: by mail-pl1-x62a.google.com with SMTP id a18so789953plm.2 for ; Mon, 23 Jan 2023 18:05:22 -0800 (PST) Received: from stoup.. (rrcs-173-198-77-218.west.biz.rr.com. [173.198.77.218]) by smtp.gmail.com with ESMTPSA id fh3-20020a17090b034300b00228e56d375asm283936pjb.33.2023.01.23.18.05.20 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 23 Jan 2023 18:05:21 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=S4RKktMcPf3rE7CRNPQPl4hZIXa54SUO3jBV2MtYQsw=; b=f8sfINkTADLVNu4YdzXrTS3VT1PnAjgEi7bG4VKoQvhyTPCI8vIzp8FhFxfTSEF6N8 jhfwiHS/1PMLMTO+IWWFQ+nVQOA6GS0qWyI+daApp86g8GgNFT+hKi7QIbbGXGKFAqzX xt4KK2/InoBU7L6GWOUF8O3BC/eTS6l+HNUFrMQpM0sEYlkgfCW0XvTgMBuljAWSudOT H3maPj4M230T488VKt24r8WhWV7zK6lVJ4NMDcgmcl741SmdTILpc2wYXV9ZKt3LOIRS fizynaKsDdNJLu0nQN7uDw3CMVg5QFP+cWUHozF+tX/cGhZjGD4sS/LYNbq4WltuE4V3 2T7w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=S4RKktMcPf3rE7CRNPQPl4hZIXa54SUO3jBV2MtYQsw=; b=gF4JqfElMUpDDJvBjqarMNlK6FUy8Ziz0NcE4TwAGnR1IcTzoxmfX1KEuEjFli2yZZ jK1lX0/Qrt2xztUAkjVmsToZkQ5GKW7Kzi1NKLDrJAxzeEx9NVdaLi2KlfYZ3p6u9y8y U0LShfhzcmpyoHDVeU2uLjPMm8kwKwu2vVxcvDNbh+LEX9MwdZVeaSkRSr4Tca8HSB8p /aLnmdlBZ+ifRCXKspYFGCF5cH7vf6NWo64dy6tlheKbBzQDIOtGoCozHnbvBGDzaDre YT54qM/M+TGqlIchSDIg8IzcvUot233tXBxuqxWEgLQ6qnHkgJCTqPuu/C6yfwW7C97R rO+g== X-Gm-Message-State: AFqh2krw9E/OuLUbzMc5AVT6SXYqXdPaw9ZVAAgtgbm2C6CWTZLwYV4I l10MEtFcC4x7DCtKYyVhf0tRsKP2iU7TfwKV X-Google-Smtp-Source: AMrXdXsjxCq5kpRKjaQWFBXw2q7s/vmTBhRo4AY21fraigXDtRakhDA9SdMZza9d+KNbvvrmHK0xrw== X-Received: by 2002:a17:90a:2f89:b0:219:6619:848a with SMTP id t9-20020a17090a2f8900b002196619848amr28083402pjd.36.1674525921783; Mon, 23 Jan 2023 18:05:21 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Cc: peter.maydell@linaro.org, WANG Xuerui Subject: [PULL v2 07/15] target/loongarch: Disassemble jirl properly Date: Mon, 23 Jan 2023 16:04:59 -1000 Message-Id: <20230124020507.3732200-8-richard.henderson@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230124020507.3732200-1-richard.henderson@linaro.org> References: <20230124020507.3732200-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer2=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::62a; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x62a.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer2=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer2=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1674525984761100003 Content-Type: text/plain; charset="utf-8" While jirl shares the same instruction format as bne etc, it is not assembled the same. In particular, rd is printed first not second and the immediate is not pc-relative. Decode into the arg_rr_i structure, which prints correctly. This changes the "offs" member to "imm", to update translate. Reviewed-by: WANG Xuerui Signed-off-by: Richard Henderson --- target/loongarch/insns.decode | 3 ++- target/loongarch/disas.c | 2 +- target/loongarch/insn_trans/trans_branch.c.inc | 2 +- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/target/loongarch/insns.decode b/target/loongarch/insns.decode index 3fdc6e148c..de7b8f0f3c 100644 --- a/target/loongarch/insns.decode +++ b/target/loongarch/insns.decode @@ -67,6 +67,7 @@ @rr_ui12 .... ...... imm:12 rj:5 rd:5 &rr_i @rr_i14s2 .... .... .............. rj:5 rd:5 &rr_i imm=3D%i14s2 @rr_i16 .... .. imm:s16 rj:5 rd:5 &rr_i +@rr_i16s2 .... .. ................ rj:5 rd:5 &rr_i imm=3D%offs= 16 @hint_r_i12 .... ...... imm:s12 rj:5 hint:5 &hint_r_i @rrr_sa2p1 .... ........ ... .. rk:5 rj:5 rd:5 &rrr_sa sa=3D%sa= 2p1 @rrr_sa2 .... ........ ... sa:2 rk:5 rj:5 rd:5 &rrr_sa @@ -444,7 +445,7 @@ beqz 0100 00 ................ ..... ..... = @r_offs21 bnez 0100 01 ................ ..... ..... @r_offs21 bceqz 0100 10 ................ 00 ... ..... @c_offs21 bcnez 0100 10 ................ 01 ... ..... @c_offs21 -jirl 0100 11 ................ ..... ..... @rr_offs16 +jirl 0100 11 ................ ..... ..... @rr_i16s2 b 0101 00 .......................... @offs26 bl 0101 01 .......................... @offs26 beq 0101 10 ................ ..... ..... @rr_offs16 diff --git a/target/loongarch/disas.c b/target/loongarch/disas.c index 858dfcc53a..7cffd853ec 100644 --- a/target/loongarch/disas.c +++ b/target/loongarch/disas.c @@ -628,7 +628,7 @@ INSN(beqz, r_offs) INSN(bnez, r_offs) INSN(bceqz, c_offs) INSN(bcnez, c_offs) -INSN(jirl, rr_offs) +INSN(jirl, rr_i) INSN(b, offs) INSN(bl, offs) INSN(beq, rr_offs) diff --git a/target/loongarch/insn_trans/trans_branch.c.inc b/target/loonga= rch/insn_trans/trans_branch.c.inc index 65dbdff41e..a860f7e733 100644 --- a/target/loongarch/insn_trans/trans_branch.c.inc +++ b/target/loongarch/insn_trans/trans_branch.c.inc @@ -23,7 +23,7 @@ static bool trans_jirl(DisasContext *ctx, arg_jirl *a) TCGv dest =3D gpr_dst(ctx, a->rd, EXT_NONE); TCGv src1 =3D gpr_src(ctx, a->rj, EXT_NONE); =20 - tcg_gen_addi_tl(cpu_pc, src1, a->offs); + tcg_gen_addi_tl(cpu_pc, src1, a->imm); tcg_gen_movi_tl(dest, ctx->base.pc_next + 4); gen_set_gpr(a->rd, dest, EXT_NONE); tcg_gen_lookup_and_goto_ptr(); --=20 2.34.1 From nobody Fri Apr 26 19:55:23 2024 Delivered-To: importer2@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1674526016; cv=none; d=zohomail.com; s=zohoarc; b=M7RDeh2s+8T+1NGyuXcy0Z2mqYfo2HmkKbg5E4UUr2JYG3OAigz0dZDF7NxOEKhA1Pl++R0XF7aGdmzZW5klum9rH8aiWVpCsKP6+Of9EbIBf5w/Q76x3xjhNZ+QrfvCa8TJhnw38ZHPBrqW1X4gPkzT1zTOW6feTwYHS3ZNvSo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1674526016; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=kZ0R7Dq38BbYtuszwNBcRlA+IEjeNWX33fjdLIAJGTI=; b=OkHvezDw2JOVK0BCmg+QRbcsuZv8gFrICD4JhfrgZuiTPuL/UgBDffb4AeEN4IcLmwE2I+2nzRCT5OKv3dnuTc1TUPlaxVLxPbhpOUebIsvHQC7s4rTVsSe/AoNJYG+DYWGVVLjWhFjDJI1u9PiCneDBhTg+Sh3Uxuok0d131T8= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1674526016674106.65159526463583; Mon, 23 Jan 2023 18:06:56 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1pK8gl-0008RC-0G; Mon, 23 Jan 2023 21:05:31 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pK8gg-0008Q7-Nu for qemu-devel@nongnu.org; Mon, 23 Jan 2023 21:05:27 -0500 Received: from mail-pj1-x102a.google.com ([2607:f8b0:4864:20::102a]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1pK8gf-0003ut-9X for qemu-devel@nongnu.org; Mon, 23 Jan 2023 21:05:26 -0500 Received: by mail-pj1-x102a.google.com with SMTP id dw9so13412844pjb.5 for ; Mon, 23 Jan 2023 18:05:24 -0800 (PST) Received: from stoup.. (rrcs-173-198-77-218.west.biz.rr.com. [173.198.77.218]) by smtp.gmail.com with ESMTPSA id fh3-20020a17090b034300b00228e56d375asm283936pjb.33.2023.01.23.18.05.22 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 23 Jan 2023 18:05:23 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=kZ0R7Dq38BbYtuszwNBcRlA+IEjeNWX33fjdLIAJGTI=; b=BUvfGklQqtb0GyNMzDOZa8igbc9eH7ijUQWkoQRyeMczT1ILwRpwTZZjOmOWADFCIZ ds7FI8LGrOdVatU9j3Q3vqJU73N0vZfQYRTRgak1Q+8p8IDqHmC+qY8PQuuDAngZkbFR r4K5fWhVDYq9HZQTuFUvA0fOYmJ+gOhZZIGRGiK7jLyf1fba1zdx5TaQm2ghVoZDdNJu wUoErab5xjxfFgvgfirGEncHlgvunOGXW+NdDOr1QdHLU5oymgbU8QMwk0xxHpQi6Dnn xt1npSD/eGE6KluuEvOROUs6Z6TEJqt1ooQXUVvKLn8qSp254FWnis6LJeBCZeovlIX2 amiw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=kZ0R7Dq38BbYtuszwNBcRlA+IEjeNWX33fjdLIAJGTI=; b=jZp3G4TWxWY//JI0v9FsdqhzcMocWOx7ulXxYikfttutEWiGkC46WA2txy9iclpWgu HQrMJ3/oLJ6u7UanW56a/jfA+1Ml1LYEuBIoxKYwi6BVbGwD0a3KsCqYr0yHVXfN47H4 hcM5uZXurknZJUqjYt8ErMn+kJReOG8RiqLdONW1dCHcMvUAaZwwwPvQcIpuuw0tvYqK 2R4bJcC948UdXKDa4WYNBZx9yKivZU9Bu+NG+Zr7RF9qdSEhw7DuqNx/KppP2GUb8DWk ympdjWRijfFm2JpaqIvGUY6DO0QZgs2Q0kR8JQXx02fcWSH2nnnPoaIO38HBcTjcXruY ySjw== X-Gm-Message-State: AFqh2kownE2kJ/FX5w6Q5WveL+c8GzQ4ZU6iaCeIKtw8tXCftfNfDaYw qUZoFgm+PxpNhlP0Dvg8+tUlvOIBToMr8m3g X-Google-Smtp-Source: AMrXdXuA4kGVpdQGzzlp2Pg+WAZKB9m/90E5sxpza/CpXwdd/ivMyABkiCg/CAC17wOMPmzxTF7hkA== X-Received: by 2002:a17:90b:3b45:b0:22b:b6c5:fa7e with SMTP id ot5-20020a17090b3b4500b0022bb6c5fa7emr13588174pjb.35.1674525923849; Mon, 23 Jan 2023 18:05:23 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Cc: peter.maydell@linaro.org, WANG Xuerui Subject: [PULL v2 08/15] target/loongarch: Disassemble pcadd* addresses Date: Mon, 23 Jan 2023 16:05:00 -1000 Message-Id: <20230124020507.3732200-9-richard.henderson@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230124020507.3732200-1-richard.henderson@linaro.org> References: <20230124020507.3732200-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer2=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::102a; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x102a.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer2=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer2=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1674526016867100003 Content-Type: text/plain; charset="utf-8" Print both the raw field and the resolved pc-relative address, as we do for branches. Reviewed-by: WANG Xuerui Signed-off-by: Richard Henderson --- target/loongarch/disas.c | 37 +++++++++++++++++++++++++++++++++---- 1 file changed, 33 insertions(+), 4 deletions(-) diff --git a/target/loongarch/disas.c b/target/loongarch/disas.c index 7cffd853ec..2e93e77e0d 100644 --- a/target/loongarch/disas.c +++ b/target/loongarch/disas.c @@ -519,10 +519,6 @@ INSN(fsel, fffc) INSN(addu16i_d, rr_i) INSN(lu12i_w, r_i) INSN(lu32i_d, r_i) -INSN(pcaddi, r_i) -INSN(pcalau12i, r_i) -INSN(pcaddu12i, r_i) -INSN(pcaddu18i, r_i) INSN(ll_w, rr_i) INSN(sc_w, rr_i) INSN(ll_d, rr_i) @@ -755,3 +751,36 @@ static bool trans_fcmp_cond_##suffix(DisasContext *ctx= , \ =20 FCMP_INSN(s) FCMP_INSN(d) + +#define PCADD_INSN(name) \ +static bool trans_##name(DisasContext *ctx, arg_##name *a) \ +{ \ + output(ctx, #name, "r%d, %d # 0x%" PRIx64, \ + a->rd, a->imm, gen_##name(ctx->pc, a->imm)); \ + return true; \ +} + +static uint64_t gen_pcaddi(uint64_t pc, int imm) +{ + return pc + (imm << 2); +} + +static uint64_t gen_pcalau12i(uint64_t pc, int imm) +{ + return (pc + (imm << 12)) & ~0xfff; +} + +static uint64_t gen_pcaddu12i(uint64_t pc, int imm) +{ + return pc + (imm << 12); +} + +static uint64_t gen_pcaddu18i(uint64_t pc, int imm) +{ + return pc + ((uint64_t)(imm) << 18); +} + +PCADD_INSN(pcaddi) +PCADD_INSN(pcalau12i) +PCADD_INSN(pcaddu12i) +PCADD_INSN(pcaddu18i) --=20 2.34.1 From nobody Fri Apr 26 19:55:23 2024 Delivered-To: importer2@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1674526064; cv=none; d=zohomail.com; s=zohoarc; b=lc9VNmp7lEOacEpcNk0Xj7dBXS5JJ2oY90EqmJWkNmNfg2Bva9EM6tgzMMdTsflgbNKY7HUQUs0iiCWEldK6UoONVxsBCfagp1bxHvBvMB56RdTMbOCgXmvB/26mfxVThphTX0YI4XEZnrY7Vp3dev5BKTdWVx7c12l5i0QPKHE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1674526064; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=Guv3uvJrWpw8GC7CFlgkvRN1pGVi7w2ZYgHuDstoJxk=; b=PuUy9apHOBcfhBSLm47m88BLLVLsYksn68WWObddXL0AeSkH/w4wx0ckbbJBe4NyEpt8ncqijf+t7z7jFdJCYfHfLt2ATxuB1l8CRQLfCKPRupCUNNfEFKJWASA1v1Wcop4kFiZEe7AIbEL/nKLRVqVObvQRZ34yPz+zm70vczk= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1674526064737199.28356039024243; Mon, 23 Jan 2023 18:07:44 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1pK8gm-0008RU-0E; Mon, 23 Jan 2023 21:05:32 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pK8gi-0008Qj-Nm for qemu-devel@nongnu.org; Mon, 23 Jan 2023 21:05:29 -0500 Received: from mail-pj1-x1035.google.com ([2607:f8b0:4864:20::1035]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1pK8gh-0003vE-1l for qemu-devel@nongnu.org; Mon, 23 Jan 2023 21:05:28 -0500 Received: by mail-pj1-x1035.google.com with SMTP id 88so1848909pjo.3 for ; Mon, 23 Jan 2023 18:05:26 -0800 (PST) Received: from stoup.. (rrcs-173-198-77-218.west.biz.rr.com. [173.198.77.218]) by smtp.gmail.com with ESMTPSA id fh3-20020a17090b034300b00228e56d375asm283936pjb.33.2023.01.23.18.05.24 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 23 Jan 2023 18:05:25 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=Guv3uvJrWpw8GC7CFlgkvRN1pGVi7w2ZYgHuDstoJxk=; b=WCyxlYsV/GTw4l7X23GPzYxcr78+a+L7BIe4phx9ju2zSv6O0fAwOMARZjtp4mBTLe PvRwkakTUxirG4qS5cY9Et1OT7AUrGukjm2mlNONnQxUGQwWDAk5GJjQYsyn3HGJ4d4u W1vdreq4LHU+t/Qcc4sfmxLBKcU+9xFkv+c7V091eUAdXG/yaolruSsDAsG3OX0e2yVe uApCDQwt4XmD4Vct9YxeGSPwVTxIpwMcVQx9kgzleL5jbyl8yJb9mpJFnjGh+AIcg1VV mREB6EYaYVtzly51I4lnqp8cmh1LxyRJiK9wFCfDMg8dMc4g4n0nPqR9j0F5xY9kZTIE zZxg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=Guv3uvJrWpw8GC7CFlgkvRN1pGVi7w2ZYgHuDstoJxk=; b=TCehAnoOQMdqSvrwgjS6A3i+6MBymPVDbIvhKKjzPUbpoOQ9UyUkg/Dz1iqHFsRXCN 7Zh8pvwFp68vkpWvdbwA5sO84Nev14F2UCiMUimrhhAGRLS//626EwRljHp0R3VUyqex zYgBhk6zUzmeFicgvqxrhwZ2rfrkPBEuZak2jDY5t11uFx+4BSBUzdqr76CRv/TrT25z oLWdoDSzKhDCC84815vteHNNwhgXIw+Ogu3aeHTtYx5AoplI9EezPV5OpM0ThoeYLFPt rvu7kGE7NHLtAMSXZK66rAHKLuiJ5M5OwkqoFkmbGStO4QLH2i6cxceN8j81Rl1yKKNN KQ0A== X-Gm-Message-State: AFqh2krGtJQ8HtmWHRY2HcRn5strUxMlEp4FzXfUXJqFjTzyHsUBHnLV uAe4kHSGoIuKUoeWUkDLBJ0NQKZd6n/CRtLw X-Google-Smtp-Source: AMrXdXvnjP7P7PJm6zi8JOWOW+SJCP5IPQN23GP4zwrjr7zoEkIA1mRbWC4KXqAnoz/EnrrDP6kZ5w== X-Received: by 2002:a17:90b:1b45:b0:22b:b6d5:e347 with SMTP id nv5-20020a17090b1b4500b0022bb6d5e347mr13417957pjb.29.1674525925755; Mon, 23 Jan 2023 18:05:25 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Cc: peter.maydell@linaro.org, Rui Wang , WANG Xuerui Subject: [PULL v2 09/15] tcg/loongarch64: Optimize immediate loading Date: Mon, 23 Jan 2023 16:05:01 -1000 Message-Id: <20230124020507.3732200-10-richard.henderson@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230124020507.3732200-1-richard.henderson@linaro.org> References: <20230124020507.3732200-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer2=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::1035; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x1035.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer2=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer2=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1674526065106100009 Content-Type: text/plain; charset="utf-8" From: Rui Wang diff: Imm Before After 0000000000000000 addi.w rd, zero, 0 addi.w rd, zero, 0 lu52i.d rd, zero, 0 00000000fffff800 lu12i.w rd, -1 addi.w rd, zero, -2048 ori rd, rd, 2048 lu32i.d rd, 0 lu32i.d rd, 0 Reviewed-by: WANG Xuerui Signed-off-by: Rui Wang Message-Id: <20221107144713.845550-1-wangrui@loongson.cn> Signed-off-by: Richard Henderson --- tcg/loongarch64/tcg-target.c.inc | 35 +++++++++++--------------------- 1 file changed, 12 insertions(+), 23 deletions(-) diff --git a/tcg/loongarch64/tcg-target.c.inc b/tcg/loongarch64/tcg-target.= c.inc index 3174557ce3..428f3abd71 100644 --- a/tcg/loongarch64/tcg-target.c.inc +++ b/tcg/loongarch64/tcg-target.c.inc @@ -274,16 +274,6 @@ static bool tcg_out_mov(TCGContext *s, TCGType type, T= CGReg ret, TCGReg arg) return true; } =20 -static bool imm_part_needs_loading(bool high_bits_are_ones, - tcg_target_long part) -{ - if (high_bits_are_ones) { - return part !=3D -1; - } else { - return part !=3D 0; - } -} - /* Loads a 32-bit immediate into rd, sign-extended. */ static void tcg_out_movi_i32(TCGContext *s, TCGReg rd, int32_t val) { @@ -291,16 +281,16 @@ static void tcg_out_movi_i32(TCGContext *s, TCGReg rd= , int32_t val) tcg_target_long hi12 =3D sextreg(val, 12, 20); =20 /* Single-instruction cases. */ - if (lo =3D=3D val) { - /* val fits in simm12: addi.w rd, zero, val */ - tcg_out_opc_addi_w(s, rd, TCG_REG_ZERO, val); - return; - } - if (0x800 <=3D val && val <=3D 0xfff) { + if (hi12 =3D=3D 0) { /* val fits in uimm12: ori rd, zero, val */ tcg_out_opc_ori(s, rd, TCG_REG_ZERO, val); return; } + if (hi12 =3D=3D sextreg(lo, 12, 20)) { + /* val fits in simm12: addi.w rd, zero, val */ + tcg_out_opc_addi_w(s, rd, TCG_REG_ZERO, val); + return; + } =20 /* High bits must be set; load with lu12i.w + optional ori. */ tcg_out_opc_lu12i_w(s, rd, hi12); @@ -334,8 +324,7 @@ static void tcg_out_movi(TCGContext *s, TCGType type, T= CGReg rd, =20 intptr_t pc_offset; tcg_target_long val_lo, val_hi, pc_hi, offset_hi; - tcg_target_long hi32, hi52; - bool rd_high_bits_are_ones; + tcg_target_long hi12, hi32, hi52; =20 /* Value fits in signed i32. */ if (type =3D=3D TCG_TYPE_I32 || val =3D=3D (int32_t)val) { @@ -366,25 +355,25 @@ static void tcg_out_movi(TCGContext *s, TCGType type,= TCGReg rd, return; } =20 + hi12 =3D sextreg(val, 12, 20); hi32 =3D sextreg(val, 32, 20); hi52 =3D sextreg(val, 52, 12); =20 /* Single cu52i.d case. */ - if (ctz64(val) >=3D 52) { + if ((hi52 !=3D 0) && (ctz64(val) >=3D 52)) { tcg_out_opc_cu52i_d(s, rd, TCG_REG_ZERO, hi52); return; } =20 /* Slow path. Initialize the low 32 bits, then concat high bits. */ tcg_out_movi_i32(s, rd, val); - rd_high_bits_are_ones =3D (int32_t)val < 0; =20 - if (imm_part_needs_loading(rd_high_bits_are_ones, hi32)) { + /* Load hi32 and hi52 explicitly when they are unexpected values. */ + if (hi32 !=3D sextreg(hi12, 20, 20)) { tcg_out_opc_cu32i_d(s, rd, hi32); - rd_high_bits_are_ones =3D hi32 < 0; } =20 - if (imm_part_needs_loading(rd_high_bits_are_ones, hi52)) { + if (hi52 !=3D sextreg(hi32, 20, 12)) { tcg_out_opc_cu52i_d(s, rd, rd, hi52); } } --=20 2.34.1 From nobody Fri Apr 26 19:55:23 2024 Delivered-To: importer2@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1674526061; cv=none; d=zohomail.com; s=zohoarc; b=ZnuKnzru6/PwrXugyd0Hjq9jZBUDOo/2yjmgnRivt6q56VORUmmbvP975EAryMiA0YTYf/YRS2zpXqkE/0qZKGMO6pC6l+/A9BCmU9CkhkSm1j98lGiiDvf6AJKhglC9dKjrL2AIN3O5JbbT4XsIZF3vcoXuEMnccQCa0G3tLLU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1674526061; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=bpu0eOvVcL/BkHuF9+fHY5Np3svCaEUGDf2BIuaeQ+o=; b=Kj7d/fYPo5WSMGK5Ouv9fPz1Sp6uWVCgh9Hn5/7AvqEXTPRqB/3cxOrrsONk6ih4YTiUWMnzBZ/ygZW0/COLy4FufWg+yfEiCOMnYb+Ek6Td37nwaH7tDruPe30YfEYHw8aZPq93lp4Bcm25tX1gwPh0ULm1kNTfWQXCxGUFvEc= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1674526061957308.7237776481578; Mon, 23 Jan 2023 18:07:41 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1pK8gm-0008S7-RN; Mon, 23 Jan 2023 21:05:33 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pK8gk-0008R4-Ri for qemu-devel@nongnu.org; Mon, 23 Jan 2023 21:05:30 -0500 Received: from mail-pl1-x62c.google.com ([2607:f8b0:4864:20::62c]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1pK8gj-0003ve-4k for qemu-devel@nongnu.org; Mon, 23 Jan 2023 21:05:30 -0500 Received: by mail-pl1-x62c.google.com with SMTP id k18so13340661pll.5 for ; Mon, 23 Jan 2023 18:05:28 -0800 (PST) Received: from stoup.. (rrcs-173-198-77-218.west.biz.rr.com. [173.198.77.218]) by smtp.gmail.com with ESMTPSA id fh3-20020a17090b034300b00228e56d375asm283936pjb.33.2023.01.23.18.05.26 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 23 Jan 2023 18:05:27 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=bpu0eOvVcL/BkHuF9+fHY5Np3svCaEUGDf2BIuaeQ+o=; b=f4eCzEPvx4N4xBppe5Lt09vEVXPc+Co/gL6dvfOOgdMT56i8QgPdm7MZGAbVeQfbV4 hhUoGp0kJaMiRolc+jhxBK04IIkq41ddd2LQ+uVepc9YpUYf4CLAxetcVtnBlmDesfXo pXB0r+nj2dzG7X8FtxAcVFAlryB93ppd/cVgiCrApVIkIm01gwy1M++d7DbqM2rCxHuT naIy/09YEbrOXl3fmZEds6nlYlG06t2bAywFDW7/kxrGl/xMNrFehCAVB6szKKsLQ4ZX gRlWaQlUsubjRU9GwZGyBQ3vehVkTrvGk9UjVIB02sCOejL1oEh0UWKOvPRiXUsJGW69 sN5Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=bpu0eOvVcL/BkHuF9+fHY5Np3svCaEUGDf2BIuaeQ+o=; b=GDksoD2ZmJ5hSJU68teN1tU1zl/hjQh6Mb4vmyuWPVt6LDAkKlLrUB5W0ePf6OO3Iv S6Lrjm4nGZiya4P9BzZfVTcl/+Q5B1MgWq0N7otgTPajkhte0E5NGXmR15cr/raxp27m LAuapvcz/1r342EIkCU4v03hmvwhlo4xI1QKrMIEZ8B+4rfKKIaNyCi2Xa3CG003hjus 88Gk4Aa54fuzDFVAQKew2lH+HlchvH4hhgA1YL37BGh3wy6x0F/jHw22ZgJ0TTNNC8RV FRnbuV2sR9t4TPKRElPtvq9w3lF0+nfnWUWwxi9RXKhcfUXc18HuWBq0X+vm3HKFutnn +yrg== X-Gm-Message-State: AFqh2krByTGP8el2zo2i/4C9zcOlE45uRXk2gGL5TVO2jjHpw9dTy7Wl RhR0wL3hymJQkGQlgTYWLA37E9nzPEtyuUyh X-Google-Smtp-Source: AMrXdXs4mnICup4koz+qKPe82mfenY6DgUpX7hqtPlbCeWN643QY923HXQasu+B4bCEXvcNuOhfzZg== X-Received: by 2002:a17:90b:3eca:b0:229:f4cd:1e03 with SMTP id rm10-20020a17090b3eca00b00229f4cd1e03mr17109385pjb.22.1674525927690; Mon, 23 Jan 2023 18:05:27 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Cc: peter.maydell@linaro.org, WANG Xuerui , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Subject: [PULL v2 10/15] tcg/loongarch64: Update tcg-insn-defs.c.inc Date: Mon, 23 Jan 2023 16:05:02 -1000 Message-Id: <20230124020507.3732200-11-richard.henderson@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230124020507.3732200-1-richard.henderson@linaro.org> References: <20230124020507.3732200-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer2=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::62c; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x62c.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer2=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer2=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1674526063152100007 Regenerate with ADDU16I included: $ cd loongarch-opcodes/scripts/go $ go run ./genqemutcgdefs > $QEMU/tcg/loongarch64/tcg-insn-defs.c.inc Reviewed-by: WANG Xuerui Reviewed-by: Philippe Mathieu-Daud=C3=A9 Signed-off-by: Richard Henderson --- tcg/loongarch64/tcg-insn-defs.c.inc | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/tcg/loongarch64/tcg-insn-defs.c.inc b/tcg/loongarch64/tcg-insn= -defs.c.inc index d162571856..b5bb0c5e73 100644 --- a/tcg/loongarch64/tcg-insn-defs.c.inc +++ b/tcg/loongarch64/tcg-insn-defs.c.inc @@ -4,7 +4,7 @@ * * This file is auto-generated by genqemutcgdefs from * https://github.com/loongson-community/loongarch-opcodes, - * from commit 961f0c60f5b63e574d785995600c71ad5413fdc4. + * from commit 25ca7effe9d88101c1cf96c4005423643386d81f. * DO NOT EDIT. */ =20 @@ -74,6 +74,7 @@ typedef enum { OPC_ANDI =3D 0x03400000, OPC_ORI =3D 0x03800000, OPC_XORI =3D 0x03c00000, + OPC_ADDU16I_D =3D 0x10000000, OPC_LU12I_W =3D 0x14000000, OPC_CU32I_D =3D 0x16000000, OPC_PCADDU2I =3D 0x18000000, @@ -710,6 +711,13 @@ tcg_out_opc_xori(TCGContext *s, TCGReg d, TCGReg j, ui= nt32_t uk12) tcg_out32(s, encode_djuk12_insn(OPC_XORI, d, j, uk12)); } =20 +/* Emits the `addu16i.d d, j, sk16` instruction. */ +static void __attribute__((unused)) +tcg_out_opc_addu16i_d(TCGContext *s, TCGReg d, TCGReg j, int32_t sk16) +{ + tcg_out32(s, encode_djsk16_insn(OPC_ADDU16I_D, d, j, sk16)); +} + /* Emits the `lu12i.w d, sj20` instruction. */ static void __attribute__((unused)) tcg_out_opc_lu12i_w(TCGContext *s, TCGReg d, int32_t sj20) --=20 2.34.1 From nobody Fri Apr 26 19:55:23 2024 Delivered-To: importer2@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1674526060; cv=none; d=zohomail.com; s=zohoarc; b=giq95D1byISyO1aV5ZzwIXkn7p6XvEKqVg5TzOQynNfXPFBz1PKEZ1ptcYAmMfQi5Q5Dxl1kIdEXbbDO8Q33HeYTia53d6LMzhGKsEzZPrf3R7MgSE8s72C+zQEIeohmKDME6eesgMf1gjjLOEt/kn8PLLLRMasvZt0UUKJH4SI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1674526060; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=Rc/VY8rBEtL52bTFD8m38qtzf0giQYh7S+uKXuCEagE=; b=E/dd+gqkax6ATfZVCk/kwWFIY9aeh4qH4VkTnn4zVtpOjQU7Tamx4cfmVbAmNbQzqTLEoa/bVkuYe3mbLvgmq33oLF9f3Wa4mOwycUY+JrZz85AtQvsaBi1v45mLRsvSN6fmVNpxMDw7d4E4CIH0P2VtxAT8T+4nE356Q49tUo0= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1674526060215471.5405213416392; Mon, 23 Jan 2023 18:07:40 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1pK8gq-0008TC-Ax; Mon, 23 Jan 2023 21:05:36 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pK8gm-0008S2-O0 for qemu-devel@nongnu.org; Mon, 23 Jan 2023 21:05:32 -0500 Received: from mail-pj1-x1035.google.com ([2607:f8b0:4864:20::1035]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1pK8gk-0003vE-1T for qemu-devel@nongnu.org; Mon, 23 Jan 2023 21:05:32 -0500 Received: by mail-pj1-x1035.google.com with SMTP id 88so1848996pjo.3 for ; Mon, 23 Jan 2023 18:05:29 -0800 (PST) Received: from stoup.. (rrcs-173-198-77-218.west.biz.rr.com. [173.198.77.218]) by smtp.gmail.com with ESMTPSA id fh3-20020a17090b034300b00228e56d375asm283936pjb.33.2023.01.23.18.05.27 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 23 Jan 2023 18:05:28 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=Rc/VY8rBEtL52bTFD8m38qtzf0giQYh7S+uKXuCEagE=; b=YnYPKSM5BFp/9AYH91jaXQWlpcQzaxJqbXOaOzI20HWx9ESqeYhMEJhKZtQY9bE9DN czgFCHCv1I1WXhqXqc0685fopdUleB1eiJl2R7zuG56RW0TKAbqQogr8d66CzACE4gt/ UbR1o4TcPqGuNqit1AXOPMNUv3MFmCj6kct3tLm2qc6pXzQBNeluFIFpEgdW3aQ5NdxG opOV1FwV0ebqoWGbpKNn9aAtLMqC6XZoFioTdC+PR3pV31CQNrJWPvipZy0hW+vy2EpQ Y7lpG1mRW6tMgUKsETPMpia04O3zV8kvaIihBMJCaBCuvJQWmeVo0THmtNSgNC+Hwf+5 k2HA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=Rc/VY8rBEtL52bTFD8m38qtzf0giQYh7S+uKXuCEagE=; b=tKre7a2anc210iu/N6UOadnOq7h/ty2I+Kod0YJXl7veEOq1xdNjpFm5JOLX4/m2IX PmKjzEN/giN0zYngLpmwifPZUpTk0xB70nMd4wgC2Kyfivlk7mFKwVIvJD+ZW7eC6MDj S36koNkRWvnth4jwfRiZxgYg5olWFxc8z+jerrbAHDeku5k2bCtsCJ77kdYutOC2uX08 T3+1KpJKqEXgqnKpj44BlLKAzr2QkckHG91UmF2+ktn5/MxkziXfgpmLwe6rq6G4f09l tsSX11aUNek/hgaNtGjLl1ZsgFlEt1jTxwmM9EpZ+jc+1la5ApWZLRSeIW30/Ql58Khm kM9g== X-Gm-Message-State: AFqh2kq9ueCYhfCQ7XPGi4+A/8f7KgyWmqOBz9/QrfHx5paXB9aaYuT7 2jHHlQ/FQFxeLvQ848DpmWKPKZ7NjjUbuOS9 X-Google-Smtp-Source: AMrXdXv1NN9rAgMfXxEaxHOYuc2hg/x09IyIODH0GffhnNsD1Po+sk6M6VEk/tw2KrQZmWsPFNQQxg== X-Received: by 2002:a17:90a:a895:b0:229:d400:11c1 with SMTP id h21-20020a17090aa89500b00229d40011c1mr21364346pjq.10.1674525929219; Mon, 23 Jan 2023 18:05:29 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Cc: peter.maydell@linaro.org, WANG Xuerui Subject: [PULL v2 11/15] tcg/loongarch64: Introduce tcg_out_addi Date: Mon, 23 Jan 2023 16:05:03 -1000 Message-Id: <20230124020507.3732200-12-richard.henderson@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230124020507.3732200-1-richard.henderson@linaro.org> References: <20230124020507.3732200-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer2=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::1035; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x1035.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer2=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer2=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1674526061070100001 Content-Type: text/plain; charset="utf-8" Adjust the constraints to allow any int32_t for immediate addition. Split immediate adds into addu16i + addi, which covers quite a lot of the immediate space. For the hole in the middle, load the constant into TMP0 instead. Reviewed-by: WANG Xuerui Signed-off-by: Richard Henderson --- tcg/loongarch64/tcg-target-con-set.h | 4 +- tcg/loongarch64/tcg-target-con-str.h | 2 +- tcg/loongarch64/tcg-target.c.inc | 57 ++++++++++++++++++++++++---- 3 files changed, 53 insertions(+), 10 deletions(-) diff --git a/tcg/loongarch64/tcg-target-con-set.h b/tcg/loongarch64/tcg-tar= get-con-set.h index 349c672687..7b5a7a3f5d 100644 --- a/tcg/loongarch64/tcg-target-con-set.h +++ b/tcg/loongarch64/tcg-target-con-set.h @@ -23,9 +23,11 @@ C_O1_I1(r, L) C_O1_I2(r, r, rC) C_O1_I2(r, r, ri) C_O1_I2(r, r, rI) +C_O1_I2(r, r, rJ) C_O1_I2(r, r, rU) C_O1_I2(r, r, rW) C_O1_I2(r, r, rZ) C_O1_I2(r, 0, rZ) -C_O1_I2(r, rZ, rN) +C_O1_I2(r, rZ, ri) +C_O1_I2(r, rZ, rJ) C_O1_I2(r, rZ, rZ) diff --git a/tcg/loongarch64/tcg-target-con-str.h b/tcg/loongarch64/tcg-tar= get-con-str.h index c3986a4fd4..541ff47fa9 100644 --- a/tcg/loongarch64/tcg-target-con-str.h +++ b/tcg/loongarch64/tcg-target-con-str.h @@ -21,7 +21,7 @@ REGS('L', ALL_GENERAL_REGS & ~SOFTMMU_RESERVE_REGS) * CONST(letter, TCG_CT_CONST_* bit set) */ CONST('I', TCG_CT_CONST_S12) -CONST('N', TCG_CT_CONST_N12) +CONST('J', TCG_CT_CONST_S32) CONST('U', TCG_CT_CONST_U12) CONST('Z', TCG_CT_CONST_ZERO) CONST('C', TCG_CT_CONST_C12) diff --git a/tcg/loongarch64/tcg-target.c.inc b/tcg/loongarch64/tcg-target.= c.inc index 428f3abd71..8cc6c5eec2 100644 --- a/tcg/loongarch64/tcg-target.c.inc +++ b/tcg/loongarch64/tcg-target.c.inc @@ -126,7 +126,7 @@ static const int tcg_target_call_oarg_regs[] =3D { =20 #define TCG_CT_CONST_ZERO 0x100 #define TCG_CT_CONST_S12 0x200 -#define TCG_CT_CONST_N12 0x400 +#define TCG_CT_CONST_S32 0x400 #define TCG_CT_CONST_U12 0x800 #define TCG_CT_CONST_C12 0x1000 #define TCG_CT_CONST_WSZ 0x2000 @@ -161,7 +161,7 @@ static bool tcg_target_const_match(int64_t val, TCGType= type, int ct) if ((ct & TCG_CT_CONST_S12) && val =3D=3D sextreg(val, 0, 12)) { return true; } - if ((ct & TCG_CT_CONST_N12) && -val =3D=3D sextreg(-val, 0, 12)) { + if ((ct & TCG_CT_CONST_S32) && val =3D=3D (int32_t)val) { return true; } if ((ct & TCG_CT_CONST_U12) && val >=3D 0 && val <=3D 0xfff) { @@ -378,6 +378,45 @@ static void tcg_out_movi(TCGContext *s, TCGType type, = TCGReg rd, } } =20 +static void tcg_out_addi(TCGContext *s, TCGType type, TCGReg rd, + TCGReg rs, tcg_target_long imm) +{ + tcg_target_long lo12 =3D sextreg(imm, 0, 12); + tcg_target_long hi16 =3D sextreg(imm - lo12, 16, 16); + + /* + * Note that there's a hole in between hi16 and lo12: + * + * 3 2 1 0 + * 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 + * ...+-------------------------------+-------+-----------------------+ + * | hi16 | | lo12 | + * ...+-------------------------------+-------+-----------------------+ + * + * For bits within that hole, it's more efficient to use LU12I and ADD. + */ + if (imm =3D=3D (hi16 << 16) + lo12) { + if (hi16) { + tcg_out_opc_addu16i_d(s, rd, rs, hi16); + rs =3D rd; + } + if (type =3D=3D TCG_TYPE_I32) { + tcg_out_opc_addi_w(s, rd, rs, lo12); + } else if (lo12) { + tcg_out_opc_addi_d(s, rd, rs, lo12); + } else { + tcg_out_mov(s, type, rd, rs); + } + } else { + tcg_out_movi(s, type, TCG_REG_TMP0, imm); + if (type =3D=3D TCG_TYPE_I32) { + tcg_out_opc_add_w(s, rd, rs, TCG_REG_TMP0); + } else { + tcg_out_opc_add_d(s, rd, rs, TCG_REG_TMP0); + } + } +} + static void tcg_out_ext8u(TCGContext *s, TCGReg ret, TCGReg arg) { tcg_out_opc_andi(s, ret, arg, 0xff); @@ -1350,14 +1389,14 @@ static void tcg_out_op(TCGContext *s, TCGOpcode opc, =20 case INDEX_op_add_i32: if (c2) { - tcg_out_opc_addi_w(s, a0, a1, a2); + tcg_out_addi(s, TCG_TYPE_I32, a0, a1, a2); } else { tcg_out_opc_add_w(s, a0, a1, a2); } break; case INDEX_op_add_i64: if (c2) { - tcg_out_opc_addi_d(s, a0, a1, a2); + tcg_out_addi(s, TCG_TYPE_I64, a0, a1, a2); } else { tcg_out_opc_add_d(s, a0, a1, a2); } @@ -1365,14 +1404,14 @@ static void tcg_out_op(TCGContext *s, TCGOpcode opc, =20 case INDEX_op_sub_i32: if (c2) { - tcg_out_opc_addi_w(s, a0, a1, -a2); + tcg_out_addi(s, TCG_TYPE_I32, a0, a1, -a2); } else { tcg_out_opc_sub_w(s, a0, a1, a2); } break; case INDEX_op_sub_i64: if (c2) { - tcg_out_opc_addi_d(s, a0, a1, -a2); + tcg_out_addi(s, TCG_TYPE_I64, a0, a1, -a2); } else { tcg_out_opc_sub_d(s, a0, a1, a2); } @@ -1586,8 +1625,9 @@ static TCGConstraintSetIndex tcg_target_op_def(TCGOpc= ode op) return C_O1_I2(r, r, ri); =20 case INDEX_op_add_i32: + return C_O1_I2(r, r, ri); case INDEX_op_add_i64: - return C_O1_I2(r, r, rI); + return C_O1_I2(r, r, rJ); =20 case INDEX_op_and_i32: case INDEX_op_and_i64: @@ -1616,8 +1656,9 @@ static TCGConstraintSetIndex tcg_target_op_def(TCGOpc= ode op) return C_O1_I2(r, 0, rZ); =20 case INDEX_op_sub_i32: + return C_O1_I2(r, rZ, ri); case INDEX_op_sub_i64: - return C_O1_I2(r, rZ, rN); + return C_O1_I2(r, rZ, rJ); =20 case INDEX_op_mul_i32: case INDEX_op_mul_i64: --=20 2.34.1 From nobody Fri Apr 26 19:55:23 2024 Delivered-To: importer2@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1674525953; cv=none; d=zohomail.com; s=zohoarc; b=fCofMtF8psfxyd9HwECdQefXvyR7RCFlkQeEiTEFgYYf/tubMGwFkqb11lfSRZgvZSqGvJZz64maqkbF4wiZdE4/hlUjYMvZRwXvLPecBUG2eZ8+Fzvn1v/knhe8c529qOhO561S5+pbggudL1fm0VH0op60qt7YViVlIanecaA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1674525953; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=oSN4q2/trOO3CWE4wgzA7y5a7w/3XkcLOKjOmfpe6tk=; b=g3wxRuHaBsKvZBEe8sjZO3Pst1ARzxTmvuuFTn8Wo4EThHNnrzeEjcxNxgifqF8CMGCKpWGNAl4jK8RSbVD59CmOzTfRroB0t84GYzDTSnMUocFoeUcS9+hDXrkqv9RC618RmvFRKWKLoxBXWqByhbMioEgnGejEMMYHMl9t7n8= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1674525953756416.9903397359991; Mon, 23 Jan 2023 18:05:53 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1pK8gr-0008U0-Hv; Mon, 23 Jan 2023 21:05:37 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pK8gp-0008So-3s for qemu-devel@nongnu.org; Mon, 23 Jan 2023 21:05:35 -0500 Received: from mail-pl1-x62e.google.com ([2607:f8b0:4864:20::62e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1pK8gm-0003wE-HT for qemu-devel@nongnu.org; Mon, 23 Jan 2023 21:05:34 -0500 Received: by mail-pl1-x62e.google.com with SMTP id jl3so13330054plb.8 for ; Mon, 23 Jan 2023 18:05:31 -0800 (PST) Received: from stoup.. (rrcs-173-198-77-218.west.biz.rr.com. [173.198.77.218]) by smtp.gmail.com with ESMTPSA id fh3-20020a17090b034300b00228e56d375asm283936pjb.33.2023.01.23.18.05.29 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 23 Jan 2023 18:05:30 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=oSN4q2/trOO3CWE4wgzA7y5a7w/3XkcLOKjOmfpe6tk=; b=dTu6hHgjCjYu4vb0HzGPYJnlPfyiRNNp7hG8cdXWwXCyRAdx/zLplrIUUpys/InvlT hzLU1IvVVmbGAd5xxlAK9vA56ggQWn6DYRiNAqYnLZD9txk7o5fF5JOoilZJ0dN2Mn3Z GPGbDU9QoetCLzVmj7UcikK9DNWVZS7D0Jri2UHSJdYEx/q9KIvPd+BfCSrmFEYJhzuI fIBJ+KKn/psPkFB+tGkBnWWm5L0ylFiuBp/fCI0TncyPGgkuCaRNxtw72cYreIRUIfQI XrPovPjl6M8BOoGDNA0wj6Z43+DgQS6iRWUjCfauVaMdd0g9Y8EBvcciLHPnaGVsccmo oTZw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=oSN4q2/trOO3CWE4wgzA7y5a7w/3XkcLOKjOmfpe6tk=; b=seRtvHYWS+zXe/ZEr7Al7qtx4ETAH/OWfiQ6tQknE/gX+HyifG3aK7UV1+jv86o+m3 xwaVCeU+NBTOL31fwOz0/gq73drMmFsJHdyymyyf5qY2EQ/eelxAl23JbhcKpsaPGdxt Nz3BaoAcJcVEe4QQ8HGol79hSmR+YwTN8yCzdgp/A5VPzY/zhgj5KXvS9Ud1UHnONI5u 6HNm9NgnNlGqC/vhowkDrkA61/apJ7xvESfw8EJSSPaNgZYYNrFkfaaFtXNRy9mIj/GE HAZefgwQdx0YX1dQfS5pZHJl/yFZOhdEaLECqHG6bwHkPRZpMsTZX9OSFWKe7RT2RNc+ Ay1A== X-Gm-Message-State: AFqh2krZAAIDUop4F8o2K50GG89dpxWI0vVRf8Ym6dteYpuPSielGmun 631FnwSc0LzQugAyCGWgr7Jcxmb0W2gvVTg0 X-Google-Smtp-Source: AMrXdXt4hgqE/ivIipbWzIT6hAxNgxN0YHQLe85eIoMlEkgjHuG7XC2Ba6rY+lWgPtkYjExFDncXKA== X-Received: by 2002:a17:90a:170c:b0:229:cc2b:524b with SMTP id z12-20020a17090a170c00b00229cc2b524bmr21729039pjd.24.1674525930657; Mon, 23 Jan 2023 18:05:30 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Cc: peter.maydell@linaro.org, WANG Xuerui Subject: [PULL v2 12/15] tcg/loongarch64: Improve setcond expansion Date: Mon, 23 Jan 2023 16:05:04 -1000 Message-Id: <20230124020507.3732200-13-richard.henderson@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230124020507.3732200-1-richard.henderson@linaro.org> References: <20230124020507.3732200-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer2=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::62e; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x62e.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer2=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer2=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1674525954944100007 Content-Type: text/plain; charset="utf-8" Split out a helper function, tcg_out_setcond_int, which does not always produce the complete boolean result, but returns a set of flags to do so. Accept all int32_t as constant input, so that LE/GT can adjust the constant to LT. Reviewed-by: WANG Xuerui Signed-off-by: Richard Henderson --- tcg/loongarch64/tcg-target.c.inc | 165 +++++++++++++++++++++---------- 1 file changed, 115 insertions(+), 50 deletions(-) diff --git a/tcg/loongarch64/tcg-target.c.inc b/tcg/loongarch64/tcg-target.= c.inc index 8cc6c5eec2..ccc1c0f392 100644 --- a/tcg/loongarch64/tcg-target.c.inc +++ b/tcg/loongarch64/tcg-target.c.inc @@ -469,64 +469,131 @@ static void tcg_out_clzctz(TCGContext *s, LoongArchI= nsn opc, tcg_out_opc_or(s, a0, TCG_REG_TMP0, a0); } =20 -static void tcg_out_setcond(TCGContext *s, TCGCond cond, TCGReg ret, - TCGReg arg1, TCGReg arg2, bool c2) -{ - TCGReg tmp; +#define SETCOND_INV TCG_TARGET_NB_REGS +#define SETCOND_NEZ (SETCOND_INV << 1) +#define SETCOND_FLAGS (SETCOND_INV | SETCOND_NEZ) =20 - if (c2) { - tcg_debug_assert(arg2 =3D=3D 0); +static int tcg_out_setcond_int(TCGContext *s, TCGCond cond, TCGReg ret, + TCGReg arg1, tcg_target_long arg2, bool c2) +{ + int flags =3D 0; + + switch (cond) { + case TCG_COND_EQ: /* -> NE */ + case TCG_COND_GE: /* -> LT */ + case TCG_COND_GEU: /* -> LTU */ + case TCG_COND_GT: /* -> LE */ + case TCG_COND_GTU: /* -> LEU */ + cond =3D tcg_invert_cond(cond); + flags ^=3D SETCOND_INV; + break; + default: + break; } =20 switch (cond) { - case TCG_COND_EQ: - if (c2) { - tmp =3D arg1; - } else { - tcg_out_opc_sub_d(s, ret, arg1, arg2); - tmp =3D ret; - } - tcg_out_opc_sltui(s, ret, tmp, 1); - break; - case TCG_COND_NE: - if (c2) { - tmp =3D arg1; - } else { - tcg_out_opc_sub_d(s, ret, arg1, arg2); - tmp =3D ret; - } - tcg_out_opc_sltu(s, ret, TCG_REG_ZERO, tmp); - break; - case TCG_COND_LT: - tcg_out_opc_slt(s, ret, arg1, arg2); - break; - case TCG_COND_GE: - tcg_out_opc_slt(s, ret, arg1, arg2); - tcg_out_opc_xori(s, ret, ret, 1); - break; case TCG_COND_LE: - tcg_out_setcond(s, TCG_COND_GE, ret, arg2, arg1, false); - break; - case TCG_COND_GT: - tcg_out_setcond(s, TCG_COND_LT, ret, arg2, arg1, false); - break; - case TCG_COND_LTU: - tcg_out_opc_sltu(s, ret, arg1, arg2); - break; - case TCG_COND_GEU: - tcg_out_opc_sltu(s, ret, arg1, arg2); - tcg_out_opc_xori(s, ret, ret, 1); - break; case TCG_COND_LEU: - tcg_out_setcond(s, TCG_COND_GEU, ret, arg2, arg1, false); + /* + * If we have a constant input, the most efficient way to implement + * LE is by adding 1 and using LT. Watch out for wrap around for = LEU. + * We don't need to care for this for LE because the constant input + * is still constrained to int32_t, and INT32_MAX+1 is representab= le + * in the 64-bit temporary register. + */ + if (c2) { + if (cond =3D=3D TCG_COND_LEU) { + /* unsigned <=3D -1 is true */ + if (arg2 =3D=3D -1) { + tcg_out_movi(s, TCG_TYPE_REG, ret, !(flags & SETCOND_I= NV)); + return ret; + } + cond =3D TCG_COND_LTU; + } else { + cond =3D TCG_COND_LT; + } + arg2 +=3D 1; + } else { + TCGReg tmp =3D arg2; + arg2 =3D arg1; + arg1 =3D tmp; + cond =3D tcg_swap_cond(cond); /* LE -> GE */ + cond =3D tcg_invert_cond(cond); /* GE -> LT */ + flags ^=3D SETCOND_INV; + } break; - case TCG_COND_GTU: - tcg_out_setcond(s, TCG_COND_LTU, ret, arg2, arg1, false); + default: break; + } + + switch (cond) { + case TCG_COND_NE: + flags |=3D SETCOND_NEZ; + if (!c2) { + tcg_out_opc_xor(s, ret, arg1, arg2); + } else if (arg2 =3D=3D 0) { + ret =3D arg1; + } else if (arg2 >=3D 0 && arg2 <=3D 0xfff) { + tcg_out_opc_xori(s, ret, arg1, arg2); + } else { + tcg_out_addi(s, TCG_TYPE_REG, ret, arg1, -arg2); + } + break; + + case TCG_COND_LT: + case TCG_COND_LTU: + if (c2) { + if (arg2 >=3D -0x800 && arg2 <=3D 0x7ff) { + if (cond =3D=3D TCG_COND_LT) { + tcg_out_opc_slti(s, ret, arg1, arg2); + } else { + tcg_out_opc_sltui(s, ret, arg1, arg2); + } + break; + } + tcg_out_movi(s, TCG_TYPE_REG, TCG_REG_TMP0, arg2); + arg2 =3D TCG_REG_TMP0; + } + if (cond =3D=3D TCG_COND_LT) { + tcg_out_opc_slt(s, ret, arg1, arg2); + } else { + tcg_out_opc_sltu(s, ret, arg1, arg2); + } + break; + default: g_assert_not_reached(); break; } + + return ret | flags; +} + +static void tcg_out_setcond(TCGContext *s, TCGCond cond, TCGReg ret, + TCGReg arg1, tcg_target_long arg2, bool c2) +{ + int tmpflags =3D tcg_out_setcond_int(s, cond, ret, arg1, arg2, c2); + + if (tmpflags !=3D ret) { + TCGReg tmp =3D tmpflags & ~SETCOND_FLAGS; + + switch (tmpflags & SETCOND_FLAGS) { + case SETCOND_INV: + /* Intermediate result is boolean: simply invert. */ + tcg_out_opc_xori(s, ret, tmp, 1); + break; + case SETCOND_NEZ: + /* Intermediate result is zero/non-zero: test !=3D 0. */ + tcg_out_opc_sltu(s, ret, TCG_REG_ZERO, tmp); + break; + case SETCOND_NEZ | SETCOND_INV: + /* Intermediate result is zero/non-zero: test =3D=3D 0. */ + tcg_out_opc_sltui(s, ret, tmp, 1); + break; + default: + g_assert_not_reached(); + } + } } =20 /* @@ -1646,18 +1713,16 @@ static TCGConstraintSetIndex tcg_target_op_def(TCGO= pcode op) case INDEX_op_ctz_i64: return C_O1_I2(r, r, rW); =20 - case INDEX_op_setcond_i32: - case INDEX_op_setcond_i64: - return C_O1_I2(r, r, rZ); - case INDEX_op_deposit_i32: case INDEX_op_deposit_i64: /* Must deposit into the same register as input */ return C_O1_I2(r, 0, rZ); =20 case INDEX_op_sub_i32: + case INDEX_op_setcond_i32: return C_O1_I2(r, rZ, ri); case INDEX_op_sub_i64: + case INDEX_op_setcond_i64: return C_O1_I2(r, rZ, rJ); =20 case INDEX_op_mul_i32: --=20 2.34.1 From nobody Fri Apr 26 19:55:23 2024 Delivered-To: importer2@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1674526029; cv=none; d=zohomail.com; s=zohoarc; b=U6lIk91HvSCX2b3ap66HU3aSO5PmMS6QD7q8d6StQ417cbo9/52FZ7dLO87vN2Bljr7806oVSlkBcXDZmo1aXCSuQF5wUgWzHVZzQ4r0BLr51M8Tt7HAHg7Un95oyoca3tZzjKLQBKt9FV/0JV7FpFGyQJ73No4nqwHgYTGpkI0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1674526029; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=0mmDm29bhUF/un9qqegtPH06CTbT3PUUr5zUFrPrVJw=; b=TNVIY/lR1Bp5VAVQJvgcpQqZE0u64iG0OWIJdTGjMyfynGsoMwqDDDv2S/RN7XnHqMwz4/3f6ctzZRBe2xXMGLPkM5RqrXgM2ylGkBFLWjZdgHNzUYitoyYbh9umc/QbEvzoxAGWC28uK5GdwiJf56lccpAHNrLUhyDQZa/jGXk= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1674526029095456.3163302013709; Mon, 23 Jan 2023 18:07:09 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1pK8gq-0008TK-Si; Mon, 23 Jan 2023 21:05:36 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pK8gp-0008Sp-5v for qemu-devel@nongnu.org; Mon, 23 Jan 2023 21:05:35 -0500 Received: from mail-pj1-x102f.google.com ([2607:f8b0:4864:20::102f]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1pK8gn-0003se-3N for qemu-devel@nongnu.org; Mon, 23 Jan 2023 21:05:34 -0500 Received: by mail-pj1-x102f.google.com with SMTP id o13so13450247pjg.2 for ; Mon, 23 Jan 2023 18:05:32 -0800 (PST) Received: from stoup.. (rrcs-173-198-77-218.west.biz.rr.com. [173.198.77.218]) by smtp.gmail.com with ESMTPSA id fh3-20020a17090b034300b00228e56d375asm283936pjb.33.2023.01.23.18.05.30 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 23 Jan 2023 18:05:31 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=0mmDm29bhUF/un9qqegtPH06CTbT3PUUr5zUFrPrVJw=; b=VhtfjV0VWIgq4balisUgNQAYRQyAc3JvpXii6AUxIXqZSFgl4o/BnANQRepR47G34L 154d4UvF/8AG4QbmUJLaQ4RYB3fI7HTN3kW3Lk/UuT+4z2sQloiF5Ie9WPtXhddFh90l 81570mLLTgNogySep/PIMOO3m2BDJvqiSoNKnD73aN0jS2HakFlkwfXDgIjMggsY3Vqv tnrCGzjj6q8YbN2PbWKJ2UhvNrkF7T+tGrRtAhPRmRDeXBQFbQ4FjazmQfE9eqy+tat6 Km+dtFD5UTaIP2YEru1UlTQJhm6aVglL31IFU3o5GodfTy/ynzekcQI7igiajhwD4Vyx f3aQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=0mmDm29bhUF/un9qqegtPH06CTbT3PUUr5zUFrPrVJw=; b=HphWvpsUkNyJS13UUlWZssFykYK++U0BE105u4W5YbaoTTaBeVWueqmolsICk9kJp/ u6x0eT3SOodkU4dzFIDLk53G3l2IWMNdFQ//wgMnWaORrSd/fcSkzU2zzTF/yMuXQoC7 SYe9IDUAh3YiiDD0HvZeZF+oXZA/OZr64oDzBa1B+YaBLNUlxv6DxrauhwR2j5VMSljk Ici36WRFBbzyr3Ac405jxSZrsRMF8lRBwr91R+CYQHG6/v3Q+dgkmIQKMBpVWSq4/KLf 89s9WsGBANhD36v0rAuhI8ZJNzSmlINLgSUM5G3PPUji7Z/OekYSshO8kJcqdIT1RTdf /EiA== X-Gm-Message-State: AFqh2kpFBpBgSN4F/lTsOYATSoowMdHRfPcBHyILq/mqO6VBkSpVXuyA DsczrKn3VQNTefrvgYhgFSoroLdaNQytPCTC X-Google-Smtp-Source: AMrXdXvb8pW5ML76UrvfElUOUCgIuH4atYtWBzThHZJZYHnGkHUnjwpMT5ypnY1hOrdHVM5Jw17mKQ== X-Received: by 2002:a17:90a:aa12:b0:229:14ec:a3b9 with SMTP id k18-20020a17090aaa1200b0022914eca3b9mr27178611pjq.22.1674525932280; Mon, 23 Jan 2023 18:05:32 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Cc: peter.maydell@linaro.org, WANG Xuerui Subject: [PULL v2 13/15] tcg/loongarch64: Implement movcond Date: Mon, 23 Jan 2023 16:05:05 -1000 Message-Id: <20230124020507.3732200-14-richard.henderson@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230124020507.3732200-1-richard.henderson@linaro.org> References: <20230124020507.3732200-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer2=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::102f; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x102f.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer2=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer2=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1674526030933100003 Content-Type: text/plain; charset="utf-8" Reviewed-by: WANG Xuerui Signed-off-by: Richard Henderson --- tcg/loongarch64/tcg-target-con-set.h | 1 + tcg/loongarch64/tcg-target.h | 4 ++-- tcg/loongarch64/tcg-target.c.inc | 33 ++++++++++++++++++++++++++++ 3 files changed, 36 insertions(+), 2 deletions(-) diff --git a/tcg/loongarch64/tcg-target-con-set.h b/tcg/loongarch64/tcg-tar= get-con-set.h index 7b5a7a3f5d..172c107289 100644 --- a/tcg/loongarch64/tcg-target-con-set.h +++ b/tcg/loongarch64/tcg-target-con-set.h @@ -31,3 +31,4 @@ C_O1_I2(r, 0, rZ) C_O1_I2(r, rZ, ri) C_O1_I2(r, rZ, rJ) C_O1_I2(r, rZ, rZ) +C_O1_I4(r, rZ, rJ, rZ, rZ) diff --git a/tcg/loongarch64/tcg-target.h b/tcg/loongarch64/tcg-target.h index 1c3e48d662..533a539ce9 100644 --- a/tcg/loongarch64/tcg-target.h +++ b/tcg/loongarch64/tcg-target.h @@ -97,7 +97,7 @@ typedef enum { #define TCG_TARGET_CALL_ARG_I64 TCG_CALL_ARG_NORMAL =20 /* optional instructions */ -#define TCG_TARGET_HAS_movcond_i32 0 +#define TCG_TARGET_HAS_movcond_i32 1 #define TCG_TARGET_HAS_div_i32 1 #define TCG_TARGET_HAS_rem_i32 1 #define TCG_TARGET_HAS_div2_i32 0 @@ -133,7 +133,7 @@ typedef enum { #define TCG_TARGET_HAS_qemu_st8_i32 0 =20 /* 64-bit operations */ -#define TCG_TARGET_HAS_movcond_i64 0 +#define TCG_TARGET_HAS_movcond_i64 1 #define TCG_TARGET_HAS_div_i64 1 #define TCG_TARGET_HAS_rem_i64 1 #define TCG_TARGET_HAS_div2_i64 0 diff --git a/tcg/loongarch64/tcg-target.c.inc b/tcg/loongarch64/tcg-target.= c.inc index ccc1c0f392..29d75c80eb 100644 --- a/tcg/loongarch64/tcg-target.c.inc +++ b/tcg/loongarch64/tcg-target.c.inc @@ -596,6 +596,30 @@ static void tcg_out_setcond(TCGContext *s, TCGCond con= d, TCGReg ret, } } =20 +static void tcg_out_movcond(TCGContext *s, TCGCond cond, TCGReg ret, + TCGReg c1, tcg_target_long c2, bool const2, + TCGReg v1, TCGReg v2) +{ + int tmpflags =3D tcg_out_setcond_int(s, cond, TCG_REG_TMP0, c1, c2, co= nst2); + TCGReg t; + + /* Standardize the test below to t !=3D 0. */ + if (tmpflags & SETCOND_INV) { + t =3D v1, v1 =3D v2, v2 =3D t; + } + + t =3D tmpflags & ~SETCOND_FLAGS; + if (v1 =3D=3D TCG_REG_ZERO) { + tcg_out_opc_masknez(s, ret, v2, t); + } else if (v2 =3D=3D TCG_REG_ZERO) { + tcg_out_opc_maskeqz(s, ret, v1, t); + } else { + tcg_out_opc_masknez(s, TCG_REG_TMP2, v2, t); /* t ? 0 : v2 */ + tcg_out_opc_maskeqz(s, TCG_REG_TMP1, v1, t); /* t ? v1 : 0 */ + tcg_out_opc_or(s, ret, TCG_REG_TMP1, TCG_REG_TMP2); + } +} + /* * Branch helpers */ @@ -1538,6 +1562,11 @@ static void tcg_out_op(TCGContext *s, TCGOpcode opc, tcg_out_setcond(s, args[3], a0, a1, a2, c2); break; =20 + case INDEX_op_movcond_i32: + case INDEX_op_movcond_i64: + tcg_out_movcond(s, args[5], a0, a1, a2, c2, args[3], args[4]); + break; + case INDEX_op_ld8s_i32: case INDEX_op_ld8s_i64: tcg_out_ldst(s, OPC_LD_B, a0, a1, a2); @@ -1741,6 +1770,10 @@ static TCGConstraintSetIndex tcg_target_op_def(TCGOp= code op) case INDEX_op_remu_i64: return C_O1_I2(r, rZ, rZ); =20 + case INDEX_op_movcond_i32: + case INDEX_op_movcond_i64: + return C_O1_I4(r, rZ, rJ, rZ, rZ); + default: g_assert_not_reached(); } --=20 2.34.1 From nobody Fri Apr 26 19:55:23 2024 Delivered-To: importer2@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1674526024; cv=none; d=zohomail.com; s=zohoarc; b=bpjPGboq1rFH2OcyRHbuM3aF6OEOLQwDHldRUHtWSiue12UIMMuQgm3tqMC9wUzvE5Ic6vwZK/yIFXeA7pntZRkxjoT+Ou2sj8kD/RXPWY4CdeD0SGaW5UqQqmyrQhzM+97zSlLG/v/QBAX0vjeNU7iR+0ZlEF+zz+J5tgwXcsw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1674526024; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=OQh7lC/BpzZeduC7Wz+UgP0x9EJv+51vLIbuSepWr2I=; b=YQdwllPpiL5WmzPCex3FDADM2XyYYkFBqzx6ATF4J/3fxZZeEketkFO/spMlFbxxfuV/TZwBWulUpL/jwYTiS6JKALWdq3EWYxyJ1ePhpFHcq7YL7rVZ/hDUJxRFRg0peucvJK62K87YVdyVSIVj/e2M0DMaaNFSLRsZAjF6eT0= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1674526024832712.2503385746244; Mon, 23 Jan 2023 18:07:04 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1pK8gs-0008UM-7Z; Mon, 23 Jan 2023 21:05:38 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pK8gq-0008TD-F7 for qemu-devel@nongnu.org; Mon, 23 Jan 2023 21:05:36 -0500 Received: from mail-pl1-x62c.google.com ([2607:f8b0:4864:20::62c]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1pK8go-0003ve-QD for qemu-devel@nongnu.org; Mon, 23 Jan 2023 21:05:36 -0500 Received: by mail-pl1-x62c.google.com with SMTP id k18so13340827pll.5 for ; Mon, 23 Jan 2023 18:05:34 -0800 (PST) Received: from stoup.. (rrcs-173-198-77-218.west.biz.rr.com. [173.198.77.218]) by smtp.gmail.com with ESMTPSA id fh3-20020a17090b034300b00228e56d375asm283936pjb.33.2023.01.23.18.05.32 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 23 Jan 2023 18:05:33 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=OQh7lC/BpzZeduC7Wz+UgP0x9EJv+51vLIbuSepWr2I=; b=kBtJ2ItpRJJkRUDywV4tlsaWLuP/huDEXcMyXzz5+CsbyeqdAt/k9vPpYGn2uvC+36 41U6SmGVnCVQ/qsG+btcAeHYn+U+7o+nFCIeViLrUGXOer2OaM82hVHFPkFc4jKq8jNB DvHe3aDR/yl4rOtVi8fKUE26ba1Dniej0kqTIfNXJkcO66rabogZY9P8NNpmEVMK+Hzb xQWiMTBWQcNQ7+3j5L8SFvWJVDzqFma34ZmAIpET7xGvRGjnJA8OVvZdip9048Z2BigK 9RM3AydG5tmA8RRDozHakig3P9NmZLM9kPEAR9kdoY631HAEbPtAjgThJTB2I4Ve/v77 RDaQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=OQh7lC/BpzZeduC7Wz+UgP0x9EJv+51vLIbuSepWr2I=; b=PfPvOS1SINYlV9d6W3BBnMJNtPDC2EDDjNYvR1w/FcPBdwdnBQm3B2LgVyFCAwMDge D3q2wRSuvMnglWWEffyi7sA19/y/MZpbP+s3i2e9dWBL5HANGpXmUW1Ax2srwdfpIOJ8 80yrujn7xHBlZH13BtfM409vTrVV48kyrF2c5+gUZ9r4YzVDa7biV5y0tlYc8J4umqbm niRQOc7sLR4L1jZxUR4eiwoVjhMeFaO2LcmAleCy6XidcT6OEwJKqn6gFW5unIgp0bxb +Zf93NvKh0HwrgPqH7PGduAOCSBOxil01DzwENiSIRs0he6Da98e57Tjwn6jeyVrQDcZ sLug== X-Gm-Message-State: AO0yUKWFAsyn8+O5T8bXgz2camkKTQLZYdUuC9SvugsZKZH0nZ+wxWLt hvdSQ++vWMnAcLxl7TvNOBlvO3LV/7Qh0+98 X-Google-Smtp-Source: AK7set8GPsV8j2zfbTkNUd6z+3/lQsuBpZYzaQw/WaVDWibL9SUUl0fnOM5mrU5jZOBF/ZlrhgA+9A== X-Received: by 2002:a17:90a:46:b0:22b:ecbc:8113 with SMTP id 6-20020a17090a004600b0022becbc8113mr863864pjb.12.1674525934072; Mon, 23 Jan 2023 18:05:34 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Cc: peter.maydell@linaro.org, WANG Xuerui , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Subject: [PULL v2 14/15] tcg/loongarch64: Use tcg_pcrel_diff in tcg_out_ldst Date: Mon, 23 Jan 2023 16:05:06 -1000 Message-Id: <20230124020507.3732200-15-richard.henderson@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230124020507.3732200-1-richard.henderson@linaro.org> References: <20230124020507.3732200-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer2=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::62c; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x62c.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer2=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer2=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1674526026912100001 Take the w^x split into account when computing the pc-relative distance to an absolute pointer. Reviewed-by: WANG Xuerui Reviewed-by: Philippe Mathieu-Daud=C3=A9 Signed-off-by: Richard Henderson --- tcg/loongarch64/tcg-target.c.inc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tcg/loongarch64/tcg-target.c.inc b/tcg/loongarch64/tcg-target.= c.inc index 29d75c80eb..d6926bdb83 100644 --- a/tcg/loongarch64/tcg-target.c.inc +++ b/tcg/loongarch64/tcg-target.c.inc @@ -702,7 +702,7 @@ static void tcg_out_ldst(TCGContext *s, LoongArchInsn o= pc, TCGReg data, intptr_t imm12 =3D sextreg(offset, 0, 12); =20 if (offset !=3D imm12) { - intptr_t diff =3D offset - (uintptr_t)s->code_ptr; + intptr_t diff =3D tcg_pcrel_diff(s, (void *)offset); =20 if (addr =3D=3D TCG_REG_ZERO && diff =3D=3D (int32_t)diff) { imm12 =3D sextreg(diff, 0, 12); --=20 2.34.1 From nobody Fri Apr 26 19:55:23 2024 Delivered-To: importer2@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1674526049; cv=none; d=zohomail.com; s=zohoarc; b=HR945ymaMiKNootyNwsAZg922Tyqab9vs90F3Kah+qYWv34b3Ym9j5RyAM3Kie4pP2Bap3tDCsD5fyGQwoUfI8YPyC4MsFyw+/HrR83QfkirIHEVg4sgAz3iyIkg4g+dndDPIIFGtferDHuIKmWZGn5zqApxT1nEb5DazAlX+Zs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1674526049; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=ycDNlyVkOyKHrJ0BvJFSbfLZ/ORnpZWUbp0ZNx4qwK8=; b=nKOc20/Py/5R0RzuUfObP5y8lLqZmD/VZdvEHgxPUVsma+++33i8wxqx9oaGfR+DX1Lkiwj6TVqlDHMKV/hn2ZKe4T8UJ07zk3nhsTKBEn/l1d+PrJEfKWVvIacqhM3oZmzytinJ7mgMAOPFFy0vruBQ20ejd4bjuX/IW1kpLKA= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1674526049728980.2812320744695; Mon, 23 Jan 2023 18:07:29 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1pK8gu-0008Uz-BY; Mon, 23 Jan 2023 21:05:40 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pK8gt-0008Ul-1y for qemu-devel@nongnu.org; Mon, 23 Jan 2023 21:05:39 -0500 Received: from mail-pl1-x631.google.com ([2607:f8b0:4864:20::631]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1pK8gr-0003wy-2q for qemu-devel@nongnu.org; Mon, 23 Jan 2023 21:05:38 -0500 Received: by mail-pl1-x631.google.com with SMTP id d9so13321597pll.9 for ; Mon, 23 Jan 2023 18:05:36 -0800 (PST) Received: from stoup.. (rrcs-173-198-77-218.west.biz.rr.com. [173.198.77.218]) by smtp.gmail.com with ESMTPSA id fh3-20020a17090b034300b00228e56d375asm283936pjb.33.2023.01.23.18.05.34 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 23 Jan 2023 18:05:35 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=ycDNlyVkOyKHrJ0BvJFSbfLZ/ORnpZWUbp0ZNx4qwK8=; b=LszmwAgudm48hcLgSYcJpz7A33tcAl5nPldTXFiViCe+NWJzAkh+/c6rUNf5EHqaWN DMYWwNB3JEabgeUsdCVNtFjhiZ4M3UWH1kO4TsWhAjDoV8fqrQ/LBEM6KB5UV8GUdCTQ VoFZ29H/yPSljnHdv0R/VjcTSfoR8AAnjd4DlWWQMIeavt+5PqY369r2v7lLAbDKEDvK 2ZNNSBEYqsHH8+4J/YoiCXf0qU1n4bTuRWWDZayc6jHnUAO+YK1Cgq6cUSuJ5Qj1heKM 1AdBCp+ZXBSooboXBRta3njcY7qhLosmVDz51Te7yeqnDrgFsxph+m/GarmWLK45rqgV v3wA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=ycDNlyVkOyKHrJ0BvJFSbfLZ/ORnpZWUbp0ZNx4qwK8=; b=16rYVja+IrhewfeVQOAzuUaq+isSIWLYak6Ld2zyiQhSlHhw9V4eEAY5Zg83F2Ao7m PTSVaftHs/U9paoeSQjRAA2ko9SWgQ4bcOOuiFLIAMcEaESk/FSewF5HKYkVCm2QB5ad NT1MOa4uGAzrKcpaFfJOcCyv/rQW5iKh/04rZ6nsZTgR2VFOMXk2xuQ1n0HUnwNPNNVX rfyen3n8sTCCZsnHgPJdRw/48LErXHGjW2YN8l/qWwOKxYDm8fJaNNfFdvdd4q+Ty7dI VBJVEybJ1rixbjMjfkw4pmGVdD8ftubh3JqOOSyOE74r54Bx/JG9zA+Oj1U8yqkcVfGg LvcQ== X-Gm-Message-State: AFqh2kqk3PONzkPQN/aLjRzu8964OQTED6F8Sw3c8He9hPCR0cexcGPn 6NHccf/DGl+BSRPMMFpChgEUEF7NjCU+AQNB X-Google-Smtp-Source: AMrXdXtxmHbbvVsvzMHV42gf4MXH5ywSNc+NQmAqCXcfBahuleooupktloqWn8+UsMMmfwrdKvWzzQ== X-Received: by 2002:a17:90a:5410:b0:226:de98:ee43 with SMTP id z16-20020a17090a541000b00226de98ee43mr27372046pjh.43.1674525935562; Mon, 23 Jan 2023 18:05:35 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Cc: peter.maydell@linaro.org, WANG Xuerui Subject: [PULL v2 15/15] tcg/loongarch64: Reorg goto_tb implementation Date: Mon, 23 Jan 2023 16:05:07 -1000 Message-Id: <20230124020507.3732200-16-richard.henderson@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230124020507.3732200-1-richard.henderson@linaro.org> References: <20230124020507.3732200-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer2=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::631; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x631.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer2=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer2=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1674526051105100003 Content-Type: text/plain; charset="utf-8" The old implementation replaces two insns, swapping between b nop and pcaddu18i tmp, jirl zero, tmp, & 0xffff There is a race condition in which a thread could be stopped at the jirl, i.e. with the top of the address loaded, and when restarted we have re-linked to a different TB, so that the top half no longer matches the bottom half. Note that while we never directly re-link to a different TB, we can link, unlink, and link again all while the stopped thread remains stopped. The new implementation replaces only one insn, swapping between b and pcadd tmp, falling through to load the address from tmp, and branch. Reviewed-by: WANG Xuerui Signed-off-by: Richard Henderson --- tcg/loongarch64/tcg-target.h | 7 +--- tcg/loongarch64/tcg-target.c.inc | 72 ++++++++++++++------------------ 2 files changed, 33 insertions(+), 46 deletions(-) diff --git a/tcg/loongarch64/tcg-target.h b/tcg/loongarch64/tcg-target.h index 533a539ce9..8b151e7f6f 100644 --- a/tcg/loongarch64/tcg-target.h +++ b/tcg/loongarch64/tcg-target.h @@ -42,11 +42,8 @@ =20 #define TCG_TARGET_INSN_UNIT_SIZE 4 #define TCG_TARGET_NB_REGS 32 -/* - * PCADDU18I + JIRL sequence can give 20 + 16 + 2 =3D 38 bits - * signed offset, which is +/- 128 GiB. - */ -#define MAX_CODE_GEN_BUFFER_SIZE (128 * GiB) + +#define MAX_CODE_GEN_BUFFER_SIZE ((size_t)-1) =20 typedef enum { TCG_REG_ZERO, diff --git a/tcg/loongarch64/tcg-target.c.inc b/tcg/loongarch64/tcg-target.= c.inc index d6926bdb83..ce4a153887 100644 --- a/tcg/loongarch64/tcg-target.c.inc +++ b/tcg/loongarch64/tcg-target.c.inc @@ -1151,37 +1151,6 @@ static void tcg_out_qemu_st(TCGContext *s, const TCG= Arg *args) #endif } =20 -/* LoongArch uses `andi zero, zero, 0` as NOP. */ -#define NOP OPC_ANDI -static void tcg_out_nop(TCGContext *s) -{ - tcg_out32(s, NOP); -} - -void tb_target_set_jmp_target(const TranslationBlock *tb, int n, - uintptr_t jmp_rx, uintptr_t jmp_rw) -{ - tcg_insn_unit i1, i2; - ptrdiff_t upper, lower; - uintptr_t addr =3D tb->jmp_target_addr[n]; - ptrdiff_t offset =3D (ptrdiff_t)(addr - jmp_rx) >> 2; - - if (offset =3D=3D sextreg(offset, 0, 26)) { - i1 =3D encode_sd10k16_insn(OPC_B, offset); - i2 =3D NOP; - } else { - tcg_debug_assert(offset =3D=3D sextreg(offset, 0, 36)); - lower =3D (int16_t)offset; - upper =3D (offset - lower) >> 16; - - i1 =3D encode_dsj20_insn(OPC_PCADDU18I, TCG_REG_TMP0, upper); - i2 =3D encode_djsk16_insn(OPC_JIRL, TCG_REG_ZERO, TCG_REG_TMP0, lo= wer); - } - uint64_t pair =3D ((uint64_t)i2 << 32) | i1; - qatomic_set((uint64_t *)jmp_rw, pair); - flush_idcache_range(jmp_rx, jmp_rw, 8); -} - /* * Entry-points */ @@ -1202,22 +1171,43 @@ static void tcg_out_exit_tb(TCGContext *s, uintptr_= t a0) static void tcg_out_goto_tb(TCGContext *s, int which) { /* - * Ensure that patch area is 8-byte aligned so that an - * atomic write can be used to patch the target address. + * Direct branch, or load indirect address, to be patched + * by tb_target_set_jmp_target. Check indirect load offset + * in range early, regardless of direct branch distance, + * via assert within tcg_out_opc_pcaddu2i. */ - if ((uintptr_t)s->code_ptr & 7) { - tcg_out_nop(s); - } + uintptr_t i_addr =3D get_jmp_target_addr(s, which); + intptr_t i_disp =3D tcg_pcrel_diff(s, (void *)i_addr); + set_jmp_insn_offset(s, which); - /* - * actual branch destination will be patched by - * tb_target_set_jmp_target later - */ - tcg_out_opc_pcaddu18i(s, TCG_REG_TMP0, 0); + tcg_out_opc_pcaddu2i(s, TCG_REG_TMP0, i_disp >> 2); + + /* Finish the load and indirect branch. */ + tcg_out_ld(s, TCG_TYPE_PTR, TCG_REG_TMP0, TCG_REG_TMP0, 0); tcg_out_opc_jirl(s, TCG_REG_ZERO, TCG_REG_TMP0, 0); set_jmp_reset_offset(s, which); } =20 +void tb_target_set_jmp_target(const TranslationBlock *tb, int n, + uintptr_t jmp_rx, uintptr_t jmp_rw) +{ + uintptr_t d_addr =3D tb->jmp_target_addr[n]; + ptrdiff_t d_disp =3D (ptrdiff_t)(d_addr - jmp_rx) >> 2; + tcg_insn_unit insn; + + /* Either directly branch, or load slot address for indirect branch. */ + if (d_disp =3D=3D sextreg(d_disp, 0, 26)) { + insn =3D encode_sd10k16_insn(OPC_B, d_disp); + } else { + uintptr_t i_addr =3D (uintptr_t)&tb->jmp_target_addr[n]; + intptr_t i_disp =3D i_addr - jmp_rx; + insn =3D encode_dsj20_insn(OPC_PCADDU2I, TCG_REG_TMP0, i_disp >> 2= ); + } + + qatomic_set((tcg_insn_unit *)jmp_rw, insn); + flush_idcache_range(jmp_rx, jmp_rw, 4); +} + static void tcg_out_op(TCGContext *s, TCGOpcode opc, const TCGArg args[TCG_MAX_OP_ARGS], const int const_args[TCG_MAX_OP_ARGS]) --=20 2.34.1