From nobody Sat May 18 22:31:29 2024 Delivered-To: importer@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+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1712598692; cv=none; d=zohomail.com; s=zohoarc; b=fmq7DP7TbZ1OeGHIS1uJcT1IuGJqKbnl6pu2GzO34QL9gWI/O9ZTuLOz/8DvHUCFhTud3oVAgEa5eu4lsHA3wVdeMdj/pCzgkQiaTEvKZLeFJFp7LILNtj4szOwflpYMtlrodCugYOK7oEYdKl87vGxRRNbg7ehK4vo/1U7123w= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1712598692; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=0/ekaTyyBHEzg2gMKpvUq/mv6Nl9iOhi1rhUNF8qDbI=; b=MC46+QTrdRtQ7Bxj+Cg7kJsLcRg7EO8qrBw3M3mj9IU9lAsDxx9Gfdejr/ROH73YaCc3cC5/icTrXUhKejY8gN7ka/O3Y/7BBO2qwcPIqxsw/6zg8l6LCPXs7c+2EPphuX5WK4gkhaJwcjU7p55K75DWaGfeiTWRONAmaKnYziE= 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+importer=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 1712598692484618.4402073582635; Mon, 8 Apr 2024 10:51:32 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1rtt7s-0001wg-Rw; Mon, 08 Apr 2024 13:49:48 -0400 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 1rtt7h-0001ul-76 for qemu-devel@nongnu.org; Mon, 08 Apr 2024 13:49:40 -0400 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 1rtt7f-0003bn-Dx for qemu-devel@nongnu.org; Mon, 08 Apr 2024 13:49:36 -0400 Received: by mail-pl1-x634.google.com with SMTP id d9443c01a7336-1e220e40998so29321915ad.1 for ; Mon, 08 Apr 2024 10:49:34 -0700 (PDT) Received: from stoup.. (098-147-007-212.res.spectrum.com. [98.147.7.212]) by smtp.gmail.com with ESMTPSA id ga15-20020a17090b038f00b0029c3bac0aa8sm8658432pjb.4.2024.04.08.10.49.32 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 08 Apr 2024 10:49:33 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1712598573; x=1713203373; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=0/ekaTyyBHEzg2gMKpvUq/mv6Nl9iOhi1rhUNF8qDbI=; b=gBEHHWvOjX7A9VAUnmZqB23LvPYbMLCt5OljiU6zTGX+K+S3ASCbcaTPcM61Fp8scO p027DoYEinrv5uji2DMLWuhYQfMPezG9zjzRRiSTXAr3S0t/SzXtuyS248Maicoa7tEZ 1HgTuE5yaGSBVHLHpxQeMuS5xBH62un3MZ/sMm65a3HfFpLwKnXBvCjtrdSlSguAp7pM 7idokF/QRPXQqny3e/W2m+Xhhi04fItMcJhKrryQollo8tJRqW3TkVzC32zd4bip2KKU i7yCWjrWjQ1wDc7GlMMMXRxU+mC+9dTX7MQBFHYz0BopBMnCT4wSZEr6kVPI3tyKM/1a riMw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1712598573; x=1713203373; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=0/ekaTyyBHEzg2gMKpvUq/mv6Nl9iOhi1rhUNF8qDbI=; b=Ivun58P9Io11U7fDFH3HFlXKFFfVIg8zqUCRk3jRvoD9toWYH1j4tthK8UYRY5NTA6 3Nu82aOd0CA7FbQljG4PNqDHivx7NVow3rgrhnPW1b8EARf5PJLHixQqTbHhyv7n3JLj 9kHF8PJPSsRfb0fWXJMCsNCzaTVAwGxX9NCxc/axkvetCn4w2aJ6+gbV3HyMVay9lEyP DivYP8JxCI+IfDVuaCZbkKpHlqyAVd03OdRxCZLFQ6ibYPNIBmEcogCSBpbAdD/8ZlQ8 TPrCi4cYwvpv7BvOd7US8TCWsefV1Kzk0hPeLkBJjMaVRoqc+jak7mFBbJyog432upM7 npnw== X-Gm-Message-State: AOJu0Yzr1P/GuTiNSsWX6rDzcSVCp7O6GH6Q2A6zufInNRypKUoiyf7X 4qyxJthgx50oEuF+8L5t8vwP3KE84HSMFF807CK4dWETe3mteu5N7rP0Bfd3JuVMRCDbyj7R028 p X-Google-Smtp-Source: AGHT+IEHQA1cc/e09UMY+MskAlVxa1XokC37kYkGqT7ye7GOU2/DMJeoq/Jncj39q2qBxuC23vmw7A== X-Received: by 2002:a17:90a:e00b:b0:2a2:d16a:8df3 with SMTP id u11-20020a17090ae00b00b002a2d16a8df3mr7855106pjy.40.1712598573515; Mon, 08 Apr 2024 10:49:33 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PULL 01/35] tcg/optimize: Do not attempt to constant fold neg_vec Date: Mon, 8 Apr 2024 07:48:55 -1000 Message-Id: <20240408174929.862917-2-richard.henderson@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20240408174929.862917-1-richard.henderson@linaro.org> References: <20240408174929.862917-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+importer=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+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1712598694149100002 Content-Type: text/plain; charset="utf-8" Split out the tail of fold_neg to fold_neg_no_const so that we can avoid attempting to constant fold vector negate. Resolves: https://gitlab.com/qemu-project/qemu/-/issues/2150 Signed-off-by: Richard Henderson --- tcg/optimize.c | 17 ++++++++--------- tests/tcg/aarch64/test-2150.c | 12 ++++++++++++ tests/tcg/aarch64/Makefile.target | 2 +- 3 files changed, 21 insertions(+), 10 deletions(-) create mode 100644 tests/tcg/aarch64/test-2150.c diff --git a/tcg/optimize.c b/tcg/optimize.c index 275db77b42..2e9e5725a9 100644 --- a/tcg/optimize.c +++ b/tcg/optimize.c @@ -1990,16 +1990,10 @@ static bool fold_nand(OptContext *ctx, TCGOp *op) return false; } =20 -static bool fold_neg(OptContext *ctx, TCGOp *op) +static bool fold_neg_no_const(OptContext *ctx, TCGOp *op) { - uint64_t z_mask; - - if (fold_const1(ctx, op)) { - return true; - } - /* Set to 1 all bits to the left of the rightmost. */ - z_mask =3D arg_info(op->args[1])->z_mask; + uint64_t z_mask =3D arg_info(op->args[1])->z_mask; ctx->z_mask =3D -(z_mask & -z_mask); =20 /* @@ -2010,6 +2004,11 @@ static bool fold_neg(OptContext *ctx, TCGOp *op) return true; } =20 +static bool fold_neg(OptContext *ctx, TCGOp *op) +{ + return fold_const1(ctx, op) || fold_neg_no_const(ctx, op); +} + static bool fold_nor(OptContext *ctx, TCGOp *op) { if (fold_const2_commutative(ctx, op) || @@ -2418,7 +2417,7 @@ static bool fold_sub_to_neg(OptContext *ctx, TCGOp *o= p) if (have_neg) { op->opc =3D neg_op; op->args[1] =3D op->args[2]; - return fold_neg(ctx, op); + return fold_neg_no_const(ctx, op); } return false; } diff --git a/tests/tcg/aarch64/test-2150.c b/tests/tcg/aarch64/test-2150.c new file mode 100644 index 0000000000..fb86c11958 --- /dev/null +++ b/tests/tcg/aarch64/test-2150.c @@ -0,0 +1,12 @@ +/* SPDX-License-Identifier: GPL-2.0-or-later */ +/* See https://gitlab.com/qemu-project/qemu/-/issues/2150 */ + +int main() +{ + asm volatile( + "movi v6.4s, #1\n" + "movi v7.4s, #0\n" + "sub v6.2d, v7.2d, v6.2d\n" + : : : "v6", "v7"); + return 0; +} diff --git a/tests/tcg/aarch64/Makefile.target b/tests/tcg/aarch64/Makefile= .target index 0efd565f05..70d728ae9a 100644 --- a/tests/tcg/aarch64/Makefile.target +++ b/tests/tcg/aarch64/Makefile.target @@ -10,7 +10,7 @@ VPATH +=3D $(AARCH64_SRC) =20 # Base architecture tests AARCH64_TESTS=3Dfcvt pcalign-a64 lse2-fault -AARCH64_TESTS +=3D test-2248 +AARCH64_TESTS +=3D test-2248 test-2150 =20 fcvt: LDFLAGS+=3D-lm =20 --=20 2.34.1 From nobody Sat May 18 22:31:29 2024 Delivered-To: importer@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+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1712598712; cv=none; d=zohomail.com; s=zohoarc; b=Kt2sujp3+9FjhBksApYz9jDd+7/nAR/XEFfALwczbUTdvvY+CRIyz0eTgJWaDLC4eCO/m8loToLMantbLYvgbEyZ1/45GdpBYMPgr2o1N4czi+8i62AOfqesP5hUzZV+4SA/M0hPelPCNF1INqIGuTvKCFEGedMlC58M+MPAKIw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1712598712; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=xtbJ/p7JEFHTppWK8T4w7KJEZi+x0bHxbuO/ApHynWI=; b=YT+CGEM6Z+O/kYDBZEzyhaZA8xlOMbRIC1PzkSSMXSoRJ1sEM9ca4yIj4mk8fhXZ3rOicN3nsxjwHmQ0v6XeYptST0+IV/+Syvw2I7jDJHosIerqTPPsUN5gvjBbq/fzIdmHELjb2JNV4jgmMMp2lbvJEDYrV2U298PaysN2hWQ= 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+importer=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 1712598712899912.0758047147149; Mon, 8 Apr 2024 10:51:52 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1rtt7t-0001xI-LQ; Mon, 08 Apr 2024 13:49:49 -0400 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 1rtt7k-0001v3-Pk for qemu-devel@nongnu.org; Mon, 08 Apr 2024 13:49:45 -0400 Received: from mail-pg1-x52f.google.com ([2607:f8b0:4864:20::52f]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1rtt7g-0003bs-6s for qemu-devel@nongnu.org; Mon, 08 Apr 2024 13:49:38 -0400 Received: by mail-pg1-x52f.google.com with SMTP id 41be03b00d2f7-53fa455cd94so3615622a12.2 for ; Mon, 08 Apr 2024 10:49:35 -0700 (PDT) Received: from stoup.. (098-147-007-212.res.spectrum.com. [98.147.7.212]) by smtp.gmail.com with ESMTPSA id ga15-20020a17090b038f00b0029c3bac0aa8sm8658432pjb.4.2024.04.08.10.49.33 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 08 Apr 2024 10:49:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1712598575; x=1713203375; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=xtbJ/p7JEFHTppWK8T4w7KJEZi+x0bHxbuO/ApHynWI=; b=zZ6zZYb2Er4ofVDVLCqamUJHoZhEB1rOi5Gj/nvgfpMXZlT1rnozsXnQhoBJKr6lqc dl2PF/6O4S7TgrqBIXJTyQpXid792IkJkR9n/BjmUcXB54A5h/srCs5VxXkWmyrEo/w/ r1wcNd7YTNug8fm3aNaPgey9XA9cZO5LFLz5VMAaxWWmCnxrbXfKKpoBnzroz9peYF+l etSnzOcbAoXUtX0eD+jLHOz6hRk+iJtK6N0a46+VuK5vav8bYP0GdQrZjXD92P7B2Tkh OjU2CMugtj6Y7pW1kXs4VYQjVJHA0htjuiqP6zT+JEF61hBl0T/tA4Rt3ulNEdZCPe82 WOQw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1712598575; x=1713203375; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=xtbJ/p7JEFHTppWK8T4w7KJEZi+x0bHxbuO/ApHynWI=; b=vtm+QEkZgBORIaacvtpYCL6LZ+Vh7vvAEHIehwlq/CGaiCNvIza99R4Kr2jknSGHTx NvbuJB6NwPUqtUxf1/nDbMsvLuG4AKdGQU7HDN+MCVxtk18AhGBLIHrggZb2mK80+Km/ YBGAHMNXX/R3zZf9CHcQjhXFlJFpiE6NBbAc+In5KQyMElpsAiajz/tni4I/YpumpT2l Mu86Aa/zrobm2wT7YoS/Hn6C3MubrbxvbL+iLNGwtq38dMaJeH4nIGP8czsmbn1/X5o0 mhypxpNIe9RO8g2RZNrqGRTpl2Ra+CxI3XepbkUsHtH2dwuSYp2G+ACv2foYiMe965HB yjOg== X-Gm-Message-State: AOJu0YzeRy7eHnKGxx2i9vzG7ORjd40Eldr+lE8hnO2DnAfBy56Vsbd3 sgDKegV21SBIu7pMDb82Vr5psDoAkLceREUGIM0p7g7DvOR68d+Lk6I/FtYmBU8WVuQAZLbLks/ K X-Google-Smtp-Source: AGHT+IGHicWknxCBzPhfCPBG8RpqA30tSZsp7vVMT9Dm1ESyfMUt9EdPgxBRVs8UntkxrLurT43XuA== X-Received: by 2002:a05:6a20:100d:b0:1a3:c3e0:51bc with SMTP id gs13-20020a056a20100d00b001a3c3e051bcmr7070227pzc.56.1712598574779; Mon, 08 Apr 2024 10:49:34 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PULL 02/35] linux-user: Fix waitid return of siginfo_t and rusage Date: Mon, 8 Apr 2024 07:48:56 -1000 Message-Id: <20240408174929.862917-3-richard.henderson@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20240408174929.862917-1-richard.henderson@linaro.org> References: <20240408174929.862917-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+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::52f; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x52f.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+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1712598714230100005 Content-Type: text/plain; charset="utf-8" The copy back to siginfo_t should be conditional only on arg3, not the specific values that might have been written. The copy back to rusage was missing entirely. Resolves: https://gitlab.com/qemu-project/qemu/-/issues/2262 Signed-off-by: Richard Henderson --- linux-user/syscall.c | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/linux-user/syscall.c b/linux-user/syscall.c index e12d969c2e..3df2b94d9a 100644 --- a/linux-user/syscall.c +++ b/linux-user/syscall.c @@ -9272,14 +9272,24 @@ static abi_long do_syscall1(CPUArchState *cpu_env, = int num, abi_long arg1, #ifdef TARGET_NR_waitid case TARGET_NR_waitid: { + struct rusage ru; siginfo_t info; - info.si_pid =3D 0; - ret =3D get_errno(safe_waitid(arg1, arg2, &info, arg4, NULL)); - if (!is_error(ret) && arg3 && info.si_pid !=3D 0) { - if (!(p =3D lock_user(VERIFY_WRITE, arg3, sizeof(target_si= ginfo_t), 0))) + + ret =3D get_errno(safe_waitid(arg1, arg2, (arg3 ? &info : NULL= ), + arg4, (arg5 ? &ru : NULL))); + if (!is_error(ret)) { + if (arg3) { + p =3D lock_user(VERIFY_WRITE, arg3, + sizeof(target_siginfo_t), 0); + if (!p) { + return -TARGET_EFAULT; + } + host_to_target_siginfo(p, &info); + unlock_user(p, arg3, sizeof(target_siginfo_t)); + } + if (arg5 && host_to_target_rusage(arg5, &ru)) { return -TARGET_EFAULT; - host_to_target_siginfo(p, &info); - unlock_user(p, arg3, sizeof(target_siginfo_t)); + } } } return ret; --=20 2.34.1 From nobody Sat May 18 22:31:29 2024 Delivered-To: importer@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+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1712599126; cv=none; d=zohomail.com; s=zohoarc; b=ng+YO3HGkQZrxLEis1OlF2R1bU+Q792dBZG+NR1MLN1UOFush0RVLSsMkPYLVsi8LrBU58xAlmzfYAmrCQr06/LTKKGDQOiSu/VhR7bRi5U665MLuWrYlHVNmZFtxJk6zWbXyxbqQ5N0QUQfIAUAt8yAPkdbDuL5DwZg5u+c9lk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1712599126; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=eljbs2yNGMGPnWHJwv7NSq5kkRuO1URzZsDZcIZtS6U=; b=UUcyQtaXqnEKtdW/J3m8/cVvquNUxWMIA6XtjBAbo276pxIMhRQquPSJsvBsewVa0jlhsKs9Ybpw+VTY6cWWuhMr80kO53bGp7ZmWCAaFABSDgCek3/gBn9f4sZ9cV8by1OXUNOnmHyJTGnO9RdIjtXz8FaFaSvgQmT8So8VItI= 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+importer=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 1712599126603654.4417748672738; Mon, 8 Apr 2024 10:58:46 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1rtt7u-0001yS-Ko; Mon, 08 Apr 2024 13:49:50 -0400 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 1rtt7k-0001v4-Q0 for qemu-devel@nongnu.org; Mon, 08 Apr 2024 13:49:47 -0400 Received: from mail-pf1-x436.google.com ([2607:f8b0:4864:20::436]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1rtt7h-0003c1-Po for qemu-devel@nongnu.org; Mon, 08 Apr 2024 13:49:40 -0400 Received: by mail-pf1-x436.google.com with SMTP id d2e1a72fcca58-6eaf1005fcaso3230123b3a.3 for ; Mon, 08 Apr 2024 10:49:37 -0700 (PDT) Received: from stoup.. (098-147-007-212.res.spectrum.com. [98.147.7.212]) by smtp.gmail.com with ESMTPSA id ga15-20020a17090b038f00b0029c3bac0aa8sm8658432pjb.4.2024.04.08.10.49.35 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 08 Apr 2024 10:49:35 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1712598576; x=1713203376; darn=nongnu.org; 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=eljbs2yNGMGPnWHJwv7NSq5kkRuO1URzZsDZcIZtS6U=; b=M8XoFFgl0ZUDR9CMxS9z/674CiBP8t3ibG2rq4MDi3WY0KqRMpV3sy9VgQaw2eQoAS rfPc3fzlrR6gM3qQ5Jmr2jBaRX293ZUKGdx2fIB2oJNiTFFHQfRfX7KfXNx9j2cdZg0b ELx3i53+gKplD/nhsfYty49m9FSUMJT4z3CISh1PD+4CYzKwgwDOZvmZvVcQtgoQcsZK c/6yrncgWwp/g3inlZdeIGu86EDW0wbgMUL0cqoMSr93ZL/j+XNPlUbxreKJatH6FjnE f8hFVFe89BpQmKkTe9TmuQA1jRD3neh/cZWHbZHtddZ9zLpp6+NWaa2mK3BQ6slLMEUB QzZw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1712598576; x=1713203376; 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=eljbs2yNGMGPnWHJwv7NSq5kkRuO1URzZsDZcIZtS6U=; b=mEaBNA1ac38LTEb8Y66SpDVAuud5eguKeHz+qtN/GNn3fk/eLUTv8Gc0FVtMWmSlwz kUbbT0ncT4cHkspSIxzJ+OOsTvJxalSvw/xpEmZOf8KX1u+aa+SfTb+UmXItCx/50uXN 2/DpFa8bp7LekCeqlLgToNG5TAzXsgYx2zpzK+ffAUytjoavhArAK5niVi2R/8Rv7hd+ Hj4XQLJfQCQk8YymS4rzWvIiqgT2GCUH9BaNbc4sN+nJYy3L8RfcxuATK2AYCuu4ZmSH 5vvgF3sa4FZUI6Gj2i0YSvozoxGU/VZ1xzQ2nnVYb79mMkNRVJdpH2WrzxU9xB1+I0V+ a9iQ== X-Gm-Message-State: AOJu0Yx8eG9BvFf2u4l6Ldh2dJYdaT+JDKkWg/EDXcG7ASQadEvzF32h j5qdrMBoRu6+3JTBRUlVO7dtGAD/2S4zA9IGV6bpEXCQCfUTE3EjQLiUDyufQ2PKJeQTS4PSWmn q X-Google-Smtp-Source: AGHT+IH70IZ2zJgbCNcYWxmVj2WAl3fhBxMySO0HQaLa1HYjQAqSZBGcfH1etz9KKgg2myY0lwEteQ== X-Received: by 2002:a05:6a21:9206:b0:1a7:56e5:b047 with SMTP id tl6-20020a056a21920600b001a756e5b047mr5168778pzb.28.1712598576378; Mon, 08 Apr 2024 10:49:36 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: Michael Tokarev Subject: [PULL 03/35] linux-user: do_setsockopt: fix SOL_ALG.ALG_SET_KEY Date: Mon, 8 Apr 2024 07:48:57 -1000 Message-Id: <20240408174929.862917-4-richard.henderson@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20240408174929.862917-1-richard.henderson@linaro.org> References: <20240408174929.862917-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+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::436; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x436.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+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1712599128178100003 Content-Type: text/plain; charset="utf-8" From: Michael Tokarev This setsockopt accepts zero-lengh optlen (current qemu implementation does not allow this). Also, there's no need to make a copy of the key, it is enough to use lock_user() (which accepts zero length already). Resolves: https://gitlab.com/qemu-project/qemu/-/issues/2197 Fixes: f31dddd2fc "linux-user: Add support for setsockopt() option SOL_ALG" Signed-off-by: Michael Tokarev Message-Id: <20240331100737.2724186-2-mjt@tls.msk.ru> Signed-off-by: Richard Henderson --- linux-user/syscall.c | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/linux-user/syscall.c b/linux-user/syscall.c index 3df2b94d9a..59fb3e911f 100644 --- a/linux-user/syscall.c +++ b/linux-user/syscall.c @@ -2277,18 +2277,13 @@ static abi_long do_setsockopt(int sockfd, int level= , int optname, switch (optname) { case ALG_SET_KEY: { - char *alg_key =3D g_malloc(optlen); - + char *alg_key =3D lock_user(VERIFY_READ, optval_addr, optlen, = 1); if (!alg_key) { - return -TARGET_ENOMEM; - } - if (copy_from_user(alg_key, optval_addr, optlen)) { - g_free(alg_key); return -TARGET_EFAULT; } ret =3D get_errno(setsockopt(sockfd, level, optname, alg_key, optlen)); - g_free(alg_key); + unlock_user(alg_key, optval_addr, optlen); break; } case ALG_SET_AEAD_AUTHSIZE: --=20 2.34.1 From nobody Sat May 18 22:31:29 2024 Delivered-To: importer@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+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1712599089; cv=none; d=zohomail.com; s=zohoarc; b=BwoIFXmMPD6lien6DMLD/Q2M7C+N7lId7mnGO4PAwTWyRTuKV1+4YuE/JKM+KXyq3ZqZX8SXKzC4Duc/yY8/RdH2MXbZ3cluP44mRECff7pGcePKpRLb4vDEg/FLuu6ygQC0I3dEA0Zcj5oEjRxflzHFkqhqpd7mR6palEnBOqo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1712599089; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=aRT5ReX6FfNpi8sInY8Erna9AcoUcJ+9OuBKDiXG1pU=; b=AIzrUHPoROBSCprajGoSSG/gkosiAFPpj5ArLN3j4M4tJjG43I35oD7tqxZTqcJrK2KOM767OckWo/2O8ps2nmscFcaGYRPfkelLGQ4rr2A1RbtDDj3mzO1WcHwTNX/BmE0Dyy/84twsfQ4WHUHeMPNG/hxoVhHSfGZXuy/dwxE= 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+importer=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 1712599089028614.9406152262163; Mon, 8 Apr 2024 10:58:09 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1rtt7v-0001yi-C6; Mon, 08 Apr 2024 13:49:51 -0400 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 1rtt7n-0001vA-1g for qemu-devel@nongnu.org; Mon, 08 Apr 2024 13:49:47 -0400 Received: from mail-pj1-x1030.google.com ([2607:f8b0:4864:20::1030]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1rtt7k-0003cC-Id for qemu-devel@nongnu.org; Mon, 08 Apr 2024 13:49:42 -0400 Received: by mail-pj1-x1030.google.com with SMTP id 98e67ed59e1d1-2a4df5d83c7so884651a91.0 for ; Mon, 08 Apr 2024 10:49:38 -0700 (PDT) Received: from stoup.. (098-147-007-212.res.spectrum.com. [98.147.7.212]) by smtp.gmail.com with ESMTPSA id ga15-20020a17090b038f00b0029c3bac0aa8sm8658432pjb.4.2024.04.08.10.49.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 08 Apr 2024 10:49:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1712598578; x=1713203378; darn=nongnu.org; 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=aRT5ReX6FfNpi8sInY8Erna9AcoUcJ+9OuBKDiXG1pU=; b=w/ERickoXh3AXO+xpirUpwxBhY7FdLo6rDWA6G6MuFD67grVFC+jJi1zh2RO5XpOsT OVJOZ6+Ur0mLjvf5GjTRE4UJopWyTryrRae9qY5EZ7wA/snLfB069Z0NHp3/sw3CgTLt 62I0gU0jWx8GEioF82MhokbFTAfcZIf6EUMuhuyoZR4FhsyRH6g7d5uz1cxmy2NQMuMA ZAHUEocCsey1ZV8dLnyS2ZeutRRsNnr/eDhXO14bk0O7CQuFmlS91PXoY6Pb/TwZibhC KuoBHV8cAlmC3fihZhiY/0OcmLNRH2Bux+qIuxu665HPxKjw9als5UkXavhpxzUbcI2T tkEQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1712598578; x=1713203378; 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=aRT5ReX6FfNpi8sInY8Erna9AcoUcJ+9OuBKDiXG1pU=; b=ILeQ0sZNBowDV4RKd/i9EIkYys5GSpb2EiSucaVKDj0++oZWSNVk+ItakTy31SPOhc u5odOdn8fbOdm3a+hhmpo2PI5KahQC/XW3d9m8p1K23UGo6ABtF5WuVQcRc2B1MuwswV /ZheXNMBViCXQjXlyVC8CNigVeEH5baeAYFvOtIrAN7/cPghTOkTsXrIb8Av7ZS3Fyfh SKQQdYzg7HemvXbfypCZW3lLlBAvID9eeVSPEWZxX3bjhwgZ+a1MlkEg1GttnzkpXNs3 cT420KyYuNK/yWj+/i1w6Zv608s2YP9lqoi3YDaf1g5T/o2G+n8xLdEpbaq6juATj0il 2FeQ== X-Gm-Message-State: AOJu0YwPctJ5nQvVZWnXWh+Onkh5A/MicuXpXOpaof60fTckecwr7X9x uZZAYSiHlRbUsvKhB/H6Auabu3qi+BFfobiiBt57Kj8UKC5H1bi8CKufXNko0YheT9SL7tCCQGS f X-Google-Smtp-Source: AGHT+IGe1xVl6uyw639/WVojzofP2sD7cYwVPQzQ8DwRclGyF7i6hA+/luX2VwFI8uhiDVdoaL+5Tg== X-Received: by 2002:a17:90a:7286:b0:2a2:d41d:2258 with SMTP id e6-20020a17090a728600b002a2d41d2258mr7678208pjg.28.1712598577956; Mon, 08 Apr 2024 10:49:37 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: Michael Tokarev Subject: [PULL 04/35] linux-user: do_setsockopt: make ip_mreq local to the place it is used and inline target_to_host_ip_mreq() Date: Mon, 8 Apr 2024 07:48:58 -1000 Message-Id: <20240408174929.862917-5-richard.henderson@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20240408174929.862917-1-richard.henderson@linaro.org> References: <20240408174929.862917-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+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::1030; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x1030.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+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1712599090035100010 Content-Type: text/plain; charset="utf-8" From: Michael Tokarev ip_mreq is declared at the beginning of do_setsockopt(), while it is used in only one place. Move its declaration to that very place and replace pointer to alloca()-allocated memory with the structure itself. target_to_host_ip_mreq() is used only once, inline it. This change also properly handles TARGET_EFAULT when the address is wrong. Signed-off-by: Michael Tokarev Message-Id: <20240331100737.2724186-3-mjt@tls.msk.ru> [rth: Fix braces, adjust optlen to match host structure size] Signed-off-by: Richard Henderson --- linux-user/syscall.c | 47 ++++++++++++++++++++++---------------------- 1 file changed, 23 insertions(+), 24 deletions(-) diff --git a/linux-user/syscall.c b/linux-user/syscall.c index 59fb3e911f..cca9cafe4f 100644 --- a/linux-user/syscall.c +++ b/linux-user/syscall.c @@ -1615,24 +1615,6 @@ static abi_long do_pipe(CPUArchState *cpu_env, abi_u= long pipedes, return get_errno(ret); } =20 -static inline abi_long target_to_host_ip_mreq(struct ip_mreqn *mreqn, - abi_ulong target_addr, - socklen_t len) -{ - struct target_ip_mreqn *target_smreqn; - - target_smreqn =3D lock_user(VERIFY_READ, target_addr, len, 1); - if (!target_smreqn) - return -TARGET_EFAULT; - mreqn->imr_multiaddr.s_addr =3D target_smreqn->imr_multiaddr.s_addr; - mreqn->imr_address.s_addr =3D target_smreqn->imr_address.s_addr; - if (len =3D=3D sizeof(struct target_ip_mreqn)) - mreqn->imr_ifindex =3D tswapal(target_smreqn->imr_ifindex); - unlock_user(target_smreqn, target_addr, 0); - - return 0; -} - static inline abi_long target_to_host_sockaddr(int fd, struct sockaddr *ad= dr, abi_ulong target_addr, socklen_t len) @@ -2067,7 +2049,6 @@ static abi_long do_setsockopt(int sockfd, int level, = int optname, { abi_long ret; int val; - struct ip_mreqn *ip_mreq; struct ip_mreq_source *ip_mreq_source; =20 switch(level) { @@ -2111,15 +2092,33 @@ static abi_long do_setsockopt(int sockfd, int level= , int optname, break; case IP_ADD_MEMBERSHIP: case IP_DROP_MEMBERSHIP: + { + struct ip_mreqn ip_mreq; + struct target_ip_mreqn *target_smreqn; + + QEMU_BUILD_BUG_ON(sizeof(struct ip_mreq) !=3D + sizeof(struct target_ip_mreq)); + if (optlen < sizeof (struct target_ip_mreq) || - optlen > sizeof (struct target_ip_mreqn)) + optlen > sizeof (struct target_ip_mreqn)) { return -TARGET_EINVAL; + } =20 - ip_mreq =3D (struct ip_mreqn *) alloca(optlen); - target_to_host_ip_mreq(ip_mreq, optval_addr, optlen); - ret =3D get_errno(setsockopt(sockfd, level, optname, ip_mreq, = optlen)); + target_smreqn =3D lock_user(VERIFY_READ, optval_addr, optlen, = 1); + if (!target_smreqn) { + return -TARGET_EFAULT; + } + ip_mreq.imr_multiaddr.s_addr =3D target_smreqn->imr_multiaddr.= s_addr; + ip_mreq.imr_address.s_addr =3D target_smreqn->imr_address.s_ad= dr; + if (optlen =3D=3D sizeof(struct target_ip_mreqn)) { + ip_mreq.imr_ifindex =3D tswapal(target_smreqn->imr_ifindex= ); + optlen =3D sizeof(struct ip_mreqn); + } + unlock_user(target_smreqn, optval_addr, 0); + + ret =3D get_errno(setsockopt(sockfd, level, optname, &ip_mreq,= optlen)); break; - + } case IP_BLOCK_SOURCE: case IP_UNBLOCK_SOURCE: case IP_ADD_SOURCE_MEMBERSHIP: --=20 2.34.1 From nobody Sat May 18 22:31:29 2024 Delivered-To: importer@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+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1712599089; cv=none; d=zohomail.com; s=zohoarc; b=jguUXzN5X6nO0sRE1pKjoOpFztRX0Z/pE/JaRiN3+1B2xKWlfdyeK/3M0HmbBUN0aGAXnMYTUUHtrlis0JVxnmFWSCs1Is/TfGdhHJLtPdWChIXU2ag4GUebo04C8ewPjc+e5edGQoyICYq6e6ikMMp8U7mkiLShpJBqO5hzjFQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1712599089; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=JI74xSWz9fuppvIeUIbROGR0F/ne9t6G9LvnZBioEes=; b=D9i+JJctLtW/LkMi5q16+pfykuymt06VzJbIyx+0fyHsfwu6wGSEDuO8vAe/QcMXG3w8Ye1OBEzP2oL62VcYqOxOV/yGjiPivZQqRz6/HaNNX6EtHfU1QaHoXfo7CJfAhtCCWWbV1eq8cmLEQN8LEAItg4fijvVu+cH55+gC9/A= 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+importer=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 1712599089184261.3910241358087; Mon, 8 Apr 2024 10:58:09 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1rtt7y-000205-Be; Mon, 08 Apr 2024 13:49:54 -0400 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 1rtt7m-0001v9-Rx for qemu-devel@nongnu.org; Mon, 08 Apr 2024 13:49:47 -0400 Received: from mail-pj1-x1029.google.com ([2607:f8b0:4864:20::1029]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1rtt7k-0003cK-Iq for qemu-devel@nongnu.org; Mon, 08 Apr 2024 13:49:42 -0400 Received: by mail-pj1-x1029.google.com with SMTP id 98e67ed59e1d1-29f93c4946cso2932168a91.1 for ; Mon, 08 Apr 2024 10:49:40 -0700 (PDT) Received: from stoup.. (098-147-007-212.res.spectrum.com. [98.147.7.212]) by smtp.gmail.com with ESMTPSA id ga15-20020a17090b038f00b0029c3bac0aa8sm8658432pjb.4.2024.04.08.10.49.38 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 08 Apr 2024 10:49:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1712598579; x=1713203379; darn=nongnu.org; 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=JI74xSWz9fuppvIeUIbROGR0F/ne9t6G9LvnZBioEes=; b=gMe41AQwr23QosU50ARtALzjdIgT5uWpbqm7HqR7Sdilb/Qrp7vJraozul9j/7iqXV Av66F9MbqyCT+9c5UhJJBvHtGzmDw9KHM9fjUOSnp+bKL+WknMEVYLwKmYQR6/HmAu9T 4LOB2yUVgh4A1Ts04bRgYxOMD7QJ4QzAhrub83u0APfXxZC6E9dIwYwbGHrUxAdRg68O Huk+U1OQVYdSubXajFPHuk9rwzxKbKaST/D44ZAc5YCBKFcy+ha7p6jmVcuVLQDLYcNi kTnwFOa0PZesZi994LB5Hlc+tOoYURLRcWO9gjOFF74Gd46mBTHulKMnGItgd6O7zJMa pHTg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1712598579; x=1713203379; 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=JI74xSWz9fuppvIeUIbROGR0F/ne9t6G9LvnZBioEes=; b=qPDygR/TgwErAW43orun3upcabRSlreYkT/2iwkJBw/wFACwBOJAppVO+br2x67QVT E1xFy1L1TbjLVVwXAhgSAgzI0f5Ll2cS6eEBjx33SmV/P6G8Tdtqvg0JjKO4F2kZOJLV BhqC0qBPH+MMah61PPHaf1p2XqlL1UTxE0DFBUAFYXxiXaTpE8sgZmoHDpDvxC/BxI7i fNYDh+7lgiphQTjcPi4ywOY97YcbXkH7G/DRXIo/RfBNkIqcy86mChAnGndpeMLNEeND 5+mEcFzM1rOPbLqiz2kGPYJ6I+MkKKqrE9jNfQfgtBnEgITLidtz91iwUuygBBFQLSEH fupQ== X-Gm-Message-State: AOJu0YwOgdRYioumX2W/OOqyKJt+ecw+e0Le1czsFxgIZKqpthXcOM6V UQ3pJnZwXM6edkjco1iNeJ7AMoR9vid75TZjF8B0blIiMX9xJW1XJZlq7KCJi5t9AXf1cCfB0a8 c X-Google-Smtp-Source: AGHT+IG4YEQvcCRf8ZKpThHT5AmaxBdn/Jxzc3I39PGqg1AQHeti0hR4etnWmqMNHXWrGANvh7Yc1Q== X-Received: by 2002:a17:90a:d483:b0:2a2:94c0:38d4 with SMTP id s3-20020a17090ad48300b002a294c038d4mr7552188pju.31.1712598579264; Mon, 08 Apr 2024 10:49:39 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: Michael Tokarev Subject: [PULL 05/35] linux-user: do_setsockopt: make ip_mreq_source local to the place where it is used Date: Mon, 8 Apr 2024 07:48:59 -1000 Message-Id: <20240408174929.862917-6-richard.henderson@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20240408174929.862917-1-richard.henderson@linaro.org> References: <20240408174929.862917-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+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::1029; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x1029.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+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1712599089990100007 Content-Type: text/plain; charset="utf-8" From: Michael Tokarev Signed-off-by: Michael Tokarev Message-Id: <20240331100737.2724186-4-mjt@tls.msk.ru> Signed-off-by: Richard Henderson --- linux-user/syscall.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/linux-user/syscall.c b/linux-user/syscall.c index cca9cafe4f..1fedf16650 100644 --- a/linux-user/syscall.c +++ b/linux-user/syscall.c @@ -2049,7 +2049,6 @@ static abi_long do_setsockopt(int sockfd, int level, = int optname, { abi_long ret; int val; - struct ip_mreq_source *ip_mreq_source; =20 switch(level) { case SOL_TCP: @@ -2123,6 +2122,9 @@ static abi_long do_setsockopt(int sockfd, int level, = int optname, case IP_UNBLOCK_SOURCE: case IP_ADD_SOURCE_MEMBERSHIP: case IP_DROP_SOURCE_MEMBERSHIP: + { + struct ip_mreq_source *ip_mreq_source; + if (optlen !=3D sizeof (struct target_ip_mreq_source)) return -TARGET_EINVAL; =20 @@ -2133,7 +2135,7 @@ static abi_long do_setsockopt(int sockfd, int level, = int optname, ret =3D get_errno(setsockopt(sockfd, level, optname, ip_mreq_s= ource, optlen)); unlock_user (ip_mreq_source, optval_addr, 0); break; - + } default: goto unimplemented; } --=20 2.34.1 From nobody Sat May 18 22:31:29 2024 Delivered-To: importer@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+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1712598678; cv=none; d=zohomail.com; s=zohoarc; b=gc9vqvtsR5hPK3ho9lSa+e7nsP+tdoOxhLuS4ZKtfal2oz3enDI1h74nEcjJLNTVLT4of/jwlSK2pMFpCunD50JvIbi4JdkyilZLF2dNo9yZ/rI5EUroqm0tOt3ZJQ6q3aHyMvkVkG4jrykyfl3XVLqhpzjVMXmjEob8I2573Os= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1712598678; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=/Qew14nZN1wX0iqwNUmvetvShYAajmyZbQ1f420VzBg=; b=XR3g9QahNgZio6HocF6F/6qVonOs/VMSwDHGj6MuZT1IhBqDTiKX8dqSg6ZaABi2uRShO28qVKc+uhDbDSs1UPgq5Wvkg5KZdzVKWhC6DQG8SB4j06JTz0cwKxQP9f2JHRz4dbGJCuJ1Aq9io4LK5dY3RAPdAurysRjpxYnTktY= 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+importer=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 171259867884445.262734290411004; Mon, 8 Apr 2024 10:51:18 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1rtt7u-0001y5-9h; Mon, 08 Apr 2024 13:49:50 -0400 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 1rtt7o-0001vF-LP for qemu-devel@nongnu.org; Mon, 08 Apr 2024 13:49:47 -0400 Received: from mail-pj1-x1036.google.com ([2607:f8b0:4864:20::1036]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1rtt7m-0003cX-3N for qemu-devel@nongnu.org; Mon, 08 Apr 2024 13:49:43 -0400 Received: by mail-pj1-x1036.google.com with SMTP id 98e67ed59e1d1-2a2e5d86254so2843431a91.1 for ; Mon, 08 Apr 2024 10:49:41 -0700 (PDT) Received: from stoup.. (098-147-007-212.res.spectrum.com. [98.147.7.212]) by smtp.gmail.com with ESMTPSA id ga15-20020a17090b038f00b0029c3bac0aa8sm8658432pjb.4.2024.04.08.10.49.39 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 08 Apr 2024 10:49:40 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1712598581; x=1713203381; darn=nongnu.org; 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=/Qew14nZN1wX0iqwNUmvetvShYAajmyZbQ1f420VzBg=; b=iwHzkw4pzzQ7c3GDiaxYPb5tT+v8uc9OVBQ7450iPDqc5vrBueaIdzuFRCV3pz7Mmo 9eyAUXretJDJXn425r8/rBpbc6bC2VGpK0awp/C+CgyhYSdZOQXVStdWIX5qk2cxJmEi 5QHeWqD83XXWfuLoRYpDVeOp90D6d5PWpXD/lmJzJmnPWzj6XPW5id430+oHAD1stZ/j EKewZuYz0tUADq58rcC2qapdZHhjkOkQ9k384r/wtY5P/bIbFWa4Jnpp5LxUL1IB6V6D 9xUcV9vgDJ164jaw40lRqG6RbOkIhfzOOAm+1sD4FrBBfUuQloaGYkxmiORqSuXTY6Yy VPdg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1712598581; x=1713203381; 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=/Qew14nZN1wX0iqwNUmvetvShYAajmyZbQ1f420VzBg=; b=kqLtlnznakzJFhpETOZwSHsTavMhVKAES743hxRa3bjEoLV579o8n+HQUh3vO0nrxd PpECH9LyXdsktLe21qcvaZeldCjJrpVsrHmJ6t8UjHMi9kYDFAm1PpEtZ2csHtq45225 Xs8xemO3lRl89UzRU8rMRSq6OVSrYAJqD1VqH4OeMQwq+0o/z0RVIz+DNAukKh1FCmAo IiVAdpWhobyVRgr8xFZEV0djI8hYvjE9rZM7YmU0g/KL+OXa4PxVb6I64WTbpRjE5+88 7oLaabyOUxBpuZRCOs6SllZcw44GWs6razDbFM3Sdnp9Ctq29k3UCuKbRdoHYrIhu5/E a6eA== X-Gm-Message-State: AOJu0YzA0ygR2lyIRRTuSj0cYVbxDLgdGBc/hEBNfG4uVlJi9MvWzNQt FOtkSgUlWWr1C0R2QKcZAoLXmurI10DlGoHmCKl8iE0GMsWcibq8KC91b+TTvUFxNxFaWMNQkFo 1 X-Google-Smtp-Source: AGHT+IHmHnMtXl4S03sg3R4v8rU+hx0IboggSdJJ5/PA4KVEurOug3xnOtW7GR8TCnnzr4sLTzti7A== X-Received: by 2002:a17:90b:4c12:b0:2a5:242:6761 with SMTP id na18-20020a17090b4c1200b002a502426761mr487799pjb.23.1712598580721; Mon, 08 Apr 2024 10:49:40 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: Michael Tokarev , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Subject: [PULL 06/35] linux-user: do_setsockopt: eliminate goto in switch for SO_SNDTIMEO Date: Mon, 8 Apr 2024 07:49:00 -1000 Message-Id: <20240408174929.862917-7-richard.henderson@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20240408174929.862917-1-richard.henderson@linaro.org> References: <20240408174929.862917-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+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::1036; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x1036.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+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1712598680073100004 From: Michael Tokarev There's identical code for SO_SNDTIMEO and SO_RCVTIMEO, currently implemented using an ugly goto into another switch case. Eliminate that using arithmetic if, making code flow more natural. Signed-off-by: Michael Tokarev Message-Id: <20240331100737.2724186-5-mjt@tls.msk.ru> Reviewed-by: Philippe Mathieu-Daud=C3=A9 Signed-off-by: Richard Henderson --- linux-user/syscall.c | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/linux-user/syscall.c b/linux-user/syscall.c index 1fedf16650..41659b63f5 100644 --- a/linux-user/syscall.c +++ b/linux-user/syscall.c @@ -2301,12 +2301,10 @@ static abi_long do_setsockopt(int sockfd, int level= , int optname, case TARGET_SOL_SOCKET: switch (optname) { case TARGET_SO_RCVTIMEO: + case TARGET_SO_SNDTIMEO: { struct timeval tv; =20 - optname =3D SO_RCVTIMEO; - -set_timeout: if (optlen !=3D sizeof(struct target_timeval)) { return -TARGET_EINVAL; } @@ -2315,13 +2313,12 @@ set_timeout: return -TARGET_EFAULT; } =20 - ret =3D get_errno(setsockopt(sockfd, SOL_SOCKET, optname, + ret =3D get_errno(setsockopt(sockfd, SOL_SOCKET, + optname =3D=3D TARGET_SO_RCVTIMEO ? + SO_RCVTIMEO : SO_SNDTIMEO, &tv, sizeof(tv))); return ret; } - case TARGET_SO_SNDTIMEO: - optname =3D SO_SNDTIMEO; - goto set_timeout; case TARGET_SO_ATTACH_FILTER: { struct target_sock_fprog *tfprog; --=20 2.34.1 From nobody Sat May 18 22:31:29 2024 Delivered-To: importer@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+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1712599133; cv=none; d=zohomail.com; s=zohoarc; b=Zof4imJ8vhtRDj6veRbZRi1gVLA/X41Lhz5iCHtizAMvpTzVDDGCS38OGxgfObc+Hitj0zpuekUzjGcFw26UayJpK7wXF+bLVEO+9imt0MZo1KAesmSpBs1P62kQfbzQDOSPHy2J5mOFuiW1Q55TM0szzFkNaxjQuUhuoqlt9Q4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1712599133; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=ClDgWE+squc24jCQx5ASDG99O/TQsFv8OJ3ohhBsa3Y=; b=KtPkP3i+gzncu0P9xIYZwVtKxzD4vjPSw/txFgMKau0rdFZIv+u4i9TMBMDn1ZtYdLmc6VDmbpXdbYF4jd5O1m04lpGgYPE9pSmjg7DBmHxBUAxrgkKhouVdJq3K26u3NXNo/0VVeIembeeHafaIGiziQ5uJMubdxjZ25wrYpVM= 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+importer=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 171259913320543.38798576352997; Mon, 8 Apr 2024 10:58:53 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1rtt7v-0001yz-Gw; Mon, 08 Apr 2024 13:49:52 -0400 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 1rtt7q-0001vc-KP for qemu-devel@nongnu.org; Mon, 08 Apr 2024 13:49:47 -0400 Received: from mail-pj1-x1032.google.com ([2607:f8b0:4864:20::1032]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1rtt7n-0003cd-De for qemu-devel@nongnu.org; Mon, 08 Apr 2024 13:49:45 -0400 Received: by mail-pj1-x1032.google.com with SMTP id 98e67ed59e1d1-2a519ac18b3so832247a91.2 for ; Mon, 08 Apr 2024 10:49:43 -0700 (PDT) Received: from stoup.. (098-147-007-212.res.spectrum.com. [98.147.7.212]) by smtp.gmail.com with ESMTPSA id ga15-20020a17090b038f00b0029c3bac0aa8sm8658432pjb.4.2024.04.08.10.49.40 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 08 Apr 2024 10:49:41 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1712598582; x=1713203382; darn=nongnu.org; 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=ClDgWE+squc24jCQx5ASDG99O/TQsFv8OJ3ohhBsa3Y=; b=yLK1y3OEUThstbGG+U0rwnNtyeVJFACwozio/4T9aA2OGMqkdvfdKDEQN5NuT9X8d1 rqxwfWY3OeIjnxIp+aw3ut67lCYRvSmNa3XZnQDWf9MDhb9rD2UeFN+wg6VpqXw0rVrb si49M7zv6VebaoN9Qouy/+0WF/ugubV2wr7TQsDe97dENmL5r8E/FMUHqZ1w7QTZoN9z uDZi/Pstr6TKDwp8C6w2eboHx9abTehT46NBchV5faJKj1OFz4m1Zz5qbv83RVBoWsgW Yw69SsIx4AScLDcWJu0cWWNxmU4rd8qQNhm8XGcPT7L5erqPqP2CliHMc6Hzzm70YaFP h4Nw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1712598582; x=1713203382; 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=ClDgWE+squc24jCQx5ASDG99O/TQsFv8OJ3ohhBsa3Y=; b=Q6NnrzcKld/O+6xuQ3k122TDnCYhffLTtkWCqi5wwHWhuY/6x3vyeRwkVZJYNd9ald oqaPSJHn43FR+47GgS/3wNO6C5VctXKzUH4Y0dxfsdvjfoTrhW7a3Z2/lIzvhiXUxi4h Ea4z+T6QnhQvf8XFqeHnZivhpgqi9cTlFPITKUuxpnzk6Pr5tkZhQztSeW5XsUvtMq2a IFU/tcRzjwYm2an3A7ZuD/47IVkX69pcTgzWTs5PZNzwEtRrlgEz43KLT0m8ZTlwB3xX 7AWbiySisIxgnRVt7sSyGpfFuFOoi/qkae78YafGtu//i19rCnwLnJeEns5OKUcQMPax /IhQ== X-Gm-Message-State: AOJu0YybvNUZAMPyl57dVh2KPed/iVjkOT2GRun+p0vp0aBZ5UsflKf3 pmD6eDtLdnsMM3TW1KSpjOW8/JybX+jPcu2xW/5btw+kvzyQDUu7VTWorx46HcOOlKOz5Zq69uc u X-Google-Smtp-Source: AGHT+IEqR7Syjv4KeQ7C+jDud9uVEuYWENBx7KP442H2uM03hh+wQQHei9DrW3gGRJ1/gVUgxpdAwQ== X-Received: by 2002:a17:90a:ce18:b0:2a5:24dd:bd34 with SMTP id f24-20020a17090ace1800b002a524ddbd34mr2206044pju.27.1712598581991; Mon, 08 Apr 2024 10:49:41 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: Michael Vogt Subject: [PULL 07/35] linux-user: Add FITRIM ioctl Date: Mon, 8 Apr 2024 07:49:01 -1000 Message-Id: <20240408174929.862917-8-richard.henderson@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20240408174929.862917-1-richard.henderson@linaro.org> References: <20240408174929.862917-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+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::1032; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x1032.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+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1712599134230100003 Content-Type: text/plain; charset="utf-8" From: Michael Vogt Tiny patch to add the missing FITRIM ioctl. Signed-off-by: Michael Vogt Message-Id: <20240403092048.16023-2-michael.vogt@gmail.com> Signed-off-by: Richard Henderson --- linux-user/ioctls.h | 3 +++ linux-user/syscall_defs.h | 1 + linux-user/syscall_types.h | 5 +++++ 3 files changed, 9 insertions(+) diff --git a/linux-user/ioctls.h b/linux-user/ioctls.h index 1aec9d5836..d508d0c04a 100644 --- a/linux-user/ioctls.h +++ b/linux-user/ioctls.h @@ -140,6 +140,9 @@ #ifdef FITHAW IOCTL(FITHAW, IOC_W | IOC_R, TYPE_INT) #endif +#ifdef FITRIM + IOCTL(FITRIM, IOC_W | IOC_R, MK_PTR(MK_STRUCT(STRUCT_fstrim_range))) +#endif =20 IOCTL(FIGETBSZ, IOC_R, MK_PTR(TYPE_LONG)) #ifdef CONFIG_FIEMAP diff --git a/linux-user/syscall_defs.h b/linux-user/syscall_defs.h index 744fda599e..ce0adb706e 100644 --- a/linux-user/syscall_defs.h +++ b/linux-user/syscall_defs.h @@ -945,6 +945,7 @@ struct target_rtc_pll_info { =20 #define TARGET_FIFREEZE TARGET_IOWR('X', 119, abi_int) #define TARGET_FITHAW TARGET_IOWR('X', 120, abi_int) +#define TARGET_FITRIM TARGET_IOWR('X', 121, struct fstrim_range) =20 /* * Note that the ioctl numbers for FS_IOC_ diff --git a/linux-user/syscall_types.h b/linux-user/syscall_types.h index c3b43f8022..6dd7a80ce5 100644 --- a/linux-user/syscall_types.h +++ b/linux-user/syscall_types.h @@ -341,6 +341,11 @@ STRUCT(file_clone_range, TYPE_ULONGLONG, /* src_length */ TYPE_ULONGLONG) /* dest_offset */ =20 +STRUCT(fstrim_range, + TYPE_ULONGLONG, /* start */ + TYPE_ULONGLONG, /* len */ + TYPE_ULONGLONG) /* minlen */ + STRUCT(fiemap_extent, TYPE_ULONGLONG, /* fe_logical */ TYPE_ULONGLONG, /* fe_physical */ --=20 2.34.1 From nobody Sat May 18 22:31:29 2024 Delivered-To: importer@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+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1712598685; cv=none; d=zohomail.com; s=zohoarc; b=SiTLDXo/KuHj2QjxLPhNrNsaTskFq4rZ0MTuoPQEzr0AUKPSkGY6rQgj1iKEd/1ME6IBuUSjylSeGL64mIGLbBsFFKmf5unCgx74VT1xhbV0OmJR3sNbDEjhV7pUEk4Mt1legYXjmRuZuwwQu5QThUF2kkSxuj+tnb9aXarzrpY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1712598685; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=Lw/beNU1QugcC97gSnNNo3jFHiOgyIQNiC5qPkBLROQ=; b=A+iDszmDa4x+zD/LlNmoUEUdBC6uzoFdnror72XX5sEVDoukZFUpsr7lti64Ike2QvSNquprmxnL9STGdyqlFvGBmuyaM5RYJ52RtVc1FdFktw6Q/kBeDCeiTaHmjfWNoAIammnsDBMH4UXsZEpeYGPQ/5C6TOBWRTcm06Bzfec= 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+importer=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 1712598685017255.74419456174303; Mon, 8 Apr 2024 10:51:25 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1rtt7x-0001zw-G4; Mon, 08 Apr 2024 13:49:53 -0400 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 1rtt7r-0001vf-Tn for qemu-devel@nongnu.org; Mon, 08 Apr 2024 13:49:48 -0400 Received: from mail-pg1-x533.google.com ([2607:f8b0:4864:20::533]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1rtt7q-0003cs-AJ for qemu-devel@nongnu.org; Mon, 08 Apr 2024 13:49:47 -0400 Received: by mail-pg1-x533.google.com with SMTP id 41be03b00d2f7-5d42e7ab8a9so2936997a12.3 for ; Mon, 08 Apr 2024 10:49:44 -0700 (PDT) Received: from stoup.. (098-147-007-212.res.spectrum.com. [98.147.7.212]) by smtp.gmail.com with ESMTPSA id ga15-20020a17090b038f00b0029c3bac0aa8sm8658432pjb.4.2024.04.08.10.49.42 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 08 Apr 2024 10:49:43 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1712598583; x=1713203383; darn=nongnu.org; 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=Lw/beNU1QugcC97gSnNNo3jFHiOgyIQNiC5qPkBLROQ=; b=gdha9oDZyg24GrzUH489QHcbJX25R8x2bQ5QY0iiWQZiHaKwq/q3B9IDxhLmpYyyL/ itdnvpvDIHIIYn1pJ61Apwe9+7eXzFcz4PUb3HnLm0GnvGS7susk2MieSPVWDHXoj94Y XxYDSd6QviUh0fWV8DUsXjltRVMXSgYZn2OhymzDrdgH05lkfKApohKGuVixevt2O0tB 0+akCmZVM5bkPU4K0bXKcWaack9D+3m6mbgNSiAvPsGgOmk8p/1znBuuWqR/Hk5taRK7 wmo2o8SyvowvKwYakrKwaMSTFSe/tr5xmShi0ZHZWrjUwIaqmRLzEWHcqojZ/Rz7eTkZ URPw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1712598583; x=1713203383; 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=Lw/beNU1QugcC97gSnNNo3jFHiOgyIQNiC5qPkBLROQ=; b=DSqrQmpmWlR4ZtrhMJoUmfGXfXX0qIK4Qz/7Napp5PgL91iaDWnuasv45aNLO07mev 62xfAp4HE7/TpF4QVm1RsvTyLUMZSkF0nh+RSx0ZlIFbudphZa/+7fVwA8eaCTwsXhLs TOaqJN7hYDTZX7wr7guJQBp6HyixAeKfMu0L5qawNl4uIbnLQaoPXrAQh19vwy4WsF9N ulznOFM1DjjSoAcqKqn9La5a1VWuoi8G7H30pvTvZxx/Yre8s37u+rUewtzfYPYPeBVX R3HZt29s3whkEaUs6gt0/UWib517G8bepYucRYBDNpbzK2l6Ah8bpq7VQ0d6Onc8vMrw yzig== X-Gm-Message-State: AOJu0YxA8XHmGwvSauOCiiiWDD47FkmJUizoK96jmKTVUZkw3n/f4kRO sRP1HkauBboHBR7u4yD/vncqe3wch6ZlL3xISb11Iys8sUmmm549oOAvT/ht/JyaPvszxNAR2Zt 4 X-Google-Smtp-Source: AGHT+IHyDsTVfWyZO8lfi2c0buKrh5URB59p0tIcsq+yaamjo6kXE1+YQEW4PuBKH8vM0lNOE8KZxw== X-Received: by 2002:a05:6a20:5521:b0:1a3:600b:444c with SMTP id ko33-20020a056a20552100b001a3600b444cmr8425568pzb.36.1712598583546; Mon, 08 Apr 2024 10:49:43 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: Nguyen Dinh Phi , =?UTF-8?q?Alex=20Benn=C3=A9e?= Subject: [PULL 08/35] linux-user: replace calloc() with g_new0() Date: Mon, 8 Apr 2024 07:49:02 -1000 Message-Id: <20240408174929.862917-9-richard.henderson@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20240408174929.862917-1-richard.henderson@linaro.org> References: <20240408174929.862917-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+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::533; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x533.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+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1712598686087100001 From: Nguyen Dinh Phi Use glib allocation as recommended by the coding convention Signed-off-by: Nguyen Dinh Phi Message-Id: <20240317171747.1642207-1-phind.uet@gmail.com> Reviewed-by: Alex Benn=C3=A9e Signed-off-by: Richard Henderson --- linux-user/main.c | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/linux-user/main.c b/linux-user/main.c index 9277df2e9d..149e35432e 100644 --- a/linux-user/main.c +++ b/linux-user/main.c @@ -928,11 +928,7 @@ int main(int argc, char **argv, char **envp) * Prepare copy of argv vector for target. */ target_argc =3D argc - optind; - target_argv =3D calloc(target_argc + 1, sizeof (char *)); - if (target_argv =3D=3D NULL) { - (void) fprintf(stderr, "Unable to allocate memory for target_argv\= n"); - exit(EXIT_FAILURE); - } + target_argv =3D g_new0(char *, target_argc + 1); =20 /* * If argv0 is specified (using '-0' switch) we replace --=20 2.34.1 From nobody Sat May 18 22:31:29 2024 Delivered-To: importer@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+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1712598750; cv=none; d=zohomail.com; s=zohoarc; b=eecWdptCEOhGeVZn1zOKYDQE81lEPYqFY13vnt9IZic1QIeSoGUueEAPZsEUI+LUvDw7WJDiZpBwz9KOqGRA/fuDgDiTYcKURnZhEdc6FW3s8f7XuZzGfT/ychx/qe73xCz2PtcJxwPXR1oiOJPV6aG80k3wmrjd0wVhbZzW4Ug= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1712598750; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=+6xA9uOxQL6GHFyuuAVL91EMcYGjdhkuoxzjyRnEesc=; b=PUq7eZ+EJPXGjStTItXVA+tuNpOsPUjb3JhCjvLPN5sfR1LDDuprmWgMo24fzGH4gug4FAim/1QiB2tZvvgOhNNvOoX7e3vsiFUTWaJdnaNgDoiX5RSEluuJuHcF10ftzzU8o7nvdBIwQsLdomhvb+fhsB4cODsMOATCgiZccvY= 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+importer=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 1712598750258945.1956186644207; Mon, 8 Apr 2024 10:52:30 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1rtt7x-0001zj-7J; Mon, 08 Apr 2024 13:49:53 -0400 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 1rtt7t-0001wk-9w for qemu-devel@nongnu.org; Mon, 08 Apr 2024 13:49:49 -0400 Received: from mail-pj1-x102c.google.com ([2607:f8b0:4864:20::102c]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1rtt7r-0003d2-Lf for qemu-devel@nongnu.org; Mon, 08 Apr 2024 13:49:49 -0400 Received: by mail-pj1-x102c.google.com with SMTP id 98e67ed59e1d1-2a2da57ab3aso2672014a91.3 for ; Mon, 08 Apr 2024 10:49:46 -0700 (PDT) Received: from stoup.. (098-147-007-212.res.spectrum.com. [98.147.7.212]) by smtp.gmail.com with ESMTPSA id ga15-20020a17090b038f00b0029c3bac0aa8sm8658432pjb.4.2024.04.08.10.49.43 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 08 Apr 2024 10:49:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1712598585; x=1713203385; darn=nongnu.org; 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=+6xA9uOxQL6GHFyuuAVL91EMcYGjdhkuoxzjyRnEesc=; b=ARUX9p6+UIvXtrvSSWi6rfUg1qr7yEk2tkiATpEVy5oAQAEFRY6Vxrm+RCPF41dbYS hh4wQIqrUHCCx6N7aKs99K4DnKABAQ2cxULBXGNM6xXcwjcxPVcfd6wllDuDf87dnmeC vVAi5ZVBIlb2UwPIyDAoXOira/Dj0ekHGFwuVAQfHzdFphprH5DH0rAaNQzvrHHXnjqF HVqeIAtKNMvh3L5O2ezj7L/eZdr1/lDgMjS5Xwb3Kj/5bEEYtTBY+bfwiJbMfftUn6rk 6zao6E9EC9o3Dk4wCWaLD6pEBkFMhE4NvYD8wiL27Dv7PKG68+cVC0ifJOVpzuqJTy3R Z4fg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1712598585; x=1713203385; 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=+6xA9uOxQL6GHFyuuAVL91EMcYGjdhkuoxzjyRnEesc=; b=mnn6JOh7CV97OtMcmOlBRBdsU0JhVMrtiJpXxWxSzoYzvBGW5Xefcay3iWmw/TfEhZ MVMaJjU/0QkskNoOBc3oDBftWU6HHeEzUVyp4Q1DC89TMYpEB5l8Tihn30SdogDKIUsR 8nHj+YPMAqQemMh0bmIwXW53jayfIEsb8jBT/oDEO5O2w6qwMLnS7tkEqTmc0K2mRrp8 20lAObIueARIkiw3U1j/vwawPQsW5yCl8gRGFyLFfC/99Do+/IPsJioHb5Yx79vwxC4W l7Il/oVrNQfBJyCFoIij3tj1zPEPicC9qW372QLP8MkE6SeO+y714QPnod+RuwaqStnO wm8A== X-Gm-Message-State: AOJu0YwEhoG5sDRQ052T2i+aYF402EV0J1XgqNoGjdJk4RV3AXerEqyG rAnizE+tXB9U4q1yjXvKRnBmFZw/5OcgSWLkQxYjptRxonZurqdNPIpR+S9JnAL5kHt5Zuk93Pt z X-Google-Smtp-Source: AGHT+IH6f3ZuQwr8n6UcOXlDn7nuNUfSChMox+x4Ni59ik6keXWC2XLMWzGIXqkhS7acZoHyWKjLeA== X-Received: by 2002:a17:90a:e992:b0:2a2:437:18ec with SMTP id v18-20020a17090ae99200b002a2043718ecmr6230010pjy.46.1712598585027; Mon, 08 Apr 2024 10:49:45 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: Sven Schnelle , Helge Deller Subject: [PULL 09/35] target/hppa: Fix IIAOQ, IIASQ for pa2.0 Date: Mon, 8 Apr 2024 07:49:03 -1000 Message-Id: <20240408174929.862917-10-richard.henderson@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20240408174929.862917-1-richard.henderson@linaro.org> References: <20240408174929.862917-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+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::102c; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x102c.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+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1712598752445100001 Content-Type: text/plain; charset="utf-8" The contents of IIAOQ depend on PSW_W. Follow the text in "Interruption Instruction Address Queues", pages 2-13 through 2-15. Tested-by: Sven Schnelle Tested-by: Helge Deller Reported-by: Sven Schnelle Fixes: b10700d826c ("target/hppa: Update IIAOQ, IIASQ for pa2.0") Signed-off-by: Richard Henderson --- target/hppa/int_helper.c | 20 +++++++++++--------- target/hppa/sys_helper.c | 18 +++++++++--------- 2 files changed, 20 insertions(+), 18 deletions(-) diff --git a/target/hppa/int_helper.c b/target/hppa/int_helper.c index 90437a92cd..a667ee380d 100644 --- a/target/hppa/int_helper.c +++ b/target/hppa/int_helper.c @@ -107,14 +107,10 @@ void hppa_cpu_do_interrupt(CPUState *cs) =20 /* step 3 */ /* - * For pa1.x, IIASQ is simply a copy of IASQ. - * For pa2.0, IIASQ is the top bits of the virtual address, - * or zero if translation is disabled. + * IIASQ is the top bits of the virtual address, or zero if translation + * is disabled -- with PSW_W =3D=3D 0, this will reduce to the space. */ - if (!hppa_is_pa20(env)) { - env->cr[CR_IIASQ] =3D env->iasq_f >> 32; - env->cr_back[0] =3D env->iasq_b >> 32; - } else if (old_psw & PSW_C) { + if (old_psw & PSW_C) { env->cr[CR_IIASQ] =3D hppa_form_gva_psw(old_psw, env->iasq_f, env->iaoq_f) >> 32; env->cr_back[0] =3D @@ -123,8 +119,14 @@ void hppa_cpu_do_interrupt(CPUState *cs) env->cr[CR_IIASQ] =3D 0; env->cr_back[0] =3D 0; } - env->cr[CR_IIAOQ] =3D env->iaoq_f; - env->cr_back[1] =3D env->iaoq_b; + /* IIAOQ is the full offset for wide mode, or 32 bits for narrow mode.= */ + if (old_psw & PSW_W) { + env->cr[CR_IIAOQ] =3D env->iaoq_f; + env->cr_back[1] =3D env->iaoq_b; + } else { + env->cr[CR_IIAOQ] =3D (uint32_t)env->iaoq_f; + env->cr_back[1] =3D (uint32_t)env->iaoq_b; + } =20 if (old_psw & PSW_Q) { /* step 5 */ diff --git a/target/hppa/sys_helper.c b/target/hppa/sys_helper.c index 208e51c086..22d6c89964 100644 --- a/target/hppa/sys_helper.c +++ b/target/hppa/sys_helper.c @@ -78,21 +78,21 @@ target_ulong HELPER(swap_system_mask)(CPUHPPAState *env= , target_ulong nsm) =20 void HELPER(rfi)(CPUHPPAState *env) { - env->iasq_f =3D (uint64_t)env->cr[CR_IIASQ] << 32; - env->iasq_b =3D (uint64_t)env->cr_back[0] << 32; - env->iaoq_f =3D env->cr[CR_IIAOQ]; - env->iaoq_b =3D env->cr_back[1]; + uint64_t mask; + + cpu_hppa_put_psw(env, env->cr[CR_IPSW]); =20 /* * For pa2.0, IIASQ is the top bits of the virtual address. * To recreate the space identifier, remove the offset bits. + * For pa1.x, the mask reduces to no change to space. */ - if (hppa_is_pa20(env)) { - env->iasq_f &=3D ~env->iaoq_f; - env->iasq_b &=3D ~env->iaoq_b; - } + mask =3D gva_offset_mask(env->psw); =20 - cpu_hppa_put_psw(env, env->cr[CR_IPSW]); + env->iaoq_f =3D env->cr[CR_IIAOQ]; + env->iaoq_b =3D env->cr_back[1]; + env->iasq_f =3D (env->cr[CR_IIASQ] << 32) & ~(env->iaoq_f & mask); + env->iasq_b =3D (env->cr_back[0] << 32) & ~(env->iaoq_b & mask); } =20 static void getshadowregs(CPUHPPAState *env) --=20 2.34.1 From nobody Sat May 18 22:31:29 2024 Delivered-To: importer@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+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1712599007; cv=none; d=zohomail.com; s=zohoarc; b=BNlSxIy4EQFnvfKM4NhnfME2enklISX60BPO+/pMvsgPmJZOG7bwS9kP3fHvcgyV67dR7C+6LbESX0pyQ/o5e3gsOugff01WbqOR7gtFD+ESpNlRwZkisQ5SLqodYjCmtgQGfir2kQ6pZwqZKT+10YrQFcWkgttPwjQ5o0sjf2A= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1712599007; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=RcrZGxEnfZgrLqlhciK4hABUGUNHIg16hIoNjeHOda0=; b=mQ8xmsqNEdDdCIi8l5d0OrO4T6W+DIfRBaXaEzLoff6Gt6sdeLXHraDIYtgmKzhYHZRXJyZIx+E/4+h9zVs6VCP9kn8aOpQT2rG0l2TujxLn5e/rfL+WsiBYOJJrsgcGRJl7+n4/DbQfdXGR3MKTNIbKogy3cXCtGHNAE8HGR3A= 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+importer=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 1712599007772168.48323684869558; Mon, 8 Apr 2024 10:56:47 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1rtt7y-000201-4Y; Mon, 08 Apr 2024 13:49:54 -0400 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 1rtt7u-0001yR-IJ for qemu-devel@nongnu.org; Mon, 08 Apr 2024 13:49:50 -0400 Received: from mail-pj1-x1034.google.com ([2607:f8b0:4864:20::1034]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1rtt7s-0003dG-2s for qemu-devel@nongnu.org; Mon, 08 Apr 2024 13:49:50 -0400 Received: by mail-pj1-x1034.google.com with SMTP id 98e67ed59e1d1-2a484f772e2so1960967a91.3 for ; Mon, 08 Apr 2024 10:49:47 -0700 (PDT) Received: from stoup.. (098-147-007-212.res.spectrum.com. [98.147.7.212]) by smtp.gmail.com with ESMTPSA id ga15-20020a17090b038f00b0029c3bac0aa8sm8658432pjb.4.2024.04.08.10.49.45 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 08 Apr 2024 10:49:46 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1712598586; x=1713203386; darn=nongnu.org; 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=RcrZGxEnfZgrLqlhciK4hABUGUNHIg16hIoNjeHOda0=; b=BQRaTG9An/Xtzn/H8YzpEfiGRFcqRQeMI8oWvYWFQsjIrgsCCpXvm8OyOEepZM8xCf lfTwq5/R5zbIA0ju5yZ5HCIqEpkBwpV0QsVYCF3baPE8jVzP+iGeRceooSKL/YF0ET2O 6yDu9BCXKpXKB2DcFuMQmlmdShuBxJa8ZQQvAiUieLb7O3jT0Hj4MIeUWZ3pjrMmXYMy 1WwCh6H9ca/pYOGjo8UjdcOpfEQKIaWQXKo+CcPF3Ndkf7Hd2uwbGmEv7unDwJuM3VlU m35+MOupQWeuhNXMLkjwGNLj6G/oxmpRye5pNxtgI70zZ41NpCXq2hLdW2wZGaLrdpOX yc+g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1712598586; x=1713203386; 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=RcrZGxEnfZgrLqlhciK4hABUGUNHIg16hIoNjeHOda0=; b=ijPYaoC/qVYlxjwFFhIdp0bale6xYbYBwnKp1wKc6JQ1MuNfnJBQtMKIpX/nujmED4 BSlxKJ1PxqOrBGaaTIZFx3eZfQAmmcK+MxzUx+P1PD6w1hdfFCNWs4mWZ3Leb9UBO9jx +hveoJDIhkrzT/+whi+DlASUz9alWYpjkXQWFl3hF0LKzehwmGPPS6Q0mhgJE+/xnHgn ChMPLuKeD6bYCjWw26SSftj/X+cvSFZeoLNVmplSxmfEmVaZK8ZtcdJ09MAm+yw07AM/ DszjRjSjkYW1T64RMZAV8HE7YEoPFBK8C2VELV+fOE43+QgAGIZ7DpLbfNVmgiMfaaXf k91Q== X-Gm-Message-State: AOJu0YyquHiu6N4Ex5z0wwiEmYfS2l1AdQKKAnuXhIQUNsE8gGuAEkzy jC+9ZY4LoAhW9VF0OtkULJLjORanPYTz4S5Ex4djfWcQt33AduSRyHxC7ndiLjHXEKe8MT/aF99 N X-Google-Smtp-Source: AGHT+IHHMAKZhCZWVrABnWzz2ncsXhiolw8U1Q0qx5riK6QRc55ryS5wzY8nBgyntxp93aY6gmLegA== X-Received: by 2002:a17:90b:380e:b0:2a2:d10d:d30d with SMTP id mq14-20020a17090b380e00b002a2d10dd30dmr9806268pjb.26.1712598586570; Mon, 08 Apr 2024 10:49:46 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: Zack Buhman , Yoshinori Sato , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Subject: [PULL 10/35] target/sh4: mac.w: memory accesses are 16-bit words Date: Mon, 8 Apr 2024 07:49:04 -1000 Message-Id: <20240408174929.862917-11-richard.henderson@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20240408174929.862917-1-richard.henderson@linaro.org> References: <20240408174929.862917-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+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::1034; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x1034.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+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1712599009656100003 From: Zack Buhman Before this change, executing a code sequence such as: mova tblm,r0 mov r0,r1 mova tbln,r0 clrs clrmac mac.w @r0+,@r1+ mac.w @r0+,@r1+ .align 4 tblm: .word 0x1234 .word 0x5678 tbln: .word 0x9abc .word 0xdefg Does not result in correct behavior: Expected behavior: first macw : macl =3D 0x1234 * 0x9abc + 0x0 mach =3D 0x0 second macw: macl =3D 0x5678 * 0xdefg + 0xb00a630 mach =3D 0x0 Observed behavior (qemu-sh4eb, prior to this commit): first macw : macl =3D 0x5678 * 0xdefg + 0x0 mach =3D 0x0 second macw: (unaligned longword memory access, SIGBUS) Various SH-4 ISA manuals also confirm that `mac.w` is a 16-bit word memory access, not a 32-bit longword memory access. Signed-off-by: Zack Buhman Reviewed-by: Yoshinori Sato Reviewed-by: Philippe Mathieu-Daud=C3=A9 Message-Id: <20240402093756.27466-1-zack@buhman.org> Signed-off-by: Richard Henderson --- target/sh4/translate.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/target/sh4/translate.c b/target/sh4/translate.c index a9b1bc7524..6643c14dde 100644 --- a/target/sh4/translate.c +++ b/target/sh4/translate.c @@ -816,10 +816,10 @@ static void _decode_opc(DisasContext * ctx) TCGv arg0, arg1; arg0 =3D tcg_temp_new(); tcg_gen_qemu_ld_i32(arg0, REG(B7_4), ctx->memidx, - MO_TESL | MO_ALIGN); + MO_TESW | MO_ALIGN); arg1 =3D tcg_temp_new(); tcg_gen_qemu_ld_i32(arg1, REG(B11_8), ctx->memidx, - MO_TESL | MO_ALIGN); + MO_TESW | MO_ALIGN); gen_helper_macw(tcg_env, arg0, arg1); tcg_gen_addi_i32(REG(B11_8), REG(B11_8), 2); tcg_gen_addi_i32(REG(B7_4), REG(B7_4), 2); --=20 2.34.1 From nobody Sat May 18 22:31:29 2024 Delivered-To: importer@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+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1712598932; cv=none; d=zohomail.com; s=zohoarc; b=D6rb9qopdzSQhNQ7UYdyQsVtfkmiFm7CQcy/FoeSq8NckueAi+v4HnfJx0jyfr/XIVpl7IImWjdscWyTv/2vLL13lQQ+kMhYrMoNQrZMWBH/Rj7jQy4NzhFRtoCnXDNr+cFoDW8A8KBFhAekXl/V7En+JfenR3NOx6EYgpE5puY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1712598932; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=RlIBc4Oj7n9g5uv4QxhhxdXhuzA6b3JMjencPErHv6I=; b=UbuAEusL3wdD2f/N//cLNHWABuq/NwgB3U0OESwZaIX0Aml/1aPStsHUte0lz8vArluqhcf6Oo/+10YT1ekt9USTdRLIX4o5ctNd9IeXrndWq1rlFixFRF4Ipjz8Ksjhu7XB2mQ9T29ELBOhZccvmKgzc37hFDMCfh1UsWCsXuM= 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+importer=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 1712598932236530.1073810966517; Mon, 8 Apr 2024 10:55:32 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1rtt7y-00020W-Rz; Mon, 08 Apr 2024 13:49:54 -0400 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 1rtt7v-0001yc-2U for qemu-devel@nongnu.org; Mon, 08 Apr 2024 13:49:51 -0400 Received: from mail-pf1-x432.google.com ([2607:f8b0:4864:20::432]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1rtt7t-0003dW-DX for qemu-devel@nongnu.org; Mon, 08 Apr 2024 13:49:50 -0400 Received: by mail-pf1-x432.google.com with SMTP id d2e1a72fcca58-6ecee5c08e6so4365296b3a.3 for ; Mon, 08 Apr 2024 10:49:49 -0700 (PDT) Received: from stoup.. (098-147-007-212.res.spectrum.com. [98.147.7.212]) by smtp.gmail.com with ESMTPSA id ga15-20020a17090b038f00b0029c3bac0aa8sm8658432pjb.4.2024.04.08.10.49.46 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 08 Apr 2024 10:49:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1712598588; x=1713203388; darn=nongnu.org; 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=RlIBc4Oj7n9g5uv4QxhhxdXhuzA6b3JMjencPErHv6I=; b=E47VQeJXl4sKrC7f9Q4uB7mp8pi7Bsu6E7d5KVPy1einLWsbkB5tJVSW9IYtnHYKJV wvlVcwd6iKHofNeXZGZ7r5Nq+nN/fOBU+PYHovit2ubt2iDnu52KKjxo62kkcPJ7Fs4z PzA3os+WXdQoboHnlBI+w1cOlMVNagU0QdQHOizyqcMAoxUqL98nib5ra5BriPpPfOwp jUy/+RTwkXC8Y9DbRvZGQ/G9hCdMJiJcQKw9YoxzwN7nlTPHq8m4vyps0vPePzxW7XgD ZTkFDthPYpN6vEzfzf2yy4GUjkNWddX9uq1r+0VNzr5lcSANscJ4EMXkThQF04w045kX hyFQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1712598588; x=1713203388; 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=RlIBc4Oj7n9g5uv4QxhhxdXhuzA6b3JMjencPErHv6I=; b=e8b89/gL0RngVBrK6vc7lrRicZvzc+I+QdxXuLn8/vHvNz+f8VTBIfTAVQMD4Reenr MtPChRoxB4b+O50CES+sLDZ8Q9kzDnUJ24wG75C0KfvBW1/LPT8nAVbEL/NLocxFHBBy 2lGqP3KpGDaa7lcBGiIXDcg/yXpFDsOXQbXPTCLit4YQvh8d+tIeKvboXfdDeN22VotV en6eUVjJU93y+xIijlYh9sGsIpGuZSDsPFV5JU5f0iagjz8zQWuxpKXZnqSpfn74XUFN iF1q4uxuxlvqnyDLtJ1PnMOSlDI+Ufq2cmmu6Wao1J06MNVxjvEWg9E+JQ3D4864nPFe fLhQ== X-Gm-Message-State: AOJu0Yw5ezQhqI6B1+2D/Z8gzJhJeptaeyUBD1rrlHCo0AuWurkuU/Hd rwnH8GwSLvo2pudBjD71jiW0rEoAyvoDjrCdruTB2sJKZhGQCbjAni/nrPVzI3DSA8THJ/4zCIn C X-Google-Smtp-Source: AGHT+IF81M8ycils9Js378ZIl1yOXofWx8f2e+ggyjSFB+43Ih1fShZmf1Nkj/1Nu0fe1Lu6UjSYyA== X-Received: by 2002:a05:6a21:2d88:b0:1a7:7358:f10d with SMTP id ty8-20020a056a212d8800b001a77358f10dmr3677972pzb.16.1712598587836; Mon, 08 Apr 2024 10:49:47 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Subject: [PULL 11/35] target/sh4: Merge mach and macl into a union Date: Mon, 8 Apr 2024 07:49:05 -1000 Message-Id: <20240408174929.862917-12-richard.henderson@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20240408174929.862917-1-richard.henderson@linaro.org> References: <20240408174929.862917-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+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::432; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x432.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+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1712598933325100005 Allow host access to the entire 64-bit accumulator. Reviewed-by: Philippe Mathieu-Daud=C3=A9 Signed-off-by: Richard Henderson --- target/sh4/cpu.h | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/target/sh4/cpu.h b/target/sh4/cpu.h index 9211da6bde..d928bcf006 100644 --- a/target/sh4/cpu.h +++ b/target/sh4/cpu.h @@ -155,12 +155,22 @@ typedef struct CPUArchState { uint32_t pc; /* program counter */ uint32_t delayed_pc; /* target of delayed branch */ uint32_t delayed_cond; /* condition of delayed branch */ - uint32_t mach; /* multiply and accumulate high */ - uint32_t macl; /* multiply and accumulate low */ uint32_t pr; /* procedure register */ uint32_t fpscr; /* floating point status/control register = */ uint32_t fpul; /* floating point communication register */ =20 + /* multiply and accumulate: high, low and combined. */ + union { + uint64_t mac; + struct { +#if HOST_BIG_ENDIAN + uint32_t mach, macl; +#else + uint32_t macl, mach; +#endif + }; + }; + /* float point status register */ float_status fp_status; =20 --=20 2.34.1 From nobody Sat May 18 22:31:29 2024 Delivered-To: importer@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+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1712598680; cv=none; d=zohomail.com; s=zohoarc; b=Iuf8OZ5hnNjlhfmixS+FflRCE4tu8/u0OQzi0DUAdnzSk+kqGQHYmPt3NnLHwXgAky6lwMCz9t076A+BF50RDPn6fMUhwCmXMA6YJrY1EMoBhme6fuHMeqvb0bBpvqQnv2XMVkoC0bosmlGMuyAtoELHb2P8ek3q6kk4mKV8hFM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1712598680; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=kLktQTH6TNyDdnNQxMnhQfTJfTanNKRfEbSAV10avAE=; b=WCuGEjdFq942KpOG76ZIjOsjXzA3QGjxZSB1SVSNb+puzpriUUS+pngq8q0j42ZB/2HKi9wZf5//My9IZqZGJ9CokK0Idtobuq7HA3abcNPN67sC/QZC8V0y7dGYgIivMX0sTm19QbeCq14Cr4TTCDL1EfeGpmoyXuV3IgnjsM0= 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+importer=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 1712598680088864.6402989795648; Mon, 8 Apr 2024 10:51:20 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1rtt7y-00020k-W1; Mon, 08 Apr 2024 13:49:55 -0400 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 1rtt7w-0001zI-BD for qemu-devel@nongnu.org; Mon, 08 Apr 2024 13:49:52 -0400 Received: from mail-pf1-x429.google.com ([2607:f8b0:4864:20::429]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1rtt7u-0003dn-Hn for qemu-devel@nongnu.org; Mon, 08 Apr 2024 13:49:52 -0400 Received: by mail-pf1-x429.google.com with SMTP id d2e1a72fcca58-6ed627829e6so593436b3a.1 for ; Mon, 08 Apr 2024 10:49:50 -0700 (PDT) Received: from stoup.. (098-147-007-212.res.spectrum.com. [98.147.7.212]) by smtp.gmail.com with ESMTPSA id ga15-20020a17090b038f00b0029c3bac0aa8sm8658432pjb.4.2024.04.08.10.49.48 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 08 Apr 2024 10:49:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1712598589; x=1713203389; darn=nongnu.org; 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=kLktQTH6TNyDdnNQxMnhQfTJfTanNKRfEbSAV10avAE=; b=JyW3yjGbxrXay8LQZTPYDTOpUm0NxMdAIsBrN85eCSsyjq5RgwJd8ymf7+VNv8OYtB oqo1vVoa9bDC0aO8GsvpiRMypwCzS3EsBV+IvfRiT5WXQGrjv2WnCq5OgQwKpJvg7eLV uiUrtzAU5d0CGoiSVDpNsdpdk5vzHfWZvAPtlfmqLBoZzDCpMUp8RdAw6GaYeo4JPd5d 73KFL7gYM+mkClQ0oxJWh3rbUL/IOjl70fGpJX55Rw+q1th9i4eCcCXJZWmT3sCUayX0 JQnB8Z5RpciiXit17c/TXiPTaukOtFAGojazjRrSBQ4Tz3ackUQTBH+Rie396KSQ7DC4 EC8Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1712598589; x=1713203389; 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=kLktQTH6TNyDdnNQxMnhQfTJfTanNKRfEbSAV10avAE=; b=R86ae+wDHP0cL60385bMCkiYjnf8vBxZPM0mANUMYCUC4mYudnitpPhBptLyaTw5DS RsnTa2fYci1wxouKm/HYEKBnGjWuIhbLKC3+Y+y/McxKSelr0FMBpYYLk1kXvMacQwns D8C7YcgrYhTuMCWaLvKOHhSDOp1dQ+vLptQ7keK7TG7mI5GURToWHot4prUBUh+jQeuP xNUnEi6GOAGgbWh8aJUoS2KtxKDXPnhXh/MrABVLL6hrH0P7eI3gI8KardUhaToYkD3J b//PtvNue+BtNv/UDANX8GhESc7PW+BIogkR0zb1QUCBuQjNcfEblz+xp3yslQKI3cSk Ja1A== X-Gm-Message-State: AOJu0YyE3tMb+c/iWeB6ZX3Pf0dFvyGQiaA4WohtgYqn1sTdK676Es7K GVcO9a2FFjsoPxhX9RG+PpQvyTpCElXVZgqlkaaGOytyXqeFsOF0tlnVAJrLHHa5dVY872LC/d4 f X-Google-Smtp-Source: AGHT+IGLGago4MYds9brC4RDeqhnxRTPUMB1iiLjNcR6sU2wF/lZxSxR6npdSHFeccBvmnb6V5fU1A== X-Received: by 2002:a05:6a20:5521:b0:1a3:4c97:23a2 with SMTP id ko33-20020a056a20552100b001a34c9723a2mr9262532pzb.20.1712598589245; Mon, 08 Apr 2024 10:49:49 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: Zack Buhman , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Subject: [PULL 12/35] target/sh4: Fix mac.l with saturation enabled Date: Mon, 8 Apr 2024 07:49:06 -1000 Message-Id: <20240408174929.862917-13-richard.henderson@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20240408174929.862917-1-richard.henderson@linaro.org> References: <20240408174929.862917-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+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::429; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x429.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+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1712598682231100002 From: Zack Buhman The saturation arithmetic logic in helper_macl is not correct. I tested and verified this behavior on a SH7091. Signed-off-by: Zack Buhman Message-Id: <20240404162641.27528-2-zack@buhman.org> [rth: Reformat helper_macl, add a test case.] Signed-off-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- target/sh4/helper.h | 2 +- target/sh4/op_helper.c | 23 ++++++------ tests/tcg/sh4/test-macl.c | 67 +++++++++++++++++++++++++++++++++++ tests/tcg/sh4/Makefile.target | 5 +++ 4 files changed, 86 insertions(+), 11 deletions(-) create mode 100644 tests/tcg/sh4/test-macl.c diff --git a/target/sh4/helper.h b/target/sh4/helper.h index 8d792f6b55..64056e4a39 100644 --- a/target/sh4/helper.h +++ b/target/sh4/helper.h @@ -11,7 +11,7 @@ DEF_HELPER_3(movcal, void, env, i32, i32) DEF_HELPER_1(discard_movcal_backup, void, env) DEF_HELPER_2(ocbi, void, env, i32) =20 -DEF_HELPER_3(macl, void, env, i32, i32) +DEF_HELPER_3(macl, void, env, s32, s32) DEF_HELPER_3(macw, void, env, i32, i32) =20 DEF_HELPER_2(ld_fpscr, void, env, i32) diff --git a/target/sh4/op_helper.c b/target/sh4/op_helper.c index 4559d0d376..d0bae0cc00 100644 --- a/target/sh4/op_helper.c +++ b/target/sh4/op_helper.c @@ -158,20 +158,23 @@ void helper_ocbi(CPUSH4State *env, uint32_t address) } } =20 -void helper_macl(CPUSH4State *env, uint32_t arg0, uint32_t arg1) +void helper_macl(CPUSH4State *env, int32_t arg0, int32_t arg1) { + const int64_t min =3D -(1ll << 47); + const int64_t max =3D (1ll << 47) - 1; + int64_t mul =3D (int64_t)arg0 * arg1; + int64_t mac =3D env->mac; int64_t res; =20 - res =3D ((uint64_t) env->mach << 32) | env->macl; - res +=3D (int64_t) (int32_t) arg0 *(int64_t) (int32_t) arg1; - env->mach =3D (res >> 32) & 0xffffffff; - env->macl =3D res & 0xffffffff; - if (env->sr & (1u << SR_S)) { - if (res < 0) - env->mach |=3D 0xffff0000; - else - env->mach &=3D 0x00007fff; + if (!(env->sr & (1u << SR_S))) { + res =3D mac + mul; + } else if (sadd64_overflow(mac, mul, &res)) { + res =3D mac < 0 ? min : max; + } else { + res =3D MIN(MAX(res, min), max); } + + env->mac =3D res; } =20 void helper_macw(CPUSH4State *env, uint32_t arg0, uint32_t arg1) diff --git a/tests/tcg/sh4/test-macl.c b/tests/tcg/sh4/test-macl.c new file mode 100644 index 0000000000..b66c854365 --- /dev/null +++ b/tests/tcg/sh4/test-macl.c @@ -0,0 +1,67 @@ +/* SPDX-License-Identifier: GPL-2.0-or-later */ + +#include +#include +#include + +#define MACL_S_MIN (-(1ll << 47)) +#define MACL_S_MAX ((1ll << 47) - 1) + +int64_t mac_l(int64_t mac, const int32_t *a, const int32_t *b) +{ + register uint32_t macl __asm__("macl") =3D mac; + register uint32_t mach __asm__("mach") =3D mac >> 32; + + asm volatile("mac.l @%0+,@%1+" + : "+r"(a), "+r"(b), "+x"(macl), "+x"(mach)); + + return ((uint64_t)mach << 32) | macl; +} + +typedef struct { + int64_t mac; + int32_t a, b; + int64_t res[2]; +} Test; + +__attribute__((noinline)) +void test(const Test *t, int sat) +{ + int64_t res; + + if (sat) { + asm volatile("sets"); + } else { + asm volatile("clrs"); + } + res =3D mac_l(t->mac, &t->a, &t->b); + + if (res !=3D t->res[sat]) { + fprintf(stderr, "%#llx + (%#x * %#x) =3D %#llx -- got %#llx\n", + t->mac, t->a, t->b, t->res[sat], res); + abort(); + } +} + +int main() +{ + static const Test tests[] =3D { + { 0x00007fff12345678ll, INT32_MAX, INT32_MAX, + { 0x40007ffe12345679ll, MACL_S_MAX } }, + { MACL_S_MIN, -1, 1, + { 0xffff7fffffffffffll, MACL_S_MIN } }, + { INT64_MIN, -1, 1, + { INT64_MAX, MACL_S_MIN } }, + { 0x00007fff00000000ll, INT32_MAX, INT32_MAX, + { 0x40007ffe00000001ll, MACL_S_MAX } }, + { 4, 1, 2, { 6, 6 } }, + { -4, -1, -2, { -2, -2 } }, + }; + + for (int i =3D 0; i < sizeof(tests) / sizeof(tests[0]); ++i) { + for (int j =3D 0; j < 2; ++j) { + test(&tests[i], j); + } + } + return 0; +} diff --git a/tests/tcg/sh4/Makefile.target b/tests/tcg/sh4/Makefile.target index 16eaa850a8..9a11c10924 100644 --- a/tests/tcg/sh4/Makefile.target +++ b/tests/tcg/sh4/Makefile.target @@ -9,3 +9,8 @@ run-signals: signals $(call skip-test, $<, "BROKEN") run-plugin-signals-with-%: $(call skip-test, $<, "BROKEN") + +VPATH +=3D $(SRC_PATH)/tests/tcg/sh4 + +test-macl: CFLAGS +=3D -O -g +TESTS +=3D test-macl --=20 2.34.1 From nobody Sat May 18 22:31:29 2024 Delivered-To: importer@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+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1712598996; cv=none; d=zohomail.com; s=zohoarc; b=FlPHP3VpXZNKPKIaNUysyceLZ9dbVyGIGEMN/ma8tu9hlqHWacKAkYlxKrUgdLq3O8C7p4O368QiDC7CbUSmdSdZ9GmCSvdp/+kOWcrRETHqobba1lvlFfhO3D2nkJibywNCwFqXO2MaUBZOvffSFLJawGGIZhpHZlkMjPzJzXo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1712598996; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=/A33LtPdfhd6ZXxcd3sa54LWhQX38sygsNQTelB9lyU=; b=LPmv7ghpdTVMc5eclvgjtWJZI47VjSGmU5PcZW7/by77H5qVDXZxLtsPOCyjDy68+2uk9Gn6wl0aiPOTHoKNTrvtzgANy/By2nhCfWZxH/PgwV90+YYQTDdkwBx0q6/fQfZeKZv5CQDh82oeq8OX3kZTrc25keEnAM6G9LrcaJ0= 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+importer=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 1712598996888244.96935803356735; Mon, 8 Apr 2024 10:56:36 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1rtt84-00022T-4l; Mon, 08 Apr 2024 13:50:00 -0400 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 1rtt7y-000203-5W for qemu-devel@nongnu.org; Mon, 08 Apr 2024 13:49:54 -0400 Received: from mail-pg1-x52b.google.com ([2607:f8b0:4864:20::52b]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1rtt7w-0003eD-EW for qemu-devel@nongnu.org; Mon, 08 Apr 2024 13:49:53 -0400 Received: by mail-pg1-x52b.google.com with SMTP id 41be03b00d2f7-5d4d15ec7c5so3810946a12.1 for ; Mon, 08 Apr 2024 10:49:52 -0700 (PDT) Received: from stoup.. (098-147-007-212.res.spectrum.com. [98.147.7.212]) by smtp.gmail.com with ESMTPSA id ga15-20020a17090b038f00b0029c3bac0aa8sm8658432pjb.4.2024.04.08.10.49.49 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 08 Apr 2024 10:49:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1712598591; x=1713203391; darn=nongnu.org; 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=/A33LtPdfhd6ZXxcd3sa54LWhQX38sygsNQTelB9lyU=; b=Pub0Ka1bBmoTMN8gYNWU8cZuP1sW5EytI37CJPrlNg0gj1BrgwWzSc4X8IzgCeLtXo rdymg94ESqe7+pcKOqRF7NOJSg8M4Oogl6FxqKAhFYLQL1iL8t5dOlJ2EV4eE8Mjzk9m cOexCGDpyeYpscqvrF8ThqayPFgORLlFY5eSW3s+cuUwv2z8qPR5NVeBNUBme586zrP8 C2p3UZiktj8cdTsjohI840IT4F8OZzFJ9zwzRiwlxtq0LZiSIMFelIPWaXEauPOJK8Xp hZCIEJNKCBWlQHpU0gK25dN8/3jpnhRHcHRfC5mP/Duu+ysLT2Xn0eimkZuPNxHuDDM6 K9QA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1712598591; x=1713203391; 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=/A33LtPdfhd6ZXxcd3sa54LWhQX38sygsNQTelB9lyU=; b=cyWaHQEzd0Id8qurdEySv+yVPh9c166a5mgZO9gLKZrh3LfF1UTRjJle7r9pBLHvu9 Or2hPZaWFTPIEtpZySy/DhQRC/tU7sDMEhLWEz5wKRLa77EIwdv7eYA35ue7Gmo3n3vm LURM1Xj1ohGqgiikAMv/Us9dFu0y4e7L8v8rbIc6qlYhEfYZz3cTLVhcBmUo7tPPiaG5 RRJoyCm29EhKnSbllAO4BDy9WDAjN+XvuGSwucax5QhbA1x00VsGadrp6dq/mxFvzwju POLZOeW3ceKD0rgrcdufcA70pMWpRNjQy+/DjRZn0CyJzeF+pPO5M3XJTqpUf9AfmBYN fcFA== X-Gm-Message-State: AOJu0YwEwfWlm0y/f8IK8nBrzi22c0m6tI6XGG8WZf31pnHz6Fycm7x2 Yf6fQZDDvnGXLlt7OeXsjqeNNGycOMciYDghEwN9vqQu8K0szwGTgvGrYHQRCKv2Hth7fjh+mFv / X-Google-Smtp-Source: AGHT+IFft8cs0XDe8I/eqqEZZvK7sfanR+9vc3nsqp6O8KPU62QvhKjNyRAjmJhlrRDgaA/GUf/UrQ== X-Received: by 2002:a17:90a:3904:b0:2a2:bbdb:c4aa with SMTP id y4-20020a17090a390400b002a2bbdbc4aamr8015375pjb.30.1712598590798; Mon, 08 Apr 2024 10:49:50 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: Zack Buhman , Yoshinori Sato , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Subject: [PULL 13/35] target/sh4: Fix mac.w with saturation enabled Date: Mon, 8 Apr 2024 07:49:07 -1000 Message-Id: <20240408174929.862917-14-richard.henderson@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20240408174929.862917-1-richard.henderson@linaro.org> References: <20240408174929.862917-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+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::52b; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x52b.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+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1712598997735100003 From: Zack Buhman The saturation arithmetic logic in helper_macw is not correct. I tested and verified this behavior on a SH7091. Reviewd-by: Yoshinori Sato Signed-off-by: Zack Buhman Message-Id: <20240405233802.29128-3-zack@buhman.org> [rth: Reformat helper_macw, add a test case.] Signed-off-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- target/sh4/helper.h | 2 +- target/sh4/op_helper.c | 28 +++++++++------- tests/tcg/sh4/test-macw.c | 61 +++++++++++++++++++++++++++++++++++ tests/tcg/sh4/Makefile.target | 3 ++ 4 files changed, 82 insertions(+), 12 deletions(-) create mode 100644 tests/tcg/sh4/test-macw.c diff --git a/target/sh4/helper.h b/target/sh4/helper.h index 64056e4a39..29011d3dbb 100644 --- a/target/sh4/helper.h +++ b/target/sh4/helper.h @@ -12,7 +12,7 @@ DEF_HELPER_1(discard_movcal_backup, void, env) DEF_HELPER_2(ocbi, void, env, i32) =20 DEF_HELPER_3(macl, void, env, s32, s32) -DEF_HELPER_3(macw, void, env, i32, i32) +DEF_HELPER_3(macw, void, env, s32, s32) =20 DEF_HELPER_2(ld_fpscr, void, env, i32) =20 diff --git a/target/sh4/op_helper.c b/target/sh4/op_helper.c index d0bae0cc00..99394b714c 100644 --- a/target/sh4/op_helper.c +++ b/target/sh4/op_helper.c @@ -177,22 +177,28 @@ void helper_macl(CPUSH4State *env, int32_t arg0, int3= 2_t arg1) env->mac =3D res; } =20 -void helper_macw(CPUSH4State *env, uint32_t arg0, uint32_t arg1) +void helper_macw(CPUSH4State *env, int32_t arg0, int32_t arg1) { - int64_t res; + /* Inputs are already sign-extended from 16 bits. */ + int32_t mul =3D arg0 * arg1; =20 - res =3D ((uint64_t) env->mach << 32) | env->macl; - res +=3D (int64_t) (int16_t) arg0 *(int64_t) (int16_t) arg1; - env->mach =3D (res >> 32) & 0xffffffff; - env->macl =3D res & 0xffffffff; if (env->sr & (1u << SR_S)) { - if (res < -0x80000000) { + /* + * In saturation arithmetic mode, the accumulator is 32-bit + * with carry. MACH is not considered during the addition + * operation nor the 32-bit saturation logic. + */ + int32_t res, macl =3D env->macl; + + if (sadd32_overflow(macl, mul, &res)) { + res =3D macl < 0 ? INT32_MIN : INT32_MAX; + /* If overflow occurs, the MACH register is set to 1. */ env->mach =3D 1; - env->macl =3D 0x80000000; - } else if (res > 0x000000007fffffff) { - env->mach =3D 1; - env->macl =3D 0x7fffffff; } + env->macl =3D res; + } else { + /* In non-saturation arithmetic mode, the accumulator is 64-bit */ + env->mac +=3D mul; } } =20 diff --git a/tests/tcg/sh4/test-macw.c b/tests/tcg/sh4/test-macw.c new file mode 100644 index 0000000000..4eceec8634 --- /dev/null +++ b/tests/tcg/sh4/test-macw.c @@ -0,0 +1,61 @@ +/* SPDX-License-Identifier: GPL-2.0-or-later */ + +#include +#include +#include + +int64_t mac_w(int64_t mac, const int16_t *a, const int16_t *b) +{ + register uint32_t macl __asm__("macl") =3D mac; + register uint32_t mach __asm__("mach") =3D mac >> 32; + + asm volatile("mac.w @%0+,@%1+" + : "+r"(a), "+r"(b), "+x"(macl), "+x"(mach)); + + return ((uint64_t)mach << 32) | macl; +} + +typedef struct { + int64_t mac; + int16_t a, b; + int64_t res[2]; +} Test; + +__attribute__((noinline)) +void test(const Test *t, int sat) +{ + int64_t res; + + if (sat) { + asm volatile("sets"); + } else { + asm volatile("clrs"); + } + res =3D mac_w(t->mac, &t->a, &t->b); + + if (res !=3D t->res[sat]) { + fprintf(stderr, "%#llx + (%#x * %#x) =3D %#llx -- got %#llx\n", + t->mac, t->a, t->b, t->res[sat], res); + abort(); + } +} + +int main() +{ + static const Test tests[] =3D { + { 0, 2, 3, { 6, 6 } }, + { 0x123456787ffffffell, 2, -3, + { 0x123456787ffffff8ll, 0x123456787ffffff8ll } }, + { 0xabcdef127ffffffall, 2, 3, + { 0xabcdef1280000000ll, 0x000000017fffffffll } }, + { 0xfffffffffll, INT16_MAX, INT16_MAX, + { 0x103fff0000ll, 0xf3fff0000ll } }, + }; + + for (int i =3D 0; i < sizeof(tests) / sizeof(tests[0]); ++i) { + for (int j =3D 0; j < 2; ++j) { + test(&tests[i], j); + } + } + return 0; +} diff --git a/tests/tcg/sh4/Makefile.target b/tests/tcg/sh4/Makefile.target index 9a11c10924..4d09291c0c 100644 --- a/tests/tcg/sh4/Makefile.target +++ b/tests/tcg/sh4/Makefile.target @@ -14,3 +14,6 @@ VPATH +=3D $(SRC_PATH)/tests/tcg/sh4 =20 test-macl: CFLAGS +=3D -O -g TESTS +=3D test-macl + +test-macw: CFLAGS +=3D -O -g +TESTS +=3D test-macw --=20 2.34.1 From nobody Sat May 18 22:31:29 2024 Delivered-To: importer@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+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1712598685; cv=none; d=zohomail.com; s=zohoarc; b=WxUKu0qyds/WnEg7tV9URKa8j3v7yqOm96dNji/2WhRTd1+NpXmkNGmwvmDAdkgqL0WG1gXksDkOTm2IS4vZDb5CDlR5PDGkgyQYfFO3r1w7Jq8Le7J3p4TK6mQ27HoHWiru3yi2nO/hbFT7qSZ6vqrkvY6hXXAnDU/hZj/+EPk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1712598685; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=dcOly76/DhggOn/gIOyjbUFt0Yi/pTy/JSDCl4K3h8A=; b=Tb3V0qau3LBVgQDIp/ETG5tuknP+6TfutbO/UDM0yv9kS5MfNjnCAF9BivQA0gjigpcgr+/XYvOSiinfOYiYFNXhc185epTDz8N6+m93hNBJWG6Rvf3kGarFfMWVW86cvJ3rdOqg1QSIfRAKlORU7zQUUXoR4ll34jJba6vEWI8= 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+importer=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 1712598685731180.37594114779404; Mon, 8 Apr 2024 10:51:25 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1rtt80-00021G-Mi; Mon, 08 Apr 2024 13:49:56 -0400 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 1rtt7z-000211-DO for qemu-devel@nongnu.org; Mon, 08 Apr 2024 13:49:55 -0400 Received: from mail-pg1-x535.google.com ([2607:f8b0:4864:20::535]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1rtt7x-0003eO-Nw for qemu-devel@nongnu.org; Mon, 08 Apr 2024 13:49:55 -0400 Received: by mail-pg1-x535.google.com with SMTP id 41be03b00d2f7-5dbcfa0eb5dso3423624a12.3 for ; Mon, 08 Apr 2024 10:49:53 -0700 (PDT) Received: from stoup.. (098-147-007-212.res.spectrum.com. [98.147.7.212]) by smtp.gmail.com with ESMTPSA id ga15-20020a17090b038f00b0029c3bac0aa8sm8658432pjb.4.2024.04.08.10.49.51 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 08 Apr 2024 10:49:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1712598592; x=1713203392; darn=nongnu.org; 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=dcOly76/DhggOn/gIOyjbUFt0Yi/pTy/JSDCl4K3h8A=; b=fe7aSgb4tOoRph5PuEeOTEVxldxZW8mMFcw3oObh7JhdNTA/tL1QquXF3rCmdVjd+D yHutsxrT2CxlPbwtXF4buIk1xQ5zjJs0hSI3Me3gOxkAFJh0VZ/pn5dbpanTbnt8r+o8 AcrNVhmjDWTBF7qWn1tUDgUPpUhlIISqbselKydfIgCU4LFMpqvyhApxW/HwpP6U/rUO RTiqCLLP2s2Op+8/gmngKpecJj+DTCk6u+Xjx+Vy/kGkfkoyrh8NRiaaOebF4qcd8G4Q MobCYRCwHKp8FIp6PYG0uhsCfuJ16+ANk1wI6DQqCxlSe51W4KfYsfRXm5AWH44HwJkS yxhQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1712598592; x=1713203392; 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=dcOly76/DhggOn/gIOyjbUFt0Yi/pTy/JSDCl4K3h8A=; b=r/k5FpphgkGC2Ayr+PYaKoyzK4vUZA59r/POT5XPOgktTvGUwK4f7gLTDmGcVzTaLo AL2R0mrCur8gbJRfq7t/daarYViXsw+ZP1NnpOccrGWmSw8AhANHgwP9/CLKA6PUcuCv LJ03cHmSIRthXOIq5FzX/4KPAfsdFVjd9D2Lw6/dpplo01fnzGkrOPyYtxHG0/ehkssy Cm1zXqCji/VOYDjxjUvXsk/NvgoEIgNma2hnDntApLRylMoCOGI4WPaq63B3+YP/iIH/ j6f4VDls+vtoIZaAAOC8nY6uavY+D/SEO7uS9s4AfmpJCCqRH2Ba/ththKfNYVFBDQjD ejlw== X-Gm-Message-State: AOJu0YxtIybQyYmD38ZdBwxNlzsob4t2iP23PaU5K8hseBUE8ECIFwfX vM3/aZCPvStDU5sPdpn6R2nsANsxbWTbg0Jhs1M76ogEkplfImZ4MTW249r6L+QoLp4MmafCkQV i X-Google-Smtp-Source: AGHT+IFiZwCw7WInyBhBXyvOvlay8fXeihUZXA0Y5DtaKagZLzKhRnvNZQDkGDWgWSnhQm/l6qlqUA== X-Received: by 2002:a17:90a:1b8a:b0:2a2:5ef8:ae81 with SMTP id w10-20020a17090a1b8a00b002a25ef8ae81mr6960836pjc.3.1712598592323; Mon, 08 Apr 2024 10:49:52 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: Zack Buhman , Yoshinori Sato Subject: [PULL 14/35] target/sh4: add missing CHECK_NOT_DELAY_SLOT Date: Mon, 8 Apr 2024 07:49:08 -1000 Message-Id: <20240408174929.862917-15-richard.henderson@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20240408174929.862917-1-richard.henderson@linaro.org> References: <20240408174929.862917-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+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::535; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x535.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+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1712598686299100011 Content-Type: text/plain; charset="utf-8" From: Zack Buhman CHECK_NOT_DELAY_SLOT is correctly applied to the branch-related instructions, but not to the PC-relative mov* instructions. I verified the existence of an illegal slot exception on a SH7091 when any of these instructions are attempted inside a delay slot. This also matches the behavior described in the SH-4 ISA manual. Signed-off-by: Zack Buhman Reviewed-by: Richard Henderson Message-Id: <20240407150705.5965-1-zack@buhman.org> Signed-off-by: Richard Henderson Reviewd-by: Yoshinori Sato --- target/sh4/translate.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/target/sh4/translate.c b/target/sh4/translate.c index 6643c14dde..ebb6c901bf 100644 --- a/target/sh4/translate.c +++ b/target/sh4/translate.c @@ -523,6 +523,7 @@ static void _decode_opc(DisasContext * ctx) tcg_gen_movi_i32(REG(B11_8), B7_0s); return; case 0x9000: /* mov.w @(disp,PC),Rn */ + CHECK_NOT_DELAY_SLOT { TCGv addr =3D tcg_constant_i32(ctx->base.pc_next + 4 + B7_0 * = 2); tcg_gen_qemu_ld_i32(REG(B11_8), addr, ctx->memidx, @@ -530,6 +531,7 @@ static void _decode_opc(DisasContext * ctx) } return; case 0xd000: /* mov.l @(disp,PC),Rn */ + CHECK_NOT_DELAY_SLOT { TCGv addr =3D tcg_constant_i32((ctx->base.pc_next + 4 + B7_0 *= 4) & ~3); tcg_gen_qemu_ld_i32(REG(B11_8), addr, ctx->memidx, @@ -1236,6 +1238,7 @@ static void _decode_opc(DisasContext * ctx) } return; case 0xc700: /* mova @(disp,PC),R0 */ + CHECK_NOT_DELAY_SLOT tcg_gen_movi_i32(REG(0), ((ctx->base.pc_next & 0xfffffffc) + 4 + B7_0 * 4) & ~3); return; --=20 2.34.1 From nobody Sat May 18 22:31:29 2024 Delivered-To: importer@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+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1712598686; cv=none; d=zohomail.com; s=zohoarc; b=GlaPTkAddZv9P8IF5Ec47SI+7XO42eBodG7XqPS41DF+GHCJ/3UUzhuoJaRq5mqCnMoKdMBUbDE5CK/tBigVPDdbMURSWYkIgtzEot6efGaPQ37jv652jjdIrZsBBJZrKZ2bCDQ44OHgN0l8NosO9MYcTcPK6ambG4GcebZ9bJA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1712598686; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=cRQqZ9oBK6iehJFrs+uDcTw60o+LKkDegjDNYSUR+vc=; b=WIqsgjG3jHylEFmn8keP0+cc6rfT+Ch7H5NTGJwS0KUQarCeA8Lw1VLqy/jUsDyOIT43Kt7DqlpzkpIdR/mGFBaAd92mXSWIDrHABwlfTS7rwQC52w2oLPAUVffS8HsuGvNUi76O5vJkLIr9BOe7C94Oqe0gsu9nmXuqjg5o7aA= 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+importer=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 171259868606433.72308975425028; Mon, 8 Apr 2024 10:51:26 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1rtt82-00021j-Gr; Mon, 08 Apr 2024 13:49:58 -0400 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 1rtt81-00021J-1a for qemu-devel@nongnu.org; Mon, 08 Apr 2024 13:49:57 -0400 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 1rtt7y-0003eZ-Vx for qemu-devel@nongnu.org; Mon, 08 Apr 2024 13:49:56 -0400 Received: by mail-pj1-x1035.google.com with SMTP id 98e67ed59e1d1-2a559928f46so356889a91.0 for ; Mon, 08 Apr 2024 10:49:54 -0700 (PDT) Received: from stoup.. (098-147-007-212.res.spectrum.com. [98.147.7.212]) by smtp.gmail.com with ESMTPSA id ga15-20020a17090b038f00b0029c3bac0aa8sm8658432pjb.4.2024.04.08.10.49.52 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 08 Apr 2024 10:49:53 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1712598594; x=1713203394; darn=nongnu.org; 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=cRQqZ9oBK6iehJFrs+uDcTw60o+LKkDegjDNYSUR+vc=; b=HGCQM44MjAuwF3wUiEPfynqh9i3FG6wxDFLiimmfFGg3Sshza/iP/FolAFTKbRtmAG GDRSb/kr4CXjZOChbGkgSSs4MLEUPBcJwfwCmuO4CJC4HsQQjFLMOG0g2u6BJb0sxVbn 7Vxafz1pr+uCl7FdvVPO5FWnT6s+0UW1DjdpMd5SBwwaDe90Cq8hbcGRkBpyJ11n13x1 ZGoS+wLtAxlLvUntCQfpu0/NaXlyuMTbO+4iPLb6CWKjYw3G23H6cTgbW11z29tBldTy LfpMW0dcvuU7EBi4a7X2Em/PeqkoX7udUDxLBOXrbXa0aw/2Rz5KpWE6s+vY/dgIni7N Ugqg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1712598594; x=1713203394; 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=cRQqZ9oBK6iehJFrs+uDcTw60o+LKkDegjDNYSUR+vc=; b=wkpcKaYZMj/n+ZQ7sHT+2x+q2lVkceCaLVLfltHe97t2HG/myTeVwyVEU4qMHeFrnm bQ0jDdy9C28ymwyrOmW5wLrJ+nWNV4PYHvmOPKZQ2rSygWSJFatY8h1ZxyKrVIMw789i ydghdu2C74hYfjAjQp/uZtCOAHLqkF/vHR9aBaVduDL4Bye5enRuI/oQkHW59eeFQfEu JnI392Jp1CTxk7DeC4PpLiTYs/ZuAbN6Ft7a6va4wKkMW2+2jT68V8JsZ7+QGwtwlrrT 82wqq9QHH5Kh5sEuygrGF8KpTTwC2U8ap6tOMUDt+5qTpKNYuSqXRy3wuDqyRm3NCzpf q70w== X-Gm-Message-State: AOJu0Yzl1tzvEaA/AmaPPW74gH+SacE+V/l9DODXxdx1oRfcPRt3EKFr zH1pjC/GzHSjcUtBm3G96xxLYvx4/6GtzEM1tAX/I9S3+2JSt0RuS7pmyyQXhPXqD1TRZwQ3jcH K X-Google-Smtp-Source: AGHT+IHY/uyeF+5qClnPaueU6w0Sqq2uwjffvq2z772WNcRJTTx0YDS6sUwUuqaSgAi5BRXu4INeMw== X-Received: by 2002:a17:90b:4a09:b0:2a5:1e47:a927 with SMTP id kk9-20020a17090b4a0900b002a51e47a927mr3067743pjb.5.1712598593724; Mon, 08 Apr 2024 10:49:53 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: Keith Packard Subject: [PULL 15/35] target/m68k: Map FPU exceptions to FPSR register Date: Mon, 8 Apr 2024 07:49:09 -1000 Message-Id: <20240408174929.862917-16-richard.henderson@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20240408174929.862917-1-richard.henderson@linaro.org> References: <20240408174929.862917-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+importer=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+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1712598688141100015 Content-Type: text/plain; charset="utf-8" From: Keith Packard Add helpers for reading/writing the 68881 FPSR register so that changes in floating point exception state can be seen by the application. Call these helpers in pre_load/post_load hooks to synchronize exception state. Signed-off-by: Keith Packard Reviewed-by: Richard Henderson Message-Id: <20230803035231.429697-1-keithp@keithp.com> Signed-off-by: Richard Henderson --- target/m68k/cpu.h | 3 +- target/m68k/helper.h | 2 ++ target/m68k/cpu.c | 12 +++++-- target/m68k/fpu_helper.c | 72 ++++++++++++++++++++++++++++++++++++++++ target/m68k/helper.c | 4 +-- target/m68k/translate.c | 4 +-- 6 files changed, 90 insertions(+), 7 deletions(-) diff --git a/target/m68k/cpu.h b/target/m68k/cpu.h index 346427e144..e184239a81 100644 --- a/target/m68k/cpu.h +++ b/target/m68k/cpu.h @@ -199,7 +199,8 @@ void cpu_m68k_set_ccr(CPUM68KState *env, uint32_t); void cpu_m68k_set_sr(CPUM68KState *env, uint32_t); void cpu_m68k_restore_fp_status(CPUM68KState *env); void cpu_m68k_set_fpcr(CPUM68KState *env, uint32_t val); - +uint32_t cpu_m68k_get_fpsr(CPUM68KState *env); +void cpu_m68k_set_fpsr(CPUM68KState *env, uint32_t val); =20 /* * Instead of computing the condition codes after each m68k instruction, diff --git a/target/m68k/helper.h b/target/m68k/helper.h index 2bbe0dc032..95aa5e53bb 100644 --- a/target/m68k/helper.h +++ b/target/m68k/helper.h @@ -54,6 +54,8 @@ DEF_HELPER_4(fsdiv, void, env, fp, fp, fp) DEF_HELPER_4(fddiv, void, env, fp, fp, fp) DEF_HELPER_4(fsgldiv, void, env, fp, fp, fp) DEF_HELPER_FLAGS_3(fcmp, TCG_CALL_NO_RWG, void, env, fp, fp) +DEF_HELPER_2(set_fpsr, void, env, i32) +DEF_HELPER_1(get_fpsr, i32, env) DEF_HELPER_FLAGS_2(set_fpcr, TCG_CALL_NO_RWG, void, env, i32) DEF_HELPER_FLAGS_2(ftst, TCG_CALL_NO_RWG, void, env, fp) DEF_HELPER_3(fconst, void, env, fp, i32) diff --git a/target/m68k/cpu.c b/target/m68k/cpu.c index 7c8efbb42c..df49ff1880 100644 --- a/target/m68k/cpu.c +++ b/target/m68k/cpu.c @@ -390,12 +390,19 @@ static const VMStateDescription vmstate_freg =3D { } }; =20 +static int fpu_pre_save(void *opaque) +{ + M68kCPU *s =3D opaque; + + s->env.fpsr =3D cpu_m68k_get_fpsr(&s->env); + return 0; +} + static int fpu_post_load(void *opaque, int version) { M68kCPU *s =3D opaque; =20 - cpu_m68k_restore_fp_status(&s->env); - + cpu_m68k_set_fpsr(&s->env, s->env.fpsr); return 0; } =20 @@ -404,6 +411,7 @@ const VMStateDescription vmmstate_fpu =3D { .version_id =3D 1, .minimum_version_id =3D 1, .needed =3D fpu_needed, + .pre_save =3D fpu_pre_save, .post_load =3D fpu_post_load, .fields =3D (const VMStateField[]) { VMSTATE_UINT32(env.fpcr, M68kCPU), diff --git a/target/m68k/fpu_helper.c b/target/m68k/fpu_helper.c index ab120b5f59..8314791f50 100644 --- a/target/m68k/fpu_helper.c +++ b/target/m68k/fpu_helper.c @@ -164,6 +164,78 @@ void HELPER(set_fpcr)(CPUM68KState *env, uint32_t val) cpu_m68k_set_fpcr(env, val); } =20 +/* Convert host exception flags to cpu_m68k form. */ +static int cpu_m68k_exceptbits_from_host(int host_bits) +{ + int target_bits =3D 0; + + if (host_bits & float_flag_invalid) { + target_bits |=3D 0x80; + } + if (host_bits & float_flag_overflow) { + target_bits |=3D 0x40; + } + if (host_bits & (float_flag_underflow | float_flag_output_denormal)) { + target_bits |=3D 0x20; + } + if (host_bits & float_flag_divbyzero) { + target_bits |=3D 0x10; + } + if (host_bits & float_flag_inexact) { + target_bits |=3D 0x08; + } + return target_bits; +} + +/* Convert cpu_m68k exception flags to target form. */ +static int cpu_m68k_exceptbits_to_host(int target_bits) +{ + int host_bits =3D 0; + + if (target_bits & 0x80) { + host_bits |=3D float_flag_invalid; + } + if (target_bits & 0x40) { + host_bits |=3D float_flag_overflow; + } + if (target_bits & 0x20) { + host_bits |=3D float_flag_underflow; + } + if (target_bits & 0x10) { + host_bits |=3D float_flag_divbyzero; + } + if (target_bits & 0x08) { + host_bits |=3D float_flag_inexact; + } + return host_bits; +} + +uint32_t cpu_m68k_get_fpsr(CPUM68KState *env) +{ + int host_flags =3D get_float_exception_flags(&env->fp_status); + int target_flags =3D cpu_m68k_exceptbits_from_host(host_flags); + int except =3D (env->fpsr & ~(0xf8)) | target_flags; + return except; +} + +uint32_t HELPER(get_fpsr)(CPUM68KState *env) +{ + return cpu_m68k_get_fpsr(env); +} + +void cpu_m68k_set_fpsr(CPUM68KState *env, uint32_t val) +{ + env->fpsr =3D val; + + int host_flags =3D cpu_m68k_exceptbits_to_host((int) env->fpsr); + set_float_exception_flags(host_flags, &env->fp_status); +} + +void HELPER(set_fpsr)(CPUM68KState *env, uint32_t val) +{ + cpu_m68k_set_fpsr(env, val); +} + #define PREC_BEGIN(prec) \ do { \ FloatX80RoundPrec old =3D \ diff --git a/target/m68k/helper.c b/target/m68k/helper.c index 1a475f082a..7a91f33b17 100644 --- a/target/m68k/helper.c +++ b/target/m68k/helper.c @@ -87,7 +87,7 @@ static int m68k_fpu_gdb_get_reg(CPUState *cs, GByteArray = *mem_buf, int n) case 8: /* fpcontrol */ return gdb_get_reg32(mem_buf, env->fpcr); case 9: /* fpstatus */ - return gdb_get_reg32(mem_buf, env->fpsr); + return gdb_get_reg32(mem_buf, cpu_m68k_get_fpsr(env)); case 10: /* fpiar, not implemented */ return gdb_get_reg32(mem_buf, 0); } @@ -109,7 +109,7 @@ static int m68k_fpu_gdb_set_reg(CPUState *cs, uint8_t *= mem_buf, int n) cpu_m68k_set_fpcr(env, ldl_p(mem_buf)); return 4; case 9: /* fpstatus */ - env->fpsr =3D ldl_p(mem_buf); + cpu_m68k_set_fpsr(env, ldl_p(mem_buf)); return 4; case 10: /* fpiar, not implemented */ return 4; diff --git a/target/m68k/translate.c b/target/m68k/translate.c index 6ae3df43bc..8a194f2f21 100644 --- a/target/m68k/translate.c +++ b/target/m68k/translate.c @@ -4686,7 +4686,7 @@ static void gen_load_fcr(DisasContext *s, TCGv res, i= nt reg) tcg_gen_movi_i32(res, 0); break; case M68K_FPSR: - tcg_gen_ld_i32(res, tcg_env, offsetof(CPUM68KState, fpsr)); + gen_helper_get_fpsr(res, tcg_env); break; case M68K_FPCR: tcg_gen_ld_i32(res, tcg_env, offsetof(CPUM68KState, fpcr)); @@ -4700,7 +4700,7 @@ static void gen_store_fcr(DisasContext *s, TCGv val, = int reg) case M68K_FPIAR: break; case M68K_FPSR: - tcg_gen_st_i32(val, tcg_env, offsetof(CPUM68KState, fpsr)); + gen_helper_set_fpsr(tcg_env, val); break; case M68K_FPCR: gen_helper_set_fpcr(tcg_env, val); --=20 2.34.1 From nobody Sat May 18 22:31:29 2024 Delivered-To: importer@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+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1712599093; cv=none; d=zohomail.com; s=zohoarc; b=UxzXrHqSpvAQU7KqUp8pAbObU0urT8VIA5E8XWyA3hlsNwt7JKCCOA9ImR5Y/n7IA1BYvsIfgx/bMOFtJQQoCXk2G00d4A5cfMVZ1sxRUi+y9CXVOshuOMdKW92Uka8pQxQF51tSqnz4GKzE1U8MG9Csm8xMd9Jsisq4l7/YkX8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1712599093; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=hIaIEQSm9VCOv6FXtjW2b8GU4ZH5b2a473JIJYHIFaQ=; b=OJJGLs98KHJpYnCW6U+jfhJeYBXGDMdspS9jhzU/bfR04vFvTyz+HjeesPG8a1chtMdYrUTaC77QidkBEU7eoRzrw4ayTXf1hp9nDuhdOLMg1/3XgM2mcnsIzJWDshMQwDoAOdqmRPGlIYcqAjYgMw5R1t7HELtPqF7hsBXmFN8= 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+importer=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 1712599093391333.3179397599663; Mon, 8 Apr 2024 10:58:13 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1rtt83-000228-QA; Mon, 08 Apr 2024 13:49:59 -0400 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 1rtt82-00021i-Db for qemu-devel@nongnu.org; Mon, 08 Apr 2024 13:49:58 -0400 Received: from mail-pf1-x42a.google.com ([2607:f8b0:4864:20::42a]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1rtt80-0003gI-Kw for qemu-devel@nongnu.org; Mon, 08 Apr 2024 13:49:57 -0400 Received: by mail-pf1-x42a.google.com with SMTP id d2e1a72fcca58-6ecf3943040so3108979b3a.0 for ; Mon, 08 Apr 2024 10:49:56 -0700 (PDT) Received: from stoup.. (098-147-007-212.res.spectrum.com. [98.147.7.212]) by smtp.gmail.com with ESMTPSA id ga15-20020a17090b038f00b0029c3bac0aa8sm8658432pjb.4.2024.04.08.10.49.54 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 08 Apr 2024 10:49:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1712598595; x=1713203395; darn=nongnu.org; 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=hIaIEQSm9VCOv6FXtjW2b8GU4ZH5b2a473JIJYHIFaQ=; b=PoDgMi94+ir6aMg0BDnnv8r6Y3AvpzQocjyT2dVRhOyWxmnwjucjsFESWSwDMtrG5C 5nNGP/H/L9HXBZPt/6xJ9sJ0S7RLFxZQzTC4sHHkCq58bj5Wat2gN8JBDjSq1G+0pDnK l/OKut9rkp+0lbol3k9rOWSMpQzA4Fe8BpHS6xBqKft1lmsq1aQm8zLkxfLIGo2KuCn6 PtZSgbeduYW/oqXVZ2Y6kmX94lj2BzbnVttO1bE1wVelJVuZsSjzIKRNxLE6H8azDDXY kd2odTDWEDBlddtE/ijQIVETHtnzfBpiKyzQtnDEycU3n/tZX7RO8gJtvxUIfV6jxHT7 nhQQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1712598595; x=1713203395; 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=hIaIEQSm9VCOv6FXtjW2b8GU4ZH5b2a473JIJYHIFaQ=; b=V+yoMwIcjN/W1nnF0O/uA0X3u58du6Wq17kyfVYP4RabVc52LwJ9o+Y9cUqxJgz1YU +Wfo63gPlGAjWO9YNegpXWTIA4qDBHze3QfHIMidoEe9v3qRQLQ0MyqgxvvsXubFem1g LFUrA3JVQUrfQUjMm392w7DhkdYBqDD5avQTB8S3jNtxB78BXD9R7JYuKQ0McTDkJ4pT IQv0r9hw3t5Oz2gor1QcWYTxnK4+hytXz1c3e7kjgZsVo8bs6Y18SVKytl0zk8LKqSev wi6O82jUOvH/X6zn5b2krGNavYZzS6CRqo7CBvRmU4OW9huM1pnE3F9LkRRL6eD6Ab3M Z5ug== X-Gm-Message-State: AOJu0YymZwiPCjcoVDjAJ6Pwek346u6IS9dqVFkz5ShaDfBJyhBPneJt imE1/gbjhtMSnwAOBJPzdJMNP/BMPDyQ+8RrYoElS3siMp68wfqnW3dZW9NpWJU1RM65MMjF7o1 C X-Google-Smtp-Source: AGHT+IHCUGskXtyKFxv47WbjHdePOITIscAICbnxwQNPgsQ25ExcBIEe9Cg2Pg1ge7p9W8FnX6pdYg== X-Received: by 2002:a05:6300:8085:b0:1a7:3365:d8ed with SMTP id ap5-20020a056300808500b001a73365d8edmr8584269pzc.29.1712598595366; Mon, 08 Apr 2024 10:49:55 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: Keith Packard , Peter Maydell Subject: [PULL 16/35] target/m68k: Pass semihosting arg to exit Date: Mon, 8 Apr 2024 07:49:10 -1000 Message-Id: <20240408174929.862917-17-richard.henderson@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20240408174929.862917-1-richard.henderson@linaro.org> References: <20240408174929.862917-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+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::42a; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x42a.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+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1712599093996100017 Content-Type: text/plain; charset="utf-8" From: Keith Packard Instead of using d0 (the semihost function number), use d1 (the provide exit status). Signed-off-by: Keith Packard Reviewed-by: Peter Maydell Message-Id: <20230802161914.395443-2-keithp@keithp.com> Signed-off-by: Richard Henderson --- target/m68k/m68k-semi.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/target/m68k/m68k-semi.c b/target/m68k/m68k-semi.c index 546cff2246..6fbbd140f3 100644 --- a/target/m68k/m68k-semi.c +++ b/target/m68k/m68k-semi.c @@ -132,8 +132,8 @@ void do_m68k_semihosting(CPUM68KState *env, int nr) args =3D env->dregs[1]; switch (nr) { case HOSTED_EXIT: - gdb_exit(env->dregs[0]); - exit(env->dregs[0]); + gdb_exit(env->dregs[1]); + exit(env->dregs[1]); =20 case HOSTED_OPEN: GET_ARG(0); --=20 2.34.1 From nobody Sat May 18 22:31:29 2024 Delivered-To: importer@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+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1712598685; cv=none; d=zohomail.com; s=zohoarc; b=LPDuwdbPdBPtqYciQhO2P+ecFxkuKgGdgQhLGD32+6xS9knU/h68KbMbA2tTmzPMoKD9VU0ARrbusLlpoGnRVSOC98A9oY9VcDRljlkeeLct4m8iuGZxBe0diFBGxWH4OTMRG86IXoxqYkoadFK7R4wJFro0ymYhkW56K5EaatY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1712598685; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=ZCdplx5RAU+rQd70pAqgPB6t58CmgDisH5Rp3Z9tsr4=; b=Kzcyww/RAPPZnI1xvgrvaxVd+2fQFcJwEb/xF0eLG9+WtvPeyaQmLoOvyT7e3gCEkHSXW+YT59IOwkEr8dBmxi+VKzKvxrWMmjpowu2YP7xpd2//x1UBAR8qLMDIhJdr/Pwq4mZ4VaVWAlioGgrWyDBbOLAGBJLUmc4PBtmVdnE= 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+importer=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 1712598685484622.1571147091697; Mon, 8 Apr 2024 10:51:25 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1rtt86-00023X-02; Mon, 08 Apr 2024 13:50:02 -0400 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 1rtt84-00022m-D1 for qemu-devel@nongnu.org; Mon, 08 Apr 2024 13:50:00 -0400 Received: from mail-pg1-x52b.google.com ([2607:f8b0:4864:20::52b]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1rtt82-0003gS-Mb for qemu-devel@nongnu.org; Mon, 08 Apr 2024 13:50:00 -0400 Received: by mail-pg1-x52b.google.com with SMTP id 41be03b00d2f7-5f415fd71f8so153428a12.3 for ; Mon, 08 Apr 2024 10:49:57 -0700 (PDT) Received: from stoup.. (098-147-007-212.res.spectrum.com. [98.147.7.212]) by smtp.gmail.com with ESMTPSA id ga15-20020a17090b038f00b0029c3bac0aa8sm8658432pjb.4.2024.04.08.10.49.55 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 08 Apr 2024 10:49:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1712598597; x=1713203397; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=ZCdplx5RAU+rQd70pAqgPB6t58CmgDisH5Rp3Z9tsr4=; b=fDxPkqcGoW7EYI+62FkYQmO2yNCK1du+fqg/2x2iqqrsQYhLMa7XltW6ZCrV+O9wJZ Rhb2j1rc9QQym2NTo9cB3styhCJIaXHaZuQBoAHC8+tLiNBgQICf/O6bljD/R/Pdocmo XZzYKNv4k4evoKeSkShHIEDv4ZHs0kEoZY/SLb0Ryk5cu1BXJU6MzDzAh9QrXx1Jfz8b rVSNRRq9t9YW+C5tWNW8mxGXv9uJP2tV/9ttQG/t5UMJa7+FxXa1oNMZIJ1XgEyInimD dICxGl4gYekrHWAenqCVEgLh+fkr32QQv7kwasqPY2ZvvTc7fivFu2F8Mzxdk3maE4oV xE3Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1712598597; x=1713203397; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=ZCdplx5RAU+rQd70pAqgPB6t58CmgDisH5Rp3Z9tsr4=; b=Nfj3wPuRKn06LNqlcZkORyGbiot+trPTkhxFNbngJE5JVWB5DAHEce5OLWZ/KoGV++ xYXWxuKzRMyQ+wC0AJYzKzY+tVfneycdy5DxJ8nY3RgwJtOj2OiOQN2EotpWKVgHDaYX Ihyqzjxj6dFQ8J4MNjHh8uaNcCOstZmkpxL9AzJOMUe3+r7KWv//Gy1y5gQ8ZP/1TUXn QIaprGVpOxFj1RPFnaFUfcX/YsWWJQ3EhZ11PlH9epeeYTLeasQq+EaSaeZEfb9o5jjz gSYoYKDxhjou1dIBYz+/ZfdRTqCSGL0A7o6ed/DeglficgyERAy2OH12OvOZRIIwFdGK tfwQ== X-Gm-Message-State: AOJu0Yyn9P67CCUdjrVd61DCuen1Otdyc/0xRFblMO3CiaC9CBJsN5pa 5iISJq+LZ4AUIdr4v0zLNeAz6QbFePujQLm5N1vKyq9zkImkIshLql+ZYjlGdbs8mvjYqUzdhK7 s X-Google-Smtp-Source: AGHT+IHmrmbVHb3i4cw5ajrp6zEP61C0Ho0d1Lcut2YTJDrEZQC0ck0zNwcTIwFqPujJZYUt6V4aaQ== X-Received: by 2002:a17:90b:400b:b0:2a2:d8d6:fc3a with SMTP id ie11-20020a17090b400b00b002a2d8d6fc3amr7393024pjb.37.1712598596971; Mon, 08 Apr 2024 10:49:56 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PULL 17/35] target/m68k: Perform the semihosting test during translate Date: Mon, 8 Apr 2024 07:49:11 -1000 Message-Id: <20240408174929.862917-18-richard.henderson@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20240408174929.862917-1-richard.henderson@linaro.org> References: <20240408174929.862917-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+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::52b; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x52b.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+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1712598686116100004 Content-Type: text/plain; charset="utf-8" Replace EXCP_HALT_INSN by EXCP_SEMIHOSTING. Perform the pre- and post-insn tests during translate, leaving only the actual semihosting operation for the exception. Signed-off-by: Richard Henderson --- target/m68k/cpu.h | 2 +- target/m68k/op_helper.c | 14 ++----------- target/m68k/translate.c | 45 +++++++++++++++++++++++++++++++++++++---- 3 files changed, 44 insertions(+), 17 deletions(-) diff --git a/target/m68k/cpu.h b/target/m68k/cpu.h index e184239a81..b5bbeedb7a 100644 --- a/target/m68k/cpu.h +++ b/target/m68k/cpu.h @@ -66,7 +66,7 @@ #define EXCP_MMU_ACCESS 58 /* MMU Access Level Violation Error */ =20 #define EXCP_RTE 0x100 -#define EXCP_HALT_INSN 0x101 +#define EXCP_SEMIHOSTING 0x101 =20 #define M68K_DTTR0 0 #define M68K_DTTR1 1 diff --git a/target/m68k/op_helper.c b/target/m68k/op_helper.c index 125f6c1b08..15bad5dd46 100644 --- a/target/m68k/op_helper.c +++ b/target/m68k/op_helper.c @@ -202,18 +202,8 @@ static void cf_interrupt_all(CPUM68KState *env, int is= _hw) /* Return from an exception. */ cf_rte(env); return; - case EXCP_HALT_INSN: - if (semihosting_enabled((env->sr & SR_S) =3D=3D 0) - && (env->pc & 3) =3D=3D 0 - && cpu_lduw_code(env, env->pc - 4) =3D=3D 0x4e71 - && cpu_ldl_code(env, env->pc) =3D=3D 0x4e7bf000) { - env->pc +=3D 4; - do_m68k_semihosting(env, env->dregs[0]); - return; - } - cs->halted =3D 1; - cs->exception_index =3D EXCP_HLT; - cpu_loop_exit(cs); + case EXCP_SEMIHOSTING: + do_m68k_semihosting(env, env->dregs[0]); return; } } diff --git a/target/m68k/translate.c b/target/m68k/translate.c index 8a194f2f21..8f61ff1238 100644 --- a/target/m68k/translate.c +++ b/target/m68k/translate.c @@ -26,12 +26,11 @@ #include "qemu/log.h" #include "qemu/qemu-print.h" #include "exec/translator.h" - #include "exec/helper-proto.h" #include "exec/helper-gen.h" - #include "exec/log.h" #include "fpu/softfloat.h" +#include "semihosting/semihost.h" =20 #define HELPER_H "helper.h" #include "exec/helper-info.c.inc" @@ -1401,6 +1400,40 @@ static void gen_jmp_tb(DisasContext *s, int n, targe= t_ulong dest, s->base.is_jmp =3D DISAS_NORETURN; } =20 +#ifndef CONFIG_USER_ONLY +static bool semihosting_test(DisasContext *s) +{ + uint32_t test; + + if (!semihosting_enabled(IS_USER(s))) { + return false; + } + + /* + * "The semihosting instruction is immediately preceded by a + * nop aligned to a 4-byte boundary..." + * The preceding 2-byte (aligned) nop plus the 2-byte halt/bkpt + * means that we have advanced 4 bytes from the required nop. + */ + if (s->pc % 4 !=3D 0) { + return false; + } + test =3D cpu_lduw_code(s->env, s->pc - 4); + if (test !=3D 0x4e71) { + return false; + } + /* "... and followed by an invalid sentinel instruction movec %sp,0." = */ + test =3D translator_ldl(s->env, &s->base, s->pc); + if (test !=3D 0x4e7bf000) { + return false; + } + + /* Consume the sentinel. */ + s->pc +=3D 4; + return true; +} +#endif /* !CONFIG_USER_ONLY */ + DISAS_INSN(scc) { DisasCompare c; @@ -4465,8 +4498,12 @@ DISAS_INSN(halt) gen_exception(s, s->base.pc_next, EXCP_PRIVILEGE); return; } - - gen_exception(s, s->pc, EXCP_HALT_INSN); + if (semihosting_test(s)) { + gen_exception(s, s->pc, EXCP_SEMIHOSTING); + return; + } + tcg_gen_movi_i32(cpu_halted, 1); + gen_exception(s, s->pc, EXCP_HLT); } =20 DISAS_INSN(stop) --=20 2.34.1 From nobody Sat May 18 22:31:29 2024 Delivered-To: importer@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+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1712598932; cv=none; d=zohomail.com; s=zohoarc; b=BSCPJY4SsiU6xM/5ZeXerMVau+w4uNyn+fnqBz66dk3E3AB/rNosR9jtKIdmclZ3AfWAWCLViI+jHIraR/8DvZkFW16g14xJBEY18ETgs1Y3hrl+vmRtZLlPWTppPY7BGei3voHCTEmRBaPUUHTKLGjIWotaQ6TikVt1MpbmMkQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1712598932; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=k+ZfX4LwKFG2ttcKfBo5ylpdxbdzoWL4e0yutHC0vAw=; b=kvLHZNC9tPvf1VVjIrp0RlO69IfmAOxLSJC0Jm78934Fk0E6wQd7sd9LXCOJDFjeTG5NvirGXvleFxnr0XY0HRGA0hwjAQrecQX+p1keI9T/HrVUmUk1Xo6X2fHTUj7QwS2O+9b1hl+4IUKlCi9PQmo9tiaJFuKf3ja04AIXYb8= 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+importer=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 1712598932577506.4093412085232; Mon, 8 Apr 2024 10:55:32 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1rtt87-000246-8U; Mon, 08 Apr 2024 13:50:03 -0400 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 1rtt84-000234-UP for qemu-devel@nongnu.org; Mon, 08 Apr 2024 13:50:00 -0400 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 1rtt83-0003gi-F3 for qemu-devel@nongnu.org; Mon, 08 Apr 2024 13:50:00 -0400 Received: by mail-pj1-x102e.google.com with SMTP id 98e67ed59e1d1-2a54fb929c8so445000a91.3 for ; Mon, 08 Apr 2024 10:49:59 -0700 (PDT) Received: from stoup.. (098-147-007-212.res.spectrum.com. [98.147.7.212]) by smtp.gmail.com with ESMTPSA id ga15-20020a17090b038f00b0029c3bac0aa8sm8658432pjb.4.2024.04.08.10.49.57 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 08 Apr 2024 10:49:57 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1712598598; x=1713203398; darn=nongnu.org; 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=k+ZfX4LwKFG2ttcKfBo5ylpdxbdzoWL4e0yutHC0vAw=; b=qkUGBiTIVoMMWc2uXRdFJV+eM9Dsy9Pnpm37uC8bErrzGtsRuCiai5pZwPYmrCc+pC 4nJs8UrbxxuaaKr3OIaCKqDIrsudoKLZzAHJA4hiUDIKihuq94WEm+WLZgXiFemPaM/k 6/8dY6U6KswealyXgvbNea+JgDcX2R3zt7PRMNFrogC1SMLexX9nlenBCmr8aA4M8AHE Nld+JOqT5RLhEYtDHC9bHH5WgRKHZknFHd7wN3bh+s9XaHO7xrw62nAbygIpmENSlqde DQyBEfaNTM8HdqxnazMASBaskQVUizi9OpcIwesjPbUBWw4xIifjNE4iAjFKBUzvAme8 tS4g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1712598598; x=1713203398; 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=k+ZfX4LwKFG2ttcKfBo5ylpdxbdzoWL4e0yutHC0vAw=; b=QevCJkNl306icA/soUe6RUfcouARO6NpHtSu7M0f4cSLABVaIQKgzdfogaHL4Zku8J /CVB2m9MEH58CbXI8FtPS6U211VM9ZVaEWf/jHz1wLZ8iZY1Jzr0YzTPJhAuaHzck97z X29ZhKtjpm7OTQY4yv+5tEf6qCCTyIpNWWvzuL6rrYiuJSEd54p/q+bYUxuMU9Li7gIt 3uP2HYsXCS9l5oTFDyxNOsl7CNwayckTx3duVU/l13vbhT4l/q56C5UzzBttssbokViy UH2oY6peCmmtQhJ1FBq4hSI0bStw1UEIa1m15hPINl7tzO/YPKZwPNb0Dd1XvsWdFg/m MvLg== X-Gm-Message-State: AOJu0YwO7osU6zmetcSRLfHZEcyve1qk2l+FPCHUexzZ8YI9Z2lZL3mP YbDdosFqX614CGoKICMZEPFXLWSv4JB90eODd5iDyzYC4HdOhYrffQr+tCY1sn4ga+te7liMFT6 p X-Google-Smtp-Source: AGHT+IGNZ1B0D1k0ieHHBVgli7TqNo9v9dpTqN0h4xpyOk7lwpHXZoXer9je9RPKhsHIvMXBEr0wag== X-Received: by 2002:a17:90b:1943:b0:2a2:c127:5aed with SMTP id nk3-20020a17090b194300b002a2c1275aedmr10438332pjb.0.1712598598262; Mon, 08 Apr 2024 10:49:58 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: Keith Packard Subject: [PULL 18/35] target/m68k: Support semihosting on non-ColdFire targets Date: Mon, 8 Apr 2024 07:49:12 -1000 Message-Id: <20240408174929.862917-19-richard.henderson@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20240408174929.862917-1-richard.henderson@linaro.org> References: <20240408174929.862917-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+importer=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+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1712598933325100006 Content-Type: text/plain; charset="utf-8" From: Keith Packard According to the m68k semihosting spec: "The instruction used to trigger a semihosting request depends on the m68k processor variant. On ColdFire, "halt" is used; on other processors (which don't implement "halt"), "bkpt #0" may be used." Add support for non-CodeFire processors by matching BKPT #0 instructions. Signed-off-by: Keith Packard [rth: Use semihosting_test()] Signed-off-by: Richard Henderson --- target/m68k/translate.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/target/m68k/translate.c b/target/m68k/translate.c index 8f61ff1238..659543020b 100644 --- a/target/m68k/translate.c +++ b/target/m68k/translate.c @@ -2646,6 +2646,11 @@ DISAS_INSN(bkpt) #if defined(CONFIG_USER_ONLY) gen_exception(s, s->base.pc_next, EXCP_DEBUG); #else + /* BKPT #0 is the alternate semihosting instruction. */ + if ((insn & 7) =3D=3D 0 && semihosting_test(s)) { + gen_exception(s, s->pc, EXCP_SEMIHOSTING); + return; + } gen_exception(s, s->base.pc_next, EXCP_ILLEGAL); #endif } --=20 2.34.1 From nobody Sat May 18 22:31:29 2024 Delivered-To: importer@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+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1712598737; cv=none; d=zohomail.com; s=zohoarc; b=bRgF9pCnBLsDkPvV8j/YVZPFjXVBk+5/i8PuxjxS99/L2c5N8dYEbrTcIHVn28j4/GV2bQAL6lsxS8AfDw5tcwaIORDL7R3KF+gSEkqHGHhPScFc79NMaehA9Tl57XQqT3Ng5nyr92Ha73w6wl/aehCP4mO/oHxVa7ya0+8AELE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1712598737; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=+hrHUKRn6eQNytNYIbrEJFLCXruCPezaWV08Xln+A+c=; b=mKLUgfTUKhtO7oNpzpK1t+820m/eDhkiqL77RU1imZTg+HEuvMR8AS9BBo3zWKsX8Gf4E6+KK6xwWqQG8/hnDNn+g7MfZgp9xKCGF+gF0EOkwGv4jy0SwyZtII+IcVorX5Xe+irZBPJxK0fq2/QvnWT9wfE7/IDFpdRLcOpFPBk= 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+importer=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 1712598737164272.8687525229316; Mon, 8 Apr 2024 10:52:17 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1rtt8A-00024q-05; Mon, 08 Apr 2024 13:50:06 -0400 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 1rtt86-00023u-V3 for qemu-devel@nongnu.org; Mon, 08 Apr 2024 13:50:02 -0400 Received: from mail-pg1-x52d.google.com ([2607:f8b0:4864:20::52d]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1rtt85-0003gn-8C for qemu-devel@nongnu.org; Mon, 08 Apr 2024 13:50:02 -0400 Received: by mail-pg1-x52d.google.com with SMTP id 41be03b00d2f7-5d8ddbac4fbso3844865a12.0 for ; Mon, 08 Apr 2024 10:50:00 -0700 (PDT) Received: from stoup.. (098-147-007-212.res.spectrum.com. [98.147.7.212]) by smtp.gmail.com with ESMTPSA id ga15-20020a17090b038f00b0029c3bac0aa8sm8658432pjb.4.2024.04.08.10.49.58 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 08 Apr 2024 10:49:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1712598600; x=1713203400; darn=nongnu.org; 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=+hrHUKRn6eQNytNYIbrEJFLCXruCPezaWV08Xln+A+c=; b=qf8/kLNw1raBfX+unDKpS/Zh2CiNTa3N3AeOmUxo0VIYIq5xFdOa49TrMWrKVxvVP6 vdNTw2TMoXUfQqu+2oT70Ep6IUvaTkVgbTbyN1K6Grxzp9h9L0rTZYDz8RugvTyntRWG Fuc6bwn73AojZZQgQc7ixNINMcBYQAXpFmfCqAiVd8n2UwumMwK62JIdN8wSxq/OSuZB GH+RxafXYp798NZ3TvNa4ri34AHpoJnBgyI5Zu34AIn9OSpIuT31EVMvz2u01hOnfWhh 33LygMBpNebwD8dM6nLRS03b7euXRrte5kOtzoWrPgn0F6yxphEHCJS+Zr6I8wKzXdYT 0clA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1712598600; x=1713203400; 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=+hrHUKRn6eQNytNYIbrEJFLCXruCPezaWV08Xln+A+c=; b=l1gjGZllMIYU2Ou7zM/k1B037t1pQGsScPfdP9LyOjBxatSSaaxLKuJR7nG0cbnm7G l8WtGT40LZ0RpLHOGQyB1rHjOvvSdDL5oIizyeeyKEMOFnzC4pVngmtkvkc+flU4U7NP EnYHQAgrnrL1KlV4R315cM3cen67fl+cUCjd3yoLqi64UMBr0yO1zvwuVGS/gya7Ircz ghRdpk4VoayLHGus0kHe5uHMQgK2qS4A1x5KLpjAc8GJbPu4BbnF0Cnan8JcLvYEggWt goD8a92EyeskJ90TE57l5zAwjFCoqWoQd50DR6GgWu5BPuWYBQ4cq+hV6dyWxvtFgQx4 bRLQ== X-Gm-Message-State: AOJu0YysDRnIbm/t7+7o2VXVTWr2KL/fCqtJKCnPylR3C2H4GO15Yf4g gwmJ9lYANH9fWOk9BMo+7fd7bRJ867dFsdtGUmH/AWBs7/KSl8AHUYhg3d9qZJU+zPxhoNrNxyH s X-Google-Smtp-Source: AGHT+IGTaEnYk4STDPsrRRIKmkPstaFBC0Tn01CTIXP7vMu1T0G1y8vZYfVDUaLuH9zdEBPZgijPrQ== X-Received: by 2002:a17:90a:d997:b0:2a2:cf1d:895c with SMTP id d23-20020a17090ad99700b002a2cf1d895cmr7502918pjv.41.1712598599664; Mon, 08 Apr 2024 10:49:59 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Pierrick Bouvier Subject: [PULL 19/35] tcg: Add TCGContext.emit_before_op Date: Mon, 8 Apr 2024 07:49:13 -1000 Message-Id: <20240408174929.862917-20-richard.henderson@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20240408174929.862917-1-richard.henderson@linaro.org> References: <20240408174929.862917-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+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::52d; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x52d.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+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1712598738339100002 Allow operations to be emitted via normal expanders into the middle of the opcode stream. Reviewed-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Pierrick Bouvier Signed-off-by: Richard Henderson --- include/tcg/tcg.h | 6 ++++++ tcg/tcg.c | 14 ++++++++++++-- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/include/tcg/tcg.h b/include/tcg/tcg.h index 451f3fec41..05a1912f8a 100644 --- a/include/tcg/tcg.h +++ b/include/tcg/tcg.h @@ -553,6 +553,12 @@ struct TCGContext { QTAILQ_HEAD(, TCGOp) ops, free_ops; QSIMPLEQ_HEAD(, TCGLabel) labels; =20 + /* + * When clear, new ops are added to the tail of @ops. + * When set, new ops are added in front of @emit_before_op. + */ + TCGOp *emit_before_op; + /* Tells which temporary holds a given register. It does not take into account fixed registers */ TCGTemp *reg_to_temp[TCG_TARGET_NB_REGS]; diff --git a/tcg/tcg.c b/tcg/tcg.c index d6670237fb..0c0bb9d169 100644 --- a/tcg/tcg.c +++ b/tcg/tcg.c @@ -1521,6 +1521,7 @@ void tcg_func_start(TCGContext *s) =20 QTAILQ_INIT(&s->ops); QTAILQ_INIT(&s->free_ops); + s->emit_before_op =3D NULL; QSIMPLEQ_INIT(&s->labels); =20 tcg_debug_assert(s->addr_type =3D=3D TCG_TYPE_I32 || @@ -2332,7 +2333,11 @@ static void tcg_gen_callN(TCGHelperInfo *info, TCGTe= mp *ret, TCGTemp **args) op->args[pi++] =3D (uintptr_t)info; tcg_debug_assert(pi =3D=3D total_args); =20 - QTAILQ_INSERT_TAIL(&tcg_ctx->ops, op, link); + if (tcg_ctx->emit_before_op) { + QTAILQ_INSERT_BEFORE(tcg_ctx->emit_before_op, op, link); + } else { + QTAILQ_INSERT_TAIL(&tcg_ctx->ops, op, link); + } =20 tcg_debug_assert(n_extend < ARRAY_SIZE(extend_free)); for (i =3D 0; i < n_extend; ++i) { @@ -3215,7 +3220,12 @@ static TCGOp *tcg_op_alloc(TCGOpcode opc, unsigned n= args) TCGOp *tcg_emit_op(TCGOpcode opc, unsigned nargs) { TCGOp *op =3D tcg_op_alloc(opc, nargs); - QTAILQ_INSERT_TAIL(&tcg_ctx->ops, op, link); + + if (tcg_ctx->emit_before_op) { + QTAILQ_INSERT_BEFORE(tcg_ctx->emit_before_op, op, link); + } else { + QTAILQ_INSERT_TAIL(&tcg_ctx->ops, op, link); + } return op; } =20 --=20 2.34.1 From nobody Sat May 18 22:31:29 2024 Delivered-To: importer@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+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1712598663; cv=none; d=zohomail.com; s=zohoarc; b=fe5wdH0TzA36aXOdGwuAvuOzupUxT2oQy6/9+JY5JxV0B5BFxfINuWA151Qxg2Lj9jzple+x0yPC33P9qAA7PWU+7WcNwMDmPDaSW+5uRJiuifA6ECnn17XIB7gksbcwba4Ntwtk7swWMUUceQX3y2bSOHaC7djBIoAcMYl9/H4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1712598663; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=Bfjee8xnAWAqUG6v01hjOGqeRqgvt7J3PQW0EStNCoU=; b=l5XK2pYs0/gAkLWH5PK0fWE7kfRF7QX4HboZTQfpO2n+GeFqJR/YXe+7lrQHiFS6ko0YeMvjayOY471MYQ5O2OEpKPfZ4irbDiTtuPPyW6Q7sO57DwFcBL34aozLVwEiUeRiyvcZNIusMR5ydfdBT6cTWhYbmlwJJOfcbvHV1CA= 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+importer=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 1712598663718300.5631854558526; Mon, 8 Apr 2024 10:51:03 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1rtt89-00024w-GG; Mon, 08 Apr 2024 13:50:05 -0400 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 1rtt88-00024P-0e for qemu-devel@nongnu.org; Mon, 08 Apr 2024 13:50:04 -0400 Received: from mail-pj1-x102c.google.com ([2607:f8b0:4864:20::102c]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1rtt86-0003h5-5W for qemu-devel@nongnu.org; Mon, 08 Apr 2024 13:50:03 -0400 Received: by mail-pj1-x102c.google.com with SMTP id 98e67ed59e1d1-2a53b331400so621597a91.1 for ; Mon, 08 Apr 2024 10:50:01 -0700 (PDT) Received: from stoup.. (098-147-007-212.res.spectrum.com. [98.147.7.212]) by smtp.gmail.com with ESMTPSA id ga15-20020a17090b038f00b0029c3bac0aa8sm8658432pjb.4.2024.04.08.10.49.59 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 08 Apr 2024 10:50:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1712598601; x=1713203401; darn=nongnu.org; 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=Bfjee8xnAWAqUG6v01hjOGqeRqgvt7J3PQW0EStNCoU=; b=SPjpghaViSqRrMMP76lghwJVRsiceli3s9fC7zfFfZEdzN6jpTKBBB9hec4Pl1zpxt H0rqVwdbizDCQRtgtKqeExb2p0ejVGo/Zy6jjuEL4L/Woqio0coJro8WVr7cTbfJiN2W +h1Fdo8ZxvaTROeFZxAhyeWWfX39qG/ETNdmeR1DgbgAUZgzqleNgUF1ELHODnbMpE8a OmL+W54zZxnEEwBmxKbnt/O6xLcLmjIObnqsRy0ddpm6jKr0GWz/BTMf+pX7AA4oLENW Dyceyn5bmOV+i7KXxv/EUEq91C+QCbwEkd2so3MyJtXG03KYAzjkYUCgKa1i4gK+cYwY ln9g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1712598601; x=1713203401; 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=Bfjee8xnAWAqUG6v01hjOGqeRqgvt7J3PQW0EStNCoU=; b=HpFX2BQMHkDAI9bIg87NvMdIFJlPMbrwnWt4sZffo3JczUrm5lGxCX6qfM/g7gsO54 jinkusJfJJdXLQrWiXJim7d1L9kWxe+n4AXQTQoSYz/EkFgPiAcQcDgMp0DyKlEUkCwG J1kg7nGA3NVuCsdaQxz/AxzaKJ30EgdN+JS/6Jq7jBt+lxqyqjMV0jygyhNt9j4guqZN X4kPCBAneT23O7rcAPZJtcW7rKG+1yFRPjxvYDE//axKZ5QTKBgmbN+FayPTfaONaJPh FB1Km5OW3SkDD/2YhAyYLoWhkYA4fs1kGVp+9dQsbVs0z2QKDbeXvYixxEjFvFcaAWhx NRYw== X-Gm-Message-State: AOJu0Yx771OLrfujNEo156aa9CZuUIWecPQ/+v2GKUVCBz1L0Rvj9EFy J5AkxKpfKqSqiO4mkHSJeTvR8PY1KSBY9wM0GiAFMI22UQt/G1SKu+hRHbOD8PrpbNCLqE1rbsj a X-Google-Smtp-Source: AGHT+IGk6lzP/PfMuA9KgBb9nV6BTuETO64H1abAR7PIZAZRDxjYn60o/BaBVBuyxny/X8iLHbdQkQ== X-Received: by 2002:a17:90a:1c96:b0:2a0:4c3b:2c39 with SMTP id t22-20020a17090a1c9600b002a04c3b2c39mr7526161pjt.23.1712598600960; Mon, 08 Apr 2024 10:50:00 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Subject: [PULL 20/35] accel/tcg: Add insn_start to DisasContextBase Date: Mon, 8 Apr 2024 07:49:14 -1000 Message-Id: <20240408174929.862917-21-richard.henderson@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20240408174929.862917-1-richard.henderson@linaro.org> References: <20240408174929.862917-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+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::102c; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x102c.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+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1712598664035100002 This is currently target-specific for many; begin making it target independent. Reviewed-by: Philippe Mathieu-Daud=C3=A9 Signed-off-by: Richard Henderson --- include/exec/translator.h | 3 +++ accel/tcg/translator.c | 2 ++ 2 files changed, 5 insertions(+) diff --git a/include/exec/translator.h b/include/exec/translator.h index 51624feb10..ceaeca8c91 100644 --- a/include/exec/translator.h +++ b/include/exec/translator.h @@ -74,6 +74,8 @@ typedef enum DisasJumpType { * @singlestep_enabled: "Hardware" single stepping enabled. * @saved_can_do_io: Known value of cpu->neg.can_do_io, or -1 for unknown. * @plugin_enabled: TCG plugin enabled in this TB. + * @insn_start: The last op emitted by the insn_start hook, + * which is expected to be INDEX_op_insn_start. * * Architecture-agnostic disassembly context. */ @@ -87,6 +89,7 @@ typedef struct DisasContextBase { bool singlestep_enabled; int8_t saved_can_do_io; bool plugin_enabled; + struct TCGOp *insn_start; void *host_addr[2]; } DisasContextBase; =20 diff --git a/accel/tcg/translator.c b/accel/tcg/translator.c index 38c34009a5..ae61c154c2 100644 --- a/accel/tcg/translator.c +++ b/accel/tcg/translator.c @@ -140,6 +140,7 @@ void translator_loop(CPUState *cpu, TranslationBlock *t= b, int *max_insns, db->max_insns =3D *max_insns; db->singlestep_enabled =3D cflags & CF_SINGLE_STEP; db->saved_can_do_io =3D -1; + db->insn_start =3D NULL; db->host_addr[0] =3D host_pc; db->host_addr[1] =3D NULL; =20 @@ -157,6 +158,7 @@ void translator_loop(CPUState *cpu, TranslationBlock *t= b, int *max_insns, while (true) { *max_insns =3D ++db->num_insns; ops->insn_start(db, cpu); + db->insn_start =3D tcg_last_op(); tcg_debug_assert(db->is_jmp =3D=3D DISAS_NEXT); /* no early exit = */ =20 if (plugin_enabled) { --=20 2.34.1 From nobody Sat May 18 22:31:29 2024 Delivered-To: importer@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+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1712598939; cv=none; d=zohomail.com; s=zohoarc; b=YjKakOcV1DiqrdaVKlGF41LC0RTG1dmb9xMLPG774eDbC806FdMYRmc5s/hvQ8mtw35mkhSz2siZkPcwqn3pnd0vt48iHiponFUFfZrfXMn2qkh0/ePY2rYQzGnio7AXeR1736YJkbfMSZbKRg4I1vo9vopEQ7l2Xcf67dKNzo8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1712598939; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=qu730y1a5bhHx8+lUgk6PRHwUAMG8x1kinVBmiKeHm0=; b=IRke/WSba/ZnYtRWn6kAM4KYw4z/X+gGVgtS8qneFq8g6jxlkLNQldljqWbQ34vbiHIGr81W8H4EjZwY0PZDbUsvHNkZfc8ZnrA1LspvR0VGTsgRFgO7keNfpTMd3YQlJC2K3jD21CD8rwhpA5tiAFD0AlwgJhdre3R+Ypt8bpI= 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+importer=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 171259893901860.70006610449775; Mon, 8 Apr 2024 10:55:39 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1rtt8E-00025W-51; Mon, 08 Apr 2024 13:50:10 -0400 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 1rtt8B-00025I-Kw for qemu-devel@nongnu.org; Mon, 08 Apr 2024 13:50:07 -0400 Received: from mail-pg1-x52a.google.com ([2607:f8b0:4864:20::52a]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1rtt87-0003iK-Su for qemu-devel@nongnu.org; Mon, 08 Apr 2024 13:50:06 -0400 Received: by mail-pg1-x52a.google.com with SMTP id 41be03b00d2f7-5d8b519e438so3614117a12.1 for ; Mon, 08 Apr 2024 10:50:03 -0700 (PDT) Received: from stoup.. (098-147-007-212.res.spectrum.com. [98.147.7.212]) by smtp.gmail.com with ESMTPSA id ga15-20020a17090b038f00b0029c3bac0aa8sm8658432pjb.4.2024.04.08.10.50.01 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 08 Apr 2024 10:50:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1712598602; x=1713203402; darn=nongnu.org; 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=qu730y1a5bhHx8+lUgk6PRHwUAMG8x1kinVBmiKeHm0=; b=vI2pmm2TEE8vOsPc6lNg7hgoAgdjIBFo6JXJ90bgajS7PuYXi73T4axnj0C9NHVgdn /sPRaX39aubUzaU8D6C7OMtlvmjUJe48e8EZFg+CailJn8zB3STx666JwYZHF1/1lagQ K2Imze+1M2jiaO8IJvSNsZu74+8/6TETJoa6WGr8zbg4hxJtlYDb6PJBKKFiL9WwvSOK SMiYfUlqWuR0JetTYCQgfygGZ85C+GIRs3Typ88cLzJsN/flTM/JF2zhzWi9LBkMbOKl 9Zl/5b1SOxheUIIEsLE0IZUZYE70JmSO4xf7WBMOHZdy3WwyZAqCQapaii/RQNGXSFAA IK2g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1712598602; x=1713203402; 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=qu730y1a5bhHx8+lUgk6PRHwUAMG8x1kinVBmiKeHm0=; b=b7aIrhb0+/V1lrEwO7yqXp1g6bMpmW36eRn7mI7P1617DXtRNXmzlJi8Ds5BpjmHSq mwaSZjc2rMAwAl2UUqQxExzITjYsn/Q4/am9Xehf8GGNT8tnOblzOZgn64NumKZZfSRO XhkPfuStvjCkXWLR5IHg9sUNlpHHYYVlfOF4nGlOOcgn3T918p8lctV/4mjOPL2htiGF pYrUqkyPFjQ27gITEzPte8Xm5eIgdOuR2DkkNy3IFi1m70tWzRmk28KYJVkcR6g+T4ng UgVjMRldK8WCU0f+a/WZ/k+IJvFgICW1gM/hx2qZmXsRFd7Gq+OM2LoDynWadEgmR0Xe oFZg== X-Gm-Message-State: AOJu0Yx595EMx82qBLCpHFpfyk5BXHDoPmYfi4cqNAC+TaGWAeduMQ97 hRWcRInK98tqhJhPPu8+/hZKqZSE+/rvP0NaIhB3WgVChBpgr2RAjBCd51tT02IW0Mn4lBpf1ik v X-Google-Smtp-Source: AGHT+IHFcIR8z+B7jJzXE6Jg8Ddatpwu59X/CvKq3s9JwUZxTDT/5HC+DXGEKysqKZyagcUdvdXDmA== X-Received: by 2002:a17:90a:df15:b0:29f:ce37:50d8 with SMTP id gp21-20020a17090adf1500b0029fce3750d8mr6907984pjb.17.1712598602447; Mon, 08 Apr 2024 10:50:02 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Subject: [PULL 21/35] target/arm: Use insn_start from DisasContextBase Date: Mon, 8 Apr 2024 07:49:15 -1000 Message-Id: <20240408174929.862917-22-richard.henderson@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20240408174929.862917-1-richard.henderson@linaro.org> References: <20240408174929.862917-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+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::52a; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x52a.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+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1712598939431100001 To keep the multiple update check, replace insn_start with insn_start_updated. Reviewed-by: Philippe Mathieu-Daud=C3=A9 Signed-off-by: Richard Henderson --- target/arm/tcg/translate.h | 12 ++++++------ target/arm/tcg/translate-a64.c | 2 +- target/arm/tcg/translate.c | 2 +- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/target/arm/tcg/translate.h b/target/arm/tcg/translate.h index 93be745cf3..dc66ff2190 100644 --- a/target/arm/tcg/translate.h +++ b/target/arm/tcg/translate.h @@ -165,10 +165,10 @@ typedef struct DisasContext { uint8_t gm_blocksize; /* True if this page is guarded. */ bool guarded_page; + /* True if the current insn_start has been updated. */ + bool insn_start_updated; /* Bottom two bits of XScale c15_cpar coprocessor access control reg */ int c15_cpar; - /* TCG op of the current insn_start. */ - TCGOp *insn_start; /* Offset from VNCR_EL2 when FEAT_NV2 redirects this reg to memory */ uint32_t nv2_redirect_offset; } DisasContext; @@ -276,10 +276,10 @@ static inline void disas_set_insn_syndrome(DisasConte= xt *s, uint32_t syn) syn &=3D ARM_INSN_START_WORD2_MASK; syn >>=3D ARM_INSN_START_WORD2_SHIFT; =20 - /* We check and clear insn_start_idx to catch multiple updates. */ - assert(s->insn_start !=3D NULL); - tcg_set_insn_start_param(s->insn_start, 2, syn); - s->insn_start =3D NULL; + /* Check for multiple updates. */ + assert(!s->insn_start_updated); + s->insn_start_updated =3D true; + tcg_set_insn_start_param(s->base.insn_start, 2, syn); } =20 static inline int curr_insn_len(DisasContext *s) diff --git a/target/arm/tcg/translate-a64.c b/target/arm/tcg/translate-a64.c index 340265beb0..2666d52711 100644 --- a/target/arm/tcg/translate-a64.c +++ b/target/arm/tcg/translate-a64.c @@ -14179,7 +14179,7 @@ static void aarch64_tr_insn_start(DisasContextBase = *dcbase, CPUState *cpu) pc_arg &=3D ~TARGET_PAGE_MASK; } tcg_gen_insn_start(pc_arg, 0, 0); - dc->insn_start =3D tcg_last_op(); + dc->insn_start_updated =3D false; } =20 static void aarch64_tr_translate_insn(DisasContextBase *dcbase, CPUState *= cpu) diff --git a/target/arm/tcg/translate.c b/target/arm/tcg/translate.c index 69585e6003..dc49a8d806 100644 --- a/target/arm/tcg/translate.c +++ b/target/arm/tcg/translate.c @@ -9273,7 +9273,7 @@ static void arm_tr_insn_start(DisasContextBase *dcbas= e, CPUState *cpu) condexec_bits =3D (dc->condexec_cond << 4) | (dc->condexec_mask >>= 1); } tcg_gen_insn_start(pc_arg, condexec_bits, 0); - dc->insn_start =3D tcg_last_op(); + dc->insn_start_updated =3D false; } =20 static bool arm_check_kernelpage(DisasContext *dc) --=20 2.34.1 From nobody Sat May 18 22:31:29 2024 Delivered-To: importer@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+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1712599025; cv=none; d=zohomail.com; s=zohoarc; b=WDxozVJe5J/aQ6uj+MFlFBJLXanL8VQx0lqeplHsV1blGY981paKnDG++cvmbuggqcmyetQW9y/D90JTzS0AyGq17of4gfru0BxLNb5D63USKy+5G4C0KYe4Df42mNqFfDgfFQNYM7sciUPT6e+o11e4cPaPcUw4d3fkkg/UVJc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1712599025; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=RFanGzrvK8VkKk4csReRv0GVjABsPRaur2/zSeJo0ZU=; b=eyItS1nQlRZhz4nIASMF3VU7iYzXQsCrWVAJkg84T1BcszA6qyeBS2YDwgIgTOc/zf1kvtGC9XQt9z7kWc57n5oohghoz6xUcyPaTkj/ZNUKZNUdhtO1GnaMRKTS330yCR/US4GfGMqKCZwAWJWcLEzUUIK6xsLTHNJySNtpWBs= 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+importer=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 1712599025112631.5026081815623; Mon, 8 Apr 2024 10:57:05 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1rtt8T-0002A7-0q; Mon, 08 Apr 2024 13:50:25 -0400 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 1rtt8P-00029Z-Q4 for qemu-devel@nongnu.org; Mon, 08 Apr 2024 13:50:21 -0400 Received: from mail-pj1-x1031.google.com ([2607:f8b0:4864:20::1031]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1rtt8A-0003iZ-7c for qemu-devel@nongnu.org; Mon, 08 Apr 2024 13:50:21 -0400 Received: by mail-pj1-x1031.google.com with SMTP id 98e67ed59e1d1-29e0229d6b5so3889663a91.3 for ; Mon, 08 Apr 2024 10:50:05 -0700 (PDT) Received: from stoup.. (098-147-007-212.res.spectrum.com. [98.147.7.212]) by smtp.gmail.com with ESMTPSA id ga15-20020a17090b038f00b0029c3bac0aa8sm8658432pjb.4.2024.04.08.10.50.02 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 08 Apr 2024 10:50:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1712598604; x=1713203404; darn=nongnu.org; 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=RFanGzrvK8VkKk4csReRv0GVjABsPRaur2/zSeJo0ZU=; b=uwIFljoGv92YbwCOlvRKIcXNoBXgui3Skk03YLupbSsyS+ah40scL0kXq6AmbLYJWc r3WYfP3QcAO0EOs7nQaqsWwuwg6CR69SALzbCYRQBNT1lsgXK4DYCn3iqlTElF3BWO1E n4pDgo0KtRgwvcNFBQYAfsbEXD3n8Q6TlTrzC/IDF6bOnJF4ueInscl8DdQMgaj/O+mj v2lo8ZAf9EQ+H7SdLmhbsomk12lKEXjlho/sSB8Jb8AhdtVY2FUneXdhrWMvluFdic7a /yUCdbOJGEMyylUnxbaqUD8Vra01ZGnRfV5E10Bet6xTlqX0+/Kf3b3wKMsNOTCu2DEv HqYw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1712598604; x=1713203404; 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=RFanGzrvK8VkKk4csReRv0GVjABsPRaur2/zSeJo0ZU=; b=PIexFw/0RWefzA6VpHqYBnLmtQO3oAVJL00jofXy7VqTDBQUdeafwJxpBPNqTK8D1Z H7XPpN2M5UwZeow+AKYVeM1afmvFIeFx5W/1k15/4CQrCM4ETQbRBvwUPfN2pmF1Znpu sWsuPLsRhPbuK+xB8OitUk0IAKHYajHpLwcAM8zKNDxYsVQbw8bLnW18XBm3NWmpofR5 Hrx8ccd64szw/csz0m6dxOanlMadaKwe52eBRRqf8x2IVSIIwQQ4/nBx0iZUn/qYGJib 2s/W4sd8yL7ovUdJ+WIFdyFeOy0ui5Wr+sriYM7in4FxQbb72t18ufdc4EOGLp7776w7 92Dg== X-Gm-Message-State: AOJu0YyqwPlz1+iWt2NLCp10QMlNu2enUNwJoLTElT+WEa8cBAr3hAbK MIo6BYYWKB1kyYmB3XVklPOcTbwjGydtRPZJK48wWhBBn3ifksm5eTBkjmrjTGSiVbT32BVXEgM B X-Google-Smtp-Source: AGHT+IEVjLISCSOMNT9SjrRAHWJxBYCVsRFpdFzWs3IC/iyoqBaBoeCu25HW/CV86UzfBRDHBoQPjw== X-Received: by 2002:a17:90a:ba82:b0:2a4:e9d:9888 with SMTP id t2-20020a17090aba8200b002a40e9d9888mr8099681pjr.16.1712598603795; Mon, 08 Apr 2024 10:50:03 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Subject: [PULL 22/35] target/hppa: Use insn_start from DisasContextBase Date: Mon, 8 Apr 2024 07:49:16 -1000 Message-Id: <20240408174929.862917-23-richard.henderson@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20240408174929.862917-1-richard.henderson@linaro.org> References: <20240408174929.862917-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+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::1031; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x1031.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, SPF_PASS=-0.001, T_SPF_HELO_TEMPERROR=0.01 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+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1712599025680100001 To keep the multiple update check, replace insn_start with insn_start_updated. Reviewed-by: Philippe Mathieu-Daud=C3=A9 Signed-off-by: Richard Henderson --- target/hppa/translate.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/target/hppa/translate.c b/target/hppa/translate.c index 8a1a8bc3aa..42fa480950 100644 --- a/target/hppa/translate.c +++ b/target/hppa/translate.c @@ -44,7 +44,6 @@ typedef struct DisasCond { typedef struct DisasContext { DisasContextBase base; CPUState *cs; - TCGOp *insn_start; =20 uint64_t iaoq_f; uint64_t iaoq_b; @@ -62,6 +61,7 @@ typedef struct DisasContext { int privilege; bool psw_n_nonzero; bool is_pa20; + bool insn_start_updated; =20 #ifdef CONFIG_USER_ONLY MemOp unalign; @@ -300,9 +300,9 @@ void hppa_translate_init(void) =20 static void set_insn_breg(DisasContext *ctx, int breg) { - assert(ctx->insn_start !=3D NULL); - tcg_set_insn_start_param(ctx->insn_start, 2, breg); - ctx->insn_start =3D NULL; + assert(!ctx->insn_start_updated); + ctx->insn_start_updated =3D true; + tcg_set_insn_start_param(ctx->base.insn_start, 2, breg); } =20 static DisasCond cond_make_f(void) @@ -4694,7 +4694,7 @@ static void hppa_tr_insn_start(DisasContextBase *dcba= se, CPUState *cs) DisasContext *ctx =3D container_of(dcbase, DisasContext, base); =20 tcg_gen_insn_start(ctx->iaoq_f, ctx->iaoq_b, 0); - ctx->insn_start =3D tcg_last_op(); + ctx->insn_start_updated =3D false; } =20 static void hppa_tr_translate_insn(DisasContextBase *dcbase, CPUState *cs) --=20 2.34.1 From nobody Sat May 18 22:31:29 2024 Delivered-To: importer@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+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1712598710; cv=none; d=zohomail.com; s=zohoarc; b=hApdKJaJEFE7Ahu9h+jvhn5apjKasQu2q7kxRPsZa5EQUK6mZYbOb9rXPWt1m5GJlZUUP57CZtPcnr+uIUqsiSOsMAI12YOKA9h3KB/FpMBm/puB/z4GbMJw7m//nFrdtc/gYevCoMsnywxv2G8UNt1wKjv7tRQc06RTb0nW/Aw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1712598710; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=fQO0EY4mDLrrFT+vnkTsVcf/DHsLrdpuFvrCYXf00/g=; b=WiHG5KpbfY7dNeW0Is2VdR/tqrOtl3tCJCOJfQPx9p8kOZhIlqQjX6qKQ7Gsty5V68ilEL6DRmzYN8zS2Dt5M0oRjy9ggbS53yfRETQyuxKIrfwU0q+bmRflkSafz4RApo5qgKmPY5B+AKywpR2I9oNAbiEv/WRVf/8PaVEPErk= 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+importer=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 1712598710612921.2899020718747; Mon, 8 Apr 2024 10:51:50 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1rtt8J-00026n-Po; Mon, 08 Apr 2024 13:50:15 -0400 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 1rtt8H-00025w-Qa for qemu-devel@nongnu.org; Mon, 08 Apr 2024 13:50:14 -0400 Received: from mail-pf1-x42d.google.com ([2607:f8b0:4864:20::42d]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1rtt8B-0003ik-PM for qemu-devel@nongnu.org; Mon, 08 Apr 2024 13:50:13 -0400 Received: by mail-pf1-x42d.google.com with SMTP id d2e1a72fcca58-6ecd957f949so4618682b3a.0 for ; Mon, 08 Apr 2024 10:50:06 -0700 (PDT) Received: from stoup.. (098-147-007-212.res.spectrum.com. [98.147.7.212]) by smtp.gmail.com with ESMTPSA id ga15-20020a17090b038f00b0029c3bac0aa8sm8658432pjb.4.2024.04.08.10.50.04 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 08 Apr 2024 10:50:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1712598605; x=1713203405; darn=nongnu.org; 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=fQO0EY4mDLrrFT+vnkTsVcf/DHsLrdpuFvrCYXf00/g=; b=HN0D9VzUmMVQcQOYbHuNjNG/bFxuORjwHnygQjUJ3myFsjkIwszVHyVnD8vg+jckQA VdQMIayJ1bOUrn+X39BSaU3Rm873ulUsynaZsn9TaajJZnjG0fekc0cBt8YH1TynzLjZ tKsxYS1+bUYgUm4qS3BGIU93gU5qj52Dq0ENfvsPtwDoF5zAparRdiPznoP+Rvb+jt7+ TM8KvqNaYPee0M9d3HZ9x3o8Cfr/7X5oJ8veK/ZW4TIzomO7WCla1Lb6dpI64kFmi8hQ YLhgebaH6wV+pG/pUnk7TBsSdaEq9cZwouJFLpzNyBPCwB5LyssY1raE7AEQtzqoNMAe B8sQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1712598605; x=1713203405; 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=fQO0EY4mDLrrFT+vnkTsVcf/DHsLrdpuFvrCYXf00/g=; b=S5+HKCr9cHw+VNRtqRVO40t0RtmBeUuzx6G7a30A2WPzNxkvykU0+Esldc92AdalI/ LiW0leXt2xurYTotbEQNMWTEP56Mj78qJ6S8BPh9n9mqgnzGNW5T2YljzpsS7hdMTwIr DVksHcTJJSV4iPYVEQivSlhW/8G0XtxC5h234cOH0TxkxCW8uShtWC3VcJYcvXCaDodz wyke3JJ6waZk/45NiRsCFjksOxXoyNurUVGiUPQom1l2fIOtCY0dnXXnDFlYDdO4unFU /AoK2DjrKJMaMsdVfycLo7scDb0UHoN7t0OYsc6APhrLTlVMAFY7lScmlgTXvt9enjqG aYkA== X-Gm-Message-State: AOJu0YyKe6uAya2n5k6COftfPFt4/ImSBgVhoiPIFT7L2liHpSKZi2TP dGBfiHQXARM9dJJXJHUgIH7go4OwLxNZUse/jJSmZRJ3csy0gSP4L9N+cHIvE0lQ8P/13R8pED5 e X-Google-Smtp-Source: AGHT+IHfsfJg+R60ov7NAi/pS4PQV9laboLIsz5FujWWpC8bOqqq5JzUIaK8Uy2avyKGaT3P+HALCg== X-Received: by 2002:a17:90a:c24d:b0:2a2:ba1e:92fd with SMTP id d13-20020a17090ac24d00b002a2ba1e92fdmr7555019pjx.45.1712598605516; Mon, 08 Apr 2024 10:50:05 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: Paolo Bonzini Subject: [PULL 23/35] target/i386: Preserve DisasContextBase.insn_start across rewind Date: Mon, 8 Apr 2024 07:49:17 -1000 Message-Id: <20240408174929.862917-24-richard.henderson@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20240408174929.862917-1-richard.henderson@linaro.org> References: <20240408174929.862917-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+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::42d; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x42d.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+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1712598712199100001 Content-Type: text/plain; charset="utf-8" When aborting translation of the current insn, restore the previous value of insn_start. Acked-by: Paolo Bonzini Signed-off-by: Richard Henderson --- target/i386/tcg/translate.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/target/i386/tcg/translate.c b/target/i386/tcg/translate.c index 07f642dc9e..76a42c679c 100644 --- a/target/i386/tcg/translate.c +++ b/target/i386/tcg/translate.c @@ -139,6 +139,7 @@ typedef struct DisasContext { TCGv_i64 tmp1_i64; =20 sigjmp_buf jmpbuf; + TCGOp *prev_insn_start; TCGOp *prev_insn_end; } DisasContext; =20 @@ -3123,6 +3124,7 @@ static bool disas_insn(DisasContext *s, CPUState *cpu) /* END TODO */ s->base.num_insns--; tcg_remove_ops_after(s->prev_insn_end); + s->base.insn_start =3D s->prev_insn_start; s->base.is_jmp =3D DISAS_TOO_MANY; return false; default: @@ -6995,6 +6997,7 @@ static void i386_tr_insn_start(DisasContextBase *dcba= se, CPUState *cpu) DisasContext *dc =3D container_of(dcbase, DisasContext, base); target_ulong pc_arg =3D dc->base.pc_next; =20 + dc->prev_insn_start =3D dc->base.insn_start; dc->prev_insn_end =3D tcg_last_op(); if (tb_cflags(dcbase->tb) & CF_PCREL) { pc_arg &=3D ~TARGET_PAGE_MASK; --=20 2.34.1 From nobody Sat May 18 22:31:29 2024 Delivered-To: importer@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+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1712598933; cv=none; d=zohomail.com; s=zohoarc; b=evjjLrUoxzcOA8YG6PEFIO/9g/yNwQxSUetckRQBgA1UYlKMnX0gmoJHLBZtmGQZbVVU/5fs2hcfiTzobgAy+guzdbKVpUZAdQXsE6CGbIo2oLa3CZ8oqeqdnlixAbRN+LBxuxUmW9lOGBWBU+wTAOVVBKzPCk/apdcnw8QmglU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1712598933; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=cP8jA9GFq1yR+e10bjvG/FkvD/Ggh4PQtWX+MXPzUjs=; b=lTYgd8C8z+69WTBVGCtcnIO45ztfh5bRiSWvVLAm/ihVwdj4hYewXE2W4al/q3nsPr8ECSyk1azvX6/6FCjb6qoHTrw9Ynu1Y9ToAikB3ynoaD7JE2nRo5ORTzsHYIuAMUGzVFEzQ9kLIgEgEYT3FfiWSH/pew13+mov7OXdKaM= 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+importer=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 1712598933538106.26614649576322; Mon, 8 Apr 2024 10:55:33 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1rtt8K-00026o-Iv; Mon, 08 Apr 2024 13:50:16 -0400 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 1rtt8H-00025x-SH for qemu-devel@nongnu.org; Mon, 08 Apr 2024 13:50:14 -0400 Received: from mail-pf1-x42a.google.com ([2607:f8b0:4864:20::42a]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1rtt8C-0003jI-JS for qemu-devel@nongnu.org; Mon, 08 Apr 2024 13:50:13 -0400 Received: by mail-pf1-x42a.google.com with SMTP id d2e1a72fcca58-6ed32341906so962669b3a.1 for ; Mon, 08 Apr 2024 10:50:08 -0700 (PDT) Received: from stoup.. (098-147-007-212.res.spectrum.com. [98.147.7.212]) by smtp.gmail.com with ESMTPSA id ga15-20020a17090b038f00b0029c3bac0aa8sm8658432pjb.4.2024.04.08.10.50.05 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 08 Apr 2024 10:50:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1712598607; x=1713203407; darn=nongnu.org; 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=cP8jA9GFq1yR+e10bjvG/FkvD/Ggh4PQtWX+MXPzUjs=; b=lTJvob900ZquP5RvzbX+VFDZKvWJ8q6CoX1gKWJZsx91XuuHiH+0gM7241ThTwmT6J 1nnDW1IWf/RCCvUAGLPgs74yKNbb2JPjgVt0YlQh5sCTWhplqlkCfz87gyALWP6HjJRS hIoRjNhLv9JAciCEw0EieVf1GbPrPgW0/ARKaefL0RF/vQedJMjrOIyflfkMpDKGITSn a5pWcM4h7PHUENOEt3omvw0VzzyzBCzXndZ6Vpl8YnrkYFynLpg/uLrjhtV66MHPX9Yv BRUKbQ99t/l+hhCRVip98RMDY8YiFe8IiTJvSK8KFm4Xh29+/VFWGjg4e6efkCTBFX2G HHKg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1712598607; x=1713203407; 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=cP8jA9GFq1yR+e10bjvG/FkvD/Ggh4PQtWX+MXPzUjs=; b=a3FjeXFxb4EtKpdnGMKUTPRoxzJkio4Bi2lOCvSE6KkrC9+vIA/6vfBDJmioeWYLqS 76IVQMjvkdR8TPRj+4VEkTh8yXcKRsKT238VyMO/tJIVK1nq9fy4LJeSVe8yuRliXOEq VeIKq4qvN3rGGsRucARJkYjhjj9szumJpOnB3tI8+G5cTx9kCiqQrW+aN4y2C1MSuaH/ 1MCgUpfiwj3WhyyZzOJI2eD1j0jj6aYsAHJB6CCuK5C5stm3kVFf0HfNsyP3o/583hb8 Qtwi8p2tjEmYy6elE/kf2uv/woLFLvXvKDmk0M3vwCk48QXWZpDhM76nJ5ldZF1QRlf/ EpDg== X-Gm-Message-State: AOJu0YxjRuhbQ3BVavYZxT6/TFF7q1YOLkpqm+77xhfUFehrhJhVxtvY jsjyedWfCEiZZSo+FF7zanvQ7huDtiMJ1p2XrLeK/6AAcAeHZHPCRr+FzQPvBl4Ee48L9I08N9A 4 X-Google-Smtp-Source: AGHT+IElnT4gcdfTpp83OSg8Mhf7bmwOWkA/wEJsOw0Azbljcv8Nom3I+VGyTPCYkHR4dtXe1sUSHQ== X-Received: by 2002:a05:6a20:158c:b0:1a7:545d:d334 with SMTP id h12-20020a056a20158c00b001a7545dd334mr4763093pzj.47.1712598607383; Mon, 08 Apr 2024 10:50:07 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Subject: [PULL 24/35] target/microblaze: Use insn_start from DisasContextBase Date: Mon, 8 Apr 2024 07:49:18 -1000 Message-Id: <20240408174929.862917-25-richard.henderson@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20240408174929.862917-1-richard.henderson@linaro.org> References: <20240408174929.862917-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+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::42a; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x42a.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+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1712598935409100015 Reviewed-by: Philippe Mathieu-Daud=C3=A9 Signed-off-by: Richard Henderson --- target/microblaze/translate.c | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/target/microblaze/translate.c b/target/microblaze/translate.c index 4e52ef32db..fc451befae 100644 --- a/target/microblaze/translate.c +++ b/target/microblaze/translate.c @@ -62,9 +62,6 @@ typedef struct DisasContext { DisasContextBase base; const MicroBlazeCPUConfig *cfg; =20 - /* TCG op of the current insn_start. */ - TCGOp *insn_start; - TCGv_i32 r0; bool r0_set; =20 @@ -699,14 +696,14 @@ static TCGv compute_ldst_addr_ea(DisasContext *dc, in= t ra, int rb) static void record_unaligned_ess(DisasContext *dc, int rd, MemOp size, bool store) { - uint32_t iflags =3D tcg_get_insn_start_param(dc->insn_start, 1); + uint32_t iflags =3D tcg_get_insn_start_param(dc->base.insn_start, 1); =20 iflags |=3D ESR_ESS_FLAG; iflags |=3D rd << 5; iflags |=3D store * ESR_S; iflags |=3D (size =3D=3D MO_32) * ESR_W; =20 - tcg_set_insn_start_param(dc->insn_start, 1, iflags); + tcg_set_insn_start_param(dc->base.insn_start, 1, iflags); } #endif =20 @@ -1624,7 +1621,6 @@ static void mb_tr_insn_start(DisasContextBase *dcb, C= PUState *cs) DisasContext *dc =3D container_of(dcb, DisasContext, base); =20 tcg_gen_insn_start(dc->base.pc_next, dc->tb_flags & ~MSR_TB_MASK); - dc->insn_start =3D tcg_last_op(); } =20 static void mb_tr_translate_insn(DisasContextBase *dcb, CPUState *cs) --=20 2.34.1 From nobody Sat May 18 22:31:29 2024 Delivered-To: importer@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+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1712599092; cv=none; d=zohomail.com; s=zohoarc; b=Y14pu6GnK0I+MaOl7nld3rXdUu+0z5/99W8vI0AMc8S9TkhAD182BCyTQ/A8JZ4Sh4qnkvaKnBq0hBYpAek80JoMVW94zV8JORSfZJOvxm+SZatbZBwX9vXa9wgSORXWO0Hob8fs9V2CxxWQyvS30SSlKlLAfu/BGrMS/Mbvyt4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1712599092; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=ZPbK/NhQe1+jKC23+AkIKSjI/CWiYdFRaJAq7oh1b28=; b=kpGG+WTtFQAZyXp14j6rd1jz0aWJyKUa6Adh4pzNqkf1XAtThG1x1YvVyaWHMEVNSpxN4nzlvyGQJtmikeHkOld2VMFZXtA6aB6Ygx4wpITnAXwOt2MMVl9FsuWxi8+2BwGGSOjuVQkab7YoHunzf7xv88EutNMllHgg0ECgs0g= 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+importer=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 171259909232323.588411928658502; Mon, 8 Apr 2024 10:58:12 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1rtt8K-00026p-Js; Mon, 08 Apr 2024 13:50:16 -0400 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 1rtt8J-00026C-58 for qemu-devel@nongnu.org; Mon, 08 Apr 2024 13:50:15 -0400 Received: from mail-pg1-x52f.google.com ([2607:f8b0:4864:20::52f]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1rtt8H-0003jS-Ib for qemu-devel@nongnu.org; Mon, 08 Apr 2024 13:50:14 -0400 Received: by mail-pg1-x52f.google.com with SMTP id 41be03b00d2f7-5ce9555d42eso3494366a12.2 for ; Mon, 08 Apr 2024 10:50:10 -0700 (PDT) Received: from stoup.. (098-147-007-212.res.spectrum.com. [98.147.7.212]) by smtp.gmail.com with ESMTPSA id ga15-20020a17090b038f00b0029c3bac0aa8sm8658432pjb.4.2024.04.08.10.50.07 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 08 Apr 2024 10:50:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1712598609; x=1713203409; darn=nongnu.org; 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=ZPbK/NhQe1+jKC23+AkIKSjI/CWiYdFRaJAq7oh1b28=; b=XHhQNqU+r4ZzMspwRKdTg6bRyA11cdq5IIHYuJA/PO/CgSFejOQ/v1bYbqSY8hg9iG 24pXzG3RSe8LdGJK5So7DHidLY7y+SErAG7rJBa3SGeFTwGHm2kINxX5KZGls0i5VHoN vLby71Y1b7DnCf2co7ALE1iRH7jZbediGM4+Q1W60JZr0+7Al7xXqCu4gaVwpAZxpV9B lUq7OBZ3vXB2z6TP3ZZO7PVdgH7g/si/Jggm2S0enJDkhXL/O4XFXWQd4OBksfuAnzrJ xG6zAfCS3w051rItYdeBYgQUn9ofyV1fgOfjvLRkCXZV42sU2cMezLRymxRUfmWJtaz2 gb7Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1712598609; x=1713203409; 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=ZPbK/NhQe1+jKC23+AkIKSjI/CWiYdFRaJAq7oh1b28=; b=f303UYJ1SNlyo1LuLeUK5GwnnsPaH2pa/6KroYuBYffuaIwTVirmJEeBKpbN820tK5 d7llg0IGF02fArpSW6em+IKCn4ToQaj2jsAw2vYOvfqrIWpOx1lJSET7PbV3VyJT3Iv/ TVlfkc5ayAirIJRr90modqgCeDSrBTeWx0wZsI4glrXMl+tucnRGGo6kJHOE7kwP3YPh 9M0UkuU/qVimFhmzyE1FUW+JX0qa8GBsHPIVhwkmQd4I+my7NZVinFJ7CHhQvUzTpAlj topHQuT/3C1w78kPUgXRqE6q4xTGYID+UbxsR6ZKcURfIk6CJwYzMP5hvidevIFrvFae ca3g== X-Gm-Message-State: AOJu0Yx2xIIhFXHbI5mF8JwcaudiE0mQiPwt5hnM3Uvvv6WEZ5gi3gQi CZqOn4sGCDjF0gLdG96DQEYRxLAdFzi6TucBppeOkQqVNVsfteNd9SRhQS7bKdfazNvVv1wmjdX F X-Google-Smtp-Source: AGHT+IHZ5iLGSVMmRQzPIlVv09kcMBabu8iUb64wVF4aBJlT3dSwtc9/Nu0B9bLtUoAzErwnBIvf6g== X-Received: by 2002:a17:90a:e601:b0:2a5:222b:b776 with SMTP id j1-20020a17090ae60100b002a5222bb776mr3099303pjy.34.1712598608789; Mon, 08 Apr 2024 10:50:08 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Subject: [PULL 25/35] target/riscv: Use insn_start from DisasContextBase Date: Mon, 8 Apr 2024 07:49:19 -1000 Message-Id: <20240408174929.862917-26-richard.henderson@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20240408174929.862917-1-richard.henderson@linaro.org> References: <20240408174929.862917-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+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::52f; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x52f.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+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1712599094021100018 To keep the multiple update check, replace insn_start with insn_start_updated. Reviewed-by: Philippe Mathieu-Daud=C3=A9 Signed-off-by: Richard Henderson --- target/riscv/translate.c | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/target/riscv/translate.c b/target/riscv/translate.c index 9d57089fcc..9ff09ebdb6 100644 --- a/target/riscv/translate.c +++ b/target/riscv/translate.c @@ -115,8 +115,7 @@ typedef struct DisasContext { bool itrigger; /* FRM is known to contain a valid value. */ bool frm_valid; - /* TCG of the current insn_start */ - TCGOp *insn_start; + bool insn_start_updated; } DisasContext; =20 static inline bool has_ext(DisasContext *ctx, uint32_t ext) @@ -207,9 +206,9 @@ static void gen_check_nanbox_s(TCGv_i64 out, TCGv_i64 i= n) =20 static void decode_save_opc(DisasContext *ctx) { - assert(ctx->insn_start !=3D NULL); - tcg_set_insn_start_param(ctx->insn_start, 1, ctx->opcode); - ctx->insn_start =3D NULL; + assert(!ctx->insn_start_updated); + ctx->insn_start_updated =3D true; + tcg_set_insn_start_param(ctx->base.insn_start, 1, ctx->opcode); } =20 static void gen_pc_plus_diff(TCGv target, DisasContext *ctx, @@ -1224,7 +1223,7 @@ static void riscv_tr_insn_start(DisasContextBase *dcb= ase, CPUState *cpu) } =20 tcg_gen_insn_start(pc_next, 0); - ctx->insn_start =3D tcg_last_op(); + ctx->insn_start_updated =3D false; } =20 static void riscv_tr_translate_insn(DisasContextBase *dcbase, CPUState *cp= u) --=20 2.34.1 From nobody Sat May 18 22:31:29 2024 Delivered-To: importer@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+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1712598778; cv=none; d=zohomail.com; s=zohoarc; b=V58mqNuNrGnqPaWr4X6EiKhTxKlnAB+Iga24zsHX2x0COgLQGJ9Q3oUfg8lWaKxPMiUlPkoERjU572KjGrYtex1vcw1g8X5KASfxZmZNcd9FeirJuXBvSGo9AxQnLpxdM5590AV31MnsUM8vfebE1tmBuo2x4IsiZvMWulda5E0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1712598778; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=pLzmDWgl8qUDWCq3D57/PwLyiFcPLxohH0NJBMBSEDg=; b=RS84xwJTfgxm/gi7S3t+T1p2i35VfK2HxgeL/DF81e0LWCfduz3+t88LHU/BBanqIKchtAr09icXlqnyDcxpgaJo+eHbTdkHnapCCFlhsC88M4OouzjozJ9Me2lXgfjorpVJ/2aZxRHEEmbq6GEuSAim86ywX66vX95afP8y1qs= 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+importer=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 1712598778875432.6678500558546; Mon, 8 Apr 2024 10:52:58 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1rtt8M-000279-Ce; Mon, 08 Apr 2024 13:50:18 -0400 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 1rtt8K-00026q-Oo for qemu-devel@nongnu.org; Mon, 08 Apr 2024 13:50:16 -0400 Received: from mail-pj1-x1033.google.com ([2607:f8b0:4864:20::1033]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1rtt8G-0003jY-PH for qemu-devel@nongnu.org; Mon, 08 Apr 2024 13:50:16 -0400 Received: by mail-pj1-x1033.google.com with SMTP id 98e67ed59e1d1-29e0229d6b5so3889745a91.3 for ; Mon, 08 Apr 2024 10:50:11 -0700 (PDT) Received: from stoup.. (098-147-007-212.res.spectrum.com. [98.147.7.212]) by smtp.gmail.com with ESMTPSA id ga15-20020a17090b038f00b0029c3bac0aa8sm8658432pjb.4.2024.04.08.10.50.09 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 08 Apr 2024 10:50:09 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1712598610; x=1713203410; darn=nongnu.org; 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=pLzmDWgl8qUDWCq3D57/PwLyiFcPLxohH0NJBMBSEDg=; b=c9OolPn3B22rSeVbPk820E26xTJsb99TplPvozZx8Ca4oohmhh6dBr1HxfdEh99dv5 5zdBSYjKHPjy6HyHq5xAmNqJ3fcnW0iRt3XsiVpDVaz4+hDlFhU/i77t/l0STesBOoaK gyS+AV+bfcBXjz/jYQofTdDFZjt60/Cvzf2dD8kdlS7fabU6Spnc5QeONliSKsxlFtB/ xXx80PJ0slpAPV+MHJ1AYqeuR/RptMV0hVfcFsqie6MeYJfdnGjJ0lDEJvfQUlFDAwBX N6fCnqk5Yfgs9V2q3UeIquSI6b7Wegy60FCHNd8Qno2jYD4EjuWqI/sR2gkjhnAcN3oV sF1g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1712598610; x=1713203410; 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=pLzmDWgl8qUDWCq3D57/PwLyiFcPLxohH0NJBMBSEDg=; b=wg2pq+z2SuNskt35fegnSxQi6FifyAcjTm/8Vi6yupvu/OmfMQU3dpSn/XJUXIJlB9 u/TLC8HokAxOP38wfBfaRSw2eLI1apOomgsFS5WJXItSSO+wGc1YzwKWIWbkLtCVoZ8T OqgXt3f9PSAza0/ep19i9fbu3fgnURC/9lAPTyvXkuNfYE0Y5KBd2a6CUMrzI8jpMrE8 Jkq32lpEdN1qIBUDny+x20l5xf0po5dcQo9SeNSbdwlPfc2PjgsmHhxAcUEXBc63zxKz Xe8F+LdPRbsaC2Q8oZZ5CXhosX5MdXGaSmgLwvOWTRMP9+kC8SUML6smPx08mP8Etr4O se4w== X-Gm-Message-State: AOJu0YyKyugeJHGzuSwtRV8ky9/0JQ7UvwvUh+i9B5DzVfZCt1d/enS5 gOLTKXetPFFbnZmJjVlN0pXC2AcvgZuXKGe/pBZKs29iieG55g+kZXMlKDqe8iQp8tUQhDpqY47 B X-Google-Smtp-Source: AGHT+IElBetL066uhjs8ZPDx/ZpOcjL8/KI/mqZiWa6PQ8roRc/dU3J8AiP7xiUx6Yjukj/vyUL9GQ== X-Received: by 2002:a17:90b:3ecb:b0:29f:7672:7fee with SMTP id rm11-20020a17090b3ecb00b0029f76727feemr8845985pjb.31.1712598610243; Mon, 08 Apr 2024 10:50:10 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Subject: [PULL 26/35] target/s390x: Use insn_start from DisasContextBase Date: Mon, 8 Apr 2024 07:49:20 -1000 Message-Id: <20240408174929.862917-27-richard.henderson@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20240408174929.862917-1-richard.henderson@linaro.org> References: <20240408174929.862917-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+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::1033; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x1033.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+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1712598780619100003 Reviewed-by: Philippe Mathieu-Daud=C3=A9 Signed-off-by: Richard Henderson --- target/s390x/tcg/translate.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/target/s390x/tcg/translate.c b/target/s390x/tcg/translate.c index 57b7db1ee9..90a74ee795 100644 --- a/target/s390x/tcg/translate.c +++ b/target/s390x/tcg/translate.c @@ -141,7 +141,6 @@ struct DisasFields { struct DisasContext { DisasContextBase base; const DisasInsn *insn; - TCGOp *insn_start; DisasFields fields; uint64_t ex_value; /* @@ -6314,7 +6313,7 @@ static DisasJumpType translate_one(CPUS390XState *env= , DisasContext *s) insn =3D extract_insn(env, s); =20 /* Update insn_start now that we know the ILEN. */ - tcg_set_insn_start_param(s->insn_start, 2, s->ilen); + tcg_set_insn_start_param(s->base.insn_start, 2, s->ilen); =20 /* Not found means unimplemented/illegal opcode. */ if (insn =3D=3D NULL) { @@ -6468,7 +6467,6 @@ static void s390x_tr_insn_start(DisasContextBase *dcb= ase, CPUState *cs) =20 /* Delay the set of ilen until we've read the insn. */ tcg_gen_insn_start(dc->base.pc_next, dc->cc_op, 0); - dc->insn_start =3D tcg_last_op(); } =20 static target_ulong get_next_pc(CPUS390XState *env, DisasContext *s, --=20 2.34.1 From nobody Sat May 18 22:31:29 2024 Delivered-To: importer@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+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1712598950; cv=none; d=zohomail.com; s=zohoarc; b=TdOyT12KggaAcmk2yrBe7G/ijPmvF88+/Rawi6R1zlAKe3ov1Sdjez/+9d8E/cZdLkjYSgZu0uCAnMDdvjQhyH11kI7epwee1KKTjEFwy4Y1LiBJPt/KOdYudp3eCXuqzsH5eu3K6lFBB0oEea4dXQqEqTAvpkTa6+vLq5qqP0Y= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1712598950; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=LWeWfrDPztEwkV9YuE7zu+DtIohBh0oWfxn6udjmQ4s=; b=hngxMAae1VeYHprKE+2W/EUCgDy755n0iQjBN85DMVm9a3XMNRfabkx10NPTkKH9+ZZJejngyXlSPPCuV/+WH/fi/wAQkFk5OPRF54vWmn+GYRUUxMxXcsR5Px9O/hmcMFAxAygcEf2RoLcLe7do/w82mfBQ8KcEcsi5AqGb2aI= 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+importer=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 171259895053038.05641122059967; Mon, 8 Apr 2024 10:55:50 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1rtt8N-00027N-1x; Mon, 08 Apr 2024 13:50:19 -0400 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 1rtt8K-00026s-TE for qemu-devel@nongnu.org; Mon, 08 Apr 2024 13:50:16 -0400 Received: from mail-pg1-x529.google.com ([2607:f8b0:4864:20::529]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1rtt8J-0003jm-1b for qemu-devel@nongnu.org; Mon, 08 Apr 2024 13:50:16 -0400 Received: by mail-pg1-x529.google.com with SMTP id 41be03b00d2f7-5d4d15ec7c5so3811216a12.1 for ; Mon, 08 Apr 2024 10:50:14 -0700 (PDT) Received: from stoup.. (098-147-007-212.res.spectrum.com. [98.147.7.212]) by smtp.gmail.com with ESMTPSA id ga15-20020a17090b038f00b0029c3bac0aa8sm8658432pjb.4.2024.04.08.10.50.10 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 08 Apr 2024 10:50:11 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1712598612; x=1713203412; darn=nongnu.org; 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=LWeWfrDPztEwkV9YuE7zu+DtIohBh0oWfxn6udjmQ4s=; b=XgqngNY7YmqvH/feZBb2y0Pp4VesJsceCYF1LyLUleUK9m7MvWu5/qGaUrhvc8zSb4 VwsVtMd21dvdUQ8YnfZG/z+Ivi/uqc8DciYHFxygkHide5fdbkRFbm1vDaT04XB9sHz2 F53Ac1ckiysBIXonSUcs1YvJ7LwoM7RGpAzoKIOnRaycsajV7PCIb2vnDs39tF7CWK1o IehPl2S+T+OkqPCXdIJBetDD+Z7k/sHOUnbp01JjLhos4hL+p4k2uRJOfmhAeAYed1+m epnDO2z+FI0GlBeAct9HFS9d7Z0UTB+UKDjCG2l7UanuGagdfPjc/Xx8ZBgMyLmYVSfw v6bg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1712598612; x=1713203412; 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=LWeWfrDPztEwkV9YuE7zu+DtIohBh0oWfxn6udjmQ4s=; b=uCsAOScy6qglBj+b54fqHAoeV90FP+tNEXX5aulCZoJbLRfCA0JCcDwmlFmrF+x4iI 0xaG+Oe3SlQ0Sl6xgXw8tgTBLZqZnmGxOogQSvrrVYkEj9koyaGP/HPpc8zP4F17499i 38jKwbYSH97GcXEmIQ1wQOKIRhLAKg8qIe6QKdNYo4sRRQ7YylG+bUSD8CiS+J9rDKgS hg/bdf0igi8cCTkWwjK6hvsBnaaysVrJb1rgW8cJmPVZsAqWv4Whqoz27mS2QWL/7XI+ m7vGe+SLb71X88UMi1dPq48o93XyWKdwh9JmQ9Cv1yzrgdhfTda/Ynq/mh3i6CksR1+U Sw4g== X-Gm-Message-State: AOJu0YyC2Vr9Pl7AmVcBgvDJW+G2GZizR68X4rSSAZqER8Nh8fjrfFZV WabMCsmPCbQxZTtwc1Lyr7O2Uf6Ze5u0Y2SM06wj11KFhURzVlyO1myjMS+n/vQcA02dn5hFlAb K X-Google-Smtp-Source: AGHT+IGtl5EAeMFBnm3J24SXUxUFppKqtxQAhInllf9x+JDL59fGQxM1swl4FRFsZetLLHt4H3PNgw== X-Received: by 2002:a17:90b:24a:b0:2a0:8eed:56ec with SMTP id fz10-20020a17090b024a00b002a08eed56ecmr8432988pjb.39.1712598612163; Mon, 08 Apr 2024 10:50:12 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: =?UTF-8?q?J=C3=B8rgen=20Hansen?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Subject: [PULL 27/35] accel/tcg: Improve can_do_io management Date: Mon, 8 Apr 2024 07:49:21 -1000 Message-Id: <20240408174929.862917-28-richard.henderson@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20240408174929.862917-1-richard.henderson@linaro.org> References: <20240408174929.862917-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+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::529; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x529.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+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1712598951416100002 We already attempted to set and clear can_do_io before the first and last insns, but only used the initial value of max_insns and the call to translator_io_start to find those insns. Now that we track insn_start in DisasContextBase, and now that we have emit_before_op, we can wait until we have finished translation to identify the true first and last insns and emit the sets of can_do_io at that time. This fixes the case of a translation block which crossed a page boundary, and for which the second page turned out to be mmio. In this case we truncate the block, and the previous logic for can_do_io could leave a block with a single insn with can_do_io set to false, which would fail an assertion in cpu_io_recompile. Reported-by: J=C3=B8rgen Hansen Reviewed-by: Philippe Mathieu-Daud=C3=A9 Tested-by: J=C3=B8rgen Hansen Signed-off-by: Richard Henderson --- include/exec/translator.h | 1 - accel/tcg/translator.c | 45 ++++++++++++++++++++------------------- 2 files changed, 23 insertions(+), 23 deletions(-) diff --git a/include/exec/translator.h b/include/exec/translator.h index ceaeca8c91..2c4fb818e7 100644 --- a/include/exec/translator.h +++ b/include/exec/translator.h @@ -87,7 +87,6 @@ typedef struct DisasContextBase { int num_insns; int max_insns; bool singlestep_enabled; - int8_t saved_can_do_io; bool plugin_enabled; struct TCGOp *insn_start; void *host_addr[2]; diff --git a/accel/tcg/translator.c b/accel/tcg/translator.c index ae61c154c2..9de0bc34c8 100644 --- a/accel/tcg/translator.c +++ b/accel/tcg/translator.c @@ -18,20 +18,14 @@ =20 static void set_can_do_io(DisasContextBase *db, bool val) { - if (db->saved_can_do_io !=3D val) { - db->saved_can_do_io =3D val; - - QEMU_BUILD_BUG_ON(sizeof_field(CPUState, neg.can_do_io) !=3D 1); - tcg_gen_st8_i32(tcg_constant_i32(val), tcg_env, - offsetof(ArchCPU, parent_obj.neg.can_do_io) - - offsetof(ArchCPU, env)); - } + QEMU_BUILD_BUG_ON(sizeof_field(CPUState, neg.can_do_io) !=3D 1); + tcg_gen_st8_i32(tcg_constant_i32(val), tcg_env, + offsetof(ArchCPU, parent_obj.neg.can_do_io) - + offsetof(ArchCPU, env)); } =20 bool translator_io_start(DisasContextBase *db) { - set_can_do_io(db, true); - /* * Ensure that this instruction will be the last in the TB. * The target may override this to something more forceful. @@ -84,13 +78,6 @@ static TCGOp *gen_tb_start(DisasContextBase *db, uint32_= t cflags) - offsetof(ArchCPU, env)); } =20 - /* - * cpu->neg.can_do_io is set automatically here at the beginning of - * each translation block. The cost is minimal, plus it would be - * very easy to forget doing it in the translator. - */ - set_can_do_io(db, db->max_insns =3D=3D 1); - return icount_start_insn; } =20 @@ -129,6 +116,7 @@ void translator_loop(CPUState *cpu, TranslationBlock *t= b, int *max_insns, { uint32_t cflags =3D tb_cflags(tb); TCGOp *icount_start_insn; + TCGOp *first_insn_start =3D NULL; bool plugin_enabled; =20 /* Initialize DisasContext */ @@ -139,7 +127,6 @@ void translator_loop(CPUState *cpu, TranslationBlock *t= b, int *max_insns, db->num_insns =3D 0; db->max_insns =3D *max_insns; db->singlestep_enabled =3D cflags & CF_SINGLE_STEP; - db->saved_can_do_io =3D -1; db->insn_start =3D NULL; db->host_addr[0] =3D host_pc; db->host_addr[1] =3D NULL; @@ -159,6 +146,9 @@ void translator_loop(CPUState *cpu, TranslationBlock *t= b, int *max_insns, *max_insns =3D ++db->num_insns; ops->insn_start(db, cpu); db->insn_start =3D tcg_last_op(); + if (first_insn_start =3D=3D NULL) { + first_insn_start =3D db->insn_start; + } tcg_debug_assert(db->is_jmp =3D=3D DISAS_NEXT); /* no early exit = */ =20 if (plugin_enabled) { @@ -171,10 +161,6 @@ void translator_loop(CPUState *cpu, TranslationBlock *= tb, int *max_insns, * done next -- either exiting this loop or locate the start of * the next instruction. */ - if (db->num_insns =3D=3D db->max_insns) { - /* Accept I/O on the last instruction. */ - set_can_do_io(db, true); - } ops->translate_insn(db, cpu); =20 /* @@ -207,6 +193,21 @@ void translator_loop(CPUState *cpu, TranslationBlock *= tb, int *max_insns, ops->tb_stop(db, cpu); gen_tb_end(tb, cflags, icount_start_insn, db->num_insns); =20 + /* + * Manage can_do_io for the translation block: set to false before + * the first insn and set to true before the last insn. + */ + if (db->num_insns =3D=3D 1) { + tcg_debug_assert(first_insn_start =3D=3D db->insn_start); + } else { + tcg_debug_assert(first_insn_start !=3D db->insn_start); + tcg_ctx->emit_before_op =3D first_insn_start; + set_can_do_io(db, false); + } + tcg_ctx->emit_before_op =3D db->insn_start; + set_can_do_io(db, true); + tcg_ctx->emit_before_op =3D NULL; + if (plugin_enabled) { plugin_gen_tb_end(cpu, db->num_insns); } --=20 2.34.1 From nobody Sat May 18 22:31:29 2024 Delivered-To: importer@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+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1712598939; cv=none; d=zohomail.com; s=zohoarc; b=PKNanXlw1MwW7qm80KJrZS17YO4IHif4rCIl0kyBk3yeKaAx2AaguLC5wRaG3bh5dZz0kT9tA0lLmRogdwe0rtTyEgTrT2E8k3U/z7iajw+X+LCGRTAtDX//MI9mnO9w0seK8EMzh4CF/3gAMyXYYWkMtvCqCvIoki5klqrGu0k= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1712598939; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=r70v09Z1jYUdUmudZIEve8pIi40latYcxErAtIALfYA=; b=JHyREeLMiyUr/u2yhb1pa7IiUPxY592LmRLi6T7ypGMnimwgPQtE7d9u1FU1IMqNgTbt+TePv4YaN/hmcTG7LjU8mw4FBNuZ3wTw2DX4CXG4O09nFu50HD+Q8WVW/Se2UFi0qEsrFR1B3+Pc6CxpQ1PXVLO64ubf0UmMwYfTT/A= 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+importer=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 171259893934967.93038569359351; Mon, 8 Apr 2024 10:55:39 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1rtt8N-00027K-0O; Mon, 08 Apr 2024 13:50:19 -0400 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 1rtt8M-00027B-BU for qemu-devel@nongnu.org; Mon, 08 Apr 2024 13:50:18 -0400 Received: from mail-pg1-x52b.google.com ([2607:f8b0:4864:20::52b]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1rtt8J-0003k4-EJ for qemu-devel@nongnu.org; Mon, 08 Apr 2024 13:50:18 -0400 Received: by mail-pg1-x52b.google.com with SMTP id 41be03b00d2f7-5e4613f2b56so3665145a12.1 for ; Mon, 08 Apr 2024 10:50:15 -0700 (PDT) Received: from stoup.. (098-147-007-212.res.spectrum.com. [98.147.7.212]) by smtp.gmail.com with ESMTPSA id ga15-20020a17090b038f00b0029c3bac0aa8sm8658432pjb.4.2024.04.08.10.50.12 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 08 Apr 2024 10:50:13 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1712598614; x=1713203414; darn=nongnu.org; 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=r70v09Z1jYUdUmudZIEve8pIi40latYcxErAtIALfYA=; b=wrA720sPrA8Nm+OQoSIqkjj9BW8Hgk8o3vq4sjrYWHqth0Ucp7DXEL/6QaDY4x2x00 Qzj68v95fcVY3h/Fz9bs16FogQlmb7lGIzMNe/T53qjc5I8NW8ETnfp+TtIb6RVbbCo9 GOwVjOJTht3gtMwUgCImHCRxpQhmN8/nk7rzBSgV619Wcg9+CFlVsfgklgwwfr7U01OY x+tYqK21NkwSmh3SaEsai6O5lqEDOWnradH/W6XdDz1yonnE1jNGPp2FJJbjNDDaJ2dl RtcoxZVyFaLytocQ4xguXj8MKg/lBzGxE6RYS7JNIzqZhvwsiJkszfj8QfmHGso6QURP RQ5A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1712598614; x=1713203414; 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=r70v09Z1jYUdUmudZIEve8pIi40latYcxErAtIALfYA=; b=OxAEHIKoYt9/9am5W6Dqe654NM00q1DETauFvuRgS3t3riCIlIoTqXU3BgsFkmjLMK 9XppxTs+RqB0K01DHj/CdjfL3Daty+nYx3u+dY/eiInoQAF5QTbAhK+g2L8rhzbsJsmh RnGqo1fB69BUqu8PiCpmJNtVR4FeWeuete4/Zu3S/p1cfq0BNhP3xsC/GhMwxutBYVj6 mIScrPphb2RFp+rSrievR+bEE5YFeGS1VhMJeOH1/kGF8Cm1D6tCFUZVtghiU/pTOmXy Mp+fcELwqEH4nWFomHXGiwRumQf+sol/HpbwJgWh5eb9SyfoCybL/gM2gv+jMQzwdPf8 dYhw== X-Gm-Message-State: AOJu0Yy/Fpk2Y7BReynK29dq7k3CHnHX/WMS3phrhNvI0J3y14UemJSb z7+yqjJCQoRyB65+Kt6rxTXkOvwat5kWKIM3LsmHk9n7RhMk7C1NOV56IWLFZnYKu5YBACn1Kug F X-Google-Smtp-Source: AGHT+IE80lerOFer8W/g3BtOG55khwBtNttI6YF0ABRTth2WipfaIEoACLdRRtcktw5n+RSlePjXbQ== X-Received: by 2002:a17:90b:1bcc:b0:2a0:2fb3:c1ff with SMTP id oa12-20020a17090b1bcc00b002a02fb3c1ffmr7520545pjb.15.1712598613747; Mon, 08 Apr 2024 10:50:13 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: Alexander Monakov , Mikhail Romanov Subject: [PULL 28/35] util/bufferiszero: Remove SSE4.1 variant Date: Mon, 8 Apr 2024 07:49:22 -1000 Message-Id: <20240408174929.862917-29-richard.henderson@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20240408174929.862917-1-richard.henderson@linaro.org> References: <20240408174929.862917-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+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::52b; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x52b.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+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1712598941358100009 Content-Type: text/plain; charset="utf-8" From: Alexander Monakov The SSE4.1 variant is virtually identical to the SSE2 variant, except for using 'PTEST+JNZ' in place of 'PCMPEQB+PMOVMSKB+CMP+JNE' for testing if an SSE register is all zeroes. The PTEST instruction decodes to two uops, so it can be handled only by the complex decoder, and since CMP+JNE are macro-fused, both sequences decode to three uops. The uops comprising the PTEST instruction dispatch to p0 and p5 on Intel CPUs, so PCMPEQB+PMOVMSKB is comparatively more flexible from dispatch standpoint. Hence, the use of PTEST brings no benefit from throughput standpoint. Its latency is not important, since it feeds only a conditional jump, which terminates the dependency chain. I never observed PTEST variants to be faster on real hardware. Signed-off-by: Alexander Monakov Signed-off-by: Mikhail Romanov Reviewed-by: Richard Henderson Message-Id: <20240206204809.9859-2-amonakov@ispras.ru> --- util/bufferiszero.c | 29 ----------------------------- 1 file changed, 29 deletions(-) diff --git a/util/bufferiszero.c b/util/bufferiszero.c index 3e6a5dfd63..f5a3634f9a 100644 --- a/util/bufferiszero.c +++ b/util/bufferiszero.c @@ -100,34 +100,6 @@ buffer_zero_sse2(const void *buf, size_t len) } =20 #ifdef CONFIG_AVX2_OPT -static bool __attribute__((target("sse4"))) -buffer_zero_sse4(const void *buf, size_t len) -{ - __m128i t =3D _mm_loadu_si128(buf); - __m128i *p =3D (__m128i *)(((uintptr_t)buf + 5 * 16) & -16); - __m128i *e =3D (__m128i *)(((uintptr_t)buf + len) & -16); - - /* Loop over 16-byte aligned blocks of 64. */ - while (likely(p <=3D e)) { - __builtin_prefetch(p); - if (unlikely(!_mm_testz_si128(t, t))) { - return false; - } - t =3D p[-4] | p[-3] | p[-2] | p[-1]; - p +=3D 4; - } - - /* Finish the aligned tail. */ - t |=3D e[-3]; - t |=3D e[-2]; - t |=3D e[-1]; - - /* Finish the unaligned tail. */ - t |=3D _mm_loadu_si128(buf + len - 16); - - return _mm_testz_si128(t, t); -} - static bool __attribute__((target("avx2"))) buffer_zero_avx2(const void *buf, size_t len) { @@ -221,7 +193,6 @@ select_accel_cpuinfo(unsigned info) #endif #ifdef CONFIG_AVX2_OPT { CPUINFO_AVX2, 128, buffer_zero_avx2 }, - { CPUINFO_SSE4, 64, buffer_zero_sse4 }, #endif { CPUINFO_SSE2, 64, buffer_zero_sse2 }, { CPUINFO_ALWAYS, 0, buffer_zero_int }, --=20 2.34.1 From nobody Sat May 18 22:31:29 2024 Delivered-To: importer@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+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1712599089; cv=none; d=zohomail.com; s=zohoarc; b=Mz4lCYHDit0Tte3Hr8m5ZXzubpBS+aMqqXWkAoKWwKGqFXPrqsOnVV6JvF8/cIBW+436ERv9WNMMD2RUYrxj5rtIhh19Ncl9T4vYwDmgwR4XphKL9c0OZgDuW9cHlxiUF7CilWFAmDwHGDen0Aw9wldZSg5I+N5CTFhx0Cny2JU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1712599089; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=Sc6Au+pExfgVbkEVt3xBcrgjk6DJCZWLxXzjjgNJTcI=; b=S9ZLfQMuYncFw2CQesIS+byFMFhg+5/AqixHdHPkZRzEewGq77xsjFuK/9zPIPtYnrZMghHgAZRnoCfNpgdV7ot494DTusyD6oIcC3GNOWZBbK3QXO9g1vCRTWldJX/g51LlLI/K1W42fPmtej5HMaznWFE+h4tAZPPXjbwk4Aw= 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+importer=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 1712599089141194.81766087451626; Mon, 8 Apr 2024 10:58:09 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1rtt8O-00028z-RH; Mon, 08 Apr 2024 13:50:20 -0400 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 1rtt8N-00027f-A1 for qemu-devel@nongnu.org; Mon, 08 Apr 2024 13:50:19 -0400 Received: from mail-pg1-x535.google.com ([2607:f8b0:4864:20::535]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1rtt8K-0003kP-Ey for qemu-devel@nongnu.org; Mon, 08 Apr 2024 13:50:19 -0400 Received: by mail-pg1-x535.google.com with SMTP id 41be03b00d2f7-5dbcfa0eb5dso3423963a12.3 for ; Mon, 08 Apr 2024 10:50:16 -0700 (PDT) Received: from stoup.. (098-147-007-212.res.spectrum.com. [98.147.7.212]) by smtp.gmail.com with ESMTPSA id ga15-20020a17090b038f00b0029c3bac0aa8sm8658432pjb.4.2024.04.08.10.50.13 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 08 Apr 2024 10:50:14 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1712598615; x=1713203415; darn=nongnu.org; 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=Sc6Au+pExfgVbkEVt3xBcrgjk6DJCZWLxXzjjgNJTcI=; b=O7hoOfOHJzJ5w+NZJNE4a0zu1/UrchsYwKQwKvRqlPq7XfKEssfOwEYfbCMAzaqxxZ y8iLiCXSr4Owdzr89LIYfoCp3phhzH7VZM1Hzg3U/3pke0/18xm2ArepAWY+lytW/bqB eHNLzaArlFYl2zdMTcAo5xtJcBYfanLt41UwAM5fWtpFtHjSBOz6ibQB6nfHRFOvuYsL lUhakiS+JhPDyeX/hr3+lge7fgHwNk48+YqCG6gvuNZt0DkOelILuicu8lF/ZKzE8Ekq fW1KGSElI5XOWFSR9VBsnHysa41BhIwPRParpqUQP2TfH0mPqtKO+N8dSWbYIcFDpeGp Sxmg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1712598615; x=1713203415; 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=Sc6Au+pExfgVbkEVt3xBcrgjk6DJCZWLxXzjjgNJTcI=; b=wEEEBNIGVB9JsUs1EYrckd8C5LuWQDRKKfy5GktrZoAraK1xx1Sd/aFXKzD16onw+p 5jRVMfACgeN5y2GD3Yaqjnf8MKMVxHfhm7CqvHEzujyG7ar1JYM548IFF7T/+60uumh8 GDeoX7QItOazazX6bydjFXgsCBzCLzLcaQDfbq0BeAbE4pPxSuZMm3Lo0wR9SliEl9/F mnoVXcrtxjLjHU1xkNfxJWVlFjLgl9sJhMDx8W9s0Q9oVIhFrYIqbBeauWewKsinB7sU rGQTEPUzLyOpMfetzmhfbz+Zvi9IWQ8kMR23k2IFgB1MwFzueSeQH4O1XsYX9ZEsz9RP VDog== X-Gm-Message-State: AOJu0Yx7JtOLBL0VPXQBt2jBaI3/cXqS9NJmMKIDP6hu2su2fPBNqfq0 wx7WtdtP3a5jNGqUQspuCSMt5ZIkn3uaftbOhe3e9uJNjzbKKz0BiwtYXEl0QsomrzbsbauwY3a p X-Google-Smtp-Source: AGHT+IHtBXRVI2LDVITXAMNNEh01NC++BzpjWVGop56nqwx2flUXzgu8qpgqo+KsLuauBf1LZM2zhg== X-Received: by 2002:a17:90a:de89:b0:2a2:c2c4:9d28 with SMTP id n9-20020a17090ade8900b002a2c2c49d28mr7184354pjv.8.1712598615073; Mon, 08 Apr 2024 10:50:15 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: Alexander Monakov , Mikhail Romanov Subject: [PULL 29/35] util/bufferiszero: Remove AVX512 variant Date: Mon, 8 Apr 2024 07:49:23 -1000 Message-Id: <20240408174929.862917-30-richard.henderson@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20240408174929.862917-1-richard.henderson@linaro.org> References: <20240408174929.862917-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+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::535; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x535.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+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1712599090008100008 Content-Type: text/plain; charset="utf-8" From: Alexander Monakov Thanks to early checks in the inline buffer_is_zero wrapper, the SIMD routines are invoked much more rarely in normal use when most buffers are non-zero. This makes use of AVX512 unprofitable, as it incurs extra frequency and voltage transition periods during which the CPU operates at reduced performance, as described in https://travisdowns.github.io/blog/2020/01/17/avxfreq1.html Signed-off-by: Mikhail Romanov Signed-off-by: Alexander Monakov Reviewed-by: Richard Henderson Message-Id: <20240206204809.9859-4-amonakov@ispras.ru> Signed-off-by: Richard Henderson --- util/bufferiszero.c | 38 +++----------------------------------- 1 file changed, 3 insertions(+), 35 deletions(-) diff --git a/util/bufferiszero.c b/util/bufferiszero.c index f5a3634f9a..641d5f9b9e 100644 --- a/util/bufferiszero.c +++ b/util/bufferiszero.c @@ -64,7 +64,7 @@ buffer_zero_int(const void *buf, size_t len) } } =20 -#if defined(CONFIG_AVX512F_OPT) || defined(CONFIG_AVX2_OPT) || defined(__S= SE2__) +#if defined(CONFIG_AVX2_OPT) || defined(__SSE2__) #include =20 /* Note that each of these vectorized functions require len >=3D 64. */ @@ -128,41 +128,12 @@ buffer_zero_avx2(const void *buf, size_t len) } #endif /* CONFIG_AVX2_OPT */ =20 -#ifdef CONFIG_AVX512F_OPT -static bool __attribute__((target("avx512f"))) -buffer_zero_avx512(const void *buf, size_t len) -{ - /* Begin with an unaligned head of 64 bytes. */ - __m512i t =3D _mm512_loadu_si512(buf); - __m512i *p =3D (__m512i *)(((uintptr_t)buf + 5 * 64) & -64); - __m512i *e =3D (__m512i *)(((uintptr_t)buf + len) & -64); - - /* Loop over 64-byte aligned blocks of 256. */ - while (p <=3D e) { - __builtin_prefetch(p); - if (unlikely(_mm512_test_epi64_mask(t, t))) { - return false; - } - t =3D p[-4] | p[-3] | p[-2] | p[-1]; - p +=3D 4; - } - - t |=3D _mm512_loadu_si512(buf + len - 4 * 64); - t |=3D _mm512_loadu_si512(buf + len - 3 * 64); - t |=3D _mm512_loadu_si512(buf + len - 2 * 64); - t |=3D _mm512_loadu_si512(buf + len - 1 * 64); - - return !_mm512_test_epi64_mask(t, t); - -} -#endif /* CONFIG_AVX512F_OPT */ - /* * Make sure that these variables are appropriately initialized when * SSE2 is enabled on the compiler command-line, but the compiler is * too old to support CONFIG_AVX2_OPT. */ -#if defined(CONFIG_AVX512F_OPT) || defined(CONFIG_AVX2_OPT) +#if defined(CONFIG_AVX2_OPT) # define INIT_USED 0 # define INIT_LENGTH 0 # define INIT_ACCEL buffer_zero_int @@ -188,9 +159,6 @@ select_accel_cpuinfo(unsigned info) unsigned len; bool (*fn)(const void *, size_t); } all[] =3D { -#ifdef CONFIG_AVX512F_OPT - { CPUINFO_AVX512F, 256, buffer_zero_avx512 }, -#endif #ifdef CONFIG_AVX2_OPT { CPUINFO_AVX2, 128, buffer_zero_avx2 }, #endif @@ -208,7 +176,7 @@ select_accel_cpuinfo(unsigned info) return 0; } =20 -#if defined(CONFIG_AVX512F_OPT) || defined(CONFIG_AVX2_OPT) +#if defined(CONFIG_AVX2_OPT) static void __attribute__((constructor)) init_accel(void) { used_accel =3D select_accel_cpuinfo(cpuinfo_init()); --=20 2.34.1 From nobody Sat May 18 22:31:29 2024 Delivered-To: importer@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+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1712598932; cv=none; d=zohomail.com; s=zohoarc; b=SwYLLGGc9MMAv1ax9WRYIy9ds5fK20vDZMYxVgMFaDquyi6SoA30LcR6wJkiMCNKIIBta1vrKInaadwf2SNKFdyzEX+YxQhlrrnPB9Psg6QAmrm0g9Wn8rVxZAYCYGlDQJafw72sZ/ae7jAUSZR8ZHkPKZEHVtZs7pSbxmzU7nc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1712598932; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=Aco89HGhDUqxtzZSl7gQEXCIzX7CLhr3rgmAxnnD0GI=; b=imAKTV83rq9O3jevrAVSZv/MASOfb1hdygA5pUwXSF+fYQQn76iK44sfycJi8EqWvwKCOz4KXCdMy9kbVNc7+YYQp1gHKsDXG/8FhuVpJioCZ1yubLP4iaz/paW3CyIx84l3xTvkFDOarCNdKQCESaDXxXPaqkwwHfPCmp9kskw= 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+importer=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 1712598932716250.01899340145894; Mon, 8 Apr 2024 10:55:32 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1rtt8P-00029W-Pg; Mon, 08 Apr 2024 13:50:21 -0400 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 1rtt8P-000291-0M for qemu-devel@nongnu.org; Mon, 08 Apr 2024 13:50:21 -0400 Received: from mail-pj1-x102b.google.com ([2607:f8b0:4864:20::102b]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1rtt8M-0003kw-4k for qemu-devel@nongnu.org; Mon, 08 Apr 2024 13:50:20 -0400 Received: by mail-pj1-x102b.google.com with SMTP id 98e67ed59e1d1-2a502547460so936123a91.2 for ; Mon, 08 Apr 2024 10:50:17 -0700 (PDT) Received: from stoup.. (098-147-007-212.res.spectrum.com. [98.147.7.212]) by smtp.gmail.com with ESMTPSA id ga15-20020a17090b038f00b0029c3bac0aa8sm8658432pjb.4.2024.04.08.10.50.15 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 08 Apr 2024 10:50:16 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1712598616; x=1713203416; darn=nongnu.org; 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=Aco89HGhDUqxtzZSl7gQEXCIzX7CLhr3rgmAxnnD0GI=; b=BBYYcPUErrRL1Zi8/Yo9kkYmpWGncs3x92LOCH1BT/VR92X/xutiYx1UpHYQuCjgTV ZjjbiqarYlooZetraU696fp5nr3B/xvlRAPB2i7KLX97QNzyZFuRo04ZQ2M1hLULnLYg ke3Sx2VpnZ0tKnkcSB/QPBSSaDfrP2N7HViBcFHcYm0bJOwygJF5Xw3bNCx2n6V/3Xq5 B2BUM53Bsz2oTphpgPrzDsLaTPZbrzF5ew81BvHiCHQ0lrRaGAoprY1Lf1JJSjfWvnKv EtKxEi8/yFZXMxzVwuMg/mFE5t7o1prHdJWXtg30IoMlxm0O3Mj7ZoBLBO4B2GoNKxiY 5yEA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1712598616; x=1713203416; 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=Aco89HGhDUqxtzZSl7gQEXCIzX7CLhr3rgmAxnnD0GI=; b=h8qT7ocKFFUloyVEoWZv5HCQmMTc6SVRnux1/1cQEjs312H812PRB1tVH7MCFaby3c LvbJsmuuDDMTHg4dyzpsUTGEPPCJrxXxa8q/8Y3pumfVd1lafrH93KRWnOj5No8hC/lZ e9Nl+oUStpzYTe1zsooEnAbLT9lrAjV8FwXhcUUElJp/EoAm9vLnOBUBn2rdCTbPOn3S u89mGgzqa0zqXqKawYYJ4kVtOOnpK5otPGgISrC6/k7T+Rj/EWF7r+wV3n31UD1oN0Sh 0VRR/1aegvGljBiiUXme1yLRQKEjSeI+L8BuQo7jOZabTnfVGT00HUW1+Afen4xikhmO yU2Q== X-Gm-Message-State: AOJu0Yw6NvDRIm/IljtTcyuWadoUXGyJHLLKXeDh+5nHRhr8hIuwZyVn TyLZDnBsOgYaXP273NVIoOOv/dTWI1vyc9mfoFmOBYnDgAeWl42ez3q4r3wpyHb0WUdaXHuU72A v X-Google-Smtp-Source: AGHT+IHSdQ3pj21CM+BU8gezpbTGX3i3pUVeLg6Ffn9BgYeJuSwItbyZK/rGcDn/5RJce8prQxHyxA== X-Received: by 2002:a17:90a:4614:b0:2a4:ca45:ded1 with SMTP id w20-20020a17090a461400b002a4ca45ded1mr4249364pjg.28.1712598616566; Mon, 08 Apr 2024 10:50:16 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: Alexander Monakov , Mikhail Romanov Subject: [PULL 30/35] util/bufferiszero: Reorganize for early test for acceleration Date: Mon, 8 Apr 2024 07:49:24 -1000 Message-Id: <20240408174929.862917-31-richard.henderson@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20240408174929.862917-1-richard.henderson@linaro.org> References: <20240408174929.862917-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+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::102b; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x102b.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+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1712598933642100009 Content-Type: text/plain; charset="utf-8" From: Alexander Monakov Test for length >=3D 256 inline, where is is often a constant. Before calling into the accelerated routine, sample three bytes from the buffer, which handles most non-zero buffers. Signed-off-by: Alexander Monakov Signed-off-by: Mikhail Romanov Message-Id: <20240206204809.9859-3-amonakov@ispras.ru> [rth: Use __builtin_constant_p; move the indirect call out of line.] Signed-off-by: Richard Henderson --- include/qemu/cutils.h | 32 ++++++++++++++++- util/bufferiszero.c | 84 +++++++++++++++++-------------------------- 2 files changed, 63 insertions(+), 53 deletions(-) diff --git a/include/qemu/cutils.h b/include/qemu/cutils.h index 92c927a6a3..741dade7cf 100644 --- a/include/qemu/cutils.h +++ b/include/qemu/cutils.h @@ -187,9 +187,39 @@ char *freq_to_str(uint64_t freq_hz); /* used to print char* safely */ #define STR_OR_NULL(str) ((str) ? (str) : "null") =20 -bool buffer_is_zero(const void *buf, size_t len); +/* + * Check if a buffer is all zeroes. + */ + +bool buffer_is_zero_ool(const void *vbuf, size_t len); +bool buffer_is_zero_ge256(const void *vbuf, size_t len); bool test_buffer_is_zero_next_accel(void); =20 +static inline bool buffer_is_zero_sample3(const char *buf, size_t len) +{ + /* + * For any reasonably sized buffer, these three samples come from + * three different cachelines. In qemu-img usage, we find that + * each byte eliminates more than half of all buffer testing. + * It is therefore critical to performance that the byte tests + * short-circuit, so that we do not pull in additional cache lines. + * Do not "optimize" this to !(a | b | c). + */ + return !buf[0] && !buf[len - 1] && !buf[len / 2]; +} + +#ifdef __OPTIMIZE__ +static inline bool buffer_is_zero(const void *buf, size_t len) +{ + return (__builtin_constant_p(len) && len >=3D 256 + ? buffer_is_zero_sample3(buf, len) && + buffer_is_zero_ge256(buf, len) + : buffer_is_zero_ool(buf, len)); +} +#else +#define buffer_is_zero buffer_is_zero_ool +#endif + /* * Implementation of ULEB128 (http://en.wikipedia.org/wiki/LEB128) * Input is limited to 14-bit numbers diff --git a/util/bufferiszero.c b/util/bufferiszero.c index 641d5f9b9e..972f394cbd 100644 --- a/util/bufferiszero.c +++ b/util/bufferiszero.c @@ -26,8 +26,9 @@ #include "qemu/bswap.h" #include "host/cpuinfo.h" =20 -static bool -buffer_zero_int(const void *buf, size_t len) +static bool (*buffer_is_zero_accel)(const void *, size_t); + +static bool buffer_is_zero_integer(const void *buf, size_t len) { if (unlikely(len < 8)) { /* For a very small buffer, simply accumulate all the bytes. */ @@ -128,60 +129,38 @@ buffer_zero_avx2(const void *buf, size_t len) } #endif /* CONFIG_AVX2_OPT */ =20 -/* - * Make sure that these variables are appropriately initialized when - * SSE2 is enabled on the compiler command-line, but the compiler is - * too old to support CONFIG_AVX2_OPT. - */ -#if defined(CONFIG_AVX2_OPT) -# define INIT_USED 0 -# define INIT_LENGTH 0 -# define INIT_ACCEL buffer_zero_int -#else -# ifndef __SSE2__ -# error "ISA selection confusion" -# endif -# define INIT_USED CPUINFO_SSE2 -# define INIT_LENGTH 64 -# define INIT_ACCEL buffer_zero_sse2 -#endif - -static unsigned used_accel =3D INIT_USED; -static unsigned length_to_accel =3D INIT_LENGTH; -static bool (*buffer_accel)(const void *, size_t) =3D INIT_ACCEL; - static unsigned __attribute__((noinline)) select_accel_cpuinfo(unsigned info) { /* Array is sorted in order of algorithm preference. */ static const struct { unsigned bit; - unsigned len; bool (*fn)(const void *, size_t); } all[] =3D { #ifdef CONFIG_AVX2_OPT - { CPUINFO_AVX2, 128, buffer_zero_avx2 }, + { CPUINFO_AVX2, buffer_zero_avx2 }, #endif - { CPUINFO_SSE2, 64, buffer_zero_sse2 }, - { CPUINFO_ALWAYS, 0, buffer_zero_int }, + { CPUINFO_SSE2, buffer_zero_sse2 }, + { CPUINFO_ALWAYS, buffer_is_zero_integer }, }; =20 for (unsigned i =3D 0; i < ARRAY_SIZE(all); ++i) { if (info & all[i].bit) { - length_to_accel =3D all[i].len; - buffer_accel =3D all[i].fn; + buffer_is_zero_accel =3D all[i].fn; return all[i].bit; } } return 0; } =20 -#if defined(CONFIG_AVX2_OPT) +static unsigned used_accel; + static void __attribute__((constructor)) init_accel(void) { used_accel =3D select_accel_cpuinfo(cpuinfo_init()); } -#endif /* CONFIG_AVX2_OPT */ + +#define INIT_ACCEL NULL =20 bool test_buffer_is_zero_next_accel(void) { @@ -194,36 +173,37 @@ bool test_buffer_is_zero_next_accel(void) used_accel |=3D used; return used; } - -static bool select_accel_fn(const void *buf, size_t len) -{ - if (likely(len >=3D length_to_accel)) { - return buffer_accel(buf, len); - } - return buffer_zero_int(buf, len); -} - #else -#define select_accel_fn buffer_zero_int bool test_buffer_is_zero_next_accel(void) { return false; } + +#define INIT_ACCEL buffer_is_zero_integer #endif =20 -/* - * Checks if a buffer is all zeroes - */ -bool buffer_is_zero(const void *buf, size_t len) +static bool (*buffer_is_zero_accel)(const void *, size_t) =3D INIT_ACCEL; + +bool buffer_is_zero_ool(const void *buf, size_t len) { if (unlikely(len =3D=3D 0)) { return true; } + if (!buffer_is_zero_sample3(buf, len)) { + return false; + } + /* All bytes are covered for any len <=3D 3. */ + if (unlikely(len <=3D 3)) { + return true; + } =20 - /* Fetch the beginning of the buffer while we select the accelerator. = */ - __builtin_prefetch(buf); - - /* Use an optimized zero check if possible. Note that this also - includes a check for an unrolled loop over 64-bit integers. */ - return select_accel_fn(buf, len); + if (likely(len >=3D 256)) { + return buffer_is_zero_accel(buf, len); + } + return buffer_is_zero_integer(buf, len); +} + +bool buffer_is_zero_ge256(const void *buf, size_t len) +{ + return buffer_is_zero_accel(buf, len); } --=20 2.34.1 From nobody Sat May 18 22:31:29 2024 Delivered-To: importer@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+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1712598939; cv=none; d=zohomail.com; s=zohoarc; b=DNd5ju1E2joyA353OkbA0HtZsYsuK/OaCY0vmwTidsMTHcfpM3j7u90XCW6F4pWBCngvurGX8KQvpM6Eal8II4ELZXzlBMTcpQZJSVI50PsEuUxDgWYLYCwJSSvtH9d2x4iBLFrrJiYDVnz4NIASaHWxnePVHsA26cGRWJ5BHw0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1712598939; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=RPMJ9Fq7Hagw2E+aglC+ITwqURcRV1FccXRLb5FLQFU=; b=IrL+vvTGtpCNm/izbbJHWq5w7ZoZoFBQ751uoT6mN6WHsIzuI93Otb2Ht0CoWZbuv2HXNAg3YFP97H6gQxBvbdtP+YC7KTBOVhsiKDrcbSQajmNRiZxwGiqiDGXiaTRGf1i+SSHZxkmsjqKfxIkif6rFPzXkjUm2JQfH8UAiDqk= 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+importer=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 171259893946848.494340014180466; Mon, 8 Apr 2024 10:55:39 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1rtt8X-0002B4-9m; Mon, 08 Apr 2024 13:50:29 -0400 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 1rtt8T-0002AS-Ah for qemu-devel@nongnu.org; Mon, 08 Apr 2024 13:50:25 -0400 Received: from mail-pg1-x532.google.com ([2607:f8b0:4864:20::532]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1rtt8O-0003lO-GE for qemu-devel@nongnu.org; Mon, 08 Apr 2024 13:50:25 -0400 Received: by mail-pg1-x532.google.com with SMTP id 41be03b00d2f7-5ce6b5e3c4eso2695080a12.2 for ; Mon, 08 Apr 2024 10:50:19 -0700 (PDT) Received: from stoup.. (098-147-007-212.res.spectrum.com. [98.147.7.212]) by smtp.gmail.com with ESMTPSA id ga15-20020a17090b038f00b0029c3bac0aa8sm8658432pjb.4.2024.04.08.10.50.16 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 08 Apr 2024 10:50:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1712598618; x=1713203418; darn=nongnu.org; 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=RPMJ9Fq7Hagw2E+aglC+ITwqURcRV1FccXRLb5FLQFU=; b=FynA4AtMkYEVC7OeZdGIHPP6PEz2FjFtX935cJlSWbiQudtdxsmgQCYLLcE7SQgF6A GgGFr476Ji7NJDnJ14zLxDFupF5tuflymHSNDobTSGjOFa1JnnJ1jENsUT/0TJ65tJ/a 9tkp5iHEsBSthLBE80BpSF5WD9B0TYUku/6F6bumqXFcWby/7Iu74qyaEqd99G8Rt+uY yMz15/jpjwutUIh7GfD1tuo1UNV/usLpXMkGY1NfldA254gheuvcLTocCEN8gGbdBHTq 7htTdHhIeUPDnYOFow7/Gv+kwkevQSc+3o2bAuR+FoC8tFyYUzd7hQfQQbcjl7K3VU0y s4bg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1712598618; x=1713203418; 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=RPMJ9Fq7Hagw2E+aglC+ITwqURcRV1FccXRLb5FLQFU=; b=uTOl3rttEUp9Zp5Ord8VtFCESVcdhVjz0DD/mmp3dBGlUUg19eWflae6UVbkAQzkBC vxEVyIhsSlTanvzU18qEt2gfkvtlvx9xAhbEnqyUK1T4ikrVUANN24MZLhyxShUsBwbw Ni6Ud1lvt8nKRX1Are14Gg6egPaG2SUmDxCcooNtHviWsTTgIBSjCR6wiUa0umcUGK1u FetBfTBEIhMD4/rl0EtNtd2sS7IZhSJgqgg0l1/ubI/9ECy9g7fmACJR7TMiNpMr2Vd7 HZIwjmW+UpLHVu7JSgv07N2QK+ilWiOjlRYtCRdaQudrhMm1pbp4l/OLcRKTnvZF1g6i Nefg== X-Gm-Message-State: AOJu0Yxy0uVdLQf4wLQukwOnbGp7Ckyliso9U+dT6+3qBFkxIdqOW0yZ ieOUdbN+TuMsia27bUsKl9ZoXmRHyTcoYTB1IU8cKT0t22t0rsF9qMT+ZTUyapkxGAPdoNY2WMo V X-Google-Smtp-Source: AGHT+IE9QPMDe9/21wXGUioD4qlf/j3g0y5TvVs7pPUO7oCH1UmweM3nXFIXgtqHmo1PzhVkmeBACQ== X-Received: by 2002:a17:90a:7c01:b0:2a5:1fcf:efb7 with SMTP id v1-20020a17090a7c0100b002a51fcfefb7mr2721307pjf.21.1712598617875; Mon, 08 Apr 2024 10:50:17 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: Alexander Monakov , Mikhail Romanov Subject: [PULL 31/35] util/bufferiszero: Remove useless prefetches Date: Mon, 8 Apr 2024 07:49:25 -1000 Message-Id: <20240408174929.862917-32-richard.henderson@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20240408174929.862917-1-richard.henderson@linaro.org> References: <20240408174929.862917-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+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::532; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x532.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+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1712598941373100010 Content-Type: text/plain; charset="utf-8" From: Alexander Monakov Use of prefetching in bufferiszero.c is quite questionable: - prefetches are issued just a few CPU cycles before the corresponding line would be hit by demand loads; - they are done for simple access patterns, i.e. where hardware prefetchers can perform better; - they compete for load ports in loops that should be limited by load port throughput rather than ALU throughput. Signed-off-by: Alexander Monakov Signed-off-by: Mikhail Romanov Reviewed-by: Richard Henderson Message-Id: <20240206204809.9859-5-amonakov@ispras.ru> --- util/bufferiszero.c | 3 --- 1 file changed, 3 deletions(-) diff --git a/util/bufferiszero.c b/util/bufferiszero.c index 972f394cbd..00118d649e 100644 --- a/util/bufferiszero.c +++ b/util/bufferiszero.c @@ -50,7 +50,6 @@ static bool buffer_is_zero_integer(const void *buf, size_= t len) const uint64_t *e =3D (uint64_t *)(((uintptr_t)buf + len) & -8); =20 for (; p + 8 <=3D e; p +=3D 8) { - __builtin_prefetch(p + 8); if (t) { return false; } @@ -80,7 +79,6 @@ buffer_zero_sse2(const void *buf, size_t len) =20 /* Loop over 16-byte aligned blocks of 64. */ while (likely(p <=3D e)) { - __builtin_prefetch(p); t =3D _mm_cmpeq_epi8(t, zero); if (unlikely(_mm_movemask_epi8(t) !=3D 0xFFFF)) { return false; @@ -111,7 +109,6 @@ buffer_zero_avx2(const void *buf, size_t len) =20 /* Loop over 32-byte aligned blocks of 128. */ while (p <=3D e) { - __builtin_prefetch(p); if (unlikely(!_mm256_testz_si256(t, t))) { return false; } --=20 2.34.1 From nobody Sat May 18 22:31:29 2024 Delivered-To: importer@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+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1712598688; cv=none; d=zohomail.com; s=zohoarc; b=TaKJfnUfJSrPy6BAthCSkKadAkXbjoLX90/SptU5FoX5Wy/7UMncv30YmWKeTCu5yYzebMmXHT61CZVMczgnjvM9TaSdt6NJLWkFMvEbBKiCtSA0jiQFJET9Yf19sZhP0e9p3XzAdHhUjUtELOFDgCp4bQd9ehnPaWL3aqFYKt0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1712598688; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=LJEBA8HhooZ+SwbOdLUPlZU44jMDHr0d5xq5JBRqrDA=; b=FWacn7dwEtOUqohwcnxr/jkzQvz/f5Dvp8UkV2TMO8gfySWjgMamtSXUiW1jvDWrnwWh4h4blSvCBBFYXIsKYNjTW0cZGn2FDgln4ZB1QoNj0UAof7aXtsr2sNJjZhkP4MxyMdLW6lmyRTKFDVlbFMT1JTcb0nJGMbaNkpR2Q70= 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+importer=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 1712598688091716.9567347731411; Mon, 8 Apr 2024 10:51:28 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1rtt8s-0002L1-TG; Mon, 08 Apr 2024 13:50:52 -0400 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 1rtt8W-0002BA-LH for qemu-devel@nongnu.org; Mon, 08 Apr 2024 13:50:29 -0400 Received: from mail-pf1-x42d.google.com ([2607:f8b0:4864:20::42d]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1rtt8O-0003n3-VM for qemu-devel@nongnu.org; Mon, 08 Apr 2024 13:50:26 -0400 Received: by mail-pf1-x42d.google.com with SMTP id d2e1a72fcca58-6ed20fb620fso1344353b3a.2 for ; Mon, 08 Apr 2024 10:50:20 -0700 (PDT) Received: from stoup.. (098-147-007-212.res.spectrum.com. [98.147.7.212]) by smtp.gmail.com with ESMTPSA id ga15-20020a17090b038f00b0029c3bac0aa8sm8658432pjb.4.2024.04.08.10.50.18 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 08 Apr 2024 10:50:19 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1712598619; x=1713203419; darn=nongnu.org; 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=LJEBA8HhooZ+SwbOdLUPlZU44jMDHr0d5xq5JBRqrDA=; b=D5BEFsYhZVoqSwPzk4RQBc74N8t8sfBqK0tlTVxH8gX2zcKDtVivnwz6//aCVOJ17x UcDw9NgAO4V2bA6wsTGTZ1v3rPk83+ixLJtcMyJCxXoZ5ZDaI2pputcpYXpqMDBRBLu/ rXNDAMap0UVhAItn30jrcMAV9+EarD/LrxTwvybjbuaf2biXgknSn40+ZTZUSuwB21Ha d1UX13roJX6n4O18REipN5OkL0gh8BJSSnZDVKYTjgeIVDQOWjmX54e6SnZMGkapWTTu y4XSSdOpZfhKmTNMbulg/4SQ5ubZvred4S+pwpBlMb5zrvVhoTMfUmP2JFG25t0eq0zT 5/Aw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1712598619; x=1713203419; 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=LJEBA8HhooZ+SwbOdLUPlZU44jMDHr0d5xq5JBRqrDA=; b=XutXQu7bxQBCsYmxkTzihjTqw+aacfwm6UczJtr+czZoAkq5Qq8LggmflkV3x/1TGP w/ljq/pJJhwz12Tcr2zIRHuqyiTry2mC3w1CCHGdMpJ++L2KRVhueP0TKubr8tFde0uF EM1oWBUw4wHelBv/KjeXZEtpnoNi+lWSi7ypBvz/c7TDPpb5nsfPrDsU3Wsvgyah1UVf y/3MD5SxKtEl7ZhAT/wK6gUQHCsxxDwjSsW47PghO5UuFP7cKDWDkx34fn0WXco9rd/L UvLRQeTUUuozqg3GsHaOXcJJOCWxLwE8xTVd2bjjBsvpvI2k3nShq1uMbGNRmiRl8tnl q7Yw== X-Gm-Message-State: AOJu0YxjlXW97Fnhr2++mX6HFH5McoIX9UzvP/EyEmwz930bY9FjbJ+W 6Tczt4TMk1Hhgo0hnp8nU6I6nNubx78Poe+X2SuvHBH2WLHCrUPx3+Hklhl5QRXXLOiW+s+6/zl / X-Google-Smtp-Source: AGHT+IHIZCF7bNhOUkoC7AmoaISHmS0IavuFJUM1z2ldg8dnqsSPqoRb3EhqAB2y/ZPpvXrFMBz4EA== X-Received: by 2002:a05:6a21:3a48:b0:1a7:377:b86d with SMTP id zu8-20020a056a213a4800b001a70377b86dmr8901991pzb.12.1712598619569; Mon, 08 Apr 2024 10:50:19 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: Alexander Monakov , Mikhail Romanov Subject: [PULL 32/35] util/bufferiszero: Optimize SSE2 and AVX2 variants Date: Mon, 8 Apr 2024 07:49:26 -1000 Message-Id: <20240408174929.862917-33-richard.henderson@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20240408174929.862917-1-richard.henderson@linaro.org> References: <20240408174929.862917-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+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::42d; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x42d.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+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1712598690173100021 Content-Type: text/plain; charset="utf-8" From: Alexander Monakov Increase unroll factor in SIMD loops from 4x to 8x in order to move their bottlenecks from ALU port contention to load issue rate (two loads per cycle on popular x86 implementations). Avoid using out-of-bounds pointers in loop boundary conditions. Follow SSE2 implementation strategy in the AVX2 variant. Avoid use of PTEST, which is not profitable there (like in the removed SSE4 variant). Signed-off-by: Alexander Monakov Signed-off-by: Mikhail Romanov Reviewed-by: Richard Henderson Message-Id: <20240206204809.9859-6-amonakov@ispras.ru> --- util/bufferiszero.c | 111 +++++++++++++++++++++++++++++--------------- 1 file changed, 73 insertions(+), 38 deletions(-) diff --git a/util/bufferiszero.c b/util/bufferiszero.c index 00118d649e..02df82b4ff 100644 --- a/util/bufferiszero.c +++ b/util/bufferiszero.c @@ -67,62 +67,97 @@ static bool buffer_is_zero_integer(const void *buf, siz= e_t len) #if defined(CONFIG_AVX2_OPT) || defined(__SSE2__) #include =20 -/* Note that each of these vectorized functions require len >=3D 64. */ +/* Helper for preventing the compiler from reassociating + chains of binary vector operations. */ +#define SSE_REASSOC_BARRIER(vec0, vec1) asm("" : "+x"(vec0), "+x"(vec1)) + +/* Note that these vectorized functions may assume len >=3D 256. */ =20 static bool __attribute__((target("sse2"))) buffer_zero_sse2(const void *buf, size_t len) { - __m128i t =3D _mm_loadu_si128(buf); - __m128i *p =3D (__m128i *)(((uintptr_t)buf + 5 * 16) & -16); - __m128i *e =3D (__m128i *)(((uintptr_t)buf + len) & -16); - __m128i zero =3D _mm_setzero_si128(); + /* Unaligned loads at head/tail. */ + __m128i v =3D *(__m128i_u *)(buf); + __m128i w =3D *(__m128i_u *)(buf + len - 16); + /* Align head/tail to 16-byte boundaries. */ + const __m128i *p =3D QEMU_ALIGN_PTR_DOWN(buf + 16, 16); + const __m128i *e =3D QEMU_ALIGN_PTR_DOWN(buf + len - 1, 16); + __m128i zero =3D { 0 }; =20 - /* Loop over 16-byte aligned blocks of 64. */ - while (likely(p <=3D e)) { - t =3D _mm_cmpeq_epi8(t, zero); - if (unlikely(_mm_movemask_epi8(t) !=3D 0xFFFF)) { + /* Collect a partial block at tail end. */ + v |=3D e[-1]; w |=3D e[-2]; + SSE_REASSOC_BARRIER(v, w); + v |=3D e[-3]; w |=3D e[-4]; + SSE_REASSOC_BARRIER(v, w); + v |=3D e[-5]; w |=3D e[-6]; + SSE_REASSOC_BARRIER(v, w); + v |=3D e[-7]; v |=3D w; + + /* + * Loop over complete 128-byte blocks. + * With the head and tail removed, e - p >=3D 14, so the loop + * must iterate at least once. + */ + do { + v =3D _mm_cmpeq_epi8(v, zero); + if (unlikely(_mm_movemask_epi8(v) !=3D 0xFFFF)) { return false; } - t =3D p[-4] | p[-3] | p[-2] | p[-1]; - p +=3D 4; - } + v =3D p[0]; w =3D p[1]; + SSE_REASSOC_BARRIER(v, w); + v |=3D p[2]; w |=3D p[3]; + SSE_REASSOC_BARRIER(v, w); + v |=3D p[4]; w |=3D p[5]; + SSE_REASSOC_BARRIER(v, w); + v |=3D p[6]; w |=3D p[7]; + SSE_REASSOC_BARRIER(v, w); + v |=3D w; + p +=3D 8; + } while (p < e - 7); =20 - /* Finish the aligned tail. */ - t |=3D e[-3]; - t |=3D e[-2]; - t |=3D e[-1]; - - /* Finish the unaligned tail. */ - t |=3D _mm_loadu_si128(buf + len - 16); - - return _mm_movemask_epi8(_mm_cmpeq_epi8(t, zero)) =3D=3D 0xFFFF; + return _mm_movemask_epi8(_mm_cmpeq_epi8(v, zero)) =3D=3D 0xFFFF; } =20 #ifdef CONFIG_AVX2_OPT static bool __attribute__((target("avx2"))) buffer_zero_avx2(const void *buf, size_t len) { - /* Begin with an unaligned head of 32 bytes. */ - __m256i t =3D _mm256_loadu_si256(buf); - __m256i *p =3D (__m256i *)(((uintptr_t)buf + 5 * 32) & -32); - __m256i *e =3D (__m256i *)(((uintptr_t)buf + len) & -32); + /* Unaligned loads at head/tail. */ + __m256i v =3D *(__m256i_u *)(buf); + __m256i w =3D *(__m256i_u *)(buf + len - 32); + /* Align head/tail to 32-byte boundaries. */ + const __m256i *p =3D QEMU_ALIGN_PTR_DOWN(buf + 32, 32); + const __m256i *e =3D QEMU_ALIGN_PTR_DOWN(buf + len - 1, 32); + __m256i zero =3D { 0 }; =20 - /* Loop over 32-byte aligned blocks of 128. */ - while (p <=3D e) { - if (unlikely(!_mm256_testz_si256(t, t))) { + /* Collect a partial block at tail end. */ + v |=3D e[-1]; w |=3D e[-2]; + SSE_REASSOC_BARRIER(v, w); + v |=3D e[-3]; w |=3D e[-4]; + SSE_REASSOC_BARRIER(v, w); + v |=3D e[-5]; w |=3D e[-6]; + SSE_REASSOC_BARRIER(v, w); + v |=3D e[-7]; v |=3D w; + + /* Loop over complete 256-byte blocks. */ + for (; p < e - 7; p +=3D 8) { + /* PTEST is not profitable here. */ + v =3D _mm256_cmpeq_epi8(v, zero); + if (unlikely(_mm256_movemask_epi8(v) !=3D 0xFFFFFFFF)) { return false; } - t =3D p[-4] | p[-3] | p[-2] | p[-1]; - p +=3D 4; - } ; + v =3D p[0]; w =3D p[1]; + SSE_REASSOC_BARRIER(v, w); + v |=3D p[2]; w |=3D p[3]; + SSE_REASSOC_BARRIER(v, w); + v |=3D p[4]; w |=3D p[5]; + SSE_REASSOC_BARRIER(v, w); + v |=3D p[6]; w |=3D p[7]; + SSE_REASSOC_BARRIER(v, w); + v |=3D w; + } =20 - /* Finish the last block of 128 unaligned. */ - t |=3D _mm256_loadu_si256(buf + len - 4 * 32); - t |=3D _mm256_loadu_si256(buf + len - 3 * 32); - t |=3D _mm256_loadu_si256(buf + len - 2 * 32); - t |=3D _mm256_loadu_si256(buf + len - 1 * 32); - - return _mm256_testz_si256(t, t); + return _mm256_movemask_epi8(_mm256_cmpeq_epi8(v, zero)) =3D=3D 0xFFFFF= FFF; } #endif /* CONFIG_AVX2_OPT */ =20 --=20 2.34.1 From nobody Sat May 18 22:31:29 2024 Delivered-To: importer@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+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1712599091; cv=none; d=zohomail.com; s=zohoarc; b=irmy9bygxxiPRYEEprUlaUn5J1e1RQm37kSpVchBAz7vYoCSl0Vqi1hYTtZCe6dn+7nWv8LOVuJkqhk6MxdMdzIaylahGQ61Jgk0IUYcE+MEiukjj7coPzSAmFn+qLJwJJFhfLa4qRGV4ZjbqAk6BF4pX9lk9dIQJDoltyrZTEU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1712599091; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=m6Ty8XllMR28noTCDsk0N/pyr7ynqbZ4X/2NsrzAk7g=; b=W/ZS2ZELXJbP4Iw5n4cKStBmNhoSWKXINRLfLjaXtPFcsJvHekxRyzAHxrA3G2/vy3FcQGK7WkbUBcAULEDcUTBwShbB2BIRm4hPuRinKomGc3KXEA0rbEO617aDF1C88IrT19pF6pmFTr3J+PXgU8JeWFdnDYxby8Paaj7BLxo= 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+importer=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 1712599091514974.6803731322311; Mon, 8 Apr 2024 10:58:11 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1rtt8T-0002Ab-HP; Mon, 08 Apr 2024 13:50:25 -0400 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 1rtt8S-0002A0-Cg for qemu-devel@nongnu.org; Mon, 08 Apr 2024 13:50:24 -0400 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 1rtt8Q-0003oJ-Cj for qemu-devel@nongnu.org; Mon, 08 Apr 2024 13:50:23 -0400 Received: by mail-pj1-x102e.google.com with SMTP id 98e67ed59e1d1-2a07b092c4fso3408368a91.0 for ; Mon, 08 Apr 2024 10:50:22 -0700 (PDT) Received: from stoup.. (098-147-007-212.res.spectrum.com. [98.147.7.212]) by smtp.gmail.com with ESMTPSA id ga15-20020a17090b038f00b0029c3bac0aa8sm8658432pjb.4.2024.04.08.10.50.19 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 08 Apr 2024 10:50:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1712598621; x=1713203421; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=m6Ty8XllMR28noTCDsk0N/pyr7ynqbZ4X/2NsrzAk7g=; b=sJflrMlqcP36MdD6XvaIJdiSEir919w8Po7V8VrvYJTya2KgryI/f4cj3euDp0N7Rc uhzTpGdRjptRJFo5gbJi331yPEcOOfmKqBvt0OyDsuPzHk5We7jdjSLuTTTgl/9fgCeH TNi6IMmM1x8wM8rInfKolAYFdqoQrI2Cuhb7aNHYLjORfJ0xhSnabFsnsateq+zxXuCs F3UCzyuHF61hwDZdyLB8bSUEIPD4YF3BOjFWmZse5ET3+njKU7fJli1rinmYCSRvaKwZ rSd1v48mOiFxDWL6i9SHepqm7EeW4ezZukb21ZRRmN9+yJHLasxnfqM702+kSSogZOyy ak5w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1712598621; x=1713203421; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=m6Ty8XllMR28noTCDsk0N/pyr7ynqbZ4X/2NsrzAk7g=; b=BVydChQ2WP/TL7xpKzoO8Th1WUG2q+lZx0CJ5HbooXOEMCLSwxdpmM7CyzvKyPEf2V ewhNDuU4bs9dBIOvQIGStaLBxXn24Ru2uhq5FGq8mKP8kn8Db1VamB9LXXlo96So0fzk iUAW5bcHO+MIaXRFuYzXfaBDmiC5FDqqNFaf4fVyAXtH+qkJ1Pxw7GnhZ5c0krDSaR4r zxYXQXi5whr3sPcpYNFvCTdldbc/dhhO+aeNT68WtqH0l1isp2Puuq/Wxy65prXL7Ior c53ec9J5ltYOtSEUV7cYh59L3U/vDgsd/smIstk/KqT1Nljo/B4oFdZSMYbTYibVT7BI UcRA== X-Gm-Message-State: AOJu0Yx73NTBB49QdgzIJuvE9pyFUvr/8/zdnquuVqovrAfFd/hovo6M kzsSokt5gaK4XpeV+i6Y0niKzS8IYjNuFc6CbRs6UobZRa8K31ZUdZa6FW415rPnUrxkLAzDuth v X-Google-Smtp-Source: AGHT+IG9XUznbF8zvLvvj5W1wwbnKAVcWLd8X+HHARpdo/A/+QzaupvvAtTmaW73/7bBJaCfNz2oOQ== X-Received: by 2002:a17:90b:1bc9:b0:2a2:9b37:367a with SMTP id oa9-20020a17090b1bc900b002a29b37367amr7922512pjb.39.1712598620788; Mon, 08 Apr 2024 10:50:20 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PULL 33/35] util/bufferiszero: Improve scalar variant Date: Mon, 8 Apr 2024 07:49:27 -1000 Message-Id: <20240408174929.862917-34-richard.henderson@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20240408174929.862917-1-richard.henderson@linaro.org> References: <20240408174929.862917-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+importer=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+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1712599092084100015 Content-Type: text/plain; charset="utf-8" Split less-than and greater-than 256 cases. Use unaligned accesses for head and tail. Avoid using out-of-bounds pointers in loop boundary conditions. Signed-off-by: Richard Henderson --- util/bufferiszero.c | 85 +++++++++++++++++++++++++++------------------ 1 file changed, 51 insertions(+), 34 deletions(-) diff --git a/util/bufferiszero.c b/util/bufferiszero.c index 02df82b4ff..c9a7ded016 100644 --- a/util/bufferiszero.c +++ b/util/bufferiszero.c @@ -28,40 +28,57 @@ =20 static bool (*buffer_is_zero_accel)(const void *, size_t); =20 -static bool buffer_is_zero_integer(const void *buf, size_t len) +static bool buffer_is_zero_int_lt256(const void *buf, size_t len) { - if (unlikely(len < 8)) { - /* For a very small buffer, simply accumulate all the bytes. */ - const unsigned char *p =3D buf; - const unsigned char *e =3D buf + len; - unsigned char t =3D 0; + uint64_t t; + const uint64_t *p, *e; =20 - do { - t |=3D *p++; - } while (p < e); - - return t =3D=3D 0; - } else { - /* Otherwise, use the unaligned memory access functions to - handle the beginning and end of the buffer, with a couple - of loops handling the middle aligned section. */ - uint64_t t =3D ldq_he_p(buf); - const uint64_t *p =3D (uint64_t *)(((uintptr_t)buf + 8) & -8); - const uint64_t *e =3D (uint64_t *)(((uintptr_t)buf + len) & -8); - - for (; p + 8 <=3D e; p +=3D 8) { - if (t) { - return false; - } - t =3D p[0] | p[1] | p[2] | p[3] | p[4] | p[5] | p[6] | p[7]; - } - while (p < e) { - t |=3D *p++; - } - t |=3D ldq_he_p(buf + len - 8); - - return t =3D=3D 0; + /* + * Use unaligned memory access functions to handle + * the beginning and end of the buffer. + */ + if (unlikely(len <=3D 8)) { + return (ldl_he_p(buf) | ldl_he_p(buf + len - 4)) =3D=3D 0; } + + t =3D ldq_he_p(buf) | ldq_he_p(buf + len - 8); + p =3D QEMU_ALIGN_PTR_DOWN(buf + 8, 8); + e =3D QEMU_ALIGN_PTR_DOWN(buf + len - 1, 8); + + /* Read 0 to 31 aligned words from the middle. */ + while (p < e) { + t |=3D *p++; + } + return t =3D=3D 0; +} + +static bool buffer_is_zero_int_ge256(const void *buf, size_t len) +{ + /* + * Use unaligned memory access functions to handle + * the beginning and end of the buffer. + */ + uint64_t t =3D ldq_he_p(buf) | ldq_he_p(buf + len - 8); + const uint64_t *p =3D QEMU_ALIGN_PTR_DOWN(buf + 8, 8); + const uint64_t *e =3D QEMU_ALIGN_PTR_DOWN(buf + len - 1, 8); + + /* Collect a partial block at the tail end. */ + t |=3D e[-7] | e[-6] | e[-5] | e[-4] | e[-3] | e[-2] | e[-1]; + + /* + * Loop over 64 byte blocks. + * With the head and tail removed, e - p >=3D 30, + * so the loop must iterate at least 3 times. + */ + do { + if (t) { + return false; + } + t =3D p[0] | p[1] | p[2] | p[3] | p[4] | p[5] | p[6] | p[7]; + p +=3D 8; + } while (p < e - 7); + + return t =3D=3D 0; } =20 #if defined(CONFIG_AVX2_OPT) || defined(__SSE2__) @@ -173,7 +190,7 @@ select_accel_cpuinfo(unsigned info) { CPUINFO_AVX2, buffer_zero_avx2 }, #endif { CPUINFO_SSE2, buffer_zero_sse2 }, - { CPUINFO_ALWAYS, buffer_is_zero_integer }, + { CPUINFO_ALWAYS, buffer_is_zero_int_ge256 }, }; =20 for (unsigned i =3D 0; i < ARRAY_SIZE(all); ++i) { @@ -211,7 +228,7 @@ bool test_buffer_is_zero_next_accel(void) return false; } =20 -#define INIT_ACCEL buffer_is_zero_integer +#define INIT_ACCEL buffer_is_zero_int_ge256 #endif =20 static bool (*buffer_is_zero_accel)(const void *, size_t) =3D INIT_ACCEL; @@ -232,7 +249,7 @@ bool buffer_is_zero_ool(const void *buf, size_t len) if (likely(len >=3D 256)) { return buffer_is_zero_accel(buf, len); } - return buffer_is_zero_integer(buf, len); + return buffer_is_zero_int_lt256(buf, len); } =20 bool buffer_is_zero_ge256(const void *buf, size_t len) --=20 2.34.1 From nobody Sat May 18 22:31:29 2024 Delivered-To: importer@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+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1712599012; cv=none; d=zohomail.com; s=zohoarc; b=RyNqknudbudgP0dK94QUN9x1LgT5TUoCOumR2Jrgpv4KkiiC3Fcm7WAEEI1XPy0CYI09M6/pwtC2iiBQl/DRvahivvgQMxyHLaNcLTZVB0hjmAD8fm6IyBTTijrwDvs4C3lfG91gLXhebmUHLEbs375L8Qh1b6hlB5JhC+MBKoA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1712599012; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=bh4lWnPe+YOgpHGdevl5r/TyXWqM+m5cBerY0p6p+5U=; b=NU5/RnojpwgylNMDBpLkUq51xKW+okBwS2jf6yKYPiPbzBD+UZjqMa1WImDYLEWtGN9WOYy0rFcyx9tW8SW4+uCypaTxM/A9rOIc0X+zSYr0xq9OHjc4qOBSFvFxPGIvZIizDKfKnxR/hOwueGHIpye1hViK5kVD/DJ/fvw7NMs= 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+importer=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 1712599012686852.3945082607913; Mon, 8 Apr 2024 10:56:52 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1rtt8X-0002B8-AV; Mon, 08 Apr 2024 13:50:29 -0400 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 1rtt8T-0002AQ-5K for qemu-devel@nongnu.org; Mon, 08 Apr 2024 13:50:25 -0400 Received: from mail-pf1-x42f.google.com ([2607:f8b0:4864:20::42f]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1rtt8R-0003ov-Is for qemu-devel@nongnu.org; Mon, 08 Apr 2024 13:50:24 -0400 Received: by mail-pf1-x42f.google.com with SMTP id d2e1a72fcca58-6ed3cafd766so874090b3a.0 for ; Mon, 08 Apr 2024 10:50:23 -0700 (PDT) Received: from stoup.. (098-147-007-212.res.spectrum.com. [98.147.7.212]) by smtp.gmail.com with ESMTPSA id ga15-20020a17090b038f00b0029c3bac0aa8sm8658432pjb.4.2024.04.08.10.50.21 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 08 Apr 2024 10:50:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1712598622; x=1713203422; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=bh4lWnPe+YOgpHGdevl5r/TyXWqM+m5cBerY0p6p+5U=; b=Z840WH6h/v144lDoCxL9vxqP1V8DWb9SZlhSjPEoY7CzLXAKCVcL4Xch+kCsSjXHO3 jsQDNQ0QZnw2AEEiLVAYBliIBLW+bq3P40/E/XwOXXEjuobuwLi34NgjOAPLW+hVdNpn OPAndHgJfzgWDRO+PY97O6dACSmaTIJBTqS4cdZpJ8nFCmidmqvnXE6o6zUY892ce/bg Lusbk2kNfKG9FCgOA+hJ97HEflcL7s/DizJZqjpFXNfAVDvLfNGLG3PHdmZnN3muq4Ex vDodPXGMT9r4OD2l4iGMzk/ketqxUp+kaugvBhKa54SwzSnNrmUoeyJ/JpVWZ2ONv4uH OWLg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1712598622; x=1713203422; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=bh4lWnPe+YOgpHGdevl5r/TyXWqM+m5cBerY0p6p+5U=; b=GiTqvTLehqLnYO/+co1OE3Ux5YeORfsTN1lLXUpULM9w2Y5Ay0z+jflXwwyYwPfCaX ANmPEcUXG+dg5LUnfTDQHlyTGSTGwPYEVyUO1M2ubA6hH8eQ0SQUTZatt4u3Up/B7rxw YoMWM3ObzylOTjmUgQmKdBKKAlXvnA9RknjPILS31nyFBGXjlozjwhr+o7h7ytwu2LI3 k2P6qVFjcaEJCn/jcQ/9EktouOkF9IfIcVNMx1mTQlG7MhlpDwOrwWP5cE41MnuZn6o9 qXRixfSaljeWOIN6dPkJ/096ekP8YjOsHZFifuK8i7oY5C+dyZmmrSmyXW0xj0gJOIMk mkyA== X-Gm-Message-State: AOJu0Yy1KQz7AC26kiFTqUw3KyK4EwFmNqFYNP/KVQd2ZftqnXiI9MfD FrmVtfbExnfAm0bBCQI6EDPfZ5dG62siOTpH4RKsDU8qtDDWYshCF3yuBz9TAZ4+wxpDtnOSWUP A X-Google-Smtp-Source: AGHT+IESSFg2VG28jnzKXP/OTmyZaPwy3MG2nlIIzHytJwZ2sTMbr6jhfp/2eCybIckHFuqUokMGcA== X-Received: by 2002:a05:6a21:32a0:b0:1a5:6bfb:76de with SMTP id yt32-20020a056a2132a000b001a56bfb76demr9501508pzb.2.1712598622246; Mon, 08 Apr 2024 10:50:22 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PULL 34/35] util/bufferiszero: Introduce biz_accel_fn typedef Date: Mon, 8 Apr 2024 07:49:28 -1000 Message-Id: <20240408174929.862917-35-richard.henderson@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20240408174929.862917-1-richard.henderson@linaro.org> References: <20240408174929.862917-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+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::42f; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x42f.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+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1712599013721100003 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- util/bufferiszero.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/util/bufferiszero.c b/util/bufferiszero.c index c9a7ded016..eb8030a3f0 100644 --- a/util/bufferiszero.c +++ b/util/bufferiszero.c @@ -26,7 +26,8 @@ #include "qemu/bswap.h" #include "host/cpuinfo.h" =20 -static bool (*buffer_is_zero_accel)(const void *, size_t); +typedef bool (*biz_accel_fn)(const void *, size_t); +static biz_accel_fn buffer_is_zero_accel; =20 static bool buffer_is_zero_int_lt256(const void *buf, size_t len) { @@ -178,13 +179,15 @@ buffer_zero_avx2(const void *buf, size_t len) } #endif /* CONFIG_AVX2_OPT */ =20 + + static unsigned __attribute__((noinline)) select_accel_cpuinfo(unsigned info) { /* Array is sorted in order of algorithm preference. */ static const struct { unsigned bit; - bool (*fn)(const void *, size_t); + biz_accel_fn fn; } all[] =3D { #ifdef CONFIG_AVX2_OPT { CPUINFO_AVX2, buffer_zero_avx2 }, @@ -231,7 +234,7 @@ bool test_buffer_is_zero_next_accel(void) #define INIT_ACCEL buffer_is_zero_int_ge256 #endif =20 -static bool (*buffer_is_zero_accel)(const void *, size_t) =3D INIT_ACCEL; +static biz_accel_fn buffer_is_zero_accel =3D INIT_ACCEL; =20 bool buffer_is_zero_ool(const void *buf, size_t len) { --=20 2.34.1 From nobody Sat May 18 22:31:29 2024 Delivered-To: importer@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+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1712598678; cv=none; d=zohomail.com; s=zohoarc; b=B+Cbzpn1Kv8/q/zrQG/lnVcyEXWwxrCi1G3dFlubORKAX+yuhyWjuQaB98btDpdUuzsFsKNGhXgV442lYV6tr2+0iDxFxdcSNzWktQYjSJvLVu+xAwlShxUscY0wm+priQAPTC3mYd+JePjSLiEFjcxUVuH3whRcQMPzMS+XSVI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1712598678; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=DA4w6vWBcl/o/fCPqKs/e8JAcC2+x8OTjBrtE2E7+xQ=; b=Hc7FqK2rsxF5aSIGD5gl3W87N64J6nMxjpWAE39Nv0aVhb4mHI1pPLCvmdhdrgdvvI42Mn9JmoYPO4cTq9DyBLBm++o2UZtMgWbK53LTuYq7kIF5DfkoeeRSJwKdDup2FKEUPrWMRWmcRLCoG/09TWed2r2w+89ZsUXdp+fdgbM= 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+importer=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 1712598678608909.9108946202839; Mon, 8 Apr 2024 10:51:18 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1rtt8s-0002Kt-T5; Mon, 08 Apr 2024 13:50:52 -0400 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 1rtt8V-0002B2-HU for qemu-devel@nongnu.org; Mon, 08 Apr 2024 13:50:29 -0400 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 1rtt8S-0003qM-VQ for qemu-devel@nongnu.org; Mon, 08 Apr 2024 13:50:26 -0400 Received: by mail-pj1-x102a.google.com with SMTP id 98e67ed59e1d1-2a2d248a2e1so3034345a91.0 for ; Mon, 08 Apr 2024 10:50:24 -0700 (PDT) Received: from stoup.. (098-147-007-212.res.spectrum.com. [98.147.7.212]) by smtp.gmail.com with ESMTPSA id ga15-20020a17090b038f00b0029c3bac0aa8sm8658432pjb.4.2024.04.08.10.50.22 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 08 Apr 2024 10:50:23 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1712598623; x=1713203423; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=DA4w6vWBcl/o/fCPqKs/e8JAcC2+x8OTjBrtE2E7+xQ=; b=cgC6t8W++rsm4GL4DdBm2x4la/mNiP5CD1+N+vKqUhrhHmAyfgBPGhvWuRv8giGwLA kF1SlwafiwEIiJo4oJkTgOeN9Vy1JWtPnJzZ8DV6R7463IOfgytxHjYw8xLCdqZxkW57 KCvl3HBN6bE2q/taxUeU2Uff6wt+Z+BSmswl2bTU21QoP1tsOzuDZDjbg5isiyqgHeBb TgRrgjDZ6uUT/W1vbkaJvECqbJS6oivPe4IfawZbCF/WnzVPkB9Pv4LS3z0R3edj+CAu Jn4u+UEPmouK9fvEhw7Xbad7BkmmFNcBtojxMkIbvlRLxixECS9mEVibD/UCJZ9q7ws2 FCXQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1712598623; x=1713203423; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=DA4w6vWBcl/o/fCPqKs/e8JAcC2+x8OTjBrtE2E7+xQ=; b=DDfqBacFkJ0ht/xVA1lHf0nf4tIaqoCDytxAWmZ+7/s8AD/TW8qiJRKWhsOtdRkIs6 t9moCIcRxF/XVS8bb/uAjgPZIKM75Tcb5uhCEty1Zea3Z53WHUqjfVozyEt7scI49B3X 6RTeILVt5a6mB/fDU6JQVf14cq99pCoGDiRNQzRlTabbTxQGdzBcEpmDAbASZpyYFela DVmfJJxMdiPWSAGDHM+mnjQa3iRuC5Jdc/5sSwFTcoh2xRZQVWcbpwjTzxQwkgke+N6C 4P7LZoJZrr1A2eecZofjcGX7obHXeg1i36HbSjRPBsQ+Oci7zpeYyFwa4EQmCWG/lx9M iRjg== X-Gm-Message-State: AOJu0YyUHvFELsCcpZ3zTeqvlE7IiDGgk1v+BEo20TAC9nuoQ80NKjHA abFsM2f2zlYswSZX70u3zEtYBDomnra1J4HCO9LpadCxWLhAmKnL1ys/a11wWwlgGY9Xu9x5U67 E X-Google-Smtp-Source: AGHT+IGh2zBQzIOIx0Bp0nDudYdGEyajL48EphKT4LwZ4YIVhHK5OYUIE5z8ANMj2z08EKto03klyw== X-Received: by 2002:a17:90b:4a12:b0:29f:76d4:306a with SMTP id kk18-20020a17090b4a1200b0029f76d4306amr469099pjb.24.1712598623420; Mon, 08 Apr 2024 10:50:23 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PULL 35/35] util/bufferiszero: Simplify test_buffer_is_zero_next_accel Date: Mon, 8 Apr 2024 07:49:29 -1000 Message-Id: <20240408174929.862917-36-richard.henderson@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20240408174929.862917-1-richard.henderson@linaro.org> References: <20240408174929.862917-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+importer=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+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1712598680067100002 Content-Type: text/plain; charset="utf-8" Because the three alternatives are monotonic, we don't need to keep a couple of bitmasks, just identify the strongest alternative at startup. Signed-off-by: Richard Henderson --- util/bufferiszero.c | 56 ++++++++++++++++++--------------------------- 1 file changed, 22 insertions(+), 34 deletions(-) diff --git a/util/bufferiszero.c b/util/bufferiszero.c index eb8030a3f0..ff003dc40e 100644 --- a/util/bufferiszero.c +++ b/util/bufferiszero.c @@ -179,51 +179,39 @@ buffer_zero_avx2(const void *buf, size_t len) } #endif /* CONFIG_AVX2_OPT */ =20 - - -static unsigned __attribute__((noinline)) -select_accel_cpuinfo(unsigned info) -{ - /* Array is sorted in order of algorithm preference. */ - static const struct { - unsigned bit; - biz_accel_fn fn; - } all[] =3D { +static biz_accel_fn const accel_table[] =3D { + buffer_is_zero_int_ge256, + buffer_zero_sse2, #ifdef CONFIG_AVX2_OPT - { CPUINFO_AVX2, buffer_zero_avx2 }, + buffer_zero_avx2, #endif - { CPUINFO_SSE2, buffer_zero_sse2 }, - { CPUINFO_ALWAYS, buffer_is_zero_int_ge256 }, - }; - - for (unsigned i =3D 0; i < ARRAY_SIZE(all); ++i) { - if (info & all[i].bit) { - buffer_is_zero_accel =3D all[i].fn; - return all[i].bit; - } - } - return 0; -} - -static unsigned used_accel; +}; +static unsigned accel_index; =20 static void __attribute__((constructor)) init_accel(void) { - used_accel =3D select_accel_cpuinfo(cpuinfo_init()); + unsigned info =3D cpuinfo_init(); + unsigned index =3D (info & CPUINFO_SSE2 ? 1 : 0); + +#ifdef CONFIG_AVX2_OPT + if (info & CPUINFO_AVX2) { + index =3D 2; + } +#endif + + accel_index =3D index; + buffer_is_zero_accel =3D accel_table[index]; } =20 #define INIT_ACCEL NULL =20 bool test_buffer_is_zero_next_accel(void) { - /* - * Accumulate the accelerators that we've already tested, and - * remove them from the set to test this round. We'll get back - * a zero from select_accel_cpuinfo when there are no more. - */ - unsigned used =3D select_accel_cpuinfo(cpuinfo & ~used_accel); - used_accel |=3D used; - return used; + if (accel_index !=3D 0) { + buffer_is_zero_accel =3D accel_table[--accel_index]; + return true; + } + return false; } #else bool test_buffer_is_zero_next_accel(void) --=20 2.34.1