From nobody Sat May 30 18:34:27 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=1779276769; cv=none; d=zohomail.com; s=zohoarc; b=UM7ikXhMd9vkB7MNDY+gdS068l1bDTgwh27pxrG9lv9kDL2PI8qm+IizJiMmLi39CG1ZQTN6Tv3jLfjgDsLT/QXwv1rJqOcXQXcoxgpffGGnjlcjTsSQ6DC5XseKO0cHbJD0pZN9MVT34AEoYbUuikUZXGuppyj6y/w5ElyQzSg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1779276769; 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=dlnn1N3CQuKQhyD55g5hojez72oXzVt+NckNsOlcWnfQZ0+XxxLG58mhDr8cT+RsqeqO0nkLIPhuHuF5S+Ehcm5epUx+k/3VYqs4txuXNDQErP2Xg660PYGc7n/7UwhYRt3oLa8JMkhI0EGmbwFS9Opk5cm2fZVRkl7r7qPSMfg= 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 1779276768942904.5108259795938; Wed, 20 May 2026 04:32:48 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wPfA0-0007u7-WB; Wed, 20 May 2026 07:32:25 -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 1wPf9o-0007oZ-U1 for qemu-devel@nongnu.org; Wed, 20 May 2026 07:32:19 -0400 Received: from mail-wr1-x42f.google.com ([2a00:1450:4864:20::42f]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wPf9n-0005MQ-4n for qemu-devel@nongnu.org; Wed, 20 May 2026 07:32:12 -0400 Received: by mail-wr1-x42f.google.com with SMTP id ffacd0b85a97d-44a14580111so3475581f8f.0 for ; Wed, 20 May 2026 04:32:10 -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-45da0fe248dsm52092626f8f.30.2026.05.20.03.18.15 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Wed, 20 May 2026 03:18:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1779276729; x=1779881529; 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=H4KBR6C43DisGAU9jIBYDyXUDkxeR3CA+LXPpTShesIS4tjMrmtL8wfQvbElI5RPvY +YZlDvSIeCWskq6WJ+ONagOXVY9ajZ948yW1Cb7NYHSM9UPKA1PzHtt5cMdzEZyLVghl gfpTqlzNwF1JngHqFFhg6xGP6xvPZUlQWoN464526T2DQ8G1q93pjlFxrZwdsjIWZgS0 iUnzZmEvoQIH6Q/SZMpwEeZ/nPZ6vJ3QVKRoQgNL3M/LDfbpEzVS9hSYul99EQr3Fn1o iyVWHfw4P1hdrkx2kVcK7aGwsCOtM9E7TnGsX4BQAWXBBcIstubbqOzLLpDokyobpJ39 pXSA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1779276729; x=1779881529; 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=Cgs1ExMzsCvt7FyqP+mr/2DgsEgLTLTF5B/765bNeEDsf8WWaOG7jqUd5e3W5dJRwi 6Do8qShOGN0n2vjYksAAUN4cQd5MeAymvP0v+/VjEVmzhnphBW+ZjZSczf9ThA5rGMf4 7enNeb8IsMxxuMc0K/42lRkudEvV58LbGT1qWiOOaHTmKWyBzs7Y/0762Gh2o2bllwft SgCKLlxQUmMAl06V0pZloVLCxTEnU/Q/ZjwDln8b4oqmFqzaIKW65jbM2aYUBRyqI5Pc GVN5g6NhHu5ZuCwJHMk1E/fsnhm4lamnpR5j0XHvMyGyiobSF6Y+X3pf/zHovRSyWxuB CRpQ== X-Gm-Message-State: AOJu0YyJQ4Rzr8mXkhYh/UhR0r70QzNHWSIhXZhpqRxaIZFB4rNR4It0 0i0NF7/oDsgkmopyhbyOlmfQkYRM5OgTZJHdby9Lvzs4po+uXcFBFt1UXlXUjKGvfPyyxtPN2cw 2QIxktmw= X-Gm-Gg: Acq92OGR1Cnrk2FRittJt3TNcI6PobKit8C+UD9wZzPI5jsQDc3D6R/brA1bSBPEZkW HaYXXBbID7TPTtr64eFl7Dosp/7uvIdlt8qNrcOyJjuW8ZG9qNFpjhBTMKI8VbOIWKCIp0HBCgP w3dfWG5OUH8cAqRodGxOyn9HJ37cYTKjHBQg5fjb96D13oWNuQDjxJEa+vx9xhatiMFbRLPHG+d 4/FifIP0TBGSFLKQSGCV9s/lBTxJngJwI7C6O6QjgYq4Y7jjVwzmCsZXwNU8ebsDofRJQ1KgG6G YYVDtOD6ttv+yVZAM1+5BFibAoXpp408x4BD5gNsnkwUY7li0R7y41LtbDFP/Y6a9C7uPxkqXcS CUBujWIUu+cpFyvTcBsAsWMxRUzQ/8KEVgXONlFQB/uRbB1NC7yHfFMHDTCP8jDHQr46ja6yLYN CtJikKwj6T8aeyam4yTIvCl3PFI/ScsSwM+cM7fqlivUj99Vb2KyPtFE/PICNFUmAhs1hDLSzRQ UNPSW+rpEHG4Fcv X-Received: by 2002:a05:6000:2c07:b0:45e:75c5:1a6a with SMTP id ffacd0b85a97d-45e75c51b5emr23937852f8f.33.1779272298595; Wed, 20 May 2026 03:18:18 -0700 (PDT) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Cc: Aleksandar Rikalo , James Hilliard , Richard Henderson , Jiaxun Yang , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Laurent Vivier , Helge Deller , Pierrick Bouvier Subject: [PATCH v11 01/24] linux-user/mips: implement sysmips(MIPS_FLUSH_CACHE) Date: Wed, 20 May 2026 12:17:42 +0200 Message-ID: <20260520101807.9971-2-philmd@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260520101807.9971-1-philmd@linaro.org> References: <20260520101807.9971-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::42f; envelope-from=philmd@linaro.org; helo=mail-wr1-x42f.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: 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: 1779276770187158500 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 18:34:27 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=1779276559; cv=none; d=zohomail.com; s=zohoarc; b=dfU7u/17npSexcp3CNBbPpyKLPvnODqgnKMkTqw8kaoEL7XFfsuKngd6Z3ftZ9tEBW4i/z9bfTyfFBFAJYvSvMmvd6tMjWLJrlIQwVYu5cyjqwwrWtYM1rr7K3D4MDHIEhzKy/PQ1xVOGBhl8FWlMvs7vXit47uQZdVui6YIkI8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1779276559; 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=Swvqc9zOI2hEjFZ4FyUdUsL48kjiT4EyUa+z+vnMiZLwYgJO9ptvSMcjIRBdTpogxfAzDhz/J7j02a7DjqVSEtq7LwsWDmCHXvkJ16u4YpBqH+d/2OTqbS+q3plHyP0jvHV6zOH5tAZUtaMqj0k3Il4tBaZd/+AJiusgw3FFF9k= 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 1779276559044537.8903545526738; Wed, 20 May 2026 04:29:19 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wPf6q-0003MH-GZ; Wed, 20 May 2026 07:29:10 -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 1wPf5l-0002xh-CD for qemu-devel@nongnu.org; Wed, 20 May 2026 07:28:06 -0400 Received: from mail-ed1-x52c.google.com ([2a00:1450:4864:20::52c]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wPf5e-0004OE-Nh for qemu-devel@nongnu.org; Wed, 20 May 2026 07:27:59 -0400 Received: by mail-ed1-x52c.google.com with SMTP id 4fb4d7f45d1cf-67e24b8ef55so7996847a12.1 for ; Wed, 20 May 2026 04:27:51 -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-45d9ec39ff1sm57277622f8f.10.2026.05.20.03.18.24 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Wed, 20 May 2026 03:18:25 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1779276470; x=1779881270; 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=eOgVQgVv6GogRDW1ISLPyPly4lsFGJ8gwb5+dN2iB9XRlF+7y0TvjFwlJg5576jY5z nHOky4Y2TTU4wJ5EYOnYZeELOLBTMJBFOi2vU11zNMtob0K18ZpJ1/k01qodKVLuXr/X Ie0o84pHYOJu6VCwrrCzxFYOdAR1AZWCH5vJyPqJV6SeqTkcv82s371UGAhvmz3do7gU q/oeha8VVTvDxBaieTRTOBBT4+cc/Qlpk7hAduUk7A6rM9F9MMMjFsG3WbHqNagvDXZr oZUBshIi4Lzzh3ZHKQ8hppo7oR0gqFP6ZVGZx0hKoGx+UOWkRMHZ1hCJE6mF9BRfgijL Dh1A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1779276470; x=1779881270; 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=sd8au3zYavMKylTY3GsGUzGGMmP00jXj+f58BACmNsiOoplralUHo1I0UCxLAgnqDh qlK2xOyXi8MwGwy75uXGoVQckkNvNQnIfyVzuDr4smX9uEorDXnKUNctx4w7+Gq7OlYD iIn3nAMHyQfwcChwWlRxRWgs8hLJxGVulSiVRc+4CU5DXdowumNeJaXB9Tsaxvxepinx EM3EA75H5JxhMyyiLKwHiEqoIXploD4Du3cvFVmv0AQMwJ+puiWp2Kmn7pSC6XDQhQyB qA8+Ag2bXTIlWgik+Rx3OkFo1WgeRXmZ1M6CeRArfcrAcTxfSrtK4fmkd0r532dDv78b 85pQ== X-Gm-Message-State: AOJu0Yx6Fc1TVADABk63U9ec6zvM1CPNYpQmKwCHU7xFG47jfMgEBDAX N6yGSBYwp4cYK8wadUvcDt12MtHUHSLCUs2J4Ma3s9KxXgKKeJcz9YGHMFB2cSBQ0PrS1wVQCqs bSKOXnd4= X-Gm-Gg: Acq92OGuhzmA89l4sjE8dktIpz1pnzzZ7ZKpDG2GGRxdVmUN1X0VB+Gfpkg8IgsFTUw Dx1sh5R45fguHoWXKYVEBDIirGTdpRgQY5uB5YaR0oj5Cn2/GfU+boFGLBRfIJYZLXstiWb+JY/ hhrJ/MX8mJQsnnM0X4Z4ew25rB9IFwsLvIn4PRvK84PQxuNFPhqZNQR3w4tPlUfOyTs5rmrB0nB qGSUqpSbVusSFL10Q1lGcATJMBIlGSIzbrwuKJofTWO+FRojk+5XOawokG8m0Prtn5ZskbpU7kK m5w/yGi/lQj8kPyQUx/d73bLr/bulRaDqguuhtUycAug3CyyaF8DaYFyAesv1F191YKcgpU9Qxf uDejV5uAF/xPeroa+cJMLk0YCmGrY1ZnIxaccMDdnHHAWFOufWp5L/49fZKNw8wH0AgoHXmxEAM W6vvVtG3qVaDVkcVtmQ5sdweisvT+fFYqE7MHfhl/u/S6+pdlvO6xJ/Hki1L2PpRFKlJNrTgO// VjdSm9XD9rwOqgmvUPYMqdCkFc= X-Received: by 2002:a05:6000:2503:b0:452:65d:e108 with SMTP id ffacd0b85a97d-45e5c5a5e99mr37522151f8f.3.1779272305972; Wed, 20 May 2026 03:18:25 -0700 (PDT) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Cc: Aleksandar Rikalo , James Hilliard , Richard Henderson , Jiaxun Yang , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Laurent Vivier , Helge Deller , Pierrick Bouvier Subject: [PATCH v11 02/24] linux-user/mips: implement sysmips(MIPS_ATOMIC_SET) Date: Wed, 20 May 2026 12:17:43 +0200 Message-ID: <20260520101807.9971-3-philmd@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260520101807.9971-1-philmd@linaro.org> References: <20260520101807.9971-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::52c; envelope-from=philmd@linaro.org; helo=mail-ed1-x52c.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: 1779276562527154100 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 18:34:27 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=1779275852; cv=none; d=zohomail.com; s=zohoarc; b=AY4/tP5SY2Q0Jptibo/qj2FLhV1KZQOI8s2TiA2npeb+hr9U6VLjvzvO1J+/ymEDMrPY1c9m6hHmmaWCvVo2x+aEePjY4+NofftiDfjco5OewBmlbK21OG8lp8EZ+x4VnHXg1nwI4mPbqsV7J8lsqB3oxJRJweSuwz1FV0Ys8AM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1779275852; 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=kHBM0LSyfTTBe29Vf+eQF74sO41c7DMQFqs+TLWVu0Jmv69EakaTivA9OrQZahIa9uM2PKAWiEyK0N3Eklh/Q3fKkwrhH18WMMbgJFBL5WnHgBQz/jGcYXXgnCcCdvjMewtrg6O3bK3E+7kOZL36CDQipbDfzUg5kKe988AkOHk= 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 1779275852552104.60600546967817; Wed, 20 May 2026 04:17:32 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wPev1-00017N-3c; Wed, 20 May 2026 07:16:55 -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 1wPeum-00012N-64 for qemu-devel@nongnu.org; Wed, 20 May 2026 07:16:41 -0400 Received: from mail-ed1-x535.google.com ([2a00:1450:4864:20::535]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wPeu3-0000K1-Jo for qemu-devel@nongnu.org; Wed, 20 May 2026 07:16:39 -0400 Received: by mail-ed1-x535.google.com with SMTP id 4fb4d7f45d1cf-67f7caa33easo10157265a12.1 for ; Wed, 20 May 2026 04:15:36 -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-48fe537c516sm415255555e9.13.2026.05.20.03.18.32 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Wed, 20 May 2026 03:18:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1779275733; x=1779880533; 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=DHoP9+56/ZyDgHEXQpEcAZC07qjoLAXMHaiHJRAHYbHBvFuWbfZnpyy/5CGuw7KJLu /ybfhAh4K1nU0Qjb7TZ3koAQ+wDN3vhxKhOKLH+pp2jP1WlZ8dWalmVJBhnpSlj0eMTO lVoMjgHzuyirWMIYaKYa3bD32LPbR0JdITuLvsj4MywWkzprxCzj8GVBnf1wm+5b7LpA ETVmo+l2yfLl80OXUaMK6cbsN9yMIrIwScvnShMsu9XrDS8pS8gwhSscAPzR6YL69wJf j+jQZ1/QOJqsbEsfPxcI7jUmBjcm5a69AG0Kxsg5Gbd3lldAI6RAR+8nMThXn3KhZYl6 BhhA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1779275733; x=1779880533; 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=jdl/mJiaVEmDm9vhVX0MJ82hLlAls2Or/mz1vC2cyfZwfwH8XJhQsyVSW+iJ2fw+7G zIrMwqIjbdAh8NLQJwQIjRQ3+3KP3nvOnv8ReywFTRy9zGaYFm+4ecZXPSUEYsNl8B0R JbOqeMlA8vS1LCFOriUdyVOK/bWHSgiCUARbt+OS8jVk0y+uTIUMUEqu6mHAz3yGfBEv aooP6juGQdNmxdsWhRi5fnNRjfA3yTzG+XFXfqA7Y0hToIBxZRJMmsRsabEggARFE4zP QS3kl3fsMqEX8CU3pih8UNFk4Kv9FGhD1UzSs7xMQysmPveDBy9wU2sRtlU25UB6DBDn 0H9Q== X-Gm-Message-State: AOJu0YzdLRDt2C2pduB4rzwjo2IQOVLKKINXYfZND3bKwHlKCyi7RekJ y4srfQRBhnfpK6y5WF5xaH8SunARCNSTjWBtizfwpQx8yRTpHzN3cOD2GWMBSarBcMIl4vog2Ep QFW9ue38= X-Gm-Gg: Acq92OFl7XGS3OqtOVEs+fSIAvqnY0NDERhPhW+sQ5DkefMBo29F3R2SEQ97jMtUaA5 sLQAkq/6Hr/KB0sRBuOGJ3aLk7NA/2jkChdsTJwoOpjgmPk72nD6o8MiyKgfF4knmp3Xh/aJsdl tIO9xgV1XOCsJyWLlif8iOkB/2oOF3+amST5TTNCVJcNhBgMhpOYbxz/6M0c+B+8DBtppfLssmt tBc2IOmZDV5NbgqebVPgOpyf2dKZBAp93JUp78RkcYvZ5YnHLWcS5bnTBU+uNY5uL1DFr7w4ttH D2Am8ehZL5xQfLNIVWWt2JmbCWzEdC/0I3XsBTRLJIZUiLW99Noo7rvHJBDmka1SP4Pm3PUdvNv 6jB2cbSSSKFJADEZWn9Dcnskt7hsbkjpDMSpihEBFN24QotSJJxdSy4HUaoJ3BX1GXZAEiORn72 O2i0n3r+BAuB7uMX44b38ucdfPvr1yLDyafZHnIB6rdxknGyvWNnBDHKu3+cp/B0/1ebb/HmkQJ 5Xissny2T10rV+e X-Received: by 2002:a05:600c:6992:b0:48f:e230:2a20 with SMTP id 5b1f17b1804b1-48fe662a1b2mr363097215e9.31.1779272313355; Wed, 20 May 2026 03:18:33 -0700 (PDT) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Cc: Aleksandar Rikalo , James Hilliard , Richard Henderson , Jiaxun Yang , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Laurent Vivier , Helge Deller , Pierrick Bouvier , Aurelien Jarno Subject: [PATCH v11 03/24] linux-user/mips, target/mips: honor MIPS_FIXADE for unaligned accesses Date: Wed, 20 May 2026 12:17:44 +0200 Message-ID: <20260520101807.9971-4-philmd@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260520101807.9971-1-philmd@linaro.org> References: <20260520101807.9971-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::535; envelope-from=philmd@linaro.org; helo=mail-ed1-x535.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: 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: 1779275855604154100 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 18:34:27 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=1779276260; cv=none; d=zohomail.com; s=zohoarc; b=W55X2vbEDOPFtxNcIRkgXIQsLnzg19rqveY4r+BD49yolOltw43ULmZrHnxkC5vabqgutrEXV8EXiS7GAUv0eo519Sqz7k/JTq25rYouO7j0e+hkl1Fh0mCQ3MRxqf0gzK4po/CyKerFTVc8dlQIS9cmWrvyiSCVPhdQXWci5Nc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1779276260; 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=Q/UGS/ukbKNAOnqKikBHm6mOeja0eIx8PTIRJynSizkTvUdojJvKv1XSw1hFE8jDkVUVFY2CtFt+3G3XgIO/P4UIcfkOIE9PaCYfdb+gfUgiNri/rzfyV1PGuJ6puR2DgaOdQO3SDSOWcTOlQY5Bpu6i7isw/bq2ydt//n3+T8c= 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 1779276260612487.7063077347377; Wed, 20 May 2026 04:24:20 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wPf24-00047M-So; Wed, 20 May 2026 07:24: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 1wPeyo-0002Jm-5u for qemu-devel@nongnu.org; Wed, 20 May 2026 07:21:53 -0400 Received: from mail-ej1-x632.google.com ([2a00:1450:4864:20::632]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wPeyZ-0001du-F6 for qemu-devel@nongnu.org; Wed, 20 May 2026 07:20:41 -0400 Received: by mail-ej1-x632.google.com with SMTP id a640c23a62f3a-bd2087858c4so1048100666b.0 for ; Wed, 20 May 2026 04:20:18 -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-45da0fe1a41sm57175147f8f.31.2026.05.20.03.18.39 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Wed, 20 May 2026 03:18:40 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1779276018; x=1779880818; 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=BPxxbie00GcIEJJe0BVRRoLI13xcaTcmbKvRe/kr5zo01uEZK23VObyKK/mwgjpfy4 1/ZMVopZWDo/9np7XvvQ/pe/PTBKTxxU36fi+ajdKU+SBDWUchaKyXKVRYkK0VH16Oql Rzua/ejKZxz/N/m0UAgHzsGpFqU3NKqnf+eg9EtReE5Qvj90ejrMny816U1yf7hcubLV Q4y1kHt21eeg2N/4wdE+we3yauMYdeVTUZoF3fLYr5c9/rp5J0Eo8PMdUNh3ZuYrqmMX UQ3nPPQdfBiPe9tNikucd1ooUEgHHB0X1q5x+j055CeRlpyF1pGbnKb3xl1LmOY+K32Q DTOA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1779276018; x=1779880818; 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=Fk2GP0/igqDAeKsmQZG+ikgq9ZluuL3knOxyaJVoikDJrpQtqnAIoqcXj5d9OaFsRg zrj2AKVKwVqUdy3ZZC28zbjgkWmtLW0YY+vxCYKTQH4nQHqcy1pc8Pfevb3UZSldOqlg 7AsVe+456R9m+2wsOEohdPBzv17BIFS1Ye3EdWLI4hCKnDDFbO0Urojkj+FxTGP7YJvm FiUnEMnyBJRtDFOz8CyhOAGfCTzx0bATRG1ul6vvzzOtKXaeigj4LajT+F6tN9owpkO5 EbkE+tjBkvzFwABUk4oUfQiwVH/HaS9uZeIJG2N1lt6LQL1W5fQlkE3qL0N1gGndFmMA r2LQ== X-Gm-Message-State: AOJu0YyO+MgIcIm37akVlQDWvglQD2eYk+4Ifu1bgY0Xeq/xv1c5AUAC Kr5R68FqMrEIaU6IFtrOIP/rpzfI5GzoReiwT33TAr8ViPivvLugDSF+qZO+9UUT/KmZBGDYLfB 8Frk6HAA= X-Gm-Gg: Acq92OFoVglhP2QDx30v3hKkvlthVZCW8XrA49aT5jUNBDgYDzqfPmPb1KeEnYBRkXE 9LNPnKRryJoxXBzSWL+TdgT7cmoWTejLjppOlliVA/Mjy052iX659BilEW8LOTzDAc1mJEmn4+A cOucZ1HWUqNqoATEcQqzyIcvBbKNFYIPb/xt8PNMxdRi7wp9rkUXm/t2oPGwC2id84xMP3WcZoB fvXiZgfvd+sCR7oNx0Vh+ZoKFwrYzw34JtZYmJQUE6NyCKqZBKJrGCr0vpYihKQqyjyEEGOZjSa /QqUxx3SA8FxLnHcNEKeRsYtCLogpw4tOPUdH4jVB+XQyfNweeqY3DHvHogEdcjBPfSxYVf20E8 kVE36emAg+iTUOE7TW05j8bdt+GeznrhpAxvzBp6tBTXgmBA/PsMo5RWyrcjifPdbDkZxOZi97L D1oFWt5gwOwDYxDLYRJYeuIfVm9flgZraPUxwvKp6qP3Fj+A8yExFH3yGwcz+4HiPJCygokEXtb U1ECw== X-Received: by 2002:a5d:644e:0:b0:45e:739c:f187 with SMTP id ffacd0b85a97d-45e739cf872mr18764992f8f.22.1779272320708; Wed, 20 May 2026 03:18:40 -0700 (PDT) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Cc: Aleksandar Rikalo , James Hilliard , Richard Henderson , Jiaxun Yang , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Aurelien Jarno Subject: [PATCH v11 04/24] target/mips: expose Octeon68XX floating-point support Date: Wed, 20 May 2026 12:17:45 +0200 Message-ID: <20260520101807.9971-5-philmd@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260520101807.9971-1-philmd@linaro.org> References: <20260520101807.9971-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::632; envelope-from=philmd@linaro.org; helo=mail-ej1-x632.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: 1779276262011158500 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 18:34:27 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=1779276271; cv=none; d=zohomail.com; s=zohoarc; b=idVZTK1KCjPOYZYRSOBR+Rj9U+omz58Rh5TegqE/Q7k/CIfGzCrMWZTpNfKL7RCICol4MN5YjpOQdXPRmo8dft85RJjzK0HHJr+7BwlkY96scmt5qJGONR07VSZXZn62+GHFxkf6KuR5rVLlqij5SzRA2T0eITLRNuXuthj69ac= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1779276271; 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=CAgABb3WbZBwd41kZWx+VPPlojVWLT9Z5g89nEPZKWo=; b=JZwZ+ExbSn6hJEXE2ON388nWUJ4KwqgqBarG3Of10TlXPcNC+KT1C6RyLD1q13BD7iqIiYgJdS1YpfRolVKDa5wEVp/lrKjeuBjp2o7I5H91ixS2KlwXsyllJKHCsrOrSuX0UBcC0xMBZMF4eg3+6FE4NwHiG+r3IWZod5C6pAM= 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 1779276271325342.98226412544375; Wed, 20 May 2026 04:24:31 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wPf2J-0004th-Ni; Wed, 20 May 2026 07: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 1wPf26-0004GA-KX for qemu-devel@nongnu.org; Wed, 20 May 2026 07:24:14 -0400 Received: from mail-lf1-x12b.google.com ([2a00:1450:4864:20::12b]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wPf24-00033r-Dm for qemu-devel@nongnu.org; Wed, 20 May 2026 07:24:14 -0400 Received: by mail-lf1-x12b.google.com with SMTP id 2adb3069b0e04-5a8891f0c51so5235048e87.1 for ; Wed, 20 May 2026 04:24:11 -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-48fe4c88495sm380066565e9.4.2026.05.20.03.18.46 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Wed, 20 May 2026 03:18:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1779276250; x=1779881050; 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=CAgABb3WbZBwd41kZWx+VPPlojVWLT9Z5g89nEPZKWo=; b=ikAiShawsHbUxTx4hK0p6sCGGcFHMBo8xgi5bupr0FvPKkJHhzbhSSmjm2zq5Qbsqk WfJHHipJg9u8e0yVPLVqZoGIkIh5Br7MmLr/rbiZBXNHXHX4PnpN92HgCE8L7q8goUU/ FYi25KQWaffBlePD/2gvGk4hQ+mdsWLHw4N6+adcJnZUwIBHWD1d5HdvMdA5xcxCG1LJ hO+ZLqdbg1VpJJFoD/n8wBSqRzU7JKWsG7YeTyYQN35bl1/i6PvYR50/vEEpRMZOydll KNKsQ2bxsaynOjLBT50fMSDPNqkIsXnP5NCH0IQyD3Jq8Sk1ImWZxaQB2j3/KFLf6VZj SePw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1779276250; x=1779881050; 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=CAgABb3WbZBwd41kZWx+VPPlojVWLT9Z5g89nEPZKWo=; b=HV1OPqGPWQD9HSek8z9AQ+dY563Ix0VHgDkrciBzaDrRTRSePRNNtzPqH441JbtG8z cuCpInRdsm8tabt2NHdeZ/Xi/Bsh1P9tKIrfzDLtu43/Y1HW475EujD/WiaFmBUvX6wx +XbgzRbNp0GagcpKbLAquaBpVGYd5p8lf2zbbGsuOsSI/e3APXGhZqPclKawr03zNFVu Cj+Hrgo6JYndRVINpIWMjbWDWEYxoDJQGygHZdmAoBW4UJ+0bL17qZi66g0TkS4TpkUd YVu9QwqT1kCzoD/XB0ppOR5P5kSleeQTeIWa9VOcccfRURyjKzobhOivRs+PZ1wrVUal IQPA== X-Gm-Message-State: AOJu0YzdMlxH6+7OkpK2mRxvf652hGrDkbiSPq+CvSDzkVzqf6sVe4tU FV6vq+txTmUb8hDX3+0iVPNfc1MAAtMg8GHPLY5uoSBp9p0BlKIx7HPl5BBlw2FMB8/k1qi3RRY BhEmamrQ= X-Gm-Gg: Acq92OGAqm2FZGzZsJGiUypfFdP0eO4GVg+5XNhrAQx4p1wfHy4jDRxpVBl/hHYI2GX /pBl3Wk+XrDXAWG+zzVPhwv4e5CgDWc9b9t3B5DL1p0v1Lmd/hJ+S7wIfoJ6bfUeIQ3v9asb7aT rGc33B/BYOIcZrzVuav/wiA3p/SZDLrA9uqTGscEUKKEN+jbRKnfdzbI500cnuZ9Yy9k5c6rypj ex5UsWajzA4AINg0R9OYpMFqC9PQwsyt6xssFzf+WMyflAD9J1dLXvLXe3lLkcDDe6kTHfddwMm lYXJz4u0XbaMVD91qghppG3B+VN6JLRA5N0Ku8vuaSUNffuC84VFCu/U6anvhGbAOprn5Lz1Bz0 wooW6qrQd1lLB64j23Hqpmv8VukQOh2xB+xYS66FrdoxQEk/P9hKjT2esLPTG/+3TZ08ww1Aobp 7pE5qySgT5dofmNTiNCorroQyj3YwbejGR2ftvLN39/L8PwGnkWpxLJPb5ERQQ1OOp3KvLWXPVh o4kPvg52Hmj69uO X-Received: by 2002:a05:600c:3f0f:b0:48f:99a9:bbcc with SMTP id 5b1f17b1804b1-48fe60ecb9cmr340776045e9.10.1779272327943; Wed, 20 May 2026 03:18:47 -0700 (PDT) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Cc: Aleksandar Rikalo , James Hilliard , Richard Henderson , Jiaxun Yang , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Aurelien Jarno Subject: [PATCH v11 05/24] tests/tcg/mips: add Octeon instruction smoke test Date: Wed, 20 May 2026 12:17:46 +0200 Message-ID: <20260520101807.9971-6-philmd@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260520101807.9971-1-philmd@linaro.org> References: <20260520101807.9971-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::12b; envelope-from=philmd@linaro.org; helo=mail-lf1-x12b.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: 1779276273326154100 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 18:34:27 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=1779277046; cv=none; d=zohomail.com; s=zohoarc; b=lm6KUmdImxxBXK8c8YO5iFbLLoVeeSa3eQP16jiQEI698TFQISSOobqFGaX4SPlfoQ7Kb4V4k/9ffx7vCoXrPDJKinkh3wuX1SL3UVZUcujm9+xCzcot+KVtC8TrSIuU+/iK/o4MW3WOOju4Ciglzr5svtwCrdeRKI4RZIQ80c8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1779277046; 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=k04VmJ2tw3qZOAoW+0tIz4j9P05eyqhb7E3koyvPctwVPJ6293AZHZlOnBtDOAEomX1RAgL+ocDOeZ7GAh2lUK+G1hTfTFigsogS+2Q4iC9/3oANwCaiSVYy3ZgZg0Xvi7Cj3f2h9AYMhwpfcQTYP9JAp7Pxmgugz03TKcGJYrI= 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 1779277046783846.5849189256178; Wed, 20 May 2026 04:37:26 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wPfEP-0003n6-Pq; Wed, 20 May 2026 07:36: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 1wPfDm-0003WY-AJ for qemu-devel@nongnu.org; Wed, 20 May 2026 07:36:22 -0400 Received: from mail-ed1-x52c.google.com ([2a00:1450:4864:20::52c]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wPfDk-0006CE-Iw for qemu-devel@nongnu.org; Wed, 20 May 2026 07:36:17 -0400 Received: by mail-ed1-x52c.google.com with SMTP id 4fb4d7f45d1cf-6746d0b2b4aso8433828a12.3 for ; Wed, 20 May 2026 04:36: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-48feb00e5easm127427805e9.13.2026.05.20.03.18.54 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Wed, 20 May 2026 03:18:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1779276974; x=1779881774; 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=jMHzRkzkriR+v7sjbozDo7IZ5jblfOlItbZKH7F8mZqiiWVgQcB+eKCVNKfkOYE2qN lOJfEcuI5uOO/986QoCP4GlGWvVy94XVQ+qaPxFW7UnlBoe0sY2ArsNfGMDB/VpEtgIQ +hJF4nZXaKflZBd74bsWauMRX8y9yQMws+3mDXePREzKelNtiO9poPWJPq5c3afH2klg cAqAVK+7K83j1Cfmgkdg7BwWEnnu1wwAp1tsFwNYcXoClNhARja2dECKkT5M3nYDBZAm 8xjj1hOwgqvio+EgZ79I7HN95lPfIn5gMOWkov/MKItEYgvZvs335B68K02LCjFGM5jP jq4Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1779276974; x=1779881774; 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=lJvg2gbK3CmRH+MCBXwY0YDSueoS1UxaM05hgDuL0NmxskEpNSHYDXpf1q0b+f7Cxn R4AzKd0KAqHmtWEiMbriCQ0CFVq3t5lCFQHZ5m0KaXbmrZZpXUmLX4wDuFJ+otE1KGJB 13sAy2n2HZje6oI90E36fTkSE+6Fy4KGPiklaQWxUKlO6ZYJMXEndQIow7wmHnwY++aI DTH6QcfhzDv5Xr9X7SHBN92HqualHeugwgSSwOh6eDYGcSi8qUmVG2nhZF7jVYxoS2M2 hsrrAukKG5LrcG4aJu+nEZ6sXd7F4j+VGqu8FIFG8wRZiq+0Vm4qoUjT+m8opfQNZ0JW 9GAA== X-Gm-Message-State: AOJu0YxmxnM33WEqFWCoP5EKw6K9MHbYfYsAnu5uRrl+Rs+bj5JqC0CW jmNLZzL0+0uqyzUNFLf8MbPrZhKjpLPB+sCrhvzv/1SqcJrazLKUG22pC68dhAHSGXFSHddhQZq Kr24vPx0= X-Gm-Gg: Acq92OGXNPBPwSRoCvIcDa9BkCvzIowZ6GEMd/dgdptr/qsXi79b5rxmJdITJYfeLX9 yHy+QpmPNYGRQGZzhLjsIUfpSWUnoGx6C4yf/y9swvqb2TJ3aOM+FKyh3A62cJChQoduc2TjY5b bBFD4nBLb6l+tyaGVbJGRvuz/a6C8Ea6Q8w0lAvhFLixb4aYSHBlM4gZlTekdJsgXOoVBK1m86B OUELRHhUnYtC7sUKh1FzqRlS37neuhCBPVvmvdHnFv5NK7VETVaUseIgCFSdBkqaow25yIi4TQL rdm8tZtrFkDYhsQotAlaHrVDZkuznbkvfqr8MWwdfCvsWwO/ey/VKdUvOlgZMogwhZcSobd5/c2 M4z9BCyZaqS13Z4dLVZO7hNUo2lXxeFXHn3aoHmKAl7V0nByaoKKzMKBbUM3TjWCRALCN5BVXpH OB/j1t+orIpX2JZxTZf8UT9k0LjIIsNZMVREO1VOEBdurhxyu+YJ98cknrRyrMeFLJ4DBrh6koC 1epgQ== X-Received: by 2002:a05:600c:4692:b0:485:4eaf:eb53 with SMTP id 5b1f17b1804b1-48fe632661bmr379121065e9.19.1779272335520; Wed, 20 May 2026 03:18:55 -0700 (PDT) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Cc: Aleksandar Rikalo , James Hilliard , Richard Henderson , Jiaxun Yang , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Aurelien Jarno Subject: [PATCH v11 06/24] target/mips: fix Octeon arithmetic destination handling Date: Wed, 20 May 2026 12:17:47 +0200 Message-ID: <20260520101807.9971-7-philmd@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260520101807.9971-1-philmd@linaro.org> References: <20260520101807.9971-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::52c; envelope-from=philmd@linaro.org; helo=mail-ed1-x52c.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: 1779277047964158500 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 18:34:27 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=1779276360; cv=none; d=zohomail.com; s=zohoarc; b=V6K7NMtORkzZAOvr65BKbrrAoD/fYF2RyExgrvZkMRggcN8V6JJxeu1K2oyx77J9kopy+L4miAvJYBZ8z3hM/CKyesiLSbRPj7J685nCBa5qHgNJe+My1hDeIP+pWLzDc6BUtKR2KePy1A8X775kwbZ9SkoKSD7ZyWLu6O4VoNA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1779276360; 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=g1tf7JbM2ncn7JKwzY20/k6EQsLYayJs85U3iLiqVhyJ5Pf2Ke9x5R9HOiYYVCIMotcWcr+aKZU+lPIvZmPdHhBq06+k596xOMWik4onESYObnOFS2GEn7v8w7jSSaETcySRDGGsDAb8n4+m80STt2sbUVDDPP/SvcVmFpM2gIE= 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 1779276360428947.1775682867516; Wed, 20 May 2026 04:26:00 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wPf3Y-0007A7-Lk; Wed, 20 May 2026 07: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 1wPf2I-0004s4-P9 for qemu-devel@nongnu.org; Wed, 20 May 2026 07:24:26 -0400 Received: from mail-ed1-x536.google.com ([2a00:1450:4864:20::536]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wPf2D-00037f-RP for qemu-devel@nongnu.org; Wed, 20 May 2026 07:24:26 -0400 Received: by mail-ed1-x536.google.com with SMTP id 4fb4d7f45d1cf-67179ed133dso5726211a12.2 for ; Wed, 20 May 2026 04:24:21 -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-45da15a666fsm53728771f8f.36.2026.05.20.03.19.01 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Wed, 20 May 2026 03:19:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1779276260; x=1779881060; 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=rSkYb2IxDsGBekQLtCcA3MQbAc62kKbVZ2j3Fofqxee3sa1gh4XBPO5MNQ01qLDCdU +bxme46stSoU0LjAcV7vBi2eJByrpp1iOvC1PiWXDnogs8fQpTNzwbX3CHoDPCl0N065 zpo71jmWrY6yU4E3tUnUDKXAg9KrejvSLLzvvVmgL8LkerxPOD4tl3mUjEJyfk8L9r1L GD1x5r3JO3wU2SfQ+9DI35DaPg0CiNpOSBmlarkQ+m1HJXmyIpMW8nmT+bQRVMfreJs4 Oz1KFola8GFWvuQiL+X4QswVtTR8sRah7B6QJU2mI4aBvr7Y5LoF6DDNQCfQtFyof4VB GEEQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1779276260; x=1779881060; 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=HK26BVrCsTf0xVwGo4Pze2lRNuW12MIuIA4OxRC+ImnW9n8DXw6ElAjzczNwtVre7R w8CX5HKz5vWiUa0qmSAqIn9R/9NRV3k9iJFdYbTWet8/TzIIm51ohr1BzdAjZccQNiC1 nGVfJgYP5iPbgUOQI8h0jIb26x6nS9TQfs7tnbnfIrJr2Qp+hkwzM/lBoYgpAyuI9uwz qLiryNP2BKYAqX8UPQQJia2MmnxyrQkKL6GowwYFTa7z5XzdIe1QS7Ihg38V9I7jqrvB MH40zsX4koMpMscAyfQ7HdxvVjrIkuYYUxTJQWAmOkgubxZe/+7KGoxFGMKCePjGD7Jp tKzw== X-Gm-Message-State: AOJu0Yxa1rRnL7RjbhIPLIfKnTMnaM6METfHJkQXH4LGSaUIk0QYdClI 1nboawFM8Tnp1lVjN+OQ1gk1QDBNCu6vPFajBatRgwbkOR5MqcTvIp2u8WW6N5MMX5Qgiy8P1E/ 8gQzTDBw= X-Gm-Gg: Acq92OEtQchFeW+gUdh6X9ecOFE20stMw1WP6vWnIOmC/z6bGwSDhn2euxbwj0M8uUL nJTA6DzNuuY+tyuqnz52yJ8wY9NAnBPvWV/1Lv1JGNgQ39cB2NZyKz/IH441pNwGGQlFC+NmI5F L0wxwblUaHnvrmKQDRxl0bK4Q5aC1ONkOM11KInZ+tJUYiwaJdeLK6A0ihXspNA79EUfXx4xKkC +8S1ec9utto1rrVmwHDudhrIo7O9rgbbAxPhcB62NwgXHnhCwp2A22mZurHrWsw7osFKZ0F3Wbz a/TwXJMdsXYVojreoUcPdmRJYjxBy3liTpKUwWQK5t/AWawERY/z+TGptUgynlkiXSEF/o9qEDU ZvxOHxq7J2HBMEN4bT/tOCxmBAbip/+BkszVcwxLL3NQIz9osHXHjNZS9CtuIskxLhDSgwcSf2A g9WbdlqTBE3XMhiGlYY1BUuJNH15o7DBS8qdRHOxE9VN3kfFf4Sotdw9k8CTcr5/CaHiJU7hnC2 rVPJ1tyrFxqaorN X-Received: by 2002:a05:6000:240b:b0:43c:f1a5:56f6 with SMTP id ffacd0b85a97d-45e5c5a8dc8mr38797178f8f.43.1779272342831; Wed, 20 May 2026 03:19:02 -0700 (PDT) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Cc: Aleksandar Rikalo , James Hilliard , Richard Henderson , Jiaxun Yang , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Aurelien Jarno Subject: [PATCH v11 07/24] target/mips: drop Octeon zero-register fast paths Date: Wed, 20 May 2026 12:17:48 +0200 Message-ID: <20260520101807.9971-8-philmd@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260520101807.9971-1-philmd@linaro.org> References: <20260520101807.9971-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::536; envelope-from=philmd@linaro.org; helo=mail-ed1-x536.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: 1779276361136158500 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 18:34:27 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=1779276817; cv=none; d=zohomail.com; s=zohoarc; b=gn+R176puYmFkxTgF1B/1xCrptfU2CGJX11t8ubEnheW9SBkNGhjAm/alO0B3zypxkH4ghg7G9QI3CJrdDPRcm7/4ypYZggP4855taUhZlUO0oNebGBpLdKTWFELw/f5nIBrkCpfdah2P3hZVf5h87n9jgK+kG9Ei50Vc+D5rk4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1779276817; 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=COrb5QL09Pm4BfpHqIgffL2R0OlEoncANH+QUqMP6yQ=; b=YHHlw1S9ZHDL9FeenOwYuQWpyylEjmCFi24k7pXbzYdholh06XTQiRaffDacm4TtTZL49lmISt/BpzT8VR8cBF3vCkouWsvGNHYmpDp7OFpTLzBsM2Ae8fBNRX40Nt2OuCx8NLoA64qFGjtnFmiVLyguVp3LNLIqqNlUE86Ryew= 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 1779276817222905.6110199011134; Wed, 20 May 2026 04:33:37 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wPfAQ-00089L-AQ; Wed, 20 May 2026 07:32:50 -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 1wPfA1-0007vk-Kp for qemu-devel@nongnu.org; Wed, 20 May 2026 07:32:28 -0400 Received: from mail-ej1-x62f.google.com ([2a00:1450:4864:20::62f]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wPf9z-0005Nt-R9 for qemu-devel@nongnu.org; Wed, 20 May 2026 07:32:25 -0400 Received: by mail-ej1-x62f.google.com with SMTP id a640c23a62f3a-bce386d5b85so786350366b.1 for ; Wed, 20 May 2026 04:32: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-45da0a19b1dsm52210237f8f.17.2026.05.20.03.19.08 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Wed, 20 May 2026 03:19:09 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1779276742; x=1779881542; 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=COrb5QL09Pm4BfpHqIgffL2R0OlEoncANH+QUqMP6yQ=; b=PVLIe1koqPp78TLIQNjoFlgcypWmJ0AOawbpq6PSHF6uEtfXk+Rw9zLPB7PkZzIUxv E/I1ShOmV3z/iscgBJFZ9xvnfl3SzRpQDVaOGSkmbSabI6Tp4uz6/pX825eS3v4O7nv3 Ps/Dn5L5n7MIAzAELXDZy1jXfY8n3BG1JQCC0M8w/7VuonMyHl2rLIO0+wNGynMYnSkL jn+T22O9FxwrRrlh1k+FLzVJ1PVMM4fcCU4CsgpEifJZTXtniVjYu5vL/8sELgD/1Wb9 /+WOoBWsd6vHMLSdfrfxMcFNSCejt/l2RsRcRQfU7MRRRg6PUsx9PUUIzjDkYE8W+403 J5mA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1779276742; x=1779881542; 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=COrb5QL09Pm4BfpHqIgffL2R0OlEoncANH+QUqMP6yQ=; b=Migqy/IXglB/b87ThsJdiiljPP+/WHtgj33stQxR/TmOVyWVaM2CwVAONmSFhxLFqA kE1wDq9VdeT9P+WuPgVIcrhksKgefApKxNChw2bCT7N+IXI6vouimhzYVwjNfmObCu5d W34ETEio7MsuAlvSUmLYkIPLONqJMdDe+6NiLnCKiEDaWaPzYfS4BBE1nqHCRxsMJHzb wTIP7kbsIYa3PhEhyASEaNPXsDVs7D8AnXzJ4XX+fPm67P5pJDjPYH38ZpLZPaZVjyOH 7LqRmEfJg6r7c85Q+v7G4bkBtJ9aELCvEmKu7EMPXB2wWjbJD5I8trI5UB9HY0bCD0Fh sHNQ== X-Gm-Message-State: AOJu0Yz1rCyzkegXIaY65wCCL8ysxnGhx67CjGE2XWW1Vvt5h6AHV7w4 p8iI7iMEFBiYTP39I9yGqTj9C/hESoo+DLGYrI2QpJFBqQ5RE79Mvq84GvTVGHsJsHRPwC5XL7h 4nmAXtpg= X-Gm-Gg: Acq92OHoNPcDyuUkPfHbYVn08PyPb5uM66qfPvD3xy3TxebTgb3fOYQmBDhhMsMsD5K XqKZcSFQTojOzUhOzRDoQeqiP6DEvnahhZ3tpLdRBs0bq3JfLDB4LunCrp6vTjiBGuxUClZRGci 82rl9B8XDjxnByNxmnMCBcSC0V6Jpix+MZBEWuXgtZ6vDKovz4tP/BUqFDwHK+uuMS+7nCfecvs KkhB9l41euK5h/VUD2EYR3xKDA6S72vqTNr4ytwPwu7OFt15W8ZGpEROpRsbO0HQq1F/m+ic5xg yJVroD7alprtTQVazGbP0bO0YlQZSsjpxut9Hg0f4X0CXWKZZ3o3BdaZOx92L19ouVDjmwPYXTa koD1JtN0muMvz571Oo/KbxqUyMC9kw0Dp3tsSewoT7nt9Qp9BYYKc6w45KddjJ71AuJSzg1304A Re+AmWvVE4bk4rpYUI0yoeusig+kvXmopImVCrl+/MgZLn5HRzQQe8iXN3QecQr5NG0aCMs2KAI bs1XtEXe6espAZl X-Received: by 2002:a05:6000:2dc2:b0:45d:4c20:7285 with SMTP id ffacd0b85a97d-45e5c5bbe46mr39557915f8f.6.1779272350113; Wed, 20 May 2026 03:19:10 -0700 (PDT) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Cc: Aleksandar Rikalo , James Hilliard , Richard Henderson , Jiaxun Yang , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Aurelien Jarno Subject: [PATCH v11 08/24] target/mips: split Octeon SEQ/SNE decode Date: Wed, 20 May 2026 12:17:49 +0200 Message-ID: <20260520101807.9971-9-philmd@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260520101807.9971-1-philmd@linaro.org> References: <20260520101807.9971-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::62f; envelope-from=philmd@linaro.org; helo=mail-ej1-x62f.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: 1779276838236154100 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 [PMD: Split SEQNE (this patch) vs SEQNEI] 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 +++++++------ 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 18:34:27 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=1779275844; cv=none; d=zohomail.com; s=zohoarc; b=TA3z51hkCia7hDMUw9SAUth2UgVxFZv8KPgl5ooMrlFEdwza+XZwdikUXybIeMoF9gugVfPyKE14IbpFH+lCywOVGbvJtSCk3TmosgR1EQeuHPGH8fv7k/ZTIefEV2adOoTuomg5BWD+3j/uSnvefKYDAitZxWd6Ah0JVYBIEtM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1779275844; 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=abjz/PzLbgsNKFk17/59EkYKI0uoQmNYLf/G7/w/B6Y=; b=MA2jPVjCJJXlyErX5QMe0Qo6kdA0i82PaJryo1RkkK0ojXmEJbXYSD/IrUWnZ/YWslbYAoYwT+TNQok3FjQPnSOLcuXPweh9kEAqI+FtULkISIEZ9HeedYyNNKQkbgw25Wjc3kL1AEWfvjwK0bvR06ki0wgNzdnFYWKHztxGQno= 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 17792758449333.3733659271489387; Wed, 20 May 2026 04:17:24 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wPeuy-000169-O3; Wed, 20 May 2026 07:16: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 1wPeue-00011N-Qf for qemu-devel@nongnu.org; Wed, 20 May 2026 07:16:34 -0400 Received: from mail-ed1-x52d.google.com ([2a00:1450:4864:20::52d]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wPetc-00007T-2S for qemu-devel@nongnu.org; Wed, 20 May 2026 07:16:32 -0400 Received: by mail-ed1-x52d.google.com with SMTP id 4fb4d7f45d1cf-67bb5ad91bfso10587518a12.0 for ; Wed, 20 May 2026 04:15:06 -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-48fe57944c1sm423824845e9.7.2026.05.20.03.19.16 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Wed, 20 May 2026 03:19:16 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1779275702; x=1779880502; 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=abjz/PzLbgsNKFk17/59EkYKI0uoQmNYLf/G7/w/B6Y=; b=pzmOvI9LMxtL6zEY+CnbFnaXZXt6dX4u2svVhLTNfyhAj6QiPNnPAvYQwBvnwdsds7 cUw5bOWyeVs8f/tClpMa5fXPE+4zTiR0CTjkOKy6ntVu6DfifD/D1rbnbPU7Qn5eomlC vGgIj5ln3z4Rk84nff1V0r6OSARMGXJO4LktTZh9Jucv2D+HsHvP4S8B0eIvWLNUdzOI AvNcluSZcHaE5NL0ZV/7FWFoGU2d89oiMUV2sN1a5OoBM01Slqi2NzjdkgCTsvJwX99k OEWK54E4LS8y+zP2ZglhOnHBSSqDWKVhwL7oVoGLOiXZxeWLvt+Qx+8HZ7YJFlt2CDCK 8TKg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1779275702; x=1779880502; 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=abjz/PzLbgsNKFk17/59EkYKI0uoQmNYLf/G7/w/B6Y=; b=UEmL3yO2da5UisiHzSxBVRUHn/22fUiM3rDzbOmTl/jIMi5DAuQFcWw6FBhhmr9UDU JSYCj1VWtDZLchyWedp04rKv4Va1y6lyWHLVUNwbDgYJtyJ/ehtu56IaaBxYRiOu+ZYu 7wGwmNd5a0u5lXOu6VrajZXE+fIOSnNpCPsrrQS6MD8vy1CHQmoUId/R0BeknNmrh0NZ +XT22wfui3Cb0tZG88HyJx19o59WghAB6JILaBksb38p5xd21Pl8u5BWLhovfbE7U1WN 1vnRyncXhvF5LpwwURVtAIfEH9ebGNTB4GqAW+Bd/1Wz/bRTRo5od20rDxXb+1JTr544 29Eg== X-Gm-Message-State: AOJu0Yx84ShcwsaHJxfttJfPNg+q2jMkIK2LJjv218LZsxBi1PFZUHSj l5MbxThY48W95ZnX80lkId3LqXmsZbhBBSbYUhO0yScEqOHl+sZNABIlSdE9Z9HnBY76J5kWUQT i/YZx/kY= X-Gm-Gg: Acq92OGN+k/DbHwcjy+9VMXEnQPUvkGwqCkGSFisPKSDh6nD4n+ZZ3676LbrRM+G8K3 kdCGq89AjQ7hQ98Ltp5/IJ+mGLDvVoKQPtbmYuawFWJn6T4RAXvOD5zRRxuHpRrFRV1MYzqBFtp dFx5FqWVj5M0JZ7IJ36NZPPpitaVf0Rx380xyqMNZoU/6LJ0k21Zji9R4uF2hS9QrzKmDX2v44+ BupmYeR4pvTT8m3K25yfjVN7zf1oF8Br/66FTkSjg/x3r+O8V07DwANkGQsARmUb9jccPfkxiB7 UYXG/gcNMclhR9WlhSLAXZz0fJEMc7SVwW8WDzfFoAbKsogcYCATs4CoYJYI4fCI+yALTkpOG+p jWgWBhWiQ24cNGlHBVtqgTo8bhgU/C1AMjygDn+zYi0OK2jqrNxhQKddf/yM+eqQaj0hnUfbAro vZ3PdXOrFtyWQsbSm873vYWEnBGS5L3FCpZCRzyVwnvLI9NEQUzOhW8HE2cABi91yQpjvpsXIUo iyY+w== X-Received: by 2002:a05:600d:8:b0:488:904b:f31 with SMTP id 5b1f17b1804b1-48fe6325213mr298546495e9.22.1779272358166; Wed, 20 May 2026 03:19:18 -0700 (PDT) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Cc: Aleksandar Rikalo , James Hilliard , Richard Henderson , Jiaxun Yang , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Aurelien Jarno Subject: [PATCH v11 09/24] target/mips: split Octeon SEQI/SNEI decode Date: Wed, 20 May 2026 12:17:50 +0200 Message-ID: <20260520101807.9971-10-philmd@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260520101807.9971-1-philmd@linaro.org> References: <20260520101807.9971-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::52d; envelope-from=philmd@linaro.org; helo=mail-ed1-x52d.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: 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: 1779275847879158500 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 [PMD: Split SEQNE vs SEQNEI (this patch)] Signed-off-by: Philippe Mathieu-Daud=C3=A9 Reviewed-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 18:34:27 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=1779275845; cv=none; d=zohomail.com; s=zohoarc; b=cpWK1xq0kutB1Q3rJuiWKkmeQuXXMFSzodni9um4Sds4+CbeTZU0jmru7w2R5eyFyUpgx2cVmeJ0JRMRs7II02WJbV5g8tbTI++4DpBK89WRlT6+x3etUykTgq+OWY3crSUsbPXJs/FhPrQedHVIIBxFXDNvt1sVBgMS+/ef+xY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1779275845; 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=a+9y54Uo2UEHNmPvGV4fZeiJWZDL8I1YcpU+MPA8ynOmcDsO+kDsIhMftgawLnKH2r4UW5rdpMpFu+g66A1TC07uCJGgLqS8WIQIbAopO0J+EpiKmJlPR4lpj8FBdwMj2fFRCR63OuBNrqXeoYN3xK7psO8rfVIBcxI5xD+deYM= 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 1779275845019647.3229924931857; Wed, 20 May 2026 04:17:25 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wPeuy-00015f-0X; Wed, 20 May 2026 07:16: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 1wPetL-0000lv-ER for qemu-devel@nongnu.org; Wed, 20 May 2026 07:15:13 -0400 Received: from mail-ej1-x632.google.com ([2a00:1450:4864:20::632]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wPes3-0007r5-83 for qemu-devel@nongnu.org; Wed, 20 May 2026 07:15:06 -0400 Received: by mail-ej1-x632.google.com with SMTP id a640c23a62f3a-bccd251d622so811619066b.3 for ; Wed, 20 May 2026 04:13:34 -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-48fe4dac000sm396157575e9.0.2026.05.20.03.19.24 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Wed, 20 May 2026 03:19:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1779275609; x=1779880409; 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=IMq4lTb1BQdGeKx3awNUstJORspXup2tolrVQSQ3FkmwAYbRZgppVk4uJEqkZ4KOy7 9+z5wJ1Vgee8ucOgL6h89c/QJZfgicNF59MxD8dOafbVW+lwGhU/pYrON2jNPsGvo3Rw E6WH+qc8wxk1XepFrwMbk49MTWL5ded7TvtPrGwDNBDnlg7PEIery3iqOvs+dUJ8pVQL Gz0+UWxsw42wiF78ypYQXCn6KPiVMUwApUVYu4qcCAyPwMkl2FEAyBoRq3CTRPSJO804 bZhjFbUITpvXDMgigR889jGO/BNKCIc3pthndmtwSHciwm7NHZuRYgxls8oBAZse5psD k+3A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1779275609; x=1779880409; 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=PayDpAnQDYPWJs5Nef8SJKK81xJepyJU0Jn9ImyY5sKWjqSpiXOV4sy8dEaynnR8/9 HBs1DJzTlr1V1PDkJ7YtOCRt9pb9/X5FX8hMTMfgy2TjYoL9AGyskMh6OuNCDuOKcflu q5rGyHVywpB4JS30t/I0Fuikm3Qoy+Wn45mmV3eSxo1GXJvRlsu1xJ50l65NIHfq4Q80 na72eEP+JXdl0mVqYjZyIhSttFkXVno9HCaIx2w4RhA3iZW0/JVnYXkReiHPxvH3HTYk hWDK85u+nmhO/hCNtnpaD/UNuJQTT4CwpLznzQGBwbi3XepGH/ZSP+nwOh3zraFD71tk oHBQ== X-Gm-Message-State: AOJu0YweUMAcgwQMa2OiSbhFZk5yniDGq42FNRtatBnlTMPSbq+SDKei p6AhAlOEpoqFcga0MFzLYlOToYHNKJTr5BDANMitRNsGfPhjpAcHSumv5ErrZb6HHczfd0J+s4g p1Jm7PRU= X-Gm-Gg: Acq92OGibW4rh3PHqdpNPKfQO988r3jZ7ifk6pB41rgPj+o4z2c7ETgMhI4f2/FX0XR 1vDqc6MOPk1rkgraZog0CJJyy5t/tK8HBbmVknQOK1z59h4Z91IiSaNE2ToUMfn5tnRMCJGIKsT aeAbCr+o64S0kAJlbch0+N8TaoIgXM1wyrYxoxqIDWPDj8JY5bdb8R2ByzJ77qxyY3uU1PjH7oh Lyv8Y9z6WibvUwHsZedu8lcpD+Ayv/3A+pgye0rsxR2yGvadwY7fHLqJPZ7vvuRMOWrL0j5Rv+A ttq3NWeZ8ry+Z96mi78Ezl+tR0qGp0WU/wGcVJ2MwZkcqo9154BojihBbxh489NcPTCA/0xIB5U I4wSHECvr9Sw013osQh5Nk4OJ+3cG5thtex0+ST61gPxsOuJMLMZizRM1fSJ5ZQmwuPop75Hbm5 VkJxk7Bcq44lkPVatzQfXaECZmJFsSFPUBzHIgn8CQjYADcr73Hh8MKKsZddxbxUsTwHrCyfyCP 3RiFJBYZttENz59 X-Received: by 2002:a05:600c:c494:b0:48e:706b:53e8 with SMTP id 5b1f17b1804b1-48fe60ecd88mr337360835e9.11.1779272365243; Wed, 20 May 2026 03:19:25 -0700 (PDT) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Cc: Aleksandar Rikalo , James Hilliard , Richard Henderson , Jiaxun Yang , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Aurelien Jarno Subject: [PATCH v11 10/24] target/mips: add Octeon LBX instruction Date: Wed, 20 May 2026 12:17:51 +0200 Message-ID: <20260520101807.9971-11-philmd@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260520101807.9971-1-philmd@linaro.org> References: <20260520101807.9971-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::632; envelope-from=philmd@linaro.org; helo=mail-ej1-x632.google.com X-Spam_score_int: -16 X-Spam_score: -1.7 X-Spam_bar: - X-Spam_report: (-1.7 / 5.0 requ) BAYES_00=-1.9, DKIM_INVALID=0.1, DKIM_SIGNED=0.1, T_SPF_HELO_TEMPERROR=0.01, T_SPF_TEMPERROR=0.01 autolearn=no 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: 1779275847845158500 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 18:34:27 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=1779276431; cv=none; d=zohomail.com; s=zohoarc; b=L9wjsGV7DRkAPd2fK1KcT4Miwj+ZPi7tEVbomTCuCFYGZ+AQuEREtRnZ7fI/RTxYlvGxu3J5PEhWvEGIgRpBZjCTK/GFiWTCpaCbSav4xI1J0aHqnJ7bJxMxudpYhGOA3r9LHJSPy8UBTpaR6Oq52eEIHhm5deVYmY+mzak8nhE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1779276431; 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=RooX8K80Uall5OGgGoHqo3/BF7G8quCcNNdB6ozDBItPW8klOa0ImG1O7Z6gaRhBihr6pVO+j/WIKv4nJ0YQNs6l8Jb9c7re4sS3LpUk3REjvXKdaIvTnneCi2shheFZ9gEDZvVrYm2AWsi43R3M+QrzeNlXB6Lmziji1FjtvzU= 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 177927643110740.20107847288341; Wed, 20 May 2026 04:27:11 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wPf4m-0001Qm-38; Wed, 20 May 2026 07:27: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 1wPf42-0000sM-FS for qemu-devel@nongnu.org; Wed, 20 May 2026 07:26:16 -0400 Received: from mail-ej1-x62c.google.com ([2a00:1450:4864:20::62c]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wPf3y-0003mN-1n for qemu-devel@nongnu.org; Wed, 20 May 2026 07:26:13 -0400 Received: by mail-ej1-x62c.google.com with SMTP id a640c23a62f3a-bd5047a2a4cso758598566b.3 for ; Wed, 20 May 2026 04:26:04 -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-45da0a178adsm55902378f8f.18.2026.05.20.03.19.31 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Wed, 20 May 2026 03:19:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1779276363; x=1779881163; 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=EmKURZhtsYCp5sH+T+S825D3m0SMdcMoPzonllZ4CszWQDwBLpYqJmUdOtUWkCdf6O M7SPQzyhi8VLs5roz6MCnrxYPRB2ETwjYnZh0sLqWGZ8lmkji9dpn7BXtjcJlQhOALvn Mw+nOMOLGCf/jNJOx0oq9oeAuVDABwO0F8xWkytgbrP8Vu2EJaWz/CH9AY395B3HR1fj DgeT7MjW8pUzw5dRWGmUolHEQ7IuDOVVeTPcknee2wDxtFcdSubM4oyagrUfqRLGLsiO i2S2im5LxTLM11Yffxkc8ze5Z0fRV6hUAiWuG4RPmqqyO1vfpOMthq+qpllYU0gMiSY4 ivqA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1779276363; x=1779881163; 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=X8rX/aT2nta2qhh3qMe1E27f4zgyonh9IZV6acAtpKbWdu+8NokoKl9DP4nOrWhY6N vL/l27BP8vN9yGJ3yJwf6EH4/pYVJRmqJDpELKUcElcKEmu56vXbkNc0kMHUi5r+57n3 xdoYbjBMZ3MXww4W2PBu7sRqqLpAkfKSP6fSob6JFWN/QRB+Q/LpBqSwbPdKT37o5qBu K/FshX8M0D35ydocdT0+cOcRjQrKJJOdBY7XdxVE5xseNjWg4kPBzkfXN5PFiVEMiHPd MotFyBWQz3DjhT9ZRcuMUfXcF8d+EpADaR5pVZZeuqauOlhhRde4MpKFa5QmF1+s4D0V Jpew== X-Gm-Message-State: AOJu0Yw/0PdJ80NfFgYBe437fkMzpmqUgx+eVpy7+IKx5mlJndLwu0j9 IWe9WydqpqN4e1neezHO0ABC3uaXfYbOOsfHutwDu2QE/U++jRNB1zdK678lWk0RkggBKJgIVbE MkKr76ng= X-Gm-Gg: Acq92OEnp4KZOjzPGZi9EmeYTltz5pvxG2k6e5mBY/Q2vmMabtx8dUIDqnQlCl9oCEU 1XZGNCPhmjfNSe8jVC00LAzDNBqicS7k5z9IJ4XIRaw4EgwgmJfHxReIPFC33nBelh3pIutsW4e Maa1GlVDZb2ww4vgfK1NvSTMsfTqaKNGzZ3e6CNqhRwPZAClHkrhiFDNsTsrEcffZksD1o/RPzU doObfaYLmVGyQTaEKOf1OkxBiM0LaU8ssYN3lh4V4ROIiAEsIlgzw52S9MsxP5lBxIe4A2b7bad wLH8MSQI5jf+jmFS0hjRW9PU1IlSHKdXcr7cvoyldFwBizVDGLkt3rLK6gBTiDQa1I3v1d8wODr OSeXoMsrQbvbiwU+JjI3GPSGZxl/AVfBreJZiFcFyTJmou/L6Hy6/1+hByzXNWSZDV/Ra01MFEK SqdjatlqZm9zuao1KIhhe2skqk9sP8+JDnKk2xfI6zhrsh3xGx4QP+wRF2SBoHFWobML6RQ8w4u KsPpA== X-Received: by 2002:a05:6000:1885:b0:45e:8978:f176 with SMTP id ffacd0b85a97d-45e8978f1aemr10822533f8f.0.1779272372324; Wed, 20 May 2026 03:19:32 -0700 (PDT) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Cc: Aleksandar Rikalo , James Hilliard , Richard Henderson , Jiaxun Yang , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Aurelien Jarno Subject: [PATCH v11 11/24] target/mips: add Octeon LHUX instruction Date: Wed, 20 May 2026 12:17:52 +0200 Message-ID: <20260520101807.9971-12-philmd@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260520101807.9971-1-philmd@linaro.org> References: <20260520101807.9971-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::62c; envelope-from=philmd@linaro.org; helo=mail-ej1-x62c.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: 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: 1779276432111154100 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 18:34:27 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=1779276565; cv=none; d=zohomail.com; s=zohoarc; b=QPgWkVlKnKFEpJEv3fU3fqmlCv8OG5QpOZTwfDm4wpPOwsV00W7bd433VhfvBWcEGZiYkXAYoP1MMaULI9o8Vi+mlytxpglkUp9euZrzRwRwWSXkD/LI51dxdYxExdjNxv5q5Z1HHgJF/sGXflnFpLGrQAP5yT67ZvzgEJB2t5s= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1779276565; 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=Igd1RVqbMRj0KF6Z5rtit2mNJx9LDf5QxE1IB/cMGqFV0bUD2GIed1AaUu6nnM7OZS/dXEN5H5rfTvQbehJ6iV7RQ94p0bd+H/FTfeyFFrvmv8tyeyeOaROKSOOQBi5dL57ykJipIBBR8sbZafTf+SGUprPTIjVeGxilIbu/T+E= 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 1779276565898398.5463302637687; Wed, 20 May 2026 04:29:25 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wPf6u-0003XQ-BE; Wed, 20 May 2026 07:29: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 1wPf6I-00039H-P6 for qemu-devel@nongnu.org; Wed, 20 May 2026 07:28:36 -0400 Received: from mail-ej1-x635.google.com ([2a00:1450:4864:20::635]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wPf6G-0004Vc-NM for qemu-devel@nongnu.org; Wed, 20 May 2026 07:28:34 -0400 Received: by mail-ej1-x635.google.com with SMTP id a640c23a62f3a-bd373f83042so980657566b.1 for ; Wed, 20 May 2026 04:28:32 -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-48fe5cab818sm403812035e9.14.2026.05.20.03.19.38 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Wed, 20 May 2026 03:19:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1779276511; x=1779881311; 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=LVNWN2g+dMPd2jrVaNqZc00XV/9gMQQjORJwfF50BK8LPiSdFIPnjVuk5FwObO/ISa SKs/FMM3W3kfYWPMJzWMRjVYp6xX/dUS525xaQqR0rrWeBb6PMVBnlLyhcgIIlSNM319 +2lfKJGAZaXoKBW4zJanagxspzwL30UbxgXib11Xvpe6YO1AiNxcQ5OGFMmoJWyIeOWE +OzSqzIte5Hzl1teg9rNX61D6JNcCL3y7DZKgDaWPAlSeewl6oMonFeIsGLCTwEX7sNw Th9VkvdJ2UrmU5vhpCIhZMNjZmUgGAVUz0CEFZXm2rPHD2SCs5yhMv1l8dFIlHXEVQwQ BsZg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1779276511; x=1779881311; 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=QA12Dcj4URmYS/IjMlMcBMxn5zXQ/ikc9AyJhD3L49PEHCWsDz17Ni15dhyez+JTh2 ilRsd1LH3bHVYgcj6Bo1nYnx1Mh4y39zBSARkyAo7SyPgn05nct2VP1p8185BJjO2rOP nS4CMkJCDDo75Vc3PWJmv/18Z7FjqAFcnpYfjx7UJHbGxiD2esgMk4PMTBPHT4n/Jb4x Nh6IROxBRgfRZ9yG3rhur/AvDegFE6q+LA8rhRa89LdCmt+7rIWrtBaj3j/eeAqtNzZh niR9Pwm0aaVGeI+NqYYDtt0s0rftaYhLeUd8e6kYuxya9hw8Ueb8heJEhs2SLdudaVgv /pRA== X-Gm-Message-State: AOJu0YyndTCywhEgrvPWQXYba4F23QvTpE4eh93hHclMYkV6nKNuLZZG HhnfVxiXclF6WC1Pl5uULrAR4Bd5dH+6RcIL2G8xR83JDM59K8YbpdHkdavyNqEDXETPptUPb+b 0RgX9wAE= X-Gm-Gg: Acq92OE+L2Oljsx8ruL/pucHDKVW+25MjQrnd1cx+3CPyRt1fFKJ7gMCrMI0BDIOVMx WSL3Y3aM1XtBGE0UGq7bod23o/CYiAqfQtQSFaLm/kWf0xPYf0SIHj5No76b1JWvt37vg0eMWcq pMy6t33T+KufwCEDd0QUnNwl6S//6Hsrb8d3UrS2nhvRqoJZ5LVHq5+cSq7MOnvAqFLYAQ/9mlX qhfCPpbODZpDNOz30ZnQr8Y+GhPAEQCqQk9qGBtR9SavzeZeDj9vv+2HS90Sid3crXeoqmiW7Cf MSw4amQL3SEf8ulsKX51RKy+wdvX6aqo+lDnOP1oysJGSwY2Yl/MTEpMSqSHqz+/pmrCheICXX2 ZgD02U846tqc/CwH7h52yZsgF2gBe5J5dPABhdf/YBIWgxpI1Bg41jC6ZE2S0ZFnZK5MB0IFGXW uo6etUwBU9wnq8J3aiPUKVsahPAf/mrXjVJejzWepWO20P2C0Kqn94wQ/Ux2iiwXsq4bKM+yQrp hhfEQ== X-Received: by 2002:a05:600c:c10b:b0:48f:d1b8:9aa4 with SMTP id 5b1f17b1804b1-48fe5fcdef4mr275122225e9.7.1779272379308; Wed, 20 May 2026 03:19:39 -0700 (PDT) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Cc: Aleksandar Rikalo , James Hilliard , Richard Henderson , Jiaxun Yang , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Aurelien Jarno Subject: [PATCH v11 12/24] target/mips: add Octeon LWUX instruction Date: Wed, 20 May 2026 12:17:53 +0200 Message-ID: <20260520101807.9971-13-philmd@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260520101807.9971-1-philmd@linaro.org> References: <20260520101807.9971-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::635; envelope-from=philmd@linaro.org; helo=mail-ej1-x635.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: 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: 1779276567156158500 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 18:34:27 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=1779276905; cv=none; d=zohomail.com; s=zohoarc; b=cV9ShXmDS09ZkxiNybefO+RwUTjuY6BybRyOUiMfYLTqV8TZ0ka75lN0Uoa4y/A5MF2LB37WdYU8HwYj8z4Obbk/nZzpFUW7iC971pvAl+X0Lc7zZ/XikBWUo7/a5YdqUTU0J56lT1LUFBIuv6cbXLAWNE9OMAIrrERNw3U7rSA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1779276905; 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=MP9Eubi2xnvBgezazT8hi6Ivropv6xfMAd7GXHZ/QQI=; b=ir6+Adr1quGTWt1m1aZd0nxVdk/BjgtZb1VkVrRod58e1EsvCtAXTqgHfMSAfMJcWwqsoekgP4h81ILXtt5GljKzOJWAu7nlfIRpjVha0wqIte29SmIAoF+OALz9ert4CbfcUt8yUDB4e0JHobcvSWrFTDDX8nWZiaPBgkamk5A= 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 1779276905436601.4583820528096; Wed, 20 May 2026 04:35:05 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wPfCO-0001ez-P6; Wed, 20 May 2026 07:34: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 1wPfBw-0001Pu-ST for qemu-devel@nongnu.org; Wed, 20 May 2026 07:34:31 -0400 Received: from mail-ed1-x533.google.com ([2a00:1450:4864:20::533]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wPfBp-0005hu-Qe for qemu-devel@nongnu.org; Wed, 20 May 2026 07:34:21 -0400 Received: by mail-ed1-x533.google.com with SMTP id 4fb4d7f45d1cf-67fd8befac7so11290480a12.2 for ; Wed, 20 May 2026 04:34:16 -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-45d9ed30110sm57237655f8f.13.2026.05.20.03.19.45 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Wed, 20 May 2026 03:19:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1779276855; x=1779881655; 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=MP9Eubi2xnvBgezazT8hi6Ivropv6xfMAd7GXHZ/QQI=; b=GRL5pgWGuDLwoRaY2UGV6iM5sb+udUQnwU8LnKgTUAjwmaC5DJ56TTygIk6CqAoHn1 ZrLuPrGQDWB1fk4C9DgvrDr85q/R6hJ1urlrnhfRHpsee4aMu3dHkbhnHsdQccn9L3MO cw5VNonaHfgQnYoVV7ootKsdXIcbbTOz3p645a4kS9jPIwrMPkVDkWqynMuX2z3sn0kw mz+hRKSFtRmwTNsHn5shgWv3mxj+D+n/eu+Z56nCI1P4Vp6jEp8tohN1dTNRHat+dMeW 9skSOAj2hee5nroGJtvUI+pn3DLrhR75v7eldSAMlusCr+RZUchtETO9XC+JLUtRqQi3 FWow== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1779276855; x=1779881655; 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=MP9Eubi2xnvBgezazT8hi6Ivropv6xfMAd7GXHZ/QQI=; b=O2HsyHmjdr6+Om0QZTk1DcG7O8hGGdbwuOs+NuEaNdeJMXtANiC3I6FVQFWCmk2bKr 3+XVRGwzufDceL33rSf0cDCqBKqJRxcj0o1D/J2sm8qXjRJyDBl5A9t1NHVts6nfcn5v SVIY49y3Hsvk9Gcy0UWQZUcyuqX6giahlnNL7jPbbZ/jmyfkmJvnCNAmF5lFG/M6v8b+ WzfDQYVZ23DgLYoaeeRfRwpXi9ZGHTzWSw6u7lE7h5P5dXlgYe0mbtBT3Ap2/P24QuQB Pjl4UlR/xoPEN3KQCdTEACCL6okCdC/PhvBXPnuQoJBhl4HNeHbCR5WTgidtKjZ4yEO5 WKWg== X-Gm-Message-State: AOJu0YxS66AH8SZNfjiO8yM9I0SRxRwMKiVgtk+VWFvPtglfIn479wAB UFoGF84BV++D6g21gNMoHSiOrYMEumF38Su++mqYYhs7ELuZ4I31ottJAMHiSXmTpo5kmYsmTNk RXrtFa3I= X-Gm-Gg: Acq92OHA5UKNbT1d0lgN2IfOrGJ29imFRXgUlcwCX/XDPYK4f+IKgYfpcMc4iTAKiUY H8qoHpi4Q9cWQMFXskLfPYfY6tQEPsBpuZwmHjbHWG1YQ1E/mchHrcXkfLPKZ1VauJImU0E+mKV l0K6kgXYDaJuKHU3ZNiZEMJJkBQLlUWwbhlQaUHLgAak4tJVNQSISD5+kXz++ZUru3dQ1sJ0FeG V3FkNygPvMDIkqwcfHdiIE0YFjmqO9XmO3SZEwrxBcDbgjSPaE8IhQFx1J/s3rmY3gaKjMixp5X hFex+JcHbSLQohcGGPhogjrwW6QSDwXRX7wfEyEcmTw+PRJNGUO1f6L8fm45A740ATX6XDjZ6oJ jd4rO0WtViGv64FHIFHevs758eyvQ1a0+BJszEhzJ6N1C96L6REgPy2S4T6IUTUCEmWADs680gM 0ANLTfuG0A3awEn/+boNAR4y2J4AsoqvCdpug5kxkzsQfprjYs4z4Pnrgg1FLaOLYP21jQU6s/B hOiqg== X-Received: by 2002:a5d:5d13:0:b0:43c:fc5c:a9fe with SMTP id ffacd0b85a97d-45e5c5879d9mr38194613f8f.20.1779272387600; Wed, 20 May 2026 03:19:47 -0700 (PDT) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Cc: Aleksandar Rikalo , James Hilliard , Richard Henderson , Jiaxun Yang , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Aurelien Jarno Subject: [PATCH v11 13/24] target/mips: add Octeon SAA instruction Date: Wed, 20 May 2026 12:17:54 +0200 Message-ID: <20260520101807.9971-14-philmd@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260520101807.9971-1-philmd@linaro.org> References: <20260520101807.9971-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::533; envelope-from=philmd@linaro.org; helo=mail-ed1-x533.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: 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: 1779276907894154100 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 Signed-off-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- target/mips/tcg/octeon.decode | 4 ++++ target/mips/tcg/octeon_translate.c | 14 ++++++++++++++ 2 files changed, 18 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..f00692830a9 100644 --- a/target/mips/tcg/octeon_translate.c +++ b/target/mips/tcg/octeon_translate.c @@ -161,6 +161,20 @@ static bool trans_lx(DisasContext *ctx, arg_lx *a, Mem= Op mop) return true; } =20 +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); TRANS(LBX, trans_lx, MO_SB); TRANS(LBUX, trans_lx, MO_UB); TRANS(LHX, trans_lx, MO_SW); --=20 2.53.0 From nobody Sat May 30 18:34:27 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=1779276304; cv=none; d=zohomail.com; s=zohoarc; b=VbnK75ePC+MCDXPOY9WvJKwaUHSVQoWVmkpGPevfRze4KDmrBp9VorvcXQRNIh27Vb+EcV5NQ17AsDmeaSCG5aiBbaKL15yzhfHkjg6TTE6aUCBBqx5159nKqdVCWzDy8SJN5NTCIus8DNoGLeST3EeFYYqqUS3A6rE4y0sy32M= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1779276304; 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=4s6EOQ6ZnlJu90hNf8VpH3028jFWn1tyWjcvCFB1a5s=; b=brUC+22/OK3pmPfJw2iRM8ZKGyhezgWVu/IILzN+9nldwubSUNiQrkeKCnp9/avTI7FH6YDWEJq6O7ftXW1gjWmhcqplfK2lDW9hhEsgQWzGmdWi1wPZMn5vIv6lEEHxof41UD+osJbwVaRVo7PC4KZ7hT9YjPW7/DxJnY/saMY= 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 1779276304409875.2509853689298; Wed, 20 May 2026 04:25:04 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wPf2B-0004VP-My; Wed, 20 May 2026 07:24: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 1wPf0E-0002os-UE for qemu-devel@nongnu.org; Wed, 20 May 2026 07:22:45 -0400 Received: from mail-lj1-x230.google.com ([2a00:1450:4864:20::230]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wPf0D-0002Qx-7p for qemu-devel@nongnu.org; Wed, 20 May 2026 07:22:18 -0400 Received: by mail-lj1-x230.google.com with SMTP id 38308e7fff4ca-393c93a0166so48419911fa.2 for ; Wed, 20 May 2026 04:22:16 -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-45da0fe0fecsm48803598f8f.26.2026.05.20.03.19.53 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Wed, 20 May 2026 03:19:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1779276135; x=1779880935; 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=4s6EOQ6ZnlJu90hNf8VpH3028jFWn1tyWjcvCFB1a5s=; b=y9FvI1+lz8YuOlrAkem48vWBL8eRUI9nbLD/4vqjBOm4eHihBkoK8PXI4kI2yPdIJY gEGDAsT5o47A7hDRJrI9If9MqdEyofjyMFsPb+e7qYfApbLb8DENOiMiaop8UEIg8lyT lqkh8LiZdfFvLs9MS+n3gedWn6sRij2NNLE8IsSbODYfDKVSTk2hPLV2hHoNcE9TOm+y aRTtHtBSYH+haus2Mp5D2K2ZOeEE8sOSatAnjuHohehws+dI25n57Umby+cFpxWq8vP/ 4DwYopNsQ2ulvZkPn3pGEAz6bmXfTEN78frCZ61W3jfN/ho1GoqkZsnqw52EhKWOLRwN f6Bw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1779276135; x=1779880935; 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=4s6EOQ6ZnlJu90hNf8VpH3028jFWn1tyWjcvCFB1a5s=; b=tDrzOMbvOVXMTxIxxBOxDwciEh7EKuSoxELJdvrw0Kd1U5h7SkKf+lFcQHkqd7qh9n qZ5O9t98kMG0t93g8Et4P+MTcx2NvzwMlJeeFITdZV0C8rNo/yJ5fgy/vmZY+2jUwpwU BNUTg/7mQ8QJGJ6FUjHe2pVZcvFaPhcVDqIjGQ464i0sgUSuN0PCaboZDQA8iJbqIOSX Xllcdi52+sfDHdTGgVWMPx9D+FGQcyMMVPpx8epJjGjlJs/J1NacaIRfYhHlXPKSHPPB mcI+7nmv/xcwwmiM+JLICg+kKe5qnWTmp1aQH1pqPE6MpTEYhseylOq49s2Q5HeqKtKa wf2w== X-Gm-Message-State: AOJu0YzfOUbx6kjpA5X4wwLVzOW9EKbyyrajDVper5HquiHaZwhNw+ag TsJgwET/7OMPt4eslTmwUR6RmultTeFjYj4ERujNQp5fAneO3Zw5r7swP70RaUJqdM+oDdHfGBN bieOC2pA= X-Gm-Gg: Acq92OHa66hW7yz1p5X6JewegQwgcT4XgicXnrBQSeOH4BYDvpW9r7ydIqBeqA88I1d taoDWUBFAfEt0QF7dxW9r76ODawY+v+ZgI7eRfOiSW4287qeBoLHNAbynLhUIUf8IBZGzegzw3R PHfoBf19c4O3KX+rpqkyGNrgKY++syEpvXsEK4t7dos+qxRDxzncL4npaNmOJH2C3dkHFyz46IJ RV/GWO/Hv6zdjKnq79izOgaY4gMXNE8T1Tg0N7L3+5J9dodUsrRCCMzm5N8HE+R08+9u1RXXZ80 AAPhZjOk71b6cQwzuIB+z8FO4IbrwX+xw0UNyj91FZg1yT9id6637JPgSB7/R1aKi2P4Ze8JVhJ p/4Pht2JgDC7goCka6YBXEcGoKztbXiOy6u9GoRWjxFbF/cWurd4RzRPysnryk40BXFrqwuC1+w Dm9bTKOnoNCIfbyJq5pQ6XEUbL9RjJAhVmMDxJHrlK0mPTPIU/kUwYHwbfwMFTjKUFvoaaFpw+C C+Z+m5S1ik0Mqs/ X-Received: by 2002:a05:600c:a406:b0:489:e126:b757 with SMTP id 5b1f17b1804b1-48fe63297b9mr291800915e9.25.1779272394625; Wed, 20 May 2026 03:19:54 -0700 (PDT) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Cc: Aleksandar Rikalo , James Hilliard , Richard Henderson , Jiaxun Yang , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Aurelien Jarno Subject: [PATCH v11 14/24] target/mips: add Octeon SAAD instruction Date: Wed, 20 May 2026 12:17:55 +0200 Message-ID: <20260520101807.9971-15-philmd@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260520101807.9971-1-philmd@linaro.org> References: <20260520101807.9971-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::230; envelope-from=philmd@linaro.org; helo=mail-lj1-x230.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: 1779276305737154100 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 Signed-off-by: Philippe Mathieu-Daud=C3=A9 Reviewed-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 f00692830a9..d3dfef2e0c9 100644 --- a/target/mips/tcg/octeon_translate.c +++ b/target/mips/tcg/octeon_translate.c @@ -175,6 +175,7 @@ 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); TRANS(LBX, trans_lx, MO_SB); TRANS(LBUX, trans_lx, MO_UB); TRANS(LHX, trans_lx, MO_SW); --=20 2.53.0 From nobody Sat May 30 18:34:27 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=1779276826; cv=none; d=zohomail.com; s=zohoarc; b=fNmTHl75rfmofdR44Hl1VFAUelTLHl+2i55Kut0H3NxDBPYsIvvAHb0DMKNpfspUYPCKbD2Rs5jUHZqwN3xZJou4YACWcKbt3lJ6eRSrTO9faVC21uzOOClW2I37dz1xPVmXGAj2n4zzYwlcIHkZycwo/Z/bQpweDcy6dR2Gxno= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1779276826; 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=kVw064VMnnT+zaBzJaNHoIx3i0+TRGrFhLq8QhYPqjI=; b=GJxq0L5z1vTO18aEiE+GB1N2Q2Iiio+aHeQXLX0aALOX6LIUFMkw6nc1zoIaX2TpP9dpBf7EzF1f7BNwGk8i56UA+sGsvdqgJ/vTCdI1VQD+XYrpreGjDmpUpUWPNwTSemFz2vT94hmP3++OVdPIxH/JVdLyfHay4uotbxRyuNg= 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 17792768265871016.5649559003443; Wed, 20 May 2026 04:33:46 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wPfBF-00010C-TN; Wed, 20 May 2026 07:33:41 -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 1wPfAm-0000fl-Sa for qemu-devel@nongnu.org; Wed, 20 May 2026 07:33:22 -0400 Received: from mail-ej1-x633.google.com ([2a00:1450:4864:20::633]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wPfAl-0005Vy-6y for qemu-devel@nongnu.org; Wed, 20 May 2026 07:33:12 -0400 Received: by mail-ej1-x633.google.com with SMTP id a640c23a62f3a-bd56d108454so975018366b.2 for ; Wed, 20 May 2026 04:33:10 -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-45da0a19c2dsm53777845f8f.21.2026.05.20.03.20.00 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Wed, 20 May 2026 03:20:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1779276789; x=1779881589; 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=kVw064VMnnT+zaBzJaNHoIx3i0+TRGrFhLq8QhYPqjI=; b=r4088Lz2etVMA2vvs08DxTVAgyiunHm0egT7hauu3RLneBf/AZI9MJrj5CP+baDqIz M+zLVh8MPX26fPRKqJz10hyWFG5tQdunGKsJONoVfPv1BK5xd1V9pUCRtau4AeSg4yH1 L+tDplHTD8zruIJ+pqGgXin/XIO5itZXezckAXIGM9f3cyDLttJ8eZhAghQM5ORArso9 rPAjgF7vmrebo/90hS2M7C+UsaMzx+hv9kTEGR3Qkt1oGG/FHU1luGHS7y8TgK0e5PS0 yBYRSre1ALLaIR/n9UfP/bRbJjipGUsBFQ0E3kCN0CdFQpCsbyYx21BwtN6KMs6of4d8 DiJg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1779276789; x=1779881589; 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=kVw064VMnnT+zaBzJaNHoIx3i0+TRGrFhLq8QhYPqjI=; b=CEu7jrKiyBVTjPNF6NhZXo8TgFepGKJKmXxs5rvEnBeLRxEVRmDumX3XY7eK1BlYbX K7ks96GMCWSwivmfxDmBl7M58NRsz/h+kP6e/qqT7zAfETQipVHcqlUZ6w0jQ7eQZ7Zx ZoqBEYd4X73zGhbTz8K+SBlk/VqMyTxUIjjPZvUNIciJfZJCpHHyAWebVFPrOOoURH+B OO4N+zM6GbrAxwU7MpXVb49DwvCrtookc6/KaJFp1gm+4Hs/O030iUdx3GKzECQNIzQC 7+RgGl0UpAqOBjceEmjXybw5knt88iYueFZiTL+m8WGwlhxBfaVpCaFQZ2uc4ku5BQoL HSww== X-Gm-Message-State: AOJu0YyaZJE2ND089zKJNwke1KstaklGWTFVxvObQjG/PgO6db9P0+TN sR18B73jpkzkU6dF3e40nK++L3CQYMx3g1roMBkqhx0D0DhtS88eXLttN7uhEHmV9BwOdVrPsNB itkTwaOo= X-Gm-Gg: Acq92OG6V4x+Y92cK7GOdGt4L6ZX5zlh1ZTQLpyHv5epzlz1rwaHOx6g5sSjOlCVATm n01emalZztsKUXWOTC1uO2rQGycWbB7PvTHAx8jl7KZqIW56A8oj8KwLtLh9UTSv5mBQvixu63v LX7TxgjDn9DzBH9GcFALqHZhx91bNwx+aQ6aMGvyS+2rk443CGjhZb2z3o7kV2AxmyqRjNXQSeY +4uam3joQIIJf7+6vqSuNT5affxntd899dKFLoyNS/9dWcmhb8lIyIwHi+AxUwPZwAKpxc8tvOz eJq7fyOxGVuZW0Lpr+a71OdP5Mp4JLb0Ug6It68xRpbgrI/YL46n7urfSo+qqIgyTScs4CtWrrI cjVAT8plqpZ3EnDgGjkplhWCcb/9/3tB7VyRVwVFCMxBuz9Kdy6BKJ6rmgp7DPy5Fp/NLtFCGdN uf2aIRlRakp2oseyFjRC1wfFLL+z204pDq05/wjZBZt5HiVe3cCp3cnZedAI+HlPB+WTvxwXbC4 gVEusjWePlA7J4b X-Received: by 2002:a05:600c:c173:b0:48f:e230:c3f8 with SMTP id 5b1f17b1804b1-48fe661b50amr388412625e9.30.1779272401873; Wed, 20 May 2026 03:20:01 -0700 (PDT) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Cc: Aleksandar Rikalo , James Hilliard , Richard Henderson , Jiaxun Yang , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Aurelien Jarno Subject: [PATCH v11 15/24] target/mips: add Octeon ZCB and ZCBT instructions Date: Wed, 20 May 2026 12:17:56 +0200 Message-ID: <20260520101807.9971-16-philmd@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260520101807.9971-1-philmd@linaro.org> References: <20260520101807.9971-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::633; envelope-from=philmd@linaro.org; helo=mail-ej1-x633.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: 1779276828870158500 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 --- target/mips/tcg/octeon.decode | 3 +++ target/mips/tcg/octeon_translate.c | 27 +++++++++++++++++++++++++++ 2 files changed, 30 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 d3dfef2e0c9..b5ebad98048 100644 --- a/target/mips/tcg/octeon_translate.c +++ b/target/mips/tcg/octeon_translate.c @@ -176,6 +176,33 @@ 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_i64 zero64 =3D tcg_constant_i64(0); + TCGv_i128 zero128 =3D tcg_temp_new_i128(); + const MemOp mop =3D mo_endian(ctx) | MO_128 | MO_ATOM_NONE; + + gen_base_offset_addr(ctx, addr, a->base, 0); + tcg_gen_concat_i64_i128(zero128, zero64, zero64); + + /* + * 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; +} TRANS(LBX, trans_lx, MO_SB); TRANS(LBUX, trans_lx, MO_UB); TRANS(LHX, trans_lx, MO_SW); --=20 2.53.0 From nobody Sat May 30 18:34:27 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=1779276562; cv=none; d=zohomail.com; s=zohoarc; b=j1cj0dpwKqBNbwDoDWaDro5St5LhYyfjyzIjVLBd+tzLuJli/eJT6YGUk8coofz/Y7Y6M7vh2PiZBX1HgVgSEWBHsJ1TUPrx70IxKx/DRHuwf0jWDheUXiQ2VItAw+Q8zUwh/EZhnNbhxzBwI39dpSHhAIBT8ffiTvElWBrqibI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1779276562; 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=KdA1IwgCPEN6aJYvmA3sZErNIjWvr/NFyJl2T/LkZD4=; b=HorVkb07lw/4sMge5XkvzAueeLSEuVaGM5p2GWY4uP17g55sDFA2RoC4L8xqQkWn86Lvr5cN4aPDBTv2BQ3PRnGithgZFOZaZbQnhcREFW+7+KyvS0cM4zQDiTkBPNwj3eTMdZYlRVYMul58f8nHUcnod/RhTXrgiqXMl6uuSz8= 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 1779276562103536.3426826007448; Wed, 20 May 2026 04:29:22 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wPf6y-0003fF-Ja; Wed, 20 May 2026 07:29:16 -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 1wPf6v-0003c0-Ta for qemu-devel@nongnu.org; Wed, 20 May 2026 07:29:14 -0400 Received: from mail-ed1-x536.google.com ([2a00:1450:4864:20::536]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wPf6s-0004a4-P9 for qemu-devel@nongnu.org; Wed, 20 May 2026 07:29:13 -0400 Received: by mail-ed1-x536.google.com with SMTP id 4fb4d7f45d1cf-678a16429c6so8566200a12.1 for ; Wed, 20 May 2026 04:29:10 -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-45d9ec3ac86sm52289889f8f.14.2026.05.20.03.20.07 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Wed, 20 May 2026 03:20:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1779276549; x=1779881349; 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=KdA1IwgCPEN6aJYvmA3sZErNIjWvr/NFyJl2T/LkZD4=; b=yLGHkVvOJTgSYSh3GFE5+qeTqMzKtiCooycC0gwppMeH74shZEbxOQW8HEapSE0qGn F0iL/KfixmzXTfpJvOrHDNCQApNKmFZdUGlsyE9yR7qrV0CzPjWpO7dh1Oy1HtpqpkBA kaHuG3j0AG49SajGWiFZ6QZVTeyDphZhKFsHp9c5zZmOzE2gWwqqEfGBlhfgkyVkPcmF fYUN66elHgfsSvd2DdAkKqBD+i+y5bnZJBb2hlz1CcZ5+lZaiXjRpybVPw8OE34Jre+v Mu02ThQ+/tg7fL5FPSAhxrdC++LXhetJLBEpo7Afj72uR14fdXWll0Ay3tB7LHtrbwTn FQgw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1779276549; x=1779881349; 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=KdA1IwgCPEN6aJYvmA3sZErNIjWvr/NFyJl2T/LkZD4=; b=Y5Hx4gmZJiuOpCjh1X7l4sBz4oYROnjOlk8t5GsOwniadRdnKz0j/i5C4SyBzRzWLV qsVy4uOynDCyFkhijPq66vORXz6h8LaOkVs3flFNgTgoIXrI1PoAHXO6+rdaJKfcT02Q Phvw4NB2Ab0WityMpLlMOpXOhzj+5PfCMEGgLzRfZBjGDMUzZGzjj5fvzRY73gcudWUU /xNH79nTa3pc0KD4CIPPVHKIn8aVVTZCfaZBbxwdZTKjdJ8NkkOXC22eM3GA8EbAXMSr MQEMUEe53bWhu4dX+sgVbfJlTc0ej2OUe+HLgDnGlFpbFW5JKuxjxOFcPNGnHy8O8G1+ 1Qlg== X-Gm-Message-State: AOJu0YxEHousKAvEWuWLdwZ8/h1NSjs6e15xhFUQcW5/Obi642quMv5L J4h5J+u2sACASVlxM9EQ+7mRXFCfeWufcVsu0sRexizWvWzmLbmow5LriTIeuab4HSS2CM/cKGE +kN0NsE4= X-Gm-Gg: Acq92OFMpu/rGmF//Crf3l0xa6VjTF2Z7yY5N7dpJEy1OBOZwajF7x/3cDGGJesuqHU lVQEsmc7OgF0JVHjVLZBb49LJG/FfCYHCPd3YtA1TqXKFrk/a3GAOqCtM+ikaOAHIdP4rpMSmOK eWszOZI+l7Cac5m4EMV1RJrUfRg/9hHfEVoJytEcfLirRgiPAPcEPGQu65R+Sv5yAU5o9/ZHEMV zyA17VouOu8FqJ7Pc87BNvOnwLcZhaY66ix+vVvt0s+p4Gaoo1wkKsKW7v+We4luQXwY+Z0cyZX PYD8cEF5ABjC47EWhYj4JVKEPJdN4CrV8Hk93qddZyLD0UO8bmgm3p3spkvRMaFzhdBy6CT/0j5 JeIXP727ZzUxBPPBRFDQr6fEl6VmZnpbiI0mIQYMliiy+1OUI4BFFw5tNmew/7SPbfH9NvOFzFZ PYIG6Uzpk/+H8L9z1LsN3AGk5wDrUtBDLBEY0Xu8M1a6AXdXTpO600yBLvJ8I1p4CTe6KLKoHfn Tekrw== X-Received: by 2002:a05:6000:2dc8:b0:457:ff13:b2a4 with SMTP id ffacd0b85a97d-45e5b73b26fmr36040445f8f.3.1779272409076; Wed, 20 May 2026 03:20:09 -0700 (PDT) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Cc: Aleksandar Rikalo , James Hilliard , Richard Henderson , Jiaxun Yang , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Paolo Bonzini Subject: [PATCH v11 16/24] tcg: Introduce tcg_gen_addN_i64 Date: Wed, 20 May 2026 12:17:57 +0200 Message-ID: <20260520101807.9971-17-philmd@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260520101807.9971-1-philmd@linaro.org> References: <20260520101807.9971-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::536; envelope-from=philmd@linaro.org; helo=mail-ed1-x536.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: 1779276564521154100 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 Signed-off-by: Philippe Mathieu-Daud=C3=A9 Reviewed-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 e02f209c093..ee0ad5f6a3f 100644 --- a/include/tcg/tcg-op-common.h +++ b/include/tcg/tcg-op-common.h @@ -251,6 +251,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 18:34:27 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=1779276463; cv=none; d=zohomail.com; s=zohoarc; b=BS62pUyV/SOLigiuSSMowzXzSP5axO51BI2BxVN0L0e7zxY9YkteCivmL2fQauQ5Eqguo1Mh3awK7REwXqHAOFAf/VEuYiPo/JJu0ZQtT8CIwi7PCf6j+9xoj0hTcNR+xsw3dRfIXV4KsQNDm2dVmvEMAOkzGh0luiHGx2eeMO0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1779276463; 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=OeZL/T5jdjlSKHIXhKLGXt3KfTjBa7fdkGn1B8vnNzPU1Z++r5NkQZIpB23hzGgKCDOuUkF3/gT+4GSQJN8AZibj+85d9y7gSgIB/Z3RA1i+ub9gwxm6WAcIANgl+Kw0VF0/1fOFgTgQg4LoRFad26mDqWCts6XtAchsPTIAbNE= 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 1779276463188488.33300806324496; Wed, 20 May 2026 04:27:43 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wPf58-0001w7-5N; Wed, 20 May 2026 07:27:23 -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 1wPf4D-00018X-74 for qemu-devel@nongnu.org; Wed, 20 May 2026 07:26:32 -0400 Received: from mail-lf1-x136.google.com ([2a00:1450:4864:20::136]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wPf49-0003s4-Kx for qemu-devel@nongnu.org; Wed, 20 May 2026 07:26:23 -0400 Received: by mail-lf1-x136.google.com with SMTP id 2adb3069b0e04-5a87edf88b3so5094288e87.0 for ; Wed, 20 May 2026 04:26:21 -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-45d9ed2f738sm51541404f8f.16.2026.05.20.03.20.15 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Wed, 20 May 2026 03:20:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1779276380; x=1779881180; 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=caFFjp80rZFyz6SFtu61mif7LCLhrSSUfEBRJ5jGYAgzlCgHbQwPaW4zVT87deIELj lN19Lhag+SSj8HcLfDHWuVC63pWuQIbhbo1at3yCTB2ICmP0IrUiFRBMPBjDvO1uu7+N MhDdeVh2L5uTlAIuVynVGmRlcM10uLOyFy/PSrsympmtlxpgvRbqE/KE0vUyD/Aw70Ek mk4s2tpqo3qHwzgXnX02/l7zUSJ1sLBQtQkV9Rq+xqaKBdYuOADCEXE3sfNEvn1abdjz V2GeAKfDYztH1mY7QC/FszUG4W7NWCWBKtFLh9/EJ88YCwWU8JbAYiQF8v/ijTR0N4KU PecQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1779276380; x=1779881180; 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=bNFPyu8VAdzVgLzWXWpFcapOmLrk0E2BCuP0urNm1vU+oaP0TRsO9Bgz1NaF7xPuQY 3HtoW89WwQkXDA3F8coBqsUt5Kr/r8jZHitS5dqMreta4MUnAuSl70S6e5X8BWVaXFki mWEBSCrfeU9x2uDwCLWtw9Hhzb9OS1kFFhoENVQdIfwJKOkCLPp4SqylKPhpZIs0ctKC MGv+fKkKZosFdtZQJ/8nXsecSEqobB+JEg/GxhdpGa/TwwnJLJngURUKzIL2FkoiX6yQ gzXY8ZdxrtY6RO0nHTX4C24kxlUu5L8HdmQsq21YcJvno1x72SlY7+4swMkaSFFWVRX1 dwlQ== X-Gm-Message-State: AOJu0YwGUDyOAzRsua/p2k49E9FQ+sh+pRDI+wacZpOsiE0WVLsLyaQh gc0efsR5VupcIu9HlFFVQmw2zh+uhAUjT88offETS63EXHAanfGZu/J3iI3oALB86Ikop9HMsJZ aDIEGJn4= X-Gm-Gg: Acq92OECeFYQT0chHfzfwBK67ZWF1UvLAoxbhWUV+opmacDB40mjvAjkl8Ix1i3Znr2 5YtjTant2KccQGjyDKaSkQorP32NFArVYigpAkpS4EhoaKwRAb3X0mtrXkozh12N/iF/a9zQlir fI3m2oEhfVB6nzFnSoPXEyllWyzCpv66YIyiTd2025Ct8bsttCjQeWazEMXGm72Zr07cXy74UWf agmshD3KAI8ZFoR/aoFmxJFuSjh5tFbhESkKWhTniF54JswMln5OneVcIpBGzRQF3AJow1zZOAa dMWAywY/liXK/upwGJ79rVDLvpXsNAkazBbRP2DMfJNxToruvIJ9wFMeX/N6X1uNPN3y8Y21ZVk PQ+P02GgiDShiBmNrYtBIYJ42pILZVhP6TGEO7rDjkz9QOFPvPGVdQSmJ8AfyuB28L3Sz2fd0dc LhPUwqaAL/MDnAa6aY3cBSK18w7A55ak6JKtcl4u+u0BaUMgW/tXcoFlu9+k6HiHhRERdUYuh/3 Ia8jw== X-Received: by 2002:a5d:52cb:0:b0:45e:655d:6f7 with SMTP id ffacd0b85a97d-45e655d0715mr24828444f8f.24.1779272416368; Wed, 20 May 2026 03:20:16 -0700 (PDT) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Cc: Aleksandar Rikalo , James Hilliard , Richard Henderson , Jiaxun Yang , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Aurelien Jarno , Huacai Chen Subject: [PATCH v11 17/24] target/mips: add Octeon multiplier state Date: Wed, 20 May 2026 12:17:58 +0200 Message-ID: <20260520101807.9971-18-philmd@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260520101807.9971-1-philmd@linaro.org> References: <20260520101807.9971-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::136; envelope-from=philmd@linaro.org; helo=mail-lf1-x136.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: 1779276464153158500 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 18:34:27 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=1779276462; cv=none; d=zohomail.com; s=zohoarc; b=gDe/9jwUjVmR93V0hKxJRRB43k4e7HIiNPrZmZWhXq7PZVYSpB3uI+Po13T52Z5Kyw5YXAwkw7gecT2ag8X4I+bnqi+mUAUoHoGEEojlHD7yqlV78dmHqLOb6QsOYTUz6S2LI7qorI9lefIBcKlw4L0lTCOibth3VdlA168gk/s= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1779276462; 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=Y2ftIcejqF7pf3PGV+e0jciQnSDe6xE1w0+bNOQvv6Q=; b=ZQJbqpUugeYk+pu2QnK8W7Hd5zPba9hstmGGjXqWapd7mW6Gh3QSbAyO8kKTimGtf/Vva+0VVTvBkKUQbkLjItNKkMg65wyqLNTUEV8OijyLTxcCV3RESezsCc2+Wj4bzyP+nCOZObtiXXL+Yjl+HJKLQEt69rohofeni8OzBuQ= 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 1779276462361182.45970568395796; Wed, 20 May 2026 04:27:42 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wPf5I-00028N-6Q; Wed, 20 May 2026 07:27:32 -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 1wPf4o-0001VE-J2 for qemu-devel@nongnu.org; Wed, 20 May 2026 07:27:04 -0400 Received: from mail-ed1-x52e.google.com ([2a00:1450:4864:20::52e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wPf4f-00044C-9B for qemu-devel@nongnu.org; Wed, 20 May 2026 07:26:58 -0400 Received: by mail-ed1-x52e.google.com with SMTP id 4fb4d7f45d1cf-67be871ed3fso10565357a12.1 for ; Wed, 20 May 2026 04:26:51 -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-48feb00e5easm127454855e9.13.2026.05.20.03.20.22 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Wed, 20 May 2026 03:20:23 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1779276410; x=1779881210; 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=Y2ftIcejqF7pf3PGV+e0jciQnSDe6xE1w0+bNOQvv6Q=; b=vfvDduzXkhwDvwFMZgdVBXr8x5ziYc7yLfXiPR+AeKl45oXrtyCZdlKOZuWY6icHOG B748t7I4yewL98GYoETjRE4v/GFBrufmyZgwpaVT1qGNKKCIkN920KFB3myHXJRokERZ 4djpJPsZuEOpHn4YOF2KQpuT6+4qHo51a3puri+5GVp/m7QrmhOsZ6DGUswiaAunyUOM XkCIIdyTvLsBdN+Zxk+asJ8lY5jwSVqDsTaeWtNTwhCpArS/4fF7T/pzQCw6o/mos5ZU lhcnilC0ODJphNz95OL3kZJlSjqPdlc4LPB53Ui3OonpzSg1eWrbvoZu0oK8LTxhLVV0 1ILw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1779276410; x=1779881210; 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=Y2ftIcejqF7pf3PGV+e0jciQnSDe6xE1w0+bNOQvv6Q=; b=FtLixnfWZ/NI0CZpLZq7GPvwxf+mRPs34vpPmPJp15xLx+I4J/jyGOnMwx6N3ZGkVu AnpZ6JpdhhSabDMwuWodysz0k0EAa+dLg/3kKFfrZQRdso3CzmUFgvlJ3XqDtkQVKwju 59hTd4YPONHIny2yGcmSjj1n7UZWndyOi2Fbx76Ea/9AXOH9JbqpnAfZ8nv3DBTGta0Z jgIOLEbOHZzYuShtGiwZ4n7RsJ86/pKTcz/KeozOvHyegeafj+XA5+EzvSO4swEMpV02 vBsZohPdJlf1EsdiaCNVxnTcBWOfj5WciYWdVNUIY27Pe8AJY4OW2hTvy/J0Lp2V0asd ru+A== X-Gm-Message-State: AOJu0Yx/YUJbgG83jreWBvkfz6GoCh1CAMbZD4bedjihYQ3e653uOtSc W+fEQElRDob94F1SPCs6aX2zuAIuD1jeS0/w9O3Zpa1WFv6dB46ytxhjTgRuvoZN24vLU+YrC0a kE+3e3gE= X-Gm-Gg: Acq92OH4Xg/iQr4yh7nWiBqfF4TNlZzLNDL7V6JlZhhEqYros/DWTGb3r7oZh7oaMKQ 26rv5cJcUTIePfnMu+2ByO6J/53P4fUniu2DEt6g0XbduMEnqQhhPHr1CHqBGj67hYNpHkGBPk2 dKHQb0fnt8P3/JYlAstyqKCEzzsw98hjL50lbLCuVX9nvfYyq/CmnfSCOYMN3CH8X0zLEpDaUc7 /70rY/rhipaMBWWneMp9xNhz0bxV9bcwS4F3kQ3jS9ZZzdbpmJec7Z5XphTKBgO6fkK5MFTTYqM dr4qdkSlTk5knlHrUFIeo9q7cGblA084Q+aTDDmE6VDpAblt3Xru65nMmt28TWXMY+3A96VMNzA fu3CY/f8JHeV3NhFemIIBnQiK5W/YovXyKHSVn+LJJzF5AX92kLlPX/tjY5TwJ78rv8xTLkeJkW qUu4MsjTxJVhctgwXjDW71zZBHG+UJ8mTO+dn7Dv8cy5x565em65pZnx0xxUyFvvgNxS14B4rwz qi8Ww== X-Received: by 2002:a05:600c:6d2:b0:48f:f199:4c02 with SMTP id 5b1f17b1804b1-48ff1994c86mr182031885e9.9.1779272423651; Wed, 20 May 2026 03:20:23 -0700 (PDT) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Cc: Aleksandar Rikalo , James Hilliard , Richard Henderson , Jiaxun Yang , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Aurelien Jarno Subject: [PATCH v11 18/24] target/mips: add Octeon MTM instructions Date: Wed, 20 May 2026 12:17:59 +0200 Message-ID: <20260520101807.9971-19-philmd@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260520101807.9971-1-philmd@linaro.org> References: <20260520101807.9971-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::52e; envelope-from=philmd@linaro.org; helo=mail-ed1-x52e.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: 1779276464100158500 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 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 b5ebad98048..aae6e9811c8 100644 --- a/target/mips/tcg/octeon_translate.c +++ b/target/mips/tcg/octeon_translate.c @@ -210,3 +210,35 @@ 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 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 MPL0 so that VMULU sequences remain + * 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 18:34:27 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=1779276260; cv=none; d=zohomail.com; s=zohoarc; b=C6tt7US4FQpdn0DJUKf0jARopSVMLhLqQaDCdLO4dMO678QDq4eOgDQfkPMDGDmjwLZeOSu4bDyexUrT9WS1vrOoiD5Ls/7pZbpmdQwvDCq0kxOZnQVRVp3LG7HG79ow3VIWcudaY0v4WuiDOtsSndYc1NON29r/ergn1tvA1b8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1779276260; 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=LZ5Lr/3HXwgvmiWJDpsGZOFhNXogIonxGAyV7GqXUGU=; b=UMm7C83sBmfzBbHZ1188OPGwNK5MreEeYAlhNJR/KJEOVRaAaAbJKQI2m4uvaEnERmMB0BPvyOwy0bu/4LFmI5HT3O0yHO7tyS8OK6JviJ0NC7XUXJ7agsiHHhj2NSjHC2Ujif7XTZ2I8dG2TKArsVmOpxTMYU+0c4bF5qt69J0= 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 1779276260612637.096100414164; Wed, 20 May 2026 04:24:20 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wPf1t-0003S5-Bx; Wed, 20 May 2026 07:24:01 -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 1wPewY-00020J-Ma for qemu-devel@nongnu.org; Wed, 20 May 2026 07:19:38 -0400 Received: from mail-lf1-x130.google.com ([2a00:1450:4864:20::130]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wPewR-0001Dt-UZ for qemu-devel@nongnu.org; Wed, 20 May 2026 07:18:30 -0400 Received: by mail-lf1-x130.google.com with SMTP id 2adb3069b0e04-5aa1b2327c8so5857915e87.0 for ; Wed, 20 May 2026 04:18:06 -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-45d9ed2f738sm51542897f8f.16.2026.05.20.03.20.29 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Wed, 20 May 2026 03:20:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1779275885; x=1779880685; 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=LZ5Lr/3HXwgvmiWJDpsGZOFhNXogIonxGAyV7GqXUGU=; b=zAbZurhLJspf1sKn7Rd4FOY5203R+d/KxekiZgkyGdNtfiApk/99TCYrBNWNsHsJPI XF9jpTpgCoRxP2upMfyv9fMdKzwwtM27Q+9nE5KtP+xYQ6Xe2O4Bjfy/QqSfW/31elkw opvbFyt2VdSnEe5b2REkRruUHX0KOrtfQ67lKWso/nFaFbFlrwrKOErBBi6fxli2NsbH 20MTK/pbzQjdZgdoL+jSPCh7IzIQ+S7pr+E1Agy+z0RdYCDj6aMDO7Eo4P/m33NObgvb fcn9Wm4xXOrPJQH2XT79CNUOjEPL+av3MPZHSQBzehnKKo78H/+Izd1vNXdvRqb4rHC2 Iorw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1779275885; x=1779880685; 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=LZ5Lr/3HXwgvmiWJDpsGZOFhNXogIonxGAyV7GqXUGU=; b=OO2qTMHcZPd+4g8WU2Tw5JMAbIEtgupWZWacGpgdbstOXwEH1m9M0E4Zr9Y74++KUo xuXC5gak5UdUaybYW9ky/isy9yXXgol8kUjVCutMUwVUnEIw4MNWCbrYN0L3BgTYwkuB dytqGUEBsUgQc9hPdo9t7BOAZzSQoRnBeKYQJajKEbHP/KPEzCqLtz+hWzr5vIjazaXP fPZiZgJ3z39+yLrYCe5XflW3h92MkP1NcvmSyydPV3GKYZ2YNTRtiTNpEwXdVDMYIVak qSUr2rOPxLP+RMk88+Wa2JPrUv32riKhkXWJmUKGMV4MuiyMtpHV5zFHAVjIduB3pgEp CMHQ== X-Gm-Message-State: AOJu0YwPEtSO/1gjXXu5kD3fA0bo0erjPVXuyIs4l9RjF1x1eURsuboB Rl/e9oUN4f7w/pQIPfg+KOeULqMrABq/ZRM6Q6kYVKo2/T251VdArdlCxraSNcJjYq6OOoYy94b BDpE8F54= X-Gm-Gg: Acq92OHI/1I//O57tHx5eMN47uGpGsQEUFrEygASXEDmNPs8zKjWvM3MbEhEfZEjvMh dPIPMdCws0jBAi+BA3CfV0/93VVd5/aXLYUhofcmESJdqoMYtI/OIvHCWeWZChamEVlmxqZHSmZ 4Ix9DO5aDTC/zRoOv6SFP46bnSoi8Ca8Up0+oBDfS35tLg8nnPOuWUBsuYQr3IBWrmDKS0EpDTO frGcC25lHZY6QiM2meN8v1zpf2UO3RtbcBkOgX6RDE4pd6NpeODR2EZDFCc9WCortiwG0XZVnu6 SarKWCbMffXrNYfmXnMj7FwnHuUyl7BDQuJh6wVWeh6CDQAzu3tfBQ6CiPG+2ooR1rx6vjgsD9h tMdxBOPWTLl6BSXxXOQYUNgdI1hYag7Ft8UeN1+PeuqoVyU8oRyxyStpGhvBVcmxnTCoVTrkQfa 6Bc3sF8TOY8Ak9wsIWZdh3PZQ9uicxFLXtzglTxg5tGTab2o7H37KIEE+Q/UaXjwlBzgdyK1EH+ 4kH6U79twgB1cWx X-Received: by 2002:a5d:5f49:0:b0:446:96b1:f53 with SMTP id ffacd0b85a97d-45e5c6000acmr38242651f8f.26.1779272430778; Wed, 20 May 2026 03:20:30 -0700 (PDT) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Cc: Aleksandar Rikalo , James Hilliard , Richard Henderson , Jiaxun Yang , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Aurelien Jarno Subject: [PATCH v11 19/24] target/mips: add Octeon MTP instructions Date: Wed, 20 May 2026 12:18:00 +0200 Message-ID: <20260520101807.9971-20-philmd@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260520101807.9971-1-philmd@linaro.org> References: <20260520101807.9971-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::130; envelope-from=philmd@linaro.org; helo=mail-lf1-x130.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: 1779276261910158500 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 aae6e9811c8..36d268e09c4 100644 --- a/target/mips/tcg/octeon_translate.c +++ b/target/mips/tcg/octeon_translate.c @@ -242,3 +242,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 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 18:34:27 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=1779276326; cv=none; d=zohomail.com; s=zohoarc; b=Ibmj5U8pHpTHevVv+1MxyCefVXl2E+qoU1Fmu6o0b0DJNE8X8TAog1fYWT0yZ6K9qYwJbwKhvZbROGn8ofeHExa58gAZZDyu8qRd7YNPmGOgV2cVPY6UCu2LCP9EmnehtkVpirU/3HYaesHNuGnwVW1rupeXyY4MXlBZWlYkrr8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1779276326; 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=RzVrX3+IqFTGVGRzZuphthGb6ztiIAMNQ+4ei3zT1o0=; b=d3FDRzYry0wVQGL9TuKrwAPMtqwQTucsO/81C0uCxOe/rDzL6AYkpwSJjjFWTF4c6BGUQavuv9IX34JiLCUjk6g3zJGVmS/jllm3FxI/dDOrnm46oQ650S2TmeRMhUkUPQvVrWJ8+qoWVlmu8TCvu2n0NhwhNK5lkxpCUM2WEpw= 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 1779276326278598.4845188338512; Wed, 20 May 2026 04:25:26 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wPf34-0006K0-Cm; Wed, 20 May 2026 07:25:14 -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 1wPf22-0003zX-B9 for qemu-devel@nongnu.org; Wed, 20 May 2026 07:24:10 -0400 Received: from mail-ej1-x62a.google.com ([2a00:1450:4864:20::62a]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wPf1w-0002yT-G2 for qemu-devel@nongnu.org; Wed, 20 May 2026 07:24:08 -0400 Received: by mail-ej1-x62a.google.com with SMTP id a640c23a62f3a-bd373f83042so979914666b.1 for ; Wed, 20 May 2026 04:24:03 -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-48fe57944c1sm423923235e9.7.2026.05.20.03.20.36 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Wed, 20 May 2026 03:20:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1779276242; x=1779881042; 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=RzVrX3+IqFTGVGRzZuphthGb6ztiIAMNQ+4ei3zT1o0=; b=tdzvf2xem/G2uvtiSXP9GV3KEnwJTQSbbre/nxaB578EhBVzxNgX0elccsaGNO/VbD A2R+p5tniUJm5vqcOiXBnquDi3oIS1Kg+UJKtUmLpo45ogl1IY5TlQl33L9so8EJ4sP1 FB8Lsg9yCkiWPEGGbsvNLU6DojZv7ZK368WToouOrWvkV4XAFS0PWrFtEQzRHxOkqP9u OG0ouQt5aA/nv5vr1UAZcuQ4E9Bm7SvH8pDezaqaECWaqmMtoGUXYQDsITpwwbg/h7Zc UZMM/DhCR/hraEuPVM6MZakEsz3ZT2OcB6BVAsZr9Kdtcfuko6AmLL2VF9aPQ07oUYtQ ll9w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1779276242; x=1779881042; 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=RzVrX3+IqFTGVGRzZuphthGb6ztiIAMNQ+4ei3zT1o0=; b=Dwf9nM1j4ERs/OhrbYI8HLIhmyiocPxN18GOmAlACmtR95G36mwyxlczRj9E6w9A7m a0CCY3J8iIGOuzoIVjqM34U2jDI35pRa+ClsQN4DYu7uFbeL4s1JkbsgOBKp7T5eiu05 hn+QnHdYcqfNJ5rnRq0/lAAue0aLhtr8Uirp1DeYkTJOqz7hjsPKasqvkG2z0l8itag+ edaBWpWTpZozHV3WBpWrFq4AN3zmxtzJm52FDiXx7z81cuQ4MXmiyC1tBpr5q+88h0Ay Sd+skb4DnnPPQPQDlwFfjscGH1KzaMhf/FHDjuANgilj03KP5ggN39CK3Dc0x/VYH0A4 qP9w== X-Gm-Message-State: AOJu0Yy/yrR8C+lUcI8i1uulGkPK79U4w+NHydarOVlk7GPoOMHRJMWl bfJQIXWl1Q0XXI25QFQ5I1gSuKctHlGScZb9mcP6Hde9lpPqULqeeZGJxqrnt47QDyb9ujuAKbK kyjval08= X-Gm-Gg: Acq92OH4QnsDrRlrCO8SXiwFxlHZ9Oz4Dsj3MVFmCJ2n22uyuNLlQhoRtKWYSJVNogL 4j1fOkwOaO0rV6fvmf7VnlyJ0GKiAQm1Mvd8/cWcTa7DPk0yu1Gnr4SZ1zvGf9D5UITkRNv4qzz o7yDO2Od0CckiP3hTQzRrIS286y6kCfAGCovhPg8s71EhzDAbl44vcdQGYSNmTvj1XfL0IVnMvf i2NdgbDRNi3rbnJpXE9cvDYAazom8o7ZanW7l9LPppTbgwf+yXa2pnE+gSZuYrTr3etvPwaCbiG jfhb63LpzKEN5BzEjHes8gzHkHFdHMviNhpLVwPFlbNRxCV5jDxDL89AoOwIkuKrSI4LhG3IGLp k02jwMgxl1kWl4XWWD1tl87AlTTviVqg7Pem0EslzXjRsqt9OcprDm3JV7QwstXXApr2lTQAw/a qAS6x7M7xDnIhdQVqS3qbyTi1ug3zjTNKuQGaQD6mlqYxgDfnXb0Qi8MDIdnpfRc3hRRQ6IClBR 92Mr01HfCVggH5u X-Received: by 2002:a05:600c:1d0e:b0:48e:635a:18d9 with SMTP id 5b1f17b1804b1-48fe60da96bmr354284145e9.15.1779272437949; Wed, 20 May 2026 03:20:37 -0700 (PDT) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Cc: Aleksandar Rikalo , James Hilliard , Richard Henderson , Jiaxun Yang , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Aurelien Jarno Subject: [PATCH v11 20/24] target/mips: add Octeon VMULU instruction Date: Wed, 20 May 2026 12:18:01 +0200 Message-ID: <20260520101807.9971-21-philmd@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260520101807.9971-1-philmd@linaro.org> References: <20260520101807.9971-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::62a; envelope-from=philmd@linaro.org; helo=mail-ej1-x62a.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: 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: 1779276328224154100 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 36d268e09c4..7b00bc994b1 100644 --- a/target/mips/tcg/octeon_translate.c +++ b/target/mips/tcg/octeon_translate.c @@ -265,3 +265,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 18:34:27 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=1779276658; cv=none; d=zohomail.com; s=zohoarc; b=ZHYTQDaOyBqJ01Qvj3pC0rSl1pnGBs9n2j4Rc2mWGSovFPHbvr6r0WiFBvaoQMdgzMhOYJ3HVnIWC5TuHfvlwkX22iWbN/otmdMOD6adF0m92IiZNVYlZgyTLzm5+hY63MzJNzXXo2ojK9plmUYrX4U03plJuTv6pGq/01hvfLQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1779276658; 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=ue5uZ4vIh0+aNYybTiW3+rO1WQzqrnSqYcaxeLZNSTk=; b=R0iBraPxE7jY5yjCmNDr6AG/RARiKUdHLIDa05BGzjXQ8wc0A46GQFOphThYTOwpYLmtdAs+oBrTV7N6301rFkrFjSnRYFGFx4deAjHL2a5SUBg3qLsbhhFL/PzLBU6Hsr94qQlued7rRsj/7MLbdB5V378N7Y0Ovq92rITkFz0= 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 177927665889673.89615531754475; Wed, 20 May 2026 04:30:58 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wPf8I-00063u-Ly; Wed, 20 May 2026 07:30:38 -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 1wPf7y-0005ib-Bh for qemu-devel@nongnu.org; Wed, 20 May 2026 07:30:20 -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 1wPf7u-0004mc-Vu for qemu-devel@nongnu.org; Wed, 20 May 2026 07:30:17 -0400 Received: by mail-wm1-x332.google.com with SMTP id 5b1f17b1804b1-488a88aeec9so56218465e9.2 for ; Wed, 20 May 2026 04:30:14 -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-48febe58c04sm129624985e9.20.2026.05.20.03.20.44 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Wed, 20 May 2026 03:20:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1779276613; x=1779881413; 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=ue5uZ4vIh0+aNYybTiW3+rO1WQzqrnSqYcaxeLZNSTk=; b=aGe9xCwQkZLjvEH7mkzaALe6zFL8XBhuMnf/DFXuIMp4t/PrsBg+tuyN4B7hfYouFd gRqi5RvGG1C/tj3EIJ4xN4CAT82c3ryFNzhTYiCVhrocLo0tf/jqWlvCvyPzIs8Xyu8w hZgveyNh2KOkgjkln8Zd4aFzJnGcIryPKh8qm2lOc9q1fQ1YusjRfKwTweAXt9lgrLUJ imcxQqYP81vwwxO1myFRNL4SKc06ZpNHjSE25dPzlXzCijjshq7sqog8ljn7Cy9ajCvr 1tCd3zXYPIAB4eBM+amLTSZQRBz1OZeKhkI+yUEbklNor4bdkUiGmVAECNAegjwZaviS xNhw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1779276613; x=1779881413; 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=ue5uZ4vIh0+aNYybTiW3+rO1WQzqrnSqYcaxeLZNSTk=; b=nGTjtYX7Ja26HgZRx7ek4yZOAgzQhLCE8p4yoicGwFaHKtqsSw4EM4hn0g708ghPQK aUVRQ0qjRK2h+q3Eu8pUALzLE6m5cXaNmHlS2xo23Y4oJG8OEzikxvaNppijOcjywmaI k/1QTdCOTiKEK0gNZPDVZtJDyiVgcYGsS8r+7w9k8WFXY6VEzAdiezjwJfWOOmrHk4Aj u8mbR0pa1UXyO4OyFKwAwinPF+vIK+n9F5Ol0mm1tsydc/ieBhIIjN2qtjxGpL6BOvht txirAJglyNJbZ62zY9GDOdsfIAVExCkODJFesx01EdKmVY310oy5E70uty2q6TD3c0WH 8omw== X-Gm-Message-State: AOJu0Yy9Gso8ZOVLxpNv9uMzsX7h4msyV/Y9TQHtEiEDp1qZfYLLqzvp Watrqyp0uvBh8g/z9mC9hd+kAuoSx4jL6EwBntdAKmkPSjIiI747YVkJz5IOy2F0osfBwQnB6f1 vqvwEmi0= X-Gm-Gg: Acq92OF0X0ZEkaljlmsNYouzGzFUeUBAR7dRFnp5sovBiPwWxDi+uFbQBULA6XZL6C0 4fM49KGlKSI98BFdWK7NSinYUBDstdJCljNotqbAFnf3OPk1ZgBHuHL79OSc7tTG8G4uEt8fKKg LMhhGWBR8FLvWebxhJrvyb25HfGmyE59X8yQ5TGCdAy79Ml7oM7wnoGsJp8bmwXf4xZ+HBmtnK2 XSV/fHfjf7tPVTSNe5JL6emL2aMiohVV6z8RA33SkoGqOq0P/UHPzOQPJ6F+qMJRuOIh4R9dP3l YyQxGfy4EFzchodozP5BxvqWJT1qUIRCGNB0N1jdn+N+gmpyjcaOP2/PzZ+GvMgOnwpY9U/StoE iEcBbJygM7me4bJEPO9rIkUX3nHaG4kVv84LhpR43oLbwt5R9ptozRg86G47ywKBY/dvSyw/yWC JUMwlTLXNRYFED4oXPUMifpZoGJYTIVp0dd7wqXsMeFzFDnIo4gPPx8yCX2aWfc8hElCN23rnft 3Q7wx6uIufJYxPF X-Received: by 2002:a05:600c:8905:b0:48e:5d91:cffb with SMTP id 5b1f17b1804b1-48fe60e7d6emr300681585e9.10.1779272445131; Wed, 20 May 2026 03:20:45 -0700 (PDT) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Cc: Aleksandar Rikalo , James Hilliard , Richard Henderson , Jiaxun Yang , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Aurelien Jarno Subject: [PATCH v11 21/24] target/mips: add Octeon VMM0 instruction Date: Wed, 20 May 2026 12:18:02 +0200 Message-ID: <20260520101807.9971-22-philmd@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260520101807.9971-1-philmd@linaro.org> References: <20260520101807.9971-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: 1779276660446158500 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 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 7b00bc994b1..e51d3e6cf78 100644 --- a/target/mips/tcg/octeon_translate.c +++ b/target/mips/tcg/octeon_translate.c @@ -300,3 +300,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 18:34:27 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=1779276779; cv=none; d=zohomail.com; s=zohoarc; b=DgwdT/WNtvoVzE/5UEoPqiJgP1osCgIZqVQAXiLO7ZVVfemuBu6gIkGEiURwmnoTZ7CyIyK2DwL6j+tzzAZxCfCcxqt6/wjCaMZiTfkgqUC4pj1d6SzDHgr3aCYNsgUxR3VxAX7QA49sO+LvgF/ao5a6K6s5uFk8U3WaEUEfb/0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1779276779; 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=LtmhMmok2qaZ50VSXqH19jN+0cDOCQGc9KxyroHnHRA=; b=D0p2QNNi1xOaqGQvzWXTaM3DBLPtNYYGMxQl6751anuxMe4h9BPhWKXA5vhMlx59mG0jTj2Z4s8FIlBdGn90/ZNXmo0xb3/Vq1c44Pox5AyeEG5Ugm5OTJfZG7ulAdbNjRuOlwNMExf/mzbCxAoauawebe1VAMRVWTeuFpoDgps= 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 177927677978673.33425864801166; Wed, 20 May 2026 04:32:59 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wPfAT-0008KY-Po; Wed, 20 May 2026 07:32: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 1wPfAG-0007zn-Iz for qemu-devel@nongnu.org; Wed, 20 May 2026 07:32:46 -0400 Received: from mail-lj1-x236.google.com ([2a00:1450:4864:20::236]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wPfAE-0005Pp-Qv for qemu-devel@nongnu.org; Wed, 20 May 2026 07:32:40 -0400 Received: by mail-lj1-x236.google.com with SMTP id 38308e7fff4ca-394413a63d3so39749361fa.1 for ; Wed, 20 May 2026 04:32: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-45da0a19c2dsm53783964f8f.21.2026.05.20.03.20.51 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Wed, 20 May 2026 03:20:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1779276756; x=1779881556; 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=LtmhMmok2qaZ50VSXqH19jN+0cDOCQGc9KxyroHnHRA=; b=q0wEiDTsd+Cxl5vAd0M3txcRwwTHfE7+6D4OjBFXpgyvCNbytVvW8mQ6pY0aVIfTRn DwNyDT3x+ZdinrIMcP5hmOmHBPlzV33RYVaN6ifTnGEGVJWeQ75TsPCzoEdCWANgamgc lKiZxyEgpEOqn45rmpCm7PjWp4konIbbzqzfpDYM05HuWNsEE5kRq2cS3GsMo1zmmX1y HTW0IIHsGI14Mo9VqLxvZURLMVjvujZibjJRTI71+OFEBbLgrzyR8MmOhBpi8h9+zalb BK9LFqDuFZEbMBZ7m4Ws6Xh/K4YBlutNbWxr0S07JmImd+cO62zFzar4HLMh+pWsCl9p sA9g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1779276756; x=1779881556; 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=LtmhMmok2qaZ50VSXqH19jN+0cDOCQGc9KxyroHnHRA=; b=rDFyoG8/qKryHP/47Gd/i+5F7b290wfg7uxPfHLpsSY67E6LlAzjMNntWxT7RZtFTK yNoo0UfEyNlbr16l+c1SUxl5XmsUm3HiwHiz/dCkS1l+23mvHj7qzJogFzbA4d1DRwpF AYQbm7TALpDOP+HNB1OLHQfS3bVkOOHcenKkmbc9lhSIu+Ifph1aIo1yuHnxhF7Vf9tN 5FzlSqW28uf+ZLp7p9lVzdZ0acBIM0CNwAwwG0NnvqTQFxuTEHIrZRFTx0AzK7WAzReo dCCtJDahPEoPGxvgZ5jHs0u6Eg0HIUh38Z81d3SJ5UXQkhafagBpokOsc81IGjs2J7+Z lsFQ== X-Gm-Message-State: AOJu0Ywxr0A3GqYfQvW4A4R7n9S+JkyNqJLykTv0wxLkxXXlTbSdbTPI 7c0JC0byH1+QwdZoyRmQDHf9s9Cj+dWIHRi+CNCovM+bggNztpNUa0VwHSruPBCakD/VisQVxHD +Wy8JH7M= X-Gm-Gg: Acq92OFiWJ3DFdLU0f7xpdoCSIuEMYZKzAnC4EO5ynNm2bCdOghVbacEw45DsklyU5d Ha0xEL+Ftc49S4JGBpM5K1ZLJbU8jKQViPw5ougcXSQ3kk2xUXq+SbdWuInKVsq6NjhSzCThmHi /5UB+Jxd4e0QKMbJtV7N2gddPUomHHUJlIiIPzTRdoTqaLoyWokp9Aus+dqwKvc3ufGLuuEeGr6 xndU//CxMb5UuJMja90X4dzDkh3rxL2+skUBN2yQWNIeE/b7OkyUvvV63dlKEAOHTJu5cTrGdVI LtJPHOPj2T73XZ7mxQt2W6+4c3bKmurgsM9ykB4DuyZEwKEKIoPAAz8QMwnf9dvRzkGqHTkmSWX ztiRMkIrrUkSEy3JJ/5bS0Qa6tovxPmbc5VAhyyElUy3BLnHMgvz21AKfJNbU+IsKxIU+nK5psO P5wQpfvybAVnr8Q2MhzCsSquozGA7pNdOjJgUq7DFraeI8/7htjErfPN7uDQxRAuDxj6d7LDsDG CD6uQ== X-Received: by 2002:adf:f643:0:b0:45e:73b6:d107 with SMTP id ffacd0b85a97d-45e73b6d124mr18275366f8f.41.1779272452379; Wed, 20 May 2026 03:20:52 -0700 (PDT) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Cc: Aleksandar Rikalo , James Hilliard , Richard Henderson , Jiaxun Yang , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Aurelien Jarno Subject: [PATCH v11 22/24] target/mips: add Octeon V3MULU instruction Date: Wed, 20 May 2026 12:18:03 +0200 Message-ID: <20260520101807.9971-23-philmd@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260520101807.9971-1-philmd@linaro.org> References: <20260520101807.9971-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::236; envelope-from=philmd@linaro.org; helo=mail-lj1-x236.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: 1779276781142154100 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 e51d3e6cf78..04e51538f93 100644 --- a/target/mips/tcg/octeon_translate.c +++ b/target/mips/tcg/octeon_translate.c @@ -316,3 +316,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 18:34:27 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=1779276628; cv=none; d=zohomail.com; s=zohoarc; b=BzRuurysYx0YrqbpqU3yGr4zzfmZwvu3XGkpT6rkQk15T8TdgrnVfiIyLS0LfSYp1O36xKACupq5WtDmDHo6HKGNJJ9JmZa233u13hk2kVhvQfMsLqO/nJwefzLuG39X8c2jxbuOABZe/eE4O7MgULdc/cU3vUCInfacVrcaBso= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1779276628; 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=VudyhCqFqn00XWcXAdbaOBPRFSCZrAzrPoD3IIkReWM=; b=Doivgj4QkJgtK2gxxA/00PH5qxEkq1Up1qPG4QeU/L+KD8WAVXlFQoHoLcfKA+bNoSuxUaxX2YD1voww/IrHf4/pE26YLfWlUuKzbhS5MIibcvutuYstbTG0B/jfRItfROa4fBth6YLns/nUic+E6hnvZ4K778qobybvdDDUaH8= 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 177927662867068.55877306558932; Wed, 20 May 2026 04:30:28 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wPf7w-0005dt-4W; Wed, 20 May 2026 07:30:16 -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 1wPf7h-0005Is-Rm for qemu-devel@nongnu.org; Wed, 20 May 2026 07:30:04 -0400 Received: from mail-wr1-x433.google.com ([2a00:1450:4864:20::433]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wPf7f-0004ja-Ri for qemu-devel@nongnu.org; Wed, 20 May 2026 07:30:01 -0400 Received: by mail-wr1-x433.google.com with SMTP id ffacd0b85a97d-444826c16ffso4225929f8f.1 for ; Wed, 20 May 2026 04:29:59 -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-48febe6b9efsm196021825e9.5.2026.05.20.03.20.58 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Wed, 20 May 2026 03:20:58 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1779276598; x=1779881398; 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=VudyhCqFqn00XWcXAdbaOBPRFSCZrAzrPoD3IIkReWM=; b=vzubYs1wZEvWZL3TMntcycVlOlfi2DX0HjKdykM7R8HtXq2dqKF6RPt5fDze1HeRJ6 rYkevJZesFJyjFYPgTAlO9advMh6a4b+eCSR9k5qTE5ulO+YjmLySVkKj7+QJ3rFGp8B IrAgfR9OBH4/Ng1dfZgoQyDyv3o2kaDgtylCXLWkPE1Iu5sawplLGglGQ1fBOy9OOiil bEHF42ggdrqF2UPEMFdoWRM7Ho7wGRJW+HofeRsDbMHfiAlcj/cxybDqyBFFweXxaGQ1 gRx90QNoO9kV/l7r4/it9imNuQqti0lQkAfQnLxKUeEbif6JR/5IvqTIPQzguj1T7YmE 4w7Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1779276598; x=1779881398; 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=VudyhCqFqn00XWcXAdbaOBPRFSCZrAzrPoD3IIkReWM=; b=YBLvFYNvD+jnWehyAbXNkGWGqhqiZ+RroLSC70iYjxMPBZ98H7OKn5wiAt/KOJgym6 fWXVEGI4xDyHM1dPAXMn0HmbEsdax5T9lSUbau9M98kMSJ/m4NFlsjFOJZ66C78SHXUV tI3UGt38vrO3lplGAxLnVu5Cq9O64X/eiG03nsXe7vD0LRe8p4iGtmlwx6m6HTqeAj7A Hp4INjIbC67HN7kpAvX8KhYbHZFcMUE47Jv3WB+Wx13jT7vw5LEBGc3ea/3ZBB7dOhnA LR1hFvTJQtrb58DvYdZha0rN868RB22Afj61bTDb2rfgIHl6pktGYjiB2IpCreFIDzFt Te9Q== X-Gm-Message-State: AOJu0YxuYWtF3C7fIy6ogCxrrfftku3T88O3PBr0/IxH7MmaYQE6cANO CKAxtt2rU+kfFfqtdZNa6HquBdCE15UxXoUszaKuPq6g7/a6cdvcXm8Zez2eqipIA9JUhYs0z0Y 69uo74Os= X-Gm-Gg: Acq92OG08VjiHqBtwzUViBbQpWG4hpuIFL8fNZtGsglJ/Eu84FzfpeNFjvvEpJrLwGB agH0zA5Tp31e0b2jseeZa2khvoZVLOsnrji/RHzibKYQO4Uwa3TU7SXlUr8xOuEMRC7ZhjXUIvi rLUn75jH7srSsw7txAZPOVV4kjke262+1hrRZjfzcMNEP1ZsOXdkw9MjZO5AToen0Of8WvdNzmE W3EGrkSvbQMwyzR7p9vp9G+POtNk3jWAt1Jo7G1hAHPYSfPITsd3dDxssaDiDLQg+JU3H9zl2VK yQLFk+1QjEgyq/bFI5zM4XgPnRgZhUdra+jneOShW/4k8D3eqB/iNI/ZvG1bsNs0gwGuz8BqX3G UuGEXZWiwju8l7IuFv+q4pJbMFVzUNITP+nUOiMNhS4rhTIPQixxdgpFn++l/1AUQUJ7KliTjOd JNTAiOMYaWjY0p/aCMPbQnxlEcx1p/1fVrTb048hryTusGbiNh35leGXoKff1LLtdFaXAeKmoFw uNA4w== X-Received: by 2002:a05:600c:34c4:b0:48a:89d9:a419 with SMTP id 5b1f17b1804b1-48fe60ecdafmr379757965e9.11.1779272459520; Wed, 20 May 2026 03:20:59 -0700 (PDT) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Cc: Aleksandar Rikalo , James Hilliard , Richard Henderson , Jiaxun Yang , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Aurelien Jarno Subject: [PATCH v11 23/24] target/mips: add Octeon QMAC instructions Date: Wed, 20 May 2026 12:18:04 +0200 Message-ID: <20260520101807.9971-24-philmd@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260520101807.9971-1-philmd@linaro.org> References: <20260520101807.9971-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::433; envelope-from=philmd@linaro.org; helo=mail-wr1-x433.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: 1779276632087154100 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 [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 04e51538f93..684236b1a87 100644 --- a/target/mips/tcg/octeon_translate.c +++ b/target/mips/tcg/octeon_translate.c @@ -356,3 +356,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 18:34:27 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=1779276821; cv=none; d=zohomail.com; s=zohoarc; b=eINoBBx6kySovYEPgeUfLhqSTEmoBN/Gh6db85hYDlYjmuOvL1kTyAedcI7qRDlqqT3Z1O/C7pm/cI80Qr9yWDscn/+7k3lngRDaydNHgbUPfaL/Pi9VCDP9sD2W50onZljvC4tgupgrSzCL+umspqjn0qcd3uqxKnclA2UVHmU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1779276821; 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=l3tB4I2+pMdnmR9l2bJ++U+op0Fphm1lK4xLfeLa6Zo=; b=By8EA57XVj9wZ+puFZojsyiFtLd8jNg3lO+tNbjKs8FMF+KY64fkibkoxQZ9Zb/Uby9eMEOp8WvrhpRcB13ngG0QZPf1bKRvVXinGy1IKdx4UJtFhsfRufhB60tJz2JurUT6XChcnpXqsi+HVA+EjE2+KmBU7C5xpwL9iKzqpck= 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 1779276821217177.32365122078443; Wed, 20 May 2026 04:33:41 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wPfB9-0000jh-IZ; Wed, 20 May 2026 07:33: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 1wPfAe-0000aL-KG for qemu-devel@nongnu.org; Wed, 20 May 2026 07:33:05 -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 1wPfAc-0005V9-Ls for qemu-devel@nongnu.org; Wed, 20 May 2026 07:33:04 -0400 Received: by mail-wm1-x32c.google.com with SMTP id 5b1f17b1804b1-488af96f6b2so51312775e9.0 for ; Wed, 20 May 2026 04:33:02 -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-48fe57943b2sm397586955e9.8.2026.05.20.03.21.05 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Wed, 20 May 2026 03:21:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1779276781; x=1779881581; 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=l3tB4I2+pMdnmR9l2bJ++U+op0Fphm1lK4xLfeLa6Zo=; b=pPl4hdnxcjfguEDIz5gHYVC+dtRX6T5R0Ha4VIw+BHYFqeAP4eBqLbq4s9Iw8n+WfC 6kjUdyh2YB8B/NKzTTc6bQiMmsB4kE0dtGxcEDBTq1il7uUXZF+55q1CMmemEDtb2q0T sZrWjjBYFVgTha42dvqyNrHj/CD1o57rHtEKV96lNZBNYdu9rcFyq8LHhfzL6tIEbelZ 7EkEo6xPl9teYozPbfC/RKBUKN2fCGYgF2RvX0FfW02R3u1Y8ffZeMzqIe/W1tq3x0FL mMEe1ibnY4t3ByI4/4W3l+z0CwE2/gv77wRXXQk0UJkZl7Grv6XyAMrgbKJ5anINCKlR W2xg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1779276781; x=1779881581; 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=l3tB4I2+pMdnmR9l2bJ++U+op0Fphm1lK4xLfeLa6Zo=; b=r3n+WSrC/Cf2hxuzp1HdTghej4INMwqO4svNZW9KmJjvwN2bBcC2OrAdP1MOb10+Rj 9oca9alOVLdW+fm6r2hZodH6Q1agNI9710nhJQu/5oWcIQUEg5P92+X6E+o8WCHocs83 Ub+iz9JVlD8tc3zlDZbhGLtSXBFpw+ulrfu2fFiIgJYrNSxI7M6tRGix5GXej7abCZbS tTlf2pTrkxsRxaSH/e1M2tHfwnBRnGuXH37N964J+nYaJHw+wOIAJ95ARksVJBIy0dU0 7Xue4D6znCzTNBJ8rwLehfg+gQQoYSkxQZ0fOvu2tEI1WT7eMc7f1WmnXFFVetgnp49c 6A4A== X-Gm-Message-State: AOJu0YxsQmfcRov1//7trmlp7DXZFVK87d7/J2PV9DmvgETNTIi7kqaH 2dSiVzuYQmf3KPD6r1xX+kJKY+idb5hAiWnSzHQWN0qm5YiipPoMkuw1snrBfmzwxlCYEXuchhT 8cKvFQuw= X-Gm-Gg: Acq92OEw2dfiKnAP4KNFkkbyJ3VzgV2ITm9j8QecgxPCP1mmKsMfdElXcQml0aIBrHI qPMa65qsnkkcl6oLSODFkWGFUVU/igeUyVC3NhHbThi1Ir+dNE/sngnXNnXNhq4G94Oa21nySVC K9hpNI+INgahwNHzFEFo7V3RbafLewVUtb1dpjP4+u4PgC9Xcc6WFGjblXzrFp03YBgkwU+OXpX Nfz5BhOId9NlfWD9k5anQcd1DyDy0b0y3tpMnpXxzyZxqqorI8xZgEko6Pfq9bkkC6AsDYOOCyI 7sZcYH189Gnc75tT7SRYptal8gqMYPRZcGrjA6/dpbwfCMOLg/f4rKk5nys1TEj988+3HiQwz47 sRaQoZhLKm1ldmvPSAHqmk0fe01Ay6EQVyRMTRMDyP+c3FTE0FMTn35HwMNPh5tvW+s4vsqyCax iM3gasu6cM2GjJCGqXCIpI6w8fHwOuiOm+9IgbsReXGJY58ZeWjGjQ2hO4A+ObW/b6ziQJzbuMN p688A== X-Received: by 2002:a05:600c:1f89:b0:48e:526e:101a with SMTP id 5b1f17b1804b1-48fe60e7a13mr344800065e9.12.1779272466747; Wed, 20 May 2026 03:21:06 -0700 (PDT) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Cc: Aleksandar Rikalo , James Hilliard , Richard Henderson , Jiaxun Yang , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Aurelien Jarno Subject: [PATCH v11 24/24] target/mips: add Octeon LA* atomic instructions Date: Wed, 20 May 2026 12:18:05 +0200 Message-ID: <20260520101807.9971-25-philmd@linaro.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260520101807.9971-1-philmd@linaro.org> References: <20260520101807.9971-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: 1779276823944154100 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 | 75 ++++++++++++++++++++++++++++++ 2 files changed, 92 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 684236b1a87..eff46c30a09 100644 --- a/target/mips/tcg/octeon_translate.c +++ b/target/mips/tcg/octeon_translate.c @@ -177,6 +177,68 @@ 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 +static bool trans_la_fetch_add(DisasContext *ctx, int base, int add_reg, + int rd, int64_t imm, 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, base, 0); + + if (add_reg >=3D 0) { + gen_load_gpr(value, add_reg); + } else { + tcg_gen_movi_i64(value, imm); + } + + tcg_gen_atomic_fetch_add_i64(old, addr, value, ctx->mem_idx, amo); + gen_store_gpr(old, rd); + return true; +} + +static bool trans_la_xchg(DisasContext *ctx, int base, int add_reg, int rd, + int64_t imm, 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, base, 0); + + if (add_reg >=3D 0) { + gen_load_gpr(value, add_reg); + } else { + tcg_gen_movi_i64(value, imm); + } + + tcg_gen_atomic_xchg_i64(old, addr, value, ctx->mem_idx, amo); + gen_store_gpr(old, rd); + return true; +} + +static bool do_la_imm_add(DisasContext *ctx, arg_la *a, int64_t imm, MemOp= mop) +{ + return trans_la_fetch_add(ctx, a->base, -1, a->rd, imm, mop); +} + +static bool do_la_reg_add(DisasContext *ctx, arg_laa *a, MemOp mop) +{ + return trans_la_fetch_add(ctx, a->base, a->add, a->rd, 0, mop); +} + +static bool do_la_imm_xchg(DisasContext *ctx, arg_la *a, int64_t imm, MemO= p mop) +{ + return trans_la_xchg(ctx, a->base, -1, a->rd, imm, mop); +} + +static bool do_la_reg_xchg(DisasContext *ctx, arg_laa *a, MemOp mop) +{ + return trans_la_xchg(ctx, a->base, a->add, a->rd, 0, mop); +} + static bool trans_ZCB(DisasContext *ctx, arg_ZCB *a) { TCGv_i64 addr =3D tcg_temp_new_i64(); @@ -418,3 +480,16 @@ static bool trans_QMACS(DisasContext *ctx, arg_QMACS *= a) tcg_gen_or_i64(cpu_HI[0], cpu_HI[0], t0); return true; } + +TRANS(LAI, do_la_imm_add, 1, MO_SL); +TRANS(LAID, do_la_imm_add, 1, MO_UQ); +TRANS(LAD, do_la_imm_add, -1, MO_SL); +TRANS(LADD, do_la_imm_add, -1, MO_UQ); +TRANS(LAA, do_la_reg_add, MO_SL); +TRANS(LAAD, do_la_reg_add, MO_UQ); +TRANS(LAS, do_la_imm_xchg, -1, MO_SL); +TRANS(LASD, do_la_imm_xchg, -1, MO_UQ); +TRANS(LAC, do_la_imm_xchg, 0, MO_SL); +TRANS(LACD, do_la_imm_xchg, 0, MO_UQ); +TRANS(LAW, do_la_reg_xchg, MO_SL); +TRANS(LAWD, do_la_reg_xchg, MO_UQ); --=20 2.53.0