From nobody Sat May 30 17:44:11 2026 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=1779297877; cv=none; d=zohomail.com; s=zohoarc; b=jWkGMEiiInzPhBxvLXD2DT34IIZ9grY0xVKLvbP2gYcL5MZ9SjGxEE65Y207PtZcqBHccRIkDpctnbXoIYAlzZBNaQXH8e2zQddd8ZKSuBm3sUc27LFv1AsfnUwZhzhb7hg8VES262e4Ezo9vOCZIZD8KhrnVkSIsyNuyQupn1s= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1779297877; 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=BfLMAKm0cFQ1CO5b899F9cGVNdd+gP0hQK4cGU9J1eo=; b=XvTwDquiKw/X7kyY23hjeCoFCq4XgZ+9cRupyODxySMHNkWXIkqwXkWpR3bCWkWaO1/tLWwxixiLj/8iPc3SfgYWEtz+ij6Cc5OaUOkSZH43x5JpcdZL9XRMb8b0xCOetfShJuDX09yosiLPFusJyZSwofjEEHK98aDeopR/s3M= 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 lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 17792978777291001.9946758363023; Wed, 20 May 2026 10:24:37 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wPkdk-0003dY-83; Wed, 20 May 2026 13:23:28 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wPkdj-0003az-DP for qemu-devel@nongnu.org; Wed, 20 May 2026 13:23:27 -0400 Received: from mail-wm1-x32f.google.com ([2a00:1450:4864:20::32f]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wPkdf-0003Os-QD for qemu-devel@nongnu.org; Wed, 20 May 2026 13:23:27 -0400 Received: by mail-wm1-x32f.google.com with SMTP id 5b1f17b1804b1-4891e86fabeso68526805e9.1 for ; Wed, 20 May 2026 10:23:23 -0700 (PDT) Received: from localhost.localdomain (88-187-86-199.subs.proxad.net. [88.187.86.199]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-45da0fe13b4sm55961400f8f.28.2026.05.20.10.23.21 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Wed, 20 May 2026 10:23:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1779297802; x=1779902602; 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=BfLMAKm0cFQ1CO5b899F9cGVNdd+gP0hQK4cGU9J1eo=; b=YTK/Ix1CfxEEKIRiY0W9xHr9vujf7+wt7gnRY4I1lnGmfeMqlwDzffOmSV8jBmYkvO 6ubdXexlFlyhAd/95FqJ/WlcjXTiOCi3U6HeYg4WXKyOZoi8KgZCYjlK8rDWJAtjZb9K Yde9tfK3YjfOaPmHoggsyfTtRIc6nc5XM6bqnmsVsei2rWy7o8Kk0G32IXX37hbxg8M+ PIC4nwrJCdwP78gGJMNbcUs8rkP9daUEVgSJwNbrXSMqCsKw2N+9S0M3ouORx/PHA5/u TH1z6Z2Gy4tx75HHVLRzowYNty4BWo0VQ1nplQ/nivZVseQI40roXGkxQtMkyZf49WAN ik5w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1779297802; x=1779902602; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=BfLMAKm0cFQ1CO5b899F9cGVNdd+gP0hQK4cGU9J1eo=; b=MZgamFyBBuvUZxIvejWd5FxBe/Q/5aWocJRwg1OzJM8DFZTwtjMBbR2m6c1XuKJkYq IIwqNX47hroaDGpZ9eRMjn8h9pVtg4TuVbSZjoKVyZ0RdiABWnlT07q1g2qUljKq8Z34 yYTMRmqKpRc1Vx8HUauR4cVc0/YCte6EBue0DsGsL8D8NMwBg7AtzWqMysUGS1+J3Kph pa5GmmyqgzOgme+wiiRRDOMnuNV79u8fr+q7ORb3mcljRzznCKimBqNiihZlFK9NMGgp BBFX85heGMJ12fY4BzDD2piUS+N+D023SSL+mLA/4k4YemwOnoZhvi2OHbrzUihmpBK0 NAow== X-Gm-Message-State: AOJu0Ywy9tQK9L3OMkt+gSPmqdJq+EYt+ks8dwMN6J77QQBqPG14Z0Fg MhIDkNlfXcl76pNsiXmLcZO4Q2h8P3e1Qc2DpxfxJ17F6x49Uv6F6wmQr834RcmM2UtD5AijD2T 6kWBXkG8= X-Gm-Gg: Acq92OHLnApo3BzWLX+bekow9GG9dz2kDz2Y/L42iqJ4acpmfgsZnJl3Jf1lCoF1ctO tscegm58Ow6kqNzHqSUTuamX6ZZFIWhGChcvsPz9AJ9OZ+rIlpgIt0DFZLJNwxmf//z6gCj75BX yg/U8+5M4uB04yzndMEqtP5y4ef+ujQuTqYr0VqmusQSMtp5JvG20orD1VEDpxeYiHxdQ20JYbu 9whGNGam9miquPNPElAzS3/9C1yHBwiqbQbN19GEg1klKq2EGxak3DanvbEwJkgv/ZFwtxxAPVI WpS6d2vKDW0snceeWDTVW0QUS+5dy6sz/KwiHo2MZT3GFGc67d+rFMaZ4998Rx5uDcR4hIt/OR+ /jma2YOSRE7HWDoJfhr9y0inai1+AkMQThKLyxphVPXby7RU+zpi1QAuXt22DVwOYkk94KWqYmf GI4YEHnyDwT+gNtV2KYskWh0+ILvCjk8NjvMB4cXm9z+6wxVZtlMuqCnECKMQezRG4CgMMVfrqv ODsZ5R9w9U= X-Received: by 2002:a05:600c:3104:b0:48d:35e:82cb with SMTP id 5b1f17b1804b1-48fe651b2a9mr366137255e9.28.1779297802178; Wed, 20 May 2026 10:23:22 -0700 (PDT) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Cc: James Hilliard , Richard Henderson Subject: [PATCH v12 01/24] linux-user/mips: implement sysmips(MIPS_FLUSH_CACHE) Date: Wed, 20 May 2026 19:22:49 +0200 Message-ID: <20260520172313.23777-2-philmd@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260520172313.23777-1-philmd@linaro.org> References: <20260520172313.23777-1-philmd@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=lists1p.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::32f; envelope-from=philmd@linaro.org; helo=mail-wm1-x32f.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: qemu development 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: 1779297879247154100 From: James Hilliard Add the target sysmips dispatcher and implement MIPS_FLUSH_CACHE as a successful no-op for linux-user. Self-modifying code is handled by QEMU's normal user-mode translation invalidation machinery, so the target ABI only needs the syscall command to be accepted. Reviewed-by: Richard Henderson Signed-off-by: James Hilliard Signed-off-by: Philippe Mathieu-Daud=C3=A9 --- linux-user/mips/target_syscall.h | 1 + linux-user/mips64/target_syscall.h | 1 + linux-user/syscall.c | 17 +++++++++++++++++ 3 files changed, 19 insertions(+) diff --git a/linux-user/mips/target_syscall.h b/linux-user/mips/target_sysc= all.h index dfcdf320b7c..3f36c1695a5 100644 --- a/linux-user/mips/target_syscall.h +++ b/linux-user/mips/target_syscall.h @@ -10,6 +10,7 @@ #define TARGET_MCL_ONFAULT 4 =20 #define TARGET_FORCE_SHMLBA +#define TARGET_SYSMIPS_FLUSH_CACHE 3 =20 static inline abi_ulong target_shmlba(CPUMIPSState *env) { diff --git a/linux-user/mips64/target_syscall.h b/linux-user/mips64/target_= syscall.h index 9135bf5e8b6..20ea7c6ab9b 100644 --- a/linux-user/mips64/target_syscall.h +++ b/linux-user/mips64/target_syscall.h @@ -10,6 +10,7 @@ #define TARGET_MCL_ONFAULT 4 =20 #define TARGET_FORCE_SHMLBA +#define TARGET_SYSMIPS_FLUSH_CACHE 3 =20 static inline abi_ulong target_shmlba(CPUMIPSState *env) { diff --git a/linux-user/syscall.c b/linux-user/syscall.c index 2d4a8aa182b..5a8e00337a0 100644 --- a/linux-user/syscall.c +++ b/linux-user/syscall.c @@ -6630,6 +6630,19 @@ static abi_long do_prctl_syscall_user_dispatch(CPUAr= chState *env, } } =20 +#ifdef TARGET_NR_sysmips +static abi_long do_sysmips(CPUArchState *env, abi_long cmd, abi_long arg1, + abi_long arg2) +{ + switch (cmd) { + case TARGET_SYSMIPS_FLUSH_CACHE: + return 0; + default: + return -TARGET_EINVAL; + } +} +#endif + static abi_long do_prctl(CPUArchState *env, abi_long option, abi_long arg2, abi_long arg3, abi_long arg4, abi_long arg5) { @@ -12110,6 +12123,10 @@ static abi_long do_syscall1(CPUArchState *cpu_env,= int num, abi_long arg1, case TARGET_NR_prctl: return do_prctl(cpu_env, arg1, arg2, arg3, arg4, arg5); break; +#ifdef TARGET_NR_sysmips + case TARGET_NR_sysmips: + return do_sysmips(cpu_env, arg1, arg2, arg3); +#endif #ifdef TARGET_NR_arch_prctl case TARGET_NR_arch_prctl: return do_arch_prctl(cpu_env, arg1, arg2); --=20 2.53.0 From nobody Sat May 30 17:44:11 2026 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=1779297869; cv=none; d=zohomail.com; s=zohoarc; b=mR+c2hkc0iNSA+nvVECIBTFlyxolfQ/y6WUFCDjesSK+H4wQz+afiPZerJKLaT+p/rNRWvTqDncsbR1/yHWibX1biZ6eOeyrjui9O0dde4/oaVgX7hhBxxiw1vTdKMI/tCF5mJp+aHyHhUmqApfVas/rPReaVBrimNLuPWzxPiE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1779297869; 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=IQD4fR7d1kJbujtCHjx9S6B7VTYIX29Vn1eK5+y9kOs=; b=iXDL020bpoEQic3l/uPIZiK+8UDhUK4xDsepuuRjWUsp0D5jxDotNF7VPCIUl3dXUAsM4qfcIHGMVYX4tb6UxBvCv4uAEB2yD8R6IWQy7rAJr5A+rhaHnWBJwrl6XolwOw6Ybgb1rKWRt8qYIe254ErGMT/n/CI3OG3gXv6DVbU= 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 lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1779297869968872.6544451432734; Wed, 20 May 2026 10:24:29 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wPkdq-0003j1-Ri; Wed, 20 May 2026 13:23:34 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wPkdp-0003gA-9T for qemu-devel@nongnu.org; Wed, 20 May 2026 13:23:33 -0400 Received: from mail-wm1-x32b.google.com ([2a00:1450:4864:20::32b]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wPkdn-0003Qh-GQ for qemu-devel@nongnu.org; Wed, 20 May 2026 13:23:33 -0400 Received: by mail-wm1-x32b.google.com with SMTP id 5b1f17b1804b1-488b3f8fa2bso49528315e9.1 for ; Wed, 20 May 2026 10:23:31 -0700 (PDT) Received: from localhost.localdomain (88-187-86-199.subs.proxad.net. [88.187.86.199]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-49033d58838sm5675165e9.11.2026.05.20.10.23.28 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Wed, 20 May 2026 10:23:28 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1779297809; x=1779902609; 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=IQD4fR7d1kJbujtCHjx9S6B7VTYIX29Vn1eK5+y9kOs=; b=x+eoa1khw7BOgQIvsi1LFWRmHo6nLDIBaXpP5RNDSj1eVe2XaFBLUg0dQTKfmEFVIl 0kmZsGkAn6FDiDUnvNnyhyKp19uIaFpDyRZv82vA+fhGrwAAnPkup+rCu6PDduY539eI 6AaB2d/7tcLCxzAt/N7Ei78AllahJswM/1cGTcUwL2DCXF+pWp5dYdFUD0mfaP1VTRuO yEOAtJ9TFe1NoY7VsZOZ5qapBH5xVv1AZXkTFvfoRAQGhLsOpGcarSB54uFtgtuYSjZX qu0v2rXxU4DNH1Xi1otvkmNnnY/Cm9fQBOZgTpa009ZBWfAuVXP02LSbMXTg59Ixjrro 2gwA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1779297809; x=1779902609; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=IQD4fR7d1kJbujtCHjx9S6B7VTYIX29Vn1eK5+y9kOs=; b=mU5zHvvoCKO9YDxfl9Zva4F8HL3p9+osxn4LJ9Gc5BOZio7wlKFvKsJySTiSIEmYOG F2kX009H+vKYwldeY+C0E8jbkr0c8V1DPth8/msAVeloyvNcBbmLLsBHyvs8r0mLt7Wu WWeYlcW1XXxT548812ZRzHznb4iEewO1ZaKcypqgm24Dvi4URUtc+1hm+mkTOC7u3Cq9 suodbFZtUQxj3peRJJTY1bEiM/cKiHUdcrKSqINBmo0GQx7nKfI1wqKOwo9FZfXhiGju 84wvPdOr8puUns24E8BdacKucANZGoQk+b9t1/7qQ6aFKapnzcY+iIQwkJ1vjyYfHyCs FtSw== X-Gm-Message-State: AOJu0Yyht0ayq3/k5/d0lM6YU3c7+eqV5dz6IYWPBrabWmfMAIl0XlNV qOtBBR4TZJ/o6+wMPJFs5AXgN2rAK7uhmFMj+zWKvKbVSMSqL8XmEmLAti5tCEfoLPGhYKbXvfy +KimUKVw= X-Gm-Gg: Acq92OGHkP+scpxS9nsArz+0YUQbwOL/8drNRAn6ncKgAq2xOcnfDGvc/XSrJo0yCyy bSXFMYK/tD0sHovqQ5pRWhnq0lKGVtBDU8YadC/Z8u+ByIpENMZNIy1pHT3XeZs2LuQTUXqQ6Rs dCR+iuLik/PSSVnNkaqBu1oiF2oH0+kojOVpz67pce2iobZJ4iChzzvKjGBqZsHk1frgxYrv0nl nEIqxNJNZzChMbS9b4qUwc2Sooj4X0nuO6n55b2AfahRlcIg5IfjsZq1VVo5W+JCrals4oC/nnw TEZVnrFqDBdcTaOyqt85VCFUDLNmpzJ8eZDMGTaXFgCXM0ICqV9EEHk2NAfO/S3l+izriOtKne1 /JjiClhgP2NMOApKPbJRtfonALY+4dl9JcWgoXMapACTz+fp1KcxTTdMO7/SKRBhKAt2FVglVFB wNM6W8++AfSJERGXso/4NtMAd9v7uXF93tjPGJsG+UX3OAQ/FXIUktiRNvznBIv2UvAMqbjREzy eEHfVBpHIw= X-Received: by 2002:a05:600c:821a:b0:490:2640:a982 with SMTP id 5b1f17b1804b1-49033d00c54mr6237245e9.3.1779297809378; Wed, 20 May 2026 10:23:29 -0700 (PDT) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Cc: James Hilliard , Richard Henderson Subject: [PATCH v12 02/24] linux-user/mips: implement sysmips(MIPS_ATOMIC_SET) Date: Wed, 20 May 2026 19:22:50 +0200 Message-ID: <20260520172313.23777-3-philmd@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260520172313.23777-1-philmd@linaro.org> References: <20260520172313.23777-1-philmd@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=lists1p.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::32b; envelope-from=philmd@linaro.org; helo=mail-wm1-x32b.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: qemu development 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: 1779297873144154100 From: James Hilliard Implement the MIPS_ATOMIC_SET sysmips command as an aligned 32-bit atomic exchange in target memory. MIPS reports syscall errors through a separate register, so successful old values can overlap the errno range. Write the return value and error flag directly and return -QEMU_ESIGRETURN so the common syscall path leaves the registers unchanged. Reviewed-by: Richard Henderson Signed-off-by: James Hilliard Signed-off-by: Philippe Mathieu-Daud=C3=A9 --- linux-user/mips/target_syscall.h | 1 + linux-user/mips64/target_syscall.h | 1 + linux-user/syscall.c | 31 ++++++++++++++++++++++++++++++ 3 files changed, 33 insertions(+) diff --git a/linux-user/mips/target_syscall.h b/linux-user/mips/target_sysc= all.h index 3f36c1695a5..9206694f4fb 100644 --- a/linux-user/mips/target_syscall.h +++ b/linux-user/mips/target_syscall.h @@ -11,6 +11,7 @@ =20 #define TARGET_FORCE_SHMLBA #define TARGET_SYSMIPS_FLUSH_CACHE 3 +#define TARGET_SYSMIPS_ATOMIC_SET 2001 =20 static inline abi_ulong target_shmlba(CPUMIPSState *env) { diff --git a/linux-user/mips64/target_syscall.h b/linux-user/mips64/target_= syscall.h index 20ea7c6ab9b..e07687f8ac9 100644 --- a/linux-user/mips64/target_syscall.h +++ b/linux-user/mips64/target_syscall.h @@ -11,6 +11,7 @@ =20 #define TARGET_FORCE_SHMLBA #define TARGET_SYSMIPS_FLUSH_CACHE 3 +#define TARGET_SYSMIPS_ATOMIC_SET 2001 =20 static inline abi_ulong target_shmlba(CPUMIPSState *env) { diff --git a/linux-user/syscall.c b/linux-user/syscall.c index 5a8e00337a0..3df42aa159d 100644 --- a/linux-user/syscall.c +++ b/linux-user/syscall.c @@ -6631,10 +6631,41 @@ static abi_long do_prctl_syscall_user_dispatch(CPUA= rchState *env, } =20 #ifdef TARGET_NR_sysmips +static abi_long do_sysmips_atomic_set(CPUArchState *env, abi_ulong addr, + abi_long value) +{ + uint32_t *ptr; + abi_long old; + + if (addr & 3) { + return -TARGET_EINVAL; + } + + ptr =3D lock_user(VERIFY_WRITE, addr, sizeof(*ptr), true); + if (!ptr) { + return -TARGET_EINVAL; + } + + old =3D tswap32(qatomic_xchg(ptr, tswap32((uint32_t)value))); + unlock_user(ptr, addr, sizeof(*ptr)); + + /* + * MIPS uses a separate error flag, but the common linux-user syscall + * path infers that flag from the return value. Successful atomic_set + * results can overlap the target errno range, so write the result + * registers here and ask the CPU loop to leave them alone. + */ + env->active_tc.gpr[2] =3D old; + env->active_tc.gpr[7] =3D 0; + return -QEMU_ESIGRETURN; +} + static abi_long do_sysmips(CPUArchState *env, abi_long cmd, abi_long arg1, abi_long arg2) { switch (cmd) { + case TARGET_SYSMIPS_ATOMIC_SET: + return do_sysmips_atomic_set(env, arg1, arg2); case TARGET_SYSMIPS_FLUSH_CACHE: return 0; default: --=20 2.53.0 From nobody Sat May 30 17:44:11 2026 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=1779297975; cv=none; d=zohomail.com; s=zohoarc; b=iyHYBxo15OQQJ12KbKxWiuzORNAaKfMem1SrVE4gu5a/+GrsNh59y1oFhJR0Ib1J0PRq55dA67lBq9Z+CMozHLuIGMyMoQlFjRJrgrnZI9f4ey92Vo6IF/ab2hzQeYP9wdYWc2AUnKmIIeKozCJFZ9vOxTdKAASnoXg998J2AtM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1779297975; 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=xwbeX9Gjy/xYaojYr56HIgP75nu+77FS6S64lDOm+r8=; b=Y1G0uJAXXU4mApZrrkJyUlC/rNWLTIbOg8056spVcNBRm5NcmhLi+Mr4sp8/nJkf4XvfMa/ST7mbzqSwBDzL1ga3ao40dnSZKxuF1kdeFLiYxsNlswp880fOJvWOa2PcFJhTSTsETjodgKojC9tNyTJ+6xwO56xnMvmmPqufyLw= 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 lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1779297974999112.51389359327254; Wed, 20 May 2026 10:26:14 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wPkdy-0003oV-NL; Wed, 20 May 2026 13:23:42 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wPkdw-0003mZ-6n for qemu-devel@nongnu.org; Wed, 20 May 2026 13:23:40 -0400 Received: from mail-wr1-x434.google.com ([2a00:1450:4864:20::434]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wPkdu-0003SD-8R for qemu-devel@nongnu.org; Wed, 20 May 2026 13:23:39 -0400 Received: by mail-wr1-x434.google.com with SMTP id ffacd0b85a97d-44c350a5b87so3201099f8f.3 for ; Wed, 20 May 2026 10:23:37 -0700 (PDT) Received: from localhost.localdomain (88-187-86-199.subs.proxad.net. [88.187.86.199]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-45da0a19b1dsm55047977f8f.17.2026.05.20.10.23.35 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Wed, 20 May 2026 10:23:35 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1779297816; x=1779902616; 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=xwbeX9Gjy/xYaojYr56HIgP75nu+77FS6S64lDOm+r8=; b=EpbSssXGph2eBPXio6EACL14WaZV4csP2OTgPp/L2kpMk0rALXyp81M3xKjjKocjjW rxr1wH/i7i0v5cZpGjxCOLleIW+6TZVlg0TEc3Uo2CaytfxF5uo7rX9kChHJnRweS3rS bn6Q9MnENEGjDc459GbQvMpUcUj+Xc6zzoUzMIXuLUveJ88mx4IwwXvqaKT4LrPaMFQT /BYGnp5+3U7st2DrT4F8A3GBm4pAJPDlf8mV7PYzkewP27tuWdPEYq7Z6+wzjNViBFEr 23vOJpvrS/c+NqPGtJdXAnJ4Oullu1ga5QNe0MgZyguq6PQ3M4jk2mvNax9AWeaP84Nq RRdg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1779297816; x=1779902616; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=xwbeX9Gjy/xYaojYr56HIgP75nu+77FS6S64lDOm+r8=; b=Jh/J0jTIrZcBOWr81SMKrEeneeTcelPA/ouGoNuO0NCb/bJrui7rZVa59fBzUgzijS OR4h57MCXyiopcUCvOq6CUnwuI3kkUNFUIdZNNboU+zg0y0U+NW5OQ1mMJj7vnsPkyfC hN/6XIEo03mpN6ZQ80O2NQcOA1YJvAVhuqTCE5WIlFDFQs/99efAZJD1TpXRcCKXOzBG T6v9Tql5m3+dF4dx/z/UeNZclRkwjyM5qvingvBVdvTTk8Ty9/9kr6KjUXGUtH1n49pa kaLnwYzxXbONgVt5wWEZ+tk5+27jufvA7RIWgvIeGB4RWSnCi8PQrFrIxWNGp+dCZ3O1 Ct0g== X-Gm-Message-State: AOJu0YzUBJbH44j/e70PFJ9O9viI0/7WiDszQrgd1l2H/YX66DKr0vy1 hmkweaMJmHa2pTpr8Yy0In6n0ouFCqHjqW2iI60wVrFp5IHKrSekclrSLZ2buHBJ1HGdHKSCwJl N3i+I+bI= X-Gm-Gg: Acq92OG5/yNVVH3CLpF/Ssjyv1/eljaCivtEXqfh3B+FKO4rdTMz4ss4gxE3q2k4MFM HQq5H0FFnD3E6Z6gKHUHg1/KtwhixWB6wpilO9dp3+9YPAQg8p8w5CD4UXFkQ2UDcl7XGh3vilz FZGa07M0ROLQAaGh2ibVM6B5z4uH59sr9iTdjyp4O+aO1uJPwiz0si00KUePjoypcDAvJ03JRD8 iCMRcK46Rm6t2764dqxtZdYPVQxY1hTBkTtXQhS4x9eWe3yPnysVe5DR0xKIO66wMbMq78j+4PW uPn6oskq6nuTt/pz+8/4b9TqDb9LzrLG1cSH6ywwTG+mqB8KHoBK7feDaPkwckWK00mmKxDTM+w SfS+IfXZ3fqQejc3lAt6cvdeMA06nMVT1XENA/ZqlpRiItFqPnAG2TBiIEJ17K9/L/ZGaD1ZvZ9 G3H3oQp4uLMlvaa7FqVbwvNcQnMv+GjiCEtIwnAhe6XLXHXhDkh8F0PO1CVIVhpEcBRscPkGky X-Received: by 2002:a05:6000:26c4:b0:45c:3f0b:be08 with SMTP id ffacd0b85a97d-45e5c5e2db1mr42208713f8f.23.1779297816264; Wed, 20 May 2026 10:23:36 -0700 (PDT) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Cc: James Hilliard , Richard Henderson Subject: [PATCH v12 03/24] linux-user/mips, target/mips: honor MIPS_FIXADE for unaligned accesses Date: Wed, 20 May 2026 19:22:51 +0200 Message-ID: <20260520172313.23777-4-philmd@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260520172313.23777-1-philmd@linaro.org> References: <20260520172313.23777-1-philmd@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=lists1p.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::434; envelope-from=philmd@linaro.org; helo=mail-wr1-x434.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: qemu development 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: 1779297977230154100 From: James Hilliard Linux/MIPS enables software fixups for user-mode unaligned scalar accesses by default through MIPS_FIXADE/TIF_FIXADE. QEMU linux-user did not model that ABI, so MIPS guests took fatal AdEL/AdES exceptions unless translation was forced to use unaligned host accesses. Key MIPS translation blocks on the linux-user unaligned policy, implement sysmips(MIPS_FIXADE) to toggle that policy, and raise SIGBUS/BUS_ADRALN when fixups are disabled. Reviewed-by: Richard Henderson Signed-off-by: James Hilliard Signed-off-by: Philippe Mathieu-Daud=C3=A9 --- linux-user/mips/target_syscall.h | 1 + linux-user/mips64/target_syscall.h | 1 + target/mips/cpu.h | 4 ++++ linux-user/mips/cpu_loop.c | 5 +++++ linux-user/syscall.c | 8 ++++++++ target/mips/cpu.c | 10 ++++++++-- target/mips/tcg/translate.c | 6 +++++- 7 files changed, 32 insertions(+), 3 deletions(-) diff --git a/linux-user/mips/target_syscall.h b/linux-user/mips/target_sysc= all.h index 9206694f4fb..be6942445a2 100644 --- a/linux-user/mips/target_syscall.h +++ b/linux-user/mips/target_syscall.h @@ -11,6 +11,7 @@ =20 #define TARGET_FORCE_SHMLBA #define TARGET_SYSMIPS_FLUSH_CACHE 3 +#define TARGET_SYSMIPS_FIXADE 7 #define TARGET_SYSMIPS_ATOMIC_SET 2001 =20 static inline abi_ulong target_shmlba(CPUMIPSState *env) diff --git a/linux-user/mips64/target_syscall.h b/linux-user/mips64/target_= syscall.h index e07687f8ac9..c11d0a08888 100644 --- a/linux-user/mips64/target_syscall.h +++ b/linux-user/mips64/target_syscall.h @@ -11,6 +11,7 @@ =20 #define TARGET_FORCE_SHMLBA #define TARGET_SYSMIPS_FLUSH_CACHE 3 +#define TARGET_SYSMIPS_FIXADE 7 #define TARGET_SYSMIPS_ATOMIC_SET 2001 =20 static inline abi_ulong target_shmlba(CPUMIPSState *env) diff --git a/target/mips/cpu.h b/target/mips/cpu.h index cbb9b3e1b1c..b478f834c13 100644 --- a/target/mips/cpu.h +++ b/target/mips/cpu.h @@ -1161,6 +1161,10 @@ typedef struct CPUArchState { #define MIPS_HFLAG_ELPA 0x4000000 #define MIPS_HFLAG_ITC_CACHE 0x8000000 /* CACHE instr. operates on ITC ta= g */ #define MIPS_HFLAG_ERL 0x10000000 /* error level flag */ +#define MIPS_HFLAG_TB_MASK (MIPS_HFLAG_TMASK | MIPS_HFLAG_BMASK | \ + MIPS_HFLAG_HWRENA_ULR) + +#define TB_FLAG_MIPS_FIXADE 0x40000000 target_ulong btarget; /* Jump / branch target */ target_ulong bcond; /* Branch condition (if needed) */ =20 diff --git a/linux-user/mips/cpu_loop.c b/linux-user/mips/cpu_loop.c index fa264b27ec5..ff9d293c296 100644 --- a/linux-user/mips/cpu_loop.c +++ b/linux-user/mips/cpu_loop.c @@ -161,6 +161,11 @@ done_syscall: case EXCP_DSPDIS: force_sig(TARGET_SIGILL); break; + case EXCP_AdEL: + case EXCP_AdES: + force_sig_fault(TARGET_SIGBUS, TARGET_BUS_ADRALN, + env->CP0_BadVAddr); + break; case EXCP_INTERRUPT: /* just indicate that signals should be handled asap */ break; diff --git a/linux-user/syscall.c b/linux-user/syscall.c index 3df42aa159d..7d7a7b489cf 100644 --- a/linux-user/syscall.c +++ b/linux-user/syscall.c @@ -6663,9 +6663,17 @@ static abi_long do_sysmips_atomic_set(CPUArchState *= env, abi_ulong addr, static abi_long do_sysmips(CPUArchState *env, abi_long cmd, abi_long arg1, abi_long arg2) { + CPUState *cs =3D env_cpu(env); + switch (cmd) { case TARGET_SYSMIPS_ATOMIC_SET: return do_sysmips_atomic_set(env, arg1, arg2); + case TARGET_SYSMIPS_FIXADE: + if (arg1 & ~3) { + return -TARGET_EINVAL; + } + cs->prctl_unalign_sigbus =3D !(arg1 & 1); + return 0; case TARGET_SYSMIPS_FLUSH_CACHE: return 0; default: diff --git a/target/mips/cpu.c b/target/mips/cpu.c index 88bb59d506b..57935adea4b 100644 --- a/target/mips/cpu.c +++ b/target/mips/cpu.c @@ -565,11 +565,17 @@ static int mips_cpu_mmu_index(CPUState *cs, bool ifun= c) static TCGTBCPUState mips_get_tb_cpu_state(CPUState *cs) { CPUMIPSState *env =3D cpu_env(cs); + uint32_t flags =3D env->hflags & MIPS_HFLAG_TB_MASK; + +#ifdef CONFIG_USER_ONLY + if (!cs->prctl_unalign_sigbus) { + flags |=3D TB_FLAG_MIPS_FIXADE; + } +#endif =20 return (TCGTBCPUState){ .pc =3D env->active_tc.PC, - .flags =3D env->hflags & (MIPS_HFLAG_TMASK | MIPS_HFLAG_BMASK | - MIPS_HFLAG_HWRENA_ULR), + .flags =3D flags, }; } =20 diff --git a/target/mips/tcg/translate.c b/target/mips/tcg/translate.c index 54ed253a7d0..dac30aff8d3 100644 --- a/target/mips/tcg/translate.c +++ b/target/mips/tcg/translate.c @@ -15070,6 +15070,7 @@ static void mips_tr_init_disas_context(DisasContext= Base *dcbase, CPUState *cs) { DisasContext *ctx =3D container_of(dcbase, DisasContext, base); CPUMIPSState *env =3D cpu_env(cs); + uint32_t tb_flags =3D ctx->base.tb->flags; =20 ctx->page_start =3D ctx->base.pc_first & TARGET_PAGE_MASK; ctx->saved_pc =3D -1; @@ -15092,7 +15093,7 @@ static void mips_tr_init_disas_context(DisasContext= Base *dcbase, CPUState *cs) ctx->CP0_LLAddr_shift =3D env->CP0_LLAddr_shift; ctx->cmgcr =3D (env->CP0_Config3 >> CP0C3_CMGCR) & 1; /* Restore delay slot state from the tb context. */ - ctx->hflags =3D (uint32_t)ctx->base.tb->flags; /* FIXME: maybe use 64 = bits? */ + ctx->hflags =3D tb_flags & MIPS_HFLAG_TB_MASK; ctx->ulri =3D (env->CP0_Config3 >> CP0C3_ULRI) & 1; ctx->ps =3D ((env->active_fpu.fcr0 >> FCR0_PS) & 1) || (env->insn_flags & (INSN_LOONGSON2E | INSN_LOONGSON2F)); @@ -15112,6 +15113,9 @@ static void mips_tr_init_disas_context(DisasContext= Base *dcbase, CPUState *cs) ctx->default_tcg_memop_mask =3D (!(ctx->insn_flags & ISA_NANOMIPS32) && (ctx->insn_flags & (ISA_MIPS_R6 | INSN_LOONGSON3A))) ? MO_UNALN : MO_ALIGN; + if (tb_flags & TB_FLAG_MIPS_FIXADE) { + ctx->default_tcg_memop_mask =3D MO_UNALN; + } =20 /* * Execute a branch and its delay slot as a single instruction. --=20 2.53.0 From nobody Sat May 30 17:44:11 2026 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=1779298052; cv=none; d=zohomail.com; s=zohoarc; b=nPu/c+OMKz9W3UuRlDSfd1tI1f57GHgOE2APMZSJ1HUFOZx1bRYVzUfeFGx84unp5OlTDk7xH/lMtntpsbxqfeONwiaZGVwLVew1gF9CEx2XIYXda9jiHwx70UQ69L93jf1JWhZAFkE7xK/X0LXtzCkAclKaxpDEAtZi5FTM7pI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1779298052; 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=JLvsWS0q05lqOyXgNSpk34dhHcgF39sVzumKyZgyZ0U=; b=acsNJejNV74gAvic4UMx5crSBiivLo80SV6AQ8cz4vYbgI90Ldgeoo6ftKAXxLTHu/MCuIfKgFUTPXWMA4XfyJy+LknF/XgfWk+J1WPE4+afXkF4E8hO8nWcsxEgfTmCP2t6jwUybmkU651I17QyjHXs/yPfT3GR3ypn5qigvfE= 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 lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1779298052665184.28612245633622; Wed, 20 May 2026 10:27:32 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wPke8-00047b-B7; Wed, 20 May 2026 13:23:52 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wPke6-000406-EV for qemu-devel@nongnu.org; Wed, 20 May 2026 13:23:50 -0400 Received: from mail-wm1-x32b.google.com ([2a00:1450:4864:20::32b]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wPke2-0003Wl-Hu for qemu-devel@nongnu.org; Wed, 20 May 2026 13:23:47 -0400 Received: by mail-wm1-x32b.google.com with SMTP id 5b1f17b1804b1-48fe26a177cso38943015e9.1 for ; Wed, 20 May 2026 10:23:46 -0700 (PDT) Received: from localhost.localdomain (88-187-86-199.subs.proxad.net. [88.187.86.199]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-48febe79ce3sm138670215e9.31.2026.05.20.10.23.42 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Wed, 20 May 2026 10:23:43 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1779297825; x=1779902625; 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=JLvsWS0q05lqOyXgNSpk34dhHcgF39sVzumKyZgyZ0U=; b=iDidjUCVGoh02E5X0pJ0dyWTGY/cVJIGAI0uq0bD5nVXqQ7ce0JjQbutqTDEBgs+1o 4PD2VeoDTpla8YBrR51ijWlPxUwqeGVNmRf+1ZAmSfZ2QZ4/nvSON4BbVUUNcMsrG6Xy 1KXcSM5o3nIEfiub5/MQEfqgLNSBa8xT/Xw4AjiWlFTXxCbfwLsUx66RYGr9FN69q/V7 U4QHeF6z549ZRUyE/tbUNsjpBAiFfddBg3Cq9+PnISWUXUL4e2ZcL3EWiwZazlcFW/ZP QF8dK+WgTfZO/gjy5CeffZJ4GatAuu5vT0DEpmUa9efHRj7uQ4oVSrPoh1Sm+WTSXbIt E6Kg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1779297825; x=1779902625; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=JLvsWS0q05lqOyXgNSpk34dhHcgF39sVzumKyZgyZ0U=; b=Bjh/t5fdj1AidyR5M6W0HC1TQOOQEe83vQKQuhg9RJLysMV+7/14FvUhCdGHUIRHis emsOA2ECAfQim1qSdAjxD69auL3FXjs7zOTm/Lerqw27jcL2RI0edoBW1vwzts9WU4UZ rhT1MHpcxflGuHR2hDm3IAn8ZFjAOx3hX9WBKIfN0Ynk9e0qDOzO1feic3AgxNRuyR2s +J8L+HfJwOSddVd9ekmHdzrSKpRPmEcTCBarcrDG2iPAZElKjD8mAXoir94IksdQBlU3 lQxJleEvhvVr72aBgUwkmddcDY0ffcv9kimGGvE+fG2DgQOc1YQFEHGVDgetOGC3yxRU r3Cw== X-Gm-Message-State: AOJu0YzRAzZTN28C9dq1bMd7FGev+L/UTNn/qe40oHLgM1bjYVmLjV9S Wjc7PZ8Zq/kvZpp3Puzyru3QC6IEvUavN8geUNtzJBTGU37VgvB4CsqUIGLPQcdEU5PTpD6ulNN UnfRk5G8= X-Gm-Gg: Acq92OGaPguWjlb4b1A66L2/p4SfAjTag/X6YUWcQss38cMMvgptQwHj0MgzCOQNOST GGVEh1Q+7JzALXYBT97fIjzbLkQgwq34XIU/WOxSDEMa2CoWwJc54DVSU2kR7XdG0U91MPPKMEX 5Ctiujw6raphk7BqarWS1DUHgsGe0B0pJdQ51/oIyP1ToGpfRpFEJ4fXDMWb3UTUdOX0wNW4oJJ GpU7QOIyKVH/uePCnm2ub1R6xpPmebk7h1888o9iAePBCiBz+mb9gyoBVrtQYikK9BPJa1tiPlt kPMfb4IOxmH7VqXZ0WbwLXP0Sx5uIsd3IJqCaphk1qvAnoKk/Xqgvo9DlOe6m7s32KO8+HHx0sY NNUVlbW8ZEGUeLcQ6Q5vVSQbiC6yAQkhpd0mySJyqadwV6GNPkoYLViKNweEMPrYtA7yhu54vsD A5QXrqLL7zebBK1PiFyo3KUZZjajJMNwl0TE187xibTYFKKyuo9IDbpZWyMbjekRuQHkFw+0tZ X-Received: by 2002:a05:600c:6211:b0:48f:e230:72fc with SMTP id 5b1f17b1804b1-48fe663152cmr388092155e9.33.1779297825046; Wed, 20 May 2026 10:23:45 -0700 (PDT) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Cc: James Hilliard , Richard Henderson Subject: [PATCH v12 04/24] target/mips: expose Octeon68XX floating-point support Date: Wed, 20 May 2026 19:22:52 +0200 Message-ID: <20260520172313.23777-5-philmd@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260520172313.23777-1-philmd@linaro.org> References: <20260520172313.23777-1-philmd@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=lists1p.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::32b; envelope-from=philmd@linaro.org; helo=mail-wm1-x32b.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: qemu development 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: 1779298054371158500 From: James Hilliard Octeon68XX cores implement CP1. Advertise that in the CPU definition by setting Config1.FP, enabling the writable Status bits, and providing the FCR0/FCR31 defaults used by this CPU model. This lets guests observe the expected floating-point feature bits and use CP1 with -cpu Octeon68XX. Signed-off-by: James Hilliard Tested-by: Philippe Mathieu-Daud=C3=A9 Signed-off-by: Philippe Mathieu-Daud=C3=A9 --- target/mips/cpu-defs.c.inc | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/target/mips/cpu-defs.c.inc b/target/mips/cpu-defs.c.inc index faefab04738..cc1916232f5 100644 --- a/target/mips/cpu-defs.c.inc +++ b/target/mips/cpu-defs.c.inc @@ -997,7 +997,8 @@ const mips_def_t mips_defs[] =3D .CP0_PRid =3D 0x000D9100, .CP0_Config0 =3D MIPS_CONFIG0 | (0x1 << CP0C0_AR) | (0x2 << CP0C0_= AT) | (MMU_TYPE_R4000 << CP0C0_MT), - .CP0_Config1 =3D MIPS_CONFIG1 | (0x3F << CP0C1_MMU) | + .CP0_Config1 =3D MIPS_CONFIG1 | (1 << CP0C1_FP) | + (0x3F << CP0C1_MMU) | (1 << CP0C1_IS) | (4 << CP0C1_IL) | (1 << CP0C1_IA)= | (1 << CP0C1_DS) | (4 << CP0C1_DL) | (1 << CP0C1_DA)= | (1 << CP0C1_PC) | (1 << CP0C1_WR) | (1 << CP0C1_EP), @@ -1011,7 +1012,12 @@ const mips_def_t mips_defs[] =3D .CP0_PageGrain =3D (1 << CP0PG_ELPA), .SYNCI_Step =3D 32, .CCRes =3D 2, - .CP0_Status_rw_bitmask =3D 0x12F8FFFF, + .CP0_Status_rw_bitmask =3D 0x36F8FFFF, + .CP1_fcr0 =3D (1 << FCR0_F64) | (1 << FCR0_3D) | (1 << FCR0_PS) | + (1 << FCR0_L) | (1 << FCR0_W) | (1 << FCR0_D) | + (1 << FCR0_S) | (0x00 << FCR0_PRID) | (0x0 << FCR0_REV= ), + .CP1_fcr31 =3D 0, + .CP1_fcr31_rw_bitmask =3D 0xFF83FFFF, .SEGBITS =3D 42, .PABITS =3D 49, .insn_flags =3D CPU_MIPS64R2 | INSN_OCTEON, --=20 2.53.0 From nobody Sat May 30 17:44:11 2026 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=1779297876; cv=none; d=zohomail.com; s=zohoarc; b=K95wUH5uazBhCPAi01c9d3b2TajJX819T4iAa7QzLKabYq67lwNw9xlP5ZXTQDDI2mTTaBIkbyvL/FLl/hT4FulvKoDFS1IpaPfjX0UuKJPm9Ct1e4Rtlgcw89n7sorwJHfGzqMNYdRl4h8eV/CvoDxiDBN+uQuBSfrKCikQArs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1779297876; 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=WAL34/RRHyFc4Y9KYQeJGuf0H2THlwX/TfXdoppM+D0=; b=iRsQiQLOyfYrrEopJvtlhY4P8UdgUqUa7KfbhYV39WTg7OoMYw9UkPyaKY1q9uxWA8B50JX5EbXVuzdZSZUFwM891PVHsH501unvC8hn+Wq3kgHYl6QXQAtZCp40dCAVdB7Xivaa03nvEM9d7LgJj94vvsU699pkz5dyQ3+Jxhc= 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 lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1779297876562147.18494354791596; Wed, 20 May 2026 10:24:36 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wPkeD-00049T-Sc; Wed, 20 May 2026 13:23:57 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wPkeC-000499-2y for qemu-devel@nongnu.org; Wed, 20 May 2026 13:23:56 -0400 Received: from mail-wr1-x42b.google.com ([2a00:1450:4864:20::42b]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wPkeA-0003XE-7K for qemu-devel@nongnu.org; Wed, 20 May 2026 13:23:55 -0400 Received: by mail-wr1-x42b.google.com with SMTP id ffacd0b85a97d-444826c16ffso4643633f8f.1 for ; Wed, 20 May 2026 10:23:53 -0700 (PDT) Received: from localhost.localdomain (88-187-86-199.subs.proxad.net. [88.187.86.199]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-45da0fe13b4sm55964638f8f.28.2026.05.20.10.23.51 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Wed, 20 May 2026 10:23:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1779297832; x=1779902632; 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=WAL34/RRHyFc4Y9KYQeJGuf0H2THlwX/TfXdoppM+D0=; b=y6k2MFeb4bU8d3xYveS6ugtwyQd7zz0N+KV+nVwFiK84WtxjS1ljBMP8uVjSNeIdxc QBtJMz/pG0DjLga+IrmPG1SVzxYZ9zQ9XM8e/ILWpIurQ5QZnSDVo6Acr12dzdXTpZmF 8GhZsLPNh6Sl8OQfLBCXAWZp0Fjk7UyLhH6daSODo3T9dKSSQNwTVf4v49Jp8P8okk51 XJ0zONwoFB/ydVOgSE3u6apv15DB9xtihqRkBTHr1glwVKONkrmlmYBPtF5O4EIUpu2r VpIm7hblTig/MDiEiuc4gxkl5ww6+DDo6lmXdVZlDxPbBWdtBVed35Uuv6PQfB3uWWJy p1AA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1779297832; x=1779902632; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=WAL34/RRHyFc4Y9KYQeJGuf0H2THlwX/TfXdoppM+D0=; b=MaBpSQhqoDHhU6EGKZQ3KjGWry7JpUh1mupF5oPq+haompXH7Ar7scxdqs0Eo8lDLN j5oF3UuPHzLgEenavdhwLoCPjqPuHiHbrmvitEqN7F/y4/DuKH3dlsbx9pL/CngmKiZi pFsRAAwGQjA/oFHCw+yKSoviqqFDYF6mVZvXkJrvg3A9C2rlCsr5hTvMwkvmdot1U4Me eGZt42kBduJfNLJ6d3qE8HRvBMJAySHD7YoSvbQFblm6uChu+EB79W2Z3oSg935VQ6ec deogtXLq54uf3OMB3pSc+8BEDeoKCOedZ618M/KX7JrBnilCsWyW8InG3Irl0HzPl/OJ f2hg== X-Gm-Message-State: AOJu0YwYlel/B1iaG7QxqIPrTIurY7JzIShmfEXDGvxHv+zuwYmwClTl ipqA+bLCjh+9D3oY/l1Vg2CAy4I0HxHV7aXMnnLKF9z58PFkuByxfuwlyuGgZ0tRzncSaQqmvFo A2Qj0c1s= X-Gm-Gg: Acq92OGKYuKlGzoOu9XfKmQuBlnZ1itp7dBgwrIGhGJRHzNnLAEn4g2LrXL3v9d4gTA 4V/Lcp1TMuIYmLlZSXeU4W40fVGBkmo8q6YyJe8EwE9HJK2+UQJUSbDrKODdk9EAMhDJtdf6ugq CUMBYKEwo8IvBfN+Xe0FbDABiGB92I0/163Dzcd1O1ABriJxsjY/2VJprN7/mzgLrn6oAhjzvqS y5bwc3ZbJLSvaP0KGcDX6uxDfDUtU80qGlpMWDvRut9M0jQ98bVL7oUGX5QwkWiQrLGriBQRN8G ZsVDXMfMwMsGFiy8hmLM1fmTopjFy35yERw7f0Bz674TKTyWQ8sbZgijNNANYdb7TwIWx92Ozz1 S75s+A4G+nWXsTJeH+EsREK53Q1Km7Xtr1VucjVW66bqcvmk2wX2AmY3+qmqNbVnGg4ERFFdFPa 7xPrDtLZMCPAcmmKQGwqxycUH7hpgdIUrUhE2zNRmaw6XvNGgMppFA6jIp521gv0SKAAl2eG2A X-Received: by 2002:a05:6000:2485:b0:43f:dfb6:78e1 with SMTP id ffacd0b85a97d-45e5c3629femr40835901f8f.8.1779297832218; Wed, 20 May 2026 10:23:52 -0700 (PDT) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Cc: James Hilliard , Richard Henderson Subject: [PATCH v12 05/24] tests/tcg/mips: add Octeon instruction smoke test Date: Wed, 20 May 2026 19:22:53 +0200 Message-ID: <20260520172313.23777-6-philmd@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260520172313.23777-1-philmd@linaro.org> References: <20260520172313.23777-1-philmd@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=lists1p.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::42b; envelope-from=philmd@linaro.org; helo=mail-wr1-x42b.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: qemu development 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: 1779297879215154100 From: James Hilliard Add a mips64/mips64el linux-user TCG smoke test for representative Octeon instruction paths. Run the test with -cpu Octeon68XX and share the source between the mips64 and mips64el target directories. Signed-off-by: James Hilliard Reviewed-by: Philippe Mathieu-Daud=C3=A9 Signed-off-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Richard Henderson --- MAINTAINERS | 2 +- tests/tcg/mips/user/isa/octeon/octeon-insns.c | 13 ++++++++++++ tests/tcg/mips64/Makefile.target | 20 +++++++++++++++++++ tests/tcg/mips64el/Makefile.target | 8 ++++++++ 4 files changed, 42 insertions(+), 1 deletion(-) create mode 100644 tests/tcg/mips/user/isa/octeon/octeon-insns.c create mode 100644 tests/tcg/mips64/Makefile.target create mode 100644 tests/tcg/mips64el/Makefile.target diff --git a/MAINTAINERS b/MAINTAINERS index b75f3222f2f..d9e3ab03cb9 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -310,7 +310,7 @@ S: Odd Fixes F: target/mips/ F: disas/*mips.c F: docs/system/cpu-models-mips.rst.inc -F: tests/tcg/mips/ +F: tests/tcg/mips*/ =20 OpenRISC TCG CPUs M: Stafford Horne diff --git a/tests/tcg/mips/user/isa/octeon/octeon-insns.c b/tests/tcg/mips= /user/isa/octeon/octeon-insns.c new file mode 100644 index 00000000000..aef23fb9465 --- /dev/null +++ b/tests/tcg/mips/user/isa/octeon/octeon-insns.c @@ -0,0 +1,13 @@ +/* + * Test Octeon-specific user-mode instructions. + * + * SPDX-License-Identifier: GPL-2.0-or-later + */ + +#include +#include + +int main(void) +{ + return 0; +} diff --git a/tests/tcg/mips64/Makefile.target b/tests/tcg/mips64/Makefile.t= arget new file mode 100644 index 00000000000..042855844a8 --- /dev/null +++ b/tests/tcg/mips64/Makefile.target @@ -0,0 +1,20 @@ +# -*- Mode: makefile -*- +# +# SPDX-License-Identifier: GPL-2.0-or-later +# +# MIPS64 - included from tests/tcg/Makefile.target +# + +MIPS64_SRC=3D$(SRC_PATH)/tests/tcg/mips64 +MIPS_OCTEON_SRC=3D$(SRC_PATH)/tests/tcg/mips/user/isa/octeon + +# Set search path for all sources +VPATH +=3D $(MIPS64_SRC) $(MIPS_OCTEON_SRC) + +MIPS64_TESTS=3Docteon-insns + +TESTS +=3D $(MIPS64_TESTS) + +$(MIPS64_TESTS): CFLAGS+=3D-mabi=3D64 + +run-octeon-insns: QEMU_OPTS+=3D-cpu Octeon68XX diff --git a/tests/tcg/mips64el/Makefile.target b/tests/tcg/mips64el/Makefi= le.target new file mode 100644 index 00000000000..dbc5f8dc5fe --- /dev/null +++ b/tests/tcg/mips64el/Makefile.target @@ -0,0 +1,8 @@ +# -*- Mode: makefile -*- +# +# SPDX-License-Identifier: GPL-2.0-or-later +# +# MIPS64 little-endian - included from tests/tcg/Makefile.target +# + +include $(SRC_PATH)/tests/tcg/mips64/Makefile.target --=20 2.53.0 From nobody Sat May 30 17:44:11 2026 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=1779298098; cv=none; d=zohomail.com; s=zohoarc; b=ME5qJKy0o0crlsk6jS5/D5ZHrJwb7vrKuc7ercGRi88EWa6VE6kUh6hPrfHzfcwJ2PAd3a2gndU9JTsMOB6Q8OcIdvwa8f5FFUmY2ZH5vxrqeuEitQtVH6WUYhtysfNSMjDj/92RqbUgFtAvaIqb3GmDo5GVTxuQKVe6awoZrfs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1779298098; 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=y6pNcfHaTRa/5b8aBOv11Qwh7sxl5E8W3OHi3uNH/pc=; b=HDo4q5QwlZxQwU/yntTNw54vF7zXznGvJAytxkzd5WQiyN5oe3IEhZClaWmLrEfivf2AIWeY4ojpvlP5Y6O8/AKbAiZUbQ7IuLXIsKsuw1pZThHNcXjveyi8AKNZdXjYkyAb/oWmQ5CYk6grc7W6jtV7oQmmkwNkKiC0m8pjfGo= 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 lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 177929809855628.889581716999828; Wed, 20 May 2026 10:28:18 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wPkeK-0004Qn-9G; Wed, 20 May 2026 13:24:04 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wPkeI-0004PU-QB for qemu-devel@nongnu.org; Wed, 20 May 2026 13:24:02 -0400 Received: from mail-wr1-x430.google.com ([2a00:1450:4864:20::430]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wPkeH-0003a5-4F for qemu-devel@nongnu.org; Wed, 20 May 2026 13:24:02 -0400 Received: by mail-wr1-x430.google.com with SMTP id ffacd0b85a97d-44a14580111so3824523f8f.0 for ; Wed, 20 May 2026 10:24:00 -0700 (PDT) Received: from localhost.localdomain (88-187-86-199.subs.proxad.net. [88.187.86.199]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-45d9e768acesm59494711f8f.7.2026.05.20.10.23.58 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Wed, 20 May 2026 10:23:58 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1779297840; x=1779902640; 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=y6pNcfHaTRa/5b8aBOv11Qwh7sxl5E8W3OHi3uNH/pc=; b=tkEa2sHAvsvaRYFSJi08ueymuJb0+Hqx5ZKJ20EFoG3TQ3oAHCCr5Nsyk41I9NL4Gw 30FosGabh7rIdr/EjuUIe2j1MAfW8+cdxb/X/bFovzt9no9fVVA2zWfRuAJHKEYI0xv0 vKqigI1pUbUfk5hTWL6Q6VuKWbcc3ZaL8p926i3PO+blgwD6k0SiqIsViYeYXIQiJtTv echHIkDohO5p6wKAx/Q6TEFhtyiNCigT75pzgxw3m3V6WFlk8n1cs7mGRjsSkCSAPn/h vzCGiC9lBPwg2JxxHsUEFD7BhDUAHyYIi191PjQy0jfvXcgD9Wl53HVPxbpXIncsffhG DZ/A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1779297840; x=1779902640; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=y6pNcfHaTRa/5b8aBOv11Qwh7sxl5E8W3OHi3uNH/pc=; b=dkVAv9E/saGOoig8p1ZjYRIyCSm3MdbjG7DQj/11O0TrgdQd8tKoc147kredgSkUqt 7yIjkIek2a55JkrLrv+46eZxnXxeSJ9G20bMAtpzeAQsMEcaJhSFeletcWZuD51ezXHz 92tehtihf7MKj8XQCalhGDJ8oLR+i88snIFzlg/d8WtF6kZbQ6K6owBhKckMrqgh2aet OsMrZLGDp5usz/IXhQj3+NvI5wciZ944lgznLOYmfS3iKTXPhmJe6yZqPtvrZ6e4on8A 7ubwPWy6LWaDOLGAKKnfMt5PqNc0HDZ+kVoijqnVT+CxfZc+0qgwYzR2nzGAYYKhMZvW dueg== X-Gm-Message-State: AOJu0Yy6RqikhazSykyPAeuaKaKJSCO+OQQUFLGP0zCjgDm+r7rdicdv PByYDumAtTqI7plvgZRUUd0ntY04qg3zWoHodwB8sTW8WjV3/EwYW93CIY/+F1QDgPxIj2r9PvO hMueEiYc= X-Gm-Gg: Acq92OHKVy0hlKtPsn6QwJarf1VV5OcMrKAhicJQseGQvuOWoiRCrjyKyuE9y+Jy+4R j06NzJUay8//FujBEP1AQbjv1b7fP5H9A01x265ILgVFwnTOwckrs+zpHBbyUGaaIi8Bwy7eDXy +e6JB8Qca55gMt6wY2I1lwOiZujXrWw1/loT7X8pI3Df5LU98jrdESCKZrssadYM01yqFDVXsfH OwSZUXaC6lYOT5EFEYXrUKZ62IaJCFkpreC4aQA/VLIMKG9PhoO734qhAvXWOzspu3s1eiXZoum +cW/cbxrJhxwWxW5UFImPlZqs4vmQ5zU6xz+jqEZs21TfibDQM/+sBrMjaSxBgUcxpFbID1DPET JCgfs57+JRHDIsHugfbu+IW9tD3LbKQ+RrhWvKEfN5CLo/QnqXHGN5xJlJpmsE/TxBps9+fq3cP pKIuEshZEToY/+/j4is17fa6r7804YbnqQbVw2YSH2ugmKMwykFVsJNe0E1fQ/h7gtqv7gj+Rzn c02zS/Z7u4= X-Received: by 2002:a05:6000:2c11:b0:44d:261:54c5 with SMTP id ffacd0b85a97d-45e5c608d36mr40905565f8f.30.1779297839615; Wed, 20 May 2026 10:23:59 -0700 (PDT) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Cc: James Hilliard , Richard Henderson Subject: [PATCH v12 06/24] target/mips: fix Octeon arithmetic destination handling Date: Wed, 20 May 2026 19:22:54 +0200 Message-ID: <20260520172313.23777-7-philmd@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260520172313.23777-1-philmd@linaro.org> References: <20260520172313.23777-1-philmd@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=lists1p.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::430; envelope-from=philmd@linaro.org; helo=mail-wr1-x430.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: qemu development 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: 1779298099803154100 From: James Hilliard BADDU and DMUL write their results to rd, not rt. Route writes through gen_store_gpr() so rd =3D=3D $zero is handled consistently. Reviewed-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daud=C3=A9 Signed-off-by: James Hilliard Signed-off-by: Philippe Mathieu-Daud=C3=A9 --- target/mips/tcg/octeon_translate.c | 16 +++------ tests/tcg/mips/user/isa/octeon/octeon-insns.c | 35 +++++++++++++++++++ 2 files changed, 39 insertions(+), 12 deletions(-) diff --git a/target/mips/tcg/octeon_translate.c b/target/mips/tcg/octeon_tr= anslate.c index e1f52d444aa..4dd76268350 100644 --- a/target/mips/tcg/octeon_translate.c +++ b/target/mips/tcg/octeon_translate.c @@ -45,18 +45,14 @@ static bool trans_BADDU(DisasContext *ctx, arg_BADDU *a) { TCGv_i64 t0, t1; =20 - if (a->rt =3D=3D 0) { - /* nop */ - return true; - } - t0 =3D tcg_temp_new_i64(); t1 =3D tcg_temp_new_i64(); gen_load_gpr(t0, a->rs); gen_load_gpr(t1, a->rt); =20 tcg_gen_add_i64(t0, t0, t1); - tcg_gen_andi_i64(cpu_gpr[a->rd], t0, 0xff); + tcg_gen_andi_i64(t0, t0, 0xff); + gen_store_gpr(t0, a->rd); return true; } =20 @@ -64,17 +60,13 @@ static bool trans_DMUL(DisasContext *ctx, arg_DMUL *a) { TCGv_i64 t0, t1; =20 - if (a->rt =3D=3D 0) { - /* nop */ - return true; - } - t0 =3D tcg_temp_new_i64(); t1 =3D tcg_temp_new_i64(); gen_load_gpr(t0, a->rs); gen_load_gpr(t1, a->rt); =20 - tcg_gen_mul_i64(cpu_gpr[a->rd], t0, t1); + tcg_gen_mul_i64(t0, t0, t1); + gen_store_gpr(t0, a->rd); return true; } =20 diff --git a/tests/tcg/mips/user/isa/octeon/octeon-insns.c b/tests/tcg/mips= /user/isa/octeon/octeon-insns.c index aef23fb9465..b7610db812e 100644 --- a/tests/tcg/mips/user/isa/octeon/octeon-insns.c +++ b/tests/tcg/mips/user/isa/octeon/octeon-insns.c @@ -7,7 +7,42 @@ #include #include =20 +static uint64_t octeon_baddu(uint64_t rs, uint64_t rt) +{ + uint64_t rd; + + asm volatile( + "move $8, %[rs]\n\t" + "move $9, %[rt]\n\t" + ".word 0x71095028\n\t" /* baddu $10, $8, $9 */ + "move %[rd], $10\n\t" + : [rd] "=3Dr" (rd) + : [rs] "r" (rs), [rt] "r" (rt) + : "$8", "$9", "$10"); + + return rd; +} + +static uint64_t octeon_dmul(uint64_t rs, uint64_t rt) +{ + uint64_t rd; + + asm volatile( + "move $8, %[rs]\n\t" + "move $9, %[rt]\n\t" + ".word 0x71095003\n\t" /* dmul $10, $8, $9 */ + "move %[rd], $10\n\t" + : [rd] "=3Dr" (rd) + : [rs] "r" (rs), [rt] "r" (rt) + : "$8", "$9", "$10"); + + return rd; +} + int main(void) { + assert(octeon_baddu(0x123, 0x0f0) =3D=3D 0x13); + assert(octeon_dmul(0x12345678, 0x10) =3D=3D 0x123456780); + return 0; } --=20 2.53.0 From nobody Sat May 30 17:44:11 2026 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=1779297878; cv=none; d=zohomail.com; s=zohoarc; b=F9Mxks4Ig2qQ1gPb091FYOq23myDUAHy9USS2kzU2AfapPbxMPZixL9fpKLat1l+D+IFLiSt5sb5LvGAlQcmKs1owOXTc5/v8Ad3eMwwcwQBCyf2RfqWBC3BVFji54DBFG2SsWPHZR6IlknIxkyavARRYNYnfncnKyGT+RmJwHM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1779297878; 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=LRLKVH14QDYQaVrfjU+onWCMIThdi8GoEYRTGd4kc9Y=; b=L9u35wgBhXx/ffdW6K6/LmzsaQEUZdu5Mbo8KeXr9ItkxVh+GI72KWY3BIOHvUIMR1tz6AjzcYq/12DqrbtulR2MEmFtZIVjNU13dxjVaEpUMFZaV1MX4hnDi/bByCRkNJrvzwEQw9agPUiIcoThlHevQZdfTC0spBoxJRSHq0A= 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 lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1779297878905716.6724779115711; Wed, 20 May 2026 10:24:38 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wPkeS-0004ep-3b; Wed, 20 May 2026 13:24:12 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wPkeQ-0004ah-Gn for qemu-devel@nongnu.org; Wed, 20 May 2026 13:24:10 -0400 Received: from mail-wm1-x330.google.com ([2a00:1450:4864:20::330]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wPkeO-0003by-Si for qemu-devel@nongnu.org; Wed, 20 May 2026 13:24:10 -0400 Received: by mail-wm1-x330.google.com with SMTP id 5b1f17b1804b1-4891e86fabeso68537995e9.1 for ; Wed, 20 May 2026 10:24:08 -0700 (PDT) Received: from localhost.localdomain (88-187-86-199.subs.proxad.net. [88.187.86.199]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-49033d8e25bsm5567275e9.11.2026.05.20.10.24.05 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Wed, 20 May 2026 10:24:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1779297847; x=1779902647; 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=LRLKVH14QDYQaVrfjU+onWCMIThdi8GoEYRTGd4kc9Y=; b=fVP9ZzpNtUgFQ5IAj+oMROq71YV3l9DHLkr3h1aupiHVupEhwno/X70BtAgbik+Jfb oAz6/UT0TIhF+RMC/qKruak5aSbQ9adYAWdevJ9zq4n7HbWmcbinXev4lUpn8E7+izTW luLYon/5mzQ19drCaNUkfUkandUb+7DKKT+wwbFD0TeMVwOlD+lII4Ev2E/au4iZqc7A Ab8CsrmHTP7xusn3U8RAS5rjyzu2a5QZ3MSwrWBgireEJ1revTFQKXOuBjE5V0vehfv5 rpBvb7/DyiBI/OcVzCa1t56Ayy03cZvnB2p1ZseciRUWxEtknLJrNpLnNzlwd3Hd9+SQ xayg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1779297847; x=1779902647; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=LRLKVH14QDYQaVrfjU+onWCMIThdi8GoEYRTGd4kc9Y=; b=lBxGDuHIetHkHbYUsKerL8vpcasbZErU6wC5201KnMG1q5EpFQIHk90r9BGBsqkufM pQtaIi03tniiEQ/btNZo3WY8fwQmdj/P/UzrYb4XIvwi2e9M55shSX9W/GZhHNrWs0+g ba8UzXigBjin3Lwfz+c/5GQ4KrreXmnYx8eeAGHoY9gjiTU4d5rlAGZtrfvBA4MsModU XH75ehK3w7Xmbpyi7T3RsbSER46on+TnxleWNoX1FddMZTCwDV6utvSwyU4sMi2Y5+CG 8dmC5fISJnUD7GnQj6X0nPjNtMriSvAwimzfyLWxRhzN4fk7pERYf5gsG+fzuhsNBdC7 huMQ== X-Gm-Message-State: AOJu0YwSqB+p/jXd5ncuHeh3dHz0Rftk8M9fFgKMiRZ3asttWPUGcGBL mLIawbfx/oHSmDvCwgRalJ8uwnx+EpT2uVxcx8j5C4aoh6N7gQcHgW2I1VhAC/e6gFNDAuyGd0b OTab+PzQ= X-Gm-Gg: Acq92OHTkOXx2szQ0Ij1y0oLSKqFfXDyTriXWXIGDXqpp4CcKtxEIpov08OEDWNmAmG FUkDrqXsi1rIOexfop+T74ph71XqnYX7B8+vUDBpbN64bm2QuH6wAvRAAFDAIm+xXFeWJGt4kKs 4FxV2XTlcxXp41Zvpi4rKZJVhWA24CG713eTQZ+bB3BENTxr0zGJvK4hxGsK1aw0hfAPAQLwSnq sSaw4AtdBweKA9CDSbb79jlo3ykWWpbRqyRv3WXZHuLDjQ208XD05lyohGe1frs2wLKtpsnjFYr HjDXtXyH9QeM+5YJdgvQQ7/2FpxjNaIV78QE3bksnf7skS385QD4nTnAxoBwwYMDcJ0JnCDwsg5 ZRKHqvkSaikvA8ux7ppJKQzJyD0h0ehM5ANFQOPrPq8Z9grvI0FlwgCK8ZAnHO+YDzboe0lbj7p uHdigQ0GJ0hOEWNxzj/hL+wPFHfoTS46RGnfWquSr/RwgFnld3VpZ2Ei1TAz8IczrC4rgRlw+t X-Received: by 2002:a05:600c:1f87:b0:48f:fe2a:1099 with SMTP id 5b1f17b1804b1-48ffe2a1244mr286553695e9.5.1779297847267; Wed, 20 May 2026 10:24:07 -0700 (PDT) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Cc: James Hilliard , Richard Henderson Subject: [PATCH v12 07/24] target/mips: drop Octeon zero-register fast paths Date: Wed, 20 May 2026 19:22:55 +0200 Message-ID: <20260520172313.23777-8-philmd@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260520172313.23777-1-philmd@linaro.org> References: <20260520172313.23777-1-philmd@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=lists1p.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::330; envelope-from=philmd@linaro.org; helo=mail-wm1-x330.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: qemu development 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: 1779297881178154100 From: James Hilliard EXTS, CINS, and POP route their destination writes through gen_store_gpr(), which already discards writes to $zero. Remove the remaining translator fast paths for destination $zero so these Octeon instructions follow the same shape as BADDU/DMUL and the generic MIPS translator helpers. Add a mips64/mips64el linux-user TCG smoke test for representative Octeon population count instruction paths. Reviewed-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daud=C3=A9 Signed-off-by: James Hilliard Signed-off-by: Philippe Mathieu-Daud=C3=A9 --- target/mips/tcg/octeon_translate.c | 15 --------------- tests/tcg/mips/user/isa/octeon/octeon-insns.c | 16 ++++++++++++++++ 2 files changed, 16 insertions(+), 15 deletions(-) diff --git a/target/mips/tcg/octeon_translate.c b/target/mips/tcg/octeon_tr= anslate.c index 4dd76268350..b7531653e58 100644 --- a/target/mips/tcg/octeon_translate.c +++ b/target/mips/tcg/octeon_translate.c @@ -74,11 +74,6 @@ static bool trans_EXTS(DisasContext *ctx, arg_EXTS *a) { TCGv_i64 t0; =20 - if (a->rt =3D=3D 0) { - /* nop */ - return true; - } - t0 =3D tcg_temp_new_i64(); gen_load_gpr(t0, a->rs); tcg_gen_sextract_i64(t0, t0, a->p, a->lenm1 + 1); @@ -90,11 +85,6 @@ static bool trans_CINS(DisasContext *ctx, arg_CINS *a) { TCGv_i64 t0; =20 - if (a->rt =3D=3D 0) { - /* nop */ - return true; - } - t0 =3D tcg_temp_new_i64(); gen_load_gpr(t0, a->rs); tcg_gen_deposit_z_i64(t0, t0, a->p, a->lenm1 + 1); @@ -106,11 +96,6 @@ static bool trans_POP(DisasContext *ctx, arg_POP *a) { TCGv_i64 t0; =20 - if (a->rd =3D=3D 0) { - /* nop */ - return true; - } - t0 =3D tcg_temp_new_i64(); gen_load_gpr(t0, a->rs); if (!a->dw) { diff --git a/tests/tcg/mips/user/isa/octeon/octeon-insns.c b/tests/tcg/mips= /user/isa/octeon/octeon-insns.c index b7610db812e..f406726fc11 100644 --- a/tests/tcg/mips/user/isa/octeon/octeon-insns.c +++ b/tests/tcg/mips/user/isa/octeon/octeon-insns.c @@ -39,10 +39,26 @@ static uint64_t octeon_dmul(uint64_t rs, uint64_t rt) return rd; } =20 +static uint64_t octeon_dpop(uint64_t rs) +{ + uint64_t rd; + + asm volatile( + "move $8, %[rs]\n\t" + ".word 0x7100502d\n\t" /* dpop $10, $8 */ + "move %[rd], $10\n\t" + : [rd] "=3Dr" (rd) + : [rs] "r" (rs) + : "$8", "$10"); + + return rd; +} + int main(void) { assert(octeon_baddu(0x123, 0x0f0) =3D=3D 0x13); assert(octeon_dmul(0x12345678, 0x10) =3D=3D 0x123456780); + assert(octeon_dpop(0xf0f0f0f0f0f0f0f0ULL) =3D=3D 32); =20 return 0; } --=20 2.53.0 From nobody Sat May 30 17:44:11 2026 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=1779297915; cv=none; d=zohomail.com; s=zohoarc; b=acqAOTVkj/LjSv44o+i8GJajNr/C9Rr400Q172nfbJsmP8EvA01KVOvR4XLbCUbw1/snxew+X9FLIsxpooNir6A8nZrzHZiJjP2lPT81hzl2tHWV01L2D6g06eTnx0TDYdV2DrhzUFg8AwPtBr/UGuERKyz8KYWadepsWcw7PvQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1779297915; 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=G7thKSWIjg5/qhPYDC+RiNGQD44Efn4uAyXrn4XVW5U=; b=NkZpK6bSDJttDSblAFCjHC4yBkFqvYoq61LQSmf7KyJ/IGo3OcDj0QSV9v3IJS7ke4c/q33eoCrNje6qtucFAprYZ/mBrQxebYgi1/lHwosGezLLGJGRfJVqx3PoBu7/DYM9f56wSql4Lt5S95ZsaEmrfm5WkHCxLhhon1y0+bg= 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 lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1779297915533357.5123958848311; Wed, 20 May 2026 10:25:15 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wPkeZ-0004hl-So; Wed, 20 May 2026 13:24:20 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wPkeY-0004hO-1K for qemu-devel@nongnu.org; Wed, 20 May 2026 13:24:18 -0400 Received: from mail-wr1-x42a.google.com ([2a00:1450: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 1wPkeW-0003e7-8D for qemu-devel@nongnu.org; Wed, 20 May 2026 13:24:17 -0400 Received: by mail-wr1-x42a.google.com with SMTP id ffacd0b85a97d-43d7e23defbso2897591f8f.0 for ; Wed, 20 May 2026 10:24:15 -0700 (PDT) Received: from localhost.localdomain (88-187-86-199.subs.proxad.net. [88.187.86.199]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-49033d2fa0dsm6569005e9.2.2026.05.20.10.24.13 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Wed, 20 May 2026 10:24:13 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1779297854; x=1779902654; 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=G7thKSWIjg5/qhPYDC+RiNGQD44Efn4uAyXrn4XVW5U=; b=idxffmkEYsADuaiHy4AJTNF0hgNX3+mz1G+/1NY+I7+SHmNmlJLyPyuegR7f+4TTHu dbtGYwpLvweKqr/7mutpzm3r1/T0zSEKX4mn7ZJ/9UYMp8uLY6Zh9mgJxYFp1x5KwE1D 9VFGYcx972gvoJWcyaT8XXaymhWByijnk46zpxF0iuaaE6lP0f5DPloCf3HqPPxJAmNc /jH37xJDEdvSxSAzvX8vzL+6nBlCjruyezxPX0GNcLOjDDiSXE9+KWW9Z+M8eGmjAqNm iTCSl7I8vJBihmXlJ7r8RjLBn+oIhCgoIoqf58NZU9Ppm7lME2kyJlo0anL+f+psG6tZ dWkQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1779297854; x=1779902654; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=G7thKSWIjg5/qhPYDC+RiNGQD44Efn4uAyXrn4XVW5U=; b=mlLJOklCC5cWOJ+JJk+m7Vt4Gh0+RSEPKoWEgNG8lK6No9/YYQT7h9u33IjpVpenyf saaKy/8tu060qXuclVjkDBJbpgGXfhVQXcxp1h+gq+eXGi9KBECuUMc364enNfhHJtxm rScGcuQWO0BfGWzDwjqMNfL1/96cRS5KS+QZ65X7yCHspiG5u0vv8sraCls2M/ijiyDn NoJp0mfB4NCabpZC+N2beYGwf9plo3T65VsgnDrMheU33awQaiV0lgZE5Nsa9OXsAelY HVAIUQW/6cHvTRhvyqclNl82Ew0Eb4IHdVo9sbhp82GhQyoJJT3hbiULB6MwywU2dzqY y3gA== X-Gm-Message-State: AOJu0YzZ/7zBvUdhnCw35PEsXmazc0ROAaX7BgIh4K/jROVQ5rFZYeNa SqEMZvzQy+3RWrgKrhbo4aaJQi0oOAKsTrg5nNg80AsU9qUkbxuIYIQHZ+hebRFQad/d+0YXQMC ogqX2hgA= X-Gm-Gg: Acq92OFFGObgVBKtL4vAk95OXsHDOxUUaSfgDX7ZCkG/yz33uKFoXiHuaVY3ZdbqU5/ 0hOlhtJMH8QL43+m1KnqOCFXvnhjupjt4f5F35S4VVHkI9FhW9boivcidvwRf9HEGOl7nEVnK1s 5ZNi1kaOIrmEb6U44yDoH0WKG9wT4n2qeR/m/3WFBIFjM+vvM3XAutUjElVmjQ4hV7lMo5Hmn3x rHcvy6l+FNHE2F25elVFZs5EhI9KUGphLILowq4gKrMObN5+vV4TihwjrNDDr9PhNwG7YgOcjcD lRukjUxMo0wtkyL6boTAUVA1t2T6bK3mq3gp2G6SIl3b1gsXgIq1p0sk7qTNaKQKQhco0qO+HTh 8S5DAXHXCRVwqhaKC9VISbUzCqBqkL3l9oc1FVbWMEu/wZxMTdXIiTyMNSRRVQoObeiUnWZATE7 43DGtlVTDg9pm/OSMNMz2lOIY7iEH8LrkaXEn+W/YmH8cSoF3gnw/VMaMGpQ5R4/7eDDXTcXOrq xi/P+EJhHk= X-Received: by 2002:a05:600c:3b12:b0:488:a824:fdff with SMTP id 5b1f17b1804b1-48fe61ed2cfmr366192695e9.22.1779297854350; Wed, 20 May 2026 10:24:14 -0700 (PDT) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Cc: James Hilliard , Richard Henderson Subject: [PATCH v12 08/24] target/mips: split Octeon SEQ/SNE decode Date: Wed, 20 May 2026 19:22:56 +0200 Message-ID: <20260520172313.23777-9-philmd@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260520172313.23777-1-philmd@linaro.org> References: <20260520172313.23777-1-philmd@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=lists1p.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::42a; envelope-from=philmd@linaro.org; helo=mail-wr1-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: qemu development 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: 1779297916897158500 From: James Hilliard Decode the equality and inequality forms as explicit SEQ/SNE instructions rather than using shared generated SEQNE entries. The explicit decoder names match the architectural mnemonics, which makes the translator entry points and trace/debug output easier to correlate with the instruction set. Reviewed-by: Richard Henderson Signed-off-by: James Hilliard Reviewed-by: Philippe Mathieu-Daud=C3=A9 [PMD: Split SEQNE (this patch) vs SEQNEI] Signed-off-by: Philippe Mathieu-Daud=C3=A9 --- target/mips/tcg/octeon.decode | 3 +- target/mips/tcg/octeon_translate.c | 25 +++++++------ tests/tcg/mips/user/isa/octeon/octeon-insns.c | 36 +++++++++++++++++++ 3 files changed, 52 insertions(+), 12 deletions(-) diff --git a/target/mips/tcg/octeon.decode b/target/mips/tcg/octeon.decode index 102a05860df..2c54901f77e 100644 --- a/target/mips/tcg/octeon.decode +++ b/target/mips/tcg/octeon.decode @@ -38,7 +38,8 @@ DMUL 011100 ..... ..... ..... 00000 000011 @r3 EXTS 011100 ..... ..... ..... ..... 11101 . @bitfield CINS 011100 ..... ..... ..... ..... 11001 . @bitfield POP 011100 rs:5 00000 rd:5 00000 10110 dw:1 -SEQNE 011100 rs:5 rt:5 rd:5 00000 10101 ne:1 +SEQ 011100 ..... ..... ..... 00000 101010 @r3 +SNE 011100 ..... ..... ..... 00000 101011 @r3 SEQNEI 011100 rs:5 rt:5 imm:s10 10111 ne:1 =20 &lx base index rd diff --git a/target/mips/tcg/octeon_translate.c b/target/mips/tcg/octeon_tr= anslate.c index b7531653e58..dfbb55e3fc3 100644 --- a/target/mips/tcg/octeon_translate.c +++ b/target/mips/tcg/octeon_translate.c @@ -106,29 +106,32 @@ static bool trans_POP(DisasContext *ctx, arg_POP *a) return true; } =20 -static bool trans_SEQNE(DisasContext *ctx, arg_SEQNE *a) +static bool do_seq_sne(DisasContext *ctx, const arg_decode_ext_octeon1 *a, + TCGCond cond) { TCGv_i64 t0, t1; =20 - if (a->rd =3D=3D 0) { - /* nop */ - return true; - } - t0 =3D tcg_temp_new_i64(); t1 =3D tcg_temp_new_i64(); =20 gen_load_gpr(t0, a->rs); gen_load_gpr(t1, a->rt); =20 - if (a->ne) { - tcg_gen_setcond_i64(TCG_COND_NE, cpu_gpr[a->rd], t1, t0); - } else { - tcg_gen_setcond_i64(TCG_COND_EQ, cpu_gpr[a->rd], t1, t0); - } + tcg_gen_setcond_i64(cond, t0, t1, t0); + gen_store_gpr(t0, a->rd); return true; } =20 +static bool trans_SEQ(DisasContext *ctx, arg_SEQ *a) +{ + return do_seq_sne(ctx, a, TCG_COND_EQ); +} + +static bool trans_SNE(DisasContext *ctx, arg_SNE *a) +{ + return do_seq_sne(ctx, a, TCG_COND_NE); +} + static bool trans_SEQNEI(DisasContext *ctx, arg_SEQNEI *a) { TCGv_i64 t0; diff --git a/tests/tcg/mips/user/isa/octeon/octeon-insns.c b/tests/tcg/mips= /user/isa/octeon/octeon-insns.c index f406726fc11..3c3802ebfee 100644 --- a/tests/tcg/mips/user/isa/octeon/octeon-insns.c +++ b/tests/tcg/mips/user/isa/octeon/octeon-insns.c @@ -54,11 +54,47 @@ static uint64_t octeon_dpop(uint64_t rs) return rd; } =20 +static uint64_t octeon_seq(uint64_t rs, uint64_t rt) +{ + uint64_t rd; + + asm volatile( + "move $8, %[rs]\n\t" + "move $9, %[rt]\n\t" + ".word 0x7109502a\n\t" /* seq $10, $8, $9 */ + "move %[rd], $10\n\t" + : [rd] "=3Dr" (rd) + : [rs] "r" (rs), [rt] "r" (rt) + : "$8", "$9", "$10"); + + return rd; +} + +static uint64_t octeon_sne(uint64_t rs, uint64_t rt) +{ + uint64_t rd; + + asm volatile( + "move $8, %[rs]\n\t" + "move $9, %[rt]\n\t" + ".word 0x7109502b\n\t" /* sne $10, $8, $9 */ + "move %[rd], $10\n\t" + : [rd] "=3Dr" (rd) + : [rs] "r" (rs), [rt] "r" (rt) + : "$8", "$9", "$10"); + + return rd; +} + int main(void) { assert(octeon_baddu(0x123, 0x0f0) =3D=3D 0x13); assert(octeon_dmul(0x12345678, 0x10) =3D=3D 0x123456780); assert(octeon_dpop(0xf0f0f0f0f0f0f0f0ULL) =3D=3D 32); + assert(octeon_seq(0xabc, 0xabc) =3D=3D 1); + assert(octeon_seq(0xabc, 0xdef) =3D=3D 0); + assert(octeon_sne(0xabc, 0xabc) =3D=3D 0); + assert(octeon_sne(0xabc, 0xdef) =3D=3D 1); =20 return 0; } --=20 2.53.0 From nobody Sat May 30 17:44:11 2026 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=1779298003; cv=none; d=zohomail.com; s=zohoarc; b=JDDUJi4I/POfjmw693am6ml2HQdn/E1JbO6RfjE4quMOyiFxgxGE8Oegy0z9ei4U0fqTME57JYoM/tC/NlrNkawp/ADeQtqrvBwHVtXJLZj+b0yvtvzq1agBzdpmiD8twUw/PXlWDknxOkBjJ+YV7YYF9kQ975t7xVTiHCkelW0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1779298003; 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=F9vRnvnV5C9I2ltCn+ugALI+ERIDROE+jpEU5rU5xpQ=; b=XJ31ttvd8pZX3hH9UuCgEfWFNvWjW92+jTraKo+ykEPt9GGVfNB2yihB9liKajnXiRJKDgwhAnxCNu5xaHXnQtP3d1NOrLM/1J1SMfpQBuCn01Ufi3TVGyOsj5be9/ZMbAu6fS9Iqez+WsjtbcfdnpHmPHIjaSBauODAbQy4Yj4= 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 lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1779298003320998.2757694787316; Wed, 20 May 2026 10:26:43 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wPkeh-0004kF-Me; Wed, 20 May 2026 13:24:27 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wPkeg-0004iO-RT for qemu-devel@nongnu.org; Wed, 20 May 2026 13:24:26 -0400 Received: from mail-wm1-x32d.google.com ([2a00:1450:4864:20::32d]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wPkee-0003fu-PD for qemu-devel@nongnu.org; Wed, 20 May 2026 13:24:26 -0400 Received: by mail-wm1-x32d.google.com with SMTP id 5b1f17b1804b1-488b150559bso39943755e9.1 for ; Wed, 20 May 2026 10:24:23 -0700 (PDT) Received: from localhost.localdomain (88-187-86-199.subs.proxad.net. [88.187.86.199]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-49033d8e25bsm5580785e9.11.2026.05.20.10.24.20 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Wed, 20 May 2026 10:24:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1779297862; x=1779902662; 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=F9vRnvnV5C9I2ltCn+ugALI+ERIDROE+jpEU5rU5xpQ=; b=suiDtjW44V/rNMdat11J/Z0iSyaikoBGVspC3jbgkcQrVKE7jfQAiHRKJM90Hx3aZb n0PrnVApx5ArbHVIRsd+yLcEp7nodX2SHr0sG1bIwsP23nN99YENzmFyIkaRg3kSnyIA 7pwdTzoQ7S+JGA/E0xKZIN51OyESXRowHtcNgArRyFG6JV//ZQMO4fdRUF6Ae6I1KGcM ONmX8jofeSTvvyyQ0WtQkkqp5WIu6SYJRClL07tr3XPX7Ya/qngUmXkS8ygSS6X36i6y P1Dw8X68SNSBM23Luk3pRqiLXgaNt6zm0egJ7NkG1zeJxYosGoz2WfuTGj9QMXLt16fj +U8A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1779297862; x=1779902662; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=F9vRnvnV5C9I2ltCn+ugALI+ERIDROE+jpEU5rU5xpQ=; b=iTObC0e9hGIZzld1S9qggSf1krPjKEN3XiieVCpZB0Lk2u1G+o5/b0Mb8XxDfStPQK T7CUuxE6lAEtnsjUQTdas3oXBvY+x+T8b7j3CJF++v/C/E2+osRwDBSrlLAcVF3Xd/yl La4a0BP5/G9E1REyt2jtLc2LeResNOgLMadK4LwJ0yNVZ5HBCRoNAZ1jEVLrJXCXJhGp ruTws2ib1/vDYjysrlQpGJ9voEjymFQ1yt1hwxW3K8EPaPVq0noQkHv36WJDOHxnDPRn KkrLff+fSrk8ClsW93hWatNS3zyfw1ZlabFDqULHxapg2QsSa7g0BHclIJKpzEuRNjvz GDvA== X-Gm-Message-State: AOJu0Yw2k6phpn6oH2Tvu5ZojaCuGFO3Yv+W0u/dvMoVo1eda76Dnr7m YFX6+STr1XN5ZJnfpgYEsYtONIkmpYM6QUKzaOAslbZoaGvbEZ/fzzfjVO3N3CfvJL2WzRoEWyh V6HnBMSk= X-Gm-Gg: Acq92OE3Pn+eZQg086O8DNLsnB2e5jrzvQ/ZX1zuK6ApXUhracDW0xwm1P8dAjyvkjq Ui+V/8lPTAq/9toT4NXJm62Ylg1vo92fnnNzybn9BjqYJdEEUh1eKVzwzHil7A11VMg7jOcxX+p BZatOlbcaQGx0jOSmLMys4mj2gJHvb4utAlKPDFVtxAJKmqFlTfNPdvleY8kLX3bXv/SA0jT8ti G5RkIBfGQi8wpU9C5l1zVvG1nKEe6r+FbMYBNkNNhGmaxVb1//E81rejkD2Yw/j4miqcHSpYGvu Tk19GMK2ofw+3GWvRStW/RadI6Gy5wh9+33Or1WaiIP9NW+9MzVDFlcs537cbKuAzkU0DCgd8S2 TkwQZPLJByc7XoGsIkV6DEWRS5CtxsgIq49halqrBzlm0wblTNuvwtzcfQ6KWxPvk/6zjxeTzFZ sl/sJWsJHL50WfT27dHRPnTjDxNJlvfH3N0MHZu1aqF5/tTFZu//KHYA7lC7jomi8KuCu67z23 X-Received: by 2002:a05:600c:46cf:b0:48e:8974:c377 with SMTP id 5b1f17b1804b1-48fe6626ba1mr363520245e9.29.1779297861904; Wed, 20 May 2026 10:24:21 -0700 (PDT) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Cc: James Hilliard , Richard Henderson Subject: [PATCH v12 09/24] target/mips: split Octeon SEQI/SNEI decode Date: Wed, 20 May 2026 19:22:57 +0200 Message-ID: <20260520172313.23777-10-philmd@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260520172313.23777-1-philmd@linaro.org> References: <20260520172313.23777-1-philmd@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=lists1p.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::32d; envelope-from=philmd@linaro.org; helo=mail-wm1-x32d.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: qemu development 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: 1779298005758154100 From: James Hilliard Decode the equality and inequality forms as explicit SEQI/SNEI instructions rather than using shared generated SEQNEI entries. The explicit decoder names match the architectural mnemonics, which makes the translator entry points and trace/debug output easier to correlate with the instruction set. Reviewed-by: Richard Henderson Signed-off-by: James Hilliard Reviewed-by: Philippe Mathieu-Daud=C3=A9 [PMD: Split SEQNE vs SEQNEI (this patch)] Signed-off-by: Philippe Mathieu-Daud=C3=A9 --- target/mips/tcg/octeon.decode | 4 +++- target/mips/tcg/octeon_translate.c | 27 +++++++++++++-------------- 2 files changed, 16 insertions(+), 15 deletions(-) diff --git a/target/mips/tcg/octeon.decode b/target/mips/tcg/octeon.decode index 2c54901f77e..a2bfd0751d3 100644 --- a/target/mips/tcg/octeon.decode +++ b/target/mips/tcg/octeon.decode @@ -30,6 +30,7 @@ BBIT 11 set:1 . 10 rs:5 ..... offset:s16 p=3D%bbi= t_p # SNEI rt, rs, immediate =20 @r3 ...... rs:5 rt:5 rd:5 ..... ...... +&cmpi rs rt imm %bitfield_p 0:1 6:5 @bitfield ...... rs:5 rt:5 lenm1:5 ..... ..... . p=3D%bitfield_p =20 @@ -40,7 +41,8 @@ CINS 011100 ..... ..... ..... ..... 11001 . @bitf= ield POP 011100 rs:5 00000 rd:5 00000 10110 dw:1 SEQ 011100 ..... ..... ..... 00000 101010 @r3 SNE 011100 ..... ..... ..... 00000 101011 @r3 -SEQNEI 011100 rs:5 rt:5 imm:s10 10111 ne:1 +SEQI 011100 rs:5 rt:5 imm:s10 101110 &cmpi +SNEI 011100 rs:5 rt:5 imm:s10 101111 &cmpi =20 &lx base index rd @lx ...... base:5 index:5 rd:5 ...... ..... &lx diff --git a/target/mips/tcg/octeon_translate.c b/target/mips/tcg/octeon_tr= anslate.c index dfbb55e3fc3..5497ddfb108 100644 --- a/target/mips/tcg/octeon_translate.c +++ b/target/mips/tcg/octeon_translate.c @@ -132,29 +132,28 @@ static bool trans_SNE(DisasContext *ctx, arg_SNE *a) return do_seq_sne(ctx, a, TCG_COND_NE); } =20 -static bool trans_SEQNEI(DisasContext *ctx, arg_SEQNEI *a) +static bool do_seqi_snei(DisasContext *ctx, const arg_cmpi *a, TCGCond con= d) { TCGv_i64 t0; =20 - if (a->rt =3D=3D 0) { - /* nop */ - return true; - } - t0 =3D tcg_temp_new_i64(); - gen_load_gpr(t0, a->rs); =20 - /* Sign-extend to 64 bit value */ - target_ulong imm =3D a->imm; - if (a->ne) { - tcg_gen_setcondi_i64(TCG_COND_NE, cpu_gpr[a->rt], t0, imm); - } else { - tcg_gen_setcondi_i64(TCG_COND_EQ, cpu_gpr[a->rt], t0, imm); - } + tcg_gen_setcondi_i64(cond, t0, t0, a->imm); + gen_store_gpr(t0, a->rt); return true; } =20 +static bool trans_SEQI(DisasContext *ctx, arg_SEQI *a) +{ + return do_seqi_snei(ctx, a, TCG_COND_EQ); +} + +static bool trans_SNEI(DisasContext *ctx, arg_SNEI *a) +{ + return do_seqi_snei(ctx, a, TCG_COND_NE); +} + static bool trans_lx(DisasContext *ctx, arg_lx *a, MemOp mop) { gen_lx(ctx, a->rd, a->base, a->index, mop); --=20 2.53.0 From nobody Sat May 30 17:44:11 2026 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=1779298052; cv=none; d=zohomail.com; s=zohoarc; b=BvxOgDUyl5BvUN4TOAN6WQrsMwMONHDHumJUkZXd+x1NZTxbtgpyUSHZZgvcu9+UXD2cuvXZIWzQyWqwkM8Fign8Gz1JkfCxQkt+k8vVSUp/u/tzDS85QaP4+SIpFBL4MoYepk8cU2ckncJofWeZMzGo3KeoFuwN+WsTIsHEXps= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1779298052; 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=QR8rmkB59QouyU42X5BEd3gCdl+c+memYAH/UwzBTo4=; b=ifGAQCfLI9U++RlTgqOr9iuZb5zcLgIzk5DxJYmJxZEQA9xvhjdui9tfQaugxZlamdvz08tQ2WldQdbXQZ/SQpeL4cKK9Ub8y2tatRTdjdTh1vz7F0Km3ZSV1NKHb0T/1WNcDtipnpcCrWH46EvHXJ8gXu/ZgYjiGLTq0BeZ55E= 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 lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1779298052110684.0550692305978; Wed, 20 May 2026 10:27:32 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wPkeo-00052W-P9; Wed, 20 May 2026 13:24:34 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wPkem-0004uH-OK for qemu-devel@nongnu.org; Wed, 20 May 2026 13:24:32 -0400 Received: from mail-wm1-x32e.google.com ([2a00:1450:4864:20::32e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wPkel-0003hV-4G for qemu-devel@nongnu.org; Wed, 20 May 2026 13:24:32 -0400 Received: by mail-wm1-x32e.google.com with SMTP id 5b1f17b1804b1-488ff90d6c7so40407305e9.2 for ; Wed, 20 May 2026 10:24:30 -0700 (PDT) Received: from localhost.localdomain (88-187-86-199.subs.proxad.net. [88.187.86.199]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-48febe6b60csm203712575e9.6.2026.05.20.10.24.27 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Wed, 20 May 2026 10:24:28 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1779297870; x=1779902670; 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=QR8rmkB59QouyU42X5BEd3gCdl+c+memYAH/UwzBTo4=; b=FUwJMZlXaq31CHmK4ehMVMJLDWrI4D7EIgVpVwN8XA531hKWtiT2wgdBKX0XUiY+LQ 547o3usAFwqlOTNCpg/38BTzeXziHr60P+fBCQ42E8yJqTGfuWa6LuaIsW0DS/G9NeAb 0oxLuTpgb1vvCG4wQfOnh/flIXWmTNkhuJjflwvIsCBKNLD3g3ALu6uG2MvjSEFCyYWk 71Mt1GZh0wHNvPppPoLdsjnCm3JB/DKy55R4sWX+ph0nnM8BYxoOUwKMtwQ7J5A4nLIV XFMLeBf5c7mT0PE24VgV4kYzNRdmRVy8SeXaoenE3t9KWdZd1I9s1O60RtXPjpYxgSeD AIOA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1779297870; x=1779902670; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=QR8rmkB59QouyU42X5BEd3gCdl+c+memYAH/UwzBTo4=; b=TMAFSS5rVnvcuoh56hi8jPX+kq/oaHOZIPRWm4tKPtQpZ0v86nbQ/orDsJ1duCCfex XV+ZYjmQO+TxeEAFuWZdXcYhcEotdVBxpB+dDhuZlyheJoWN6kqpoS45S7V7PFPHHEyc Rba5C+Wcv1tDODn4eO2kQzd6tGR7LYlBJcxeZli99sgyN/jaqanTulOKC0KkG9wp+fPF R0EOX2/w1EoYZ/xXLmEfhXTRGxWatLUTSn0dRazqcUsqT5H7JELquzzGlZO+b+zrXr5v aaZqUtuzpMExJF/HqWNUBpUeo0/8feJ5YSoDiuvzblVbJW23hTFGVIEWE6Ex/ujtRxkB 7NmA== X-Gm-Message-State: AOJu0Yz54UBQydA345S4iwWG/+o5oc+dJmo5acErxsgacome/9wMhb68 jKLZYiEGcPjTfKsIK03nP29LXW5PYZ2rLa8kldPxISHpl571vNsoW36KV2oRVYthI/nXc6ozuKK 6zLmW9wU= X-Gm-Gg: Acq92OFTIi4vOixpQCZAy1bCgS2qrssNUUnCm3sJ+UfHRaoOfhi5F8nfUn+K6+xMcHL M71RFIStEEtyP+Gul34lAbPn24pKEbeHwy54ERblYvSSpGl2nwa/EyCUWS8ZQoDnmVTuufIZ11T mTlwPC+Fj2wfAVQbi/zshjXfifWx1B0J0Gto2hEbZfQPzNNtUzYPh4AHbOX2Yj1PE8hMXlnzyQA wPovJ9tFNrI91V0EyAO0y0lgTV3irjRYZ2Hw/NKHXI3neyF+WZQ7fRdpXNTMD6plL2kjdTivt4t fcGzGlsCWJGY4nEuOOjN2Q0UR7aWzPZo4wsUb9hK7UNAaiWLanqQsNuMmAs+0QMflBCfoJMVLtn uj42KcCv69U1vAPMK/wcclM6dQZivhnCDzqYtQ8Tvn+F/5hBPtnTTbgm1E79jIpceeIOzv4xq+c qnmWkmi4dBmK4ikCGRYUldlf7Q+Ia7dupK51OWy7mzQUYUbaJa0TjKFkPCvS/nk338+eBC8XNpr aLqOeTU/VA= X-Received: by 2002:a05:600c:34d4:b0:48f:e230:c3fa with SMTP id 5b1f17b1804b1-48fe6626a58mr398904255e9.32.1779297869626; Wed, 20 May 2026 10:24:29 -0700 (PDT) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Cc: James Hilliard , Richard Henderson Subject: [PATCH v12 10/24] target/mips: add Octeon LBX instruction Date: Wed, 20 May 2026 19:22:58 +0200 Message-ID: <20260520172313.23777-11-philmd@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260520172313.23777-1-philmd@linaro.org> References: <20260520172313.23777-1-philmd@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=lists1p.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::32e; envelope-from=philmd@linaro.org; helo=mail-wm1-x32e.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: qemu development 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: 1779298054701154100 From: James Hilliard LBX performs an indexed signed byte load from base + index and writes the sign-extended result to rd. Wire the existing indexed-load helper to MO_SB so Octeon user-mode binaries can use the signed byte variant alongside the existing LBUX path. Reviewed-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daud=C3=A9 Signed-off-by: James Hilliard Signed-off-by: Philippe Mathieu-Daud=C3=A9 --- target/mips/tcg/octeon.decode | 1 + target/mips/tcg/octeon_translate.c | 1 + 2 files changed, 2 insertions(+) diff --git a/target/mips/tcg/octeon.decode b/target/mips/tcg/octeon.decode index a2bfd0751d3..efb1a48b38a 100644 --- a/target/mips/tcg/octeon.decode +++ b/target/mips/tcg/octeon.decode @@ -49,4 +49,5 @@ SNEI 011100 rs:5 rt:5 imm:s10 101111 &cmpi LWX 011111 ..... ..... ..... 00000 001010 @lx LHX 011111 ..... ..... ..... 00100 001010 @lx LBUX 011111 ..... ..... ..... 00110 001010 @lx +LBX 011111 ..... ..... ..... 10110 001010 @lx LDX 011111 ..... ..... ..... 01000 001010 @lx diff --git a/target/mips/tcg/octeon_translate.c b/target/mips/tcg/octeon_tr= anslate.c index 5497ddfb108..451737cda1d 100644 --- a/target/mips/tcg/octeon_translate.c +++ b/target/mips/tcg/octeon_translate.c @@ -161,6 +161,7 @@ static bool trans_lx(DisasContext *ctx, arg_lx *a, MemO= p mop) return true; } =20 +TRANS(LBX, trans_lx, MO_SB); TRANS(LBUX, trans_lx, MO_UB); TRANS(LHX, trans_lx, MO_SW); TRANS(LWX, trans_lx, MO_SL); --=20 2.53.0 From nobody Sat May 30 17:44:11 2026 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=1779298078; cv=none; d=zohomail.com; s=zohoarc; b=IOKvJBCm/lSOhPhKELsojh/YcjILxHwKiaQ/4AjYOu8xbylO2lUcWY/d2d8FTaED6S/x9fWIXILmz5EeObDeICc2tYoaPPHNBuOFaz2SrizYd+3K1BTxWvTEaYAWKInM+zGQy55zBvpsjn36uLmOOH/+6SR+niHkaVTURAt3aak= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1779298078; 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=ua3CUzk6DVk3QCHlxp9NqdvtWDqGXb8iHfHM6jORZfc=; b=NWeZQO2v/U35YGjO/HwXRN10lu+xmRRGIn2J813BQJLyhw5iJgfOzlrpnMCFzraXJPXQSRSX5f1C5V3qfbNIbr1zZSc8DM1jTwhbOVFGWguC1s+Xee52WpZj2buyfHmm20AZb6QcDtHThOUhB4PLTLxiQhGdWI1DgsLkr1NXASc= 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 lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1779298078768417.8856335076704; Wed, 20 May 2026 10:27:58 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wPkev-0005IA-I5; Wed, 20 May 2026 13:24:42 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wPkeu-0005Hf-4A for qemu-devel@nongnu.org; Wed, 20 May 2026 13:24:40 -0400 Received: from mail-wm1-x332.google.com ([2a00:1450:4864:20::332]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wPkes-0003i2-Fu for qemu-devel@nongnu.org; Wed, 20 May 2026 13:24:39 -0400 Received: by mail-wm1-x332.google.com with SMTP id 5b1f17b1804b1-488a9033b2cso42447875e9.2 for ; Wed, 20 May 2026 10:24:38 -0700 (PDT) Received: from localhost.localdomain (88-187-86-199.subs.proxad.net. [88.187.86.199]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-48feab290e1sm218239185e9.2.2026.05.20.10.24.35 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Wed, 20 May 2026 10:24:35 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1779297876; x=1779902676; 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=ua3CUzk6DVk3QCHlxp9NqdvtWDqGXb8iHfHM6jORZfc=; b=eLi2u6c6+KUylh9OqDJuy5pafwQJT9YxSzyAOmmXoY7REE3zeVJtFoayP7HkFCTWiz iJIhjRhdOB4Nx0xcm5ds9801OFfaW5dQjBemqzRZZ+hdkOLXV6EYJ93oDUe7szTr5z32 Igu/8Te6WDl7dWftrLB3Jw7+F3AUM5GaJsB9e+LBEixTqx27JULw7lD9R6LfsDF2tRXp ThH4upwWHNDJ2uKcJOjPvj6xmxBVrq8pV4rZT0qB7Co4LSM59L3SrslJ7vxxNms1pVPq AxjPI47s6ceBsu9FDAAImHFijU1+HP9RbfxaHAigQjIsdhQFplxIMUU+wXbh/WrmzHiC 3WkQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1779297876; x=1779902676; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=ua3CUzk6DVk3QCHlxp9NqdvtWDqGXb8iHfHM6jORZfc=; b=WbTd1g2hKBZd6ydYCxe5DWdWidohZmfez0V4dKMGKy6g59JD5NOdW9i4E+o/ejNoJE GaHFrFog/zOTS4kelT/XWOt2pkmBYPHkdk26mzF+vlQle15A24puEBhv/FVsCKhBsccg uEqlaRktFbAN+LvSbDj7jSUvIHzMSkUsf/Gce3i92to5Tz9G5D7ExQhaVhleN0mR0otE ZJYbpqo5ifhSwNrD9Yznwrg8OePoVscbatxKJYmxaAyI0DVEmA1p9TjwQiNVbEmqDH/N T0QvUcC3p519E/HkNxoZ1ZACBJoeZXuJJf+jXDZdOTSun9s2aUezTK6y34PUEC8AdrOB DdhA== X-Gm-Message-State: AOJu0Yw6Z/G11JJc03NgJnCs7uRIaNcgyzh29sVuGGVB1lAP9XnF3jih mR5I3Ww9IbtB+GWwT9JpGszZlRPcmYnfz3cZftoFbMYuhp+UgwGPMS5xIUlSLMwpup402uadK/8 Ffr+hr2s= X-Gm-Gg: Acq92OHerfTYVN8IDnMMlmzGusX2pAPues13fMT9p2Hdl50VOSiux55i9xE22SMhVc+ 4CQqeg6IjtcFkqBVvETDhZrco55YWfd5tNF8zqxH4JF3XjMuOcLsuFGp1YRltbmdxaNe0aKie3f LYbUgqNW5fV5UklsTmWDCBg+7OzEsSWzq1bHupms+znfiIhXCy2BjG3RyQKdnBWutsGdHFFZ4Rj jsqdI6NMd3ZJ5fO2IqU0nkY4FhH9aJj45uqLwqLDaLOPST/oo8n+f1ArQffqqOLwjCQuAf3KSZ+ c5LLUhO45vsmy7D3tXikuNkZpNB6rMEED+4kxMolnGlJE9eluAfoOxTvcX9gV2v9E3RKqp43R4Z YdWhJ7JfwQZTEa07p2+A0XkfWItWgkaaHX7l7OvmNu6qy6TpkxkezgNpze/ddxCjHa3gQOxdI8u Jr4GDdXdquOMoW09FuEkiN49vpmvFHLeMLhf8ODSC6d7HuKHEI0b8QreAK3GMnoVa75Nq2SQY3N G8iWqAJsXU= X-Received: by 2002:a05:600d:8496:10b0:48f:eb8b:9980 with SMTP id 5b1f17b1804b1-48feb8b9ademr247620605e9.30.1779297876527; Wed, 20 May 2026 10:24:36 -0700 (PDT) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Cc: James Hilliard , Richard Henderson Subject: [PATCH v12 11/24] target/mips: add Octeon LHUX instruction Date: Wed, 20 May 2026 19:22:59 +0200 Message-ID: <20260520172313.23777-12-philmd@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260520172313.23777-1-philmd@linaro.org> References: <20260520172313.23777-1-philmd@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=lists1p.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::332; envelope-from=philmd@linaro.org; helo=mail-wm1-x332.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: qemu development 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: 1779298081268154100 From: James Hilliard LHUX performs an indexed unsigned halfword load from base + index and zero-extends the result into rd. Add the decode entry and reuse the common indexed-load translator with MO_UW. Reviewed-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daud=C3=A9 Signed-off-by: James Hilliard Signed-off-by: Philippe Mathieu-Daud=C3=A9 --- target/mips/tcg/octeon.decode | 1 + target/mips/tcg/octeon_translate.c | 1 + 2 files changed, 2 insertions(+) diff --git a/target/mips/tcg/octeon.decode b/target/mips/tcg/octeon.decode index efb1a48b38a..8a755075e8e 100644 --- a/target/mips/tcg/octeon.decode +++ b/target/mips/tcg/octeon.decode @@ -48,6 +48,7 @@ SNEI 011100 rs:5 rt:5 imm:s10 101111 &cmpi @lx ...... base:5 index:5 rd:5 ...... ..... &lx LWX 011111 ..... ..... ..... 00000 001010 @lx LHX 011111 ..... ..... ..... 00100 001010 @lx +LHUX 011111 ..... ..... ..... 10100 001010 @lx LBUX 011111 ..... ..... ..... 00110 001010 @lx LBX 011111 ..... ..... ..... 10110 001010 @lx LDX 011111 ..... ..... ..... 01000 001010 @lx diff --git a/target/mips/tcg/octeon_translate.c b/target/mips/tcg/octeon_tr= anslate.c index 451737cda1d..f897b42807b 100644 --- a/target/mips/tcg/octeon_translate.c +++ b/target/mips/tcg/octeon_translate.c @@ -164,5 +164,6 @@ static bool trans_lx(DisasContext *ctx, arg_lx *a, MemO= p mop) TRANS(LBX, trans_lx, MO_SB); TRANS(LBUX, trans_lx, MO_UB); TRANS(LHX, trans_lx, MO_SW); +TRANS(LHUX, trans_lx, MO_UW); TRANS(LWX, trans_lx, MO_SL); TRANS(LDX, trans_lx, MO_UQ); --=20 2.53.0 From nobody Sat May 30 17:44:11 2026 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=1779298066; cv=none; d=zohomail.com; s=zohoarc; b=jzRk5Sfi9j2mB9bjdCQH/eVUhadbMQ/earWDVlIf7Gba++Ujnd5pC0CLVDHDClr7Vi3EEDLB80KK8MO71EpbQ2e3eXp52nnbAaLQ0YkVLQJnVdHVPx9kDSJ16pJBbV418ZMtOm6WFLaczt7nzBCRoQ4yZbfnpaI/+LGmn6kot5I= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1779298066; 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=xj4LscJe5qbbyCvumcZkKMp4Wyep599tHoKrYhpUv9c=; b=IJnoljjWJKPkkvI17b9s+LSSUI//N/h2KYC2hZy/ioGjTts/8T4rzqFldomkkldpqE6z+dOeQ4LeUy4fdfqvzfZLAcc++JZ4FK3LsQLXFXHeuri5d5NOrsNgqxA3LtMWqrAVHrD2tqyF6WyBVyhTeEjA0ef8rsFNdwc8+34cP9s= 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 lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 17792980669831003.1457820499719; Wed, 20 May 2026 10:27:46 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wPkfT-0005UG-0Q; Wed, 20 May 2026 13:25:19 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wPkf6-0005Nk-3V for qemu-devel@nongnu.org; Wed, 20 May 2026 13:24:53 -0400 Received: from mail-wr1-x42b.google.com ([2a00:1450:4864:20::42b]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wPkez-0003q1-J4 for qemu-devel@nongnu.org; Wed, 20 May 2026 13:24:47 -0400 Received: by mail-wr1-x42b.google.com with SMTP id ffacd0b85a97d-43d734223e4so3423390f8f.0 for ; Wed, 20 May 2026 10:24:45 -0700 (PDT) Received: from localhost.localdomain (88-187-86-199.subs.proxad.net. [88.187.86.199]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-45da15a562dsm56505130f8f.33.2026.05.20.10.24.42 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Wed, 20 May 2026 10:24:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1779297883; x=1779902683; 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=xj4LscJe5qbbyCvumcZkKMp4Wyep599tHoKrYhpUv9c=; b=bTZxUB2cPVp6dPyugYl5H8QNtlenHSqJ2nNJvguC3uTKuYrHnpAWF9S5KgdbRzdAh4 q4QNGJCmF6s4qReqG3SbbAA927xmu5oLPgpF9RDMnFpGrkcohu2LvrwOK/GZJ3HLhiAL zmMBcH6RnMg551vb7kbsGtFtj41zsxS/1hwIgftxQdBkeNPXEs2Hb4duSq7xTvvBwlm5 Y/8rKMVIe7e/LqOvlMBbjt0vnx4WijYuqnrigt46R0xpPnHpNL2KIBFr/u/9sjzDxwNT 3WEp8wNDurCbs9tS8S7fkgByOz7K/OBZ+6aUePrqsViEGJBJ+l7JVZ82VFb+a0Avblk8 oM6Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1779297883; x=1779902683; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=xj4LscJe5qbbyCvumcZkKMp4Wyep599tHoKrYhpUv9c=; b=s5TPNM8uyjB9eeB9QgjkNWqvQ/cJnoRzNtFUCxVarx+xqyoz+vnPHOnQF3xniaXFjY MaUD73HbxYvYEFs5F2LzEHPNffWA/px7yIN5GN9/AEq4yuBgI5y1rh5NoUzM+eYvaapl BmJpBXAysPG818NPAQmjl0Firrn9ct+eLF9agUYiNDuSIoMExA6rf6HlGsPC7GPbiOdK L1/fxtStWvdRG1b5gIxT5qTXr0uhuycnsyS3YbAjGXW/D6iswOQ9JR8eZptN7L1WiiEQ lW9et4sVED/qGiBdPRXSOm6MsReMihZMEG8KvzAYaHzyc5b4YyJTKqyQ8Y0Npj21ca23 3tRA== X-Gm-Message-State: AOJu0YxlnMJFxH/MCdctPvf7cIJkhD/38i/oWnI8p5rzq9tmkE8ivBj8 EwqMxbv/CiX+WhdmxWzzKvZ0190R1QP0rGbtJp7ncq47jvtG3xUm3tZX2yG1NoWZ3W6sCIDrEe2 VSbmvXVY= X-Gm-Gg: Acq92OGsdgl+CQdcldL955Os6Hi9U4NNaqsN7zdcihy6+qqhbeWhVY2CEFrKlby0GjI F+g/CjX37DNjkkkSHNfs/4PGdMIgckAKJd4pD//d1lyaNY8stWV2JICj+42ytm0Upv/leZEsuou XN2TO3oSkW7CbFyT0Pm4oOPJEue8mxN+iwxRtwBhtyTSDnLpDYtFZ73GrCQDtHoIdxDNiQNkL45 tBIyE6QXMJj662cV7p7TEvRYZ0ki5D2OBFA7YtZmLMluRlAjJ+APp2jBFaL8fPrUFaAMB4cPXjj GibrIrFUWEdYu3sMcjkyXbt0Z/maJsUAHUSMX62IPv8wZ+KytmqTROMgtmx9vuBmEKfSlyerIor 2h6ieyeo3L/R2v5nO28p3SAtteFv+4WWhj5TwkUVlcTXAi9oTB2BMqwtpoTwl23YKw9rUICVIWI bdIaoDB7XoXK4A0xCLDAh4pB5FJmgMSm5Am+1ykCu995PwwOQwwt9PNDOrnctV5rftRC9SlHT1 X-Received: by 2002:a5d:5d86:0:b0:453:dc4d:9265 with SMTP id ffacd0b85a97d-45ea0b1c8fdmr763945f8f.10.1779297883518; Wed, 20 May 2026 10:24:43 -0700 (PDT) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Cc: James Hilliard , Richard Henderson Subject: [PATCH v12 12/24] target/mips: add Octeon LWUX instruction Date: Wed, 20 May 2026 19:23:00 +0200 Message-ID: <20260520172313.23777-13-philmd@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260520172313.23777-1-philmd@linaro.org> References: <20260520172313.23777-1-philmd@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=lists1p.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::42b; envelope-from=philmd@linaro.org; helo=mail-wr1-x42b.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: qemu development 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: 1779298069004154100 From: James Hilliard LWUX performs an indexed unsigned word load from base + index and zero-extends the result into rd. Add the decode entry and route it through the common indexed-load translator with MO_UL. Reviewed-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daud=C3=A9 Signed-off-by: James Hilliard Signed-off-by: Philippe Mathieu-Daud=C3=A9 --- target/mips/tcg/octeon.decode | 1 + target/mips/tcg/octeon_translate.c | 1 + 2 files changed, 2 insertions(+) diff --git a/target/mips/tcg/octeon.decode b/target/mips/tcg/octeon.decode index 8a755075e8e..db7d5f55f0a 100644 --- a/target/mips/tcg/octeon.decode +++ b/target/mips/tcg/octeon.decode @@ -50,5 +50,6 @@ LWX 011111 ..... ..... ..... 00000 001010 @lx LHX 011111 ..... ..... ..... 00100 001010 @lx LHUX 011111 ..... ..... ..... 10100 001010 @lx LBUX 011111 ..... ..... ..... 00110 001010 @lx +LWUX 011111 ..... ..... ..... 10000 001010 @lx LBX 011111 ..... ..... ..... 10110 001010 @lx LDX 011111 ..... ..... ..... 01000 001010 @lx diff --git a/target/mips/tcg/octeon_translate.c b/target/mips/tcg/octeon_tr= anslate.c index f897b42807b..401c4bd14bb 100644 --- a/target/mips/tcg/octeon_translate.c +++ b/target/mips/tcg/octeon_translate.c @@ -166,4 +166,5 @@ TRANS(LBUX, trans_lx, MO_UB); TRANS(LHX, trans_lx, MO_SW); TRANS(LHUX, trans_lx, MO_UW); TRANS(LWX, trans_lx, MO_SL); +TRANS(LWUX, trans_lx, MO_UL); TRANS(LDX, trans_lx, MO_UQ); --=20 2.53.0 From nobody Sat May 30 17:44:11 2026 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=1779298090; cv=none; d=zohomail.com; s=zohoarc; b=QSPibRcHpw2wpKjBbszfJ1ptsjmy8AXZCRISBSZgvkt91P+GW3U+LtGFyUlJj/XbwAV/gQ2YW+0N8GN34qo6/Wbrqw2hvpsQBEJT/GwgcDgoYFXtep/hymAF1zKfvoed/qELPakq+ubk6JyXKXXQnqT8JqrxIN36Xkkmv0J1psY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1779298090; 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=yJRK+fSA/YRc7Rps9zj3R+rtt3hX6PX40ovNPoweyOA=; b=FLzLA2tc+s/19HHuj/JmmPyw2kV5db8nuE4bZYc1h8O817KwSa3ygE+Fh5GX6IyGe1oKzxr95c6Xh8C4m/soDQA5zehahyug3gVz3py+p54wOFHcKK3dIjAmukCF/ZMydQT9MvmeJbnjvIoiTGecvrtrezn2VyzhFkSSNfnB0A0= 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 lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1779298090050195.4657289357857; Wed, 20 May 2026 10:28:10 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wPkg8-0006T1-6A; Wed, 20 May 2026 13:25:56 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wPkfB-0005OU-MU for qemu-devel@nongnu.org; Wed, 20 May 2026 13:25:03 -0400 Received: from mail-wm1-x335.google.com ([2a00:1450:4864:20::335]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wPkf7-0003vd-Cl for qemu-devel@nongnu.org; Wed, 20 May 2026 13:24:56 -0400 Received: by mail-wm1-x335.google.com with SMTP id 5b1f17b1804b1-48ff4f8ef0dso57419645e9.3 for ; Wed, 20 May 2026 10:24:52 -0700 (PDT) Received: from localhost.localdomain (88-187-86-199.subs.proxad.net. [88.187.86.199]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-49033d3f99csm10752625e9.6.2026.05.20.10.24.49 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Wed, 20 May 2026 10:24:49 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1779297890; x=1779902690; 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=yJRK+fSA/YRc7Rps9zj3R+rtt3hX6PX40ovNPoweyOA=; b=AKb5wqwupRJTVWQdJGtjBn+wEherUoHJPbCaF2BZjHZY4XvgbBHFYSC66SqV7DPwAt c8UMnVlfehHigr6pZ92zXPZB7KMaLiAoNiukJDsO2dPjnLnPQVK1alIQXohKyBjoF+rO BnuM1PC/63AEgyo9LdLaiXtwfpfViFeUQPH/6887ZpOqdJP3Ezs2NPsnN0o7Y7yDXZdA qXkpVlCeOzRVRFdKw9L3tLza5zkQRfLBTLp7eM+o+EAHz/yfoeImS6i1IBdbDEb2YblI QODQaGd4tGW1eK0meD4iWbyyuM9Q2SUXZKpfMH/BB5jxFosxqvUFEBC9Cb1AG/w8SqQi qHEQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1779297890; x=1779902690; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=yJRK+fSA/YRc7Rps9zj3R+rtt3hX6PX40ovNPoweyOA=; b=r/JBH9GSaH2tQG4gP6VdXjMlJ6Rpn1a64xiJx1bqLBXYEd9niP4igSlPesTmGGVi4L uDIYmw/mxIgRVzyBOoeyBlBy+2t34Wvaqg5OAuB1qwr0cxBoAp0LWrNQS5OOp5xZUWrv YuIpJOqy5s1FmaCZQEQHgYredjk0wMi+fzz7qpzwsiRhXQsShHuJ52GuOAAd3QLFdBit KDbg38kNmxc+aia/uy/PH+7wUb4ZtiF6EbGuzuoFDwXRz5OJrKwcc0SKdTHc2LOFFC5o Mp1q/UpBtYOz5ksliT2lOHpEHfgL/hj9tUI+9u8CjivF8uRfrDbyucHDPWAXsEcbnxKJ Nm4w== X-Gm-Message-State: AOJu0YyLC97p161ro6e1QCpbaREfNNrkWPg8pgIEsUdOgLr8qaVhX7ir cinH+g9OjDux6cEg7mp0+6reROPKQ0iMceBOw+wG8TuYdsFMImitMpu4rfa7eu57dH75w+KTfit 1Dsib6r4= X-Gm-Gg: Acq92OFr2bjKW31En/xmFKWWnw8rWcP3noDdYgAx8nsfFbYD4VAfgdSyF66XGtg27mq 6yA+45i+RErYoJcvdd9Dr0CH59ojryhT6Jl22woaWcKXCyFxwkFN3BGH5gUHN+ZLamJLv26QueX eHD40M90+3SahYKG2WKT+6hpgi4q98YFDCwssgPI7eCuS1o3MBoISDPeUOEF1E085Mw5MHgT8wZ 06yYg8FcC2iw50rMkbhj/TQpNSMKlrJjHOpcyF3rHVbR2KrMuburExDmF9Dmz40tuylzxdoJNZO ProboikVfAm0Qe+BOB5pEvpnISIxrpY3LeVHp/D5pPkj6sNZrF08hyi+0IUWPmuRyZnw/0DQV7U PbKh/L2Yl4hhkswDhye4YEoOodr9jHEx98kkxaChu5wppl/3YyaUc5apQ+v6M416QGQwxnld6Hg 2yWtBeV1cKKrsAGrkqDfiV2KyRvDDcfYXMnLZuuu2TuQ9152WlnqqaDZw9Uu+h6cYiQHjwn8Wl X-Received: by 2002:a05:600c:1f89:b0:48e:526e:101a with SMTP id 5b1f17b1804b1-48fe60e7a13mr370256405e9.12.1779297890605; Wed, 20 May 2026 10:24:50 -0700 (PDT) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Cc: James Hilliard , Richard Henderson Subject: [PATCH v12 13/24] target/mips: add Octeon SAA instruction Date: Wed, 20 May 2026 19:23:01 +0200 Message-ID: <20260520172313.23777-14-philmd@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260520172313.23777-1-philmd@linaro.org> References: <20260520172313.23777-1-philmd@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=lists1p.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::335; envelope-from=philmd@linaro.org; helo=mail-wm1-x335.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: qemu development 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: 1779298091558154100 From: James Hilliard SAA atomically adds rt to the naturally aligned 32-bit word at base and discards the old memory value. Implement the common SAA/SAAD translator with TCG atomic_fetch_add_i64. The MemOp selects the word or doubleword transaction size. QEMU only has one Octeon CPU model today, so keep SAA/SAAD under the existing Octeon instruction feature bucket instead of adding a finer-grained Octeon+ feature bit. Reviewed-by: Richard Henderson Signed-off-by: James Hilliard Reviewed-by: Philippe Mathieu-Daud=C3=A9 Signed-off-by: Philippe Mathieu-Daud=C3=A9 --- target/mips/tcg/octeon.decode | 4 ++++ target/mips/tcg/octeon_translate.c | 15 +++++++++++++++ 2 files changed, 19 insertions(+) diff --git a/target/mips/tcg/octeon.decode b/target/mips/tcg/octeon.decode index db7d5f55f0a..d6b241de421 100644 --- a/target/mips/tcg/octeon.decode +++ b/target/mips/tcg/octeon.decode @@ -44,6 +44,10 @@ SNE 011100 ..... ..... ..... 00000 101011 @r3 SEQI 011100 rs:5 rt:5 imm:s10 101110 &cmpi SNEI 011100 rs:5 rt:5 imm:s10 101111 &cmpi =20 +&saa base rt +@saa ...... base:5 rt:5 ................ &saa +SAA 011100 ..... ..... 00000 00000 011000 @saa + &lx base index rd @lx ...... base:5 index:5 rd:5 ...... ..... &lx LWX 011111 ..... ..... ..... 00000 001010 @lx diff --git a/target/mips/tcg/octeon_translate.c b/target/mips/tcg/octeon_tr= anslate.c index 401c4bd14bb..33b45611f20 100644 --- a/target/mips/tcg/octeon_translate.c +++ b/target/mips/tcg/octeon_translate.c @@ -168,3 +168,18 @@ TRANS(LHUX, trans_lx, MO_UW); TRANS(LWX, trans_lx, MO_SL); TRANS(LWUX, trans_lx, MO_UL); TRANS(LDX, trans_lx, MO_UQ); + +static bool trans_saa(DisasContext *ctx, arg_saa *a, MemOp mop) +{ + TCGv_i64 addr =3D tcg_temp_new_i64(); + TCGv_i64 value =3D tcg_temp_new_i64(); + TCGv_i64 old =3D tcg_temp_new_i64(); + MemOp amo =3D mo_endian(ctx) | mop | MO_ALIGN; + + gen_base_offset_addr(ctx, addr, a->base, 0); + gen_load_gpr(value, a->rt); + tcg_gen_atomic_fetch_add_i64(old, addr, value, ctx->mem_idx, amo); + return true; +} + +TRANS(SAA, trans_saa, MO_32); --=20 2.53.0 From nobody Sat May 30 17:44:11 2026 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=1779298039; cv=none; d=zohomail.com; s=zohoarc; b=hdIBoQMoBwJcoROKzIl+GPhOCOviL7XZk2IRVzzJRNPlgXmB2OvwUZgWJpIKy8dq46ndwiq0XJIA+4HXOIPU0M1Qji5RYzxmXWW9NwQqxyTucc19NVKn0MFFKHNSCj3hxjKP0XtqjgPJsfH42GPzgWwJJ4nbSpfDcgyemCUL+64= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1779298039; 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=J+grgVQ1tl9w2OeEn6YWxvhx5A0/R4CBcF6vOOesoEM=; b=cNnASGoiwAlKlkjWXvBIuDle8AEVALb7dBo39N8r//FhpcUUJFR1eHmEs/8AIP4NkiEet1oJTqZcWgVia+LIr+tznU5SvjpCOcjPeIm9NNUMGC78KdIvnx4+7cr9TlGzL+IlCG9u1/YvbKLoRX9dtW5lbFbKMkgAu7AEdcyI+L0= 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 lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1779298039922765.3813049806552; Wed, 20 May 2026 10:27:19 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wPkfw-000637-Jx; Wed, 20 May 2026 13:25:44 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wPkfI-0005Qe-O5 for qemu-devel@nongnu.org; Wed, 20 May 2026 13:25:05 -0400 Received: from mail-wm1-x336.google.com ([2a00:1450:4864:20::336]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wPkfH-0003xw-5p for qemu-devel@nongnu.org; Wed, 20 May 2026 13:25:04 -0400 Received: by mail-wm1-x336.google.com with SMTP id 5b1f17b1804b1-488b0e1b870so74914115e9.2 for ; Wed, 20 May 2026 10:25:01 -0700 (PDT) Received: from localhost.localdomain (88-187-86-199.subs.proxad.net. [88.187.86.199]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-49033d9eca8sm4920255e9.12.2026.05.20.10.24.56 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Wed, 20 May 2026 10:24:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1779297900; x=1779902700; 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=J+grgVQ1tl9w2OeEn6YWxvhx5A0/R4CBcF6vOOesoEM=; b=VP+JDl678BOOEQvGTeN0G5LqEJPVNBEEbCQEt8fZeD5X9atvXrFkDyrXgbxPTqHCaI yFAq1Td4dVZd334l/lnBm2TP/u28B2uBdgLa8oKTfFEZh/QIwcucs2kPNV6gQu+b1RDv OpVoA2qzrES4OmGlICq/jljuwLwmd2Iy8xQfgEQ+tEr8FnryyaWtokkpiASCGjhsOFGT BpTosDt5nyAd/I5vFUx979z5XxLu9OoDe4QyUhiY7LOCG5c3Ye4aIYmfIkRSMbj04tFI lCi52NO+Qik6XreBjHDdBngGccqL2WHwnqCnW0HZzvafxosA15bsYxlaaPRiv673AoHD KS4Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1779297900; x=1779902700; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=J+grgVQ1tl9w2OeEn6YWxvhx5A0/R4CBcF6vOOesoEM=; b=r+ft9vmSVm4N9Wt4IxdUE0RrvK7UBRvxdFu+D0128ibBbhvwS+2VaP8ovvoNufmhK+ T+DjL3gICR50MrOvcK4TqTTIq62YiZ4vXmrfmnZG7wLp6TDPj1T+Zdk1HygQFDfwEnhA peaMmWzRDvCUDCXPwqDRSXnnhY8uOtDLvIJpbbUi7UgAsapNToaolOxhMFgf0/9apsXL jv9WH9m62m/ZRR0R73b8x/pEmXk6/mwEEoVGcccQFjBEtxGhe/OZzp4fmuHoe05Kminv UxT79CxyGwNZBC9rp+5xde/Xab6UEqesbvk3BBExC9SSxF/O3FQXPriNyYmgJYJkhCX2 +8AA== X-Gm-Message-State: AOJu0YyxEBX0quRaSld7veHarKhDJCGZtzSntsi7ToIUnXa5fxP1jAEg PiGtx2uPgRRw4KQZF2Ovq7sgwbdASwkgdAqO5nkVAj4wFNwXvEW3FVJdjBSBr+3rrIOMvsKXTpa JdsyxkSc= X-Gm-Gg: Acq92OGNFau6rTpb3O1lYbnLQTZZGk2crf3KeL0lqmKLFs+K/ohi26NTT3OXhz4xsbq yE4WS2GPp0iAgMVSBwyIoOnom1G8ZiXCHHKZFzSj/b/g4wIFJVpNAE4KVkCkIPtSlgDJBOx9/k0 HhuiziF+K9OrpKopSRYyd10HSl/h8Vx7olRIARwRQfhBU7MNRdLAdruvHOcHYQjiIVkDK4zrJeN neCLtMqrGUIBFLC5RJla4nd6mjIAQKGtUVSrPpfufozGUjK9cdaYMuZjeluq3BzwiRoWXti+4yl fkWHD1khB/ewk70pn8OXoefQJ3vPSo7j7S5g/AKmIrlyq3PftxfqVDdI1CNRNqvufavEvTKXkRK aFNuNsP44wIjoaKbmODmmIYstyFQVpOtmkuHSWXcHRTjD6a/ZeUP/ba340oHXbQu+4zHR5kCNMI qahL6icohBSXBeyTNYRRRX0sjXuF6kk/jYpA4xRdvgIUt/LNlpYYFvB5U9qx/amz2fL9U9/WYb X-Received: by 2002:a05:600c:4692:b0:485:4eaf:eb53 with SMTP id 5b1f17b1804b1-48fe632661bmr404731035e9.19.1779297899950; Wed, 20 May 2026 10:24:59 -0700 (PDT) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Cc: James Hilliard , Richard Henderson Subject: [PATCH v12 14/24] target/mips: add Octeon SAAD instruction Date: Wed, 20 May 2026 19:23:02 +0200 Message-ID: <20260520172313.23777-15-philmd@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260520172313.23777-1-philmd@linaro.org> References: <20260520172313.23777-1-philmd@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=lists1p.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::336; envelope-from=philmd@linaro.org; helo=mail-wm1-x336.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: qemu development 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: 1779298042215158500 From: James Hilliard SAAD is the doubleword form of SAA: it atomically adds rt to the naturally aligned 64-bit doubleword at base and discards the old memory value. Route it through the common SAA/SAAD translator so the MemOp selects the aligned doubleword transaction size. Reviewed-by: Richard Henderson Signed-off-by: James Hilliard Reviewed-by: Philippe Mathieu-Daud=C3=A9 Signed-off-by: Philippe Mathieu-Daud=C3=A9 --- target/mips/tcg/octeon.decode | 1 + target/mips/tcg/octeon_translate.c | 1 + 2 files changed, 2 insertions(+) diff --git a/target/mips/tcg/octeon.decode b/target/mips/tcg/octeon.decode index d6b241de421..d77717cd507 100644 --- a/target/mips/tcg/octeon.decode +++ b/target/mips/tcg/octeon.decode @@ -47,6 +47,7 @@ SNEI 011100 rs:5 rt:5 imm:s10 101111 &cmpi &saa base rt @saa ...... base:5 rt:5 ................ &saa SAA 011100 ..... ..... 00000 00000 011000 @saa +SAAD 011100 ..... ..... 00000 00000 011001 @saa =20 &lx base index rd @lx ...... base:5 index:5 rd:5 ...... ..... &lx diff --git a/target/mips/tcg/octeon_translate.c b/target/mips/tcg/octeon_tr= anslate.c index 33b45611f20..23748695a14 100644 --- a/target/mips/tcg/octeon_translate.c +++ b/target/mips/tcg/octeon_translate.c @@ -183,3 +183,4 @@ static bool trans_saa(DisasContext *ctx, arg_saa *a, Me= mOp mop) } =20 TRANS(SAA, trans_saa, MO_32); +TRANS(SAAD, trans_saa, MO_64); --=20 2.53.0 From nobody Sat May 30 17:44:11 2026 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=1779297988; cv=none; d=zohomail.com; s=zohoarc; b=bsfo20pU1jArrhXqFQt+OjUTgOwwmiyA2lqJ9i6HjlDBhI9IobRWjfFEz4QdkcC+f0UHOLXqek4RAhRSQNtMlgyL9l234lUqGTiGEGu/AmZSjhOC6vaWIm1WZKBmZ51u1M3lj24AieZtRpe1klgROUqdTSMHYbQPOKOjtwCmc20= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1779297988; 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=BlLILJuNVzFhKiWonsN2HjkYb3yN+UaikzR8tXjAlhg=; b=cLnH3SE1Cq3a28rYTDnVA2IMKxo6Di/E330KYpFemSmdowsYAUhOJicLS2CmljwS96nWyZBxtnueWazrrQqyrDhVNVmMgHhpXt0RRAkhDsoEMo6QcNQqyFUnOvzsZOU4hwIVv0VQ6dYTdpdoB2sJMIuTH0bYhNWtm2NmHwZZ+aM= 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 lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1779297988853219.06301706975057; Wed, 20 May 2026 10:26:28 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wPkg1-000674-4c; Wed, 20 May 2026 13:25:49 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wPkfP-0005Up-AP for qemu-devel@nongnu.org; Wed, 20 May 2026 13:25:12 -0400 Received: from mail-wr1-x429.google.com ([2a00:1450: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 1wPkfN-0003z5-J5 for qemu-devel@nongnu.org; Wed, 20 May 2026 13:25:11 -0400 Received: by mail-wr1-x429.google.com with SMTP id ffacd0b85a97d-43fe608cb92so3240597f8f.2 for ; Wed, 20 May 2026 10:25:09 -0700 (PDT) Received: from localhost.localdomain (88-187-86-199.subs.proxad.net. [88.187.86.199]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-45da0a19b1dsm55057086f8f.17.2026.05.20.10.25.05 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Wed, 20 May 2026 10:25:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1779297907; x=1779902707; 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=BlLILJuNVzFhKiWonsN2HjkYb3yN+UaikzR8tXjAlhg=; b=dzaInAGyon/ByKnrPK6OGgIRl2hoFZ10RgvkuMJB57v0hdDaoj+g3X7uKq4BYcak5w gzhpv2Djl9GgTgr06rUoY9nJdMRZceP/VDkuIiSyHvtTkm4czDbLEpHWCi6vCPxsGvIU trHg5UiYNMx5YX0wQuR6meQfDA1Zy1rVPWxmlSgCQadpU2NoBSU2HFQdZ3TWUgnoJ1ax 1eswROTlfj8qKdUD8DWmf1oMlhjfJ4tjsi+Dkd55od5yrBkNYKu5TNhMrXU3Ue4JN0pQ X2Q2J6shAMEiYGf74YfntT8sYD3+YBejhmL2wBYDm4pBUIALK2YfugcETBNTkN04cKkW UFdg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1779297907; x=1779902707; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=BlLILJuNVzFhKiWonsN2HjkYb3yN+UaikzR8tXjAlhg=; b=X2lb1XV/fX0kbH9JBA5/+rQ4BJVGFYMPqE3L61UPkB2i1J1VfZwn+oyxvXOquSTbVS 836WRPxx/nYg9K7emm+W6FfUFQpwqMgQlBJmuK+Pef/GmFQjw6iu+R5SyGNqv5f/p9hl 3obQ5yRwmQu+KTHEh8/berKIPixgqpDgKNce1kSORKsHuMVw9emzjSwEV8z6pANr/dB5 pmb8XczitFwVf8Z1dm11jJY3b0cLW9X7sPnmTWFbkrbld7F+YiDbJRUWH2IziKjNO8Uu IghLvEM5naUbiFPzJ5nllhz2A0iO40Sx73/rjmxlIU8koXKOQ27kXqXN3rkiMJOx8iVe Tclg== X-Gm-Message-State: AOJu0YzeHCqJJdKO8KhcmZQ+/PPz8ptDcyiHGYoix7TPNoVvoxG8FL98 reQJ5gZhEkq90kvPbkPVuux9BSBOX72UU/+6IHrEqvwkN56/bw5ZSr3ytixO2dDK2IXqsj/2bnd nPd72s/g= X-Gm-Gg: Acq92OH7prBwr+2gZ+ZCoLvVAdk0rSSOdZuZbm4NeUPkiXYzMyPL7rw8katIdmQte8Q 6MpwWfilDbFcb1swk//2/AUN/DtjsSFts+ZHsghKp3G+x4E85JC4hFwYZeAUpydMn+ZK9k4lfOl pufOH3BiIQdCft506OxrNlOv/9Uwm6rT0uwcIE8HOqeX3VtRjLS7zuFLYJeBQB4+zzXz7JRqhAo qXAhmD3o4imbaH7dxdp7zFqfFWqPAm9E/NWaNSk79/3vXe6JMugG8iRdDDeVud3MaxvzqOE7WAQ xfx9KHGgofTPtPWstTsHE7BbcfnajqJaNfjH57DH0kJ1nJDHwkXxEQooD/MlusufhCNu5Z25v6T hVTVBNySag4SBzgdZwFBxBqbjil6+emJcx4hm6ktmfldD7ONp7bWUELz3BUpD8QdlvthHeoH0LY h2M8dV/ToZ8q8/A5QVWl49rIMSFPT4w2cSY4ubxKkZTPt+Kv2kxXjTvMGb0MtGQNFZNxStXuzu X-Received: by 2002:a5d:5f44:0:b0:45d:3a84:709c with SMTP id ffacd0b85a97d-45e5c5ccac2mr40385971f8f.31.1779297906823; Wed, 20 May 2026 10:25:06 -0700 (PDT) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Cc: James Hilliard , Richard Henderson Subject: [PATCH v12 15/24] target/mips: add Octeon ZCB and ZCBT instructions Date: Wed, 20 May 2026 19:23:03 +0200 Message-ID: <20260520172313.23777-16-philmd@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260520172313.23777-1-philmd@linaro.org> References: <20260520172313.23777-1-philmd@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=lists1p.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::429; envelope-from=philmd@linaro.org; helo=mail-wr1-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: qemu development 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: 1779297989586154100 From: James Hilliard ZCB zeros the 128-byte cache block containing the base address. ZCBT has the same user-mode-visible memory effect for QEMU purposes. Model both forms with a single decodetree wildcard entry, align the address down to a 128-byte line, and store eight zero 128-bit chunks to guest memory. Acked-by: Richard Henderson Signed-off-by: James Hilliard Signed-off-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- target/mips/tcg/octeon.decode | 3 +++ target/mips/tcg/octeon_translate.c | 25 +++++++++++++++++++++++++ 2 files changed, 28 insertions(+) diff --git a/target/mips/tcg/octeon.decode b/target/mips/tcg/octeon.decode index d77717cd507..01ed3b50beb 100644 --- a/target/mips/tcg/octeon.decode +++ b/target/mips/tcg/octeon.decode @@ -49,6 +49,9 @@ SNEI 011100 rs:5 rt:5 imm:s10 101111 &cmpi SAA 011100 ..... ..... 00000 00000 011000 @saa SAAD 011100 ..... ..... 00000 00000 011001 @saa =20 +&zcb base +ZCB 011100 base:5 00000 00000 1110- 011111 &zcb + &lx base index rd @lx ...... base:5 index:5 rd:5 ...... ..... &lx LWX 011111 ..... ..... ..... 00000 001010 @lx diff --git a/target/mips/tcg/octeon_translate.c b/target/mips/tcg/octeon_tr= anslate.c index 23748695a14..5392fed08a8 100644 --- a/target/mips/tcg/octeon_translate.c +++ b/target/mips/tcg/octeon_translate.c @@ -184,3 +184,28 @@ static bool trans_saa(DisasContext *ctx, arg_saa *a, M= emOp mop) =20 TRANS(SAA, trans_saa, MO_32); TRANS(SAAD, trans_saa, MO_64); + +static bool trans_ZCB(DisasContext *ctx, arg_ZCB *a) +{ + TCGv_i64 addr =3D tcg_temp_new_i64(); + TCGv_i64 line =3D tcg_temp_new_i64(); + TCGv_i128 zero128 =3D tcg_zero_i128(); + const MemOp mop =3D mo_endian(ctx) | MO_128 | MO_ATOM_NONE; + + gen_base_offset_addr(ctx, addr, a->base, 0); + + /* + * QEMU models ZCB/ZCBT as zeroing the containing 128-byte cache line + * in guest memory. + */ + tcg_gen_andi_i64(line, addr, ~0x7fULL); + + for (int i =3D 0; i < 8; i++) { + TCGv_i64 slot =3D tcg_temp_new_i64(); + + tcg_gen_addi_i64(slot, line, i * 16); + tcg_gen_qemu_st_i128(zero128, slot, ctx->mem_idx, mop); + } + + return true; +} --=20 2.53.0 From nobody Sat May 30 17:44:11 2026 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=1779298088; cv=none; d=zohomail.com; s=zohoarc; b=Km7tOSEJMjst/BVbzDWmuujotWfcfRQmIQZBavmOpiBaAH05wZtsNhYRkZ/aDbMEJSqMEzJ4tVQ0hkjOx3XhIAyPAtzHQSC0zBPpmcfzhab4TVXyCMNxe03uNwU/K+sUTe+PjXsfRyGbd2novjL457RQZ3ZfYCyklcHAUstdmic= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1779298088; 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=XSiG7gGiExeeiYzEge+/yBN+HoKo7f+sN+7ijrnTEwY=; b=G3QQ4JgiShszF6bPX/sWz/2N+oEvf5EGHVDHGCx4WKhPUqUbFofMg1at4FoWgs+N6WiMzZgU89q8gdSoC5ZYqPOVO8pXQYD0b7wyEpl2aAKFBqHluKgrpPP6fGUtR2hZxeDrhCTVGz/Ypdrs9JQGlf/tVu5dGQmPpn//2uHgEys= 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 lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 177929808838148.22996317519994; Wed, 20 May 2026 10:28:08 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wPkg9-0006bY-E9; Wed, 20 May 2026 13:25:57 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wPkfX-0005aS-39 for qemu-devel@nongnu.org; Wed, 20 May 2026 13:25:24 -0400 Received: from mail-wm1-x32a.google.com ([2a00:1450:4864:20::32a]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wPkfU-000403-GE for qemu-devel@nongnu.org; Wed, 20 May 2026 13:25:18 -0400 Received: by mail-wm1-x32a.google.com with SMTP id 5b1f17b1804b1-488b0046078so45633355e9.1 for ; Wed, 20 May 2026 10:25:15 -0700 (PDT) Received: from localhost.localdomain (88-187-86-199.subs.proxad.net. [88.187.86.199]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-48feb00bbe4sm134909355e9.12.2026.05.20.10.25.13 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Wed, 20 May 2026 10:25:13 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1779297914; x=1779902714; 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=XSiG7gGiExeeiYzEge+/yBN+HoKo7f+sN+7ijrnTEwY=; b=PwmcntrlHs6GndWj8E6lcDmDq467OQ/b5003ZeRA74seNDf0LN98tyGdOCEMxdyf4w EEphL2n/rxJmfzEgL4IEaDOnyK5AIdaLAH5+vy6mfgYI1t8cTazVLDILl5TIwqL8OJ+1 827zX7YmQ0xN5IE/O4v5QKlJ4Ftz1nqxRjHIfRvwK0LsSwRRSrIg5XVRqUivSqD9jyCL yA5I4I/9pRyEUldAI2L0+gusyHPd6TmrWPh8SZaxysclCFGu6e2kQyZG4n4139fdm9tv RygBbxs+h+i5ceZceNxLQe29YH/z8Yd7ciyV5HuwJaJJe3GUg+IMoTem4sMBZa3QYKr5 dgyw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1779297914; x=1779902714; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=XSiG7gGiExeeiYzEge+/yBN+HoKo7f+sN+7ijrnTEwY=; b=cOlgMVCewhBvloNMW7vW3i2Yt5OMYC7GknlK0QLUSHm6GY/PFiewyCvZsMAGbJVfJf WXP4q1n7ZMygCGXj99S7y0b5wpSFvbH2I2U0COpEytn9xoAIDIOv+qwi0fsoUxjLFaVv ThyWzHKKc4QXsrBlpxvDU+KKP33QmyzJI/1ivt3mRzI0J1N+sUH9I5DiMyMuJlTu8w3v VMrP/rEHI6FSjxlWm5CH364gwg5fXV3JKUHVpzEDIjK4lkNWqSD7PossyI8dCv0uD0su 2+2hnHy7nxMSc6Udono7PPEOVpCXz1EM/EvsW1rH7ZHUtdebzywmvz9PnxZuj6JT0EH/ YqDw== X-Gm-Message-State: AOJu0YygdcVgTNWA2Yx7MV240YpO8R4rhdkAhfL9TxuSpPNwtGWukEny P1VotprzOFuF52xyIvj+ljiVY8i6h1CT9LWAiQP6IftcwHk5rZCZ4j9n47HLSu/U+ePwDkcQo/p /eIg+Dkw= X-Gm-Gg: Acq92OEpJBY3feG+JPY1ebFhObva4CDj2V6dqwHiW0KETeFdkVh/alYU63KTWbxxUBG PILFAlw3KlEH5EamKXmNBVaTGPGDyR6Zb/l1pJecI+BPg2fWeK/z1fYBF557IxddKE1REO90ljj It9KrLikKlvgUG0czP640ocfYfKON+FRrYsLZwOdA/CUUe0/B/EyzJ0yyfVV575z+2+4IIVwaOL AyUQKUS401c9CCi824S1Yx81QxViGB/RAYQQDM8bYKB3LqYX2RkU11RoEzWuhNimzaPwRjztdfG f8y/krmeCXRJ0DQaiDmDRoYvFiKKK0GlfHbdUEvIO12yRcumpTKVlVfw3B3iKTEBsySjGcs2R+O p2SILJXSlpxPVnzo6tidASVrR8NVTOnFl7scCHWL3oGmdyv9vlwnnwIpR7w6fd08dSTvzC19uJT H+cZXdP0Pq1ZDkSg3AvIvHgmdmLjYXi9WDj3ilPdt6zyeUCHDzjrjlUJqIJL9/udSS4wLSHXKi X-Received: by 2002:a05:600c:8906:b0:48f:e3e7:3d39 with SMTP id 5b1f17b1804b1-48fe5fdd63fmr285946795e9.11.1779297914223; Wed, 20 May 2026 10:25:14 -0700 (PDT) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Cc: James Hilliard , Richard Henderson Subject: [PATCH v12 16/24] tcg: Introduce tcg_gen_addN_i64 Date: Wed, 20 May 2026 19:23:04 +0200 Message-ID: <20260520172313.23777-17-philmd@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260520172313.23777-1-philmd@linaro.org> References: <20260520172313.23777-1-philmd@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=lists1p.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::32a; envelope-from=philmd@linaro.org; helo=mail-wm1-x32a.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: qemu development 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: 1779298088792158500 From: Richard Henderson Add a helper for multi-limb 64-bit addition. The helper emits native carry-chain TCG ops when they are available and falls back to explicit carry propagation otherwise. This lets target translators build wider integer accumulators inline without open-coding the same add-with-carry sequence at each use site. Signed-off-by: Richard Henderson Signed-off-by: James Hilliard Reviewed-by: Philippe Mathieu-Daud=C3=A9 Signed-off-by: Philippe Mathieu-Daud=C3=A9 --- include/tcg/tcg-op-common.h | 1 + tcg/tcg-op.c | 42 +++++++++++++++++++++++++++++++++++++ 2 files changed, 43 insertions(+) diff --git a/include/tcg/tcg-op-common.h b/include/tcg/tcg-op-common.h index aff99754160..1fe342db0d4 100644 --- a/include/tcg/tcg-op-common.h +++ b/include/tcg/tcg-op-common.h @@ -253,6 +253,7 @@ void tcg_gen_sub2_i64(TCGv_i64 rl, TCGv_i64 rh, TCGv_i6= 4 al, TCGv_i64 ah, TCGv_i64 bl, TCGv_i64 bh); void tcg_gen_addcio_i64(TCGv_i64 r, TCGv_i64 co, TCGv_i64 a, TCGv_i64 b, TCGv_i64 ci); +void tcg_gen_addN_i64(int n, TCGv_i64 *r, TCGv_i64 *a, TCGv_i64 *b); void tcg_gen_mulu2_i64(TCGv_i64 rl, TCGv_i64 rh, TCGv_i64 arg1, TCGv_i64 a= rg2); void tcg_gen_muls2_i64(TCGv_i64 rl, TCGv_i64 rh, TCGv_i64 arg1, TCGv_i64 a= rg2); void tcg_gen_mulsu2_i64(TCGv_i64 rl, TCGv_i64 rh, TCGv_i64 arg1, TCGv_i64 = arg2); diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c index d8ae57d6047..28ef5bacfdf 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -2275,6 +2275,48 @@ void tcg_gen_addcio_i64(TCGv_i64 r, TCGv_i64 co, } } =20 +void tcg_gen_addN_i64(int n, TCGv_i64 *r, TCGv_i64 *a, TCGv_i64 *b) +{ + tcg_debug_assert(n > 2); + + /* ??? Don't allow overlap for now. */ + for (int i =3D 0; i < n - 1; ++i) { + for (int j =3D i + 1; j < n; ++j) { + tcg_debug_assert(r[i] !=3D a[j]); + tcg_debug_assert(r[i] !=3D b[j]); + } + } + + if (tcg_op_supported(INDEX_op_addci, TCG_TYPE_I64, 0)) { + tcg_gen_op3_i64(INDEX_op_addco, r[0], a[0], b[0]); + for (int i =3D 1; i < n - 1; ++i) { + tcg_gen_op3_i64(INDEX_op_addcio, r[i], a[i], b[i]); + } + tcg_gen_op3_i64(INDEX_op_addci, r[n - 1], a[n - 1], b[n - 1]); + } else { + TCGv_i64 t =3D tcg_temp_ebb_new_i64(); + TCGv_i64 c =3D tcg_temp_ebb_new_i64(); + + tcg_gen_add_i64(t, a[0], b[0]); + tcg_gen_setcond_i64(TCG_COND_LTU, c, t, a[0]); + tcg_gen_mov_i64(r[0], t); + + for (int i =3D 1; i < n - 1; ++i) { + tcg_gen_add_i64(t, a[i], c); + tcg_gen_setcond_i64(TCG_COND_LTU, c, t, c); + tcg_gen_add_i64(r[i], b[i], t); + tcg_gen_setcond_i64(TCG_COND_LTU, t, r[i], t); + tcg_gen_or_i64(c, c, t); + } + + tcg_gen_add_i64(r[n - 1], a[n - 1], b[n - 1]); + tcg_gen_add_i64(r[n - 1], r[n - 1], c); + + tcg_temp_free_i64(t); + tcg_temp_free_i64(c); + } +} + void tcg_gen_sub2_i64(TCGv_i64 rl, TCGv_i64 rh, TCGv_i64 al, TCGv_i64 ah, TCGv_i64 bl, TCGv_i64 bh) { --=20 2.53.0 From nobody Sat May 30 17:44:11 2026 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=1779298078; cv=none; d=zohomail.com; s=zohoarc; b=GBAuYa5KSrXQxU7kMLyuqp6E7xXRgWNWBvZuJeAO127Mn26nYkrIfJBGz6Y5yvAtzJv41P2hnnKsugso4GxA/p2ZNKrPvPKuKzOxoMpmWvhrGt2/DB/f1r1g083vapI2DRN7dapNAdRZoJeOaJVWpxdIZlPXCclnEFY4hjExihk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1779298078; 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=Hrcak8XkkPSZfKxs46swbECTBnU0R7NtOAZ2oeIrnRE=; b=cImsQFKdAQ7ROPwiNqOKF6lWcKv682j9YX+MW4MXbG5ClqLoYnJ/OYBrznsNbZVWVLgzMglsCg3ui4m3hSIpPFBBH0U0PQHkQe9lQ41Q2fXWgzN2VkMFuies0+TVN0q+kmKb8/2Q3wrVPWY+pgFvMdTjPfPu8q4nwErOwxLu1J4= 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 lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1779298078664552.3433928799942; Wed, 20 May 2026 10:27:58 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wPkg5-0006Dz-0E; Wed, 20 May 2026 13:25:53 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wPkfg-0005fo-UI for qemu-devel@nongnu.org; Wed, 20 May 2026 13:25:34 -0400 Received: from mail-wm1-x32f.google.com ([2a00:1450:4864:20::32f]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wPkfb-00044k-CH for qemu-devel@nongnu.org; Wed, 20 May 2026 13:25:24 -0400 Received: by mail-wm1-x32f.google.com with SMTP id 5b1f17b1804b1-49021532ebdso20577175e9.2 for ; Wed, 20 May 2026 10:25:22 -0700 (PDT) Received: from localhost.localdomain (88-187-86-199.subs.proxad.net. [88.187.86.199]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-45d9e767d0bsm53770476f8f.3.2026.05.20.10.25.20 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Wed, 20 May 2026 10:25:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1779297921; x=1779902721; 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=Hrcak8XkkPSZfKxs46swbECTBnU0R7NtOAZ2oeIrnRE=; b=Ewurm3Sv3lWkFhplS2T2hObLQumkyAgqhRviCwAO0HgoQYasBqQef8ofpWxR9x1oNK BzSFdbgP7ajD2tgJTdBZuWkPlSbNrV2X2JhPIuch4VRz+MACH8AppDqZwj3jVH3szFfe of2gvhpL6uMW0ibr3zosrbdHgAktsKpwQrQoqBqcjsUJ0qpGQuLQnJ5MdxnbASQk+QOf 40SjI0dX6Z3yQR2ahcgwtin3exy5u4Sv4ebwy3x+F1ahFRiz3A+tAw1pGL8DzAq4XDJg EXbhLd+QWXpdNZSg4RhJS3gNvC18PvFfTy2kV8pzEFw0iSXibpAt2SBBzoHbY1JDzUK+ H06w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1779297921; x=1779902721; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=Hrcak8XkkPSZfKxs46swbECTBnU0R7NtOAZ2oeIrnRE=; b=bIOyiQRXwTuQAVKjRxKTefg4xMcqyTf2cKHBDwe+NzYeAnxppOlOPxaMwf9n5qckuV R+TjUvKfcpFj1ogNGmNh5UXI783Q93UJePZn7Jr0VzPk378vbK9L391MsBHcnoyOUhH8 H4lIFdExM/bIxCjtIBJGzUBr7P+ARFV6f2PTIjqN8ETP494zyDSJ2XT7m7Tyv5tuTqTy 266LdkClo0lxl57vCHxeLKRVdHlO8pq81PH97OUiunOl1BBCZOVz5i+bspjKHidKP1Yd 7DHMj2U+P347C7NB19OSrR4uAQ4tdbn8Q2DUcHSQzvTFEXly+1HEK99ChMM+MHdFLPgZ 8/hw== X-Gm-Message-State: AOJu0Yyy/bFi2Myvnl6QnYRRKkAcIpQI2Vx2mAtNKzOekT+IRVO4J5FQ Wu9Hcd78cGUvta+0k0pWxXZjbSn+95nSO8EBmikGXWuiwUCxPgAF1yuqi4LQv4BZg0LZe8lWuwC F1xeiX88= X-Gm-Gg: Acq92OGRaeQy6HJI6x8hSZ8EoNAySBDUrSanAeYdnXOU3qvWa/nZYHKN11U7JEyVE27 sy6gI8S99W4HKdEbs8QpXtvk5p1+1gww5EakGWGXpNLgS3PAly9tqK9q5mZCJkfhgyhguClACU8 vidflIPXy718bPqCd1pGDZj2Sq1uDp1mAe/XQMzrH2YLcuxwnyVo2FY+YQy0neoC1uPk6FtfL67 tFQP5a5SXwOQzde5+PgF0RfLp0oKxMPSHNJRh17nQZvAAMW3CvHCnlCVMSOGnpKnPxouzfmo+dk qhZUhxhh0creZr5FU0VJeXK8JAXovRcAo0a4PcBdK1JsI0GEZYIt39DuZl03J4Otpg/J3ZWJIMh 1MIccYWZUtczdFQbRd6nM/6WavhUqyPLihpzLwREVu8fExgIdVzVHCjZZkEhcF813TB0/1gur8d q84qH6QZz2RCt9gju2QJQdBweCsDl5/zNaYC4m9Q7UDlscZ15hdADU6mA2Ua5vDI0sVYlhTKSR X-Received: by 2002:a05:600c:a11c:b0:47e:e2eb:bc22 with SMTP id 5b1f17b1804b1-48fe5fd536amr289864475e9.5.1779297921409; Wed, 20 May 2026 10:25:21 -0700 (PDT) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Cc: James Hilliard , Richard Henderson Subject: [PATCH v12 17/24] target/mips: add Octeon multiplier state Date: Wed, 20 May 2026 19:23:05 +0200 Message-ID: <20260520172313.23777-18-philmd@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260520172313.23777-1-philmd@linaro.org> References: <20260520172313.23777-1-philmd@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=lists1p.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::32f; envelope-from=philmd@linaro.org; helo=mail-wm1-x32f.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: qemu development 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: 1779298081374154100 From: James Hilliard Add per-thread Octeon multiplier state for the MPL and P limb banks used by the VMULU/VMM0/V3MULU instruction family. Octeon3 extends the older MPL0-MPL2/P0-P2 state with high lanes MPL3-MPL5/P3-P5, programmed by the two-source MTM/MTP forms. Represent both banks as uint64_t arrays so the TC state matches the architected 64-bit limb layout used by Octeon68XX user-mode code. Expose MPL/P as global TCG variables so the multiplier translators can expand inline without helper calls. Migrate the multiplier registers in an Octeon-only subsection so non-Octeon CPU models do not grow migration state. Reviewed-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daud=C3=A9 Signed-off-by: James Hilliard Signed-off-by: Richard Henderson Signed-off-by: Philippe Mathieu-Daud=C3=A9 --- target/mips/cpu.h | 12 ++++++++++++ target/mips/tcg/translate.h | 2 ++ target/mips/system/machine.c | 33 +++++++++++++++++++++++++++++++++ target/mips/tcg/translate.c | 18 ++++++++++++++++++ 4 files changed, 65 insertions(+) diff --git a/target/mips/cpu.h b/target/mips/cpu.h index b478f834c13..346713705a7 100644 --- a/target/mips/cpu.h +++ b/target/mips/cpu.h @@ -459,6 +459,14 @@ typedef struct mips_def_t mips_def_t; =20 =20 typedef struct TCState TCState; + +/* + * Octeon3 adds a second bank of multiplier/product limbs used by the + * two-source MTM/MTP forms: MPL0..2/P0..2 from rs and MPL3..5/P3..5 from = rt. + */ +#define OCTEON_MULTIPLIER_LANES 3 +#define OCTEON_MULTIPLIER_REGS (2 * OCTEON_MULTIPLIER_LANES) + struct TCState { target_ulong gpr[32]; #if defined(TARGET_MIPS64) @@ -497,6 +505,10 @@ struct TCState { target_ulong CP0_TCScheFBack; int32_t CP0_Debug_tcstatus; target_ulong CP0_UserLocal; + struct { + uint64_t MPL[OCTEON_MULTIPLIER_REGS]; + uint64_t P[OCTEON_MULTIPLIER_REGS]; + } octeon; =20 int32_t msacsr; =20 diff --git a/target/mips/tcg/translate.h b/target/mips/tcg/translate.h index 89dde1e7124..ab2e2173674 100644 --- a/target/mips/tcg/translate.h +++ b/target/mips/tcg/translate.h @@ -189,6 +189,8 @@ void gen_crc32(DisasContext *ctx, int rd, int rs, int r= t, int sz, int crc32c); extern TCGv cpu_gpr[32], cpu_PC; #if defined(TARGET_MIPS64) extern TCGv_i64 cpu_gpr_hi[32]; +extern TCGv_i64 oct_mpl[OCTEON_MULTIPLIER_REGS]; +extern TCGv_i64 oct_p[OCTEON_MULTIPLIER_REGS]; #endif extern TCGv cpu_HI[MIPS_DSP_ACC], cpu_LO[MIPS_DSP_ACC]; extern TCGv_i32 fpu_fcr0, fpu_fcr31; diff --git a/target/mips/system/machine.c b/target/mips/system/machine.c index 5880b401b07..f988b3695bc 100644 --- a/target/mips/system/machine.c +++ b/target/mips/system/machine.c @@ -120,6 +120,17 @@ static const VMStateDescription vmstate_inactive_tc = =3D { .fields =3D vmstate_tc_fields }; =20 +static const VMStateDescription vmstate_octeon_multiplier_tc =3D { + .name =3D "cpu/tc/octeon_multiplier", + .version_id =3D 1, + .minimum_version_id =3D 1, + .fields =3D (const VMStateField[]) { + VMSTATE_UINT64_ARRAY(octeon.MPL, TCState, OCTEON_MULTIPLIER_REGS), + VMSTATE_UINT64_ARRAY(octeon.P, TCState, OCTEON_MULTIPLIER_REGS), + VMSTATE_END_OF_LIST() + } +}; + /* MVP state */ =20 static const VMStateDescription vmstate_mvp =3D { @@ -247,6 +258,27 @@ static const VMStateDescription mips_vmstate_timer =3D= { } }; =20 +static bool mips_octeon_needed(void *opaque) +{ + MIPSCPU *cpu =3D opaque; + + return cpu->env.insn_flags & INSN_OCTEON; +} + +static const VMStateDescription mips_vmstate_octeon_multiplier =3D { + .name =3D "cpu/octeon_multiplier", + .version_id =3D 1, + .minimum_version_id =3D 1, + .needed =3D mips_octeon_needed, + .fields =3D (const VMStateField[]) { + VMSTATE_STRUCT(env.active_tc, MIPSCPU, 1, + vmstate_octeon_multiplier_tc, TCState), + VMSTATE_STRUCT_ARRAY(env.tcs, MIPSCPU, MIPS_SHADOW_SET_MAX, 1, + vmstate_octeon_multiplier_tc, TCState), + VMSTATE_END_OF_LIST() + } +}; + const VMStateDescription vmstate_mips_cpu =3D { .name =3D "cpu", .version_id =3D 21, @@ -363,6 +395,7 @@ const VMStateDescription vmstate_mips_cpu =3D { }, .subsections =3D (const VMStateDescription * const []) { &mips_vmstate_timer, + &mips_vmstate_octeon_multiplier, NULL } }; diff --git a/target/mips/tcg/translate.c b/target/mips/tcg/translate.c index dac30aff8d3..123d2c89c3d 100644 --- a/target/mips/tcg/translate.c +++ b/target/mips/tcg/translate.c @@ -1179,6 +1179,8 @@ static TCGv cpu_lladdr, cpu_llval; static TCGv_i32 hflags; TCGv_i32 fpu_fcr0, fpu_fcr31; TCGv_i64 fpu_f64[32]; +TCGv_i64 oct_mpl[OCTEON_MULTIPLIER_REGS]; +TCGv_i64 oct_p[OCTEON_MULTIPLIER_REGS]; =20 static const char regnames_HI[][4] =3D { "HI0", "HI1", "HI2", "HI3", @@ -15276,6 +15278,22 @@ void mips_tcg_init(void) active_tc.gpr_hi[i= ]), rname); } + + for (unsigned i =3D 0; i < OCTEON_MULTIPLIER_REGS; ++i) { + static const char mpl_names[OCTEON_MULTIPLIER_REGS][5] =3D { + "MPL0", "MPL1", "MPL2", "MPL3", "MPL4", "MPL5", + }; + static const char p_names[OCTEON_MULTIPLIER_REGS][3] =3D { + "P0", "P1", "P2", "P3", "P4", "P5", + }; + + oct_mpl[i] =3D tcg_global_mem_new_i64( + tcg_env, offsetof(CPUMIPSState, active_tc.octeon.MPL[i]), + mpl_names[i]); + oct_p[i] =3D tcg_global_mem_new_i64( + tcg_env, offsetof(CPUMIPSState, active_tc.octeon.P[i]), + p_names[i]); + } #endif /* !TARGET_MIPS64 */ for (unsigned i =3D 0; i < 32; i++) { int off =3D offsetof(CPUMIPSState, active_fpu.fpr[i].wr.d[0]); --=20 2.53.0 From nobody Sat May 30 17:44:11 2026 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=1779298053; cv=none; d=zohomail.com; s=zohoarc; b=Lbtiuwmbae+jdkQ2i+8+IDEyLLgBKgIIvrs84VIpC94DXX/ugcgmGuyctJLfh6Kq2jaVbsFRYqkI+ybqWPdu+TqTGWc+SSNG+s0CTf6AsqhBPxvRCTp+UVMVztfTycMy2vuFvSLBhljwGVpNIy38c6XCHOdTlA/6x9ohWKHGcNc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1779298053; 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=NXj/+PY1yntAjcWodCob3h4dAJStyqYMpQ6tLHI9b0s=; b=EZeYUiF6E7SgliyjbhdG7APkbBGO46kBydqPWX1RhqgYJzv8u/P+5oWqNHsYAaXCSJ6b3g8bUw4gJuJOer7kKLsjV8xNfulamUdyz6hL3cnRvKbxEp1z0WlQiYmOvB13jCL29MK56R9SeH2+NorUcUusSz9YNw02y8W1pIQl7D4= 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 lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1779298053579575.2393815781134; Wed, 20 May 2026 10:27:33 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wPkg9-0006cq-II; Wed, 20 May 2026 13:25:57 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wPkfn-0005jA-CE for qemu-devel@nongnu.org; Wed, 20 May 2026 13:25:38 -0400 Received: from mail-wm1-x32c.google.com ([2a00:1450:4864:20::32c]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wPkfl-000457-Pc for qemu-devel@nongnu.org; Wed, 20 May 2026 13:25:35 -0400 Received: by mail-wm1-x32c.google.com with SMTP id 5b1f17b1804b1-4891b0786beso35977925e9.1 for ; Wed, 20 May 2026 10:25:29 -0700 (PDT) Received: from localhost.localdomain (88-187-86-199.subs.proxad.net. [88.187.86.199]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-49033d9eca8sm4944625e9.12.2026.05.20.10.25.27 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Wed, 20 May 2026 10:25:27 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1779297929; x=1779902729; 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=NXj/+PY1yntAjcWodCob3h4dAJStyqYMpQ6tLHI9b0s=; b=ogrLu3HWt/m2X23yCGZHoFNMw5Ow3JUAUL0FdMs5loCkbHo9lBLJJ6EvnF6PkTU1b/ Wt4SZW/zFxjjHJciKRxpQjUtFM/zkwAH6FzmqaHg34inVQCeVGVT8Nn87uN3l89JsP4C A8BQiR6aMGrp/btsDJcbduIIHTT4MWnVMjHKTgh0mREt8EkA0pC4GZwElSaI4MDd0DYF ETsIFWmBWoUdi5O9uqxFYY6cXVpX5N4RENB3JrXcozPzvOK3h/vOwYcIbeSefeGIEspL 471SjyO3v7yLSrsLJvRG4T0Dvm/Lr2MwnEmcSwNM4W1iMKkK1pVKKMdqsljleaMMfjUE pkgw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1779297929; x=1779902729; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=NXj/+PY1yntAjcWodCob3h4dAJStyqYMpQ6tLHI9b0s=; b=R9XvaqCiLFHSt9PoUQN81pGniBMx1moZ/abytTxTubm3DvXh+pErvoMVx08rkVjqbp R46M+LjdywehskfhljOvWNLxHvOCpTb93+3BbbKblkx8FdVLG4+uQMc3gfaQivkXaDV3 jnD0DiFJ3LPMGPg7UnD+giaH4eoujb54AJOV20vgXy4Ff/1kYyBLcJGNpkv2x6Pa8xx+ jp1sPVz9IfVp3UJk+lBeORtcvMmPagkF75bnmEY3zMktW/tU3oEncG0ijWO6UTXWnPBe 3DBQaNkbsLZ+GtFhNIW7a0Ae21mGMeIaGwhiU3JLxqjV+PLhRss38IZTS013vc1+OtUg cZqw== X-Gm-Message-State: AOJu0YxOPsPSu0GgAwFRAeR+Bgbkyiw6Z+4dMfUksmUcZS8tiM8+5pUM aftMtquA+saHWw1roujUTF5mewoTOqH9xj/Vrhz9OmBybBcNUFNANjCo3M0wITaU80eFeH/F3mR wZQhHRuU= X-Gm-Gg: Acq92OEggbowhMkVgtGdHEDA8y4B1B3JAluT9uYRq67EFU6QdV3l7tAy8B6RfOSOXVE SaMA1mA1iGAStWC5NekRhE+B/LNbCy++2c6IpCve+IrODnvjNZLtMSQuI+YIcNYm1/eioayCUUa ZijZOO4b91XqL3sYwoWamEzPrXpKu1Uz1pbX47Mq28ZbJXb7DPqobfqUDNRL3teAZg3aY/vBnPC vXa0jYqywWgCLRhD2c2pElhPJaMts4PkGTptSRy9xnOoO/1gLje/L3P50pdsyRhLaSGpbwU+96x rl2EKKR+9jrcM+XVFQJwl6aqzGT+74loX3Ofi04urHyUaVi0TI0qA6o7dExtHThwkPHqLdEhO/C 5v+FrxsZ6CKyaxeEtO1lsToO5gTltyEBWFLFWszfMaKwyEoyoICOZBUJvOIXku4tCcJwRi7881C qfxt0CTbtqn+oOXBxqihEw9d9w5GIPkgpX7ET5FRkrccmM6ySvVDtKc0jq5wYzq+omUokgeXkO X-Received: by 2002:a05:600c:a406:b0:48a:9540:1a3a with SMTP id 5b1f17b1804b1-48fe60e56abmr315207775e9.8.1779297928723; Wed, 20 May 2026 10:25:28 -0700 (PDT) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Cc: James Hilliard , Richard Henderson Subject: [PATCH v12 18/24] target/mips: add Octeon MTM instructions Date: Wed, 20 May 2026 19:23:06 +0200 Message-ID: <20260520172313.23777-19-philmd@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260520172313.23777-1-philmd@linaro.org> References: <20260520172313.23777-1-philmd@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=lists1p.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::32c; envelope-from=philmd@linaro.org; helo=mail-wm1-x32c.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: qemu development 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: 1779298054361158500 From: James Hilliard Add the MTM0, MTM1, and MTM2 forms that load the Octeon3 multiplier operand pair from rs/rt into MPL[x] and MPL[x+3], then clear the partial products. For MPL0, also set MPL[1] to zero for backward compatibility with Octeon2 VMULU. Legacy single-source encodings have rt encoded as $zero, so the same translator path also preserves the older Octeon behavior. Reviewed-by: Richard Henderson Signed-off-by: James Hilliard Signed-off-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daud=C3=A9 Signed-off-by: Philippe Mathieu-Daud=C3=A9 --- target/mips/tcg/octeon.decode | 7 +++++++ target/mips/tcg/octeon_translate.c | 32 ++++++++++++++++++++++++++++++ 2 files changed, 39 insertions(+) diff --git a/target/mips/tcg/octeon.decode b/target/mips/tcg/octeon.decode index 01ed3b50beb..5139543b153 100644 --- a/target/mips/tcg/octeon.decode +++ b/target/mips/tcg/octeon.decode @@ -44,6 +44,13 @@ SNE 011100 ..... ..... ..... 00000 101011 @r3 SEQI 011100 rs:5 rt:5 imm:s10 101110 &cmpi SNEI 011100 rs:5 rt:5 imm:s10 101111 &cmpi =20 +&r2 rs rt +@r2 ...... rs:5 rt:5 ..... ..... ...... &r2 + +MTM0 011100 ..... ..... 00000 00000 001000 @r2 +MTM1 011100 ..... ..... 00000 00000 001100 @r2 +MTM2 011100 ..... ..... 00000 00000 001101 @r2 + &saa base rt @saa ...... base:5 rt:5 ................ &saa SAA 011100 ..... ..... 00000 00000 011000 @saa diff --git a/target/mips/tcg/octeon_translate.c b/target/mips/tcg/octeon_tr= anslate.c index 5392fed08a8..26b918d649a 100644 --- a/target/mips/tcg/octeon_translate.c +++ b/target/mips/tcg/octeon_translate.c @@ -209,3 +209,35 @@ static bool trans_ZCB(DisasContext *ctx, arg_ZCB *a) =20 return true; } + +static void octeon_zero_partial_product_state(void) +{ + for (int i =3D 0; i < OCTEON_MULTIPLIER_REGS; i++) { + tcg_gen_movi_i64(oct_p[i], 0); + } +} + +static bool trans_mtm(DisasContext *ctx, arg_r2 *a, unsigned int index) +{ + /* + * Octeon3 two-source MTM forms load lane index from rs and lane index= + 3 + * from rt. Legacy one-source forms encode rt as $zero. + */ + gen_load_gpr(oct_mpl[index], a->rs); + gen_load_gpr(oct_mpl[index + 3], a->rt); + + /* + * Octeon3 clears MPL1 with a write to MPL0 so that VMULU sequences re= main + * backward compatible with Octeon2. + */ + if (index =3D=3D 0) { + tcg_gen_movi_i64(oct_mpl[1], 0); + } + + octeon_zero_partial_product_state(); + return true; +} + +TRANS(MTM0, trans_mtm, 0); +TRANS(MTM1, trans_mtm, 1); +TRANS(MTM2, trans_mtm, 2); --=20 2.53.0 From nobody Sat May 30 17:44:11 2026 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=1779298090; cv=none; d=zohomail.com; s=zohoarc; b=FyaE0f270aUM4AjTvJui8NrDVZGXUf4Rhy+sACIHutAXEIkgn4bK2r8h7axrbiDIkjrb0Xjtg8rBLFCRg/C5KlBC4HBYPPJ1y1ZhvgSDBzNu57s1pcHaAGlP9lPee+mnHfKFo/uI7bar1EyWYfJYf92EEsBsuXU6tg3DnmTmEVM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1779298090; 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=gokMVLmqaosc2I+MTKyuLHCfZBTcMT/Kh5JpiDE4jeY=; b=EgsPMKAIIqp6lpuJyMV8A+20EtOvW4VRzjYHx12WfpqCwTx9H3kfTWbLpR/Oq/CZR1bHu2SprJBgISznpvHVYNgDkkKPGUCmVKRCWiR6SnEUh8E7Zp5fpZSlSm8XlmK1TsfyDCngJdYPw789+A+JFM7VZiTkAnc91Vyza7hgk40= 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 lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1779298090188847.3592058479459; Wed, 20 May 2026 10:28:10 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wPkg6-0006K7-U7; Wed, 20 May 2026 13:25:54 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wPkfs-0005um-28 for qemu-devel@nongnu.org; Wed, 20 May 2026 13:25:40 -0400 Received: from mail-wr1-x42c.google.com ([2a00:1450:4864:20::42c]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wPkfq-0004H2-7u for qemu-devel@nongnu.org; Wed, 20 May 2026 13:25:39 -0400 Received: by mail-wr1-x42c.google.com with SMTP id ffacd0b85a97d-43d7645adbdso3525411f8f.1 for ; Wed, 20 May 2026 10:25:37 -0700 (PDT) Received: from localhost.localdomain (88-187-86-199.subs.proxad.net. [88.187.86.199]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-45da0a19b1dsm55060184f8f.17.2026.05.20.10.25.34 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Wed, 20 May 2026 10:25:35 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1779297937; x=1779902737; 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=gokMVLmqaosc2I+MTKyuLHCfZBTcMT/Kh5JpiDE4jeY=; b=LJmd2gBDvq9QZZ2bCH03cl8APRmluhrwNIGM2n4xOvPj5jtqvHFRBIiz8wvsQvOWQA PVyNwWvqzjn+4k31LyYuhpifeRZufouSPQqzp9CfZ/sdpeo8GN8UqtgshSQ/mp39u2YZ MwifDFsBsn6BhmGXOKUgUhUdeaFwaP8ubrxbRW8SnUHUg2oRq4NKj6jeXRY9W5W4CKfB Waasa69NfBDDO3ISXKaX1pKR4ZKz9Dq79qvz+4KwyC9uslBCnZa6gHPiqzzR+TuZ0vxW G+3Ia4fgwjgNITm63xjRLga30xXFq19be5jkBaV28x8YJBZmjEcBJV35oIXqV+UoDoyC BkEQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1779297937; x=1779902737; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=gokMVLmqaosc2I+MTKyuLHCfZBTcMT/Kh5JpiDE4jeY=; b=ZiUQcnqkb9TZqQOX7aUoFoC2bw6ajRbkcsDRZujkfEBjs7H3hPh0wwFVoOoo/gvkvk kKuNtXLzCWDAP71yEtg+mQJdSW+aT3KXlsA2ZHux7/jgsx9qP7F/RDhJWDRTb+WNOpfy T7/A8Cy7dJCclRux7jcl7KdbAyH4NNjTfN9ctzaoujCCA0573g6kRlOwpx2MS3ZzRN6P eLqo1agEaQCCHO5fj2/Z7OBQUrtCZRSGNdYi+DQqoPvk+vrD8xp+Lik9cHPN4Hmyj8NO voy9j+lnABagmDkm7vu+pS+3xhL4Y1t9g3QvpcIbduRWK5HC0QsGgVOYlsx7oQEOq6aw tmgQ== X-Gm-Message-State: AOJu0Yz/eoqdftEunOU2SpUFkqgLUIqmV87h0xAlots36hf5QoBd62Sr lT2YXTMYGpI1mnt2P4A5hquz8EjCkvSvmPtnDguQEo8sZi1LT5NytdgFHd3wlAZZEa38oylrSNO 3xPeMzKY= X-Gm-Gg: Acq92OGKid9PK3MH0V2QCmOadstDGhtC8mvUEGiq8l09kG7VCvA2m22whfc+QAQ+dDw ltRZQC6hBk+n7NdALfMNVeRVxzFwWuCJG9cRvwxX6/SamugM32CUOtx/W30ZnVgsPo3bp5foi/y TDsCltggWeTissyhpuniab4UxWlFfQmjvnUE88lsmFct0NeYVSXIw7ii7oyJuQeLzj1nIlZAfSr Gmv//e2AqeJ3Li1J4vIi7ZJMy5JvUVmZd40IOlSEhqK68340z8y73PU3ekDGwaAMWTrQUVRkBPo OZf9ny1sujDsGjbmHqC4Pm3LqnOfiq3GK3hQuUKyG02wv2l1VE8+DTJbl91BMhQofvld/mRZIhg ZrzB7BV8cy9njyCN6ayqkPBcEHRDrh2x10WfigmiWN7e3OLb2KBU8XkcRD4zCBIoEVWTvlcUT54 fukuavTh8bWexZ70qFk0rFEU9dQOQ9q8V+g+jK+I2bn7KEcQonYfT1pep7WhSbmBWZj74JAEz+X QofCswdCbk= X-Received: by 2002:a5d:4906:0:b0:45e:8526:7dc8 with SMTP id ffacd0b85a97d-45e85267ea8mr14455141f8f.25.1779297936854; Wed, 20 May 2026 10:25:36 -0700 (PDT) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Cc: James Hilliard , Richard Henderson Subject: [PATCH v12 19/24] target/mips: add Octeon MTP instructions Date: Wed, 20 May 2026 19:23:07 +0200 Message-ID: <20260520172313.23777-20-philmd@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260520172313.23777-1-philmd@linaro.org> References: <20260520172313.23777-1-philmd@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=lists1p.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::42c; envelope-from=philmd@linaro.org; helo=mail-wr1-x42c.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: qemu development 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: 1779298091567154101 From: James Hilliard Add the MTP0, MTP1, and MTP2 forms. MTP0 loads the low Octeon3 partial-product pair from rs/rt into P[0]/P[3], MTP1 loads the middle pair into P[1]/P[4], and MTP2 loads the high pair into P[2]/P[5]. For MTP0, also set P[1] to zero for backward compatibility with Octeon2 VMULU. Legacy single-source encodings have rt encoded as $zero, so the same translator path also preserves the older Octeon behavior. Reviewed-by: Richard Henderson Signed-off-by: James Hilliard Signed-off-by: Richard Henderson Signed-off-by: Philippe Mathieu-Daud=C3=A9 --- target/mips/tcg/octeon.decode | 4 ++++ target/mips/tcg/octeon_translate.c | 23 +++++++++++++++++++++++ 2 files changed, 27 insertions(+) diff --git a/target/mips/tcg/octeon.decode b/target/mips/tcg/octeon.decode index 5139543b153..bb0a9f1d99a 100644 --- a/target/mips/tcg/octeon.decode +++ b/target/mips/tcg/octeon.decode @@ -51,6 +51,10 @@ MTM0 011100 ..... ..... 00000 00000 001000 @r2 MTM1 011100 ..... ..... 00000 00000 001100 @r2 MTM2 011100 ..... ..... 00000 00000 001101 @r2 =20 +MTP0 011100 ..... ..... 00000 00000 001001 @r2 +MTP1 011100 ..... ..... 00000 00000 001010 @r2 +MTP2 011100 ..... ..... 00000 00000 001011 @r2 + &saa base rt @saa ...... base:5 rt:5 ................ &saa SAA 011100 ..... ..... 00000 00000 011000 @saa diff --git a/target/mips/tcg/octeon_translate.c b/target/mips/tcg/octeon_tr= anslate.c index 26b918d649a..10c7d18ad4f 100644 --- a/target/mips/tcg/octeon_translate.c +++ b/target/mips/tcg/octeon_translate.c @@ -241,3 +241,26 @@ static bool trans_mtm(DisasContext *ctx, arg_r2 *a, un= signed int index) TRANS(MTM0, trans_mtm, 0); TRANS(MTM1, trans_mtm, 1); TRANS(MTM2, trans_mtm, 2); + +static bool trans_mtp(DisasContext *ctx, arg_r2 *a, unsigned int index) +{ + /* + * Octeon3 two-source MTP forms load lane index from rs and lane index= + 3 + * from rt. Legacy one-source forms encode rt as $zero. + */ + gen_load_gpr(oct_p[index], a->rs); + gen_load_gpr(oct_p[index + 3], a->rt); + + /* + * Octeon3 clears P1 with a write to P0 so that VMULU sequences remain + * backward compatible with Octeon2. + */ + if (index =3D=3D 0) { + tcg_gen_movi_i64(oct_p[1], 0); + } + return true; +} + +TRANS(MTP0, trans_mtp, 0); +TRANS(MTP1, trans_mtp, 1); +TRANS(MTP2, trans_mtp, 2); --=20 2.53.0 From nobody Sat May 30 17:44:11 2026 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=1779298006; cv=none; d=zohomail.com; s=zohoarc; b=g7EXxJ+o4/IoBA2j0KeSN8befDV+IDp+GIzAYbF1OpIGczGazP/o78mj8lIHFMkDAzkb80xezEC7fJKo1PDh24DrF9T5ytjEzVhPlmVhz1sdF1ZqhTLf5cBVP3J8WxK6m7tdTCz3tncii0gg4QCCf0YXCPwAI4bQKQ8jLoB0nhA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1779298006; 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=7MX+Dcj7tJOGLesyog421ZA8oGf70/8pl06vVpBZTDo=; b=KYPHk2MJaEw0aW415zA8s96NOffwCuwsatQzIN2rLazNncF0RSXGHjUaPQ+VqZ3wNk4FTT+5XVOGKeeVNbAxRuz4V2BIlacWPP6EDn6hQnhSMGCIpqMonv69QIeEWmctF1TAXurQnnakB8s1ev2POSs47Xdj5b2FSimN0OWuBt4= 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 lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1779298006317402.2165932293318; Wed, 20 May 2026 10:26:46 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wPkgB-0006mW-My; Wed, 20 May 2026 13:25:59 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wPkg2-00069X-R6 for qemu-devel@nongnu.org; Wed, 20 May 2026 13:25:51 -0400 Received: from mail-wm1-x32a.google.com ([2a00:1450:4864:20::32a]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wPkfy-0004JG-W6 for qemu-devel@nongnu.org; Wed, 20 May 2026 13:25:50 -0400 Received: by mail-wm1-x32a.google.com with SMTP id 5b1f17b1804b1-488b8bc6bc9so30663735e9.3 for ; Wed, 20 May 2026 10:25:45 -0700 (PDT) Received: from localhost.localdomain (88-187-86-199.subs.proxad.net. [88.187.86.199]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-49033d9ee3bsm5078685e9.14.2026.05.20.10.25.42 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Wed, 20 May 2026 10:25:43 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1779297944; x=1779902744; 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=7MX+Dcj7tJOGLesyog421ZA8oGf70/8pl06vVpBZTDo=; b=i9afm1fn66KHpXhxL2gt+OiVfYBgIFCgFKCfydTRg5n2VndruTj94sH6jZaZTib/xh 0a9q8YwPaMkP3cRSJdqiITYlWuAtN0grkTEBtS8AlQvUWE73lMs+aYzaD8NwZZQTYkbk axASohOvQmxcLoXG02jX7Ij2SpKiGOuwY2oJLYda91GoInlmPcVF2j/65Yq7CbVOaxPx lknDBMihNPxvJp0AD7wmByaJqCrS3jyoZ/VaxDmgF/3k455Rb9ae673V79og9N4DbVxR Du8g5K6vqd41OvjtHw9anhWdqhz184AJtKQFLnb+8ekKfddyPzDGfWwwVTLZq4p1empJ VUUw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1779297944; x=1779902744; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=7MX+Dcj7tJOGLesyog421ZA8oGf70/8pl06vVpBZTDo=; b=QAiSmVIBI6HiyecrNkgrQI3duTfJc6AItLk3edaCcLByaQ+f02WIxszBw2V6/Vdcd5 t71wVyZQhS3ObrQLwmPpXm5nqfsjEs6QXTvhkdmvfx00M/dKoK+mRjro/1Bkrp8PCD9c WVtO3fdRI08OzMH4KXw55Ro4IceUAFUrDbSeSsBHrS8qzGRW4wK4kxYjBsQVsgyYkFV2 ykVl5yTGpjOi/VpD1CVh5Pblmf0mJNl4kmu5PC0vFx6YSGbiIuluOLO/tDWIy8pAKv5C oLMngXwUFKN29RqjJwno8XTEQNJYfrw+YraOG052yrK8s+WmCSpNJ6y8DzH7dxMzoxcM vMEQ== X-Gm-Message-State: AOJu0YwIL8zUB8q9/2QHmQcsI9ivJSdxX/ajmC7hd3OeNzBS2/bPbxtc hxg3F+HrXe33U6dMxyN1txa9eQu3SqLLo57bBvH/O+L5KnkfuqezsDW+3hU//GSXjifyk5rh3h5 RhbTzrU8= X-Gm-Gg: Acq92OH7OCT4zDh+Mh7ZQSbiyMORHMkkWJJ6g6BblFXfjc7vIKgqvQQFd2uOQIF7kmO q66mrzZRQf2FdWsiidDNAa565EgeyUJaMSQGWatT6fFy81CIvBWu3WPlY8NQd6+RurZ0SSPRNz1 M4adgO9nPJX+4F4Duj+MsPuF38Z3lvuuIfpYZ/qHw8SgFXmIW+ke9lMST71YOUIfalPnZPseZUH TIz0Cqkh9O3JtdL4UV6Puqd9IxziNg3qxIuPJnEeUrC5nY3SPujYaz2rBS3cGApEFz4AHYBdVoi t919HE96KeQOxQrRNj5+LRpROWwjJMhuLulpLm3K1Of73T5AxHCDho8zDLdvDT7/Rs0q1CKW+jo x3N/79yY+VvKMCpRbxaMh66HoLb7NVI1NNJKkr9zGgbVrTfcB74u8+hIn0C37oSeckHQLs8ufkz Vd1gQWPKtSuE3ONlt0WJeq8rvv/Qje8rfckkybMei3ljqmzWl5UbTkgBPJCXFcE/kPPhVu+E+h X-Received: by 2002:a05:600d:10:b0:48f:cfae:b654 with SMTP id 5b1f17b1804b1-48fe60e5537mr301998955e9.1.1779297943989; Wed, 20 May 2026 10:25:43 -0700 (PDT) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Cc: James Hilliard , Richard Henderson Subject: [PATCH v12 20/24] target/mips: add Octeon VMULU instruction Date: Wed, 20 May 2026 19:23:08 +0200 Message-ID: <20260520172313.23777-21-philmd@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260520172313.23777-1-philmd@linaro.org> References: <20260520172313.23777-1-philmd@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=lists1p.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::32a; envelope-from=philmd@linaro.org; helo=mail-wm1-x32a.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: qemu development 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: 1779298009859154100 From: James Hilliard VMULU multiplies the active Octeon multiplier state by rs, adds rt and queued partial products, returns the low result, and advances P[0]/P[1] with carry limbs. Expand the two-limb accumulator operation inline with TCG so the result and partial-product state stay visible to the optimizer. Add a mips64/mips64el linux-user TCG smoke test for representative Octeon multiplier instruction paths. Include hardware-backed regression coverage for MTP0 P1 zeroing. Signed-off-by: James Hilliard Signed-off-by: Richard Henderson Tested-by: Philippe Mathieu-Daud=C3=A9 Signed-off-by: Philippe Mathieu-Daud=C3=A9 --- target/mips/tcg/octeon.decode | 2 + target/mips/tcg/octeon_translate.c | 35 +++++++++++++ tests/tcg/mips/user/isa/octeon/octeon-insns.c | 49 +++++++++++++++++++ 3 files changed, 86 insertions(+) diff --git a/target/mips/tcg/octeon.decode b/target/mips/tcg/octeon.decode index bb0a9f1d99a..36ced0bb333 100644 --- a/target/mips/tcg/octeon.decode +++ b/target/mips/tcg/octeon.decode @@ -55,6 +55,8 @@ MTP0 011100 ..... ..... 00000 00000 001001 @r2 MTP1 011100 ..... ..... 00000 00000 001010 @r2 MTP2 011100 ..... ..... 00000 00000 001011 @r2 =20 +VMULU 011100 ..... ..... ..... 00000 001111 @r3 + &saa base rt @saa ...... base:5 rt:5 ................ &saa SAA 011100 ..... ..... 00000 00000 011000 @saa diff --git a/target/mips/tcg/octeon_translate.c b/target/mips/tcg/octeon_tr= anslate.c index 10c7d18ad4f..a21f96b5c2a 100644 --- a/target/mips/tcg/octeon_translate.c +++ b/target/mips/tcg/octeon_translate.c @@ -264,3 +264,38 @@ static bool trans_mtp(DisasContext *ctx, arg_r2 *a, un= signed int index) TRANS(MTP0, trans_mtp, 0); TRANS(MTP1, trans_mtp, 1); TRANS(MTP2, trans_mtp, 2); + +static bool trans_VMULU(DisasContext *ctx, arg_VMULU *a) +{ + TCGv_i64 x[3], y[3], z[3]; + TCGv_i64 tmp =3D tcg_temp_new_i64(); + TCGv_i64 zero =3D tcg_constant_i64(0); + + z[0] =3D y[0] =3D tcg_temp_new_i64(); + z[1] =3D y[1] =3D tcg_temp_new_i64(); + z[2] =3D y[2] =3D tcg_temp_new_i64(); + x[0] =3D tcg_temp_new_i64(); + x[1] =3D tcg_temp_new_i64(); + x[2] =3D zero; + + /* Z =3D rs * (mpl1 : mpl0) + rt */ + gen_load_gpr(tmp, a->rs); + gen_load_gpr(y[0], a->rt); + tcg_gen_mulu2_i64(x[0], x[1], tmp, oct_mpl[0]); + tcg_gen_mulu2_i64(y[1], y[2], tmp, oct_mpl[1]); + tcg_gen_addN_i64(3, z, y, x); + + /* X =3D=3D (0 : p1 : p0) */ + x[0] =3D oct_p[0]; + x[1] =3D oct_p[1]; + + /* Y =3D=3D (p1 : p0 : tmp) */ + y[0] =3D tmp; + y[1] =3D oct_p[0]; + y[2] =3D oct_p[1]; + + /* (p1 : p0 : rd) =3D Z + (0 : p1 : p0) */ + tcg_gen_addN_i64(3, y, z, x); + gen_store_gpr(tmp, a->rd); + return true; +} diff --git a/tests/tcg/mips/user/isa/octeon/octeon-insns.c b/tests/tcg/mips= /user/isa/octeon/octeon-insns.c index 3c3802ebfee..4647e47f371 100644 --- a/tests/tcg/mips/user/isa/octeon/octeon-insns.c +++ b/tests/tcg/mips/user/isa/octeon/octeon-insns.c @@ -86,6 +86,53 @@ static uint64_t octeon_sne(uint64_t rs, uint64_t rt) return rd; } =20 +static uint64_t octeon_vmulu(uint64_t mpl0, uint64_t rs, uint64_t rt) +{ + uint64_t rd; + + asm volatile( + "move $8, %[mpl0]\n\t" + "move $9, $0\n\t" + ".word 0x71090008\n\t" /* mtm0 $8, $9 */ + "move $8, %[rs]\n\t" + "move $9, %[rt]\n\t" + ".word 0x7109500f\n\t" /* vmulu $10, $8, $9 */ + "move %[rd], $10\n\t" + : [rd] "=3Dr" (rd) + : [mpl0] "r" (mpl0), [rs] "r" (rs), [rt] "r" (rt) + : "$8", "$9", "$10"); + + return rd; +} + +static uint64_t octeon_mtp0_zeroes_p1(void) +{ + uint64_t rd; + + asm volatile( + "move $8, %[mpl0]\n\t" + "move $9, $0\n\t" + ".word 0x71090008\n\t" /* mtm0 $8, $9 */ + "move $8, %[p1]\n\t" + "move $9, $0\n\t" + ".word 0x7109000a\n\t" /* mtp1 $8, $9 */ + "move $8, $0\n\t" + "move $9, $0\n\t" + ".word 0x71090009\n\t" /* mtp0 $8, $9 */ + "move $8, $0\n\t" + "move $9, $0\n\t" + ".word 0x7109500f\n\t" /* vmulu $10, $8, $9 */ + "move $8, $0\n\t" + "move $9, $0\n\t" + ".word 0x7109500f\n\t" /* vmulu $10, $8, $9 */ + "move %[rd], $10\n\t" + : [rd] "=3Dr" (rd) + : [mpl0] "r" (0ULL), [p1] "r" (1ULL) + : "$8", "$9", "$10"); + + return rd; +} + int main(void) { assert(octeon_baddu(0x123, 0x0f0) =3D=3D 0x13); @@ -95,6 +142,8 @@ int main(void) assert(octeon_seq(0xabc, 0xdef) =3D=3D 0); assert(octeon_sne(0xabc, 0xabc) =3D=3D 0); assert(octeon_sne(0xabc, 0xdef) =3D=3D 1); + assert(octeon_vmulu(5, 7, 11) =3D=3D 46); + assert(octeon_mtp0_zeroes_p1() =3D=3D 0); =20 return 0; } --=20 2.53.0 From nobody Sat May 30 17:44:11 2026 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=1779298004; cv=none; d=zohomail.com; s=zohoarc; b=cZhtd0/AYVAVUpMB0Q1ByxvfUHVt2VHn1Hbp0/06FB4dLL97zqVjg0os3M+NPJiQTLe6rG4gsY4gBS1dcJLPKa6j83nHD0bKlhX7PSwA1Wdafu6VNuHUYFDHvU8PfFrY3bRoLACsm8jFm6K/Gnu3Nbum9BCAdd4P8jHOvoxWEp0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1779298004; 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=iA7qLJwHyUwdD+HzuVX0t5HZjxEJazI/MyZxt4BIDYc=; b=BwHRHCSv8NpywMndzlLtiq7GykErvh0w+Kp+cisaZnYFv60haG2uF1Ssj0zQ7GGZOthuFWxOhIQRN+KUJ8CDyXxq3CLJOCnOjq0KswPPbFuhyqC5yrQeReiLULWHwI65MSzY8LeOu0LmcDL5sbvH3ApmT6ZA8xMWNPb4fJ5tqow= 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 lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1779298004545783.037980577061; Wed, 20 May 2026 10:26:44 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wPkgC-0006tD-GA; Wed, 20 May 2026 13:26:00 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wPkg8-0006U0-4W for qemu-devel@nongnu.org; Wed, 20 May 2026 13:25:56 -0400 Received: from mail-wm1-x335.google.com ([2a00:1450:4864:20::335]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wPkg6-0004Kw-5q for qemu-devel@nongnu.org; Wed, 20 May 2026 13:25:55 -0400 Received: by mail-wm1-x335.google.com with SMTP id 5b1f17b1804b1-4891c0620bcso33751255e9.1 for ; Wed, 20 May 2026 10:25:53 -0700 (PDT) Received: from localhost.localdomain (88-187-86-199.subs.proxad.net. [88.187.86.199]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-48ffed68baesm138748665e9.0.2026.05.20.10.25.49 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Wed, 20 May 2026 10:25:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1779297952; x=1779902752; 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=iA7qLJwHyUwdD+HzuVX0t5HZjxEJazI/MyZxt4BIDYc=; b=UyWHmfeNp/1q6RGvobL4FNo40eO8rzl7tHGHzDv3dr4OmL3X5wcWt5llDad2KFSf3c PshUDYuZjESBUgSgQuOaEnvUMsWI5V7tRot2BcqKv+Zabg5rx/Et6sj0W0ZUNynRIncZ QOPT605marryzy3vN49rwZcXbSgCDrSY3gWFOsA/+QKlrW9b+0qF5xzGg3v3U9COkqqd mVx85ZkwshhvFKiz4Oyln+mQQ8N9iWI857DvS9CUml0HryxnwSOsuiQ9fVe1gb+i90tA NnH+WDCxLNVcPVDOdQehLKhYL0aiDtsN7mJif0zQ7KG93f89qZ6rW49mDlTDjs6r/h+7 ZHDA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1779297952; x=1779902752; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=iA7qLJwHyUwdD+HzuVX0t5HZjxEJazI/MyZxt4BIDYc=; b=qKsz7zNdQIpstwtotDIt7mtLpAZJkxZPLrizDr1eUyopyBqob7kAtJvonH9yI+XAmN Kdux4nhvxs5zB4yfRt2coHyhWDo5VUjOjQy0H/Nx/dJLH0PsSHmjJ0+W197+oTeHxxbw Uew1zC7VpfGy6CIhsus/g975n5SexE7TujL+2RSmo9t9SCJpxwR5AmjmXo0K6ileDiJa 3UHYOt0FgTLbVBYDlBb+jVbU+v94ZL2jnhzszHQBL+L8d8MyYOfW9xeU163SEqMVhXjy WyomUyil8LAvbpT/x+cOr98bDHvesiw6AHpXTczcY7kucbzmaywRmJbSWjgkMWQVf+ko E73A== X-Gm-Message-State: AOJu0YzJkB9l6n3Eg2TRQxpHgZc9yZZHgICGcJDcto5L5uq/qjc5pd3C w8qTGghmPo+5uHxw0ze2J7AO9yMRNL7bvieFc3rd141K5c6sBlwHXWYQy8FsnuzvlJQNuyFQ9v9 98NUIddM= X-Gm-Gg: Acq92OFu3cM3HwVSHTNZ5vrDB2AUjkc8LPXinkZisbOENKh6XdSjX0V9UkdcCIFnhzB wHYD+Sy+bv7L8e86wQaxi9t/t85voTwz8+yOEc6IjWoFVQLjhC7xG+HLWhhdkLlvipURKYPwytQ YjTGQjsl9KPhUdjBfhZ0ZNiza2+v8jSUgHs04tl2TLNvJwnaGzk/3TLCy6JgCBjyiKyMlHkudI1 /mvsqnK6a86J2wgC9coit9QAM8ViceXCnLG59rJLL8CfcsMN0SlP8hAcL3vrdJR8cNC3ynSDOSJ p6GwcLbIqHnL/QEm5Yp17HJiHPoh2mTlQL5w7pHYjBtVTneYO55yVXppyRi+cDhIQVamEMnUwLm mPFQ+r8ZuX82VKh40VwXfgB9wIvquAR+pdx9coSiy91OYG2jl1GWJX8f1axhPb9OyBjEiJ5mIHJ qe7Myw+Ex2k2pRrYA9Go+uirbRAuQtvF/Si1HukG+uHiAS/2Bfiw3+Z6Xiqyl/0Ilww/o/uufF X-Received: by 2002:a05:600c:858d:b0:48f:e230:80a2 with SMTP id 5b1f17b1804b1-48fe65148e1mr305030595e9.32.1779297952113; Wed, 20 May 2026 10:25:52 -0700 (PDT) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Cc: James Hilliard , Richard Henderson Subject: [PATCH v12 21/24] target/mips: add Octeon VMM0 instruction Date: Wed, 20 May 2026 19:23:09 +0200 Message-ID: <20260520172313.23777-22-philmd@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260520172313.23777-1-philmd@linaro.org> References: <20260520172313.23777-1-philmd@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=lists1p.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::335; envelope-from=philmd@linaro.org; helo=mail-wm1-x335.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: qemu development 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: 1779298005850154100 From: James Hilliard VMM0 multiplies MPL[0] by rs, adds rt and the queued P[0] partial product, returns the low result, and feeds that result back into MPL[0]. It sets MPL[1] to zero and clears partial products. Include hardware-backed regression coverage for VMM0 MPL1 zeroing. Reviewed-by: Richard Henderson Signed-off-by: James Hilliard Signed-off-by: Richard Henderson Tested-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Philippe Mathieu-Daud=C3=A9 Signed-off-by: Philippe Mathieu-Daud=C3=A9 --- target/mips/tcg/octeon.decode | 1 + target/mips/tcg/octeon_translate.c | 16 ++++++ tests/tcg/mips/user/isa/octeon/octeon-insns.c | 55 +++++++++++++++++++ 3 files changed, 72 insertions(+) diff --git a/target/mips/tcg/octeon.decode b/target/mips/tcg/octeon.decode index 36ced0bb333..f9c32e1dee1 100644 --- a/target/mips/tcg/octeon.decode +++ b/target/mips/tcg/octeon.decode @@ -56,6 +56,7 @@ MTP1 011100 ..... ..... 00000 00000 001010 @r2 MTP2 011100 ..... ..... 00000 00000 001011 @r2 =20 VMULU 011100 ..... ..... ..... 00000 001111 @r3 +VMM0 011100 ..... ..... ..... 00000 010000 @r3 =20 &saa base rt @saa ...... base:5 rt:5 ................ &saa diff --git a/target/mips/tcg/octeon_translate.c b/target/mips/tcg/octeon_tr= anslate.c index a21f96b5c2a..94f3cf9edd8 100644 --- a/target/mips/tcg/octeon_translate.c +++ b/target/mips/tcg/octeon_translate.c @@ -299,3 +299,19 @@ static bool trans_VMULU(DisasContext *ctx, arg_VMULU *= a) gen_store_gpr(tmp, a->rd); return true; } + +static bool trans_VMM0(DisasContext *ctx, arg_VMM0 *a) +{ + TCGv_i64 tmp =3D tcg_temp_new_i64(); + + gen_load_gpr(tmp, a->rs); + tcg_gen_mul_i64(oct_mpl[0], oct_mpl[0], tmp); + gen_load_gpr(tmp, a->rt); + tcg_gen_add_i64(oct_mpl[0], oct_mpl[0], tmp); + tcg_gen_add_i64(oct_mpl[0], oct_mpl[0], oct_p[0]); + gen_store_gpr(oct_mpl[0], a->rd); + + tcg_gen_movi_i64(oct_mpl[1], 0); + octeon_zero_partial_product_state(); + return true; +} diff --git a/tests/tcg/mips/user/isa/octeon/octeon-insns.c b/tests/tcg/mips= /user/isa/octeon/octeon-insns.c index 4647e47f371..9153e37e9e0 100644 --- a/tests/tcg/mips/user/isa/octeon/octeon-insns.c +++ b/tests/tcg/mips/user/isa/octeon/octeon-insns.c @@ -105,6 +105,59 @@ static uint64_t octeon_vmulu(uint64_t mpl0, uint64_t r= s, uint64_t rt) return rd; } =20 +static uint64_t octeon_vmm0(uint64_t mpl0, uint64_t p0, + uint64_t rs, uint64_t rt) +{ + uint64_t rd; + + asm volatile( + "move $8, %[mpl0]\n\t" + "move $9, $0\n\t" + ".word 0x71090008\n\t" /* mtm0 $8, $9 */ + "move $8, %[p0]\n\t" + "move $9, $0\n\t" + ".word 0x71090009\n\t" /* mtp0 $8, $9 */ + "move $8, %[rs]\n\t" + "move $9, %[rt]\n\t" + ".word 0x71095010\n\t" /* vmm0 $10, $8, $9 */ + "move %[rd], $10\n\t" + : [rd] "=3Dr" (rd) + : [mpl0] "r" (mpl0), [p0] "r" (p0), + [rs] "r" (rs), [rt] "r" (rt) + : "$8", "$9", "$10"); + + return rd; +} + +static uint64_t octeon_vmm0_zeroes_mpl1(void) +{ + uint64_t rd; + + asm volatile( + "move $8, %[mpl0]\n\t" + "move $9, $0\n\t" + ".word 0x71090008\n\t" /* mtm0 $8, $9 */ + "move $8, %[mpl1]\n\t" + "move $9, $0\n\t" + ".word 0x7109000c\n\t" /* mtm1 $8, $9 */ + "move $8, %[vmm0_rs]\n\t" + "move $9, $0\n\t" + ".word 0x71095010\n\t" /* vmm0 $10, $8, $9 */ + "move $8, %[vmulu_rs]\n\t" + "move $9, $0\n\t" + ".word 0x7109500f\n\t" /* vmulu $10, $8, $9 */ + "move $8, $0\n\t" + "move $9, $0\n\t" + ".word 0x7109500f\n\t" /* vmulu $10, $8, $9 */ + "move %[rd], $10\n\t" + : [rd] "=3Dr" (rd) + : [mpl0] "r" (1ULL), [mpl1] "r" (1ULL), + [vmm0_rs] "r" (2ULL), [vmulu_rs] "r" (1ULL) + : "$8", "$9", "$10"); + + return rd; +} + static uint64_t octeon_mtp0_zeroes_p1(void) { uint64_t rd; @@ -143,6 +196,8 @@ int main(void) assert(octeon_sne(0xabc, 0xabc) =3D=3D 0); assert(octeon_sne(0xabc, 0xdef) =3D=3D 1); assert(octeon_vmulu(5, 7, 11) =3D=3D 46); + assert(octeon_vmm0(5, 13, 7, 11) =3D=3D 59); + assert(octeon_vmm0_zeroes_mpl1() =3D=3D 0); assert(octeon_mtp0_zeroes_p1() =3D=3D 0); =20 return 0; --=20 2.53.0 From nobody Sat May 30 17:44:11 2026 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=1779298007; cv=none; d=zohomail.com; s=zohoarc; b=hN5MUJ6kviLi20C3Vof+xxeQhrYTzKGi5FPH6zk3Zs+4OxvBHscCrfngKOdylqZ+xnmOd8WrKl3YZIqUJnmmagAhF4AeafXr/q06Cs4sXSqXlZF+Zd/9GyLye+jdl4UAm1EMqSvql8ZyIKYH4hUrXwkDyqeVpQ7EWRcFjXYUlbo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1779298007; 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=m5dlJjCibethqxS9LdN7+k719GiLxTJiHtOLjZHDypI=; b=KdAEAJtgOZ9TsO1TTvYU0ngEs075bEhed1z/+CpIAhLcsy25e8Izk1SdibmHXS8aK3l5m4KJnn9p7wrw0MXEn2GjcBnhn090PeGu5SrVV492QaURUUBiUHGaGVMHjmiLYJRth0Uonx6B7CUWR/bAS9+JHkl+ntePANgK0pfrcaA= 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 lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1779298006933205.30358285861746; Wed, 20 May 2026 10:26:46 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wPkgO-0007Dy-4g; Wed, 20 May 2026 13:26:13 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wPkgF-00074t-5Z for qemu-devel@nongnu.org; Wed, 20 May 2026 13:26:03 -0400 Received: from mail-wm1-x329.google.com ([2a00:1450:4864:20::329]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wPkgD-0004MO-Ck for qemu-devel@nongnu.org; Wed, 20 May 2026 13:26:02 -0400 Received: by mail-wm1-x329.google.com with SMTP id 5b1f17b1804b1-4891e5b9c1fso45619765e9.2 for ; Wed, 20 May 2026 10:26:00 -0700 (PDT) Received: from localhost.localdomain (88-187-86-199.subs.proxad.net. [88.187.86.199]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-49033d8e24bsm5710125e9.10.2026.05.20.10.25.58 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Wed, 20 May 2026 10:25:58 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1779297959; x=1779902759; 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=m5dlJjCibethqxS9LdN7+k719GiLxTJiHtOLjZHDypI=; b=AVr45Iuyspuc09RLrpgUJPBEnALWLykzr9//fk4s/R8gVgvTjtw28x34NDI2EcMh4W AnQw4794Ea+gy19SngrOwpI6VIsu/TyhkEsh9MJwmtJvI1jVtmMslcXT1KQ0Zo0YY8V2 rV5Y14JcZE0vbNCX1MuIP6sxJZyenPKNH9g9FG/heqKlaNx6C+iLg2tt7xdOpcoU4NUb 7r2/dWHs/RNiQ64l6R86FyYUjXbBeSF6H1OXnkMxHvRMcZJWRmgCGUcSS43XK/gBBE58 b+8HwpeCFXZimUzWrlzTngS95cQgKCGHIyfzn86Fcno0xJMWNhu8tHmMwROr2GzOX05H 0SHw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1779297959; x=1779902759; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=m5dlJjCibethqxS9LdN7+k719GiLxTJiHtOLjZHDypI=; b=MR1KEyWPvq4L9T5BoqIjIq1JYXCihC5pQfJOkaBptxxDWFLJfygzZH25T6zUj7ooat RAa/q3hS7L36tzqqfOcUQTW+2TPzQR9cjxIA9yX7Wfj+mDJzibeBlvLYFxGJR+wsNTMW GcVTFaqjlVBqKzZ0+0s4xu9dGrrKO7HfdxmfhwhJmPTMU34BCcR0y8/zR/EPLeCuhjfr lL6COM+dzXiyRwUA5LDpQoR8a/51SyXL+p11RAzsY188D4U51Hi8GAzWTMzEPT42nomo QKGFIXJlBcLlPqHNnnAx8gths4EB5RsUBxEnK+Z4IHb4gqHYNahEzbZWs+ySHPqB9fEH 3eeQ== X-Gm-Message-State: AOJu0YxSx0MaNYORQJuQt8mv6pGF8oWAsD472OTLZILKKXEVmT9Kx0cv I1v0dSxlNjSwyoCw82hOBycC7io7meirR8Ukou90PNFbllicKN1YDcTkg6XmW1GBoSmSHIBHeJX rP8FailY= X-Gm-Gg: Acq92OGZsBj+iH4Hj8Ykml35Hplg33+b4yJK3ZCvI47tmpFl4y538ogyXQ4isZAdy6W N2PpKeQ2TbtwITp4k4QXQacnq7u74yH+TqnYN41pBdC5DevGSu9N9Ka1JUtxsjnxr+sUBW/MTh1 24sLENRZ7FdXjJ7gB3aTpoz9QsE7L8HFMgLx8spImWImQR+9ashlSprkma5B/R6oikDYhQmsI7w 5HQ+ZDIex0vCzQbabLq0xIj6uDdMGPQiu2QIe5FdmAw7xlxhM+tB7qnL6fNlmhF9o4Ol6O6985R o7IpoPU/JwM43FXdBJkQNk1gKbmgIyGDD5JB4i868NF7JAxYcXPMbYO7sW0HdcndWaUuVUj7vJv 35Fmcu94XIiE4cUOOnPvDzBeVtl/rVqCSXesRg1k/dh8mS+Be3Nqax/s8Beel772zWW22/sB8gw 4pcGqQVCrGS2WrOWE1x1+dVxbavIsbyh3gIimangCLb210RudvE8NLx8joOSUKKXiUuMjH4MY/g NF+00gNx7w= X-Received: by 2002:a05:600c:34cf:b0:48e:5990:9698 with SMTP id 5b1f17b1804b1-48fe651588fmr397605155e9.24.1779297959096; Wed, 20 May 2026 10:25:59 -0700 (PDT) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Cc: James Hilliard , Richard Henderson Subject: [PATCH v12 22/24] target/mips: add Octeon V3MULU instruction Date: Wed, 20 May 2026 19:23:10 +0200 Message-ID: <20260520172313.23777-23-philmd@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260520172313.23777-1-philmd@linaro.org> References: <20260520172313.23777-1-philmd@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=lists1p.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::329; envelope-from=philmd@linaro.org; helo=mail-wm1-x329.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: qemu development 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: 1779298007877158500 From: James Hilliard V3MULU extends VMULU across the full Octeon3 multiplier state, adding rt and queued partial products. Return the low result while shifting the remaining accumulated limbs back into P[0] through P[5]. Reviewed-by: Richard Henderson Signed-off-by: James Hilliard Signed-off-by: Richard Henderson Signed-off-by: Philippe Mathieu-Daud=C3=A9 --- target/mips/tcg/octeon.decode | 1 + target/mips/tcg/octeon_translate.c | 40 ++++++++++++++++++++++++++++++ 2 files changed, 41 insertions(+) diff --git a/target/mips/tcg/octeon.decode b/target/mips/tcg/octeon.decode index f9c32e1dee1..4d0ad058347 100644 --- a/target/mips/tcg/octeon.decode +++ b/target/mips/tcg/octeon.decode @@ -57,6 +57,7 @@ MTP2 011100 ..... ..... 00000 00000 001011 @r2 =20 VMULU 011100 ..... ..... ..... 00000 001111 @r3 VMM0 011100 ..... ..... ..... 00000 010000 @r3 +V3MULU 011100 ..... ..... ..... 00000 010001 @r3 =20 &saa base rt @saa ...... base:5 rt:5 ................ &saa diff --git a/target/mips/tcg/octeon_translate.c b/target/mips/tcg/octeon_tr= anslate.c index 94f3cf9edd8..7ec942fa347 100644 --- a/target/mips/tcg/octeon_translate.c +++ b/target/mips/tcg/octeon_translate.c @@ -315,3 +315,43 @@ static bool trans_VMM0(DisasContext *ctx, arg_VMM0 *a) octeon_zero_partial_product_state(); return true; } + +static bool trans_V3MULU(DisasContext *ctx, arg_V3MULU *a) +{ + TCGv_i64 x[7], y[7], z[7]; + TCGv_i64 tmp =3D tcg_temp_new_i64(); + + for (int i =3D 0; i < 7; ++i) { + z[i] =3D tcg_temp_new_i64(); + y[i] =3D tcg_temp_new_i64(); + } + memcpy(&x[0], z, 6 * sizeof(TCGv_i64)); + x[6] =3D tcg_constant_i64(0); + + /* + * Z =3D rs * mpl -- 64x384->448 bit multiply + * Compute even partial products into X and odd partial products into = Y. + * Include RT into the odd partial products, which are 0 in bits [63:0= ]. + */ + gen_load_gpr(tmp, a->rs); + gen_load_gpr(y[0], a->rt); + for (int i =3D 0; i < 6; i +=3D 2) { + tcg_gen_mulu2_i64(x[i + 0], x[i + 1], tmp, oct_mpl[i]); + tcg_gen_mulu2_i64(y[i + 1], y[i + 2], tmp, oct_mpl[i + 1]); + } + + /* Sum even and odd to produce final product, plus rt. */ + tcg_gen_addN_i64(7, z, x, y); + + /* X =3D=3D (0 : p5 : p4 : p3 : p2 : p1 : p0) -- x[6] is still 0 */ + memcpy(&x[0], oct_p, 6 * sizeof(TCGv_i64)); + + /* Y =3D=3D (p5 : p4 : p3 : p2 : p1 : p0 : tmp) */ + memcpy(&y[1], oct_p, 6 * sizeof(TCGv_i64)); + y[0] =3D tmp; + + /* (p* : rd) =3D (0 : p*) + (rs * mpl + rt) */ + tcg_gen_addN_i64(7, y, x, z); + gen_store_gpr(tmp, a->rd); + return true; +} --=20 2.53.0 From nobody Sat May 30 17:44:11 2026 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=1779297992; cv=none; d=zohomail.com; s=zohoarc; b=lqV40mPltl8NMYqZCvepqVMwKlpZvC0AA6W3DYK9d4rEeL6JGkgTcqCcOWQc15WFLbYsqKKScYfwIiTO2SuZm7GrkqkFf3X0iB6Gc/V0htnmCGXcIS71LLAj7D0ittrzHVuDw2WrBadsClwfta3nj/KueewzGJ1i1iKKms6LP3w= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1779297992; 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=xXzCopTSmSQWKIgzAKEm3uSJ5DjZpN+QCvZ2us+CYFc=; b=BoK0BTvb9YDD55xlDyFY4AzDBOkZlr6kaic84mI4pWjECNc7dprE0cAQz3D3JksHCH89wDfmG4vzhFBEjw8jnW47GG7RrUtT71M/skMERRR3VZqrurc1HIAaw0NwvHIx/PaaSvVPa2kYH5UtOxpU3N8JBVnpZ/J6i+ikwy5ZCxE= 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 lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1779297992447684.4408403691211; Wed, 20 May 2026 10:26:32 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wPkgd-0007OY-Cs; Wed, 20 May 2026 13:26:29 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wPkgM-0007Ff-Ki for qemu-devel@nongnu.org; Wed, 20 May 2026 13:26:12 -0400 Received: from mail-wm1-x32e.google.com ([2a00:1450:4864:20::32e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wPkgK-0004NJ-Gr for qemu-devel@nongnu.org; Wed, 20 May 2026 13:26:10 -0400 Received: by mail-wm1-x32e.google.com with SMTP id 5b1f17b1804b1-48fe26a177cso38963365e9.1 for ; Wed, 20 May 2026 10:26:08 -0700 (PDT) Received: from localhost.localdomain (88-187-86-199.subs.proxad.net. [88.187.86.199]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-49033d52c8bsm7019815e9.8.2026.05.20.10.26.05 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Wed, 20 May 2026 10:26:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1779297967; x=1779902767; 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=xXzCopTSmSQWKIgzAKEm3uSJ5DjZpN+QCvZ2us+CYFc=; b=AJ2qzkYkxwZ9Baig3WTkXeum5Bof4RwhvugbOnX3RSi1jsZ2mzuVb2ZWAnzUx/YoqW rIFnDQxV/iViEqxXzg2qyJ3pk/yhCCny8imHYa6CTGArvKlGDWrjx2FnColET1SIB9kN NLz/GpozjCnk+KqfH5pMK7MbOC9NeOseG1MXnJcMhvZD0ewOlUH2KuJyO25fmkLuZcnv g+Ps68vQqJ8p+ZuPZRvrmfCU/JyoUYj6mU+bwY9ADU5fKUa9VI7XF+ksD9Qy2fnWfqj6 n+J0bYnKmy10ZbkjU30GpPEYwulKp414dglakcehIPZvEUoPxG/K96dxvqT289gmvJqP /eTA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1779297967; x=1779902767; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=xXzCopTSmSQWKIgzAKEm3uSJ5DjZpN+QCvZ2us+CYFc=; b=Ia7T1/+UyoERnYPkYfKpYCq3aNhkeaQg27at7I6lfEvprBrVPrqvK1vLIsmws5sS4U SrBuEOPhXbv4o44mjf3EUo92lYR4MRkzA9QH3ffeCzuTppzJ8erEvUtqH/+tEzdofqmv u/g4ZFKHn6ZGMELQ+W3iHj8kFdCRifQRKvquL6qdpDBjjbowAK3rUM6vnlyrcP417S99 wZgBbnR5YJWirgfJNN303g7vVmt8kFNhnNAuQpzeuK5UxeqoFtwet6ev8ZfmavoTHTzU 6ZoLIG3xAbyMptajPov9VDWCGCZ47ixgqrcQc+6jQLeViMMmcVD5acyQa6lzzQ6eeplj vNPQ== X-Gm-Message-State: AOJu0Yzeq4Xr4PTzdzkIXG7khTkMPJpNlAEE1KItQXyJN0l5QN8Y3M6t JmgSvIw4HQBbD6gj83JSI+2pBOrzQe+3+f1/Yp9xvK1WW1ikKASuK7aAoTkW7+++v6uWPkVAdDG tLThPNeQ= X-Gm-Gg: Acq92OGLTmZgQYibpE7YD/kp0XIkMM1m8Jcc2u0ouNXFnUNDnPiUeKNiCXy+mVwDISG HdJpPTpk1D5S57dy1SoKMMP77LHdTD7KPJsl+fAxq6PDQAUd3XreUfXmO5Sp1RBj4pM9pYRfTCM L5Hc2kTYJO2oU/bDQspE2gJjLK1azEcV1OiP0bR3yOs8LvgizLfZw9BCLf3eY33FGhVQVdurOzt QAi44yDutsV4WZdcic5HFBZ7F/chawBBkSZvz2+J1RXwYuXf010XargEKq38VUsigLRbufQy7Fb feWoQfX2r6rWXYDF+BW+ChuXxxD8j9EdqmAgd51x4/F+gZeCRzqSMPUfyV1UZ91wSdM2Dz85i5n U/nCZG9JC+2CAtz9JkOniPi7wtjqyh83pOY9Nu6yku0ypqX399figYFkftxiadOqIWb1bKbLSpk goSvm4SRSTqxKu/HeLFdhFlGIYOdNl5laTQ3w4BVccQttEZQVqxekgw2liavcRR6gyZ+Q88gzc X-Received: by 2002:a05:600c:3e1b:b0:48a:6fd4:d3d4 with SMTP id 5b1f17b1804b1-48fe6626c48mr340766155e9.29.1779297966605; Wed, 20 May 2026 10:26:06 -0700 (PDT) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Cc: James Hilliard , Richard Henderson Subject: [PATCH v12 23/24] target/mips: add Octeon QMAC instructions Date: Wed, 20 May 2026 19:23:11 +0200 Message-ID: <20260520172313.23777-24-philmd@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260520172313.23777-1-philmd@linaro.org> References: <20260520172313.23777-1-philmd@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=lists1p.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::32e; envelope-from=philmd@linaro.org; helo=mail-wm1-x32e.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: qemu development 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: 1779297993658158500 From: James Hilliard QMAC.0x and QMACS.0x multiply the selected signed Q15 halfword lane from rs by rt<15:0> and accumulate the Q31 product into the Octeon HI/LO accumulator state. QMAC updates the full 64-bit HI/LO accumulator. QMACS saturates the 32-bit Q31 result in LO and keeps HI<0> as the sticky saturation flag. Reviewed-by: Richard Henderson Signed-off-by: James Hilliard Signed-off-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daud=C3=A9 [PMD: Add min32/max32 in trans_QMACS()] Signed-off-by: Philippe Mathieu-Daud=C3=A9 --- target/mips/tcg/octeon.decode | 4 ++ target/mips/tcg/octeon_translate.c | 62 ++++++++++++++++++++++++++++++ 2 files changed, 66 insertions(+) diff --git a/target/mips/tcg/octeon.decode b/target/mips/tcg/octeon.decode index 4d0ad058347..2d02b4e0bc3 100644 --- a/target/mips/tcg/octeon.decode +++ b/target/mips/tcg/octeon.decode @@ -28,6 +28,8 @@ BBIT 11 set:1 . 10 rs:5 ..... offset:s16 p=3D%bbi= t_p # SEQI rt, rs, immediate # SNE rd, rs, rt # SNEI rt, rs, immediate +# QMAC.0x rs, rt +# QMACS.0x rs, rt =20 @r3 ...... rs:5 rt:5 rd:5 ..... ...... &cmpi rs rt imm @@ -43,6 +45,8 @@ SEQ 011100 ..... ..... ..... 00000 101010 @r3 SNE 011100 ..... ..... ..... 00000 101011 @r3 SEQI 011100 rs:5 rt:5 imm:s10 101110 &cmpi SNEI 011100 rs:5 rt:5 imm:s10 101111 &cmpi +QMACS 011100 rs:5 rt:5 00000 000 lane:2 010010 +QMAC 011100 rs:5 rt:5 00000 100 lane:2 010010 =20 &r2 rs rt @r2 ...... rs:5 rt:5 ..... ..... ...... &r2 diff --git a/target/mips/tcg/octeon_translate.c b/target/mips/tcg/octeon_tr= anslate.c index 7ec942fa347..90bd68cbf25 100644 --- a/target/mips/tcg/octeon_translate.c +++ b/target/mips/tcg/octeon_translate.c @@ -355,3 +355,65 @@ static bool trans_V3MULU(DisasContext *ctx, arg_V3MULU= *a) gen_store_gpr(tmp, a->rd); return true; } + +static bool trans_QMAC(DisasContext *ctx, arg_QMAC *a) +{ + TCGv_i64 t0 =3D tcg_temp_new_i64(); + TCGv_i64 t1 =3D tcg_temp_new_i64(); + + gen_load_gpr(t0, a->rt); + gen_load_gpr(t1, a->rs); + + /* t0 =3D rt<0> * rs * 2 */ + tcg_gen_ext16s_i64(t0, t0); + tcg_gen_sextract_i64(t1, t1, a->lane * 16, 16); + tcg_gen_mul_i64(t0, t0, t1); + tcg_gen_add_i64(t0, t0, t0); + + /* Saturate -0x8000 * -0x8000 * 2 =3D 0x80000000 -> 0x7fffffff */ + tcg_gen_smin_i64(t0, t0, tcg_constant_i64(INT32_MAX)); + + /* HI:LO +=3D t0 */ + tcg_gen_concat32_i64(t1, cpu_LO[0], cpu_HI[0]); + tcg_gen_add_i64(t0, t0, t1); + tcg_gen_sextract_i64(cpu_LO[0], t0, 0, 32); + tcg_gen_sextract_i64(cpu_HI[0], t0, 32, 32); + return true; +} + +static bool trans_QMACS(DisasContext *ctx, arg_QMACS *a) +{ + TCGv_i64 min32 =3D tcg_constant_i64(INT32_MIN); + TCGv_i64 max32 =3D tcg_constant_i64(INT32_MAX); + TCGv_i64 t0 =3D tcg_temp_new_i64(); + TCGv_i64 t1 =3D tcg_temp_new_i64(); + + gen_load_gpr(t0, a->rt); + gen_load_gpr(t1, a->rs); + + /* t0 =3D rt<0> * rs * 2 */ + tcg_gen_ext16s_i64(t0, t0); + tcg_gen_sextract_i64(t1, t1, a->lane * 16, 16); + tcg_gen_mul_i64(t0, t0, t1); + tcg_gen_add_i64(t0, t0, t0); + + /* + * Saturate -0x8000 * -0x8000 * 2 =3D 0x80000000 -> 0x7fffffff. + * Accumulate overflow in HI[0]. + */ + tcg_gen_smin_i64(t1, t0, max32); + tcg_gen_setcond_i64(TCG_COND_NE, t0, t0, t1); + tcg_gen_or_i64(cpu_HI[0], cpu_HI[0], t0); + + /* + * LO =3D sat32(LO + t0) + * Accumulate overflow in HI[0]. + */ + tcg_gen_ext32s_i64(t0, cpu_LO[0]); + tcg_gen_add_i64(t0, t0, t1); + tcg_gen_smin_i64(cpu_LO[0], t0, max32); + tcg_gen_smax_i64(cpu_LO[0], cpu_LO[0], min32); + tcg_gen_setcond_i64(TCG_COND_NE, t0, t0, cpu_LO[0]); + tcg_gen_or_i64(cpu_HI[0], cpu_HI[0], t0); + return true; +} --=20 2.53.0 From nobody Sat May 30 17:44:11 2026 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=1779298098; cv=none; d=zohomail.com; s=zohoarc; b=imV0GvsHRT8WeFATYQCpxaDObZ9XC7AHURXdoZgHAFVTflzzekCy/YzsNSBS6LRuNUkUBVhjIIPgVGxR2KWnn+qFmFoRkVluUVbRktPtuhuxFE0eH68Jsdf5AbRTIS0R/8KJ5uHA0Jw9+fWtbZrwQC/QqwOEIMR4X3WEpXJ8gnI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1779298098; 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=oZUn1sDP88Z8+UtSPwDII7B77ZqjW4rgF/4PuSkFRU4=; b=Q8nxW/xQaGlkFGYsfGINZA8mSApp1O2cdRrSuY6i2LGG97YKn131OxRKXCIFjkoc16mOimjfBFUgUOnGtckLs4O0BrxswQ41uxgXGtWcPC1Bg+wCTb9Cz/a8eQr+JG0sdH8KD4gu0cdDEbtVsJ+5xyebfmG7srDETwCNPy3TBP0= 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 lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1779298098088441.26955746101; Wed, 20 May 2026 10:28:18 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wPkgl-0007oz-Cb; Wed, 20 May 2026 13:26:35 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wPkgT-0007MO-Rv for qemu-devel@nongnu.org; Wed, 20 May 2026 13:26:25 -0400 Received: from mail-wm1-x334.google.com ([2a00:1450:4864:20::334]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wPkgR-0004Ob-QX for qemu-devel@nongnu.org; Wed, 20 May 2026 13:26:17 -0400 Received: by mail-wm1-x334.google.com with SMTP id 5b1f17b1804b1-48a7fe4f40bso61690155e9.0 for ; Wed, 20 May 2026 10:26:15 -0700 (PDT) Received: from localhost.localdomain (88-187-86-199.subs.proxad.net. [88.187.86.199]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-4902ea3d876sm16012485e9.30.2026.05.20.10.26.12 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Wed, 20 May 2026 10:26:12 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1779297974; x=1779902774; 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=oZUn1sDP88Z8+UtSPwDII7B77ZqjW4rgF/4PuSkFRU4=; b=Q9gdpTp3VoXu44FiUqlL0kY7boe+KGEadSKeFOvB9+uF53hV949S0h3UFAoGjX+DJX y5ijH/ZcmI+e1cAokyMjZnkdQ+yZkEnku0yfed/KeOzI6byH0OdA7SaosY3TKyib58Aq t0KMplH4KSC6cJ0VONpiLTV5Z8qGqWebwAUSy3+tMxBy05HzNjE++3zooC1uParFeE94 JSf6lb//RarFg2us56Pkh2hM5eh1PFxtciuIPtIrtlj4aJxTnZu0TwVbw6hrVLelt6Ze qcERDGzrmjgPeL7zKWfNW809kphq8Dvq0AxIFv3Wdq0wIDWnJjE+kGQED6erHqlFZDo+ Q7UA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1779297974; x=1779902774; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=oZUn1sDP88Z8+UtSPwDII7B77ZqjW4rgF/4PuSkFRU4=; b=EVFOPrDgs/qBMDIRHtVCsueprWcevqOm1BNTvASjVi1QHOMj0K9VUCkpktNBvbMWxV eW6qX4zbDR5zUcBNPScxjTQCWtlOTHaGm2J9dS8Be9S1I2SihvbIZWF9RMms9XfukOCK yWPxT49oL+62PL76hKS4WtZDjgEYoFnbWHj7JsQ2zorCtkxti5S9nVQmHlA6k2bYE9QK xN2aEglxCm/zkzv+yuMqz5qM5ZA4Dd5Zkh6+Z8ubni2x7+hjZQ2oaKuOxeSPddewPqwa nomh6av3SNz62jdzXpCO/6Kt9RgZUK5UYn53hdY1WETCO6tvDzPuupfujKukkUpUgHaC be6w== X-Gm-Message-State: AOJu0Yzhx/vgAqXIpNSzIddb66wnCcpwMXEmsoHyDaBITPDaJOleFV5X XhLdGQh3bAZBXIiAEiHq+cNcneqDiEYOYBd9W+RSNwCoxC35KaT8qef/gC/Iu3jwtGKwng55s8C mwNrmyOE= X-Gm-Gg: Acq92OEVERAmlKv0M8NjUK3fgNvONgO2JqH/kphRoW5VjmPmmdHEGH/0afa2nkySL6C AuBnhAoREz8ZgaFwr5APlowTYEhni75dYFlqYSL6hDEMIF/v489L8EsVrJznI/nuukSrkhnDj9Q ZOIC4VxDO3VC0gvoOgXJd3b9r2oXsf2wAwIO2GWLGhott1pI/44W5kdlu0I47Ls1V4CIvd2cRI7 itFD7et392qIa/lO59OVMC2oGNJgwvFlMiEeI1ahijXrMOiHDaH9egklZ4jpcW/xoRVK+Av43mb 4T9Lx2+lbb7meA5qF9STTCEWN5ejTdFu4KGbyHPDdumjkfFTejyUql5BjtLe4NTJAmuNSFQZyky 07xhYtxLGM40k2qpP0LgohDgyp8bCboIRwmGTEfKzIfvGsCUodIvcRJSWYpJjBcq+4wqxBcvz3x IVE8nbBXAYtWVjVyK2JWRzsKoZqu9P7JKg2vJ9gskOhbsIq9duJkmtH16lp1i0agPVpQV3z+E1O Oh/IMEE0a4= X-Received: by 2002:a05:600c:34c3:b0:48f:d0f7:78f1 with SMTP id 5b1f17b1804b1-48fe60e4e27mr405631265e9.4.1779297973722; Wed, 20 May 2026 10:26:13 -0700 (PDT) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Cc: James Hilliard , Richard Henderson Subject: [PATCH v12 24/24] target/mips: add Octeon LA* atomic instructions Date: Wed, 20 May 2026 19:23:12 +0200 Message-ID: <20260520172313.23777-25-philmd@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260520172313.23777-1-philmd@linaro.org> References: <20260520172313.23777-1-philmd@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=lists1p.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::334; envelope-from=philmd@linaro.org; helo=mail-wm1-x334.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: qemu development 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: 1779298098819158500 From: James Hilliard Implement the Octeon LA* read-modify-write atomic instruction family: LAI/LAID, LAD/LADD, LAA/LAAD, LAS/LASD, LAC/LACD, and LAW/LAWD. These operations are architecturally distinct from SAA/SAAD and are used by existing Octeon user-mode code for atomic counters, bit operations, and exchange-style updates. Reviewed-by: Richard Henderson Signed-off-by: James Hilliard Signed-off-by: Philippe Mathieu-Daud=C3=A9 --- target/mips/tcg/octeon.decode | 17 +++++++++++ target/mips/tcg/octeon_translate.c | 49 ++++++++++++++++++++++++++++++ 2 files changed, 66 insertions(+) diff --git a/target/mips/tcg/octeon.decode b/target/mips/tcg/octeon.decode index 2d02b4e0bc3..1e44c588dd6 100644 --- a/target/mips/tcg/octeon.decode +++ b/target/mips/tcg/octeon.decode @@ -68,6 +68,23 @@ V3MULU 011100 ..... ..... ..... 00000 010001 @r3 SAA 011100 ..... ..... 00000 00000 011000 @saa SAAD 011100 ..... ..... 00000 00000 011001 @saa =20 +&la base rd +&laa base add rd +@la ...... base:5 ..... rd:5 ........... &la +@laa ...... base:5 add:5 rd:5 ........... &laa +LAI 011100 ..... 00000 ..... 00010 011111 @la +LAID 011100 ..... 00000 ..... 00011 011111 @la +LAD 011100 ..... 00000 ..... 00110 011111 @la +LADD 011100 ..... 00000 ..... 00111 011111 @la +LAA 011100 ..... ..... ..... 10010 011111 @laa +LAAD 011100 ..... ..... ..... 10011 011111 @laa +LAS 011100 ..... 00000 ..... 01010 011111 @la +LASD 011100 ..... 00000 ..... 01011 011111 @la +LAC 011100 ..... 00000 ..... 01110 011111 @la +LACD 011100 ..... 00000 ..... 01111 011111 @la +LAW 011100 ..... ..... ..... 10110 011111 @laa +LAWD 011100 ..... ..... ..... 10111 011111 @laa + &zcb base ZCB 011100 base:5 00000 00000 1110- 011111 &zcb =20 diff --git a/target/mips/tcg/octeon_translate.c b/target/mips/tcg/octeon_tr= anslate.c index 90bd68cbf25..47d46999487 100644 --- a/target/mips/tcg/octeon_translate.c +++ b/target/mips/tcg/octeon_translate.c @@ -185,6 +185,55 @@ static bool trans_saa(DisasContext *ctx, arg_saa *a, M= emOp mop) TRANS(SAA, trans_saa, MO_32); TRANS(SAAD, trans_saa, MO_64); =20 +typedef void AtomicThreeOpFn(TCGv_i64, TCGv_va, TCGv_i64, TCGArg, MemOp); + +static bool do_atomic_ld(DisasContext *ctx, AtomicThreeOpFn *atomic_fn, + int base, int add_reg, int rd, int64_t imm, MemOp= mop) +{ + TCGv_i64 addr =3D tcg_temp_new_i64(); + TCGv_i64 old =3D tcg_temp_new_i64(); + TCGv_i64 value; + MemOp amo =3D mo_endian(ctx) | mop | MO_ALIGN; + + gen_base_offset_addr(ctx, addr, base, 0); + + if (add_reg >=3D 0) { + value =3D tcg_temp_new_i64(); + gen_load_gpr(value, add_reg); + } else { + value =3D tcg_constant_i64(imm); + } + + atomic_fn(old, addr, value, ctx->mem_idx, amo); + gen_store_gpr(old, rd); + return true; +} + +static bool do_atomic_la(DisasContext *ctx, arg_la *a, AtomicThreeOpFn *fn, + int64_t imm, MemOp mop) +{ + return do_atomic_ld(ctx, fn, a->base, -1, a->rd, imm, mop); +} + +static bool do_atomic_laa(DisasContext *ctx, arg_laa *a, AtomicThreeOpFn *= fn, + int64_t imm, MemOp mop) +{ + return do_atomic_ld(ctx, fn, a->base, a->add, a->rd, imm, mop); +} + +TRANS(LAI, do_atomic_la, tcg_gen_atomic_fetch_add_i64, 1, MO_SL); +TRANS(LAID, do_atomic_la, tcg_gen_atomic_fetch_add_i64, 1, MO_UQ); +TRANS(LAD, do_atomic_la, tcg_gen_atomic_fetch_add_i64, -1, MO_SL); +TRANS(LADD, do_atomic_la, tcg_gen_atomic_fetch_add_i64, -1, MO_UQ); +TRANS(LAA, do_atomic_laa, tcg_gen_atomic_fetch_add_i64, 0, MO_SL); +TRANS(LAAD, do_atomic_laa, tcg_gen_atomic_fetch_add_i64, 0, MO_UQ); +TRANS(LAS, do_atomic_la, tcg_gen_atomic_xchg_i64, -1, MO_SL); +TRANS(LASD, do_atomic_la, tcg_gen_atomic_xchg_i64, -1, MO_UQ); +TRANS(LAC, do_atomic_la, tcg_gen_atomic_xchg_i64, 0, MO_SL); +TRANS(LACD, do_atomic_la, tcg_gen_atomic_xchg_i64, 0, MO_UQ); +TRANS(LAW, do_atomic_laa, tcg_gen_atomic_xchg_i64, 0, MO_SL); +TRANS(LAWD, do_atomic_laa, tcg_gen_atomic_xchg_i64, 0, MO_UQ); + static bool trans_ZCB(DisasContext *ctx, arg_ZCB *a) { TCGv_i64 addr =3D tcg_temp_new_i64(); --=20 2.53.0