From nobody Sat May 30 18:37:42 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=1779066552; cv=none; d=zohomail.com; s=zohoarc; b=mM2LXLj2HKpbaHqE5sUuzgKFJXJ2XI9AAuMGTFLz/PKxuOUusASI8jVOJtyG4JOdpoI1W62cGKlZK6Gcc9Y/kdbFtx1Daggs2kwkYU+hxqmXjVeX6fMMChxSO2gOLkpHX58rhXgynu4UGQoIgB+QW3eVCIzuXO1cd4TSa8wunik= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1779066552; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=b430CcpX8MVCE3nQt/YR8L55hacUxAsUsIp3PqI1PLg=; b=AQrkvZo1e7cT/OqlpLNK9PKaVddrH5UcUuVFniDgfw3hRbUEBr7GtMJ/NhKJYxIkclwqD7Nv1ZUGJS+LHP1SMYrShe7jDP3Re5wOwJhGWPSQbcjYkoJWrRJ2G/YUYeJfaQ4E9cpHd/Ixxu01c/Ey3IC8aqHQWRAA8gxkXAQdJog= 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 1779066552572704.721140245382; Sun, 17 May 2026 18:09:12 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wOmSh-0003jq-9L; Sun, 17 May 2026 21:08:03 -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 1wOmSJ-0003VO-54 for qemu-devel@nongnu.org; Sun, 17 May 2026 21:07:39 -0400 Received: from mail-pj1-x1030.google.com ([2607:f8b0:4864:20::1030]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wOmSH-0007Ki-Kt for qemu-devel@nongnu.org; Sun, 17 May 2026 21:07:38 -0400 Received: by mail-pj1-x1030.google.com with SMTP id 98e67ed59e1d1-36643b96b99so1600954a91.0 for ; Sun, 17 May 2026 18:07:37 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-36951584654sm9160939a91.7.2026.05.17.18.07.35 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 17 May 2026 18:07:35 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1779066456; x=1779671256; 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=b430CcpX8MVCE3nQt/YR8L55hacUxAsUsIp3PqI1PLg=; b=Ysg1VOpZX6rcnbg7k2GTGMCJsvhwvPJ9P2HTaQ32nFL1UiHntQEu8ytXZUFiutM91g GVXYNBQ5b/o2XFIR8c5wqgyvkPsrWDkXvBY40YbJo3Q4hAR86+XZfCRAS6RUxW3slgHP zCw7T/4WQXeS+GS8gARhVLJnGPe8vQE10batNSidiI5JmPLgP9HPD7XUabH9UCRLvFAX c9sCoMBaUzgP4OQzX2a8SOb8rZWQSrSFBZ2MA/IIr+zDpsLMtDB+YEmkuWu9wgS1gjXB LXEXkuudZQpHr6XvCpZgmzWr8IZHUj9keiWF/vmL3QjFOat+6koM6AxlGar//KLm9oV9 KQ4g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1779066456; x=1779671256; 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=b430CcpX8MVCE3nQt/YR8L55hacUxAsUsIp3PqI1PLg=; b=hIsXJ7CCbAVdjQzOdjOpG8+btdOrfM+YC77eQeAnJ1zX05QhWnIo1OtaTReXh5iKxW W/u7CaqN284WVPUru8v5o8PdcSntBGwQhiIzWVZtSTATH/jwvbxu6YPmPsx1NlVA1AAw fFF1pcMY+RXgbirJPg4kRfpcjlDOSNUCO9UStGgAeUhXfmJiMdRpxw02+JrO93BUHSu3 O01IuZZXXzEmUoQWBvFKTv8nRYNJwOCK/NPZrIAwLlMLeKKMp7vC6HL2KpE7pLI1fiC1 tJNd95OCCow+4pyeXDBCXgVVHezCPKwX9848P9qpSgDD3f2cWhimbCUPcLtsd3bP5OhN 58Qg== X-Gm-Message-State: AOJu0Yz0JMAHVZ1Ti1rVQlBEG847VmcAOM9+xr8/m25fwF7r5PsKeiSH c9Owf0ogJtpp85gjJsdntr1om830pd8CkJBZ5S/5qgh1f3IvUQs40ykA4STBRnRK8EUSZf5jM8P zw84e X-Gm-Gg: Acq92OGR0dUI7JpH7e2byIMCjngiNwN7RhIAgO9Yw92y6YQwGMiz3mofnJ0JOsHVwvS BQWmaq8Gjn5w2c+4ndJWQuJpuZM0/L5dr+O2HL8RhDXrswshPv+ucRl5Xi9Kg7a62qer7hHPbkj 8V0afZ2RU123eDQEzFD/z1/3P84KuJROih2bxaM2hjbI1gC/sSrMXz/zmm+qxbvbGM8BsW/S2FB VhPmun7JFQlS6mIc7glohb2uJYP6gB18oaH9MkuG70AWPS0o2AdUHwS7uw+6zsjQdpRNbBgLV44 ySTO63xHBmFdUul31t4whvZD6uWb2qCQf+YC3hYzp0NyhCpGi17HnbKulQVUPfZwnJpvgBarvY3 jW+6Ba8zXBqlsw0LDl/FQqicAS+fr5rxjbjl/3OJYNwAJUZS45vIipjHLt6E/nKAXqbe61FzANQ 8SzvxBzQQ6a8pED7aOg9qbXklrWnkXX+MzdPFMr/TtjuMK6WnteA== X-Received: by 2002:a17:90b:5706:b0:369:a9e8:dbf6 with SMTP id 98e67ed59e1d1-369a9e8dc5cmr3875902a91.12.1779066456089; Sun, 17 May 2026 18:07:36 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: james.hilliard1@gmail.com, philmd@linaro.org Subject: [PATCH v7.5 1/9] tcg: Introduce tcg_gen_addN_i64 Date: Sun, 17 May 2026 18:07:25 -0700 Message-ID: <20260518010733.502237-2-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260518010733.502237-1-richard.henderson@linaro.org> References: <20260518010733.502237-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::1030; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x1030.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: 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: 1779066553064158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- 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 e02f209c09..ee0ad5f6a3 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 d8ae57d604..3dcf5fc125 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.43.0 From nobody Sat May 30 18:37:42 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=1779066537; cv=none; d=zohomail.com; s=zohoarc; b=F6MmIQHnxkRKU7przhUz1vHFtFlSSX81QqJ/dZA533EdaI27tM+0uiGdnjqRtHoB2PNGeSne6GhTi/NQW05WQBcWOLPsjS9FxeohFqNgBH1xcZi0XlogjOSo73lbBOxwH/eWL03XWzwbOMIFTdZl+NUh5E/t6WmuQV4Av+1m2Bc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1779066537; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=pLMsaRRd+pis62E/1xgM+yw8GBK94iWcjzAmfGhBkrw=; b=i0EHsHd9hBOmPARisME6dZlZvbOnat/JMP4yiG0E4xyMagTBpy2l2b9exvVyNB2TxmQs9C0sx8X22I3Cfsw4e7WLD91VV9nCULfXhjnaTGFTmXXS9lk9Z5LNjqPIEMbHsoHAABFsL3Yyk+KarAV3oDqf3j2iZ2sG07DGhzwe2EY= 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 1779066536997603.9262636740683; Sun, 17 May 2026 18:08:56 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wOmSi-0003lf-64; Sun, 17 May 2026 21:08: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 1wOmSN-0003Wr-DT for qemu-devel@nongnu.org; Sun, 17 May 2026 21:07:50 -0400 Received: from mail-pj1-x102c.google.com ([2607:f8b0:4864:20::102c]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wOmSI-0007Ko-5y for qemu-devel@nongnu.org; Sun, 17 May 2026 21:07:40 -0400 Received: by mail-pj1-x102c.google.com with SMTP id 98e67ed59e1d1-3695bf7d082so1571285a91.0 for ; Sun, 17 May 2026 18:07:37 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-36951584654sm9160939a91.7.2026.05.17.18.07.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 17 May 2026 18:07:36 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1779066457; x=1779671257; 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=pLMsaRRd+pis62E/1xgM+yw8GBK94iWcjzAmfGhBkrw=; b=MGWjjG79CTJDv2zH/W7Eq4qKPWE/cGJeDpKE3K2+D6j4h/CBB1MF7yffNv9I/sRvWE xBTz9zVLaXYgHc1tp25lEOg2df05J+7mjDzfh/PmQP/SC/7blwFW3cwI1zufMJEfTnRD 2bZF5jx+NPe3RzIrIZY1ZPJZ2VFnSkiESPCq5hAaKpG4BbNHIJDs15Nv1lXyFlES7PGI vR6d4hnvq7fDJyV13gb5MIAea6+RmHLopXWrDGZERPBkuZtUwmWJGxwryaEe6wkhc9Rs vBrBdMj1/nMDWx6wN502SS1lNFTPP9JpQV4kqmOeGIiwdAZ5tUECc9Rg3pLqTQxH2rL9 1b1w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1779066457; x=1779671257; 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=pLMsaRRd+pis62E/1xgM+yw8GBK94iWcjzAmfGhBkrw=; b=VnhjCfN0wLiFQKCZ48FEBVLfDO0o0cq669MgnXQTJuNrhrW5Gk2RSGMKSRRbCUMI06 3xXlrPrGTIMiLxq2s1ytEdo0EUruw9y6aYUaO1cLEgZlKxAoRIzcs2/Rsc61vZmCZ0qu qEoj84JyDiKZheoOA2CRao4zcjumSkN/X80Wab08hnbyAioyTzhgiMhLlHZM6lnr35Dl 44C6u4CIU6fAN++DPjIrfie4B4v4+A4/uu3MMD96IBaNLis7RwmY2xGXmvN83uQDOWkl jne+0EiN9kVCdAGirHyO2DfeoAWdQZQoTaodz9Nmq5GK+azWgORBUn/GQxo+CFaX0yrK WUqw== X-Gm-Message-State: AOJu0Ywu7OP71zqNspZb2LEcM4SUC1ebgywKeHRTYE4I9q/EQQxLOAyY RdeoA+t8o5j5rrQ77gfdqmXcshDVn0NTstMey1YzIVLqXjkbRKRnxB6ZqYVbQ7Sd3zcuf+M224b PKlZW X-Gm-Gg: Acq92OG+lL+IkJFR8jZUaI1CtXTqDYMQvKkZzh6Tz/aHM1XhOOQQmVifyuoFw1b2zWF +KkeiazbLmZvUGG3bj0vcyMciobFP+wDQYZfgVbgCr9IcOUY+uTVJo43X9ACW3YGaG/Iouc7FWQ k6KFQQpnMG+QkR7qniLjhAUF7nnIoJ7qgu03q/IGC46jzx+ZttUaygpSzILLsaQrnDX9zkp9dfi sfa0KERgASs8KHCj/mZN7p9mbR4uXzgUe+RH/zL+sy20ZiEACI6YPaL3sOf4Sa7YCLPGJqTHhDO wPln1UuqfC2N8+5auRWi6p6qhm/3nPRERjom73yHs2ArtrHYgxifWdFYdxbhxP8joq/j7Xkx+7H h5QyCGmvx+cbbGdyMUESWogNwz5rFIfzE70dR+GE32xvv+7vmYl5YdKN8XA0Epm828BoPQGytnF kIKte6wZDnS7ZM8xz6tojNaD05fWDdtjvMXlD6v0A= X-Received: by 2002:a17:90b:264e:b0:369:a359:b18e with SMTP id 98e67ed59e1d1-369a35a164bmr3610418a91.9.1779066456760; Sun, 17 May 2026 18:07:36 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: james.hilliard1@gmail.com, philmd@linaro.org Subject: [PATCH v7.5 2/9] tcg: Optimize INDEX_op_mul[us]2 for 0 and 1 Date: Sun, 17 May 2026 18:07:26 -0700 Message-ID: <20260518010733.502237-3-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260518010733.502237-1-richard.henderson@linaro.org> References: <20260518010733.502237-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::102c; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x102c.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: 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: 1779066539071154100 Content-Type: text/plain; charset="utf-8" Zero operand produces zero product. One operand produces copy and {zero,sign} extension of the other operand. Signed-off-by: Richard Henderson --- tcg/optimize.c | 90 +++++++++++++++++++++++++++++++++----------------- 1 file changed, 59 insertions(+), 31 deletions(-) diff --git a/tcg/optimize.c b/tcg/optimize.c index b1abec69a5..a42ab16fb4 100644 --- a/tcg/optimize.c +++ b/tcg/optimize.c @@ -2173,45 +2173,73 @@ static bool fold_multiply2(OptContext *ctx, TCGOp *= op) { swap_commutative(op->args[0], &op->args[2], &op->args[3]); =20 - if (arg_is_const(op->args[2]) && arg_is_const(op->args[3])) { - uint64_t a =3D arg_const_val(op->args[2]); + if (arg_is_const(op->args[3])) { uint64_t b =3D arg_const_val(op->args[3]); - uint64_t h, l; - TCGArg rl, rh; + TCGArg rl =3D op->args[0]; + TCGArg rh =3D op->args[1]; TCGOp *op2; =20 - switch (op->opc) { - case INDEX_op_mulu2: - if (ctx->type =3D=3D TCG_TYPE_I32) { - l =3D (uint64_t)(uint32_t)a * (uint32_t)b; - h =3D (int32_t)(l >> 32); - l =3D (int32_t)l; - } else { - mulu64(&l, &h, a, b); + if (arg_is_const(op->args[2])) { + uint64_t a =3D arg_const_val(op->args[2]); + uint64_t h, l; + + switch (op->opc) { + case INDEX_op_mulu2: + if (ctx->type =3D=3D TCG_TYPE_I32) { + l =3D (uint64_t)(uint32_t)a * (uint32_t)b; + h =3D (int32_t)(l >> 32); + l =3D (int32_t)l; + } else { + mulu64(&l, &h, a, b); + } + break; + case INDEX_op_muls2: + if (ctx->type =3D=3D TCG_TYPE_I32) { + l =3D (int64_t)(int32_t)a * (int32_t)b; + h =3D l >> 32; + l =3D (int32_t)l; + } else { + muls64(&l, &h, a, b); + } + break; + default: + g_assert_not_reached(); } - break; - case INDEX_op_muls2: - if (ctx->type =3D=3D TCG_TYPE_I32) { - l =3D (int64_t)(int32_t)a * (int32_t)b; - h =3D l >> 32; - l =3D (int32_t)l; - } else { - muls64(&l, &h, a, b); - } - break; - default: - g_assert_not_reached(); + + /* The proper opcode is supplied by tcg_opt_gen_mov. */ + op2 =3D opt_insert_before(ctx, op, 0, 2); + tcg_opt_gen_movi(ctx, op2, rl, l); + tcg_opt_gen_movi(ctx, op, rh, h); + return true; } =20 - rl =3D op->args[0]; - rh =3D op->args[1]; + if (b =3D=3D 0) { + op2 =3D opt_insert_before(ctx, op, 0, 2); + tcg_opt_gen_movi(ctx, op2, rl, 0); + tcg_opt_gen_movi(ctx, op, rh, 0); + return true; + } + if (b =3D=3D 1) { + op2 =3D opt_insert_before(ctx, op, 0, 2); + tcg_opt_gen_mov(ctx, op2, rl, op->args[2]); =20 - /* The proper opcode is supplied by tcg_opt_gen_mov. */ - op2 =3D opt_insert_before(ctx, op, 0, 2); + switch (op->opc) { + case INDEX_op_mulu2: + tcg_opt_gen_movi(ctx, op, rh, 0); + break; + case INDEX_op_muls2: + op->opc =3D INDEX_op_sar; + op->args[0] =3D rh; + op->args[1] =3D rl; + op->args[2] =3D + arg_new_constant(ctx, tcg_type_size(ctx->type) * 8 - 1= ); + break; + default: + g_assert_not_reached(); + } =20 - tcg_opt_gen_movi(ctx, op, rl, l); - tcg_opt_gen_movi(ctx, op2, rh, h); - return true; + return true; + } } return finish_folding(ctx, op); } --=20 2.43.0 From nobody Sat May 30 18:37:42 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=1779066510; cv=none; d=zohomail.com; s=zohoarc; b=eDjdt1aAX38KaotP49VfcLI162Lg/nTB1gudECho1+qiG1x6ws3EuogJgBXPQmb/p4m38KKMQ6ox6m7OA4QqI6YOTaBvcAiusQOUeqiEmIHM4X4Mxvp0M4mGGbEkRDd0tvvEpyaM+PW6mj1vLO4gedh8kmAWkK6qlJV0obsvASQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1779066510; 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=E+J/RqB0l9WD6AketvkKe7bOMdoUOtkp2QzRU8k3nw8=; b=N4jXEY+u7rEUEtiaWeaQ4vERQBbPBasaYlAezxkonQ1koU32gMYg67h8QqQXM81PhGOnBwoabw0fXGNmUVyvxhd/fewNBPTAKpjeGUBJkR5cXy+V4nIReQ/QhJouRwdjpan+G10RWD8mzNN26aVRWznpEl8pdDmfTjL0bioNx4Q= 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 1779066510714570.1406610389428; Sun, 17 May 2026 18:08:30 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wOmSi-0003lq-6T; Sun, 17 May 2026 21:08: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 1wOmSN-0003Wq-C7 for qemu-devel@nongnu.org; Sun, 17 May 2026 21:07:50 -0400 Received: from mail-pj1-x102f.google.com ([2607:f8b0:4864:20::102f]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wOmSJ-0007Kt-46 for qemu-devel@nongnu.org; Sun, 17 May 2026 21:07:40 -0400 Received: by mail-pj1-x102f.google.com with SMTP id 98e67ed59e1d1-366087480d8so1365348a91.3 for ; Sun, 17 May 2026 18:07:38 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-36951584654sm9160939a91.7.2026.05.17.18.07.37 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 17 May 2026 18:07:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1779066458; x=1779671258; 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=E+J/RqB0l9WD6AketvkKe7bOMdoUOtkp2QzRU8k3nw8=; b=HgbD0T9nD3lmVbp4DFGADVoOJtM8mxDfDdvLQ/J2nbov2kFyE9JF93rDgHz1fbWc3S R2YaQwB+/TKEy37YAE7WSQ3gK12OEE/xwcoHzCNzoTfsxa83Y2EKUQTrAFWL/ZRSmjMA VOgAtp9lQtwCd4/qt1iDi6CQB9JmCPhYrsyxrJYCpxQYIaQx+ZlE8BtkBBHW9MiNtI7E 6H6htZZj8Y6W4laVfIjTWrtbBuRu/iTf663S9GEibLEqwIDbpcZ6mK6Vk0Z+LLJJsMw8 ItTjlQVMQGs7hd9OJRFYStFECG+rQPyKHayhoS7tL+WQQHZCrR0Bqi9BJUO4kN7FNd6g 6f2w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1779066458; x=1779671258; 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=E+J/RqB0l9WD6AketvkKe7bOMdoUOtkp2QzRU8k3nw8=; b=HQpD1QKgESCmxbF78jDvoXrFekNd4NMlklNmDx4NxW4Fy1AMoFwGAXBv5XlDbRMrSL 2ruobYdB5N4h/syq/LWmkcLuIhaR4M5PLV+P+kVbb83fkUdWy8ztWOZ/bTrSa4xW4qrD f2j7K8RGrKgsiKNbxTdO2E5SXQCw++ZX++s/CFmuhtXNtBmC2e4qeN2Q/BoDG92sRucF zvP7O53FexhNxoi01yLT+YFe5LrkCMpA+GXbHOwX/mpF0ndfRXkMcLB12lv1r9G4K6xZ a8BmMQrd4nx2FR18cBlv9SoXHBumq8lXrBGIB5xpfZhm0ZUpHUErf5UfGoLGonx/g2M7 zP0g== X-Gm-Message-State: AOJu0Yxjkx1W5Vq3BRfh76HlLITwaYaq8y05rf2fd3WYWAWe5kLKplIn lBE9hxGZ3CgnHG7kAjH1edwf8OS037MjQd4RDpRJmXDwqdxa6WdgUtpLdARYL/st2dRt+e0cntD KxvYp X-Gm-Gg: Acq92OHvEomG5QqFtgxL57eYRh4m+LWrEl5crVFXY99H7tOa3gSyvCmJkOlmq5xTqLU fLQzIptXeP3/y35rCv0shYNqDG4Lu0WoHZGlYQ8SFMv1XTSfKo30kpJl7Euo/LG/iMXlJFx6+/9 UEhOH6Z2ROwcq1SIqc19Yg/oUGSivBPnsOSlRaLDnRKXt4SoBFHAZyO3I0Zmo9nvece7msnj1hq pxgNBmzaTa89OoOL9ImVL+zsAgP46K8OvInvIRxb4bOwcbzMpjEaCHYc1Wqgza+iP5KkCtzTIwk HUjZx/qQpu1rAsa74G5J4Jy3maKIL7ZQYliDZybPV6yvUhJkg4a1wi8EghVggdZuNaZzBKexxNn 3vSs1348KKg+yT/3OYa9+KXhli0+2rZvtV4Gac8cZcvI7NyPXp0NiOy95sFHvKaRmfxsz0kD7Ai WyJUegzmhpzot98K/b98DJWS6a2Ueu X-Received: by 2002:a17:90b:260b:b0:35f:bb33:d728 with SMTP id 98e67ed59e1d1-369519f37damr14710412a91.11.1779066457537; Sun, 17 May 2026 18:07:37 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: james.hilliard1@gmail.com, philmd@linaro.org Subject: [PATCH v7.5 3/9] target/mips: add Octeon multiplier state Date: Sun, 17 May 2026 18:07:27 -0700 Message-ID: <20260518010733.502237-4-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260518010733.502237-1-richard.henderson@linaro.org> References: <20260518010733.502237-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::102f; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x102f.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: 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: 1779066513007158500 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. 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 Message-ID: <20260514-mips-octeon-missing-insns-v2-v7-14-226686be4ce1@gmail= .com> --- 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 cbb9b3e1b1..0bf8f5e7a5 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 89dde1e712..ab2e217367 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 5880b401b0..f988b3695b 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 54ed253a7d..5b5ef0d995 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", @@ -15272,6 +15274,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.43.0 From nobody Sat May 30 18:37:42 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=1779066575; cv=none; d=zohomail.com; s=zohoarc; b=GnmTE9XCrtb5MvziW4GA0PS5XjOsgYApuc31l+UZf9bnWN8qsSjyq0dY+QAgIauW2GgSbxeSOlTpiwDHAJ1R9JbqEf2KxDJ4Zqfz72PQGA/MLYfzDA8qzHrRXeM4WbQX0qIReqEyhgwLc1jLYX9dI9NXatv5xcdtFet4aYtgqaI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1779066575; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=SfttRLEIZQOGp3sxDxlyo/zxtSg+H+d581YfAivT8/0=; b=kj+bIYTDt8E1yDK5s3UJZYtRDToDP53WM4jxPC4PQd1iEU8Qj8fU3ontuXYN3ZdKDY0bYNeH/f0hndvDr2DWK2BcGNPJsztgr/Njn29cDMf/HNYiJF3VOZfKdxTYkly5peu5Unu5ONjPEDAyexMZtLx7XtAbyKVtwBNQFFPb14E= 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 1779066575518954.0722253738716; Sun, 17 May 2026 18:09:35 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wOmSl-0003sJ-QR; Sun, 17 May 2026 21:08:07 -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 1wOmSN-0003Ws-Dp for qemu-devel@nongnu.org; Sun, 17 May 2026 21:07:50 -0400 Received: from mail-pj1-x1029.google.com ([2607:f8b0:4864:20::1029]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wOmSJ-0007L4-S1 for qemu-devel@nongnu.org; Sun, 17 May 2026 21:07:41 -0400 Received: by mail-pj1-x1029.google.com with SMTP id 98e67ed59e1d1-36608b2f2dcso816601a91.2 for ; Sun, 17 May 2026 18:07:39 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-36951584654sm9160939a91.7.2026.05.17.18.07.37 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 17 May 2026 18:07:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1779066458; x=1779671258; 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=SfttRLEIZQOGp3sxDxlyo/zxtSg+H+d581YfAivT8/0=; b=Uw/Vxa2p3IN2UYsDi+W/USJ82n1xcO/J/i8r/pHvrwstjGSVusT2RNBfL/z6s6nZkR KBvNaDu4klinD1Elw//AaoFMefRLzpfIW4LyiCmrZxrRbQnlKV/0VjXwCQ4giWZcPEG7 /vLLvflHqvk9iW7S0k658FUkxa8QPZ8SPahIDgrSGB7cCRn2e9djzb3LtBE9jNzBZXE8 77PEPHpN/ix5yXLfTKTdrK0bSJzIlrRAyyru7sV8njE9HzFbJgAwQtyIOQwJ5HL/nW+N VWxNf96be+5xVmivMh3ctZQRqGUd5rLbbta80E83G8eTDEDhyBrxrPko8mhdwb74Dsl5 AdSg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1779066458; x=1779671258; 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=SfttRLEIZQOGp3sxDxlyo/zxtSg+H+d581YfAivT8/0=; b=HbkGdw+FZdh4w1vq1lpgLpZotondEBV78chj6JekfoWGJyn7m8PzIP3qLCvhGPE59u R+UDQRjISshlxWydCr+OZpov44vfWEPlZXOmjpe6n09SJ2XbcTL3fhJLn2O9xqzxd8TB Us1Tql1CCYx6aR2uoXpehb9ccvB8MUMkjIDWDxPvYUyaRlcUSLzUiWbKD+hfy6A0b3vP ai6sn2/DXS49GMAOn85D8zgU1OyHVP/k9mEhWzl6wlJoS5W6m09R0i71FIQYP8YvlT1L yMtt5Cx9LX1eGAuHJYyRxiq4ob5bNawJI6c02pAbAhSM78eFnNwf9vrOvKby1cLsRn1U 3QeA== X-Gm-Message-State: AOJu0Yw+QaY3YwK1q6alan2YOf9BKL746bnBTWzR9de+dgIgyrjvgOTM sqIZRcbOQZILSyx9lqNgQhkG8GPe4vWclF1b9OC9GJjR3AmudN8f/G85tN7RewxbF5/GD44wg1K qapwC X-Gm-Gg: Acq92OEFMBF5tIveBAAtSCo2TMm57jS/o9eEzNOmmgf5GpXsTGKhcha+pYWElRV8Bf6 FvlprlvXYakipipMzLRB88GtONLOa3jVZeUUPwbSqpBfDKEes7wPlBuuOLEFuF4+/CFVUHWNG/U uvlkRhv4l77yoA9YFuu8LSB/V0R6PubdJBzlfk2YLTXrXOdilO4AchcU/4r/+BPy3wEfGT5aPjq PgI//O1yKL3BagCi47KJa9U3GwmIpdWNrFloZvAfC4QWViQD0j60pfxapBFw4xwSIGlOT25BESO HjvXGY6CSZR4NxYCN9NiB01VB8jF4fm2lhHk5r9bi9wxm5q8dLxLBhoP48MfFqd1r8ekn/hoXFm a7dAkUrSMrEp1Uv+bDf5V9FPTgvbno4WyU9ujSTr4hrBoxEsYa2Yh8TTiK7K1atOY7Z7yju7dHj JWpdvMYjNZsdFTirbd5FlLq+TSzzGuq+LhKG5Z60Q= X-Received: by 2002:a17:90b:2e0b:b0:35f:c46f:2b0 with SMTP id 98e67ed59e1d1-36951a6ce4emr12526677a91.14.1779066458280; Sun, 17 May 2026 18:07:38 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: james.hilliard1@gmail.com, philmd@linaro.org Subject: [PATCH v7.5 4/9] target/mips: add Octeon MTM instructions Date: Sun, 17 May 2026 18:07:28 -0700 Message-ID: <20260518010733.502237-5-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260518010733.502237-1-richard.henderson@linaro.org> References: <20260518010733.502237-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::1029; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x1029.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: 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: 1779066577328158500 Content-Type: text/plain; charset="utf-8" From: James Hilliard Loads the Octeon3 multiplier operand pair from rs/rt into MPL[x] and MPL[x+3], and 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. Signed-off-by: James Hilliard Reviewed-by: Richard Henderson Signed-off-by: Richard Henderson --- target/mips/tcg/octeon_translate.c | 32 ++++++++++++++++++++++++++++++ target/mips/tcg/octeon.decode | 7 +++++++ 2 files changed, 39 insertions(+) diff --git a/target/mips/tcg/octeon_translate.c b/target/mips/tcg/octeon_tr= anslate.c index e1f52d444a..8ebda0ecb3 100644 --- a/target/mips/tcg/octeon_translate.c +++ b/target/mips/tcg/octeon_translate.c @@ -186,3 +186,35 @@ TRANS(LBUX, trans_lx, MO_UB); TRANS(LHX, trans_lx, MO_SW); TRANS(LWX, trans_lx, MO_SL); 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 P1 with P0 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); diff --git a/target/mips/tcg/octeon.decode b/target/mips/tcg/octeon.decode index 102a05860d..bbd48d1dc6 100644 --- a/target/mips/tcg/octeon.decode +++ b/target/mips/tcg/octeon.decode @@ -41,6 +41,13 @@ POP 011100 rs:5 00000 rd:5 00000 10110 dw:1 SEQNE 011100 rs:5 rt:5 rd:5 00000 10101 ne:1 SEQNEI 011100 rs:5 rt:5 imm:s10 10111 ne:1 =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 + &lx base index rd @lx ...... base:5 index:5 rd:5 ...... ..... &lx LWX 011111 ..... ..... ..... 00000 001010 @lx --=20 2.43.0 From nobody Sat May 30 18:37:42 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=1779066489; cv=none; d=zohomail.com; s=zohoarc; b=Ak2zWBAiB3zJOThQer0QEzXNI1uwI3mFeQjssb46m6h9N+0npts/R2Gjsh/Ccg23uNrg+Q9zvXwpQzg9lTqIiAqBPcEbh5dbnadS/FUQEU6njMaKUoI5+tr/Uj7hcMk5zyKjh32j54leOLlUMevOBaArcbOFT2l5mO4dCpQ4Mws= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1779066489; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=TFWysrdqFoMW2IrtQB94n524fpVGqrr2UPrR7ekmZSE=; b=bWcwz6yRaiZ/sskH37viCyfW5RQ1nTRSpSSXvLTW6yVhKYa6DvRDqR+XPrgEr6RBSnHG8Yzq9dQC7xSl8kByJ4BDln5cgkzN+UOhrnv0+ojHQJ2JP50T5EhkB7DbednUPqgRGTK9p065OU2Yte9yF1e4wxlv1vTmFmWm4TaP4Bo= 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 1779066489643179.61534130176244; Sun, 17 May 2026 18:08:09 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wOmSj-0003p3-RU; Sun, 17 May 2026 21:08:05 -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 1wOmSP-0003XG-G9 for qemu-devel@nongnu.org; Sun, 17 May 2026 21:07:52 -0400 Received: from mail-pj1-x1029.google.com ([2607:f8b0:4864:20::1029]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wOmSL-0007LE-DB for qemu-devel@nongnu.org; Sun, 17 May 2026 21:07:44 -0400 Received: by mail-pj1-x1029.google.com with SMTP id 98e67ed59e1d1-36974221f93so591659a91.2 for ; Sun, 17 May 2026 18:07:40 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-36951584654sm9160939a91.7.2026.05.17.18.07.38 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 17 May 2026 18:07:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1779066459; x=1779671259; 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=TFWysrdqFoMW2IrtQB94n524fpVGqrr2UPrR7ekmZSE=; b=xvqENnbTD2CH6sM1m7TSIaJXXy7uhRMwQePvjUhZjAdaWEvE378ucsjQCWx08kgwdl LCjlbKzLUL2rbcqIwq5JWjJj4W6/07Nutj3QTubexZts0lLa05bA9DMOE+gquQR13qYs 0X9Kv8jnUiygDniuEGIBmQ9YGZnT9F1/EddSTnYq35xQq1RVo0xDjlFOdKy+E3ump8ed d/Ju9A/LB7fwI9GxM2gEeG5HFlServL2urZI/p483ZjX3qNRG5peObCSQ/EXd9GCkCuv EYdVuUF+Em00iqYKx50k8FhDAcR4KXhHxQ6v/bah674uGoTSBFW1CD0VM2Hmeqt76hr/ D2PQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1779066459; x=1779671259; 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=TFWysrdqFoMW2IrtQB94n524fpVGqrr2UPrR7ekmZSE=; b=XJLE+e15pL3UYLrY/uD1+RPuERt/nSQFhaVpQ4u78OHKVZxUWAHifjgQyw8UgpphQV Xe/93+Ga6NoQF/qra8xgRgDgM41iT+F+YQjsfFh6biiSZvfWk4AZ3lqme3A0tysADA7w aJtmxP0Vc7ntb3uoNZueRCian5sNUrYKDT6kysXneMKh9126eVBYYU7txr7c0ZNXuke9 LwKmmTNSe3Zd5YfF+gIGt2ncjocglMgUNs/vzncR/GKVwh/DIir9TFBprorcAD4rCBwp wD8qFHtNdcdGiUz5febVKFHgujAZsCy+15y5cBraUT1YSwHFpcRnmxjRNnj0GM9rw6I2 igmw== X-Gm-Message-State: AOJu0Yx1I4KzrgegRvWDoZxNIKxLtvnxbNd1MDKDWtbF6MyvzQ/Dt0Pj lKxhyHikOaMq30oUhoehE4UJtvF9K3gFXLWKZ1ncCzGn3jWwNSXjqKZyleMrblHC7psLA6btf2s 1XszE X-Gm-Gg: Acq92OGxYRqYqsHsrq1E8GoyKAgab32fhFu6N3W0pSyU8+90gsboKWRJC93ii+zklda t5nXUBOMx6/SKWcr9CN/NAYqkggh3VwPgFtm4a4U7M4c/YBuNsxRab8S2C+EZCdi0d1pn7XGUzB 4UlWgs/b3zYIGcsFqI5Df2hSnhLLa5eZquOntD8/BFXCcBCdKIMFSsU84P7smMMyPUDlWaECoDn 1el70cn7dhO7hX1hqK6IRTDkWV35cop9D7mRqY3us8PzbVsYt6Af3/JJxQn7m+0gAM0fLYq4QXe abeEslOhWMf9BZA8b4g3M4MxuQGCZ3risjQ6BxBz8v8BTi3VgCRjRDMGtQPaxenxHbaCl2yIGDA T2/anWLIfJH45RgHnXVv4KpeXG/io4FpqHMzagLcgwVhaYwdzGjcN1RHkZkJA4qdRT5XR5AJbJt 1Lh9LKT2E/axpYBJGykttQ/VOq/H0I X-Received: by 2002:a17:90b:56cb:b0:366:132:fda6 with SMTP id 98e67ed59e1d1-36951a022eemr12629152a91.11.1779066458976; Sun, 17 May 2026 18:07:38 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: james.hilliard1@gmail.com, philmd@linaro.org Subject: [PATCH v7.5 5/9] target/mips: add Octeon MTP instructions Date: Sun, 17 May 2026 18:07:29 -0700 Message-ID: <20260518010733.502237-6-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260518010733.502237-1-richard.henderson@linaro.org> References: <20260518010733.502237-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::1029; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x1029.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: 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: 1779066490815154100 Content-Type: text/plain; charset="utf-8" From: James Hilliard MTP0 loads the low Octeon3 partial-product pair from rs/rt into P[0/3]. MTP1 loads the middle Octeon3 partial-product pair from rs/rt into P[1/4]. MTP2 loads the high Octeon3 partial-product pair from rs/rt into P[2/5]. Legacy single-source encodings have rt encoded as $zero, so the same translator path also preserves the older Octeon behavior. Signed-off-by: James Hilliard Reviewed-by: Richard Henderson Signed-off-by: Richard Henderson --- target/mips/tcg/octeon_translate.c | 23 +++++++++++++++++++++++ target/mips/tcg/octeon.decode | 4 ++++ 2 files changed, 27 insertions(+) diff --git a/target/mips/tcg/octeon_translate.c b/target/mips/tcg/octeon_tr= anslate.c index 8ebda0ecb3..4c286b34b5 100644 --- a/target/mips/tcg/octeon_translate.c +++ b/target/mips/tcg/octeon_translate.c @@ -218,3 +218,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); diff --git a/target/mips/tcg/octeon.decode b/target/mips/tcg/octeon.decode index bbd48d1dc6..eeed736c15 100644 --- a/target/mips/tcg/octeon.decode +++ b/target/mips/tcg/octeon.decode @@ -48,6 +48,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 + &lx base index rd @lx ...... base:5 index:5 rd:5 ...... ..... &lx LWX 011111 ..... ..... ..... 00000 001010 @lx --=20 2.43.0 From nobody Sat May 30 18:37:42 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=1779066535; cv=none; d=zohomail.com; s=zohoarc; b=itLnNWysQtq4pW3zt33niEhX8xIf7yzc0GMIWoW4l/XV5KuDmhDbD+dn0Ps00FyejrxSvvIAYMPzLwCa3HFq1r5rvJyH8NhqkVGqfnppRZh50SnHrrnwNX3bg5hB3llMEeWpjI9kCBgcGjmDK+EnoS3hTa8FitXZWxI0sPZ8Vro= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1779066535; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=up3XaHUoLKweGGBxg03QbOBi0vMWSTfOKYRAQhB0+O4=; b=OE+HYgtWTFHQEkNSEUDk2s09WpQHgqfjPYq5EdLgwZLgMOXCnEYt2PSGqtaxsxzIbIzu5B6TszMvgfIyDK1QlzAaeCeQJXhj0EhKEtex6WLJiKf0xhAX3iyyDLVOfIa5YAT3dXctTKr7k2BSvEV4foPM49vjg2/AvK3M68lzvcc= 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 1779066535167219.05512099605664; Sun, 17 May 2026 18:08:55 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wOmSh-0003ke-Jl; Sun, 17 May 2026 21:08:03 -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 1wOmSP-0003XJ-OE for qemu-devel@nongnu.org; Sun, 17 May 2026 21:07:52 -0400 Received: from mail-pj1-x102e.google.com ([2607:f8b0:4864:20::102e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wOmSN-0007LM-4t for qemu-devel@nongnu.org; Sun, 17 May 2026 21:07:45 -0400 Received: by mail-pj1-x102e.google.com with SMTP id 98e67ed59e1d1-366375c4076so486724a91.3 for ; Sun, 17 May 2026 18:07:40 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-36951584654sm9160939a91.7.2026.05.17.18.07.39 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 17 May 2026 18:07:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1779066460; x=1779671260; 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=up3XaHUoLKweGGBxg03QbOBi0vMWSTfOKYRAQhB0+O4=; b=bZzo6zNfvK/bY6SPY9mfIm3Klv255QsxaxPzd2kdq9WdVGBWU4cnd4qHO2sFr6AREd N0wWbKfuQwmyzejpg7SDQBMFhoEzSptSrQhfZs5TfsrAEm1Yxp6/wHd4lrezijDqbf2U FnD2gxRN59U1mZ+carDTFhlFrCCiiXdtRzIzIcANmJ8FIB1bogKxnY2Hmc0kJM1yAl2C F5A94LG+ggVvBeGzMrcJfd2sXMD9kMISa/W+DbLMVpqMp1VbAnpvcA6DoWTn30Ey4wz0 0+7Eg3RfSMZ367q7iOj1jxARE3AAxuwgwbh42gUwDMHTGQkd9nlEHb1O3rgkd7uR3gX9 7x7Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1779066460; x=1779671260; 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=up3XaHUoLKweGGBxg03QbOBi0vMWSTfOKYRAQhB0+O4=; b=GKEduDq9wfLjPPNb9wzfY0cTM3bJtbSxAT1lIt5MXiDTBIQQ/XhEd64IIjFmtw9+Kk yWLTs9ar1JUb1RCP2Zj6l6MisWD8EiUxTXJQuH3AUUwV/rIQs8twYec6ornuAGjyLWO7 kYEi+VwMsZb4lJXMoWiTt4/O7U3/0PQWw/Wo3NkDZ0sPCksV3eDpc3/2md9E01Uu2h9e F1ffShBOy3sSRF4hmd8Gx7cKHjsfImVUBBcNfF9Kho/ESaN+Ad/xLfa2mmljDSJ+H9BM 2AizcG+FDsmf4uFuyiXRKlkI5qkrWWgIXFYtZ1KpCXzafoBTr9esLgS2o09K3HYenNNm dn6A== X-Gm-Message-State: AOJu0YwNiZdprcfaNgeqkFghGIlxHca5aeFVIbuOGEShxRRabshBovmX c+/xiKQ2Jzqes2d5TwkSjuHjstpC0MWsvRsfZ8FHj2g7WPYIma8b0kcfyuE5lpq/z9RT3Ll7B+M TeXIY X-Gm-Gg: Acq92OGPAhatoqw31a4xOva1g65MrbSa8q7ED94kPOR+LzsJcgIPBnpTqmzlJqsi0zL ic9nFu0PMFKFiJ8RAaTzhpwAcLuGJXGpJ7QFfzGOaiB7TW6dwwJGTYI4T114w9q6R8sWI2C3D5M cHHm4TTicjiCm9iJ2ec9AVnvKKh0N8bmWxNMuBOoxPxZWQJuRWqiodejeiTeQf2aTLhnn4qk5Ow 0qFINjScbq/vgX+umljYEvzMQYwEVjTSCFDlQRCo+rIKg80pI9LqPIwruyJdj9zjmUYts1Pmhks OB1N5ufWarUkIIHslh3NVMr0eIoZ8d4kaFJXIeOtx+Bck1kVaNpAWWerBSSUb3zXIesTIY+VYMz xxMjps/7ZmhraTp7uKKucdgDN/0vIXA7hNyLIW/ey22FA7Wh8ceG8AduWvK5WA1P9hC/7PUQnmw Yh2vIS3H84pxyGelTyydDKDjWaLXVi X-Received: by 2002:a17:90b:1c82:b0:35f:b7f5:9cd with SMTP id 98e67ed59e1d1-36951c9fad8mr12330965a91.20.1779066459691; Sun, 17 May 2026 18:07:39 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: james.hilliard1@gmail.com, philmd@linaro.org Subject: [PATCH v7.5 6/9] target/mips: add Octeon VMULU instruction Date: Sun, 17 May 2026 18:07:30 -0700 Message-ID: <20260518010733.502237-7-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260518010733.502237-1-richard.henderson@linaro.org> References: <20260518010733.502237-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::102e; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x102e.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: 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: 1779066537107158501 Content-Type: text/plain; charset="utf-8" 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. Add translator support for the two-limb accumulator operation. Signed-off-by: James Hilliard Message-ID: <20260514-mips-octeon-missing-insns-v2-v7-21-226686be4ce1@gmail= .com> Signed-off-by: Richard Henderson --- target/mips/tcg/octeon_translate.c | 35 ++++++++++++++++++++++++++++++ target/mips/tcg/octeon.decode | 2 ++ 2 files changed, 37 insertions(+) diff --git a/target/mips/tcg/octeon_translate.c b/target/mips/tcg/octeon_tr= anslate.c index 4c286b34b5..3539955d90 100644 --- a/target/mips/tcg/octeon_translate.c +++ b/target/mips/tcg/octeon_translate.c @@ -241,3 +241,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/target/mips/tcg/octeon.decode b/target/mips/tcg/octeon.decode index eeed736c15..600e540539 100644 --- a/target/mips/tcg/octeon.decode +++ b/target/mips/tcg/octeon.decode @@ -52,6 +52,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 + &lx base index rd @lx ...... base:5 index:5 rd:5 ...... ..... &lx LWX 011111 ..... ..... ..... 00000 001010 @lx --=20 2.43.0 From nobody Sat May 30 18:37:42 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=1779066561; cv=none; d=zohomail.com; s=zohoarc; b=Kas2HF4rP3fRprsh2NtHTbyfgELVDYWX0xdorkiHhUGGSXZGCNUEBq3v9Z1m5gISYvLM6MjtVi9nWy3PjMy1pKYAcv96F86jQ+Kjm0hgecpaowM1M+E7mAiTfUEj//kUQze6LkceO+3gjH+A3Z8vryyIpuC8VuOlPKVqptkli4M= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1779066561; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=ct0YZRw+BuP94nay1zFP0iAEFGK798J1s+C+AR0YaT4=; b=Uye9SbTGdIXAFvyNkm6gCOaFy0qUaTGqAmwDhXlCLi7DkbyyMrJlanh+hMcDQjTYplg0upQvusQ7b3cVsLIh7GKg74cMX2PgdQMRAx+Gc583QiztKMd8HbdW1jC3cNP+Z3ToeGI7RvpMdcGpXJnUoVv1VfCDHcGnaml5zNWRELg= 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 1779066561470102.99015556553684; Sun, 17 May 2026 18:09:21 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wOmSl-0003ry-EW; Sun, 17 May 2026 21:08:07 -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 1wOmSP-0003XL-SX for qemu-devel@nongnu.org; Sun, 17 May 2026 21:07:52 -0400 Received: from mail-pj1-x1035.google.com ([2607:f8b0:4864:20::1035]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wOmSN-0007LT-5Q for qemu-devel@nongnu.org; Sun, 17 May 2026 21:07:45 -0400 Received: by mail-pj1-x1035.google.com with SMTP id 98e67ed59e1d1-36643b96b99so1600978a91.0 for ; Sun, 17 May 2026 18:07:41 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-36951584654sm9160939a91.7.2026.05.17.18.07.39 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 17 May 2026 18:07:40 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1779066460; x=1779671260; 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=ct0YZRw+BuP94nay1zFP0iAEFGK798J1s+C+AR0YaT4=; b=rb1VJgkFgW+sg639LZ1hi001nDwfisA216uGUOpBijnDEKP4l4L59xllVD5q77a65x P3Zy6ONWQOkByDHqp+gWm6VQATZqW4bX2qi9u3ekuq0mLfcUFwcxE2C/fUntYFvOYOgN PQRKF5qTzpWatukCDo9NdYoVhmicMdgT9PT34bH+v62marsaUZK0OJB9o9DCBU6uHKrT 2hoDpyxwnsWKVOWc4Zz1E0RSUcthBzBxT/GR2Er1RsSDxA+Ll05rAc/YHQAoczbvcPtv hWo1dFZGhkr2B2cggPq2f2O/44kntbPCgkga16v2CH3KvavOvyPd3rIbAvO3MXVVgVWL HHBQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1779066460; x=1779671260; 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=ct0YZRw+BuP94nay1zFP0iAEFGK798J1s+C+AR0YaT4=; b=LyIwe/cQ2YFPvSeaj0w8PO5drtMS48aiz2YUWBGY3A+T4k+BkrHeJPeRQshgcCXjGK WE/HsWiOc/S7O5MTz5LEK8ir4jH8qAD0rof2RF63vblAmuCX5jQt/mofG3DqscI84n+f Yu1RH62AgPCewXLwk1QjO4L7ChqzOTOKgAzthZZ1U5bKbSDDW9Qur70ks66wcvf7pxXx o+aI+Za7s/Nf2UjQS/vgNDMaRBtKj1RwVVX9w8avz1zBNZLLTlA3k9NrB8pjRwGHzOLY becgWQZyUs6zlTAkdYvS9t4Bp+YK14Cv16E0cqbPv3v9gO2EZ5RTQ1EJG0Ixj6O9aj5H c1Zg== X-Gm-Message-State: AOJu0Yyx9aMYuS1cQhFJJ456Ga6i6HWeUbV1yZ4WSJGJ8tMBo+MKf2Al LdYkop/hCmQtem6+x+9Ylewgpvl9IRDAHleeF+fc8aKFITrQgjHVaemIqSDW2eG6Nsh7GPq1Sd8 3j7H1 X-Gm-Gg: Acq92OFaFFcYcPYZgNYkZo0vna/bio+TRzxYhy0VF97dge9ZI42Uth2uStkWfwrFjxl PXiz/ZnmIMHiT7NbN6A0ss3o3jvYMjb+dbmpXM9jh1nHLWDYESPhrPkcsE2XF475i29IWjCOZc7 y6HhJnferKqmpMUsldZ82ieq1blfpdVkEXkIzUNGNXUZ/yvAa8fDwjGAu7aRyF0o6VZ5xeU0Mb2 qMAPbQZnw/FVNBWuqP/BDjoP6qYcsZLMmlTBev4qrCStCtodghu8pisHSgLOKPZlgoQMiVJQ/T5 ickoSsp8srgd6HkkHiCs3QhHzsFXbL0BSj1QaRfQN3LVwU59BBG7HkT60jOBR41r+P6NNnsFXRN Re0Y+ixx8SRp3i9jO7n87HdfOqpv06KTX8yizfkkEEAgGorCX3hXHR7/prKr1CDp2v6ZA/gAzb/ NcAuRPXK1OH+0+JK+qW1gWZWL9PNym X-Received: by 2002:a17:90b:58cf:b0:364:8f64:49ea with SMTP id 98e67ed59e1d1-36951dc8fe8mr13069616a91.27.1779066460441; Sun, 17 May 2026 18:07:40 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: james.hilliard1@gmail.com, philmd@linaro.org Subject: [PATCH v7.5 7/9] target/mips: add Octeon VMM0 instruction Date: Sun, 17 May 2026 18:07:31 -0700 Message-ID: <20260518010733.502237-8-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260518010733.502237-1-richard.henderson@linaro.org> References: <20260518010733.502237-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::1035; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x1035.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: 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: 1779066563249158500 Content-Type: text/plain; charset="utf-8" From: James Hilliard VMM0 performs the VMULU accumulation, returns the low result, then feeds that result back into the MTM0 multiplier state with a zero high operand. It sets MPL[1] to zero and clears partial products. Signed-off-by: James Hilliard Reviewed-by: Richard Henderson Signed-off-by: Richard Henderson --- target/mips/tcg/octeon_translate.c | 18 ++++++++++++++++++ target/mips/tcg/octeon.decode | 1 + 2 files changed, 19 insertions(+) diff --git a/target/mips/tcg/octeon_translate.c b/target/mips/tcg/octeon_tr= anslate.c index 3539955d90..8a4712a053 100644 --- a/target/mips/tcg/octeon_translate.c +++ b/target/mips/tcg/octeon_translate.c @@ -276,3 +276,21 @@ 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); + for (int i =3D 0; i < OCTEON_MULTIPLIER_REGS; i++) { + tcg_gen_movi_i64(oct_p[i], 0); + } + return true; +} diff --git a/target/mips/tcg/octeon.decode b/target/mips/tcg/octeon.decode index 600e540539..c38201ca01 100644 --- a/target/mips/tcg/octeon.decode +++ b/target/mips/tcg/octeon.decode @@ -53,6 +53,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 &lx base index rd @lx ...... base:5 index:5 rd:5 ...... ..... &lx --=20 2.43.0 From nobody Sat May 30 18:37:42 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=1779066575; cv=none; d=zohomail.com; s=zohoarc; b=gVTHDAskUyd2zpgjwOvgmnhTnMpa1gwFTv8KaG5G2IZlseW3xQlVBX7h7hgCAupRsxMoJPlRyXRwF/5kuPDGvGvc99qBLFtx/xCc9+P+/vVXCbBTFRhUosDqrYIZjnkqH0DBNi9c84YyDk0ErKhiBwawcwZOuGwLVq734JhMLm4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1779066575; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=YKp4b0sjjMXMeudJqwIR0GfjeOidMo4BmhC9oyE0ygU=; b=Q9qajiMsk1XyA54oYN5LO6sAHGJzM/y45EvBhnEOijCNUKR+Bmb19odiT74yMMuDD1U+CVgRZ+i9xpIykiKyk475yNnVspp2XaJ7RKE5EcRApdqq+wkFmh7Ka5AqkpUGhr0Xf3UKso/WCD2j8HzFQ6dYe4fp9SsMXcnrqXMF+Oo= 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 1779066575707698.1891264247572; Sun, 17 May 2026 18:09:35 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wOmSl-0003s5-F1; Sun, 17 May 2026 21:08:07 -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 1wOmSP-0003XK-Rt for qemu-devel@nongnu.org; Sun, 17 May 2026 21:07:52 -0400 Received: from mail-pj1-x102d.google.com ([2607:f8b0:4864:20::102d]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wOmSN-0007La-PP for qemu-devel@nongnu.org; Sun, 17 May 2026 21:07:45 -0400 Received: by mail-pj1-x102d.google.com with SMTP id 98e67ed59e1d1-369742178f8so738831a91.0 for ; Sun, 17 May 2026 18:07:42 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-36951584654sm9160939a91.7.2026.05.17.18.07.40 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 17 May 2026 18:07:40 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1779066461; x=1779671261; 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=YKp4b0sjjMXMeudJqwIR0GfjeOidMo4BmhC9oyE0ygU=; b=oihTFTwF+lFca4we066cFPx4VfMuuvzbCZxGAiVBuDXs7EyTt/inw7g397vpRG4n+V QATYMEaCkgsBh3pjNz5ParJQ/KwKQ2rWHNFSJRz1vK6TV+M94dCo0JVWUxt5k0lzbRKG dqYqRpQDd2arQoAyb0MctgwPJG7yrbOGl38t1cp5kcnIaPBdajJJaOsz1UoqSlFKOp+A vb+XmN4VMTX5zMfpw3TnehNrUFyIZ7fJFL35XUWa45IfS7bkh+Rmbe0XZYDLwvKLb0YO TfkiIXEF7TEmAPabTdemkz73EKX2ghS2XWz6GNNVeKZvTqzgom7/XBF1VmKkMPv+Y1Rk kNsw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1779066461; x=1779671261; 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=YKp4b0sjjMXMeudJqwIR0GfjeOidMo4BmhC9oyE0ygU=; b=JvqGurEnLxlRm2JhQisUgJOkZ38hXCwe+0Q3qb2vuv9JVfNDPPcsMaWpVKupDUVTvf nUVVMxzU3cuuZ/ACw9OoWDOHtM44oH6T1HtDIYR8MRRlyNtgn+1qEWp9rxMov/Td9HK+ 5QrJbKNamcJkEagq+erIX9pNB0UNAK2fAzsCtgos8vBu+FQIxWkgfeiLqfjbRCtJNjct 0PGFTj9x4JaPIgYO/S/D7SFnnFqNTFxEmWs0wCdXDT9FCpGGnoQXixDUyRuSTAx+Ssvy OCOvyeyZKCpV+vOo0ZxYF8jYM7kogukw0IY/y2H4bqF5IJgR7kLm+SwZCsbYAp4fhBT4 Bizw== X-Gm-Message-State: AOJu0YxWq8A3j0x7msTnDsugFWMNJbSC21yCLi/1hgSYM8CGobbVEnyL 1GPkkDKmEBOoBzUaOZ6EwqquvDB5hmNuwwmo1MpKBrrtVYLNLIk36mOkLcqPH/ISUuwpU8UG2U5 sFpHg X-Gm-Gg: Acq92OGFHBKuoUhdHNbHoprK0JLnJYQyJxzhN1+IxAGQRNjNNRoBWA4ggagle8fSJdT ARh089vpYIXpax4+7IaTxrmciCeI6ZUkL+mJaJQ6Mruia825AOWsJigNORLvKyYSJqgkP1AgLMW BdaEY7gVp1rgZseliG5A4euFiN5X9y4rB9L3CYZXcF/bxYYnhyr1OJEHjL0nHEGnZekEluTddeb UaWbTkMuHDLRxj0vaPFyJN3SSVOvJHfdAhShUc4Japy4eBcCWxPHEWEUJbvPbTfRcSBmEnyyoaz oMvYK4aVPjuu+fdnpBhYSAtGHjx0c3wGUlmld9Jl7uwcsRP8HJf0efBkmFy1S2aP+l6z52o5KtR ErHA85O2U23KQYbtpnYrFQpm+bwI52XDfNCjmsPT+kg28q3VqwmLKGB/1WRZWXC64115omkWvng 12P20bYDMlzKlPYDRzn73Ht+UPPk4y X-Received: by 2002:a17:90b:2f08:b0:369:996d:282c with SMTP id 98e67ed59e1d1-369996d2ea1mr4664032a91.9.1779066461225; Sun, 17 May 2026 18:07:41 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: james.hilliard1@gmail.com, philmd@linaro.org Subject: [PATCH v7.5 8/9] target/mips: add Octeon V3MULU instruction Date: Sun, 17 May 2026 18:07:32 -0700 Message-ID: <20260518010733.502237-9-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260518010733.502237-1-richard.henderson@linaro.org> References: <20260518010733.502237-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::102d; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x102d.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: 1779066577259158500 Content-Type: text/plain; charset="utf-8" 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]. Signed-off-by: James Hilliard Reviewed-by: Richard Henderson Signed-off-by: Richard Henderson --- target/mips/tcg/octeon_translate.c | 40 ++++++++++++++++++++++++++++++ target/mips/tcg/octeon.decode | 1 + 2 files changed, 41 insertions(+) diff --git a/target/mips/tcg/octeon_translate.c b/target/mips/tcg/octeon_tr= anslate.c index 8a4712a053..5bcea1de3b 100644 --- a/target/mips/tcg/octeon_translate.c +++ b/target/mips/tcg/octeon_translate.c @@ -294,3 +294,43 @@ static bool trans_VMM0(DisasContext *ctx, arg_VMM0 *a) } 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; +} diff --git a/target/mips/tcg/octeon.decode b/target/mips/tcg/octeon.decode index c38201ca01..15d3c79344 100644 --- a/target/mips/tcg/octeon.decode +++ b/target/mips/tcg/octeon.decode @@ -54,6 +54,7 @@ MTP2 011100 ..... ..... 00000 00000 001011 @r2 =20 VMULU 011100 ..... ..... ..... 00000 001111 @r3 VMM0 011100 ..... ..... ..... 00000 010000 @r3 +V3MULU 011100 ..... ..... ..... 00000 010001 @r3 =20 &lx base index rd @lx ...... base:5 index:5 rd:5 ...... ..... &lx --=20 2.43.0 From nobody Sat May 30 18:37:42 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=1779066551; cv=none; d=zohomail.com; s=zohoarc; b=lkddWmHMLz2lBHv3gCswLDfpGLeO6eUWUlFP9L5AJofFBWbWP4y1smAHt0LmdUkXmHVoY6xxQTbqtINaUcDTmn+LNCD+/KWgLKtCngWJqYaUUBz0r+IEukxGv+twrFd2j7u9F8B6VSn7M9qfKqyJ0ecqiL+l4INpceB9UcV7odM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1779066551; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=cRap4hHLoftxvk5QRReZviSArK14cDpP3WccMVXPqXA=; b=U9pzkn0evact+OHXfyFCuyBIy4OME1blI/YU542VLPn3QkdUMz2v1rv7ZCUeQFeFxmLPBefQRYGT2nhxwcVLqfJmItZBON/gikNzUkZewV8t452noIie6m6JbVAJhqbo+UGm83GVdSk4qKjl0/uFupFxNz/UytvwApHtV27k9LU= 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 1779066551838212.3195415385154; Sun, 17 May 2026 18:09:11 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wOmSi-0003mj-QI; Sun, 17 May 2026 21:08:05 -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 1wOmSP-0003XM-Ui for qemu-devel@nongnu.org; Sun, 17 May 2026 21:07:52 -0400 Received: from mail-pj1-x102f.google.com ([2607:f8b0:4864:20::102f]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wOmSN-0007Le-Pz for qemu-devel@nongnu.org; Sun, 17 May 2026 21:07:45 -0400 Received: by mail-pj1-x102f.google.com with SMTP id 98e67ed59e1d1-3699cdeec05so346194a91.3 for ; Sun, 17 May 2026 18:07:43 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-36951584654sm9160939a91.7.2026.05.17.18.07.41 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 17 May 2026 18:07:41 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1779066462; x=1779671262; 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=cRap4hHLoftxvk5QRReZviSArK14cDpP3WccMVXPqXA=; b=Eb8nq0ME0grx2S14Dxo1fXprCM6mwoOJH8uuHPyfQ84o9FnHRqgpq1+r5cRWSKdaNH /ELvIzPWUoHNO3cPY/w24Ft4kD+AuYrzJ3MBCnfBRJ+4NLSYkjd9/ns7SHP9sRCcpoKo eUgoahkrr1BKAL0nuGZrCH4jPgkvV/1U1gh2ryg6ei/7BrUOh+2WnguXgiNHHYmEZIww p9NQIdoNE/fEGkP7Azd3pl94KmrITVRlTHTBJ3XR7vD+/xxlA5vsQljvUPheya2rJVfs VBj3A4N4vmGyr+P/3SkjXOtZEWjhPTefoXAbwYWuYC7k3YeJ5W69DAIjl/xabGqqhPFL nBTg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1779066462; x=1779671262; 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=cRap4hHLoftxvk5QRReZviSArK14cDpP3WccMVXPqXA=; b=itVxSxjBzZCoWjuFJYcoWh1pDM0gr6PxAIb3kz57RgoGXM3V7Dn9DnWvS3EHUYuVJ9 cGOUHQlv/pCDEe833CadzqePLmMPSMg1J6uzRHQHUHxeAnjGNmTfvd3OL9KjhmnCeJWh jMuXpYTzdjzbltTIxX4BILaYron7q8hl0YdiHD0QaDpUc9Z3UGyG2+H+ysa5f4AOjWxj wxb6dxsBQioNtSonWnaxfICMMOu9+PfGR0bywdVkxIRYJICqQcj35IMgbyTKQvxjgzAQ Zi7WKQ2Addukb7qT2JzuC+nzpnhYEmup+Bhx93jlmIt7KzFI7MbwnbQ44Q7BQ2p/e010 Tdbg== X-Gm-Message-State: AOJu0Yw80J4oKozfe7IGcn8kjBDeGpRzhHVK77WMNaMp1GYOCWxS+qkr GpWWSV8ddOvX4XPdETfTUHazSloSqs1WB1iF5AJHsLQduybA7dzuXK47rV6dh5lVHFfe+B/a908 lRb0k X-Gm-Gg: Acq92OGkR9LK9VvaSRTVHvZSwQlWZ0MJ6WwygHjiRjZ9uN+ZsCpZ1Lk65fJi6doreza iQngdxeev/Tt9jZDCLO2UuOcM5lwYWTvtUg2zHhDUA+leNEebiFB4qpEiDjCzY4WtpgI/GXy0sJ O4ocfXPJBL0HLY8YCGKxA7twVWSJbAEMm1JFa64SkXWEFvrVQTPsPY1HqpUT2BCL6hUKWGV1lpM p6vTQNUIySxZ/UpyGh5XqJqkqNXHjgJrERGM6Rnd9TfNjMmDBPAaPq1zwf/QgILFZdAMkeE5NGf uMTQihA5/zaAXO6GiXrnTQKsh6zBc61+D4fElujtfo+CEx1+m5rZaxGogAau/5oKfM57cWWGn0J 9GFKqAiNP6eO4+OM48V83VGd4Knna0o157aptcKeFoFRsZFoskQ1e2UTwFv6mmJweBa10i0z2x1 /6yKdU1uhTW5dKA6+bfRtjx2e+x8cW X-Received: by 2002:a17:90a:d648:b0:368:95e1:8d45 with SMTP id 98e67ed59e1d1-36951cb7706mr11998080a91.26.1779066462066; Sun, 17 May 2026 18:07:42 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: james.hilliard1@gmail.com, philmd@linaro.org Subject: [PATCH v7.5 9/9] target/mips: add Octeon QMAC instructions Date: Sun, 17 May 2026 18:07:33 -0700 Message-ID: <20260518010733.502237-10-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260518010733.502237-1-richard.henderson@linaro.org> References: <20260518010733.502237-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::102f; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x102f.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: 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: 1779066553260154100 Content-Type: text/plain; charset="utf-8" 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. Signed-off-by: James Hilliard Reviewed-by: Richard Henderson Signed-off-by: Richard Henderson --- target/mips/tcg/octeon_translate.c | 60 ++++++++++++++++++++++++++++++ target/mips/tcg/octeon.decode | 5 +++ 2 files changed, 65 insertions(+) diff --git a/target/mips/tcg/octeon_translate.c b/target/mips/tcg/octeon_tr= anslate.c index 5bcea1de3b..ba11773aa9 100644 --- a/target/mips/tcg/octeon_translate.c +++ b/target/mips/tcg/octeon_translate.c @@ -334,3 +334,63 @@ 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 0x8000000 -> 0x7ffffff */ + 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 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 0x8000000 -> 0x7ffffff + * Accumulate overflow in HI[0]. + */ + tcg_gen_smin_i64(t1, t0, tcg_constant_i64(INT32_MAX)); + 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, tcg_constant_i64(INT32_MAX)); + tcg_gen_smax_i64(cpu_LO[0], cpu_LO[0], tcg_constant_i64(INT32_MIN)); + 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; +} diff --git a/target/mips/tcg/octeon.decode b/target/mips/tcg/octeon.decode index 15d3c79344..acf67857c2 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 ..... ...... %bitfield_p 0:1 6:5 @@ -41,6 +43,9 @@ POP 011100 rs:5 00000 rd:5 00000 10110 dw:1 SEQNE 011100 rs:5 rt:5 rd:5 00000 10101 ne:1 SEQNEI 011100 rs:5 rt:5 imm:s10 10111 ne:1 =20 +QMACS 011100 rs:5 rt:5 00000 000 lane:2 010010 +QMAC 011100 rs:5 rt:5 00000 100 lane:2 010010 + &r2 rs rt @r2 ...... rs:5 rt:5 ..... ..... ...... &r2 =20 --=20 2.43.0