From nobody Sun Jul 26 10:07:33 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=reject dis=none) header.from=oss.qualcomm.com ARC-Seal: i=1; a=rsa-sha256; t=1783448465; cv=none; d=zohomail.com; s=zohoarc; b=fz/edGM+nXvGJUKhS7Yi2u7VEcy/6F1jTf2VySlYQRLuZA7s/5AL2sqc2PduiCl2mmjPVlOi8eY0Cpd0nHrwXXGxjAKMf4cJLlScaAsCjopCkMZwocdlR+L4yFaYqs7bMqvKGZeFtMMleWDoiTE4mrZtjRZpczkn4p6y3ihByyY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783448465; h=Content-Type:Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=KWT8CSu8Vo3TtXOAAOy1RxM5NBgioT01Wt7T3+uVgBM=; b=UbGJZ8km2hx4SpcaRY2N2xnLJy/2PWkC4WPVBLQn7VSGeRF4hyV7n8/57fb6IalPyOXSJnsSRzBXEOjqbMhdv1GVheS5vNllhk7qHA5Ck0iRYDEE8JiJDpjWPVVW+wr4dZc3mtcETBtAAUG0sFnEz2NyBpaPDxb7Wn41Fu7FQwg= 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=reject dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1783448465893354.34353614625206; Tue, 7 Jul 2026 11:21:05 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1whAKq-0004Js-Fg; Tue, 07 Jul 2026 14:15:56 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1whAKc-00049s-NQ for qemu-devel@nongnu.org; Tue, 07 Jul 2026 14:15:44 -0400 Received: from mx0b-0031df01.pphosted.com ([205.220.180.131]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1whAKb-0006Ha-1P for qemu-devel@nongnu.org; Tue, 07 Jul 2026 14:15:42 -0400 Received: from pps.filterd (m0279872.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 667FT7bR4045084 for ; Tue, 7 Jul 2026 18:15:40 GMT Received: from mail-qt1-f199.google.com (mail-qt1-f199.google.com [209.85.160.199]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4f8w2uaru7-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Tue, 07 Jul 2026 18:15:39 +0000 (GMT) Received: by mail-qt1-f199.google.com with SMTP id d75a77b69052e-51c1c7f135bso84896071cf.0 for ; Tue, 07 Jul 2026 11:15:39 -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-493e0faed08sm66734045e9.11.2026.07.07.11.15.37 for (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Tue, 07 Jul 2026 11:15:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= KWT8CSu8Vo3TtXOAAOy1RxM5NBgioT01Wt7T3+uVgBM=; b=dB90+3JITGvKzKIL 5uSZBRSW32T+3xdbNC5oFvJM6ZUO14jnVUcT/mrmA8w0sujOUO7QNzaAn1sgapOB 5bHO5bWsb6jZ4ZlGZ7G5zpiRVaXBoL6LSVCJi2atReHxES6Lnf4NYf1rJ3N1EepG zfP3U44zwhGD0UCl145BoeKxufDovqpnQ7fQ5xLarHJbv0uSqktzG7z3EWCdkJyN w5RbarRLIeSq9wMXeLp7FncFZJufn7EueFzJxtPl+nLfo9RBdnLFh1wRfMiisxbv Nx7T9jW2hKpRV6c8R0xHsMpLRaFlIX9W8Dxv3edtaHQQdD3ojcL+pmRa4PmZXbAr an7vAw== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1783448139; x=1784052939; darn=nongnu.org; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=KWT8CSu8Vo3TtXOAAOy1RxM5NBgioT01Wt7T3+uVgBM=; b=W5rnKQzYpLd2WKh0/oEMMZ3OcxgyKkR0IDmrSntbZI/5RoYBED5DI0YBn0Sm3gFGrO tlp69iTDlgPVTVvlusM6EfsKIzPxVi9JG/gTYRh0GXst4wGm/HDBlXtGLwlRItkhqHMD 7yBzHRQ64iEIURwTqPqYVCUdXoB3gtrGaRPb9bvUP09r3aT5FmojJFvsC+Ifvr6fumz0 OgEZvQs909bkJomliWg9WYTB5MIFKRrSHjRjtDDWfHATwv/6EYESERaXJ9BPN94s/hi5 etWr3K4JWrhco+QS9e1D27D/hl5Jzv6CQd/Febpl9w9oaGAC9HxELCyUWCD/l0pmfuXh JPfA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783448139; x=1784052939; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:to:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=KWT8CSu8Vo3TtXOAAOy1RxM5NBgioT01Wt7T3+uVgBM=; b=rn21FjhRCpE7oZo0ey0czo8qJckdwe3EUpM5RnFaymkRyTa+cqTwwxONHorERmjKT+ 3H7e9yWfumatzL9HTsnN9p4LAvqU1B1X/Q3b1ZGRAgfugwKQQrhHEsUViAzcADg4Y5Z2 jkuERGHi0vmS2Lud3V2AxDv+Zue1bGsLy+MOogwlXkmn0RU02vHn30yk9Di3/qrQsiWp ugMcEDGfLBmc4Md+B15S7OQWK/nxwCvbiai/COM2Avv62enieow33RbgKln9xtw9C62J eun5c/JkO2kndjU+3rnJUdxNSmxwhP8ZZMb6Qk+7B+xYe5G1cB0HWNAbMjyGTa2wv6t7 pR8A== X-Gm-Message-State: AOJu0Yx5S+ZYaj/8/Zo6tmf3EEH8qic0OBay8HAmZfAwxg0AWM6OuK0P 4dLH/MpaEBldte1OW/tVcpQNFqQ1Yyme5HZCCYffS/Fzb5QYM+36LFdj83GtWbXow6YFMZVC3G9 xuissSQ0ndUYSv98CvkGJQ74TV331mBzY1v858DSbT/Iz/j57mPv7VSW3WsaVPTMNOA== X-Gm-Gg: AfdE7ck5hEpTvLO8x5/zakYbaiDWe26i+k5c5yajivrIuRxASqqNg3vbX3UB8V4oA3b BLry2YZwcK+b8k+Fw6a4forVw+qUZ3GgMnXbeidaDm8EekRPYKn1ETQLcq69zmRktD0s2HW8Hug ugXrpzuMLLg9Gssu/QUyJXZNkXJkF4+aIaxW3TK4XOaF8PayZPDbArc1z2i7zjrxjdTRa8J4JSB DKVeQ+qydanCEdOixnlg0dojG0MiuTtiWTfdbdVENdk2L/YhRLRdYhuEC3+a1MPryto59Mpwlzd rUdr4DO4Blt7Q7WTsGNXzBUa62tJ8vdtHjxD4coFP1Xq0bJgg1RXtoj1TG3w0CEOy9SutuJheX6 swWImPPSqGbpjAvK7Baw8FQF2oUoLcBiaWAzHtoHa4faSpGBAbFrOwyqIpDPVRlQcfQ+W X-Received: by 2002:a05:622a:4c:b0:51c:7b12:1211 with SMTP id d75a77b69052e-51c7b1217femr37693171cf.79.1783448139011; Tue, 07 Jul 2026 11:15:39 -0700 (PDT) X-Received: by 2002:a05:622a:4c:b0:51c:7b12:1211 with SMTP id d75a77b69052e-51c7b1217femr37692361cf.79.1783448138297; Tue, 07 Jul 2026 11:15:38 -0700 (PDT) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Subject: [PULL 01/23] target/mips: add Octeon COP2 crypto state Date: Tue, 7 Jul 2026 20:15:06 +0200 Message-ID: <20260707181529.60191-2-philmd@oss.qualcomm.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260707181529.60191-1-philmd@oss.qualcomm.com> References: <20260707181529.60191-1-philmd@oss.qualcomm.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Proofpoint-Spam-Info: AW1haW4tMjYwNzA3MDE3OSBTYWx0ZWRfXxqifxhJfjxwV zQr5E02Z923nOkpTN9XX/B0sHbhm3kIB+zvRUAJTi2qZU3Mo52t8YY31as1W5QG7Ldu8n4y0euI u/xw9MG36YXTAIqzu2mh0LywBKz61Jg= X-Proofpoint-GUID: mZK8wiDwNNuL2tsFLd--ZnfHYBd4wR1j X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzA3MDE3OSBTYWx0ZWRfX/UYdtWJIlj5N yFxscMdKQPfzWzQYL4H9vHoNGEU5122Qcqm3OI4EDsSPKFZsEpW5jwCYtjZP3bYpF9uLU8bxAFL bddHVnL2NBXAkDP7s/jUjJ0kCjYmXAUF/cawcnnvrM18Pxs9PnKrtJSI4guwQ+ZvvGSJR2CWyMP M22TNc5G9TaUIr09pXfCi8xmWAWhzzgyVA7RCOXzzvpibOBFyhxBiO+J29tKiSN01w+0KTUMpm/ wrS0hVNqK55hyobC1wEV3sWRlSAVtt8JP0pkWTB29PLPNrR8zS84v50aOYtQ3cERxs7GF8Mxp45 mXpm71lBDa8ZSJF7FtocJOMn84S8PHlY+3iWeRHN6tMO8V0bl0qXqV59aeVAfPpmAUZE35rFvBd LTE1qNVD7y8q+2B7kog4ognStG+fF8/tAsp1qe1wDYO1ZaJdORK6jDLlWojH6ZxTMYz28kF5Ydc WxS2dFE7+IEuf6Ej0JQ== X-Proofpoint-ORIG-GUID: mZK8wiDwNNuL2tsFLd--ZnfHYBd4wR1j X-Authority-Analysis: v=2.4 cv=bPQm5v+Z c=1 sm=1 tr=0 ts=6a4d424b cx=c_pps a=WeENfcodrlLV9YRTxbY/uA==:117 a=4s3hRJSeHn4rkQlkrse1kQ==:17 a=IkcTkHD0fZMA:10 a=RAioF0-LDSMA:10 a=M51BFTxLslgA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=yx91gb_oNiZeI1HMLzn7:22 a=pGLkceISAAAA:8 a=KKAkSRfTAAAA:8 a=EUspDBNiAAAA:8 a=0dRJNWE_jSRIec9sPJcA:9 a=3ZKOabzyN94A:10 a=QEXdDO2ut3YA:10 a=kacYvNCVWA4VmyqE58fU:22 a=cvBusfyB2V15izCimMoJ:22 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-07-07_04,2026-07-06_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 phishscore=0 spamscore=0 clxscore=1015 priorityscore=1501 malwarescore=0 bulkscore=0 lowpriorityscore=0 suspectscore=0 adultscore=0 impostorscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607070179 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=205.220.180.131; envelope-from=philmd@oss.qualcomm.com; helo=mx0b-0031df01.pphosted.com X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 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_LOW=-0.7, 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 @qualcomm.com) X-ZM-MESSAGEID: 1783448467600158500 From: James Hilliard Add the common architectural state needed by Octeon's selector-driven COP2 crypto interfaces. This includes storage for the base hash, AES, CRC, GFM, 3DES, KASUMI, and overlapping HSH/SHA512/SHA3/SNOW3G/ZUC selector windows. Keep selector values and helper-local aliasing logic out of the CPU state header so the state definition remains limited to architectural storage. Helper code uses the same register banks instead of adding non-architectural shadow state. Model the SHA3 view as a direct 25-lane alias of the architectural HSH DAT/IV/SHA3_DAT24 storage. Migrate the state in an Octeon-only subsection so non-Octeon CPU models do not grow migration data. Signed-off-by: James Hilliard Reviewed-by: Richard Henderson Message-ID: <20260608-mips-octeon-missing-insns-v2-v16-1-daef7a0d8b04@gmail= .com> Signed-off-by: Philippe Mathieu-Daud=C3=A9 --- target/mips/cpu.h | 26 ++++++++++++++++++++++++++ target/mips/system/machine.c | 27 +++++++++++++++++++++++++++ 2 files changed, 53 insertions(+) diff --git a/target/mips/cpu.h b/target/mips/cpu.h index 392406aff8a..3df71adf9bd 100644 --- a/target/mips/cpu.h +++ b/target/mips/cpu.h @@ -537,6 +537,30 @@ struct TCState { }; =20 struct MIPSITUState; +typedef struct MIPSOcteonCryptoState { + union { + struct { + uint64_t hsh_dat[16]; + uint64_t hsh_iv[8]; + uint64_t sha3_dat24; + }; + uint64_t sha3_dat[25]; + }; + uint64_t des3_key[3]; + uint64_t des3_iv; + uint64_t des3_result; + uint64_t aes_resinp[2]; + uint64_t aes_iv[2]; + uint64_t aes_key[4]; + uint32_t crc_poly; + uint32_t crc_iv; + uint64_t gfm_mul[2]; + uint64_t gfm_resinp[2]; + uint16_t gfm_poly; + uint8_t aes_keylen; + uint8_t crc_len; +} MIPSOcteonCryptoState; + typedef struct CPUArchState { TCState active_tc; CPUMIPSFPUContext active_fpu; @@ -558,6 +582,8 @@ typedef struct CPUArchState { #define MSAIR_ProcID 8 #define MSAIR_Rev 0 =20 + MIPSOcteonCryptoState octeon_crypto; + /* * CP0 Register 0 */ diff --git a/target/mips/system/machine.c b/target/mips/system/machine.c index f988b3695bc..77f576a25b1 100644 --- a/target/mips/system/machine.c +++ b/target/mips/system/machine.c @@ -279,6 +279,32 @@ static const VMStateDescription mips_vmstate_octeon_mu= ltiplier =3D { } }; =20 +static const VMStateDescription mips_vmstate_octeon_crypto =3D { + .name =3D "cpu/octeon_crypto", + .version_id =3D 1, + .minimum_version_id =3D 1, + .needed =3D mips_octeon_needed, + .fields =3D (const VMStateField[]) { + VMSTATE_UINT64_ARRAY(env.octeon_crypto.hsh_dat, MIPSCPU, 16), + VMSTATE_UINT64_ARRAY(env.octeon_crypto.hsh_iv, MIPSCPU, 8), + VMSTATE_UINT64(env.octeon_crypto.sha3_dat24, MIPSCPU), + VMSTATE_UINT64_ARRAY(env.octeon_crypto.des3_key, MIPSCPU, 3), + VMSTATE_UINT64(env.octeon_crypto.des3_iv, MIPSCPU), + VMSTATE_UINT64(env.octeon_crypto.des3_result, MIPSCPU), + VMSTATE_UINT64_ARRAY(env.octeon_crypto.aes_resinp, MIPSCPU, 2), + VMSTATE_UINT64_ARRAY(env.octeon_crypto.aes_iv, MIPSCPU, 2), + VMSTATE_UINT64_ARRAY(env.octeon_crypto.aes_key, MIPSCPU, 4), + VMSTATE_UINT32(env.octeon_crypto.crc_poly, MIPSCPU), + VMSTATE_UINT32(env.octeon_crypto.crc_iv, MIPSCPU), + VMSTATE_UINT64_ARRAY(env.octeon_crypto.gfm_mul, MIPSCPU, 2), + VMSTATE_UINT64_ARRAY(env.octeon_crypto.gfm_resinp, MIPSCPU, 2), + VMSTATE_UINT16(env.octeon_crypto.gfm_poly, MIPSCPU), + VMSTATE_UINT8(env.octeon_crypto.aes_keylen, MIPSCPU), + VMSTATE_UINT8(env.octeon_crypto.crc_len, MIPSCPU), + VMSTATE_END_OF_LIST() + } +}; + const VMStateDescription vmstate_mips_cpu =3D { .name =3D "cpu", .version_id =3D 21, @@ -396,6 +422,7 @@ const VMStateDescription vmstate_mips_cpu =3D { .subsections =3D (const VMStateDescription * const []) { &mips_vmstate_timer, &mips_vmstate_octeon_multiplier, + &mips_vmstate_octeon_crypto, NULL } }; --=20 2.53.0 From nobody Sun Jul 26 10:07:33 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=reject dis=none) header.from=oss.qualcomm.com ARC-Seal: i=1; a=rsa-sha256; t=1783448241; cv=none; d=zohomail.com; s=zohoarc; b=gr0gBqOSq6PGoqx3HxbnoXqjl7hfD1cASRxAGhaX5uzz58Txd/hT1dwY3nZanWavWAWy/r10x68x4REf5kxsTyI6AUrmaP434tOS3vK/TJFdCOmCUCew1FgJN/bn2C9sPSXvUVN3EPvfrgiJda6mv3EQGpTGOoWOb0uD0oXlxG8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783448241; h=Content-Type:Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=cZZNnJO6/aPAjx1V3kaMewkQbgKmd8vt2MG1+tk3BuY=; b=ec64U/w9RpvPW/PosMPmI2ifzepKGvhJEKsUJNvdlm6ByO3Ks5MbXqMUA43OAukP28WGUOY0mOnmoZQnbj01ROcvxEtcGaUYw5oRQSHSs4Fcf0TZvu2TEvBdn61L+n6/mvF2nsm4r9a0Bvoh7gOEOu0oIIPlUs9nxAuMIZRStu8= 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=reject dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1783448241613390.7714473246591; Tue, 7 Jul 2026 11:17:21 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1whAKs-0004Ri-1D; Tue, 07 Jul 2026 14:15:58 -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 1whAKk-0004JM-51 for qemu-devel@nongnu.org; Tue, 07 Jul 2026 14:15:50 -0400 Received: from mx0b-0031df01.pphosted.com ([205.220.180.131]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1whAKi-0006JQ-NF for qemu-devel@nongnu.org; Tue, 07 Jul 2026 14:15:49 -0400 Received: from pps.filterd (m0279869.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 667GuujS230687 for ; Tue, 7 Jul 2026 18:15:46 GMT Received: from mail-qt1-f200.google.com (mail-qt1-f200.google.com [209.85.160.200]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4f95e5rch8-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Tue, 07 Jul 2026 18:15:46 +0000 (GMT) Received: by mail-qt1-f200.google.com with SMTP id d75a77b69052e-51c1ada6c43so66364751cf.3 for ; Tue, 07 Jul 2026 11:15:46 -0700 (PDT) Received: from localhost.localdomain (88-187-86-199.subs.proxad.net. [88.187.86.199]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-493e0f50418sm66769535e9.11.2026.07.07.11.15.44 for (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Tue, 07 Jul 2026 11:15:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= cZZNnJO6/aPAjx1V3kaMewkQbgKmd8vt2MG1+tk3BuY=; b=kG+sMft9dbOUGTuY BoSqZez1HLFlABy7d5RDpnDDIOl1SzUEli/ZAgLvfa78/C0vf+mX1OBujKy769mw 5vLYFuTiQFoys/fM2EsdIavL5RIBWIBI4bcQZjrMpteROO3bGDT0Ic3iFbhnO547 umZTzK4T5wF3UFtqHthPSSNnfjVgdR5RUyQ4u0AvkzWZ/71Ha9G8/+bx86sCCVBv zSqmC+dkVPesWBNj/L5TtOf9A0dbxkeTqe0BZGMR5U685zueN2VkiSv8QhyO6b3a z/QJ7DM+CWJvozyN1b+qSsaN0gpqzKQeG2bm3aZO3SyfKNW4Biyh48hnzRKw1Byd NXW3lg== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1783448146; x=1784052946; darn=nongnu.org; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=cZZNnJO6/aPAjx1V3kaMewkQbgKmd8vt2MG1+tk3BuY=; b=Y1kov+UJ5/eCAtkBRrpD3tCbe0ggRS555ixfZotzp11rD4uZRUhE9XDpxT9sOuoi8A G+dGIRcl7Ew1YOmDttZ3P4cCSxBncZCfmbZ11QUsz8jFjIPPC/2IYROXKzPVlWpx22eQ Eq4MFMMzsG3842VVUqdbkgIPHQyu+G0/7+qpRzaKPSxq4GUk7X3Bqg/bcOPuUafnkS3h l4ZAG2mOzmwZlxoBp5jao2MfG2O3gr/1XuWqEYI4clNH8eL1dhwEfccESKCGeuChlyNq Mp+gBLsId+Qemor7utS0oXauZ+UT8Q+6QDn00J6zvGZDQu2fYJ4VsRuptirUPKR1t0ih W1tA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783448146; x=1784052946; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:to:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=cZZNnJO6/aPAjx1V3kaMewkQbgKmd8vt2MG1+tk3BuY=; b=p+MtPbFCh3uM/T3eA5GGgo6EJ9cm0GwFycjvwd1LlIu42SgJm9mte6TwrPsu7hMptU ZwiDviXDGABb1y+4mY34OFtJZIab5tLLnn8vSE9LtDNCOP0td6+JRlBRjYV1A6j9ubai A+WirDcWjHaGrlosfRIM+7WTSR+CI6fyBUVVnxWS0B6ZAvJ8WOjT7N1QfIMO1YsvGGLh kzovkz2wfhjmjvOK9xo4dQbRnWaiBkNMmc/Q4+q3AwhssMQpVEEqNDmdWl7QLjRO2bYU NU0PglHBitFuC/UZdUVkwkyyUeFnBg2Ryf98h6OckWThnIqYUidgASe65FsO8NEaPjrJ frYg== X-Gm-Message-State: AOJu0YxA8Sj3DnG6wTI+BI+LQ93gnD4thWW801oOAg0/ALrjQscStpw8 iyKsrfa72KwzeClO8CU6Gnz3Yx8WoHDbK3LBKeEL342tfo7eYDS3y0UTayGrIBKMsdD3VnK7mDZ KBskUiJ8W6FS+BFtsytA+IzDxyrfw2+fSyJIDAvvHN+hrd/wM+gDuT2aTSFJ+6XSI/A== X-Gm-Gg: AfdE7ckPw2wflJ+rNc4PRF7FCIMMHX7VIwD/qnbIk+mzU4rstRpRnji1kduJwLxA5io W9OTJzjMAlPh4xIiwHEiJNuOFlNhL6ItARvKzAFJfPVxBDBTn23Ml+VO2YndvdTFtxpE1m7wHOd LbsaUZj5+pDrtTcbHQkHTUmM8wEqYtRDCV4hanRZ/PeKNoHIG21RVH2G7YSlbeYJ3lqgRdBgUdD 6l2+k2dRDU2PtiBB/6rE2AWP0wNeUOJlX22eMgUdFCv35Q4UZM8mnx3FoJINjj92GiWdv8I39g4 C5LJNmFFLKDxUOSwFC4/F784j6LcFZ6joQs0WMaTXaGHfKevMBK75o1vlYbemBIcqCcpfWtROsd X+LqW59TU29nTAc0+bFe1XZ/8YKiSkyLSR5/JeHTShEIUUBr3N/seINEIs90/RiPeIi+M X-Received: by 2002:a05:622a:15d0:b0:51c:63d:fc10 with SMTP id d75a77b69052e-51c747d055dmr71086121cf.25.1783448145623; Tue, 07 Jul 2026 11:15:45 -0700 (PDT) X-Received: by 2002:a05:622a:15d0:b0:51c:63d:fc10 with SMTP id d75a77b69052e-51c747d055dmr71085651cf.25.1783448145120; Tue, 07 Jul 2026 11:15:45 -0700 (PDT) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Subject: [PULL 02/23] target/mips: add Octeon COP2 crypto helper plumbing Date: Tue, 7 Jul 2026 20:15:07 +0200 Message-ID: <20260707181529.60191-3-philmd@oss.qualcomm.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260707181529.60191-1-philmd@oss.qualcomm.com> References: <20260707181529.60191-1-philmd@oss.qualcomm.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Proofpoint-GUID: acQLsvist3eBAnTff--mMkTt1XD7U6_m X-Proofpoint-Spam-Info: AW1haW4tMjYwNzA3MDE3OSBTYWx0ZWRfXxm+Y+pj6kr6+ B+Kr8UQo1bSYdvzRfK65by9Et8tNPfuSu8OYmfI5O/FVuN8w292fElT7fMAC6EKNRUNi/yZ0Zka ESWJPVXCRO0S+E3J/Qe69dc4fKghqEY= X-Authority-Analysis: v=2.4 cv=CNoamxrD c=1 sm=1 tr=0 ts=6a4d4252 cx=c_pps a=JbAStetqSzwMeJznSMzCyw==:117 a=4s3hRJSeHn4rkQlkrse1kQ==:17 a=IkcTkHD0fZMA:10 a=RAioF0-LDSMA:10 a=M51BFTxLslgA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=_glEPmIy2e8OvE2BGh3C:22 a=pGLkceISAAAA:8 a=KKAkSRfTAAAA:8 a=EUspDBNiAAAA:8 a=uD-nPplgcWYPQsZCk3QA:9 a=3ZKOabzyN94A:10 a=QEXdDO2ut3YA:10 a=uxP6HrT_eTzRwkO_Te1X:22 a=cvBusfyB2V15izCimMoJ:22 X-Proofpoint-ORIG-GUID: acQLsvist3eBAnTff--mMkTt1XD7U6_m X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzA3MDE3OSBTYWx0ZWRfX4nfp++wZFlOF dd0VLD58mGjC7IAa3MoXhnt3AeqCgu/3bp+1Ep2wqg45IyFlTHyLusgjbL8EU6Y4OscPJeNr+Ql kU3v+Ee04NtrkDphdi4Nt19sPPcCSqThzU7K4oJTfiEckvT0zRe8V8NzVwCUgTZREu93FffHcyc 7kXkLkz98vztsav7DnZ5DSc6cvpASw35XqOmpKAAZBM6BtGOrUSPfeX6IkgILs2BFzf9/vSioPa mHg4Q3i3ZInOdghQX1H/HV7rxgLDZII7d+k4zbw0ynqqM3zl8sgnxK8UUW7O3kDnBYOvDeT7wMd 4B4EINlY2/GSaugc1rVcNxtIjtTn0/k/kzOAaVo+Qwbf/Ef30iuLkDwJHU+Elazotg+eLJY+RTb as2RXO/oXqExywSahQZ6TaUx8M4GoNa/x23EYwaGP4HLNCCw4tQneofNTsM5/MpWgHMDFRNOzee 8QeooP7MF/ATv48rIOw== X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-07-07_04,2026-07-06_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 clxscore=1015 malwarescore=0 adultscore=0 phishscore=0 impostorscore=0 priorityscore=1501 lowpriorityscore=0 bulkscore=0 spamscore=0 suspectscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607070179 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=205.220.180.131; envelope-from=philmd@oss.qualcomm.com; helo=mx0b-0031df01.pphosted.com X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 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_LOW=-0.7, 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 @qualcomm.com) X-ZM-MESSAGEID: 1783448244048158500 From: James Hilliard Add the Octeon COP2 crypto helper source file and build it with the MIPS TCG target. This provides the common compilation unit for the COP2 engine helpers. The instruction dispatch itself remains fully decoded by decodetree, and operation selectors call per-operation helpers rather than a common selector-dispatch helper. Signed-off-by: James Hilliard Reviewed-by: Richard Henderson Message-ID: <20260608-mips-octeon-missing-insns-v2-v16-2-daef7a0d8b04@gmail= .com> Signed-off-by: Philippe Mathieu-Daud=C3=A9 --- target/mips/tcg/octeon_crypto.c | 16 ++++++++++++++++ target/mips/tcg/meson.build | 1 + 2 files changed, 17 insertions(+) create mode 100644 target/mips/tcg/octeon_crypto.c diff --git a/target/mips/tcg/octeon_crypto.c b/target/mips/tcg/octeon_crypt= o.c new file mode 100644 index 00000000000..df5b0449aeb --- /dev/null +++ b/target/mips/tcg/octeon_crypto.c @@ -0,0 +1,16 @@ +/* + * SPDX-License-Identifier: GPL-2.0-or-later + * + * MIPS Octeon crypto emulation helpers. + * + * Copyright (c) 2026 James Hilliard + */ + +#include "qemu/osdep.h" +#include "cpu.h" +#include "internal.h" +#include "exec/helper-proto.h" +#include "crypto/aes.h" +#include "crypto/sm4.h" +#include "qemu/bitops.h" +#include "qemu/host-utils.h" diff --git a/target/mips/tcg/meson.build b/target/mips/tcg/meson.build index fff9cd6c7f5..4ee359874ac 100644 --- a/target/mips/tcg/meson.build +++ b/target/mips/tcg/meson.build @@ -18,6 +18,7 @@ mips_ss.add(files( 'lmmi_helper.c', 'msa_helper.c', 'msa_translate.c', + 'octeon_crypto.c', 'op_helper.c', 'rel6_translate.c', 'translate.c', --=20 2.53.0 From nobody Sun Jul 26 10:07:33 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=reject dis=none) header.from=oss.qualcomm.com ARC-Seal: i=1; a=rsa-sha256; t=1783448249; cv=none; d=zohomail.com; s=zohoarc; b=l71alm4sSmp7pJ0GQaDMdVbWZuAlvSL538mvvQm09gSGQ8E+VYqV0iT3YODD4ov30n0SzxHs72nN4rlB34RadyBmksoiPbxPBPSnWhm2gH7qvSUnnqrj9CyN+LwAEWMEbSXYcwl6nNcSiFVWqoRZjeqLylY+D58mTjmZ3qKNCcE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783448249; h=Content-Type:Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=frYxSiaK3qJwcC0U9uDP6i2C7oqCrcJgFrCBCNGWUJI=; b=FV6v5E2KziriG+Plrj61Vpd4pElcDd/z4R5JhdEj3lr1gjU/YGPZFYqLL7xG1LbTT1NI2pHrWJU+xlXIVVjmgVLH5Db4UwxMWGQ+itlGcDB11pPLNF6Nxu4Kj4amtGva0l/iq2bNfmOWMD7h3/Tr71p3tv15AN24wccfHeoQf5I= 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=reject dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1783448249314371.4969059495652; Tue, 7 Jul 2026 11:17:29 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1whAKt-0004Ws-Fa; Tue, 07 Jul 2026 14:15: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 1whAKq-0004Lk-AR for qemu-devel@nongnu.org; Tue, 07 Jul 2026 14:15:56 -0400 Received: from mx0b-0031df01.pphosted.com ([205.220.180.131]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1whAKo-0006Ka-EV for qemu-devel@nongnu.org; Tue, 07 Jul 2026 14:15:56 -0400 Received: from pps.filterd (m0279870.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 667GxYbI187936 for ; Tue, 7 Jul 2026 18:15:53 GMT Received: from mail-qt1-f197.google.com (mail-qt1-f197.google.com [209.85.160.197]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4f95fd0c6h-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Tue, 07 Jul 2026 18:15:53 +0000 (GMT) Received: by mail-qt1-f197.google.com with SMTP id d75a77b69052e-51c0e702df8so55419061cf.2 for ; Tue, 07 Jul 2026 11:15:53 -0700 (PDT) Received: from localhost.localdomain (88-187-86-199.subs.proxad.net. [88.187.86.199]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-493e0f294a6sm144040435e9.1.2026.07.07.11.15.51 for (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Tue, 07 Jul 2026 11:15:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= frYxSiaK3qJwcC0U9uDP6i2C7oqCrcJgFrCBCNGWUJI=; b=YdGV17huhschw1jV WbQO07oicJeOat9R/HuV+UGp2ejHG2n8aCTRyhtILA/qKXYbNUWqTFR3r/3mh799 sQZqbnI7cbBMk8lDmmY+ngsdymTIxLVNkmuUryMkzzUMzyziy9gPR2wbIIAeT/cb ZO3TtXU2MRxH76qFolTfop6yGB5IIdXDxZ5M6YscSy5QdwB0FKor1rOwji1IZSf3 waujanbGJadRc3dCm9LPtM3HeS5lwyKlllsSUF4UlDU3+qjcXl546qnBgpae4620 cJdaLEl/hhrO+DLuhhgFN0sGbaYSmauTm5aNdBRD29DKadc1K7FIzTv4fpuAvl4R CZsCIQ== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1783448153; x=1784052953; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=frYxSiaK3qJwcC0U9uDP6i2C7oqCrcJgFrCBCNGWUJI=; b=eMYkqwcK07AB+LFMcXoUI6aBXeUslzmFO4/OF5mptnLHmQ0ePGEjq0K3KP1nXEmgku FpPqlfR8aPgw+K+TDr8OfMl67gxIUjgLqXPlBQ2DlP0y7KHZ18hs49zPU77dqqIZhjSG tUGVllzEKLaiwQitAbhbWOCIuy1U3cpp/tkNV/voThTs4N1HNUO23mRfEwZpOuP2KG1P 5fWJmmO1CeNSJCY6EBjWgLx/OhWYo2yVTY/PoW1xcu2OO0jHoy7AhiiVeoyhoT4wSfQ9 fvZVzAMwm9/C5l9WsjfTcFHp6rcKSsGRkr1ZuaLNXowFhLuqnHLLB19le6j+b9BjSQF2 9sug== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783448153; x=1784052953; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=frYxSiaK3qJwcC0U9uDP6i2C7oqCrcJgFrCBCNGWUJI=; b=j3y8DDAicl7Rbyd/AqTixmuRdRAvj+cwfI3lxXOWv7Nhovh61J9tgDcVOObr8xUDJ6 8rOdqZEX9qKUdDc+5pP2H3j7bQ4AVJqdyKHPfXofN2NFmYHsOz+gDQTyZSJlLlPu2Ifw CyTeoh5zJpqWWcJgfBtryJaVOkbVGe2k0gQbHWfpYmqr2glMJ06Fbn2zv/cGCWZ7ouus 7T1MziIODq/VcfIR9sAp+Womm8/Rzb6XXfRwARz5mV/8TjWokNag3q3yl8/wDMGM0DZT EPoyVb6ApMqq73HGvFAb5oYlcNZIDDX2hhEw/4PkUWloAQ0Laj7MHyTRrGSVzcX6N2RB ptdw== X-Gm-Message-State: AOJu0Ywbzsvn6nYQAAnF7Jletpfhmg2sr0fbeUsYMhLHGO48yi+kBCzT 1EYwcEgExiItShFZWdIlS+s/x6ToH2rSeDaNpfDy1FoX3EK7MJXIVERsPiuKfBC+PViYEfKTKVF jliB9LKnvXuokOhSupgYqwZKaJt3b4oUXSRQPiwNJtOgu8HiCPJgqOPvmtppXihKu6A== X-Gm-Gg: AfdE7cnl/0dW0xE8d5nkAqVbg5IuqFya/X1jtMaCm0e3JzHNCiS7XHWohv6/RUfhxvo 8x60B/z0KYCTjj8Wdp8QjPibBgnMW9DbffPVBNgxnLXO0+fWzyyG9sHkt+E3/fvfHtE4Ug0OlzJ pqDL8R07hcKaxUkYizY0fnwwJpH1twZvfzpgukemHED1vf+gKbwA6N/QsTvnkoBrWSZAt/ehjRP fd5cdXaX/FiK5tt73jw/yAJGUm/w6UljOWQ5DTvvD0CFI58uHDXHYXE9uDTS61R7RwkMRtOdibw ieStgtE3Wo4f1S2dEUebsHIrf4Yg3aVwi1/UrJIJHVedKd3flnOjC1AUYls6Xh9ijsf38n+5ZuD T7mmownGdhP0ZIwz9YPIshsmpkD4Bgc9p+ej6jEQWnZYWDa2EEC0dXL+NK88hEUi6XGX6 X-Received: by 2002:a05:622a:1a88:b0:51c:1fa1:80d3 with SMTP id d75a77b69052e-51c74856e20mr67221831cf.49.1783448152668; Tue, 07 Jul 2026 11:15:52 -0700 (PDT) X-Received: by 2002:a05:622a:1a88:b0:51c:1fa1:80d3 with SMTP id d75a77b69052e-51c74856e20mr67221281cf.49.1783448152016; Tue, 07 Jul 2026 11:15:52 -0700 (PDT) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Subject: [PULL 03/23] target/mips: add Octeon CRC COP2 helpers Date: Tue, 7 Jul 2026 20:15:08 +0200 Message-ID: <20260707181529.60191-4-philmd@oss.qualcomm.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260707181529.60191-1-philmd@oss.qualcomm.com> References: <20260707181529.60191-1-philmd@oss.qualcomm.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzA3MDE3OSBTYWx0ZWRfX4+7972wstHIv 7SxHeiRSTrRDCaKX7/OedSLOmW4+mDfUWUDXmsRZU8JMksPkMal13G1kD8hty0V8EEsRwk9AgK6 I/s5g1XOo1CbdrYjSKmklwBf5Pq512Sqza7hTdrVaUJRfzGhpkKa8bU/gvBjcP4gVy2g4xSMlIZ ijjw9BSpu77NQGbVVx3uJhEBSoWbXEK5sDPIo9giH3s3MyKjf7JCdf6bXAjpoRG2k6QBH4dxBAQ K8C5w+X8a3o+VeFnLcUHA/DtIdJYWl3wdvofPYxnLCV+Z2RZGybCN20iK2ybxx99PUAWQ4qb5cu rjAuFslx91sdvRuOM/TapEXgfLIA+3TtJOuXJ5/Nc19rmGIBUYh+RCW3yn2zBY6y4YyVs6hurUj 35hlIDDBKu8Nw9Ux9iaKw9AZGH6VCwOyjh3dnwq6yhpOkJDIn5F9iMsfnYDSgJ025lDe1oV3DMg 4v6NbNRcc85xYld4DHg== X-Authority-Analysis: v=2.4 cv=VZLH+lp9 c=1 sm=1 tr=0 ts=6a4d4259 cx=c_pps a=EVbN6Ke/fEF3bsl7X48z0g==:117 a=4s3hRJSeHn4rkQlkrse1kQ==:17 a=IkcTkHD0fZMA:10 a=RAioF0-LDSMA:10 a=M51BFTxLslgA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=gowsoOTTUOVcmtlkKump:22 a=pGLkceISAAAA:8 a=KKAkSRfTAAAA:8 a=EUspDBNiAAAA:8 a=PXyl_kNEWH3ax5_YoicA:9 a=3ZKOabzyN94A:10 a=QEXdDO2ut3YA:10 a=a_PwQJl-kcHnX1M80qC6:22 a=cvBusfyB2V15izCimMoJ:22 X-Proofpoint-ORIG-GUID: VW-Mz4N85-kPpkim0d8L8w445hM0MuFs X-Proofpoint-Spam-Info: AW1haW4tMjYwNzA3MDE3OSBTYWx0ZWRfX8oHc/M2EdQFV P2RP0mlhXC3Zze37kwFhhcvqDyARhJYfxKA6gdQFps8vM3AHQ5beb+9nxpTL84EsPWMqXiTuLca QgnNoRGrpdSmC/zsxpCkHnGLO/DJ0po= X-Proofpoint-GUID: VW-Mz4N85-kPpkim0d8L8w445hM0MuFs X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-07-07_04,2026-07-06_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 impostorscore=0 bulkscore=0 priorityscore=1501 suspectscore=0 lowpriorityscore=0 spamscore=0 malwarescore=0 adultscore=0 clxscore=1015 phishscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607070179 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=205.220.180.131; envelope-from=philmd@oss.qualcomm.com; helo=mx0b-0031df01.pphosted.com X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 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_LOW=-0.7, 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 @qualcomm.com) X-ZM-MESSAGEID: 1783448250185158500 From: James Hilliard Add helper support for the Octeon COP2 CRC register interface. This covers normal and reflected CRC state handling, byte/halfword/word/ doubleword/variable-width update selectors, and the reflected IV readback operation. Register moves that can be represented as direct TCG loads/stores do not need helpers. Add only the side-effecting CRC helper implementation here. Signed-off-by: James Hilliard Reviewed-by: Richard Henderson Message-ID: <20260608-mips-octeon-missing-insns-v2-v16-3-daef7a0d8b04@gmail= .com> Signed-off-by: Philippe Mathieu-Daud=C3=A9 --- target/mips/helper.h | 14 ++++ target/mips/tcg/octeon_crypto.c | 131 ++++++++++++++++++++++++++++++++ 2 files changed, 145 insertions(+) diff --git a/target/mips/helper.h b/target/mips/helper.h index e2b83a1d19d..e802f50fd6e 100644 --- a/target/mips/helper.h +++ b/target/mips/helper.h @@ -25,6 +25,20 @@ DEF_HELPER_3(crc32, tl, tl, tl, i32) DEF_HELPER_3(crc32c, tl, tl, tl, i32) DEF_HELPER_FLAGS_4(rotx, TCG_CALL_NO_RWG_SE, tl, tl, i32, i32, i32) =20 +/* Octeon COP2 selector operation helpers. */ +DEF_HELPER_1(octeon_cp2_mf_crc_iv_reflect, i64, env) +DEF_HELPER_2(octeon_cp2_mt_crc_write_iv_reflect, void, env, i64) +DEF_HELPER_2(octeon_cp2_mt_crc_write_byte, void, env, i64) +DEF_HELPER_2(octeon_cp2_mt_crc_write_half, void, env, i64) +DEF_HELPER_2(octeon_cp2_mt_crc_write_word, void, env, i64) +DEF_HELPER_2(octeon_cp2_mt_crc_write_byte_reflect, void, env, i64) +DEF_HELPER_2(octeon_cp2_mt_crc_write_half_reflect, void, env, i64) +DEF_HELPER_2(octeon_cp2_mt_crc_write_word_reflect, void, env, i64) +DEF_HELPER_2(octeon_cp2_mt_crc_write_dword, void, env, i64) +DEF_HELPER_2(octeon_cp2_mt_crc_write_var, void, env, i64) +DEF_HELPER_2(octeon_cp2_mt_crc_write_dword_reflect, void, env, i64) +DEF_HELPER_2(octeon_cp2_mt_crc_write_var_reflect, void, env, i64) + /* microMIPS functions */ DEF_HELPER_4(lwm, void, env, tl, tl, i32) DEF_HELPER_4(swm, void, env, tl, tl, i32) diff --git a/target/mips/tcg/octeon_crypto.c b/target/mips/tcg/octeon_crypt= o.c index df5b0449aeb..c589077ea7c 100644 --- a/target/mips/tcg/octeon_crypto.c +++ b/target/mips/tcg/octeon_crypto.c @@ -14,3 +14,134 @@ #include "crypto/sm4.h" #include "qemu/bitops.h" #include "qemu/host-utils.h" + +static uint32_t octeon_crc_reflect32_by_byte(uint32_t v) +{ + return bswap32(revbit32(v)); +} + +static uint32_t octeon_crc_state_reflect(const MIPSOcteonCryptoState *cryp= to) +{ + return octeon_crc_reflect32_by_byte(crypto->crc_iv); +} + +static void octeon_crc_set_state_reflect(MIPSOcteonCryptoState *crypto, + uint32_t state) +{ + crypto->crc_iv =3D octeon_crc_reflect32_by_byte(state); +} + +static void octeon_crc_update_normal(MIPSOcteonCryptoState *crypto, + uint64_t value, unsigned int bytes) +{ + uint32_t crc =3D crypto->crc_iv; + uint32_t poly =3D crypto->crc_poly; + + for (unsigned int i =3D 0; i < bytes; i++) { + uint8_t byte =3D value >> ((bytes - 1 - i) * 8); + + crc ^=3D (uint32_t)byte << 24; + for (int bit =3D 0; bit < 8; bit++) { + if (crc & 0x80000000U) { + crc =3D (crc << 1) ^ poly; + } else { + crc <<=3D 1; + } + } + } + + crypto->crc_iv =3D crc; +} + +static void octeon_crc_update_reflect(MIPSOcteonCryptoState *crypto, + uint64_t value, unsigned int bytes) +{ + uint32_t crc =3D octeon_crc_state_reflect(crypto); + uint32_t poly =3D bswap32(crypto->crc_poly); + + for (unsigned int i =3D 0; i < bytes; i++) { + uint8_t byte =3D value >> ((bytes - 1 - i) * 8); + + crc ^=3D byte; + for (int bit =3D 0; bit < 8; bit++) { + if (crc & 1U) { + crc =3D (crc >> 1) ^ poly; + } else { + crc >>=3D 1; + } + } + } + + octeon_crc_set_state_reflect(crypto, crc); +} + +uint64_t helper_octeon_cp2_mf_crc_iv_reflect(CPUMIPSState *env) +{ + return octeon_crc_reflect32_by_byte(env->octeon_crypto.crc_iv); +} + +void helper_octeon_cp2_mt_crc_write_iv_reflect(CPUMIPSState *env, + uint64_t value) +{ + env->octeon_crypto.crc_iv =3D + octeon_crc_reflect32_by_byte((uint32_t)value); +} + +void helper_octeon_cp2_mt_crc_write_byte(CPUMIPSState *env, uint64_t value) +{ + octeon_crc_update_normal(&env->octeon_crypto, value, 1); +} + +void helper_octeon_cp2_mt_crc_write_half(CPUMIPSState *env, uint64_t value) +{ + octeon_crc_update_normal(&env->octeon_crypto, value, 2); +} + +void helper_octeon_cp2_mt_crc_write_word(CPUMIPSState *env, uint64_t value) +{ + octeon_crc_update_normal(&env->octeon_crypto, value, 4); +} + +void helper_octeon_cp2_mt_crc_write_dword(CPUMIPSState *env, uint64_t valu= e) +{ + octeon_crc_update_normal(&env->octeon_crypto, value, 8); +} + +void helper_octeon_cp2_mt_crc_write_var(CPUMIPSState *env, uint64_t value) +{ + MIPSOcteonCryptoState *crypto =3D &env->octeon_crypto; + + octeon_crc_update_normal(crypto, value, MIN(8U, crypto->crc_len & 0xf)= ); +} + +void helper_octeon_cp2_mt_crc_write_byte_reflect(CPUMIPSState *env, + uint64_t value) +{ + octeon_crc_update_reflect(&env->octeon_crypto, value, 1); +} + +void helper_octeon_cp2_mt_crc_write_half_reflect(CPUMIPSState *env, + uint64_t value) +{ + octeon_crc_update_reflect(&env->octeon_crypto, value, 2); +} + +void helper_octeon_cp2_mt_crc_write_word_reflect(CPUMIPSState *env, + uint64_t value) +{ + octeon_crc_update_reflect(&env->octeon_crypto, value, 4); +} + +void helper_octeon_cp2_mt_crc_write_dword_reflect(CPUMIPSState *env, + uint64_t value) +{ + octeon_crc_update_reflect(&env->octeon_crypto, value, 8); +} + +void helper_octeon_cp2_mt_crc_write_var_reflect(CPUMIPSState *env, + uint64_t value) +{ + MIPSOcteonCryptoState *crypto =3D &env->octeon_crypto; + + octeon_crc_update_reflect(crypto, value, MIN(8U, crypto->crc_len & 0xf= )); +} --=20 2.53.0 From nobody Sun Jul 26 10:07:33 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=reject dis=none) header.from=oss.qualcomm.com ARC-Seal: i=1; a=rsa-sha256; t=1783448192; cv=none; d=zohomail.com; s=zohoarc; b=FU9/2zIksazbbnTRTyJkRqi1WzPujRQkqdYMOc+pCtBD+vgADuxAUKokvuuHsE3PNBo+ccqFuk4x5nVJ8fTubR7nVevtKNOytsKciii0R71tyhUok6nuaC/r033hZnm4YoTVE7KrTVFM+CqpXqqnYjZ5wWQ3x/RJJTEbbNkZKL0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783448192; h=Content-Type:Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=V/XjRFJGYYwW24zgFL9schuX7w2keGuXAKWhI3IMUDE=; b=LdxvXtWXhNhzPA6p5gMbY7dYtIV+FsT7V0QtMqEUbRfHP9KDI9CdQJCq9mcD4SJ1AjloJRUZdHYZwKl8oyXyVIelDulOsJAnxauLUpe9Ojv+4+NBrSmzIiQhgbHNL+xD2R5vjD3uNnedvvLWSS3LZ2oJ2gTBBCfz7owGGFgpHrQ= 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=reject dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1783448192771714.5212476294473; Tue, 7 Jul 2026 11:16:32 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1whALC-0004ki-OA; Tue, 07 Jul 2026 14:16:18 -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 1whAKz-0004e1-4J for qemu-devel@nongnu.org; Tue, 07 Jul 2026 14:16:09 -0400 Received: from mx0a-0031df01.pphosted.com ([205.220.168.131]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1whAKx-0006LW-3r for qemu-devel@nongnu.org; Tue, 07 Jul 2026 14:16:04 -0400 Received: from pps.filterd (m0279864.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 667FTkwb3996766 for ; Tue, 7 Jul 2026 18:16:01 GMT Received: from mail-qt1-f199.google.com (mail-qt1-f199.google.com [209.85.160.199]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4f8su73gkp-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Tue, 07 Jul 2026 18:16:01 +0000 (GMT) Received: by mail-qt1-f199.google.com with SMTP id d75a77b69052e-51c20762d21so55304811cf.0 for ; Tue, 07 Jul 2026 11:16:01 -0700 (PDT) Received: from localhost.localdomain (88-187-86-199.subs.proxad.net. [88.187.86.199]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-493e549dcd5sm3144235e9.1.2026.07.07.11.15.58 for (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Tue, 07 Jul 2026 11:15:58 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= V/XjRFJGYYwW24zgFL9schuX7w2keGuXAKWhI3IMUDE=; b=PbyvXj936XtBsABd /nA8kcG9SpTt9S9qfmLMmaZEYXzrLo7MOm+qKTENIQgygECdjohO85AT8+rEFhRv Wd4gxDpFWwV6TOtidhg3O7bawYO6veEL5v/shOg1dY7gf+kjrY5bCkcqu3ts6b91 WIMdpjE+/erl5j6NgW/19aghHT0Hh1KUaqrl/AfMpG37yZkZ0YlcUlNrMwH3sV+D TD+aO6aekd6cDqUkMzAiQP08GwgdnpFSjPBDH5hjm/zjL/utA93SMT2T06M3IELK OvXw58EVSBYK9wMb7A4Ia8TEhZuXczY7PFNTBZhnNAC9oiKoF7BxgIaj4DqPn/87 Nap1wQ== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1783448160; x=1784052960; darn=nongnu.org; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=V/XjRFJGYYwW24zgFL9schuX7w2keGuXAKWhI3IMUDE=; b=GI09LWmhSEjz4HiYFhq0Agdb50q0aZsBNGlLrZONBuy8F4akNrIYXdaJsx6lCifq4u cyM8Zf/7wsdFohiCTWy++KPVa7plEEiBoo9OVnYp6+LOMurOmcsMTGC3QDVl0gxzaHWl 4ysn3BzZaMTQdSUDMTQ1+byjy9RnOIj17197Kk4hC8GCXxycbLdbgozcxpGg+Gp2D9VH c40EvFUca7XYskJbR5qWbxxTiF5DOUTPbFHzzjNb7CfIjrjCMkcwpo/V+IaYYMHUMwUM p42SbVCjQxZpSSB5x/yEh+kvEfwGNor5GAz7Ki0mhtBFWk3oQYor5UcRIDMfAr4euaWt LzmQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783448160; x=1784052960; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:to:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=V/XjRFJGYYwW24zgFL9schuX7w2keGuXAKWhI3IMUDE=; b=UcJTIiagxsPgPQ3yH+C3Tc+QMkwTJdYb0s7CeBuxv4c89AMGKsFcHsr5F9Z22qrApZ M9C8dQCn3KzdOXe/va8ocQl24nBNFGEf8qAb80KueBff2oWlvtTLUTkTQEbdBvAJh65m FWNMNJBGUoM1EZvhMcxWM4WHsMwwjZ6/tOnS8ysZViuywATqK4+qOgMRPTyrvdl1btst 9FcUMPSLdfo2rrOnpTDZodklDnRddpN2/38bQEVBbHlJjAXfefzmCWk0ZVqUYacwh/4d PPh/G5q/I2XBo/fKmPmRRmXxyhY1c6DS4HqXLQ68m6iITMJmXlGjdcoV5K4PkMrn2DxM G61g== X-Gm-Message-State: AOJu0Yz/sevt+Od/mLypLwFcg9IBPkpU7fZ7Sjieu7VRKjraf9N0SdGi qWb0xJmD3FaMpDpOcdrnwg0n3pILZ2cgC7hGb8PaU1lA+6/gcGs6ah+fYvsH1cK5+teDhkGSO0M /a4nL8rIPsL29LFNxf2nC85YaVcYRCNWVK8CLqWCuZQyVObrYMhRcGNn9NNdRm+aDNQ== X-Gm-Gg: AfdE7clCW1juXboGxjrFMSGHmpeeun/wGqUDmWZHUlKVQ2d7eI3w9ZroP3wVJZQv+32 L12jtv+NTrPHjuMUkST/Uksjg7FEgUEXx11cpvXRwZXsvcKgJDMNyTLYK0FbDQeuND9bPtc1lch adiOsc1uN3gbO9DoXzp2+HMBoNeFfXpvuVkcA7eoz4yTnhtDX+XJlWJwB7dfsMOGbIpUh09rug+ O+QVwFwpY544wUgNTZ/Sm6sQh3V2/ZjgC2HvHAei/csOKnC3gBoK1DTg4Brqv8sfS/OYC5JYIMm jxXq8Ya7z56+b0JoEmLo9EP5m1aVlkUFvZCiM0YlMxm0Uau9fm/Ic4+TVUj0JTxSskYs9wtZLzW buV5w8NpBycPVE6TmrrVvzPIW4LSCYGuDLcrPNYfpGAx2Jpn5/XFSdgXbn7UQ8cnGWLKQ X-Received: by 2002:a05:622a:2516:b0:51c:7b12:11fe with SMTP id d75a77b69052e-51c7b121745mr41365251cf.76.1783448160025; Tue, 07 Jul 2026 11:16:00 -0700 (PDT) X-Received: by 2002:a05:622a:2516:b0:51c:7b12:11fe with SMTP id d75a77b69052e-51c7b121745mr41364611cf.76.1783448159228; Tue, 07 Jul 2026 11:15:59 -0700 (PDT) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Subject: [PULL 04/23] target/mips: add Octeon GFM COP2 helpers Date: Tue, 7 Jul 2026 20:15:09 +0200 Message-ID: <20260707181529.60191-5-philmd@oss.qualcomm.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260707181529.60191-1-philmd@oss.qualcomm.com> References: <20260707181529.60191-1-philmd@oss.qualcomm.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzA3MDE3OSBTYWx0ZWRfX5qKI82FK00Iy biy4+5lsXxpQMb/+snWabyoZnmBJUrXuRS1qrcipMOzl+8hilZmsjH2RcKP6/TVc7TCATsnKutV dNUMEof4mvuoamb+BQke9NvLBh0H3L5DRc93+Czjmuu3FM0lgAo0Yyyu6xaCGHlWiANhaPTNSBq ANp0RRC956ZJ6EdyI33itPcuPsSh7MkOm7jR4ziLn6AA3mwiHKbxDHHdWSDaQiykDcvw2Dulvwf bIDEodvBbg5lVCkijgvJt07TwJGS2oHbiZYKUEdTKpayKtDoA/Q74NcpH6rc+bZA5kKQ31LgRhx N9xxhqy0l2iL8HQoKMMBm17BnUq3rYDs97y0iEgKfPJvHwPfxVTvS9fcJrfivJemsWo0ivtnYI8 VfflVSI2G7MtCtQ77NZhxP8+dlQ2w9+YPMZruTpkORIodmw853bDAkTJx7kkq5JNlkwlrVdE1WQ OEk6lvJIcQp8GwlUYKQ== X-Proofpoint-Spam-Info: AW1haW4tMjYwNzA3MDE3OSBTYWx0ZWRfX975bKiaEm723 UYL4zytxD5JeshPdGvKU3HGa9KKK38+EvusQjTSG4PZS/B4XANxYRYOcLuI8oHQ5F/cMQJEv/Zz AStexUjHKgCrM1fkLnmT06MplZIOXl8= X-Proofpoint-GUID: BiGxK4WmVGADke_PtkYB_eOFMtZELYTE X-Proofpoint-ORIG-GUID: BiGxK4WmVGADke_PtkYB_eOFMtZELYTE X-Authority-Analysis: v=2.4 cv=HN7z0Itv c=1 sm=1 tr=0 ts=6a4d4261 cx=c_pps a=WeENfcodrlLV9YRTxbY/uA==:117 a=4s3hRJSeHn4rkQlkrse1kQ==:17 a=IkcTkHD0fZMA:10 a=RAioF0-LDSMA:10 a=M51BFTxLslgA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=DJpcGTmdVt4CTyJn9g5Z:22 a=pGLkceISAAAA:8 a=EUspDBNiAAAA:8 a=7mZLfOp9yqhDg7vxLwIA:9 a=3ZKOabzyN94A:10 a=QEXdDO2ut3YA:10 a=kacYvNCVWA4VmyqE58fU:22 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-07-07_04,2026-07-06_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 spamscore=0 priorityscore=1501 malwarescore=0 adultscore=0 clxscore=1015 bulkscore=0 suspectscore=0 lowpriorityscore=0 impostorscore=0 phishscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607070179 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=205.220.168.131; envelope-from=philmd@oss.qualcomm.com; helo=mx0a-0031df01.pphosted.com X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 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_LOW=-0.7, 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 @qualcomm.com) X-ZM-MESSAGEID: 1783448193988158500 From: James Hilliard Add helper support for the Octeon GFM carryless multiply selectors. This models the normal and reflected multiplication paths, including the XOR-and-multiply forms that update the result/input state used by Octeon crypto code. Reflected selectors operate on the architectural GFM register bank using bit-reflected register transfers rather than a separate shadow state. Keep the 64-bit UIA2 reduction path used by SNOW3G F9 and share that shortcut between the normal and reflected XORMUL1 paths. Signed-off-by: James Hilliard Message-ID: <20260608-mips-octeon-missing-insns-v2-v16-4-daef7a0d8b04@gmail= .com> Signed-off-by: Philippe Mathieu-Daud=C3=A9 --- target/mips/helper.h | 9 ++ target/mips/tcg/octeon_crypto.c | 142 ++++++++++++++++++++++++++++++++ 2 files changed, 151 insertions(+) diff --git a/target/mips/helper.h b/target/mips/helper.h index e802f50fd6e..20ffbfb7096 100644 --- a/target/mips/helper.h +++ b/target/mips/helper.h @@ -27,6 +27,10 @@ DEF_HELPER_FLAGS_4(rotx, TCG_CALL_NO_RWG_SE, tl, tl, i32= , i32, i32) =20 /* Octeon COP2 selector operation helpers. */ DEF_HELPER_1(octeon_cp2_mf_crc_iv_reflect, i64, env) +DEF_HELPER_1(octeon_cp2_mf_gfm_mul_reflect0, i64, env) +DEF_HELPER_1(octeon_cp2_mf_gfm_mul_reflect1, i64, env) +DEF_HELPER_1(octeon_cp2_mf_gfm_resinp_reflect0, i64, env) +DEF_HELPER_1(octeon_cp2_mf_gfm_resinp_reflect1, i64, env) DEF_HELPER_2(octeon_cp2_mt_crc_write_iv_reflect, void, env, i64) DEF_HELPER_2(octeon_cp2_mt_crc_write_byte, void, env, i64) DEF_HELPER_2(octeon_cp2_mt_crc_write_half, void, env, i64) @@ -38,6 +42,11 @@ DEF_HELPER_2(octeon_cp2_mt_crc_write_dword, void, env, i= 64) DEF_HELPER_2(octeon_cp2_mt_crc_write_var, void, env, i64) DEF_HELPER_2(octeon_cp2_mt_crc_write_dword_reflect, void, env, i64) DEF_HELPER_2(octeon_cp2_mt_crc_write_var_reflect, void, env, i64) +DEF_HELPER_2(octeon_cp2_mt_gfm_mul_reflect0, void, env, i64) +DEF_HELPER_2(octeon_cp2_mt_gfm_mul_reflect1, void, env, i64) +DEF_HELPER_2(octeon_cp2_mt_gfm_xor0_reflect, void, env, i64) +DEF_HELPER_2(octeon_cp2_mt_gfm_xormul1_reflect, void, env, i64) +DEF_HELPER_2(octeon_cp2_mt_gfm_xormul1, void, env, i64) =20 /* microMIPS functions */ DEF_HELPER_4(lwm, void, env, tl, tl, i32) diff --git a/target/mips/tcg/octeon_crypto.c b/target/mips/tcg/octeon_crypt= o.c index c589077ea7c..b417dcf53b6 100644 --- a/target/mips/tcg/octeon_crypto.c +++ b/target/mips/tcg/octeon_crypto.c @@ -11,6 +11,7 @@ #include "internal.h" #include "exec/helper-proto.h" #include "crypto/aes.h" +#include "crypto/clmul.h" #include "crypto/sm4.h" #include "qemu/bitops.h" #include "qemu/host-utils.h" @@ -75,11 +76,152 @@ static void octeon_crc_update_reflect(MIPSOcteonCrypto= State *crypto, octeon_crc_set_state_reflect(crypto, crc); } =20 +static void octeon_gfm_mul(const uint64_t x[2], const uint64_t y[2], + uint16_t poly, uint64_t out[2]) +{ + uint64_t zh =3D 0, zl =3D 0; + uint64_t vh =3D y[0], vl =3D y[1]; + uint64_t rh =3D (uint64_t)poly << 48; + int i; + + /* + * Keep the reflected-shift formulation used by Octeon software: the + * selector polynomial is already in reflected bit order, and the soft= ware + * view folds its 16 reduction bits from the top of the high word. + */ + for (i =3D 0; i < 128; i++) { + bool bit; + bool lsb; + + if (i < 64) { + bit =3D (x[0] >> (63 - i)) & 1; + } else { + bit =3D (x[1] >> (127 - i)) & 1; + } + if (bit) { + zh ^=3D vh; + zl ^=3D vl; + } + + lsb =3D vl & 1; + vl =3D (vh << 63) | (vl >> 1); + vh >>=3D 1; + if (lsb) { + vh ^=3D rh; + } + } + + out[0] =3D zh; + out[1] =3D zl; +} + +static uint64_t octeon_gfm_reduce64(Int128 product, uint8_t poly) +{ + uint64_t lo =3D int128_getlo(product); + uint64_t hi =3D int128_gethi(product); + + while (hi) { + int bit =3D 63 - clz64(hi); + + hi ^=3D 1ULL << bit; + lo ^=3D (uint64_t)poly << bit; + if (bit > 56) { + hi ^=3D (uint64_t)poly >> (64 - bit); + } + } + + return lo; +} + +static void octeon_gfm_mul64_uia2(const uint64_t x[2], const uint64_t y[2], + uint8_t poly, uint64_t out[2]) +{ + /* + * SNOW3G UIA2 uses the GFM datapath as a reflected 64-bit multiply in + * the low half of the 128-bit register pair. When RESINP[0], MUL[1], + * and the high polynomial byte are all zero, octeon_gfm_mul() observes + * only x[1], y[0], and the low 8-bit polynomial. Reflect those opera= nds + * into normal carryless-multiply order and reflect the reduced result + * back into RESINP[1]. + */ + uint64_t vx =3D revbit64(x[1]); + uint64_t vy =3D revbit64(y[0]); + Int128 product =3D clmul_64(vx, vy); + uint64_t res =3D octeon_gfm_reduce64(product, revbit32(poly) >> 24); + + out[0] =3D 0; + out[1] =3D revbit64(res); +} + uint64_t helper_octeon_cp2_mf_crc_iv_reflect(CPUMIPSState *env) { return octeon_crc_reflect32_by_byte(env->octeon_crypto.crc_iv); } =20 +uint64_t helper_octeon_cp2_mf_gfm_mul_reflect0(CPUMIPSState *env) +{ + return revbit64(env->octeon_crypto.gfm_mul[0]); +} + +uint64_t helper_octeon_cp2_mf_gfm_mul_reflect1(CPUMIPSState *env) +{ + return revbit64(env->octeon_crypto.gfm_mul[1]); +} + +uint64_t helper_octeon_cp2_mf_gfm_resinp_reflect0(CPUMIPSState *env) +{ + return revbit64(env->octeon_crypto.gfm_resinp[0]); +} + +uint64_t helper_octeon_cp2_mf_gfm_resinp_reflect1(CPUMIPSState *env) +{ + return revbit64(env->octeon_crypto.gfm_resinp[1]); +} + +void helper_octeon_cp2_mt_gfm_mul_reflect0(CPUMIPSState *env, uint64_t val= ue) +{ + env->octeon_crypto.gfm_mul[0] =3D revbit64(value); +} + +void helper_octeon_cp2_mt_gfm_mul_reflect1(CPUMIPSState *env, uint64_t val= ue) +{ + env->octeon_crypto.gfm_mul[1] =3D revbit64(value); +} + +void helper_octeon_cp2_mt_gfm_xor0_reflect(CPUMIPSState *env, uint64_t val= ue) +{ + env->octeon_crypto.gfm_resinp[0] ^=3D revbit64(value); +} + +static void octeon_gfm_xormul1_common(MIPSOcteonCryptoState *crypto, + uint64_t value) +{ + crypto->gfm_resinp[1] ^=3D value; + if (crypto->gfm_poly <=3D 0xff && crypto->gfm_mul[1] =3D=3D 0 && + crypto->gfm_resinp[0] =3D=3D 0) { + octeon_gfm_mul64_uia2(crypto->gfm_resinp, crypto->gfm_mul, + crypto->gfm_poly, crypto->gfm_resinp); + } else { + octeon_gfm_mul(crypto->gfm_resinp, crypto->gfm_mul, crypto->gfm_po= ly, + crypto->gfm_resinp); + } +} + +void helper_octeon_cp2_mt_gfm_xormul1_reflect(CPUMIPSState *env, + uint64_t value) +{ + MIPSOcteonCryptoState *crypto =3D &env->octeon_crypto; + + octeon_gfm_xormul1_common(crypto, revbit64(value)); +} + +void helper_octeon_cp2_mt_gfm_xormul1(CPUMIPSState *env, uint64_t value) +{ + MIPSOcteonCryptoState *crypto =3D &env->octeon_crypto; + + octeon_gfm_xormul1_common(crypto, value); +} + void helper_octeon_cp2_mt_crc_write_iv_reflect(CPUMIPSState *env, uint64_t value) { --=20 2.53.0 From nobody Sun Jul 26 10:07:33 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=reject dis=none) header.from=oss.qualcomm.com ARC-Seal: i=1; a=rsa-sha256; t=1783448248; cv=none; d=zohomail.com; s=zohoarc; b=DwTQAuW+CBo8O5+jCdZCNBjnxDCEV2NaQu3I+yT0xM6kqOquk3pTiDKXj9CoxV1LFb57rNKAWB0Ume+xSk8R6T+33DLL2+i2x0ovw5OO7+XnH2WjYpJqkHQs9wqaUbEsxCZsyhjlE8NSGheW4tzsyTJD3p+uReDqHpsjpHOW4Vc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783448248; h=Content-Type:Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=XCd3xNqLnYMXo9r61o2LBClIiGLnFLXqbbTtEGj6akw=; b=cZfnXAlchMiBnnlzvHbOG90AzvsHFYqonOnX+F1S06pydbRBO+iYhR4zn+FmMJ2uw6ry967c2t84OTnhtTjiNaK9phtDXWUSxYdooWmqYppEUSjYUHbA5fdm4dVp5dwHm1FR2hlbhWZjp1eQnaKqQd0Xax1hyT7T6dsFVYUof70= 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=reject dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1783448248180477.34140709650785; Tue, 7 Jul 2026 11:17:28 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1whAM4-0005PB-Hy; Tue, 07 Jul 2026 14:17: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 1whALB-0004jL-TH for qemu-devel@nongnu.org; Tue, 07 Jul 2026 14:16:18 -0400 Received: from mx0a-0031df01.pphosted.com ([205.220.168.131]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1whALA-0006Mh-1h for qemu-devel@nongnu.org; Tue, 07 Jul 2026 14:16:17 -0400 Received: from pps.filterd (m0279863.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 667FTDK6018048 for ; Tue, 7 Jul 2026 18:16:14 GMT Received: from mail-qt1-f199.google.com (mail-qt1-f199.google.com [209.85.160.199]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4f8wep2nx4-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Tue, 07 Jul 2026 18:16:13 +0000 (GMT) Received: by mail-qt1-f199.google.com with SMTP id d75a77b69052e-51a87ef9713so9916281cf.1 for ; Tue, 07 Jul 2026 11:16:13 -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-493e0fccf2dsm76535695e9.15.2026.07.07.11.16.05 for (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Tue, 07 Jul 2026 11:16:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= XCd3xNqLnYMXo9r61o2LBClIiGLnFLXqbbTtEGj6akw=; b=onGltfCBZ3mG0OLq Yn43K8VqTegJbx4eYOulVDtsFF2o5FifN1PgzpKE/kTck/jVCzAS4HfkZXkQaBKV vwee+PSbvxG2h+xZWC+oADQRXreFqxOP+N52xVNsiFjOkztLmpm75cdGjziVXmAI U/yVIN4q99cGB50cBeXQK5qU3uyhTCjLElv4XQXTvvbHqhfV7li9tNTfFerYj3pp Z+OVdCzvXIRNKjS/2C+h39iGGyjMplFQekPlenPgZTjjJ1h8e7dT6jG7RBASfPpd +Ap1lXuhM+7jwlQc/BbsgMu1Q3c+an2AQb845n44DLEZ6HP5qLPdu0YVq+/BPfET Mqt2AA== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1783448173; x=1784052973; darn=nongnu.org; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=XCd3xNqLnYMXo9r61o2LBClIiGLnFLXqbbTtEGj6akw=; b=ZThfiUajVr/0xV/DaIXq+2WRbkDDRx8d45RZs3TKpmnhz1WzaeT59pNrP7yWrt0ZKM oT8zIJ6DT5WEllQb5x48E7aKnm5ta+7g38B1Zy3nOrctGt83nTeWTD4cziOAB7Vs44Tu t/2Yr+l91Mab29Xyr0QU1FxDIzfv7ZKTBpSn/VItYf3eP5ynfeecrkd7jasui5jd1qgD UkYlLsjwQL57lhoXB9V8GW1XbsePlAlBILwZr1Qjqaaf1nQkvqi2IK8rP7RIXrrgcWuI nNapglq9D0AvTljcszLgJAm+diiarSOyo6watrB7A7XMRrIu2Jdp+gCVNpotvq/68DEM OO/A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783448173; x=1784052973; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:to:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=XCd3xNqLnYMXo9r61o2LBClIiGLnFLXqbbTtEGj6akw=; b=iVPEnvEagU3KNfo5qJmkp1mZe80jannJqwL3lqu6ei6Pu3ka9dBNsNNoZoExGnnMt4 vt6zPz5lD/xLpSmGV2qbaNjuUnygQRLtlqOMfNVeqPczruLQABX3JvKpRo/pkS3km2rP sL9QR4zRYqqEQSA/RJy+0iZczuJ6nUIOLOt2JErz+dbf9jaoAzMFkaJoRPPN+obuVvq0 FBsoCznRXY8LXU51dRRR4LAEAZfr4kYRtRBdop8jbsAnN6ar2ZjqdEit7YiLThbMJOmw dAGcM61xifhO2kfT8cgDV4JbxLBXHVWds8T5ZmB0wTgeGmeBtEwlEhMXYwdVs7Q/T8Pg 979g== X-Gm-Message-State: AOJu0YwhnujGm7opz/QO/ypz9r4uyru1zC20PtTi6mjHZpUyW+sEHuOk pXUzF9EQwTGqM4B7bso+QGBr98CTeLjkROo4ongXNUtgCA1EnBYRClEv/jXbgTvmlyzxFSmUyf+ FtvKJhhz1W1Kem9q/z34zd1R+cO48TZ1TPjzmW8pYsrUv6JacQCpTQR8nQHrifjRgNA== X-Gm-Gg: AfdE7cl5km2H8S+Kk8v65LJ5N2c6WkLK5yOw5/MzwoovRzPXqmmBultDBL24cexSF7u nFAKgMfcusL8Bi0WwJvpgZyEQxYb5yqMMwCX6N196TNI2Nb5L09AmcAYcuyolHTMf5FWTwCYNe2 ethPsjc4tf7zqOMhGQh3mTPnoa3w87OD/lT10mug63B3ONQFSxqdGRFxKQAuRk+c07GWJwiU+Y8 NjHWQEpGzzEUCQRKBaqNhzY7Kz0cJVgEPWmtSO43wVnhTn7ffEpLvVOkMPY6j7IQAd1uNsisR1c b0dDLloQSXNJdAEltdxkX4dZEmaZF5rcwF92QpaACTwtiswzbTfaRYMKdoVixvGRd6Qg86SyZ+w uaRHc4PMECpG32rxBrol74h/lQ1x5zlRWhBp9+Ut+ATa1XXwiqv7X1U40YNcGQEEIuAX6 X-Received: by 2002:a05:622a:4a88:b0:51a:8691:4427 with SMTP id d75a77b69052e-51c7a0d95f4mr41810581cf.0.1783448167773; Tue, 07 Jul 2026 11:16:07 -0700 (PDT) X-Received: by 2002:a05:622a:4a88:b0:51a:8691:4427 with SMTP id d75a77b69052e-51c7a0d95f4mr41809481cf.0.1783448166536; Tue, 07 Jul 2026 11:16:06 -0700 (PDT) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Subject: [PULL 05/23] target/mips: add Octeon SHA3 COP2 helpers Date: Tue, 7 Jul 2026 20:15:10 +0200 Message-ID: <20260707181529.60191-6-philmd@oss.qualcomm.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260707181529.60191-1-philmd@oss.qualcomm.com> References: <20260707181529.60191-1-philmd@oss.qualcomm.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Proofpoint-GUID: AVrZ2LKebaXi2_meqGXGfgwq_UzawjlE X-Proofpoint-ORIG-GUID: AVrZ2LKebaXi2_meqGXGfgwq_UzawjlE X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzA3MDE3OSBTYWx0ZWRfX5KmCYEEtNYOu RRrQY6dGwlmP9SJi/tKHCYOF7W84HbZuz2fcYe5AZJWY2mGR3M5S7nj5lkOZK7N9/B69MYlU+q6 9QCxyBvz4ifUYUWdi9DMlUoqnvcSchavDOf+vIef+NqoZXhXlko1R/6SjTqZPZiLyQogna/0l76 6HZusXb9C8IRUnrDGodJCf1Aofo4DOGAZCV2MNLfVufZieuzVXKHFjWK4fI+SG6X2eC5JXSa/N+ P9IKKbXJjf3yPnH1rag+yVasJGtYLl7l4Jl7m/ODo2sLamj20GBmwO4C8G4KJHwjzHBqVBuwV2J nw3miEKCXqGlIx3w06vZD6GhabXVpvWH+cqFQktoP9lmwubgGZ28Ys5f5AcWSikksbh6ONul0Pe VxG639LUrecP/N1/JLPM3cjC/TKvaUV6P13NsE1A1QuGgAxTVC8f8hPHO0h3QS9U6Zx96VICdrY kmcfIJdPyFVcP6SSUbw== X-Proofpoint-Spam-Info: AW1haW4tMjYwNzA3MDE3OSBTYWx0ZWRfXw+GbdpFJnWAx OPW3IOUsrRCt7hplQV9EiQfUNYIt1m+TWKAX0BPE7E9SSOFnjKINS+wL+P3Gn9D58VWw+py1t9T XTBx2zPxKdL59lmwz4l6Rei0UBG8s58= X-Authority-Analysis: v=2.4 cv=atSCzyZV c=1 sm=1 tr=0 ts=6a4d426d cx=c_pps a=WeENfcodrlLV9YRTxbY/uA==:117 a=4s3hRJSeHn4rkQlkrse1kQ==:17 a=IkcTkHD0fZMA:10 a=RAioF0-LDSMA:10 a=M51BFTxLslgA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=yOCtJkima9RkubShWh1s:22 a=pGLkceISAAAA:8 a=EUspDBNiAAAA:8 a=Y2HmZ-R4G0JYE2J3qnkA:9 a=3ZKOabzyN94A:10 a=QEXdDO2ut3YA:10 a=kacYvNCVWA4VmyqE58fU:22 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-07-07_04,2026-07-06_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 malwarescore=0 phishscore=0 clxscore=1015 priorityscore=1501 spamscore=0 suspectscore=0 lowpriorityscore=0 bulkscore=0 impostorscore=0 adultscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607070179 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=205.220.168.131; envelope-from=philmd@oss.qualcomm.com; helo=mx0a-0031df01.pphosted.com X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 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_LOW=-0.7, 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 @qualcomm.com) X-ZM-MESSAGEID: 1783448250068158500 From: James Hilliard Add the Octeon SHA3 helper operations for the architectural 25-lane Keccak state view and implement the Keccak-f[1600] permutation used by the STARTOP selector. The simple SHA3 DAT register moves and XORDAT selectors are decoded as direct TCG transfers in the selector decode patch. This helper patch only keeps the side-effecting SHA3 operation support. Signed-off-by: James Hilliard Message-ID: <20260608-mips-octeon-missing-insns-v2-v16-5-daef7a0d8b04@gmail= .com> Signed-off-by: Philippe Mathieu-Daud=C3=A9 --- target/mips/helper.h | 1 + target/mips/tcg/octeon_crypto.c | 93 +++++++++++++++++++++++++++++++++ 2 files changed, 94 insertions(+) diff --git a/target/mips/helper.h b/target/mips/helper.h index 20ffbfb7096..b887e05199a 100644 --- a/target/mips/helper.h +++ b/target/mips/helper.h @@ -47,6 +47,7 @@ DEF_HELPER_2(octeon_cp2_mt_gfm_mul_reflect1, void, env, i= 64) DEF_HELPER_2(octeon_cp2_mt_gfm_xor0_reflect, void, env, i64) DEF_HELPER_2(octeon_cp2_mt_gfm_xormul1_reflect, void, env, i64) DEF_HELPER_2(octeon_cp2_mt_gfm_xormul1, void, env, i64) +DEF_HELPER_1(octeon_cp2_mt_sha3_startop, void, env) =20 /* microMIPS functions */ DEF_HELPER_4(lwm, void, env, tl, tl, i32) diff --git a/target/mips/tcg/octeon_crypto.c b/target/mips/tcg/octeon_crypt= o.c index b417dcf53b6..cf718d64829 100644 --- a/target/mips/tcg/octeon_crypto.c +++ b/target/mips/tcg/octeon_crypto.c @@ -153,6 +153,94 @@ static void octeon_gfm_mul64_uia2(const uint64_t x[2],= const uint64_t y[2], out[1] =3D revbit64(res); } =20 +static const uint64_t octeon_sha3_round_constants[24] =3D { + 0x0000000000000001ULL, 0x0000000000008082ULL, + 0x800000000000808aULL, 0x8000000080008000ULL, + 0x000000000000808bULL, 0x0000000080000001ULL, + 0x8000000080008081ULL, 0x8000000000008009ULL, + 0x000000000000008aULL, 0x0000000000000088ULL, + 0x0000000080008009ULL, 0x000000008000000aULL, + 0x000000008000808bULL, 0x800000000000008bULL, + 0x8000000000008089ULL, 0x8000000000008003ULL, + 0x8000000000008002ULL, 0x8000000000000080ULL, + 0x000000000000800aULL, 0x800000008000000aULL, + 0x8000000080008081ULL, 0x8000000000008080ULL, + 0x0000000080000001ULL, 0x8000000080008008ULL, +}; + +static const uint8_t octeon_sha3_rotation_constants[24] =3D { + 1, 3, 6, 10, 15, 21, 28, 36, 45, 55, 2, 14, + 27, 41, 56, 8, 25, 43, 62, 18, 39, 61, 20, 44, +}; + +static const uint8_t octeon_sha3_pi_lanes[24] =3D { + 10, 7, 11, 17, 18, 3, 5, 16, 8, 21, 24, 4, + 15, 23, 19, 13, 12, 2, 20, 14, 22, 9, 6, 1, +}; + +static uint64_t octeon_sha3_reg_to_lane(uint64_t value) +{ + /* + * The COP2 register interface is consumed by big-endian MIPS code as + * 64-bit register values, while Keccak lanes are byte-little-endian. + */ + return bswap64(value); +} + +static uint64_t octeon_sha3_lane_to_reg(uint64_t value) +{ + return bswap64(value); +} + +static void octeon_sha3_permute(MIPSOcteonCryptoState *crypto) +{ + uint64_t state[25]; + + for (int i =3D 0; i < 25; i++) { + state[i] =3D octeon_sha3_reg_to_lane(crypto->sha3_dat[i]); + } + + for (int round =3D 0; round < 24; round++) { + uint64_t bc[5]; + uint64_t temp; + + for (int x =3D 0; x < 5; x++) { + bc[x] =3D state[x] ^ state[5 + x] ^ state[10 + x] ^ + state[15 + x] ^ state[20 + x]; + } + for (int x =3D 0; x < 5; x++) { + temp =3D bc[(x + 4) % 5] ^ rol64(bc[(x + 1) % 5], 1); + for (int y =3D 0; y < 25; y +=3D 5) { + state[y + x] ^=3D temp; + } + } + + temp =3D state[1]; + for (int i =3D 0; i < 24; i++) { + uint64_t next =3D state[octeon_sha3_pi_lanes[i]]; + + state[octeon_sha3_pi_lanes[i]] =3D + rol64(temp, octeon_sha3_rotation_constants[i]); + temp =3D next; + } + + for (int y =3D 0; y < 25; y +=3D 5) { + for (int x =3D 0; x < 5; x++) { + bc[x] =3D state[y + x]; + } + for (int x =3D 0; x < 5; x++) { + state[y + x] =3D bc[x] ^ ((~bc[(x + 1) % 5]) & bc[(x + 2) = % 5]); + } + } + + state[0] ^=3D octeon_sha3_round_constants[round]; + } + + for (int i =3D 0; i < 25; i++) { + crypto->sha3_dat[i] =3D octeon_sha3_lane_to_reg(state[i]); + } +} + uint64_t helper_octeon_cp2_mf_crc_iv_reflect(CPUMIPSState *env) { return octeon_crc_reflect32_by_byte(env->octeon_crypto.crc_iv); @@ -222,6 +310,11 @@ void helper_octeon_cp2_mt_gfm_xormul1(CPUMIPSState *en= v, uint64_t value) octeon_gfm_xormul1_common(crypto, value); } =20 +void helper_octeon_cp2_mt_sha3_startop(CPUMIPSState *env) +{ + octeon_sha3_permute(&env->octeon_crypto); +} + void helper_octeon_cp2_mt_crc_write_iv_reflect(CPUMIPSState *env, uint64_t value) { --=20 2.53.0 From nobody Sun Jul 26 10:07:33 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=reject dis=none) header.from=oss.qualcomm.com ARC-Seal: i=1; a=rsa-sha256; t=1783448224; cv=none; d=zohomail.com; s=zohoarc; b=IhpORBkp5HyivtSjE/luyUOsNuv0672JdCtrc5w9kIc0uWA0Bytwa8IoRkSECgPPHTCpsL+n3h2wQfIgRtVYgq0q13BUmqt9MlzQ63daKUyP6GupkonNpCC9cszDDO7syFqyryR8aBh845g9KbClYIIxgsnSpW27uJoPM3vsIBg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783448224; h=Content-Type:Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=KVatRpgtO+1UI6qqTMISE+yuOb932Sbn64LG4a5K1mU=; b=Rx+E+gJuoghho805pBS0/r3bBR9ygkdRlp0cL2VxgZMqN7jxaNFZMr0InHPzNSfo8OJW17eT1aXRkyn3SIkdehGbOlztp1/RXNe3lNy7gDJNaluVl60vkrh3ILTAZ1w8kz+PI7XIW+tix02wps6I36GqGA6wJNVZatj6kqpDlew= 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=reject dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1783448224973134.4050947704061; Tue, 7 Jul 2026 11:17:04 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1whALZ-00057v-An; Tue, 07 Jul 2026 14:16:46 -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 1whALC-0004kj-Ko for qemu-devel@nongnu.org; Tue, 07 Jul 2026 14:16:18 -0400 Received: from mx0b-0031df01.pphosted.com ([205.220.180.131]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1whALA-0006Mt-BS for qemu-devel@nongnu.org; Tue, 07 Jul 2026 14:16:18 -0400 Received: from pps.filterd (m0279871.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 667FTMst011774 for ; Tue, 7 Jul 2026 18:16:15 GMT Received: from mail-qt1-f200.google.com (mail-qt1-f200.google.com [209.85.160.200]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4f8vdjawuq-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Tue, 07 Jul 2026 18:16:15 +0000 (GMT) Received: by mail-qt1-f200.google.com with SMTP id d75a77b69052e-51c01ff996dso60149311cf.2 for ; Tue, 07 Jul 2026 11:16: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-493e0f5b811sm116852395e9.13.2026.07.07.11.16.12 for (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Tue, 07 Jul 2026 11:16:12 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= KVatRpgtO+1UI6qqTMISE+yuOb932Sbn64LG4a5K1mU=; b=NkNAftmQVjySSgfN yCLC6dyXen+TTID5hJEs5Tj4rzmDn3dXstvkjCX/rhScx3A91jS2SmrffpH/v6VS YNRLWiZePORIIOxMSxSor42oPz6uov7+kJ3oZK6S9WvrvSc7WozfeXUY+C6bsSWI tO5oRZfq+2em6xRW/PdxzwS38b98PD9iiJwlgm7ojD8sJHhRAd677LSSrwVlkalw MEPykvjavc6pUSOU/qn+IMwAzKuvWnTbxDjsnjsgd+9JqpRD9Rjf5j1It7r0tWhd dHTliysnjeaRkHcixelW9I55C6niyDXjXbVsBOAK6s5OA2aOJd9OVKD+i4KpWBXI usBibw== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1783448174; x=1784052974; darn=nongnu.org; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=KVatRpgtO+1UI6qqTMISE+yuOb932Sbn64LG4a5K1mU=; b=Eih1XKuufPjPwzafbzP+AKt4ajbu4RfJO+F3ptfnlE9W/sEHmFN/mYT2uNxzt8QxgM E44wYCVjdlVRduWhD+8rzso283hYEudz6TV7Wo5oBZ5Su8ICXhxc40eV2aHHRqFz6U/0 DcptWi32Tvib4NwhYpFZUArCr50NTiaF8rniRlhHbrs/kJ+hSbwy11hilFPdAFfPPWl2 BWwtLMNoUv66fd3yl/d4rgTUlbkocfLWazD3QnXl+flAj/4yBOt5RMRCwqUpLA+i+Hsx kY6/+5gF0SfOdSXBZ2xjqDXfIxbXFYKTOLaQcYumIIsjEsErEfbpUot7maEFNK5f3lbZ EG6A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783448174; x=1784052974; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:to:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=KVatRpgtO+1UI6qqTMISE+yuOb932Sbn64LG4a5K1mU=; b=Czsun7G3u79k2SgZ8JF7PuqxzQ6lxGal4Xh7NAmZCjF7KSq/wTHWqTmqo1UxyflOF2 KPDvrIvDR+t9TP6aMLDi4ol9I/nb5BrI/TSuaOWEBiocKUB3V2MiTMrnyWw09kUlXdUZ ebdet/tSqTZX7UABSfykebnodvYZTDGF/Zl6HmAfrQgfWOh2rYgj/SrBacDDuN+CzsDm YXWGepGny+nstJyk5iQvJLHqwmKkk9pQgTR4z8CxBW5PlkJkGReF9lJp1mOPmA+1ll95 PYacEIx4+aNiy2EiOMr3VGUV7sM5/gZRz6TPp3fF2ngdto/wN7jeBYg6wICclOk6VdBp j+4g== X-Gm-Message-State: AOJu0Yx4LpUrRQeN5qFmgOKQCK0+HYgKpfoRKAWddozRF7yYaaBAk0EU Q1xUJg9PRHZirmZZDGqj4MGCM29O35HSamC1oAbUSU/8vXlyysb/9xCy8ET/F5iG1jZGktwMlyG ZNt+4PZYxZx1gC2+LdguUWXAz0DJdNfEAEPQGNOiliB9z0u+mhZzH0ULa2cbZQq4ZCA== X-Gm-Gg: AfdE7cl44CNqzG9h+ZqBxQff+gviqDs8bua+RV9pC+816PvM0490nsjaQK8Phsadel9 YNjcCujk3FRIojPZqgDP3/EOFW+fY9T4MdiLng+uc0YKhl+tdKpQ/V90kCuXzEIZLPvh8BtMZ8v nWb8SrUEFTA61LOuSrfIV+/Kji4Ovd619xQBZmGRA336D5RnWSx4rfBfqIUrpe4F4lbssXsvpJs 3zaD1iSpp/JxOOPj6B6O79pgmY7kd21I84IUP284t94idB9xeC0rfjV7U3GKIOlTVbZ85M5szue ZQpV42+wLAxbZTUlmfQSEYu+l/TrbiYOEnAu3E3bAFx2Ss/x36a0wXU6hIw+4Dm1cvML0biNPca ZNlWL/SG4uLLj8XlgZqXrCgI2w1AMmgUSspyKoXQRPPmN498jS31iiGIUJXc9NOTCJsZb X-Received: by 2002:a05:622a:1194:b0:51c:c97:f3b0 with SMTP id d75a77b69052e-51c748af0e3mr65755991cf.63.1783448174291; Tue, 07 Jul 2026 11:16:14 -0700 (PDT) X-Received: by 2002:a05:622a:1194:b0:51c:c97:f3b0 with SMTP id d75a77b69052e-51c748af0e3mr65755241cf.63.1783448173445; Tue, 07 Jul 2026 11:16:13 -0700 (PDT) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Subject: [PULL 06/23] target/mips: add Octeon ZUC COP2 helpers Date: Tue, 7 Jul 2026 20:15:11 +0200 Message-ID: <20260707181529.60191-7-philmd@oss.qualcomm.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260707181529.60191-1-philmd@oss.qualcomm.com> References: <20260707181529.60191-1-philmd@oss.qualcomm.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Authority-Analysis: v=2.4 cv=R7cz39RX c=1 sm=1 tr=0 ts=6a4d426f cx=c_pps a=JbAStetqSzwMeJznSMzCyw==:117 a=4s3hRJSeHn4rkQlkrse1kQ==:17 a=IkcTkHD0fZMA:10 a=RAioF0-LDSMA:10 a=M51BFTxLslgA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=3WHJM1ZQz_JShphwDgj5:22 a=pGLkceISAAAA:8 a=EUspDBNiAAAA:8 a=AUozeWMskNeGgjpE_QQA:9 a=3ZKOabzyN94A:10 a=QEXdDO2ut3YA:10 a=uxP6HrT_eTzRwkO_Te1X:22 X-Proofpoint-GUID: 9YGQfATDgSjP5t0w2eBPtOEHOmi_8uvE X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzA3MDE3OSBTYWx0ZWRfX1CotLLDsK2ya 3A5mmiRVR5wAFxCqgGnlxRxX8RGZl3lV9PHtzfDrExkkMgHfDoIoyDzQMfJR3jax6n4SeASC46b ROaNlUcAYHeOScaTuCsTRqgVoEze3e0vuFI7YIjZ/Zn6nL3Js1EezvkDcPL/wXrnciJ9yF9AGGQ 8l1bSgbsAmDVQJrkxlyhnMnikxFk7+OyCUqLATmOh29Wjs4uVcRLyRvCjmD75uGZt3J/Z7gFoVS iNl1+5KFB5hog/xC4GtLk1XT1mqUqxf8DXWHzZfqbXeEzMyoQNTcf3TQae63q7oDeAeP4nRBnsq fEV8JZqCP0IY1OgPLdXcnZcj3cAS/0HRMYZEt3iPXsGmXItsJAnlqJl3p4cqlELUOsbL+tGZRLC 0ZZfo4Dsnp9k7LlPOQax+GwSAuHY3VNG+wKoWO+Cuc+Y0GusuVExwmObZ/Q5KUj4Fy9/XCH8ciN Iwb0o0lz+j+JrVYUIsw== X-Proofpoint-ORIG-GUID: 9YGQfATDgSjP5t0w2eBPtOEHOmi_8uvE X-Proofpoint-Spam-Info: AW1haW4tMjYwNzA3MDE3OSBTYWx0ZWRfX4kxxFRaO7CSx sbShBql6DLao7HrJryb0cFD6QLBT68fudARIFxKNf5t5Ye726lS8Qh2hwQmjk45suKf5yKbEAFE LeyiDnduSMhY/P/C5/ka3fY8rT1o7eA= X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-07-07_04,2026-07-06_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 adultscore=0 lowpriorityscore=0 impostorscore=0 clxscore=1015 malwarescore=0 bulkscore=0 spamscore=0 priorityscore=1501 phishscore=0 suspectscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607070179 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=205.220.180.131; envelope-from=philmd@oss.qualcomm.com; helo=mx0b-0031df01.pphosted.com X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 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_LOW=-0.7, 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 @qualcomm.com) X-ZM-MESSAGEID: 1783448225847158500 From: James Hilliard Add the Octeon ZUC START and MORE helper operations and model the shared state window used by the hardware interface. This covers the keystream and MAC engine state, including the save-and-restore view that overlaps the HSH/SHA3 bank. Keep the LFSR words in the architectural HSH DAT input registers and the runtime MAC/FSM/result state in the documented HASHIV window. The third MAC lookahead word is generated on demand instead of being kept in a non-architectural shadow slot. Signed-off-by: James Hilliard Message-ID: <20260608-mips-octeon-missing-insns-v2-v16-6-daef7a0d8b04@gmail= .com> Signed-off-by: Philippe Mathieu-Daud=C3=A9 --- target/mips/helper.h | 2 + target/mips/tcg/octeon_crypto.c | 338 ++++++++++++++++++++++++++++++++ 2 files changed, 340 insertions(+) diff --git a/target/mips/helper.h b/target/mips/helper.h index b887e05199a..292336ec629 100644 --- a/target/mips/helper.h +++ b/target/mips/helper.h @@ -48,6 +48,8 @@ DEF_HELPER_2(octeon_cp2_mt_gfm_xor0_reflect, void, env, i= 64) DEF_HELPER_2(octeon_cp2_mt_gfm_xormul1_reflect, void, env, i64) DEF_HELPER_2(octeon_cp2_mt_gfm_xormul1, void, env, i64) DEF_HELPER_1(octeon_cp2_mt_sha3_startop, void, env) +DEF_HELPER_2(octeon_cp2_mt_zuc_start, void, env, i64) +DEF_HELPER_2(octeon_cp2_mt_zuc_more, void, env, i64) =20 /* microMIPS functions */ DEF_HELPER_4(lwm, void, env, tl, tl, i32) diff --git a/target/mips/tcg/octeon_crypto.c b/target/mips/tcg/octeon_crypt= o.c index cf718d64829..548269b9b8f 100644 --- a/target/mips/tcg/octeon_crypto.c +++ b/target/mips/tcg/octeon_crypto.c @@ -241,6 +241,344 @@ static void octeon_sha3_permute(MIPSOcteonCryptoState= *crypto) } } =20 +static uint32_t octeon_crypto_hi32(uint64_t value) +{ + return value >> 32; +} + +static uint32_t octeon_crypto_lo32(uint64_t value) +{ + return value; +} + +static const uint8_t octeon_zuc_s0[256] =3D { + 0x3e, 0x72, 0x5b, 0x47, 0xca, 0xe0, 0x00, 0x33, + 0x04, 0xd1, 0x54, 0x98, 0x09, 0xb9, 0x6d, 0xcb, + 0x7b, 0x1b, 0xf9, 0x32, 0xaf, 0x9d, 0x6a, 0xa5, + 0xb8, 0x2d, 0xfc, 0x1d, 0x08, 0x53, 0x03, 0x90, + 0x4d, 0x4e, 0x84, 0x99, 0xe4, 0xce, 0xd9, 0x91, + 0xdd, 0xb6, 0x85, 0x48, 0x8b, 0x29, 0x6e, 0xac, + 0xcd, 0xc1, 0xf8, 0x1e, 0x73, 0x43, 0x69, 0xc6, + 0xb5, 0xbd, 0xfd, 0x39, 0x63, 0x20, 0xd4, 0x38, + 0x76, 0x7d, 0xb2, 0xa7, 0xcf, 0xed, 0x57, 0xc5, + 0xf3, 0x2c, 0xbb, 0x14, 0x21, 0x06, 0x55, 0x9b, + 0xe3, 0xef, 0x5e, 0x31, 0x4f, 0x7f, 0x5a, 0xa4, + 0x0d, 0x82, 0x51, 0x49, 0x5f, 0xba, 0x58, 0x1c, + 0x4a, 0x16, 0xd5, 0x17, 0xa8, 0x92, 0x24, 0x1f, + 0x8c, 0xff, 0xd8, 0xae, 0x2e, 0x01, 0xd3, 0xad, + 0x3b, 0x4b, 0xda, 0x46, 0xeb, 0xc9, 0xde, 0x9a, + 0x8f, 0x87, 0xd7, 0x3a, 0x80, 0x6f, 0x2f, 0xc8, + 0xb1, 0xb4, 0x37, 0xf7, 0x0a, 0x22, 0x13, 0x28, + 0x7c, 0xcc, 0x3c, 0x89, 0xc7, 0xc3, 0x96, 0x56, + 0x07, 0xbf, 0x7e, 0xf0, 0x0b, 0x2b, 0x97, 0x52, + 0x35, 0x41, 0x79, 0x61, 0xa6, 0x4c, 0x10, 0xfe, + 0xbc, 0x26, 0x95, 0x88, 0x8a, 0xb0, 0xa3, 0xfb, + 0xc0, 0x18, 0x94, 0xf2, 0xe1, 0xe5, 0xe9, 0x5d, + 0xd0, 0xdc, 0x11, 0x66, 0x64, 0x5c, 0xec, 0x59, + 0x42, 0x75, 0x12, 0xf5, 0x74, 0x9c, 0xaa, 0x23, + 0x0e, 0x86, 0xab, 0xbe, 0x2a, 0x02, 0xe7, 0x67, + 0xe6, 0x44, 0xa2, 0x6c, 0xc2, 0x93, 0x9f, 0xf1, + 0xf6, 0xfa, 0x36, 0xd2, 0x50, 0x68, 0x9e, 0x62, + 0x71, 0x15, 0x3d, 0xd6, 0x40, 0xc4, 0xe2, 0x0f, + 0x8e, 0x83, 0x77, 0x6b, 0x25, 0x05, 0x3f, 0x0c, + 0x30, 0xea, 0x70, 0xb7, 0xa1, 0xe8, 0xa9, 0x65, + 0x8d, 0x27, 0x1a, 0xdb, 0x81, 0xb3, 0xa0, 0xf4, + 0x45, 0x7a, 0x19, 0xdf, 0xee, 0x78, 0x34, 0x60, +}; + +static const uint8_t octeon_zuc_s1[256] =3D { + 0x55, 0xc2, 0x63, 0x71, 0x3b, 0xc8, 0x47, 0x86, + 0x9f, 0x3c, 0xda, 0x5b, 0x29, 0xaa, 0xfd, 0x77, + 0x8c, 0xc5, 0x94, 0x0c, 0xa6, 0x1a, 0x13, 0x00, + 0xe3, 0xa8, 0x16, 0x72, 0x40, 0xf9, 0xf8, 0x42, + 0x44, 0x26, 0x68, 0x96, 0x81, 0xd9, 0x45, 0x3e, + 0x10, 0x76, 0xc6, 0xa7, 0x8b, 0x39, 0x43, 0xe1, + 0x3a, 0xb5, 0x56, 0x2a, 0xc0, 0x6d, 0xb3, 0x05, + 0x22, 0x66, 0xbf, 0xdc, 0x0b, 0xfa, 0x62, 0x48, + 0xdd, 0x20, 0x11, 0x06, 0x36, 0xc9, 0xc1, 0xcf, + 0xf6, 0x27, 0x52, 0xbb, 0x69, 0xf5, 0xd4, 0x87, + 0x7f, 0x84, 0x4c, 0xd2, 0x9c, 0x57, 0xa4, 0xbc, + 0x4f, 0x9a, 0xdf, 0xfe, 0xd6, 0x8d, 0x7a, 0xeb, + 0x2b, 0x53, 0xd8, 0x5c, 0xa1, 0x14, 0x17, 0xfb, + 0x23, 0xd5, 0x7d, 0x30, 0x67, 0x73, 0x08, 0x09, + 0xee, 0xb7, 0x70, 0x3f, 0x61, 0xb2, 0x19, 0x8e, + 0x4e, 0xe5, 0x4b, 0x93, 0x8f, 0x5d, 0xdb, 0xa9, + 0xad, 0xf1, 0xae, 0x2e, 0xcb, 0x0d, 0xfc, 0xf4, + 0x2d, 0x46, 0x6e, 0x1d, 0x97, 0xe8, 0xd1, 0xe9, + 0x4d, 0x37, 0xa5, 0x75, 0x5e, 0x83, 0x9e, 0xab, + 0x82, 0x9d, 0xb9, 0x1c, 0xe0, 0xcd, 0x49, 0x89, + 0x01, 0xb6, 0xbd, 0x58, 0x24, 0xa2, 0x5f, 0x38, + 0x78, 0x99, 0x15, 0x90, 0x50, 0xb8, 0x95, 0xe4, + 0xd0, 0x91, 0xc7, 0xce, 0xed, 0x0f, 0xb4, 0x6f, + 0xa0, 0xcc, 0xf0, 0x02, 0x4a, 0x79, 0xc3, 0xde, + 0xa3, 0xef, 0xea, 0x51, 0xe6, 0x6b, 0x18, 0xec, + 0x1b, 0x2c, 0x80, 0xf7, 0x74, 0xe7, 0xff, 0x21, + 0x5a, 0x6a, 0x54, 0x1e, 0x41, 0x31, 0x92, 0x35, + 0xc4, 0x33, 0x07, 0x0a, 0xba, 0x7e, 0x0e, 0x34, + 0x88, 0xb1, 0x98, 0x7c, 0xf3, 0x3d, 0x60, 0x6c, + 0x7b, 0xca, 0xd3, 0x1f, 0x32, 0x65, 0x04, 0x28, + 0x64, 0xbe, 0x85, 0x9b, 0x2f, 0x59, 0x8a, 0xd7, + 0xb0, 0x25, 0xac, 0xaf, 0x12, 0x03, 0xe2, 0xf2, +}; + +static uint32_t octeon_zuc_addm(uint32_t a, uint32_t b) +{ + uint32_t c =3D a + b; + + c =3D (c & 0x7fffffffU) + (c >> 31); + return c ? c : 0x7fffffffU; +} + +static uint32_t octeon_zuc_mul_by_pow2(uint32_t v, unsigned int shift) +{ + return ((v << shift) | (v >> (31 - shift))) & 0x7fffffffU; +} + +static uint32_t octeon_zuc_make_u32(uint8_t a, uint8_t b, uint8_t c, uint8= _t d) +{ + return ((uint32_t)a << 24) | ((uint32_t)b << 16) | + ((uint32_t)c << 8) | d; +} + +static uint64_t octeon_zuc_pack_pair(uint32_t hi, uint32_t lo) +{ + return ((uint64_t)hi << 32) | lo; +} + +static uint32_t octeon_zuc_lfsr(const MIPSOcteonCryptoState *crypto, + unsigned int index) +{ + uint64_t pair =3D crypto->hsh_dat[index / 2]; + + return index & 1 ? octeon_crypto_lo32(pair) : octeon_crypto_hi32(pair); +} + +static void octeon_zuc_set_lfsr(MIPSOcteonCryptoState *crypto, + unsigned int index, uint32_t value) +{ + uint32_t hi =3D octeon_crypto_hi32(crypto->hsh_dat[index / 2]); + uint32_t lo =3D octeon_crypto_lo32(crypto->hsh_dat[index / 2]); + + value &=3D 0x7fffffffU; + if (index & 1) { + lo =3D value; + } else { + hi =3D value; + } + crypto->hsh_dat[index / 2] =3D octeon_zuc_pack_pair(hi, lo); +} + +static uint32_t octeon_zuc_fsm(const MIPSOcteonCryptoState *crypto, + unsigned int index) +{ + g_assert(index < 2); + return crypto->hsh_iv[1 + index]; +} + +static void octeon_zuc_set_fsm(MIPSOcteonCryptoState *crypto, + unsigned int index, uint32_t value) +{ + g_assert(index < 2); + crypto->hsh_iv[1 + index] =3D value; +} + +static uint32_t octeon_zuc_window(const MIPSOcteonCryptoState *crypto, + unsigned int index) +{ + uint64_t pair =3D crypto->hsh_iv[0]; + + switch (index) { + case 0: + return octeon_crypto_hi32(pair); + case 1: + return octeon_crypto_lo32(pair); + default: + g_assert_not_reached(); + } +} + +static void octeon_zuc_set_window_pair(MIPSOcteonCryptoState *crypto, + uint32_t hi, uint32_t lo) +{ + crypto->hsh_iv[0] =3D octeon_zuc_pack_pair(hi, lo); +} + +static uint32_t octeon_zuc_tresult(const MIPSOcteonCryptoState *crypto) +{ + return crypto->hsh_iv[3]; +} + +static void octeon_zuc_set_tresult(MIPSOcteonCryptoState *crypto, + uint32_t value) +{ + crypto->hsh_iv[3] =3D value; +} + +static void octeon_zuc_bit_reorganization(const MIPSOcteonCryptoState *cry= pto, + uint32_t x[4]) +{ + x[0] =3D ((octeon_zuc_lfsr(crypto, 15) & 0x7fff8000U) << 1) | + (octeon_zuc_lfsr(crypto, 14) & 0xffffU); + x[1] =3D ((octeon_zuc_lfsr(crypto, 11) & 0xffffU) << 16) | + (octeon_zuc_lfsr(crypto, 9) >> 15); + x[2] =3D ((octeon_zuc_lfsr(crypto, 7) & 0xffffU) << 16) | + (octeon_zuc_lfsr(crypto, 5) >> 15); + x[3] =3D ((octeon_zuc_lfsr(crypto, 2) & 0xffffU) << 16) | + (octeon_zuc_lfsr(crypto, 0) >> 15); +} + +static uint32_t octeon_zuc_l1(uint32_t x) +{ + return x ^ rol32(x, 2) ^ rol32(x, 10) ^ rol32(x, 18) ^ rol32(x, 24); +} + +static uint32_t octeon_zuc_l2(uint32_t x) +{ + return x ^ rol32(x, 8) ^ rol32(x, 14) ^ rol32(x, 22) ^ rol32(x, 30); +} + +static uint32_t octeon_zuc_f(MIPSOcteonCryptoState *crypto, const uint32_t= x[4]) +{ + uint32_t fsm0 =3D octeon_zuc_fsm(crypto, 0); + uint32_t fsm1 =3D octeon_zuc_fsm(crypto, 1); + uint32_t w =3D (x[0] ^ fsm0) + fsm1; + uint32_t w1 =3D fsm0 + x[1]; + uint32_t w2 =3D fsm1 ^ x[2]; + uint32_t u =3D octeon_zuc_l1((w1 << 16) | (w2 >> 16)); + uint32_t v =3D octeon_zuc_l2((w2 << 16) | (w1 >> 16)); + + octeon_zuc_set_fsm(crypto, 0, + octeon_zuc_make_u32(octeon_zuc_s0[u >> 24], + octeon_zuc_s1[(uint8_t)(u >> 16= )], + octeon_zuc_s0[(uint8_t)(u >> 8)= ], + octeon_zuc_s1[(uint8_t)u])); + octeon_zuc_set_fsm(crypto, 1, + octeon_zuc_make_u32(octeon_zuc_s0[v >> 24], + octeon_zuc_s1[(uint8_t)(v >> 16= )], + octeon_zuc_s0[(uint8_t)(v >> 8)= ], + octeon_zuc_s1[(uint8_t)v])); + return w; +} + +static void octeon_zuc_lfsr_step(MIPSOcteonCryptoState *crypto, + bool init_mode, uint32_t u) +{ + uint32_t lfsr[16]; + uint32_t f; + + for (int i =3D 0; i < 16; i++) { + lfsr[i] =3D octeon_zuc_lfsr(crypto, i); + } + + f =3D lfsr[0]; + f =3D octeon_zuc_addm(f, octeon_zuc_mul_by_pow2(lfsr[0], 8)); + f =3D octeon_zuc_addm(f, octeon_zuc_mul_by_pow2(lfsr[4], 20)); + f =3D octeon_zuc_addm(f, octeon_zuc_mul_by_pow2(lfsr[10], 21)); + f =3D octeon_zuc_addm(f, octeon_zuc_mul_by_pow2(lfsr[13], 17)); + f =3D octeon_zuc_addm(f, octeon_zuc_mul_by_pow2(lfsr[15], 15)); + if (init_mode) { + f =3D octeon_zuc_addm(f, u); + } + + for (int i =3D 0; i < 15; i++) { + octeon_zuc_set_lfsr(crypto, i, lfsr[i + 1]); + } + octeon_zuc_set_lfsr(crypto, 15, f); +} + +static uint32_t octeon_zuc_generate_word(MIPSOcteonCryptoState *crypto) +{ + uint32_t x[4]; + uint32_t z; + + octeon_zuc_bit_reorganization(crypto, x); + z =3D octeon_zuc_f(crypto, x) ^ x[3]; + octeon_zuc_lfsr_step(crypto, false, 0); + return z; +} + +static void octeon_zuc_fill_window_pair(MIPSOcteonCryptoState *crypto) +{ + uint32_t z0 =3D octeon_zuc_generate_word(crypto); + uint32_t z1 =3D octeon_zuc_generate_word(crypto); + + octeon_zuc_set_window_pair(crypto, z0, z1); +} + +static uint32_t +octeon_zuc_window_word(const MIPSOcteonCryptoState *crypto, unsigned int b= it, + uint32_t z2) +{ + if (bit =3D=3D 0) { + return octeon_zuc_window(crypto, 0); + } + if (bit < 32) { + return (octeon_zuc_window(crypto, 0) << bit) | + (octeon_zuc_window(crypto, 1) >> (32 - bit)); + } + if (bit =3D=3D 32) { + return octeon_zuc_window(crypto, 1); + } + return (octeon_zuc_window(crypto, 1) << (bit - 32)) | + (z2 >> (64 - bit)); +} + +static void octeon_zuc_advance_window(MIPSOcteonCryptoState *crypto, + uint32_t z2) +{ + uint32_t z3 =3D octeon_zuc_generate_word(crypto); + + octeon_zuc_set_window_pair(crypto, z2, z3); +} + +static void octeon_zuc_start(MIPSOcteonCryptoState *crypto, uint64_t data) +{ + uint32_t x[4]; + + for (int i =3D 0; i < 14; i++) { + octeon_zuc_set_lfsr(crypto, i, octeon_zuc_lfsr(crypto, i)); + } + octeon_zuc_set_lfsr(crypto, 14, data >> 32); + octeon_zuc_set_lfsr(crypto, 15, data); + octeon_zuc_set_fsm(crypto, 0, 0); + octeon_zuc_set_fsm(crypto, 1, 0); + octeon_zuc_set_tresult(crypto, 0); + + for (int i =3D 0; i < 32; i++) { + octeon_zuc_bit_reorganization(crypto, x); + octeon_zuc_lfsr_step(crypto, true, octeon_zuc_f(crypto, x) >> 1); + } + + octeon_zuc_bit_reorganization(crypto, x); + (void)octeon_zuc_f(crypto, x); + octeon_zuc_lfsr_step(crypto, false, 0); + octeon_zuc_fill_window_pair(crypto); +} + +static void octeon_zuc_more(MIPSOcteonCryptoState *crypto, uint64_t data) +{ + uint32_t t =3D octeon_zuc_tresult(crypto); + uint32_t z2 =3D octeon_zuc_generate_word(crypto); + + for (unsigned int bit =3D 0; bit < 64; bit++) { + if ((data >> (63 - bit)) & 1) { + t ^=3D octeon_zuc_window_word(crypto, bit, z2); + } + } + octeon_zuc_set_tresult(crypto, t); + octeon_zuc_advance_window(crypto, z2); +} + +void helper_octeon_cp2_mt_zuc_start(CPUMIPSState *env, uint64_t value) +{ + octeon_zuc_start(&env->octeon_crypto, value); +} + +void helper_octeon_cp2_mt_zuc_more(CPUMIPSState *env, uint64_t value) +{ + octeon_zuc_more(&env->octeon_crypto, value); +} + uint64_t helper_octeon_cp2_mf_crc_iv_reflect(CPUMIPSState *env) { return octeon_crc_reflect32_by_byte(env->octeon_crypto.crc_iv); --=20 2.53.0 From nobody Sun Jul 26 10:07:33 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=reject dis=none) header.from=oss.qualcomm.com ARC-Seal: i=1; a=rsa-sha256; t=1783448467; cv=none; d=zohomail.com; s=zohoarc; b=gOivpTYUJkQ3Hkbc0GLnoZYYD2F2FZKTWOyRkHjtbHfoG0S/KhHg1V4rUrZTCAg94+vWFi5AaXKcAlj+FBSn0Q/h1wOt9phvpVZpTYThQmUON9skNWN2j04ueK8nslGf8k9IquJZpiLNxN/exomxDQJmHmTulFzB0QauRviYIBY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783448467; h=Content-Type:Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=6Qg8zaS5ttbCRCmRfPwtRufohF5TDIAM5LQDUX2T1kc=; b=BUKXTHjo8HOHMV6GoPEzaNDVpTbkh1mfF7M/4I19TREoCHvBPWvIjBV8sLkgnBG7CcmhJz8vdaRtKxcWVC2brNW2bnJzu1CIQhp1UQuobH2xN+4rj/MNefgCLlPU8B2v6pYg6LFv7rQllvIire5nZqiV8otH0acz988s45I4Eec= 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=reject dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1783448467559366.0320105101421; Tue, 7 Jul 2026 11:21:07 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1whAMK-0005k6-1S; Tue, 07 Jul 2026 14:17:30 -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 1whALO-0004uc-ES for qemu-devel@nongnu.org; Tue, 07 Jul 2026 14:16:36 -0400 Received: from mx0a-0031df01.pphosted.com ([205.220.168.131]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1whALJ-0006O9-OY for qemu-devel@nongnu.org; Tue, 07 Jul 2026 14:16:28 -0400 Received: from pps.filterd (m0279867.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 667FT7uO002266 for ; Tue, 7 Jul 2026 18:16:22 GMT Received: from mail-qv1-f71.google.com (mail-qv1-f71.google.com [209.85.219.71]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4f8ye0j4cb-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Tue, 07 Jul 2026 18:16:22 +0000 (GMT) Received: by mail-qv1-f71.google.com with SMTP id 6a1803df08f44-8ef81cc115cso9178976d6.0 for ; Tue, 07 Jul 2026 11:16:22 -0700 (PDT) Received: from localhost.localdomain (88-187-86-199.subs.proxad.net. [88.187.86.199]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-493e549dcd5sm3154675e9.1.2026.07.07.11.16.19 for (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Tue, 07 Jul 2026 11:16:19 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= 6Qg8zaS5ttbCRCmRfPwtRufohF5TDIAM5LQDUX2T1kc=; b=QClRf9SfR1TOa455 1EyogxBuxE6HHI+Gt0vMTufZaI9Y8TP+4UW04s63QHCGr4efns72Wl3PVk9f3NL9 5XP9stPzsEc/90t968IShqB2iRLoZyBDEBFsya+4WFGdYz0FCALoAJ7GpYCRCFjF em3LeORJ3TjFklnx0JwNHqa7vYdKife68GH+flQtIAlBzVtk5A34mfHgn2lqcfBJ cQorfUHV70oYWlmNv9rL2j6+yeoDii1fK+JX+T5qhMTnGhAWpJv1pUAZ0uKGYcx1 5xeTa9AI+FesXna6umphUEPrKoPFhaA6b+1KLR0UPBm2owhOzxtr2xqLJn5Vtz7+ tBZ5dA== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1783448181; x=1784052981; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=6Qg8zaS5ttbCRCmRfPwtRufohF5TDIAM5LQDUX2T1kc=; b=CJy2kk+gPRSoPYNw95uaqRrNwAEVkb6/rcEhjRXsI3YiHkgtLZSxGdOONVIO8q0KAQ KCKvX7C9Jn6ML3qvuwDiZ7ppsf30ss0JFN7jCEUZ3dV2GpiWs1E4810ReTUXidM88pjq 35acD5thSL2rWZUKbcpAGnGdWTzelFpAAc6Iq4TKPQCsYyZrSBPSou0hzCJTaUy9i/9l TM6d6kTnBlLbAvdXX/q8zOZzYCQZaVIxlgnpdF8ttNG5UFtnr/mzB79jgEdxgJVNYs3n sFzCNUGtMrwGX4g6RR3OVhTwM8B0/+sh/9wOKY20cYeL5WNdhjdgytIVzgWGU0Aym67E VurA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783448181; x=1784052981; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=6Qg8zaS5ttbCRCmRfPwtRufohF5TDIAM5LQDUX2T1kc=; b=Z/CLkeqvTxNXzmXxygwlXbEh7x+vTBn3GuGYvD5+MQBz4K2sCya7B9DU+SHtKWs7BG EbeHUx0Y8LSIVaTSo5UZNTbQNl+Smp5DQ0Mf/mIV/xmYcg2o0tB+4NDs08r5M1JTJgm4 SQftKy8ce8mld9/lCOvoqdrYQQGuZwbYkTJbrUq0FbRbwyLIBx99PHtIB1B5BAH3Exle UCbfLlO2esCAty5kd8i70oq2Dc04rA5vv+plA05Yt5XTTXzh9ekApm0VQEoWhxtqVORJ eH8ZpLf4xZHNZXy+ldSc6ujNXKioPuVfwkxd2UogGjMNHm6f/B+cLosXE100MZkjj2WY nnfQ== X-Gm-Message-State: AOJu0YwyehgaWPhRyPkPvvmAg0RjRLFC7alFAX2NB5LuMZt7fYkNgjdH QaJ3kcHZGAci5Q8WRUsX7+zZCDWp2A1Xko0HoiNgWd+JHWTx9A6OqPwEg9mDcjItsuBZPa19AHh sXHU+/9bwopCj5O7BEDBXJgceJUCetiQEeVfAMYHdUsYQda+JuqX0yc3nzsXv5mYO9A== X-Gm-Gg: AfdE7cmqCI15i6rff+DBu7uwL17sTgLwpPptF3Fnac+ARLD5T0r/w8wuQhB3f+RNXLN zdg4jLf+lPe+aJrAMx+qlSEKaYaHUskS5eNo27sv28uIhYmQAvWKJqeg/I4+bo0t6MC5NI972G1 21eGdwG3damME1YHCDthS83SB+KE/5bWvuQt1vq9rb+sUz40bAOo8lpW6MDz9Oy0kXH2xMxheYh HwEHsMTlBVpPw4/Smk27o/FnSkDh1qPuAA1jlgOuQYMOxoiQUvQPXJGAKpTdsqxVa0JYHksFKoK BHC6rTEmTFWbiIByxO/09DtVr1xfTGrIU1Dd2A7mGWtVsoyVKns5MwzfptBwoV0M/ca16J5u3yX AN7By5b1cLIsyHwR01xMksjTP7xdi12bHs6cgmgFGsJIgjzaSy6n/X2v15lc8uJmtFnKv X-Received: by 2002:a05:622a:650:b0:51a:68df:a644 with SMTP id d75a77b69052e-51c7a46e933mr40956041cf.3.1783448181216; Tue, 07 Jul 2026 11:16:21 -0700 (PDT) X-Received: by 2002:a05:622a:650:b0:51a:68df:a644 with SMTP id d75a77b69052e-51c7a46e933mr40955501cf.3.1783448180530; Tue, 07 Jul 2026 11:16:20 -0700 (PDT) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Subject: [PULL 07/23] target/mips: add Octeon SNOW3G COP2 helpers Date: Tue, 7 Jul 2026 20:15:12 +0200 Message-ID: <20260707181529.60191-8-philmd@oss.qualcomm.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260707181529.60191-1-philmd@oss.qualcomm.com> References: <20260707181529.60191-1-philmd@oss.qualcomm.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Proofpoint-ORIG-GUID: XA1f0Hl4XJ46VpLEEC6kUrvPE_UBXeA6 X-Proofpoint-Spam-Info: AW1haW4tMjYwNzA3MDE3OSBTYWx0ZWRfX/E7DnCrxdq6d z9Uk1Bwoqyc546mMMO9JV7KzY3NIbbJW3vdmwUW+8i+aagFnXammmK/UYmkyAjO5tWBDFPSui22 4u+xrdfLNrFF0Oa1c81WJh7USkCbNZk= X-Authority-Analysis: v=2.4 cv=SZfHsPRu c=1 sm=1 tr=0 ts=6a4d4276 cx=c_pps a=UgVkIMxJMSkC9lv97toC5g==:117 a=4s3hRJSeHn4rkQlkrse1kQ==:17 a=IkcTkHD0fZMA:10 a=RAioF0-LDSMA:10 a=M51BFTxLslgA:10 a=s4-Qcg_JpJYA:10 a=Zc_DtpmQZw8A:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=eoimf2acIAo5FJnRuUoq:22 a=pGLkceISAAAA:8 a=EUspDBNiAAAA:8 a=tEznxa4qMISWzUCv4FkA:9 a=3ZKOabzyN94A:10 a=QEXdDO2ut3YA:10 a=1HOtulTD9v-eNWfpl4qZ:22 X-Proofpoint-GUID: XA1f0Hl4XJ46VpLEEC6kUrvPE_UBXeA6 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzA3MDE3OSBTYWx0ZWRfX4sciyNRIHLgX FLimVecLF+3FTOCy3YZAYAhxkADTDIGO6pZck3nWVzhN0SplmsTJ25vWKVgfF9VKsLIQdB6C4RH vrvlapOb6YWeeXfe3r6yLBTCL/K1lCL0cc/sB1xOCwPMC4xvEKoALMZabU63dX6vydrKja5cuWg RsQljh0BI5WhINESeH42IKp9X8Lj0Vj8u0LFAMDWKE6FgQlcMwudSZMYN6ySyQIut0FZ5mfxrGU bQzkx/4KqRHj2SC8ipi5oQT89qwogqUUI32HDCwcA9+UVue+yxxneQ3foWJRDQ997U185dLL4ff i1IAbePuagxPbFjkbDUGm9FruRrjrXtHm3BeeHwj5TcdsdSwaUje/8xXMgTIfVzGcYRyiMo/zaG IB3j23jWyl1q9fiA19ytLHhjWog6TmzEi0iIVAZJ9rsTHD11GBrFxDHtWZ4KYG/2Lxm6GobFVw+ 7rw7HVK6+j2CQC4DZ5A== X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-07-07_04,2026-07-06_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 impostorscore=0 malwarescore=0 bulkscore=0 spamscore=0 adultscore=0 lowpriorityscore=0 phishscore=0 clxscore=1015 suspectscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607070179 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=205.220.168.131; envelope-from=philmd@oss.qualcomm.com; helo=mx0a-0031df01.pphosted.com X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 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_LOW=-0.7, 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 @qualcomm.com) X-ZM-MESSAGEID: 1783448469467158500 From: James Hilliard Add helper support for the Octeon SNOW3G START and MORE selectors. The engine state and result are represented through the architectural HSH IV and DAT register banks that SNOW3G aliases for save and restore. Signed-off-by: James Hilliard Message-ID: <20260608-mips-octeon-missing-insns-v2-v16-7-daef7a0d8b04@gmail= .com> Signed-off-by: Philippe Mathieu-Daud=C3=A9 --- target/mips/helper.h | 2 + target/mips/tcg/octeon_crypto.c | 282 ++++++++++++++++++++++++++++++++ 2 files changed, 284 insertions(+) diff --git a/target/mips/helper.h b/target/mips/helper.h index 292336ec629..c4e7693df63 100644 --- a/target/mips/helper.h +++ b/target/mips/helper.h @@ -50,6 +50,8 @@ DEF_HELPER_2(octeon_cp2_mt_gfm_xormul1, void, env, i64) DEF_HELPER_1(octeon_cp2_mt_sha3_startop, void, env) DEF_HELPER_2(octeon_cp2_mt_zuc_start, void, env, i64) DEF_HELPER_2(octeon_cp2_mt_zuc_more, void, env, i64) +DEF_HELPER_2(octeon_cp2_mt_snow3g_start, void, env, i64) +DEF_HELPER_2(octeon_cp2_mt_snow3g_more, void, env, i64) =20 /* microMIPS functions */ DEF_HELPER_4(lwm, void, env, tl, tl, i32) diff --git a/target/mips/tcg/octeon_crypto.c b/target/mips/tcg/octeon_crypt= o.c index 548269b9b8f..930a67346ef 100644 --- a/target/mips/tcg/octeon_crypto.c +++ b/target/mips/tcg/octeon_crypto.c @@ -251,6 +251,11 @@ static uint32_t octeon_crypto_lo32(uint64_t value) return value; } =20 +static uint64_t octeon_crypto_pack32(uint32_t hi, uint32_t lo) +{ + return ((uint64_t)hi << 32) | lo; +} + static const uint8_t octeon_zuc_s0[256] =3D { 0x3e, 0x72, 0x5b, 0x47, 0xca, 0xe0, 0x00, 0x33, 0x04, 0xd1, 0x54, 0x98, 0x09, 0xb9, 0x6d, 0xcb, @@ -569,6 +574,283 @@ static void octeon_zuc_more(MIPSOcteonCryptoState *cr= ypto, uint64_t data) octeon_zuc_advance_window(crypto, z2); } =20 +static const uint8_t octeon_snow3g_sr[256] =3D { + 0x63, 0x7c, 0x77, 0x7b, 0xf2, 0x6b, 0x6f, 0xc5, + 0x30, 0x01, 0x67, 0x2b, 0xfe, 0xd7, 0xab, 0x76, + 0xca, 0x82, 0xc9, 0x7d, 0xfa, 0x59, 0x47, 0xf0, + 0xad, 0xd4, 0xa2, 0xaf, 0x9c, 0xa4, 0x72, 0xc0, + 0xb7, 0xfd, 0x93, 0x26, 0x36, 0x3f, 0xf7, 0xcc, + 0x34, 0xa5, 0xe5, 0xf1, 0x71, 0xd8, 0x31, 0x15, + 0x04, 0xc7, 0x23, 0xc3, 0x18, 0x96, 0x05, 0x9a, + 0x07, 0x12, 0x80, 0xe2, 0xeb, 0x27, 0xb2, 0x75, + 0x09, 0x83, 0x2c, 0x1a, 0x1b, 0x6e, 0x5a, 0xa0, + 0x52, 0x3b, 0xd6, 0xb3, 0x29, 0xe3, 0x2f, 0x84, + 0x53, 0xd1, 0x00, 0xed, 0x20, 0xfc, 0xb1, 0x5b, + 0x6a, 0xcb, 0xbe, 0x39, 0x4a, 0x4c, 0x58, 0xcf, + 0xd0, 0xef, 0xaa, 0xfb, 0x43, 0x4d, 0x33, 0x85, + 0x45, 0xf9, 0x02, 0x7f, 0x50, 0x3c, 0x9f, 0xa8, + 0x51, 0xa3, 0x40, 0x8f, 0x92, 0x9d, 0x38, 0xf5, + 0xbc, 0xb6, 0xda, 0x21, 0x10, 0xff, 0xf3, 0xd2, + 0xcd, 0x0c, 0x13, 0xec, 0x5f, 0x97, 0x44, 0x17, + 0xc4, 0xa7, 0x7e, 0x3d, 0x64, 0x5d, 0x19, 0x73, + 0x60, 0x81, 0x4f, 0xdc, 0x22, 0x2a, 0x90, 0x88, + 0x46, 0xee, 0xb8, 0x14, 0xde, 0x5e, 0x0b, 0xdb, + 0xe0, 0x32, 0x3a, 0x0a, 0x49, 0x06, 0x24, 0x5c, + 0xc2, 0xd3, 0xac, 0x62, 0x91, 0x95, 0xe4, 0x79, + 0xe7, 0xc8, 0x37, 0x6d, 0x8d, 0xd5, 0x4e, 0xa9, + 0x6c, 0x56, 0xf4, 0xea, 0x65, 0x7a, 0xae, 0x08, + 0xba, 0x78, 0x25, 0x2e, 0x1c, 0xa6, 0xb4, 0xc6, + 0xe8, 0xdd, 0x74, 0x1f, 0x4b, 0xbd, 0x8b, 0x8a, + 0x70, 0x3e, 0xb5, 0x66, 0x48, 0x03, 0xf6, 0x0e, + 0x61, 0x35, 0x57, 0xb9, 0x86, 0xc1, 0x1d, 0x9e, + 0xe1, 0xf8, 0x98, 0x11, 0x69, 0xd9, 0x8e, 0x94, + 0x9b, 0x1e, 0x87, 0xe9, 0xce, 0x55, 0x28, 0xdf, + 0x8c, 0xa1, 0x89, 0x0d, 0xbf, 0xe6, 0x42, 0x68, + 0x41, 0x99, 0x2d, 0x0f, 0xb0, 0x54, 0xbb, 0x16, +}; + +static const uint8_t octeon_snow3g_sq[256] =3D { + 0x25, 0x24, 0x73, 0x67, 0xd7, 0xae, 0x5c, 0x30, + 0xa4, 0xee, 0x6e, 0xcb, 0x7d, 0xb5, 0x82, 0xdb, + 0xe4, 0x8e, 0x48, 0x49, 0x4f, 0x5d, 0x6a, 0x78, + 0x70, 0x88, 0xe8, 0x5f, 0x5e, 0x84, 0x65, 0xe2, + 0xd8, 0xe9, 0xcc, 0xed, 0x40, 0x2f, 0x11, 0x28, + 0x57, 0xd2, 0xac, 0xe3, 0x4a, 0x15, 0x1b, 0xb9, + 0xb2, 0x80, 0x85, 0xa6, 0x2e, 0x02, 0x47, 0x29, + 0x07, 0x4b, 0x0e, 0xc1, 0x51, 0xaa, 0x89, 0xd4, + 0xca, 0x01, 0x46, 0xb3, 0xef, 0xdd, 0x44, 0x7b, + 0xc2, 0x7f, 0xbe, 0xc3, 0x9f, 0x20, 0x4c, 0x64, + 0x83, 0xa2, 0x68, 0x42, 0x13, 0xb4, 0x41, 0xcd, + 0xba, 0xc6, 0xbb, 0x6d, 0x4d, 0x71, 0x21, 0xf4, + 0x8d, 0xb0, 0xe5, 0x93, 0xfe, 0x8f, 0xe6, 0xcf, + 0x43, 0x45, 0x31, 0x22, 0x37, 0x36, 0x96, 0xfa, + 0xbc, 0x0f, 0x08, 0x52, 0x1d, 0x55, 0x1a, 0xc5, + 0x4e, 0x23, 0x69, 0x7a, 0x92, 0xff, 0x5b, 0x5a, + 0xeb, 0x9a, 0x1c, 0xa9, 0xd1, 0x7e, 0x0d, 0xfc, + 0x50, 0x8a, 0xb6, 0x62, 0xf5, 0x0a, 0xf8, 0xdc, + 0x03, 0x3c, 0x0c, 0x39, 0xf1, 0xb8, 0xf3, 0x3d, + 0xf2, 0xd5, 0x97, 0x66, 0x81, 0x32, 0xa0, 0x00, + 0x06, 0xce, 0xf6, 0xea, 0xb7, 0x17, 0xf7, 0x8c, + 0x79, 0xd6, 0xa7, 0xbf, 0x8b, 0x3f, 0x1f, 0x53, + 0x63, 0x75, 0x35, 0x2c, 0x60, 0xfd, 0x27, 0xd3, + 0x94, 0xa5, 0x7c, 0xa1, 0x05, 0x58, 0x2d, 0xbd, + 0xd9, 0xc7, 0xaf, 0x6b, 0x54, 0x0b, 0xe0, 0x38, + 0x04, 0xc8, 0x9d, 0xe7, 0x14, 0xb1, 0x87, 0x9c, + 0xdf, 0x6f, 0xf9, 0xda, 0x2a, 0xc4, 0x59, 0x16, + 0x74, 0x91, 0xab, 0x26, 0x61, 0x76, 0x34, 0x2b, + 0xad, 0x99, 0xfb, 0x72, 0xec, 0x33, 0x12, 0xde, + 0x98, 0x3b, 0xc0, 0x9b, 0x3e, 0x18, 0x10, 0x3a, + 0x56, 0xe1, 0x77, 0xc9, 0x1e, 0x9e, 0x95, 0xa3, + 0x90, 0x19, 0xa8, 0x6c, 0x09, 0xd0, 0xf0, 0x86, +}; + +static uint8_t octeon_snow3g_mulx(uint8_t v, uint8_t c) +{ + return (v & 0x80) ? ((v << 1) ^ c) : (v << 1); +} + +static uint8_t octeon_snow3g_mulxpow(uint8_t v, unsigned int n, uint8_t c) +{ + while (n-- > 0) { + v =3D octeon_snow3g_mulx(v, c); + } + return v; +} + +static uint32_t octeon_snow3g_pack32(uint8_t b0, uint8_t b1, + uint8_t b2, uint8_t b3) +{ + return ((uint32_t)b0 << 24) + | ((uint32_t)b1 << 16) + | ((uint32_t)b2 << 8) + | b3; +} + +static uint32_t octeon_snow3g_mulalpha(uint8_t c) +{ + return octeon_snow3g_pack32(octeon_snow3g_mulxpow(c, 23, 0xa9), + octeon_snow3g_mulxpow(c, 245, 0xa9), + octeon_snow3g_mulxpow(c, 48, 0xa9), + octeon_snow3g_mulxpow(c, 239, 0xa9)); +} + +static uint32_t octeon_snow3g_divalpha(uint8_t c) +{ + return octeon_snow3g_pack32(octeon_snow3g_mulxpow(c, 16, 0xa9), + octeon_snow3g_mulxpow(c, 39, 0xa9), + octeon_snow3g_mulxpow(c, 6, 0xa9), + octeon_snow3g_mulxpow(c, 64, 0xa9)); +} + +static uint32_t octeon_snow3g_s1(uint32_t w) +{ + uint8_t x0 =3D octeon_snow3g_sr[w >> 24]; + uint8_t x1 =3D octeon_snow3g_sr[(uint8_t)(w >> 16)]; + uint8_t x2 =3D octeon_snow3g_sr[(uint8_t)(w >> 8)]; + uint8_t x3 =3D octeon_snow3g_sr[(uint8_t)w]; + uint8_t r0 =3D octeon_snow3g_mulx(x0, 0x1b) ^ x1 ^ x2 ^ + octeon_snow3g_mulx(x3, 0x1b) ^ x3; + uint8_t r1 =3D octeon_snow3g_mulx(x0, 0x1b) ^ x0 ^ + octeon_snow3g_mulx(x1, 0x1b) ^ x2 ^ x3; + uint8_t r2 =3D x0 ^ octeon_snow3g_mulx(x1, 0x1b) ^ x1 ^ + octeon_snow3g_mulx(x2, 0x1b) ^ x3; + uint8_t r3 =3D x0 ^ x1 ^ octeon_snow3g_mulx(x2, 0x1b) ^ x2 ^ + octeon_snow3g_mulx(x3, 0x1b); + + return octeon_snow3g_pack32(r0, r1, r2, r3); +} + +static uint32_t octeon_snow3g_s2(uint32_t w) +{ + uint8_t x0 =3D octeon_snow3g_sq[w >> 24]; + uint8_t x1 =3D octeon_snow3g_sq[(uint8_t)(w >> 16)]; + uint8_t x2 =3D octeon_snow3g_sq[(uint8_t)(w >> 8)]; + uint8_t x3 =3D octeon_snow3g_sq[(uint8_t)w]; + uint8_t r0 =3D octeon_snow3g_mulx(x0, 0x69) ^ x1 ^ x2 ^ + octeon_snow3g_mulx(x3, 0x69) ^ x3; + uint8_t r1 =3D octeon_snow3g_mulx(x0, 0x69) ^ x0 ^ + octeon_snow3g_mulx(x1, 0x69) ^ x2 ^ x3; + uint8_t r2 =3D x0 ^ octeon_snow3g_mulx(x1, 0x69) ^ x1 ^ + octeon_snow3g_mulx(x2, 0x69) ^ x3; + uint8_t r3 =3D x0 ^ x1 ^ octeon_snow3g_mulx(x2, 0x69) ^ x2 ^ + octeon_snow3g_mulx(x3, 0x69); + + return octeon_snow3g_pack32(r0, r1, r2, r3); +} + +static uint32_t octeon_snow3g_lfsr(const MIPSOcteonCryptoState *crypto, + unsigned int index) +{ + uint64_t pair =3D crypto->hsh_dat[index / 2]; + + return index & 1 ? octeon_crypto_lo32(pair) : octeon_crypto_hi32(pair); +} + +static void octeon_snow3g_set_lfsr(MIPSOcteonCryptoState *crypto, + unsigned int index, uint32_t value) +{ + uint32_t hi =3D octeon_crypto_hi32(crypto->hsh_dat[index / 2]); + uint32_t lo =3D octeon_crypto_lo32(crypto->hsh_dat[index / 2]); + + if (index & 1) { + lo =3D value; + } else { + hi =3D value; + } + crypto->hsh_dat[index / 2] =3D octeon_crypto_pack32(hi, lo); +} + +static uint32_t octeon_snow3g_fsm(const MIPSOcteonCryptoState *crypto, + unsigned int index) +{ + return crypto->hsh_iv[1 + index]; +} + +static void octeon_snow3g_set_fsm(MIPSOcteonCryptoState *crypto, + unsigned int index, uint32_t value) +{ + crypto->hsh_iv[1 + index] =3D value; +} + +static uint32_t octeon_snow3g_clock_fsm(MIPSOcteonCryptoState *crypto) +{ + uint32_t fsm0 =3D octeon_snow3g_fsm(crypto, 0); + uint32_t fsm1 =3D octeon_snow3g_fsm(crypto, 1); + uint32_t fsm2 =3D octeon_snow3g_fsm(crypto, 2); + uint32_t f =3D (uint32_t)(octeon_snow3g_lfsr(crypto, 15) + fsm0) ^ fsm= 1; + uint32_t r =3D (uint32_t)(fsm1 + (fsm2 ^ octeon_snow3g_lfsr(crypto, 5)= )); + + octeon_snow3g_set_fsm(crypto, 2, octeon_snow3g_s2(fsm1)); + octeon_snow3g_set_fsm(crypto, 1, octeon_snow3g_s1(fsm0)); + octeon_snow3g_set_fsm(crypto, 0, r); + return f; +} + +static void octeon_snow3g_clock_lfsr(MIPSOcteonCryptoState *crypto, + bool init_mode, uint32_t f) +{ + uint32_t lfsr[16]; + uint32_t s0; + uint32_t s11; + uint32_t v; + int i; + + for (i =3D 0; i < 16; i++) { + lfsr[i] =3D octeon_snow3g_lfsr(crypto, i); + } + + s0 =3D lfsr[0]; + s11 =3D lfsr[11]; + v =3D (s0 << 8) ^ octeon_snow3g_mulalpha(s0 >> 24) ^ + lfsr[2] ^ (s11 >> 8) ^ octeon_snow3g_divalpha((uint8_t)s11); + + if (init_mode) { + v ^=3D f; + } + + for (i =3D 0; i < 15; i++) { + octeon_snow3g_set_lfsr(crypto, i, lfsr[i + 1]); + } + octeon_snow3g_set_lfsr(crypto, 15, v); +} + +static uint32_t octeon_snow3g_generate_word(MIPSOcteonCryptoState *crypto) +{ + uint32_t f =3D octeon_snow3g_clock_fsm(crypto); + uint32_t z =3D f ^ octeon_snow3g_lfsr(crypto, 0); + + octeon_snow3g_clock_lfsr(crypto, false, 0); + return z; +} + +static void octeon_snow3g_queue_result(MIPSOcteonCryptoState *crypto) +{ + uint32_t z0 =3D octeon_snow3g_generate_word(crypto); + uint32_t z1 =3D octeon_snow3g_generate_word(crypto); + + crypto->hsh_iv[0] =3D octeon_crypto_pack32(z0, z1); +} + +static void octeon_snow3g_start(MIPSOcteonCryptoState *crypto, uint64_t da= ta) +{ + int i; + + for (i =3D 0; i < 14; i++) { + octeon_snow3g_set_lfsr(crypto, i, octeon_snow3g_lfsr(crypto, i)); + } + octeon_snow3g_set_lfsr(crypto, 14, data >> 32); + octeon_snow3g_set_lfsr(crypto, 15, data); + for (i =3D 0; i < 3; i++) { + octeon_snow3g_set_fsm(crypto, i, 0); + } + + for (i =3D 0; i < 32; i++) { + uint32_t f =3D octeon_snow3g_clock_fsm(crypto); + + octeon_snow3g_clock_lfsr(crypto, true, f); + } + + (void)octeon_snow3g_clock_fsm(crypto); + octeon_snow3g_clock_lfsr(crypto, false, 0); + octeon_snow3g_queue_result(crypto); +} + +static void octeon_snow3g_more(MIPSOcteonCryptoState *crypto) +{ + octeon_snow3g_queue_result(crypto); +} + +void helper_octeon_cp2_mt_snow3g_start(CPUMIPSState *env, uint64_t value) +{ + octeon_snow3g_start(&env->octeon_crypto, value); +} + +void helper_octeon_cp2_mt_snow3g_more(CPUMIPSState *env, uint64_t value) +{ + (void)value; + octeon_snow3g_more(&env->octeon_crypto); +} + void helper_octeon_cp2_mt_zuc_start(CPUMIPSState *env, uint64_t value) { octeon_zuc_start(&env->octeon_crypto, value); --=20 2.53.0 From nobody Sun Jul 26 10:07:33 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=reject dis=none) header.from=oss.qualcomm.com ARC-Seal: i=1; a=rsa-sha256; t=1783448467; cv=none; d=zohomail.com; s=zohoarc; b=iOzr2+FXH+1QAUMKDxuyGVOulDoUBer//6Ey7qcUYM2Es8C7QvqhiuZJeHqrnUYWcI9010EnEx2Vo0hpDjzQ9M7uoQqur96s6wLRMmmswuvg7dKOecxWZdw+Xpw6+NfhGGVbRXdXy4vFzr8qu3A4TuWdsyHGvJnb2o3A7vArKbY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783448467; h=Content-Type:Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=GuFm/jE/wf7BKZT68Hx+ZYHvSygRcmivlthYrV4stSk=; b=BmYTXKnx5WRcKc+Xw+Sed7VnNQpfVueyVDX9261LkV2KFKjb0e8PEh+8W6y5dITNxaz0uLBDODYvjgHd93qdDgjSSNuWvQKOK0GmeCtH+oC4ip1OJftUd9LRGKHFz/snC14EFqyJrBEjVzYW/s/k9JX4uPvFeT8lPgNDJtNL/BY= 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=reject dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1783448467955918.2331580157328; Tue, 7 Jul 2026 11:21:07 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1whAMg-0006Nr-5E; Tue, 07 Jul 2026 14:17: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 1whALa-0005B7-4b for qemu-devel@nongnu.org; Tue, 07 Jul 2026 14:16:47 -0400 Received: from mx0a-0031df01.pphosted.com ([205.220.168.131]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1whALU-0006PB-FV for qemu-devel@nongnu.org; Tue, 07 Jul 2026 14:16:39 -0400 Received: from pps.filterd (m0279863.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 667FT8Ep017943 for ; Tue, 7 Jul 2026 18:16:34 GMT Received: from mail-qt1-f200.google.com (mail-qt1-f200.google.com [209.85.160.200]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4f8wep2nyg-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Tue, 07 Jul 2026 18:16:34 +0000 (GMT) Received: by mail-qt1-f200.google.com with SMTP id d75a77b69052e-51c20762d21so55312131cf.0 for ; Tue, 07 Jul 2026 11:16: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-493e0f294a6sm144099735e9.1.2026.07.07.11.16.26 for (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Tue, 07 Jul 2026 11:16:26 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= GuFm/jE/wf7BKZT68Hx+ZYHvSygRcmivlthYrV4stSk=; b=cC7pvcl8FukgBYth WpA0/grmJCh/pZR03jaGoupnuK04HJuWdVOkA0U2NszwNoaPgSsNcZyNaBPg6tT6 OgmCijV1mAZjdj6HTcvUgce/1KuGArGnSllRco7XGwTsIEnMLPauV4nXRTaEF1ju IzbcSFqLkzB+BHeea13XUw5zLdMoTo+GIxav5pSZT0VBkGHLrQEOFiLLewkJCS0I w1boxXKc6Odr6VFZGwgD6sfspNreSlfoRGlXge99i4E7Lle53ktrOMXk4CZM7PJp eInDwRFT4Ms4pONdYascBjroTRtSevgSoQGTLMHX1hFq0ZuLPi6GHaPQcoO88gtq acLYOg== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1783448193; x=1784052993; darn=nongnu.org; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=GuFm/jE/wf7BKZT68Hx+ZYHvSygRcmivlthYrV4stSk=; b=aN7ayZn7og5eiHa7wsDS46eaEu2C9BXCS9x96TzH2yJNnkY5li8/53booPlNSo0ElB DbYyEIqjSscgQxT4PYiNA5zpgrS+MSkFj83RhXWdnbfLdIUn1YHtywARNk8CF60Vtxjb l2beM9QHvCTgKvVT51/U8k1AHvv4aDugx77H61tT3OkiAn933rfyJ7ruKsJm9YdSXmrY kJBe6k6TCG3IuxCsO4ZRlQAnil8rIfvsqHJT3ezERhLmRy/5+vkgfKkwpdtneBFvj8Sl Tfpt7Uez30Kwi0xaH7hkGGUNHtSQRaEgAaNhTqI+6OiB5oB/BYnFkj0ta5QhRZCnwqKR DFNA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783448193; x=1784052993; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:to:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=GuFm/jE/wf7BKZT68Hx+ZYHvSygRcmivlthYrV4stSk=; b=QR5m5fBJNcUadeeBnS+ml2HqptiyQ+3SF77S5Ui60CSCKGjUfP2WZgQCMxnLl7sSf4 w4RtLskcElKeNb1nZORbKgJhzvIHSoWEH++qc1eCNLmN6RfgZuJvQZp1hOD/HeJ8nT3M h0d3f99+uzCxQUHHqJmNWxvIecCWqnWGoozVcdSjDVsEFWVdvdm4ct6/TXucB86OOjmF uHeE9+wZzuNyykzwrUEC8mClwbkSw0ycUNcSqZDgHB3t2NUJIkU7DPHBAEYEOkPhWgBw xmsL5xOgBV6+N5/d8BKxl7kqqsKBjIvjT+SNrM8YXICevaXUpfEzbHXiz3Nhp/zKiqj1 XJ8A== X-Gm-Message-State: AOJu0Yze1uOvAjFrPHkg/CTQgvBQbpKZdTSVM6Ujg//YbWicEzX6fAR6 X/Ccfwlcd29/14AMjVEBxz7AwMNS6dwBGX1D/mKtLeHUNntWNyfWtD/YEgfaz9IpAAkL4YNfMiB 16PBcGEslRFyNB+JWTax1E1h925XIttcCqQ+MsbIaPu1DJxH7wkKfoLUz32RFtGrI+g== X-Gm-Gg: AfdE7cnShOqxn32ywG0+Lpodr6K12h1JP62+EA0FqeOWIXpq97Jq0sSp2EirlV2bICY Q8y1j3GcAJer2AZBmlsKTnKnOo7ubwHcovWSTq0av1VeW5ViGG4P1FrHmwWFtDxlO70ZbGKgrqA RNloawBVCGkg+KsOKVjerM/bKbWrjFmpEqjvt0Uc5qh/0cHAZAEaVjIQnx7IyJtD6XZpErbPSgY onbN97MgLxCOM4l2fqNmegj1Ef99/yjoskwBphTFoCGZ6dF7k75s0f608zIiG0Nnzk+tlU8XRuG 7sRkV/yyikMxzj9w7z9piLxgYX9aIDT/Zss192Hu2m1qqX3Nms6fpsuuHeGLWgslgw1dHZkitBO wIjlnXRUvqGcm2uIT8zadmzCvBhVC8kfKr7eLYZhEJ3mUZBMGHOxj6SZS+7VmeNnvRrd7 X-Received: by 2002:ac8:5f4b:0:b0:51c:1d67:379 with SMTP id d75a77b69052e-51c747bb735mr66289221cf.23.1783448193174; Tue, 07 Jul 2026 11:16:33 -0700 (PDT) X-Received: by 2002:ac8:5f4b:0:b0:51c:1d67:379 with SMTP id d75a77b69052e-51c747bb735mr66284331cf.23.1783448187523; Tue, 07 Jul 2026 11:16:27 -0700 (PDT) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Subject: [PULL 08/23] target/mips: add Octeon AES COP2 helpers Date: Tue, 7 Jul 2026 20:15:13 +0200 Message-ID: <20260707181529.60191-9-philmd@oss.qualcomm.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260707181529.60191-1-philmd@oss.qualcomm.com> References: <20260707181529.60191-1-philmd@oss.qualcomm.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Proofpoint-GUID: 7IwV2qpvd1H3S2f6Z4P-ctHcHKBfTLk7 X-Proofpoint-ORIG-GUID: 7IwV2qpvd1H3S2f6Z4P-ctHcHKBfTLk7 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzA3MDE3OSBTYWx0ZWRfX3lemBd2icobe AWu1icfTmxpL436mR7tloJgz5aYvyyO5Lq667frHE/J4aw4HvMP0oRIYkapC44e38A/MH9Mvi0e iIk3k+VfB+/tdBgTeCOmDF+OuEjOfAobPFr81YK3MsQC1pPnbhHVonNBNHStw8eSRQiFJzmUHzM l/uiEnkoznlhlEfESjwYFz8yCG5x1UlC+A2KFHDnxe4CuEcWWLyneT+aRp7q2TvNE3VuBvPlLNh rMDX6Pl4pdgWXh3ImszvWPrmtdTaMr3svWkC2jfj83QTOxyUlvxO6KMUFEz+eRBsUXxAeOBUCal pnHT8yRC8+DMDu1zYkSPd2l83Zcv9ylLfubSHtHx9xcndGJUGI4VWN+j7sbe/DPdC4M3YhqG61F rwx/JJVeNJ0c9jl0Yxcieuy7hjc/Ex75fL3tefxOgBTd0kpye/gec6MuAh0sHjg9LCPQ61jqsEg AqT36nhR1yVubjAqLMQ== X-Proofpoint-Spam-Info: AW1haW4tMjYwNzA3MDE3OSBTYWx0ZWRfX2w9uoa4xeJcB EBdkiU/vjnE9SQHcNDL86Lx3NrIlSdANS41URiUQjwRE0wXPJaU7N9msSgGKrLLT8UGgniZrxv+ aw5RW/yZ2/Yf2Jcrzj8++3orKz2NQFc= X-Authority-Analysis: v=2.4 cv=atSCzyZV c=1 sm=1 tr=0 ts=6a4d4282 cx=c_pps a=JbAStetqSzwMeJznSMzCyw==:117 a=4s3hRJSeHn4rkQlkrse1kQ==:17 a=IkcTkHD0fZMA:10 a=RAioF0-LDSMA:10 a=M51BFTxLslgA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=yOCtJkima9RkubShWh1s:22 a=pGLkceISAAAA:8 a=EUspDBNiAAAA:8 a=EKV_0V3Nn1vJCTxTkoUA:9 a=3ZKOabzyN94A:10 a=QEXdDO2ut3YA:10 a=uxP6HrT_eTzRwkO_Te1X:22 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-07-07_04,2026-07-06_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 malwarescore=0 phishscore=0 clxscore=1015 priorityscore=1501 spamscore=0 suspectscore=0 lowpriorityscore=0 bulkscore=0 impostorscore=0 adultscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607070179 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=205.220.168.131; envelope-from=philmd@oss.qualcomm.com; helo=mx0a-0031df01.pphosted.com X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 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_LOW=-0.7, 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 @qualcomm.com) X-ZM-MESSAGEID: 1783448469543158500 From: James Hilliard Add helper support for the Octeon AES operation selectors. Direct register-transfer selectors do not need helpers; the ECB/CBC encrypt and decrypt operations consume the AES input, key, IV, and key-length state. AESRESINP is modeled as one architectural register bank; operation helpers consume the current AESRESINP block and write the result back to the same bank. Signed-off-by: James Hilliard Message-ID: <20260608-mips-octeon-missing-insns-v2-v16-8-daef7a0d8b04@gmail= .com> Signed-off-by: Philippe Mathieu-Daud=C3=A9 --- target/mips/helper.h | 4 + target/mips/tcg/octeon_crypto.c | 145 ++++++++++++++++++++++++++++++++ 2 files changed, 149 insertions(+) diff --git a/target/mips/helper.h b/target/mips/helper.h index c4e7693df63..39c226ded92 100644 --- a/target/mips/helper.h +++ b/target/mips/helper.h @@ -52,6 +52,10 @@ DEF_HELPER_2(octeon_cp2_mt_zuc_start, void, env, i64) DEF_HELPER_2(octeon_cp2_mt_zuc_more, void, env, i64) DEF_HELPER_2(octeon_cp2_mt_snow3g_start, void, env, i64) DEF_HELPER_2(octeon_cp2_mt_snow3g_more, void, env, i64) +DEF_HELPER_2(octeon_cp2_mt_aes_enc_cbc1, void, env, i64) +DEF_HELPER_2(octeon_cp2_mt_aes_enc1, void, env, i64) +DEF_HELPER_2(octeon_cp2_mt_aes_dec_cbc1, void, env, i64) +DEF_HELPER_2(octeon_cp2_mt_aes_dec1, void, env, i64) =20 /* microMIPS functions */ DEF_HELPER_4(lwm, void, env, tl, tl, i32) diff --git a/target/mips/tcg/octeon_crypto.c b/target/mips/tcg/octeon_crypt= o.c index 930a67346ef..117e3a5026e 100644 --- a/target/mips/tcg/octeon_crypto.c +++ b/target/mips/tcg/octeon_crypto.c @@ -840,6 +840,151 @@ static void octeon_snow3g_more(MIPSOcteonCryptoState = *crypto) octeon_snow3g_queue_result(crypto); } =20 +static int octeon_aes_key_bits(const MIPSOcteonCryptoState *crypto) +{ + enum { + OCTEON_AES_KEYLEN_128 =3D 1, + OCTEON_AES_KEYLEN_192 =3D 2, + OCTEON_AES_KEYLEN_256 =3D 3, + }; + + switch (crypto->aes_keylen) { + case OCTEON_AES_KEYLEN_128: + return 128; + case OCTEON_AES_KEYLEN_192: + return 192; + case OCTEON_AES_KEYLEN_256: + return 256; + default: + return 0; + } +} + +static void octeon_aes_load_key(const MIPSOcteonCryptoState *crypto, + uint8_t *key, size_t keylen) +{ + stq_be_p(key, crypto->aes_key[0]); + stq_be_p(key + 8, crypto->aes_key[1]); + if (keylen > 16) { + stq_be_p(key + 16, crypto->aes_key[2]); + } + if (keylen > 24) { + stq_be_p(key + 24, crypto->aes_key[3]); + } +} + +static void octeon_aes_load_block(const uint64_t regs[2], uint8_t *block) +{ + stq_be_p(block, regs[0]); + stq_be_p(block + 8, regs[1]); +} + +static void octeon_aes_store_block(uint64_t regs[2], const uint8_t *block) +{ + regs[0] =3D ldq_be_p(block); + regs[1] =3D ldq_be_p(block + 8); +} + +static void octeon_aes_encrypt_common(MIPSOcteonCryptoState *crypto, bool = cbc) +{ + AES_KEY key; + uint8_t in[16]; + uint8_t out[16]; + uint8_t iv[16]; + uint8_t raw_key[32] =3D {}; + int bits =3D octeon_aes_key_bits(crypto); + + if (!bits) { + return; + } + + octeon_aes_load_key(crypto, raw_key, bits / 8); + octeon_aes_load_block(crypto->aes_resinp, in); + if (cbc) { + int i; + + octeon_aes_load_block(crypto->aes_iv, iv); + for (i =3D 0; i < sizeof(in); i++) { + in[i] ^=3D iv[i]; + } + } + + AES_set_encrypt_key(raw_key, bits, &key); + AES_encrypt(in, out, &key); + octeon_aes_store_block(crypto->aes_resinp, out); + if (cbc) { + octeon_aes_store_block(crypto->aes_iv, out); + } +} + +static void octeon_aes_decrypt_common(MIPSOcteonCryptoState *crypto, bool = cbc) +{ + AES_KEY key; + uint8_t in[16]; + uint8_t out[16]; + uint8_t iv[16]; + uint8_t next_iv[16]; + uint8_t raw_key[32] =3D {}; + int bits =3D octeon_aes_key_bits(crypto); + int i; + + if (!bits) { + return; + } + + octeon_aes_load_key(crypto, raw_key, bits / 8); + octeon_aes_load_block(crypto->aes_resinp, in); + if (cbc) { + memcpy(next_iv, in, sizeof(next_iv)); + octeon_aes_load_block(crypto->aes_iv, iv); + } + + AES_set_decrypt_key(raw_key, bits, &key); + AES_decrypt(in, out, &key); + if (cbc) { + for (i =3D 0; i < sizeof(out); i++) { + out[i] ^=3D iv[i]; + } + } + + octeon_aes_store_block(crypto->aes_resinp, out); + if (cbc) { + octeon_aes_store_block(crypto->aes_iv, next_iv); + } +} + +void helper_octeon_cp2_mt_aes_enc_cbc1(CPUMIPSState *env, uint64_t value) +{ + MIPSOcteonCryptoState *crypto =3D &env->octeon_crypto; + + crypto->aes_resinp[1] =3D value; + octeon_aes_encrypt_common(crypto, true); +} + +void helper_octeon_cp2_mt_aes_enc1(CPUMIPSState *env, uint64_t value) +{ + MIPSOcteonCryptoState *crypto =3D &env->octeon_crypto; + + crypto->aes_resinp[1] =3D value; + octeon_aes_encrypt_common(crypto, false); +} + +void helper_octeon_cp2_mt_aes_dec_cbc1(CPUMIPSState *env, uint64_t value) +{ + MIPSOcteonCryptoState *crypto =3D &env->octeon_crypto; + + crypto->aes_resinp[1] =3D value; + octeon_aes_decrypt_common(crypto, true); +} + +void helper_octeon_cp2_mt_aes_dec1(CPUMIPSState *env, uint64_t value) +{ + MIPSOcteonCryptoState *crypto =3D &env->octeon_crypto; + + crypto->aes_resinp[1] =3D value; + octeon_aes_decrypt_common(crypto, false); +} + void helper_octeon_cp2_mt_snow3g_start(CPUMIPSState *env, uint64_t value) { octeon_snow3g_start(&env->octeon_crypto, value); --=20 2.53.0 From nobody Sun Jul 26 10:07:33 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=reject dis=none) header.from=oss.qualcomm.com ARC-Seal: i=1; a=rsa-sha256; t=1783448534; cv=none; d=zohomail.com; s=zohoarc; b=D+9sEl+6xq2AAkorexF2KWpYvfijzqRNCVf7qkfQibU5yKUTqbuKPtpcwbSMP1BmPS0o0MoaxA0DSBnVk2fORZ4aVeJL/94TyC0H+DcMTgEDqrXjMiQLN7OJE2Dp1IWJetBFaqe2PdCO95npmhoVuDlIYLtPmBnRjvi+rhyVStU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783448534; h=Content-Type:Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=0xSsbyWYVQowYc1hLq5nR7qvqE9dZIS5qYJuw/rgqQg=; b=VyVq4gmSYRUJkDFOlL02qhp7hTwhD8qnMXTxaxZUCbYnWHHtUi/Yjr1+YLn5wBEMWz34tGpGwNvP/K7mOd28qgEO4a5tVQQCi/llWQmRjnECRwfdDklzBlX00o0JPHtT/ZWTRqazEhu84Sgl1J6PvIHgD1HJeqRkuqfOILwxvis= 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=reject dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1783448534254250.75122782944277; Tue, 7 Jul 2026 11:22:14 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1whAMT-00066x-Ti; Tue, 07 Jul 2026 14:17: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 1whALa-0005B6-44 for qemu-devel@nongnu.org; Tue, 07 Jul 2026 14:16:45 -0400 Received: from mx0b-0031df01.pphosted.com ([205.220.180.131]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1whALW-0006PK-3J for qemu-devel@nongnu.org; Tue, 07 Jul 2026 14:16:40 -0400 Received: from pps.filterd (m0279873.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 667FT3BU4130287 for ; Tue, 7 Jul 2026 18:16:36 GMT Received: from mail-qv1-f71.google.com (mail-qv1-f71.google.com [209.85.219.71]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4f8t15bhmj-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Tue, 07 Jul 2026 18:16:36 +0000 (GMT) Received: by mail-qv1-f71.google.com with SMTP id 6a1803df08f44-8ec3314f65fso48725166d6.3 for ; Tue, 07 Jul 2026 11:16: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 ffacd0b85a97d-47aa0960b06sm34938694f8f.28.2026.07.07.11.16.33 for (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Tue, 07 Jul 2026 11:16:33 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= 0xSsbyWYVQowYc1hLq5nR7qvqE9dZIS5qYJuw/rgqQg=; b=j55yUb9idck7ttLc cHJdQBJw/faEAth1f2+4uEu2A9AYaKHDRrNB6NWBAYUYzLXPB0OmYKyRdGHRl9gb OvyRCGQ1mWDAh5ZNc1szJAk2cJE41ByBoTwf9SCSHL29XlW4DYVCo+pwy+/CMfiF 9fK99rhsUX35YWe5kFZZ7cMJT2f9iwHa4W+kicOnb9Qhp7VuoxzhREmkt4Nt6nl7 F6OqWKFnwn8al99TIHSlCcXujljJrCAMA8QoXMga3u2RtjC9MHT1JLno1tHk3+gf HYubfXT0CuwZuH8vBOsrlU9GdfTAQXq5f1757HC3VwFf8B8dNVJeC9wGIZrpw51w H8PJ3g== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1783448196; x=1784052996; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=0xSsbyWYVQowYc1hLq5nR7qvqE9dZIS5qYJuw/rgqQg=; b=aAzDmKe8m4oDrh1AYS09Cc+R3Pkuk3SlEYl6D4GhWkCgIP+apdBFC5HVDGdOpHUWbz Mkw66FcpVAey2BJkaKEixx2hXzAzBYJEBd4apD6C0VwhymojddKUSzNg1iWgD65oVSBJ 6BsY29q0mdm7K2N1PuFhz+k9FBi5GHZMkmomYjKa6F+GP8Ofdsm78IRdYKXJkw7w3AQU REBxna6vj20veZmyGH6IP0/NVj8uhFV79VaxxbKL8aZ4qP+LkPFZb61yjS8H0v7xYKGW XJZiBZBrT2RvUWcQWrbrcKmteDfHQ23N2NzLbai2SZ68wD0yaIG92zF7ZD5r/pHcJAVC ZF9A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783448196; x=1784052996; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=0xSsbyWYVQowYc1hLq5nR7qvqE9dZIS5qYJuw/rgqQg=; b=og9SLAjd6r/i6ioOAlfGcrR8D4dBkYvv9GoHOAVQQm7LQjqu9J9j6uN1FRZgE2A6Tc S4RnrgQn7t3TU2cdTER4iu8cCOqKiUt1omtGd1OfYk/sDlaB7806aPNaOfc5fkFI/inw uAGr+DxMz3CZYRQLNB4qpDKGRrQnA38SvubjRVnILRKR0N6g6poxu7SfuXEoP8TsqyIY JO1DC8/XebBQh388TMcJ+rhq/8c2iwOIf8ijfYYWLg6ETx0dTe4I7o2Brga6KlHDHTQT 6TjuD8KPEMwJy+XxV1wiVh9xGbSoeTT5IVZlE7wZLKhMtNzcLfeP4H6J3OakUGgDizmb O8rQ== X-Gm-Message-State: AOJu0Yy8FP7R8pbZMyvyux804uWhv0m06vllmJZs+eHNt35Y/AlLx6Le 0l1iidbNVo3HXdyvcntSCFxAPSIvzTUVwhqH3z8Fg9fDO92iPvf81NtC9VBRrSKNLCI3PEGJO5C IkkK82K7cSNcQk/hHY2+6ctA0l51XcLPM66OGewTZGfVi4akEETvhkdXo9Pr2Pv3SYw== X-Gm-Gg: AfdE7cmNp4r3PwtJQcuJbSpDtvaMdim2zF3Ncypd+Pf2UqhruErMQryCTJ6vC2jEJpB ts2fRndmHgewcpfGQxz1XL6vv9gPlZvh4sqO+vEKwg7I4oqcVP8woOs33i4fR8ZdSr8KCMDUU2G Pq8PWGm/RN5THf/U9WDfKCjHzsnyqS38wmF0glWyKBCr+MIsPfxCJfFbqisPTvnDyz7SX7mWCNe aCHHObxXg8CVnWKO+aCfRbeMzoOAhkQBK8UeiG2q9dWV/PrY2XazB/27oBi6XRZ4YHGs+yuSlpb 4ixiU1/LuOX/ttxkcwGG+PR/AEUwQ5Q6HgCmP1e43KwwUmtGDZjoYsGkt6u+RjCy4X6JdogLcRV rT+F4dYJ6NgwkYjupdT7IYsTJJVCRDLkb0DyFZadT78qiYT1FcfguAQaIMidJ3JKib/ra X-Received: by 2002:a05:622a:20a:b0:51c:167d:b328 with SMTP id d75a77b69052e-51c748852d5mr66189101cf.40.1783448195362; Tue, 07 Jul 2026 11:16:35 -0700 (PDT) X-Received: by 2002:a05:622a:20a:b0:51c:167d:b328 with SMTP id d75a77b69052e-51c748852d5mr66188471cf.40.1783448194445; Tue, 07 Jul 2026 11:16:34 -0700 (PDT) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Subject: [PULL 09/23] target/mips: add Octeon SMS4 COP2 helpers Date: Tue, 7 Jul 2026 20:15:14 +0200 Message-ID: <20260707181529.60191-10-philmd@oss.qualcomm.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260707181529.60191-1-philmd@oss.qualcomm.com> References: <20260707181529.60191-1-philmd@oss.qualcomm.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Proofpoint-GUID: zoRwb4FvRmhmOfvkiyJrwSJmp3ztEB4j X-Authority-Analysis: v=2.4 cv=HstG3UTS c=1 sm=1 tr=0 ts=6a4d4284 cx=c_pps a=UgVkIMxJMSkC9lv97toC5g==:117 a=4s3hRJSeHn4rkQlkrse1kQ==:17 a=IkcTkHD0fZMA:10 a=RAioF0-LDSMA:10 a=M51BFTxLslgA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=rJkE3RaqiGZ5pbrm-msn:22 a=pGLkceISAAAA:8 a=EUspDBNiAAAA:8 a=-q6YWustoGv2AnBTiSgA:9 a=3ZKOabzyN94A:10 a=QEXdDO2ut3YA:10 a=1HOtulTD9v-eNWfpl4qZ:22 X-Proofpoint-ORIG-GUID: zoRwb4FvRmhmOfvkiyJrwSJmp3ztEB4j X-Proofpoint-Spam-Info: AW1haW4tMjYwNzA3MDE3OSBTYWx0ZWRfX0wx/vAAgr2wn B4b0oMbe3Z2ibbsh5bAvJeisCqC6fBzqfpKvh3jsQ6iIVndOznbj7kHHQPw++n6lk2oCGK8bjS5 shy4NjViaCP6XYxsto676uzitCH2Hx4= X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzA3MDE3OSBTYWx0ZWRfX+zj0eyOkr+nr lpKeTItBq+aAy4sIXlRZ7zVgSVNYWXhi4bDaI1qmznTlbq5elQ4hJa/QKdh2RJXPNV0WFb1YB3z 3JFs8HoFhHGNwKhhwD2Yl36ZVNAgDGtt00isKeJ2kA0cEsSxLKnt43d/U3UaX0j0RvvOOIxilAU AA8au621DB7uDeki4lpP6cMSavMdf3X8tLd+KnpXF3quXHe3srdMURK2sf5ywzxm1BrHIMm1BTX CA4Lo1CRO5ScRxFmwO47ueSK6Ko9XeFjhFJrj0zL2qKbYIn9ZRqLAS4OTK2L8waLWq13xdLOgqt iO61M0gaFfoOSxaebo+ISRWW4RPRV3d5t+nSUrbN5ceOHbnBwDxIazRg8A8xmnpykqqEHEeWZwl 0fH/0ko3j9EHibA3U6ypw8yTeSYGfh6C9gdFFz0n+m6IpsuK+8GqIZ12WG7WVISSJZZZXs0yVy9 KALxaQTd0zWEzVhaEhw== X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-07-07_04,2026-07-06_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 phishscore=0 impostorscore=0 suspectscore=0 malwarescore=0 bulkscore=0 clxscore=1015 spamscore=0 adultscore=0 lowpriorityscore=0 priorityscore=1501 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607070179 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=205.220.180.131; envelope-from=philmd@oss.qualcomm.com; helo=mx0b-0031df01.pphosted.com X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 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_LOW=-0.7, 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 @qualcomm.com) X-ZM-MESSAGEID: 1783448535977158502 From: James Hilliard Add helper support for the Octeon SMS4 operation selectors. SMS4 reuses the AES RESINP, IV, and key banks, so the helpers share the existing AES state while implementing the SMS4 ECB/CBC encrypt and decrypt operations. Signed-off-by: James Hilliard Message-ID: <20260608-mips-octeon-missing-insns-v2-v16-9-daef7a0d8b04@gmail= .com> Signed-off-by: Philippe Mathieu-Daud=C3=A9 --- target/mips/helper.h | 4 ++ target/mips/tcg/octeon_crypto.c | 123 ++++++++++++++++++++++++++++++++ 2 files changed, 127 insertions(+) diff --git a/target/mips/helper.h b/target/mips/helper.h index 39c226ded92..4949b94657f 100644 --- a/target/mips/helper.h +++ b/target/mips/helper.h @@ -56,6 +56,10 @@ DEF_HELPER_2(octeon_cp2_mt_aes_enc_cbc1, void, env, i64) DEF_HELPER_2(octeon_cp2_mt_aes_enc1, void, env, i64) DEF_HELPER_2(octeon_cp2_mt_aes_dec_cbc1, void, env, i64) DEF_HELPER_2(octeon_cp2_mt_aes_dec1, void, env, i64) +DEF_HELPER_2(octeon_cp2_mt_sms4_enc_cbc1, void, env, i64) +DEF_HELPER_2(octeon_cp2_mt_sms4_enc1, void, env, i64) +DEF_HELPER_2(octeon_cp2_mt_sms4_dec_cbc1, void, env, i64) +DEF_HELPER_2(octeon_cp2_mt_sms4_dec1, void, env, i64) =20 /* microMIPS functions */ DEF_HELPER_4(lwm, void, env, tl, tl, i32) diff --git a/target/mips/tcg/octeon_crypto.c b/target/mips/tcg/octeon_crypt= o.c index 117e3a5026e..bcffd17ab6c 100644 --- a/target/mips/tcg/octeon_crypto.c +++ b/target/mips/tcg/octeon_crypto.c @@ -985,6 +985,129 @@ void helper_octeon_cp2_mt_aes_dec1(CPUMIPSState *env,= uint64_t value) octeon_aes_decrypt_common(crypto, false); } =20 +static uint32_t octeon_sms4_t(uint32_t x) +{ + x =3D sm4_subword(x); + return x ^ rol32(x, 2) ^ rol32(x, 10) ^ rol32(x, 18) ^ rol32(x, 24); +} + +static uint32_t octeon_sms4_t_key(uint32_t x) +{ + x =3D sm4_subword(x); + return x ^ rol32(x, 13) ^ rol32(x, 23); +} + +static void octeon_sms4_expand_key(const uint8_t *key, uint32_t round_keys= [32]) +{ + static const uint32_t fk[4] =3D { + 0xa3b1bac6U, 0x56aa3350U, 0x677d9197U, 0xb27022dcU, + }; + uint32_t k[36]; + + for (int i =3D 0; i < 4; i++) { + k[i] =3D ldl_be_p(key + i * 4) ^ fk[i]; + } + for (int i =3D 0; i < 32; i++) { + k[i + 4] =3D k[i] ^ octeon_sms4_t_key(k[i + 1] ^ k[i + 2] ^ + k[i + 3] ^ sm4_ck[i]); + round_keys[i] =3D k[i + 4]; + } +} + +static void octeon_sms4_crypt_block(const uint8_t *in, uint8_t *out, + const uint32_t round_keys[32], + bool encrypt) +{ + uint32_t x[36]; + + for (int i =3D 0; i < 4; i++) { + x[i] =3D ldl_be_p(in + i * 4); + } + for (int i =3D 0; i < 32; i++) { + uint32_t rk =3D round_keys[encrypt ? i : 31 - i]; + + x[i + 4] =3D x[i] ^ octeon_sms4_t(x[i + 1] ^ x[i + 2] ^ + x[i + 3] ^ rk); + } + stl_be_p(out, x[35]); + stl_be_p(out + 4, x[34]); + stl_be_p(out + 8, x[33]); + stl_be_p(out + 12, x[32]); +} + +static void octeon_sms4_crypt_common(MIPSOcteonCryptoState *crypto, + bool encrypt, bool cbc) +{ + uint8_t key[16]; + uint8_t in[16]; + uint8_t out[16]; + uint8_t iv[16]; + uint8_t next_iv[16]; + uint32_t round_keys[32]; + + /* + * SMS4 aliases the AES state onto the RESINP, IV, and KEY banks, + * with only the operation selectors remaining distinct. + */ + octeon_aes_load_key(crypto, key, sizeof(key)); + octeon_aes_load_block(crypto->aes_resinp, in); + if (cbc) { + octeon_aes_load_block(crypto->aes_iv, iv); + if (encrypt) { + for (int i =3D 0; i < sizeof(in); i++) { + in[i] ^=3D iv[i]; + } + } else { + memcpy(next_iv, in, sizeof(next_iv)); + } + } + + octeon_sms4_expand_key(key, round_keys); + octeon_sms4_crypt_block(in, out, round_keys, encrypt); + if (cbc && !encrypt) { + for (int i =3D 0; i < sizeof(out); i++) { + out[i] ^=3D iv[i]; + } + } + + octeon_aes_store_block(crypto->aes_resinp, out); + if (cbc) { + octeon_aes_store_block(crypto->aes_iv, encrypt ? out : next_iv); + } +} + +void helper_octeon_cp2_mt_sms4_enc_cbc1(CPUMIPSState *env, uint64_t value) +{ + MIPSOcteonCryptoState *crypto =3D &env->octeon_crypto; + + crypto->aes_resinp[1] =3D value; + octeon_sms4_crypt_common(crypto, true, true); +} + +void helper_octeon_cp2_mt_sms4_enc1(CPUMIPSState *env, uint64_t value) +{ + MIPSOcteonCryptoState *crypto =3D &env->octeon_crypto; + + crypto->aes_resinp[1] =3D value; + octeon_sms4_crypt_common(crypto, true, false); +} + +void helper_octeon_cp2_mt_sms4_dec_cbc1(CPUMIPSState *env, uint64_t value) +{ + MIPSOcteonCryptoState *crypto =3D &env->octeon_crypto; + + crypto->aes_resinp[1] =3D value; + octeon_sms4_crypt_common(crypto, false, true); +} + +void helper_octeon_cp2_mt_sms4_dec1(CPUMIPSState *env, uint64_t value) +{ + MIPSOcteonCryptoState *crypto =3D &env->octeon_crypto; + + crypto->aes_resinp[1] =3D value; + octeon_sms4_crypt_common(crypto, false, false); +} + void helper_octeon_cp2_mt_snow3g_start(CPUMIPSState *env, uint64_t value) { octeon_snow3g_start(&env->octeon_crypto, value); --=20 2.53.0 From nobody Sun Jul 26 10:07:33 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=reject dis=none) header.from=oss.qualcomm.com ARC-Seal: i=1; a=rsa-sha256; t=1783448449; cv=none; d=zohomail.com; s=zohoarc; b=mjDZnkSGdajr9IAyL7DAn+dm+QX213KuF1Xpr8Jrt6mzI/V6dEqjko72a6R9Z0UhqfTu5YA/wLfjFERV6BwOaQlyTOQWfdNmNhtUJYiXjEb/VdWjQzaQ0++3TWCSjJ4zvANcEldcfUB7D6uv+s6LrdTLypeOTEak1Y7NfGmMl/I= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783448449; h=Content-Type:Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=5M6snpFZmFwIYvtpDT6MQ6iIpZtqDxNvfy3bhHDcL9Y=; b=fsQHym5fNwgWgWCDs8PMCnx0OmDEjAM2c/EMWcKda6naEOSfK5+6mxB5Dxl0yaWOQgs9JQwnqEiq6Z+heFtHYLKhdQQdQKdhEKBl4e5XJa8CHe1t7Eayvfv4m0hNzHKQRmIV2Hl1QJczqCYlyYhUl+AAY4JKsGIQ7067+yMpttA= 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=reject dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1783448449546463.29286451342307; Tue, 7 Jul 2026 11:20:49 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1whAMh-0006Op-Vj; Tue, 07 Jul 2026 14:17: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 1whALl-0005Ed-Sw for qemu-devel@nongnu.org; Tue, 07 Jul 2026 14:16:55 -0400 Received: from mx0a-0031df01.pphosted.com ([205.220.168.131]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1whALg-0006Qf-Ue for qemu-devel@nongnu.org; Tue, 07 Jul 2026 14:16:52 -0400 Received: from pps.filterd (m0279863.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 667FTBlb018008 for ; Tue, 7 Jul 2026 18:16:45 GMT Received: from mail-qt1-f199.google.com (mail-qt1-f199.google.com [209.85.160.199]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4f8wep2p0f-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Tue, 07 Jul 2026 18:16:45 +0000 (GMT) Received: by mail-qt1-f199.google.com with SMTP id d75a77b69052e-51c1eb52e1fso90614421cf.0 for ; Tue, 07 Jul 2026 11:16:45 -0700 (PDT) Received: from localhost.localdomain (88-187-86-199.subs.proxad.net. [88.187.86.199]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-47a9e4d6e4csm33345786f8f.10.2026.07.07.11.16.40 for (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Tue, 07 Jul 2026 11:16:40 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= 5M6snpFZmFwIYvtpDT6MQ6iIpZtqDxNvfy3bhHDcL9Y=; b=hb/KF3RSyVmcvnjX /XPCTrGiPVvMUN+h0thyBWo6sHBT6Rygc7boHC2Ggaw8yGEGeeTnGRrnRp9fPxGE OdBGQ7cetflAwxQznlqlFnp3/qptdZ2aLaeg00TGEeMBShUBoJL6F4GlPF2YHdZJ 8q2k/Jy9WR9sg1KJrZ/Be0a4IeSnCSf0dSKuO//cYTrlYcKtYJkzj/s6J5G2asnu +J546cdDtjRtJ/vRdvLNmVRKMwHkurIU6Z8kxPRhNAQzQBfkVpLtpjywxq82DWaB yXg2OG40iMHmjX6mHw/npWtWinl+g50tpsv7kXDdOfJrQgtKZXatUHim0n79rebB aEUhlw== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1783448204; x=1784053004; darn=nongnu.org; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=5M6snpFZmFwIYvtpDT6MQ6iIpZtqDxNvfy3bhHDcL9Y=; b=Uxhu4eFUL25TSr/enEnwpRGplqAVULlvf+zhsHQp/Hi5jaPxoeL8sz4xFtxWHf4uLz CH+vFtfX9MZd88UHVImpZZwzLqtRO67PnuA2BSxl62IHOHcuUEMN/8qFNKeoxNAxqjXf zmIjabiD+9ixq77IMRML5Of1pDF3i6nX9LYqI2BsFQqjy5vY6RQme1PPBb34vP82mxdV 9KhFSNqcAzZ1G/Nl6uECMY5szV/5LVA5ctwMrnVnGKv/Nmi3xeBAYGAb0L8QbvE608yx 2ywYg67F7yzW/Bc4ZQ4ufS4xbDQ6J7ifBpX/4ouXUqMa7aHf9ogHgmNYrL7yT/1sgjSH sQ7g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783448204; x=1784053004; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:to:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=5M6snpFZmFwIYvtpDT6MQ6iIpZtqDxNvfy3bhHDcL9Y=; b=ANRS6IL/jUa1wO2JqEFiax3b3v1HSzTQTuyolxZ/3mMCHjZP8nbhWkCBxyOU9JVv2z Y4mnWh+pbMvuuyYqHjoWd0M+ZcosGPdzPjgzLzhPQ/M2BvKVe9hRFIqEuESJTdyBri2Q LskvmDgUqb/JVKB7k4Bc9+wjdzC/AjkyaZyemfpwhz4KN4ocnlM3LeA7ycm+YWzQgfqx XX2/l1/3NkEPcpdZaAckwB1w+V8aLJ55onQ75CiHXqJSKVdQMqoNnjlhm3n82Mg6RrwH zROkdxVn0DtJ/yx+U0a7MbjS1Mf2/jRVq9jhWPJivohZ5n3NdKLeaUAHOphB2+Kp9lP2 bCLQ== X-Gm-Message-State: AOJu0YyW9jP3mDWIgnjrzYlVv9uA5DBDIYWdPsH8x0om4c6nirUjLzqV JGam90Hh6gKqIM+RiHPBQ5xcY6V56qKm/jFmi8C2jYTG1C26sePtQP6J6g3rcbsmZ4uiEZtCcD5 G05pBy2lOANGaNjv9QMj+ki+dsmnsf5miIXnq6bCxF1efGXyaAMM/tnHM1i84Q2UQBA== X-Gm-Gg: AfdE7cnNy6SeCO1Yn/CxmnQjNL8q4UgytLuK8uKtoyMz9SB/dRBZWnunWycuVkZm51I 51Eh33EOtWIKLZhZUmxMvq7NnYMlrJtPrY/OT/DqZeAQVWXmN8sbQlG7zfUqZVA9WrP/ALSm0m3 VccuFUdoeuhLylZr6E+8wHHqPecyuej1EfiGbojCIyieMbGjHsDRjblmHEOYVrLYTdIguvOl6lM RmqIOlJ6xXEw1BQBAeapd3SdomzWbe1oknWKKaEJmFOfUW4dJGDh1w4oOPNwkU83du4MToVRKFc 2Tid6cimMdhDtgxzlFVomBpj6PN+5HqqCUSGOXK3w6FFu7A4dEh1ayFZclpdE4KwlvPT7NxF8hb xbmzRqSEvRWWqypH455v5eesSwGFDGbrVa/qdXbRZoPHvtz6qejxB9rkJ681gu7rTTxr9 X-Received: by 2002:ac8:7d47:0:b0:51a:8c86:bd40 with SMTP id d75a77b69052e-51c748c56a0mr69925701cf.61.1783448203809; Tue, 07 Jul 2026 11:16:43 -0700 (PDT) X-Received: by 2002:ac8:7d47:0:b0:51a:8c86:bd40 with SMTP id d75a77b69052e-51c748c56a0mr69923991cf.61.1783448201453; Tue, 07 Jul 2026 11:16:41 -0700 (PDT) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Subject: [PULL 10/23] target/mips: add Octeon 3DES and KASUMI COP2 helpers Date: Tue, 7 Jul 2026 20:15:15 +0200 Message-ID: <20260707181529.60191-11-philmd@oss.qualcomm.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260707181529.60191-1-philmd@oss.qualcomm.com> References: <20260707181529.60191-1-philmd@oss.qualcomm.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Proofpoint-GUID: 8doOraWg5wkBN_NzxPwuBLCBLDaDN9pA X-Proofpoint-ORIG-GUID: 8doOraWg5wkBN_NzxPwuBLCBLDaDN9pA X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzA3MDE3OSBTYWx0ZWRfX9YrVdOgtDx5c Jye83t1kb3qfK10F8jEFDRGjmkp3f3RGqMo8MT2JZ8QJwPUi1OZ4L41PLy1LXIRFQ24wsiDniCZ 4TypdfUB5GSng261V5h12mds8yXuzMhH5ymkYNRMlcxmr2VDtpsGXEmk4EOV3SdcVlxZiIFNoB0 9eFZAEIDUsEtRuF7QET5W4p0VS89aukZmbuz7cyDkZ13QWPOOfycijDJucTHp3jQ4HChUN8FPxm /5z3lqQiYZC0ntm2RGzCsDZ6DjzWPU7QxK26fbHenUUUd+ZCMp48Q4zAVTaMxeDb/5J4lCf9yT/ LAKA2vvzsrtae0U5QNv+rjQLfEhlDDkvjcgjIuf0hsryPtBA7RhLzNz4i1pBQfv2ovKUDj943cz NmVO4MIeWUy+CcH30SUhTFQ3YG7RqtwA1jAuBpfAH3CseDGWwe4UpkrSH+6PNgcEhB8iFYTx4Js E12n0NREQPLlaGY026g== X-Proofpoint-Spam-Info: AW1haW4tMjYwNzA3MDE3OSBTYWx0ZWRfX7q987XDAJDYC ruCvPPz9uxA0f8M50dbYsXU6aVaE14wswL2TrSYrF8Aupw08mSWILCzw8HbubrP6iyipFz4w8QD y4fCLJRExpRRlbgaGEUungNexq2fXmo= X-Authority-Analysis: v=2.4 cv=atSCzyZV c=1 sm=1 tr=0 ts=6a4d428d cx=c_pps a=WeENfcodrlLV9YRTxbY/uA==:117 a=4s3hRJSeHn4rkQlkrse1kQ==:17 a=IkcTkHD0fZMA:10 a=RAioF0-LDSMA:10 a=M51BFTxLslgA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=yOCtJkima9RkubShWh1s:22 a=pGLkceISAAAA:8 a=EUspDBNiAAAA:8 a=aUFnen29rhRlqlhoDbIA:9 a=3ZKOabzyN94A:10 a=QEXdDO2ut3YA:10 a=kacYvNCVWA4VmyqE58fU:22 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-07-07_04,2026-07-06_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 malwarescore=0 phishscore=0 clxscore=1015 priorityscore=1501 spamscore=0 suspectscore=0 lowpriorityscore=0 bulkscore=0 impostorscore=0 adultscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607070179 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=205.220.168.131; envelope-from=philmd@oss.qualcomm.com; helo=mx0a-0031df01.pphosted.com X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 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_LOW=-0.7, 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 @qualcomm.com) X-ZM-MESSAGEID: 1783448451361158500 From: James Hilliard Add helper support for the Octeon 3DES and KASUMI operation selectors. The 3DES helpers implement ECB and CBC encrypt/decrypt over the shared 3DES key, IV, and result bank. KASUMI reuses the same register bank and adds its own encrypt selectors. Only the operation selectors require helper code. Simple key, IV, and result register transfers are handled by direct selector decode. Signed-off-by: James Hilliard Message-ID: <20260608-mips-octeon-missing-insns-v2-v16-10-daef7a0d8b04@gmai= l.com> Signed-off-by: Philippe Mathieu-Daud=C3=A9 --- target/mips/helper.h | 6 + target/mips/tcg/octeon_crypto.c | 458 ++++++++++++++++++++++++++++++++ 2 files changed, 464 insertions(+) diff --git a/target/mips/helper.h b/target/mips/helper.h index 4949b94657f..c9332c5c522 100644 --- a/target/mips/helper.h +++ b/target/mips/helper.h @@ -60,6 +60,12 @@ DEF_HELPER_2(octeon_cp2_mt_sms4_enc_cbc1, void, env, i64) DEF_HELPER_2(octeon_cp2_mt_sms4_enc1, void, env, i64) DEF_HELPER_2(octeon_cp2_mt_sms4_dec_cbc1, void, env, i64) DEF_HELPER_2(octeon_cp2_mt_sms4_dec1, void, env, i64) +DEF_HELPER_2(octeon_cp2_mt_des3_enc_cbc, void, env, i64) +DEF_HELPER_2(octeon_cp2_mt_kas_enc_cbc, void, env, i64) +DEF_HELPER_2(octeon_cp2_mt_des3_enc, void, env, i64) +DEF_HELPER_2(octeon_cp2_mt_kas_enc, void, env, i64) +DEF_HELPER_2(octeon_cp2_mt_des3_dec_cbc, void, env, i64) +DEF_HELPER_2(octeon_cp2_mt_des3_dec, void, env, i64) =20 /* microMIPS functions */ DEF_HELPER_4(lwm, void, env, tl, tl, i32) diff --git a/target/mips/tcg/octeon_crypto.c b/target/mips/tcg/octeon_crypt= o.c index bcffd17ab6c..8ea79e37568 100644 --- a/target/mips/tcg/octeon_crypto.c +++ b/target/mips/tcg/octeon_crypto.c @@ -1108,6 +1108,464 @@ void helper_octeon_cp2_mt_sms4_dec1(CPUMIPSState *e= nv, uint64_t value) octeon_sms4_crypt_common(crypto, false, false); } =20 +static const uint8_t octeon_des_ip[64] =3D { + 58, 50, 42, 34, 26, 18, 10, 2, + 60, 52, 44, 36, 28, 20, 12, 4, + 62, 54, 46, 38, 30, 22, 14, 6, + 64, 56, 48, 40, 32, 24, 16, 8, + 57, 49, 41, 33, 25, 17, 9, 1, + 59, 51, 43, 35, 27, 19, 11, 3, + 61, 53, 45, 37, 29, 21, 13, 5, + 63, 55, 47, 39, 31, 23, 15, 7, +}; + +static const uint8_t octeon_des_fp[64] =3D { + 40, 8, 48, 16, 56, 24, 64, 32, + 39, 7, 47, 15, 55, 23, 63, 31, + 38, 6, 46, 14, 54, 22, 62, 30, + 37, 5, 45, 13, 53, 21, 61, 29, + 36, 4, 44, 12, 52, 20, 60, 28, + 35, 3, 43, 11, 51, 19, 59, 27, + 34, 2, 42, 10, 50, 18, 58, 26, + 33, 1, 41, 9, 49, 17, 57, 25, +}; + +static const uint8_t octeon_des_e[48] =3D { + 32, 1, 2, 3, 4, 5, + 4, 5, 6, 7, 8, 9, + 8, 9, 10, 11, 12, 13, + 12, 13, 14, 15, 16, 17, + 16, 17, 18, 19, 20, 21, + 20, 21, 22, 23, 24, 25, + 24, 25, 26, 27, 28, 29, + 28, 29, 30, 31, 32, 1, +}; + +static const uint8_t octeon_des_p[32] =3D { + 16, 7, 20, 21, 29, 12, 28, 17, + 1, 15, 23, 26, 5, 18, 31, 10, + 2, 8, 24, 14, 32, 27, 3, 9, + 19, 13, 30, 6, 22, 11, 4, 25, +}; + +static const uint8_t octeon_des_pc1[56] =3D { + 57, 49, 41, 33, 25, 17, 9, + 1, 58, 50, 42, 34, 26, 18, + 10, 2, 59, 51, 43, 35, 27, + 19, 11, 3, 60, 52, 44, 36, + 63, 55, 47, 39, 31, 23, 15, + 7, 62, 54, 46, 38, 30, 22, + 14, 6, 61, 53, 45, 37, 29, + 21, 13, 5, 28, 20, 12, 4, +}; + +static const uint8_t octeon_des_pc2[48] =3D { + 14, 17, 11, 24, 1, 5, + 3, 28, 15, 6, 21, 10, + 23, 19, 12, 4, 26, 8, + 16, 7, 27, 20, 13, 2, + 41, 52, 31, 37, 47, 55, + 30, 40, 51, 45, 33, 48, + 44, 49, 39, 56, 34, 53, + 46, 42, 50, 36, 29, 32, +}; + +static const uint8_t octeon_des_rotations[16] =3D { + 1, 1, 2, 2, 2, 2, 2, 2, + 1, 2, 2, 2, 2, 2, 2, 1, +}; + +static const uint8_t octeon_des_sboxes[8][64] =3D { + { + 14, 4, 13, 1, 2, 15, 11, 8, 3, 10, 6, 12, 5, 9, 0, 7, + 0, 15, 7, 4, 14, 2, 13, 1, 10, 6, 12, 11, 9, 5, 3, 8, + 4, 1, 14, 8, 13, 6, 2, 11, 15, 12, 9, 7, 3, 10, 5, 0, + 15, 12, 8, 2, 4, 9, 1, 7, 5, 11, 3, 14, 10, 0, 6, 13, + }, + { + 15, 1, 8, 14, 6, 11, 3, 4, 9, 7, 2, 13, 12, 0, 5, 10, + 3, 13, 4, 7, 15, 2, 8, 14, 12, 0, 1, 10, 6, 9, 11, 5, + 0, 14, 7, 11, 10, 4, 13, 1, 5, 8, 12, 6, 9, 3, 2, 15, + 13, 8, 10, 1, 3, 15, 4, 2, 11, 6, 7, 12, 0, 5, 14, 9, + }, + { + 10, 0, 9, 14, 6, 3, 15, 5, 1, 13, 12, 7, 11, 4, 2, 8, + 13, 7, 0, 9, 3, 4, 6, 10, 2, 8, 5, 14, 12, 11, 15, 1, + 13, 6, 4, 9, 8, 15, 3, 0, 11, 1, 2, 12, 5, 10, 14, 7, + 1, 10, 13, 0, 6, 9, 8, 7, 4, 15, 14, 3, 11, 5, 2, 12, + }, + { + 7, 13, 14, 3, 0, 6, 9, 10, 1, 2, 8, 5, 11, 12, 4, 15, + 13, 8, 11, 5, 6, 15, 0, 3, 4, 7, 2, 12, 1, 10, 14, 9, + 10, 6, 9, 0, 12, 11, 7, 13, 15, 1, 3, 14, 5, 2, 8, 4, + 3, 15, 0, 6, 10, 1, 13, 8, 9, 4, 5, 11, 12, 7, 2, 14, + }, + { + 2, 12, 4, 1, 7, 10, 11, 6, 8, 5, 3, 15, 13, 0, 14, 9, + 14, 11, 2, 12, 4, 7, 13, 1, 5, 0, 15, 10, 3, 9, 8, 6, + 4, 2, 1, 11, 10, 13, 7, 8, 15, 9, 12, 5, 6, 3, 0, 14, + 11, 8, 12, 7, 1, 14, 2, 13, 6, 15, 0, 9, 10, 4, 5, 3, + }, + { + 12, 1, 10, 15, 9, 2, 6, 8, 0, 13, 3, 4, 14, 7, 5, 11, + 10, 15, 4, 2, 7, 12, 9, 5, 6, 1, 13, 14, 0, 11, 3, 8, + 9, 14, 15, 5, 2, 8, 12, 3, 7, 0, 4, 10, 1, 13, 11, 6, + 4, 3, 2, 12, 9, 5, 15, 10, 11, 14, 1, 7, 6, 0, 8, 13, + }, + { + 4, 11, 2, 14, 15, 0, 8, 13, 3, 12, 9, 7, 5, 10, 6, 1, + 13, 0, 11, 7, 4, 9, 1, 10, 14, 3, 5, 12, 2, 15, 8, 6, + 1, 4, 11, 13, 12, 3, 7, 14, 10, 15, 6, 8, 0, 5, 9, 2, + 6, 11, 13, 8, 1, 4, 10, 7, 9, 5, 0, 15, 14, 2, 3, 12, + }, + { + 13, 2, 8, 4, 6, 15, 11, 1, 10, 9, 3, 14, 5, 0, 12, 7, + 1, 15, 13, 8, 10, 3, 7, 4, 12, 5, 6, 11, 0, 14, 9, 2, + 7, 11, 4, 1, 9, 12, 14, 2, 0, 6, 10, 13, 15, 3, 5, 8, + 2, 1, 14, 7, 4, 10, 8, 13, 15, 12, 9, 0, 3, 5, 6, 11, + }, +}; + +static const uint8_t octeon_kasumi_s7[128] =3D { + 54, 50, 62, 56, 22, 34, 94, 96, 38, 6, 63, 93, 2, 18, + 123, 33, 55, 113, 39, 114, 21, 67, 65, 12, 47, 73, 46, 27, + 25, 111, 124, 81, 53, 9, 121, 79, 52, 60, 58, 48, 101, 127, + 40, 120, 104, 70, 71, 43, 20, 122, 72, 61, 23, 109, 13, 100, + 77, 1, 16, 7, 82, 10, 105, 98, 117, 116, 76, 11, 89, 106, + 0, 125, 118, 99, 86, 69, 30, 57, 126, 87, 112, 51, 17, 5, + 95, 14, 90, 84, 91, 8, 35, 103, 32, 97, 28, 66, 102, 31, + 26, 45, 75, 4, 85, 92, 37, 74, 80, 49, 68, 29, 115, 44, + 64, 107, 108, 24, 110, 83, 36, 78, 42, 19, 15, 41, 88, 119, + 59, 3, +}; + +static const uint16_t octeon_kasumi_s9[512] =3D { + 167, 239, 161, 379, 391, 334, 9, 338, 38, 226, 48, 358, 452, 385, + 90, 397, 183, 253, 147, 331, 415, 340, 51, 362, 306, 500, 262, 82, + 216, 159, 356, 177, 175, 241, 489, 37, 206, 17, 0, 333, 44, 254, + 378, 58, 143, 220, 81, 400, 95, 3, 315, 245, 54, 235, 218, 405, + 472, 264, 172, 494, 371, 290, 399, 76, 165, 197, 395, 121, 257, 480, + 423, 212, 240, 28, 462, 176, 406, 507, 288, 223, 501, 407, 249, 265, + 89, 186, 221, 428, 164, 74, 440, 196, 458, 421, 350, 163, 232, 158, + 134, 354, 13, 250, 491, 142, 191, 69, 193, 425, 152, 227, 366, 135, + 344, 300, 276, 242, 437, 320, 113, 278, 11, 243, 87, 317, 36, 93, + 496, 27, 487, 446, 482, 41, 68, 156, 457, 131, 326, 403, 339, 20, + 39, 115, 442, 124, 475, 384, 508, 53, 112, 170, 479, 151, 126, 169, + 73, 268, 279, 321, 168, 364, 363, 292, 46, 499, 393, 327, 324, 24, + 456, 267, 157, 460, 488, 426, 309, 229, 439, 506, 208, 271, 349, 401, + 434, 236, 16, 209, 359, 52, 56, 120, 199, 277, 465, 416, 252, 287, + 246, 6, 83, 305, 420, 345, 153, 502, 65, 61, 244, 282, 173, 222, + 418, 67, 386, 368, 261, 101, 476, 291, 195, 430, 49, 79, 166, 330, + 280, 383, 373, 128, 382, 408, 155, 495, 367, 388, 274, 107, 459, 417, + 62, 454, 132, 225, 203, 316, 234, 14, 301, 91, 503, 286, 424, 211, + 347, 307, 140, 374, 35, 103, 125, 427, 19, 214, 453, 146, 498, 314, + 444, 230, 256, 329, 198, 285, 50, 116, 78, 410, 10, 205, 510, 171, + 231, 45, 139, 467, 29, 86, 505, 32, 72, 26, 342, 150, 313, 490, + 431, 238, 411, 325, 149, 473, 40, 119, 174, 355, 185, 233, 389, 71, + 448, 273, 372, 55, 110, 178, 322, 12, 469, 392, 369, 190, 1, 109, + 375, 137, 181, 88, 75, 308, 260, 484, 98, 272, 370, 275, 412, 111, + 336, 318, 4, 504, 492, 259, 304, 77, 337, 435, 21, 357, 303, 332, + 483, 18, 47, 85, 25, 497, 474, 289, 100, 269, 296, 478, 270, 106, + 31, 104, 433, 84, 414, 486, 394, 96, 99, 154, 511, 148, 413, 361, + 409, 255, 162, 215, 302, 201, 266, 351, 343, 144, 441, 365, 108, 298, + 251, 34, 182, 509, 138, 210, 335, 133, 311, 352, 328, 141, 396, 346, + 123, 319, 450, 281, 429, 228, 443, 481, 92, 404, 485, 422, 248, 297, + 23, 213, 130, 466, 22, 217, 283, 70, 294, 360, 419, 127, 312, 377, + 7, 468, 194, 2, 117, 295, 463, 258, 224, 447, 247, 187, 80, 398, + 284, 353, 105, 390, 299, 471, 470, 184, 57, 200, 348, 63, 204, 188, + 33, 451, 97, 30, 310, 219, 94, 160, 129, 493, 64, 179, 263, 102, + 189, 207, 114, 402, 438, 477, 387, 122, 192, 42, 381, 5, 145, 118, + 180, 449, 293, 323, 136, 380, 43, 66, 60, 455, 341, 445, 202, 432, + 8, 237, 15, 376, 436, 464, 59, 461, +}; + +static const uint16_t octeon_kasumi_constants[8] =3D { + 0x0123, 0x4567, 0x89ab, 0xcdef, 0xfedc, 0xba98, 0x7654, 0x3210, +}; + +typedef struct OcteonKasumiSubkeys { + uint16_t kli1[8]; + uint16_t kli2[8]; + uint16_t koi1[8]; + uint16_t koi2[8]; + uint16_t koi3[8]; + uint16_t kii1[8]; + uint16_t kii2[8]; + uint16_t kii3[8]; +} OcteonKasumiSubkeys; + +static uint64_t octeon_des_permute(uint64_t input, const uint8_t *table, + size_t output_bits, size_t input_bits) +{ + uint64_t out =3D 0; + + for (size_t i =3D 0; i < output_bits; i++) { + unsigned src =3D table[i] - 1; + + out =3D (out << 1) | ((input >> (input_bits - 1 - src)) & 1); + } + return out; +} + +static uint32_t octeon_des_rotate28(uint32_t v, unsigned shift) +{ + return ((v << shift) | (v >> (28 - shift))) & 0x0fffffffU; +} + +static void octeon_des_expand_subkeys(uint64_t key, uint64_t subkeys[16]) +{ + uint64_t permuted =3D octeon_des_permute(key, octeon_des_pc1, + ARRAY_SIZE(octeon_des_pc1), 64); + uint32_t c =3D (permuted >> 28) & 0x0fffffffU; + uint32_t d =3D permuted & 0x0fffffffU; + + for (int i =3D 0; i < 16; i++) { + c =3D octeon_des_rotate28(c, octeon_des_rotations[i]); + d =3D octeon_des_rotate28(d, octeon_des_rotations[i]); + subkeys[i] =3D octeon_des_permute(((uint64_t)c << 28) | d, + octeon_des_pc2, + ARRAY_SIZE(octeon_des_pc2), 56); + } +} + +static uint32_t octeon_des_f(uint32_t r, uint64_t subkey) +{ + uint64_t expanded =3D octeon_des_permute(r, octeon_des_e, + ARRAY_SIZE(octeon_des_e), 32); + uint32_t out =3D 0; + + expanded ^=3D subkey; + for (int i =3D 0; i < 8; i++) { + uint8_t sextet =3D (expanded >> (42 - i * 6)) & 0x3f; + uint8_t row =3D ((sextet & 0x20) >> 4) | (sextet & 0x01); + uint8_t col =3D (sextet >> 1) & 0x0f; + + out =3D (out << 4) | octeon_des_sboxes[i][row * 16 + col]; + } + + return octeon_des_permute(out, octeon_des_p, ARRAY_SIZE(octeon_des_p),= 32); +} + +static uint64_t octeon_des_block_crypt(uint64_t block, uint64_t key, + bool encrypt) +{ + uint64_t subkeys[16]; + uint64_t permuted =3D octeon_des_permute(block, octeon_des_ip, + ARRAY_SIZE(octeon_des_ip), 64); + uint32_t l =3D permuted >> 32; + uint32_t r =3D permuted; + + octeon_des_expand_subkeys(key, subkeys); + + for (int i =3D 0; i < 16; i++) { + uint32_t next =3D l ^ octeon_des_f(r, subkeys[encrypt ? i : 15 - i= ]); + + l =3D r; + r =3D next; + } + + return octeon_des_permute(((uint64_t)r << 32) | l, + octeon_des_fp, ARRAY_SIZE(octeon_des_fp), 64= ); +} + +static uint64_t octeon_3des_block_crypt(uint64_t block, const uint64_t key= s[3], + bool encrypt) +{ + if (encrypt) { + block =3D octeon_des_block_crypt(block, keys[0], true); + block =3D octeon_des_block_crypt(block, keys[1], false); + block =3D octeon_des_block_crypt(block, keys[2], true); + } else { + block =3D octeon_des_block_crypt(block, keys[2], false); + block =3D octeon_des_block_crypt(block, keys[1], true); + block =3D octeon_des_block_crypt(block, keys[0], false); + } + return block; +} + +static void octeon_3des_crypt_common(MIPSOcteonCryptoState *crypto, + uint64_t input_reg, + bool encrypt, bool cbc) +{ + const uint64_t keys[3] =3D { + crypto->des3_key[0], + crypto->des3_key[1], + crypto->des3_key[2], + }; + uint64_t block =3D input_reg; + + if (cbc) { + if (encrypt) { + block ^=3D crypto->des3_iv; + block =3D octeon_3des_block_crypt(block, keys, true); + crypto->des3_iv =3D block; + } else { + block =3D octeon_3des_block_crypt(block, keys, false); + block ^=3D crypto->des3_iv; + crypto->des3_iv =3D input_reg; + } + } else { + block =3D octeon_3des_block_crypt(block, keys, encrypt); + } + + crypto->des3_result =3D block; +} + +static uint16_t octeon_rol16(uint16_t value, unsigned int bits) +{ + return (value << bits) | (value >> (16 - bits)); +} + +static void octeon_kasumi_key_schedule(const uint64_t key_regs[2], + OcteonKasumiSubkeys *subkeys) +{ + uint16_t key[8]; + uint16_t key_prime[8]; + + key[0] =3D key_regs[0] >> 48; + key[1] =3D key_regs[0] >> 32; + key[2] =3D key_regs[0] >> 16; + key[3] =3D key_regs[0]; + key[4] =3D key_regs[1] >> 48; + key[5] =3D key_regs[1] >> 32; + key[6] =3D key_regs[1] >> 16; + key[7] =3D key_regs[1]; + + for (int i =3D 0; i < 8; i++) { + key_prime[i] =3D key[i] ^ octeon_kasumi_constants[i]; + } + + for (int i =3D 0; i < 8; i++) { + subkeys->kli1[i] =3D octeon_rol16(key[i], 1); + subkeys->kli2[i] =3D key_prime[(i + 2) & 7]; + subkeys->koi1[i] =3D octeon_rol16(key[(i + 1) & 7], 5); + subkeys->koi2[i] =3D octeon_rol16(key[(i + 5) & 7], 8); + subkeys->koi3[i] =3D octeon_rol16(key[(i + 6) & 7], 13); + subkeys->kii1[i] =3D key_prime[(i + 4) & 7]; + subkeys->kii2[i] =3D key_prime[(i + 3) & 7]; + subkeys->kii3[i] =3D key_prime[(i + 7) & 7]; + } +} + +static uint16_t octeon_kasumi_fi(uint16_t in, uint16_t subkey) +{ + uint16_t nine =3D in >> 7; + uint16_t seven =3D in & 0x7f; + + nine =3D octeon_kasumi_s9[nine] ^ seven; + seven =3D octeon_kasumi_s7[seven] ^ (nine & 0x7f); + seven ^=3D subkey >> 9; + nine ^=3D subkey & 0x1ff; + nine =3D octeon_kasumi_s9[nine] ^ seven; + seven =3D octeon_kasumi_s7[seven] ^ (nine & 0x7f); + return (seven << 9) | nine; +} + +static uint32_t octeon_kasumi_fo(uint32_t in, int index, + const OcteonKasumiSubkeys *subkeys) +{ + uint16_t left =3D in >> 16; + uint16_t right =3D in; + + left ^=3D subkeys->koi1[index]; + left =3D octeon_kasumi_fi(left, subkeys->kii1[index]); + left ^=3D right; + right ^=3D subkeys->koi2[index]; + right =3D octeon_kasumi_fi(right, subkeys->kii2[index]); + right ^=3D left; + left ^=3D subkeys->koi3[index]; + left =3D octeon_kasumi_fi(left, subkeys->kii3[index]); + left ^=3D right; + + return ((uint32_t)right << 16) | left; +} + +static uint32_t octeon_kasumi_fl(uint32_t in, int index, + const OcteonKasumiSubkeys *subkeys) +{ + uint16_t left =3D in >> 16; + uint16_t right =3D in; + uint16_t a =3D left & subkeys->kli1[index]; + uint16_t b; + + right ^=3D octeon_rol16(a, 1); + b =3D right | subkeys->kli2[index]; + left ^=3D octeon_rol16(b, 1); + return ((uint32_t)left << 16) | right; +} + +static uint64_t octeon_kasumi_block_encrypt(uint64_t block, + const uint64_t key_regs[2]) +{ + OcteonKasumiSubkeys subkeys; + uint32_t left =3D block >> 32; + uint32_t right =3D block; + + octeon_kasumi_key_schedule(key_regs, &subkeys); + + for (int i =3D 0; i < 8; ) { + uint32_t temp =3D octeon_kasumi_fl(left, i, &subkeys); + + temp =3D octeon_kasumi_fo(temp, i++, &subkeys); + right ^=3D temp; + temp =3D octeon_kasumi_fo(right, i, &subkeys); + temp =3D octeon_kasumi_fl(temp, i++, &subkeys); + left ^=3D temp; + } + + return ((uint64_t)left << 32) | right; +} + +static void octeon_kasumi_crypt_common(MIPSOcteonCryptoState *crypto, + uint64_t input_reg, bool cbc) +{ + const uint64_t key_regs[2] =3D { + crypto->des3_key[0], + crypto->des3_key[1], + }; + uint64_t block =3D input_reg; + + if (cbc) { + block ^=3D crypto->des3_iv; + } + + block =3D octeon_kasumi_block_encrypt(block, key_regs); + if (cbc) { + crypto->des3_iv =3D block; + } + crypto->des3_result =3D block; +} + +void helper_octeon_cp2_mt_des3_enc_cbc(CPUMIPSState *env, uint64_t value) +{ + octeon_3des_crypt_common(&env->octeon_crypto, value, true, true); +} + +void helper_octeon_cp2_mt_kas_enc_cbc(CPUMIPSState *env, uint64_t value) +{ + octeon_kasumi_crypt_common(&env->octeon_crypto, value, true); +} + +void helper_octeon_cp2_mt_des3_enc(CPUMIPSState *env, uint64_t value) +{ + octeon_3des_crypt_common(&env->octeon_crypto, value, true, false); +} + +void helper_octeon_cp2_mt_kas_enc(CPUMIPSState *env, uint64_t value) +{ + octeon_kasumi_crypt_common(&env->octeon_crypto, value, false); +} + +void helper_octeon_cp2_mt_des3_dec_cbc(CPUMIPSState *env, uint64_t value) +{ + octeon_3des_crypt_common(&env->octeon_crypto, value, false, true); +} + +void helper_octeon_cp2_mt_des3_dec(CPUMIPSState *env, uint64_t value) +{ + octeon_3des_crypt_common(&env->octeon_crypto, value, false, false); +} + void helper_octeon_cp2_mt_snow3g_start(CPUMIPSState *env, uint64_t value) { octeon_snow3g_start(&env->octeon_crypto, value); --=20 2.53.0 From nobody Sun Jul 26 10:07:33 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=reject dis=none) header.from=oss.qualcomm.com ARC-Seal: i=1; a=rsa-sha256; t=1783448258; cv=none; d=zohomail.com; s=zohoarc; b=ImlaTtkIXYfiwCZSgFrQpKJn6xUFj/tpMbWDsfuL7ST0KQqVhz07I0CTqAXSsQck1mXYvOILYJtUSm4vUMwhVrwPxMi04oellj78J+/WWWT9FI99a187m2Rg8dzKYG3NGmB11H6sXSpgpEStNo998NAlHjHG1Ec2dY6nHwxixR0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783448258; h=Content-Type:Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=JKq+yUGvjHZ4YQ1p6Re3a/4lZ2DhXCPE6UUMq60lqzA=; b=U3sPlNj7tJGr3OgONPQismJ7GQnKwTdE8uCJ2BX4P1edxiay7EAcTSJo22GlU27LXdizJZ9xiP6v8UObHTXdb1kKlBzSkD6vcVnznaWsTHChdad9AUSZbT/g6QsbD7Me95AXQakXc0QATu1PpPw0cq33+R/smnqI07P1Ra5kP04= 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=reject dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1783448258215185.64758828158506; Tue, 7 Jul 2026 11:17:38 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1whAMJ-0005jS-Um; Tue, 07 Jul 2026 14:17:29 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1whALo-0005K4-Jg for qemu-devel@nongnu.org; Tue, 07 Jul 2026 14:17:03 -0400 Received: from mx0b-0031df01.pphosted.com ([205.220.180.131]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1whALj-0006Qz-Tv for qemu-devel@nongnu.org; Tue, 07 Jul 2026 14:16:54 -0400 Received: from pps.filterd (m0279869.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 667Gv3o5230768 for ; Tue, 7 Jul 2026 18:16:51 GMT Received: from mail-qt1-f197.google.com (mail-qt1-f197.google.com [209.85.160.197]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4f95e5rcpw-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Tue, 07 Jul 2026 18:16:50 +0000 (GMT) Received: by mail-qt1-f197.google.com with SMTP id d75a77b69052e-51c0e702df8so55431571cf.2 for ; Tue, 07 Jul 2026 11:16:50 -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-47aa09608d4sm36792398f8f.25.2026.07.07.11.16.47 for (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Tue, 07 Jul 2026 11:16:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= JKq+yUGvjHZ4YQ1p6Re3a/4lZ2DhXCPE6UUMq60lqzA=; b=Abk+rjfAQ8JPZfNh akyOqGFv1JYpaXZRnDJMvFU3V3QNIWIewSQYqmNL2zo+5bl4X0DJMr3MZl+RPpWl GCZpvrmyQsBIwYZxLQVshQ+U7cTRsInYSFakqMABRJxX/VKF7+E9StsoWbs1//zm 1N3uRADWUP4HWEs8llQ804iGURHfLVex+R6Z8/oYUfdcwvyAUAbD2iWAyHGLH5GG avOe9C8JJ0jrXwgvI3FQ7InLtOhB0B1OfCvbVVo0fWWhN/7gAFhTIBcLSK5E/IE1 Ig5ZBQU0+lXhpmXX4DM2InFKxcKRKL8fNae7+CJUGgOFXm5RK07XMX7JV/Sf84t3 OTRZPA== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1783448210; x=1784053010; darn=nongnu.org; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=JKq+yUGvjHZ4YQ1p6Re3a/4lZ2DhXCPE6UUMq60lqzA=; b=IEuFcCCMmotSl3Aij9UAumgyoSQErrfXdMVn7sD3yMkZXBDUFy/n9SsrLVerXCNCxO HR8C+rlg1eetfl8yoBfSlSjkC7HeIzEXTXOaPRhFmzlGgldfymyeSfJ8+ZnaU1K4qiAd U+UhMQDWQVIafLVmarvPI06jy92qrNDBzxiYiSd/5/XVqDF1LCzgsjmifvpAsfA7JSI3 rhIBqHmUpxs7I/DK6sC5hY34Ch+3Cw4/XiOUD4Qiq8q2QXUmkPzrL0XxjfXHR9XkijSM UWkCVJaVa8iPrwN+ZNGaS1eWRbxere9KryR/z8e4FH9QWBqMzTbklbdYn/hGFFHLmIP7 7g9A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783448210; x=1784053010; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:to:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=JKq+yUGvjHZ4YQ1p6Re3a/4lZ2DhXCPE6UUMq60lqzA=; b=UQmhlYbuzk6wkG0kAjUV3BRjtA1HJKVQjcP04PXlAQU9vkA2LPCt5+1PpNSbva5/vF PB++HusFJMkhjNwnY9FlIKLGL2/dmNvFehYToAI6CZ8fxVJp0NFNlX20MwHAFOePMUsF TW2tm7oXrlZ598sT6MxpxS9vcWFOG0uN/QZrd2kUGyFkpmYkRm+6z4dTCsDKnDJvVSqX I5oB7rV0dx5lh2+e5hTlih9xqXFA0COcZv8jhesmsrPDHoMEh3WdxL3oxRGbz8dHm1nH 8QvzFmdEHZjCbYWe8iOGdLJyJXgVa67hXwhxEbtB3wRLJXAuaCTqpdwfLvQxiT0U5fwk 1hmQ== X-Gm-Message-State: AOJu0YyJRlW5dup16PtedGxW12SSSti++MZRDqJnKnmDkq6zxcOzGBft Zr8lk9bOPIV0FefsHQ2QkRNeNNxT67uPVgGk8fRFg6bGkvK/uZIBaP7CNOs/fffCY5+D6TWY1qt PA9pxtzDHIaGNpzNL3JrK4xadm1vGiAU+7Cnw+2iI44IlSl0k8AYOAV9LhB3hV2NxQQ== X-Gm-Gg: AfdE7clNHBhDqgG3JlWRJGvxtZJ2Y3jc8cdpiDZcE+KL0WQgpcDGsVHDAw+Up3QGLUG K/yeIplzufj7Af/8w9JZJDEZ7O0YGlcMojSlbZ50SVkc5XE2RiX53IRTWNTgHYb1VUicFpypYjU 0GFrqBQjaPuwabVRulXORcoEk7jE5GnNEI2AsZPNhW0Ow7Ypfa/9PCwo2n5Ent+FKp1ZEriWtAu uCa6XCRoj9E2MSOj7yFULLqE7+kOC6XbNS7bPq9y5ZAh/NU/p7GPq1ExBQjxtQ6n+58zvZ+7svv +tPvUS4GTi8BNqaD6CADWuvrou4pklHuqhIcKKbY64hwnApLk74kKXsv4w2rynvL7/T03Lf+2j8 r4lBoD+8qVYN40RUhoz/q3+qw1pGSrQcE54iyFQM1+yDyvd7L82Jc7N0HjgdbQuzUluU6 X-Received: by 2002:a05:622a:101:b0:51c:12bf:d4a7 with SMTP id d75a77b69052e-51c74829b84mr70535791cf.45.1783448209026; Tue, 07 Jul 2026 11:16:49 -0700 (PDT) X-Received: by 2002:a05:622a:101:b0:51c:12bf:d4a7 with SMTP id d75a77b69052e-51c74829b84mr70535231cf.45.1783448208309; Tue, 07 Jul 2026 11:16:48 -0700 (PDT) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Subject: [PULL 11/23] target/mips: add Octeon Camellia COP2 helpers Date: Tue, 7 Jul 2026 20:15:16 +0200 Message-ID: <20260707181529.60191-12-philmd@oss.qualcomm.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260707181529.60191-1-philmd@oss.qualcomm.com> References: <20260707181529.60191-1-philmd@oss.qualcomm.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Proofpoint-GUID: 7Qx4Hgr06gE91kA8WLVAPt0lOp-EoTD7 X-Proofpoint-Spam-Info: AW1haW4tMjYwNzA3MDE3OSBTYWx0ZWRfX+bShQMbZRvyN lOrICjXWxhoor6DdO5Y9MQbl1tjK7/0Go+ftDUX7mgx90V7LtjOfmR3up37ci21urgN17FNfj++ rcvFkn2v0r3td4XqeSI/fu/FXlQFdro= X-Authority-Analysis: v=2.4 cv=CNoamxrD c=1 sm=1 tr=0 ts=6a4d4292 cx=c_pps a=EVbN6Ke/fEF3bsl7X48z0g==:117 a=4s3hRJSeHn4rkQlkrse1kQ==:17 a=IkcTkHD0fZMA:10 a=RAioF0-LDSMA:10 a=M51BFTxLslgA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=_glEPmIy2e8OvE2BGh3C:22 a=pGLkceISAAAA:8 a=EUspDBNiAAAA:8 a=pfeKYdQS9pwTd56Xz4kA:9 a=3ZKOabzyN94A:10 a=QEXdDO2ut3YA:10 a=a_PwQJl-kcHnX1M80qC6:22 X-Proofpoint-ORIG-GUID: 7Qx4Hgr06gE91kA8WLVAPt0lOp-EoTD7 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzA3MDE3OSBTYWx0ZWRfX8NxYTa6vGXQA VAO30Kp0CrrKjsUT2Ep4vIOBrg14i7GLTOzY+VAvy0iDeURuM777YnrB2l/tQ/D0VpsoJiYGTQs zxck1ldN2y9wvdwVWTCN5Gj1cYzrx7kaJLr9J3i1yQjoiCCWSuGFgnoW0/797QgmXvSmjj9SHh2 +QcIpDnWB1oBdFJYyB5/1w6UQYM/fHp35fQGQV6s3Q3qOfJk0Lad8wxyp85jswPcsFjGA0qkRtB T2lb+BmqAsOklqmsXeibub+pGmsqNI96MFdJWvingAXIeC3q/PHucWsVUbpen1LSj/MSs6+lcvd hb4Ruj7bUkO34PKloMcUtiNTLtOjHcBtERcvWJjdER+tVMMEm3CIUx9eNEZW3UBSN0xWoIWVqNz 2/eJMWtqAZ9vLJRROSltffw+xgiAFit4Eqhsp9a9ZuRjk89dqBwSIWslLFLFowyx9ciXObfLckW TViHft7yyTLch1AJNcw== X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-07-07_04,2026-07-06_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 clxscore=1015 malwarescore=0 adultscore=0 phishscore=0 impostorscore=0 priorityscore=1501 lowpriorityscore=0 bulkscore=0 spamscore=0 suspectscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607070179 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=205.220.180.131; envelope-from=philmd@oss.qualcomm.com; helo=mx0b-0031df01.pphosted.com X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 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_LOW=-0.7, 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 @qualcomm.com) X-ZM-MESSAGEID: 1783448260179158500 From: James Hilliard Add helper support for the Octeon Camellia ROUND, FL, and FLINV selectors. The engine reuses the AES RESINP bank, and guest-managed key schedules drive the Camellia F-function and FL layers through these COP2 operations. Implement the Camellia F-function and FL layers directly from RFC 3713. Signed-off-by: James Hilliard Message-ID: <20260608-mips-octeon-missing-insns-v2-v16-11-daef7a0d8b04@gmai= l.com> Signed-off-by: Philippe Mathieu-Daud=C3=A9 --- target/mips/helper.h | 3 + target/mips/tcg/octeon_crypto.c | 126 ++++++++++++++++++++++++++++++++ 2 files changed, 129 insertions(+) diff --git a/target/mips/helper.h b/target/mips/helper.h index c9332c5c522..71b7a2b30ec 100644 --- a/target/mips/helper.h +++ b/target/mips/helper.h @@ -66,6 +66,9 @@ DEF_HELPER_2(octeon_cp2_mt_des3_enc, void, env, i64) DEF_HELPER_2(octeon_cp2_mt_kas_enc, void, env, i64) DEF_HELPER_2(octeon_cp2_mt_des3_dec_cbc, void, env, i64) DEF_HELPER_2(octeon_cp2_mt_des3_dec, void, env, i64) +DEF_HELPER_2(octeon_cp2_mt_camellia_fl, void, env, i64) +DEF_HELPER_2(octeon_cp2_mt_camellia_flinv, void, env, i64) +DEF_HELPER_2(octeon_cp2_mt_camellia_round, void, env, i64) =20 /* microMIPS functions */ DEF_HELPER_4(lwm, void, env, tl, tl, i32) diff --git a/target/mips/tcg/octeon_crypto.c b/target/mips/tcg/octeon_crypt= o.c index 8ea79e37568..430feaf5f4f 100644 --- a/target/mips/tcg/octeon_crypto.c +++ b/target/mips/tcg/octeon_crypto.c @@ -1566,6 +1566,132 @@ void helper_octeon_cp2_mt_des3_dec(CPUMIPSState *en= v, uint64_t value) octeon_3des_crypt_common(&env->octeon_crypto, value, false, false); } =20 +static const uint8_t camellia_sbox1[256] =3D { + 112, 130, 44, 236, 179, 39, 192, 229, 228, 133, 87, 53, 234, 12, + 174, 65, 35, 239, 107, 147, 69, 25, 165, 33, 237, 14, 79, 78, + 29, 101, 146, 189, 134, 184, 175, 143, 124, 235, 31, 206, 62, 48, + 220, 95, 94, 197, 11, 26, 166, 225, 57, 202, 213, 71, 93, 61, + 217, 1, 90, 214, 81, 86, 108, 77, 139, 13, 154, 102, 251, 204, + 176, 45, 116, 18, 43, 32, 240, 177, 132, 153, 223, 76, 203, 194, + 52, 126, 118, 5, 109, 183, 169, 49, 209, 23, 4, 215, 20, 88, + 58, 97, 222, 27, 17, 28, 50, 15, 156, 22, 83, 24, 242, 34, + 254, 68, 207, 178, 195, 181, 122, 145, 36, 8, 232, 168, 96, 252, + 105, 80, 170, 208, 160, 125, 161, 137, 98, 151, 84, 91, 30, 149, + 224, 255, 100, 210, 16, 196, 0, 72, 163, 247, 117, 219, 138, 3, + 230, 218, 9, 63, 221, 148, 135, 92, 131, 2, 205, 74, 144, 51, + 115, 103, 246, 243, 157, 127, 191, 226, 82, 155, 216, 38, 200, 55, + 198, 59, 129, 150, 111, 75, 19, 190, 99, 46, 233, 121, 167, 140, + 159, 110, 188, 142, 41, 245, 249, 182, 47, 253, 180, 89, 120, 152, + 6, 106, 231, 70, 113, 186, 212, 37, 171, 66, 136, 162, 141, 250, + 114, 7, 185, 85, 248, 238, 172, 10, 54, 73, 42, 104, 60, 56, + 241, 164, 64, 40, 211, 123, 187, 201, 67, 193, 21, 227, 173, 244, + 119, 199, 128, 158, +}; + +static uint8_t camellia_rotl8(uint8_t v, unsigned int shift) +{ + return (v << shift) | (v >> (8 - shift)); +} + +static uint8_t camellia_sbox2(uint8_t x) +{ + return camellia_rotl8(camellia_sbox1[x], 1); +} + +static uint8_t camellia_sbox3(uint8_t x) +{ + return camellia_rotl8(camellia_sbox1[x], 7); +} + +static uint8_t camellia_sbox4(uint8_t x) +{ + return camellia_sbox1[camellia_rotl8(x, 1)]; +} + +static uint64_t camellia_f(uint64_t input, uint64_t key) +{ + uint64_t x =3D input ^ key; + uint8_t t1 =3D camellia_sbox1[x >> 56]; + uint8_t t2 =3D camellia_sbox2((x >> 48) & 0xff); + uint8_t t3 =3D camellia_sbox3((x >> 40) & 0xff); + uint8_t t4 =3D camellia_sbox4((x >> 32) & 0xff); + uint8_t t5 =3D camellia_sbox2((x >> 24) & 0xff); + uint8_t t6 =3D camellia_sbox3((x >> 16) & 0xff); + uint8_t t7 =3D camellia_sbox4((x >> 8) & 0xff); + uint8_t t8 =3D camellia_sbox1[x & 0xff]; + uint8_t y1 =3D t1 ^ t3 ^ t4 ^ t6 ^ t7 ^ t8; + uint8_t y2 =3D t1 ^ t2 ^ t4 ^ t5 ^ t7 ^ t8; + uint8_t y3 =3D t1 ^ t2 ^ t3 ^ t5 ^ t6 ^ t8; + uint8_t y4 =3D t2 ^ t3 ^ t4 ^ t5 ^ t6 ^ t7; + uint8_t y5 =3D t1 ^ t2 ^ t6 ^ t7 ^ t8; + uint8_t y6 =3D t2 ^ t3 ^ t5 ^ t7 ^ t8; + uint8_t y7 =3D t3 ^ t4 ^ t5 ^ t6 ^ t8; + uint8_t y8 =3D t1 ^ t4 ^ t5 ^ t6 ^ t7; + + return ((uint64_t)y1 << 56) | ((uint64_t)y2 << 48) | + ((uint64_t)y3 << 40) | ((uint64_t)y4 << 32) | + ((uint64_t)y5 << 24) | ((uint64_t)y6 << 16) | + ((uint64_t)y7 << 8) | y8; +} + +static uint64_t camellia_fl(uint64_t input, uint64_t key) +{ + uint32_t x1 =3D input >> 32; + uint32_t x2 =3D input; + uint32_t k1 =3D key >> 32; + uint32_t k2 =3D key; + + x2 ^=3D rol32(x1 & k1, 1); + x1 ^=3D x2 | k2; + return ((uint64_t)x1 << 32) | x2; +} + +static uint64_t camellia_flinv(uint64_t input, uint64_t key) +{ + uint32_t y1 =3D input >> 32; + uint32_t y2 =3D input; + uint32_t k1 =3D key >> 32; + uint32_t k2 =3D key; + + y1 ^=3D y2 | k2; + y2 ^=3D rol32(y1 & k1, 1); + return ((uint64_t)y1 << 32) | y2; +} + +static void octeon_camellia_round(MIPSOcteonCryptoState *crypto, uint64_t = key) +{ + uint64_t left =3D crypto->aes_resinp[0]; + uint64_t right =3D crypto->aes_resinp[1]; + + crypto->aes_resinp[0] =3D right ^ camellia_f(left, key); + crypto->aes_resinp[1] =3D left; +} + +static void octeon_camellia_fl_layer(MIPSOcteonCryptoState *crypto, + uint64_t key, bool inverse) +{ + uint64_t state =3D crypto->aes_resinp[inverse ? 1 : 0]; + + crypto->aes_resinp[inverse ? 1 : 0] =3D inverse ? + camellia_flinv(state, key) : + camellia_fl(state, key); +} + +void helper_octeon_cp2_mt_camellia_fl(CPUMIPSState *env, uint64_t value) +{ + octeon_camellia_fl_layer(&env->octeon_crypto, value, false); +} + +void helper_octeon_cp2_mt_camellia_flinv(CPUMIPSState *env, uint64_t value) +{ + octeon_camellia_fl_layer(&env->octeon_crypto, value, true); +} + +void helper_octeon_cp2_mt_camellia_round(CPUMIPSState *env, uint64_t value) +{ + octeon_camellia_round(&env->octeon_crypto, value); +} + void helper_octeon_cp2_mt_snow3g_start(CPUMIPSState *env, uint64_t value) { octeon_snow3g_start(&env->octeon_crypto, value); --=20 2.53.0 From nobody Sun Jul 26 10:07:33 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=reject dis=none) header.from=oss.qualcomm.com ARC-Seal: i=1; a=rsa-sha256; t=1783448388; cv=none; d=zohomail.com; s=zohoarc; b=jfY0RAEZzWhJjqnOkB9BVzWQmDVBgLAXgKBTMDJCALnQgLRiJlb55qAUgNiocLMQIPrB9VomUUbKLaxz0dTnxECuIzdoqtYZrE8EYE2B52SULOrjWZGxWNYWNpKTzqv5rQJPTFEwndkOlQUmznOQKnhGfOrZ9IRqLPR8cddyV/k= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783448388; h=Content-Type:Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=vEe9Wl+taRnXqkHRSN+2MdxFOgsFVynXJOEj5Lz7Ef8=; b=Tvt6u6gAlP2EAL7Q59/+WFOZfWA+Vnu2zKR55JxeoJwOdTALkL8iEKdK8+r2BxitEYYZgWZxIeU1co0t4G1a1B4Maml03jIYiovafJIdLkOHv6TqvUZLQNfAGwuiqGVzyEPLoMGlAUa7O8m0kHtYAhwIT+v60D+4mTufBVfqPdQ= 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=reject dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1783448388464805.0527491411176; Tue, 7 Jul 2026 11:19:48 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1whAMw-0006q5-HV; Tue, 07 Jul 2026 14:18:08 -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 1whALx-0005NE-KF for qemu-devel@nongnu.org; Tue, 07 Jul 2026 14:17:06 -0400 Received: from mx0a-0031df01.pphosted.com ([205.220.168.131]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1whALv-0006S1-3R for qemu-devel@nongnu.org; Tue, 07 Jul 2026 14:17:05 -0400 Received: from pps.filterd (m0279865.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 667FT0uR045671 for ; Tue, 7 Jul 2026 18:16:59 GMT Received: from mail-qt1-f198.google.com (mail-qt1-f198.google.com [209.85.160.198]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4f8w11tr8s-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Tue, 07 Jul 2026 18:16:59 +0000 (GMT) Received: by mail-qt1-f198.google.com with SMTP id d75a77b69052e-51c01ff996dso60156901cf.2 for ; Tue, 07 Jul 2026 11:16: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 ffacd0b85a97d-47a9e4d780csm36719448f8f.11.2026.07.07.11.16.54 for (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Tue, 07 Jul 2026 11:16:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= vEe9Wl+taRnXqkHRSN+2MdxFOgsFVynXJOEj5Lz7Ef8=; b=W1k/HZfSYBU4O45i e+hgC5kimihfsvDIDd8JedTAfwRhFgZxEDz6ExxJsaUh5JSsX2/RF8gzoKvnXJrO /PU6gnaZgMCxdWg+X5673sN2G3eR0YtlY1SEExNQpv0pwmos2tCUzIabyL+IhMBU XI76zi3SdgNuta+lMbEgMMgQ4+zjPsHTk3mxMwsVg4IkCRpecAAJvV9IhNn3tXEW yTCOyr/HpeB2IP8sCp27MQyu20wB/z0G/cfCmpHRreKySLrlrMV/3ZRlxp9qDKGU vu8dVGcAUtqtmSyLTeh0tIRhpfSD1QNUzqG2GD7CoM6YHZNLn0atQ7dFCvuZqGSq 9E8bmA== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1783448219; x=1784053019; darn=nongnu.org; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=vEe9Wl+taRnXqkHRSN+2MdxFOgsFVynXJOEj5Lz7Ef8=; b=MFxO3gk51QCOAMSmkAM1Wwhvk0tWNiukYXR3gS0CAuUczqnPHgTwtFZcZZPmYSFnGn 6447TFOXx901YG9ArDrb2q+6Y1alr39TQhgcowUtaOk9YqiQIcT85QnW2ufkralg85G5 dMSeS+nsosPYT0hm/FGWO/SnEeSPLRbFCg5sSNRjFCCQYemB7hN8lNVpVZXNWZ8C7KNg G0xtqcjB8xZCwBOcGhD0xV+pQq2J/r6QZp8R4AjX8Xx9hIU8WPdoVzhCq4xK8SjjlhbK tNtrgX125s58Q5UfM+GIBBM7NJqdCdsN2ewG0zbMYoZF3EMu9W/+yyue7COCphrLYna4 CakQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783448219; x=1784053019; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:to:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=vEe9Wl+taRnXqkHRSN+2MdxFOgsFVynXJOEj5Lz7Ef8=; b=rnhzHvrMt/TMbwKLRVXfBvTowED0erbHqQe+RALLnEMYy2evzhv/fm+7jSnHBdXsSF 3H/dJazHP3GdcPBQvYfuCRZY04h0vtFq69Ywy0zfJdOzbsLLz3RqK0b1SQxoZklMt43u ZjWcu1DLkdkOXWaaVGyTMHcnw2UlytdSHyK7aoZjWdHCVk3CjxKOapd9CQkPW61Pi0hE 33uRF50MZ+1nWfkRHMvkGxDdlYFeeEU5PTaR/dztcO+ubfUtZn78RUfFR8Usb6/4LVcj U7WoMIwrJB9Sg5IswwxobveNeNaGhFD9ZHdNeRODjd6UbEoxE0AbqOZxwwJXUDXCoH4P pS7A== X-Gm-Message-State: AOJu0YzAp6F8Jb/6JSaHj2UNeVrlZiZYZbKFG9FAKnCg5rMJ1apLreKE o4Tzkgl9pE1tbPXUuxzkPBf//uD5k+kkrZt8YsbDLHOVQP/npxDmpWTThvKhgJIjTIVUrZbpJRj ACk8wat7V8Y7BRH8/WVS0lNiUx6elJlyuUiBjpqTiUUMAbfCMpHB/FNwdazza8OZiQg== X-Gm-Gg: AfdE7cli8T+QpWgwwj/hCQZ0Tw/OJtPFBfhv/MT0kPx84G63e0ZkWiM9LAxrADMA4ki uA1vRQo87wUdgh3qG4HwaHor9uXCDubjtO27a6WD4VqwNbClg1GsvKIGOpgprbmKk39oxgU+O4u CBSH1vdaNBUu8g9Xfmgx8I2p/aqevSSaXnTBCHvSENB458DniI5A0SWOi4hvngdJjxR9vcvWAFL vEt69UhTxCnj5MlYApEAUvG/NmDF8bt7KFJtwfIZAV2bDS5HIKIEmmECwSQsRakruvV97KUkBD3 BF2+DwEG1aVS20bc4pFIYaoIhcrwpDmvpcbzxwTdvoZn+SEXMIiekyCtWJoMlKqi7wO2fnEcN+x v2V7yDF8+u7S5TIucImLLsnoZ0Ovn6AFMvVYFyMxn/zHdmwJvzPk4i46gaqjEoRGsTBZn X-Received: by 2002:a05:622a:c:b0:517:905d:dc72 with SMTP id d75a77b69052e-51c747b9bccmr69299051cf.18.1783448216873; Tue, 07 Jul 2026 11:16:56 -0700 (PDT) X-Received: by 2002:a05:622a:c:b0:517:905d:dc72 with SMTP id d75a77b69052e-51c747b9bccmr69298051cf.18.1783448215206; Tue, 07 Jul 2026 11:16:55 -0700 (PDT) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Subject: [PULL 12/23] target/mips: add Octeon HSH COP2 helpers Date: Tue, 7 Jul 2026 20:15:17 +0200 Message-ID: <20260707181529.60191-13-philmd@oss.qualcomm.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260707181529.60191-1-philmd@oss.qualcomm.com> References: <20260707181529.60191-1-philmd@oss.qualcomm.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Authority-Analysis: v=2.4 cv=DMe/JSNb c=1 sm=1 tr=0 ts=6a4d429b cx=c_pps a=mPf7EqFMSY9/WdsSgAYMbA==:117 a=4s3hRJSeHn4rkQlkrse1kQ==:17 a=IkcTkHD0fZMA:10 a=RAioF0-LDSMA:10 a=M51BFTxLslgA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=Um2Pa8k9VHT-vaBCBUpS:22 a=pGLkceISAAAA:8 a=EUspDBNiAAAA:8 a=_afTZPkRUK3DIx4k--EA:9 a=3ZKOabzyN94A:10 a=QEXdDO2ut3YA:10 a=dawVfQjAaf238kedN5IG:22 X-Proofpoint-GUID: rt5tNLFPsxezxMmet6u7GBl8h1ntFfG_ X-Proofpoint-Spam-Info: AW1haW4tMjYwNzA3MDE3OSBTYWx0ZWRfX1Z/oMM5yxomM jDGjaZG6OTwtpDk4m5SAiPvZW8HPcGaIoV7xNGVEXRWGjvz56ahs3IGHkon4D70vRXflto6VH5e mN6sqGu62wnal2v5sNOVHmp9tetMW54= X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzA3MDE3OSBTYWx0ZWRfX977QJCMRDceo LWVQHXR78oCLMGLwHGGLleYkXWrpoOfKUUslqXYKMnfwCi6Soj1diqrSnbXsaRi7+YUSDvNQVLP NYVICJNoW1j5FQgkljqOv9i4HuXcu3TIjqsQIAORT+Oful8Ql3IUGgbmb3EA8AxDJkMlA4vVMph TRsN2HRHSjuMAIZXq7AedU6cCzQ4FdubPNNd/6aqOABcSN9ogfWjT1PFOH+XLQ+yqbsWSlvk0R1 7+fNkjk196HRbVKxScuW7McGAlmmdoE9Pff/jX4i7YnU1YRPjGbj9bpGJTK3qHaVMR/OmwaptkU 54sth6zYORVBDE+2+PB6+BgAg19cxchAAu/t4sRo10AK1GXLjK9X8yd2dL78FTCZGJMd4OdgPqa 3Sg5+CPlKFiFeAKNs1AhCxLSbQEG6tmhRvDNFyRTONyxuH3mal0gWU8D4gaQdQxhZ2speSTOVh1 Klx+IVa6HfsnbQ4MLaw== X-Proofpoint-ORIG-GUID: rt5tNLFPsxezxMmet6u7GBl8h1ntFfG_ X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-07-07_04,2026-07-06_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 malwarescore=0 impostorscore=0 suspectscore=0 phishscore=0 clxscore=1015 spamscore=0 priorityscore=1501 bulkscore=0 adultscore=0 lowpriorityscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607070179 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=205.220.168.131; envelope-from=philmd@oss.qualcomm.com; helo=mx0a-0031df01.pphosted.com X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 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_LOW=-0.7, 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 @qualcomm.com) X-ZM-MESSAGEID: 1783448389031158500 From: James Hilliard Add helper support for the Octeon HSH hash selectors. This includes the base HSH data/IV windows, MD5, SHA1, SHA256, and SHA512 transform paths, and the shared HSH/SHA512 register-window readback and write operations. The SHA512 path shares the wide HSH register bank with SHA3, SNOW3G, and ZUC. Keep the aliased readback and write paths centralized so selector decode can route register accesses through these helpers when side effects are required. Signed-off-by: James Hilliard Message-ID: <20260608-mips-octeon-missing-insns-v2-v16-12-daef7a0d8b04@gmai= l.com> Signed-off-by: Philippe Mathieu-Daud=C3=A9 --- target/mips/helper.h | 5 + target/mips/tcg/octeon_crypto.c | 373 ++++++++++++++++++++++++++++++++ 2 files changed, 378 insertions(+) diff --git a/target/mips/helper.h b/target/mips/helper.h index 71b7a2b30ec..834f2d07690 100644 --- a/target/mips/helper.h +++ b/target/mips/helper.h @@ -69,6 +69,11 @@ DEF_HELPER_2(octeon_cp2_mt_des3_dec, void, env, i64) DEF_HELPER_2(octeon_cp2_mt_camellia_fl, void, env, i64) DEF_HELPER_2(octeon_cp2_mt_camellia_flinv, void, env, i64) DEF_HELPER_2(octeon_cp2_mt_camellia_round, void, env, i64) +DEF_HELPER_2(octeon_cp2_mt_hsh_startsha1_compat, void, env, i64) +DEF_HELPER_2(octeon_cp2_mt_hsh_startmd5, void, env, i64) +DEF_HELPER_2(octeon_cp2_mt_hsh_startsha256, void, env, i64) +DEF_HELPER_2(octeon_cp2_mt_hsh_startsha, void, env, i64) +DEF_HELPER_2(octeon_cp2_mt_hsh_startsha512, void, env, i64) =20 /* microMIPS functions */ DEF_HELPER_4(lwm, void, env, tl, tl, i32) diff --git a/target/mips/tcg/octeon_crypto.c b/target/mips/tcg/octeon_crypt= o.c index 430feaf5f4f..82ad355d56f 100644 --- a/target/mips/tcg/octeon_crypto.c +++ b/target/mips/tcg/octeon_crypto.c @@ -153,6 +153,346 @@ static void octeon_gfm_mul64_uia2(const uint64_t x[2]= , const uint64_t y[2], out[1] =3D revbit64(res); } =20 +static uint32_t octeon_hsh_get32(const uint64_t *regs, unsigned int index) +{ + return regs[index]; +} + +static void octeon_hsh_set32(uint64_t *regs, unsigned int index, uint32_t = value) +{ + regs[index] =3D (regs[index] & ~(uint64_t)UINT32_MAX) | value; +} + +static void octeon_hsh_set_pair(uint64_t *regs, unsigned int index, + uint64_t value) +{ + octeon_hsh_set32(regs, index * 2, value >> 32); + octeon_hsh_set32(regs, index * 2 + 1, value); +} + +static void octeon_md5_transform(MIPSOcteonCryptoState *crypto) +{ + static const uint32_t k[64] =3D { + 0xd76aa478U, 0xe8c7b756U, 0x242070dbU, 0xc1bdceeeU, + 0xf57c0fafU, 0x4787c62aU, 0xa8304613U, 0xfd469501U, + 0x698098d8U, 0x8b44f7afU, 0xffff5bb1U, 0x895cd7beU, + 0x6b901122U, 0xfd987193U, 0xa679438eU, 0x49b40821U, + 0xf61e2562U, 0xc040b340U, 0x265e5a51U, 0xe9b6c7aaU, + 0xd62f105dU, 0x02441453U, 0xd8a1e681U, 0xe7d3fbc8U, + 0x21e1cde6U, 0xc33707d6U, 0xf4d50d87U, 0x455a14edU, + 0xa9e3e905U, 0xfcefa3f8U, 0x676f02d9U, 0x8d2a4c8aU, + 0xfffa3942U, 0x8771f681U, 0x6d9d6122U, 0xfde5380cU, + 0xa4beea44U, 0x4bdecfa9U, 0xf6bb4b60U, 0xbebfbc70U, + 0x289b7ec6U, 0xeaa127faU, 0xd4ef3085U, 0x04881d05U, + 0xd9d4d039U, 0xe6db99e5U, 0x1fa27cf8U, 0xc4ac5665U, + 0xf4292244U, 0x432aff97U, 0xab9423a7U, 0xfc93a039U, + 0x655b59c3U, 0x8f0ccc92U, 0xffeff47dU, 0x85845dd1U, + 0x6fa87e4fU, 0xfe2ce6e0U, 0xa3014314U, 0x4e0811a1U, + 0xf7537e82U, 0xbd3af235U, 0x2ad7d2bbU, 0xeb86d391U, + }; + static const uint8_t s[64] =3D { + 7, 12, 17, 22, 7, 12, 17, 22, 7, 12, 17, 22, 7, 12, 17, 22, + 5, 9, 14, 20, 5, 9, 14, 20, 5, 9, 14, 20, 5, 9, 14, 20, + 4, 11, 16, 23, 4, 11, 16, 23, 4, 11, 16, 23, 4, 11, 16, 23, + 6, 10, 15, 21, 6, 10, 15, 21, 6, 10, 15, 21, 6, 10, 15, 21, + }; + uint32_t m[16]; + uint32_t a, b, c, d; + uint32_t aa, bb, cc, dd; + int i; + + for (i =3D 0; i < 16; i++) { + m[i] =3D bswap32(octeon_hsh_get32(crypto->hsh_dat, i)); + } + + a =3D bswap32(octeon_hsh_get32(crypto->hsh_iv, 0)); + b =3D bswap32(octeon_hsh_get32(crypto->hsh_iv, 1)); + c =3D bswap32(octeon_hsh_get32(crypto->hsh_iv, 2)); + d =3D bswap32(octeon_hsh_get32(crypto->hsh_iv, 3)); + aa =3D a; + bb =3D b; + cc =3D c; + dd =3D d; + + for (i =3D 0; i < 64; i++) { + uint32_t f, g, tmp; + + if (i < 16) { + f =3D (b & c) | ((~b) & d); + g =3D i; + } else if (i < 32) { + f =3D (d & b) | ((~d) & c); + g =3D (5 * i + 1) & 0xf; + } else if (i < 48) { + f =3D b ^ c ^ d; + g =3D (3 * i + 5) & 0xf; + } else { + f =3D c ^ (b | (~d)); + g =3D (7 * i) & 0xf; + } + + tmp =3D d; + d =3D c; + c =3D b; + b =3D b + rol32(a + f + k[i] + m[g], s[i]); + a =3D tmp; + } + + a +=3D aa; + b +=3D bb; + c +=3D cc; + d +=3D dd; + octeon_hsh_set32(crypto->hsh_iv, 0, bswap32(a)); + octeon_hsh_set32(crypto->hsh_iv, 1, bswap32(b)); + octeon_hsh_set32(crypto->hsh_iv, 2, bswap32(c)); + octeon_hsh_set32(crypto->hsh_iv, 3, bswap32(d)); +} + +static void octeon_sha1_transform(MIPSOcteonCryptoState *crypto) +{ + uint32_t w[80]; + uint32_t a, b, c, d, e; + uint32_t orig[5]; + int i; + + for (i =3D 0; i < 16; i++) { + w[i] =3D octeon_hsh_get32(crypto->hsh_dat, i); + } + for (i =3D 16; i < 80; i++) { + w[i] =3D rol32(w[i - 3] ^ w[i - 8] ^ w[i - 14] ^ w[i - 16], 1); + } + + for (i =3D 0; i < 5; i++) { + orig[i] =3D octeon_hsh_get32(crypto->hsh_iv, i); + } + a =3D orig[0]; + b =3D orig[1]; + c =3D orig[2]; + d =3D orig[3]; + e =3D orig[4]; + + for (i =3D 0; i < 80; i++) { + uint32_t f, k, temp; + + if (i < 20) { + f =3D (b & c) | ((~b) & d); + k =3D 0x5a827999; + } else if (i < 40) { + f =3D b ^ c ^ d; + k =3D 0x6ed9eba1; + } else if (i < 60) { + f =3D (b & c) | (b & d) | (c & d); + k =3D 0x8f1bbcdc; + } else { + f =3D b ^ c ^ d; + k =3D 0xca62c1d6; + } + + temp =3D rol32(a, 5) + f + e + k + w[i]; + e =3D d; + d =3D c; + c =3D rol32(b, 30); + b =3D a; + a =3D temp; + } + + orig[0] +=3D a; + orig[1] +=3D b; + orig[2] +=3D c; + orig[3] +=3D d; + orig[4] +=3D e; + for (i =3D 0; i < 5; i++) { + octeon_hsh_set32(crypto->hsh_iv, i, orig[i]); + } +} + +static void octeon_sha256_transform(MIPSOcteonCryptoState *crypto) +{ + static const uint32_t k[64] =3D { + 0x428a2f98U, 0x71374491U, 0xb5c0fbcfU, 0xe9b5dba5U, + 0x3956c25bU, 0x59f111f1U, 0x923f82a4U, 0xab1c5ed5U, + 0xd807aa98U, 0x12835b01U, 0x243185beU, 0x550c7dc3U, + 0x72be5d74U, 0x80deb1feU, 0x9bdc06a7U, 0xc19bf174U, + 0xe49b69c1U, 0xefbe4786U, 0x0fc19dc6U, 0x240ca1ccU, + 0x2de92c6fU, 0x4a7484aaU, 0x5cb0a9dcU, 0x76f988daU, + 0x983e5152U, 0xa831c66dU, 0xb00327c8U, 0xbf597fc7U, + 0xc6e00bf3U, 0xd5a79147U, 0x06ca6351U, 0x14292967U, + 0x27b70a85U, 0x2e1b2138U, 0x4d2c6dfcU, 0x53380d13U, + 0x650a7354U, 0x766a0abbU, 0x81c2c92eU, 0x92722c85U, + 0xa2bfe8a1U, 0xa81a664bU, 0xc24b8b70U, 0xc76c51a3U, + 0xd192e819U, 0xd6990624U, 0xf40e3585U, 0x106aa070U, + 0x19a4c116U, 0x1e376c08U, 0x2748774cU, 0x34b0bcb5U, + 0x391c0cb3U, 0x4ed8aa4aU, 0x5b9cca4fU, 0x682e6ff3U, + 0x748f82eeU, 0x78a5636fU, 0x84c87814U, 0x8cc70208U, + 0x90befffaU, 0xa4506cebU, 0xbef9a3f7U, 0xc67178f2U, + }; + uint32_t w[64]; + uint32_t a, b, c, d, e, f, g, h; + uint32_t orig[8]; + int i; + + for (i =3D 0; i < 16; i++) { + w[i] =3D octeon_hsh_get32(crypto->hsh_dat, i); + } + for (i =3D 16; i < 64; i++) { + uint32_t s0 =3D ror32(w[i - 15], 7) ^ + ror32(w[i - 15], 18) ^ + (w[i - 15] >> 3); + uint32_t s1 =3D ror32(w[i - 2], 17) ^ + ror32(w[i - 2], 19) ^ + (w[i - 2] >> 10); + w[i] =3D w[i - 16] + s0 + w[i - 7] + s1; + } + + for (i =3D 0; i < 8; i++) { + orig[i] =3D octeon_hsh_get32(crypto->hsh_iv, i); + } + a =3D orig[0]; + b =3D orig[1]; + c =3D orig[2]; + d =3D orig[3]; + e =3D orig[4]; + f =3D orig[5]; + g =3D orig[6]; + h =3D orig[7]; + + for (i =3D 0; i < 64; i++) { + uint32_t s1 =3D ror32(e, 6) ^ + ror32(e, 11) ^ + ror32(e, 25); + uint32_t ch =3D (e & f) ^ ((~e) & g); + uint32_t temp1 =3D h + s1 + ch + k[i] + w[i]; + uint32_t s0 =3D ror32(a, 2) ^ + ror32(a, 13) ^ + ror32(a, 22); + uint32_t maj =3D (a & b) ^ (a & c) ^ (b & c); + uint32_t temp2 =3D s0 + maj; + + h =3D g; + g =3D f; + f =3D e; + e =3D d + temp1; + d =3D c; + c =3D b; + b =3D a; + a =3D temp1 + temp2; + } + + orig[0] +=3D a; + orig[1] +=3D b; + orig[2] +=3D c; + orig[3] +=3D d; + orig[4] +=3D e; + orig[5] +=3D f; + orig[6] +=3D g; + orig[7] +=3D h; + for (i =3D 0; i < 8; i++) { + octeon_hsh_set32(crypto->hsh_iv, i, orig[i]); + } +} + +static void octeon_sha512_transform(MIPSOcteonCryptoState *crypto) +{ + static const uint64_t k[80] =3D { + 0x428a2f98d728ae22ULL, 0x7137449123ef65cdULL, + 0xb5c0fbcfec4d3b2fULL, 0xe9b5dba58189dbbcULL, + 0x3956c25bf348b538ULL, 0x59f111f1b605d019ULL, + 0x923f82a4af194f9bULL, 0xab1c5ed5da6d8118ULL, + 0xd807aa98a3030242ULL, 0x12835b0145706fbeULL, + 0x243185be4ee4b28cULL, 0x550c7dc3d5ffb4e2ULL, + 0x72be5d74f27b896fULL, 0x80deb1fe3b1696b1ULL, + 0x9bdc06a725c71235ULL, 0xc19bf174cf692694ULL, + 0xe49b69c19ef14ad2ULL, 0xefbe4786384f25e3ULL, + 0x0fc19dc68b8cd5b5ULL, 0x240ca1cc77ac9c65ULL, + 0x2de92c6f592b0275ULL, 0x4a7484aa6ea6e483ULL, + 0x5cb0a9dcbd41fbd4ULL, 0x76f988da831153b5ULL, + 0x983e5152ee66dfabULL, 0xa831c66d2db43210ULL, + 0xb00327c898fb213fULL, 0xbf597fc7beef0ee4ULL, + 0xc6e00bf33da88fc2ULL, 0xd5a79147930aa725ULL, + 0x06ca6351e003826fULL, 0x142929670a0e6e70ULL, + 0x27b70a8546d22ffcULL, 0x2e1b21385c26c926ULL, + 0x4d2c6dfc5ac42aedULL, 0x53380d139d95b3dfULL, + 0x650a73548baf63deULL, 0x766a0abb3c77b2a8ULL, + 0x81c2c92e47edaee6ULL, 0x92722c851482353bULL, + 0xa2bfe8a14cf10364ULL, 0xa81a664bbc423001ULL, + 0xc24b8b70d0f89791ULL, 0xc76c51a30654be30ULL, + 0xd192e819d6ef5218ULL, 0xd69906245565a910ULL, + 0xf40e35855771202aULL, 0x106aa07032bbd1b8ULL, + 0x19a4c116b8d2d0c8ULL, 0x1e376c085141ab53ULL, + 0x2748774cdf8eeb99ULL, 0x34b0bcb5e19b48a8ULL, + 0x391c0cb3c5c95a63ULL, 0x4ed8aa4ae3418acbULL, + 0x5b9cca4f7763e373ULL, 0x682e6ff3d6b2b8a3ULL, + 0x748f82ee5defb2fcULL, 0x78a5636f43172f60ULL, + 0x84c87814a1f0ab72ULL, 0x8cc702081a6439ecULL, + 0x90befffa23631e28ULL, 0xa4506cebde82bde9ULL, + 0xbef9a3f7b2c67915ULL, 0xc67178f2e372532bULL, + 0xca273eceea26619cULL, 0xd186b8c721c0c207ULL, + 0xeada7dd6cde0eb1eULL, 0xf57d4f7fee6ed178ULL, + 0x06f067aa72176fbaULL, 0x0a637dc5a2c898a6ULL, + 0x113f9804bef90daeULL, 0x1b710b35131c471bULL, + 0x28db77f523047d84ULL, 0x32caab7b40c72493ULL, + 0x3c9ebe0a15c9bebcULL, 0x431d67c49c100d4cULL, + 0x4cc5d4becb3e42b6ULL, 0x597f299cfc657e2aULL, + 0x5fcb6fab3ad6faecULL, 0x6c44198c4a475817ULL, + }; + uint64_t w[80]; + uint64_t a, b, c, d, e, f, g, h; + int i; + + for (i =3D 0; i < 16; i++) { + w[i] =3D crypto->hsh_dat[i]; + } + for (i =3D 16; i < 80; i++) { + uint64_t s0 =3D ror64(w[i - 15], 1) ^ + ror64(w[i - 15], 8) ^ + (w[i - 15] >> 7); + uint64_t s1 =3D ror64(w[i - 2], 19) ^ + ror64(w[i - 2], 61) ^ + (w[i - 2] >> 6); + w[i] =3D w[i - 16] + s0 + w[i - 7] + s1; + } + + a =3D crypto->hsh_iv[0]; + b =3D crypto->hsh_iv[1]; + c =3D crypto->hsh_iv[2]; + d =3D crypto->hsh_iv[3]; + e =3D crypto->hsh_iv[4]; + f =3D crypto->hsh_iv[5]; + g =3D crypto->hsh_iv[6]; + h =3D crypto->hsh_iv[7]; + + for (i =3D 0; i < 80; i++) { + uint64_t s0 =3D ror64(a, 28) ^ + ror64(a, 34) ^ + ror64(a, 39); + uint64_t s1 =3D ror64(e, 14) ^ + ror64(e, 18) ^ + ror64(e, 41); + uint64_t ch =3D (e & f) ^ ((~e) & g); + uint64_t maj =3D (a & b) ^ (a & c) ^ (b & c); + uint64_t temp1 =3D h + s1 + ch + k[i] + w[i]; + uint64_t temp2 =3D s0 + maj; + + h =3D g; + g =3D f; + f =3D e; + e =3D d + temp1; + d =3D c; + c =3D b; + b =3D a; + a =3D temp1 + temp2; + } + + crypto->hsh_iv[0] +=3D a; + crypto->hsh_iv[1] +=3D b; + crypto->hsh_iv[2] +=3D c; + crypto->hsh_iv[3] +=3D d; + crypto->hsh_iv[4] +=3D e; + crypto->hsh_iv[5] +=3D f; + crypto->hsh_iv[6] +=3D g; + crypto->hsh_iv[7] +=3D h; +} + static const uint64_t octeon_sha3_round_constants[24] =3D { 0x0000000000000001ULL, 0x0000000000008082ULL, 0x800000000000808aULL, 0x8000000080008000ULL, @@ -1713,6 +2053,39 @@ void helper_octeon_cp2_mt_zuc_more(CPUMIPSState *env= , uint64_t value) octeon_zuc_more(&env->octeon_crypto, value); } =20 +void helper_octeon_cp2_mt_hsh_startsha1_compat(CPUMIPSState *env, + uint64_t value) +{ + octeon_hsh_set_pair(env->octeon_crypto.hsh_dat, 7, value); + octeon_sha1_transform(&env->octeon_crypto); +} + +void helper_octeon_cp2_mt_hsh_startmd5(CPUMIPSState *env, uint64_t value) +{ + octeon_hsh_set_pair(env->octeon_crypto.hsh_dat, 7, value); + octeon_md5_transform(&env->octeon_crypto); +} + +void helper_octeon_cp2_mt_hsh_startsha256(CPUMIPSState *env, uint64_t valu= e) +{ + octeon_hsh_set_pair(env->octeon_crypto.hsh_dat, 7, value); + octeon_sha256_transform(&env->octeon_crypto); +} + +void helper_octeon_cp2_mt_hsh_startsha(CPUMIPSState *env, uint64_t value) +{ + octeon_hsh_set_pair(env->octeon_crypto.hsh_dat, 7, value); + octeon_sha1_transform(&env->octeon_crypto); +} + +void helper_octeon_cp2_mt_hsh_startsha512(CPUMIPSState *env, uint64_t valu= e) +{ + MIPSOcteonCryptoState *crypto =3D &env->octeon_crypto; + + crypto->hsh_dat[15] =3D value; + octeon_sha512_transform(crypto); +} + uint64_t helper_octeon_cp2_mf_crc_iv_reflect(CPUMIPSState *env) { return octeon_crc_reflect32_by_byte(env->octeon_crypto.crc_iv); --=20 2.53.0 From nobody Sun Jul 26 10:07:33 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=reject dis=none) header.from=oss.qualcomm.com ARC-Seal: i=1; a=rsa-sha256; t=1783448467; cv=none; d=zohomail.com; s=zohoarc; b=DEMQeEAYSYk8FcjgvKtuZ0Qom2X5x0gZl1Y6ppUcWtAmYTC7pWqTe0IgzD65s6eTjSHwLcKba/Efw9LI9XjobqwO6QbeXlfgxv9SApFyPnfsG9Q1Fkg3x7jCVClYeIJndjvuliwNRCytlFcLLnscF9n9jQCzXgej3LFAqUBGrz4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783448467; h=Content-Type:Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=Q2z1hY3rQKQjFwS9f9L+Ux5n2oQB5lboTjombKC6sJk=; b=bYJhXJ+h4DhKwJ0FJaTlQiBaskCA8wyfy6y0izQJaHudly2ewhXvx9YJ1EaxpTJtLBY/M1t7F4EoHI9Gafxj+UD0sXI/6CmrL73Ou8601dY2ubY1S/1pWm6srDXD1fSEIlAugF1CItVdaTKU60VqamJNTWG1Ydcw+YsZqEPCAkU= 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=reject dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1783448467328256.8603970787026; Tue, 7 Jul 2026 11:21:07 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1whAMR-000607-2P; Tue, 07 Jul 2026 14:17: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 1whAM7-0005T8-4P for qemu-devel@nongnu.org; Tue, 07 Jul 2026 14:17:19 -0400 Received: from mx0a-0031df01.pphosted.com ([205.220.168.131]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1whAM4-0006Tk-Nt for qemu-devel@nongnu.org; Tue, 07 Jul 2026 14:17:14 -0400 Received: from pps.filterd (m0279867.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 667FTQ6j003131 for ; Tue, 7 Jul 2026 18:17:11 GMT Received: from mail-qt1-f199.google.com (mail-qt1-f199.google.com [209.85.160.199]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4f8ye0j4fj-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Tue, 07 Jul 2026 18:17:10 +0000 (GMT) Received: by mail-qt1-f199.google.com with SMTP id d75a77b69052e-51c1e6f602cso78452061cf.3 for ; Tue, 07 Jul 2026 11:17: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 5b1f17b1804b1-493e0faee30sm61925005e9.10.2026.07.07.11.17.01 for (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Tue, 07 Jul 2026 11:17:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= Q2z1hY3rQKQjFwS9f9L+Ux5n2oQB5lboTjombKC6sJk=; b=QrN3pB+zseNqFggE NbKrJqE1JXrQFXWeFZXcNcRWYiYH+/NjHTltGZwpUhp4+nhUryi+1Ju0Non7yFKx DQsMPkNlFgRq1+t7fiyckN/KkTW86xCL2D6blWj7h01jzb3Utfj1soeiaQMAT8cw 7hQksxQnoHRl/MKqUk8chrgCb8VG5qUy1Fvk8ARqWntBEDMRI/mWvxz4k7nKfS8h epb7GHhkElRGm3GUUcNhQY84A8/LAYEv8mdZo9XpBdCAHjxDZjKdvqgi+8erb/P/ /VK/rC9xbMtVJwMdnSX38dE/Ww91xAvjXui0ENJ/WDU35CrRznP+JZ+7miGwBolB m4yxvQ== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1783448230; x=1784053030; darn=nongnu.org; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=Q2z1hY3rQKQjFwS9f9L+Ux5n2oQB5lboTjombKC6sJk=; b=heJN0c4rfNvTRHoIo04L5+Cty8deTLzj3mOlbTrKYIGa9d/QlUXlwgSdB57fJwqHuv o4Ke/QD8HODoq1Ku6OoO7+n0pK5SdrIqTmtZaWz5MJ/F3Xk0tEGXWd3mWORAjSVU/4Tu iRm2e/eqynQxzqAqA4GiwPK6GmF4xrkWB6sPemIrJD5w62UTuM5wgxkKuTspztPQMCzC z3KbuguaoSphlxfD91hs87feAzclAUm3opa/TVK541XWR0dd352Ip3OVIrUon7Lac4ru dRjKLEBmNheccp23YU1ojwRUegS7SwPlyIPVIw24m43T62zG39ZQiI+fJToCZdPNS1In gqfw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783448230; x=1784053030; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:to:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=Q2z1hY3rQKQjFwS9f9L+Ux5n2oQB5lboTjombKC6sJk=; b=YTccsDOGiAKLEIeadwSFfktWvbOkbVmLHhYVDI1FNkiuZbAz5VFigJ663Sdjq5v/Qm XFvt1LwL53Y4CWQTaqxunh3aKfsr2WQAM8QRX/x7kA+OthCFXaYKQEvUQUscjyMMqNbu kkcZMNkV8rjB+iKwAmAy+SMXPZqIj7NbCXKxQYkIToY5ZVTpSqkF9cQHUcZCxwhXDdc6 WsZHafVsyCrcwsXpMY0Fl24nzVgdyrZg8CrNJ4LdYA36rF4Zzb8aKSr6klAiR80lTYrd 87cB7QLDwgOShwlRnd5OJY9kGrV2ehK7SzmMCBciYgJhaXqXLhrMWopqd5DxpY1ZPxcS LPSg== X-Gm-Message-State: AOJu0YxYA2HKzp8jn/YD7W2ABY9GL5rvdV90LW+9q2yjr0Si1jUbmM/P zOEEWOuAYmkODBaW4DsdfpnsaYEvJpJ8Jo1mZK8qLZdRUUGOwgTcY6ag2diTcQn4fBcxTcXGD6X 7dgWr3/cb7EUOyJ/2kfW8jDFavzN9oUclyZI5TLTkUqmjgLCVGaKqVO+ME7EEVBJYpQ== X-Gm-Gg: AfdE7clKlWzW5vMVi1zscr8k6zeHIcD/zQannpzWAj7ugEbVnLzBs2M72eqWz7UERRR vIfjyYeC9sZ+KgFFf+vgEaLGN5Of9GgRdumNG/b3C/YieJ0wBkSQq0p8ZIub8JvylOaKgly6Uu3 lvSscrBnhyafPNMYNe4Rvz43z4MtxbrxvB3wCpHhhpVbKXdG40jBKV9ntxRRM5qxqLO14Wf+VG6 KXFxmnV0bv7WHvGQiZSSsA0CSu802gZpdctiwaCtuGfGfPpxIRj8hU/NKiHONHv6GMd7FwSyj0D e9SMtHPHlBAsOm1HVFWQgDhdyAkobDJMHqTJJCK00VBpZfv5zQgfcOt8v5kwAf063i2vcksM/Mi ZIvpQE86d1HBdwmGDdz4BqUGLD/G9silk0NllMpHLeonQKfGxvHEfOImMZKpWpVSgZ7ZA X-Received: by 2002:a05:622a:1f96:b0:516:ed02:c85d with SMTP id d75a77b69052e-51c747c33admr66604961cf.3.1783448223725; Tue, 07 Jul 2026 11:17:03 -0700 (PDT) X-Received: by 2002:a05:622a:1f96:b0:516:ed02:c85d with SMTP id d75a77b69052e-51c747c33admr66604411cf.3.1783448222978; Tue, 07 Jul 2026 11:17:02 -0700 (PDT) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Subject: [PULL 13/23] target/mips: add Octeon CHORD and LLM COP2 helpers Date: Tue, 7 Jul 2026 20:15:18 +0200 Message-ID: <20260707181529.60191-14-philmd@oss.qualcomm.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260707181529.60191-1-philmd@oss.qualcomm.com> References: <20260707181529.60191-1-philmd@oss.qualcomm.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Proofpoint-ORIG-GUID: ZWEs-NS_M67b8Cy6-DomTAY0l_xohHUm X-Proofpoint-Spam-Info: AW1haW4tMjYwNzA3MDE3OSBTYWx0ZWRfX1txDaDRr2XSs CGeA6FX9pK00qmDEgUJItNTK9yZEuHqg7Ts4FOisLz+POVUsxm8EViKBLEWnm+8VcGNRH1Nb3Ps s647wyH4iAq6rPpHnEHAV/E974zkBXc= X-Authority-Analysis: v=2.4 cv=SZfHsPRu c=1 sm=1 tr=0 ts=6a4d42a6 cx=c_pps a=WeENfcodrlLV9YRTxbY/uA==:117 a=4s3hRJSeHn4rkQlkrse1kQ==:17 a=IkcTkHD0fZMA:10 a=RAioF0-LDSMA:10 a=M51BFTxLslgA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=eoimf2acIAo5FJnRuUoq:22 a=pGLkceISAAAA:8 a=EUspDBNiAAAA:8 a=pXy8MzuH-9m_VKUK6bUA:9 a=3ZKOabzyN94A:10 a=QEXdDO2ut3YA:10 a=kacYvNCVWA4VmyqE58fU:22 X-Proofpoint-GUID: ZWEs-NS_M67b8Cy6-DomTAY0l_xohHUm X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzA3MDE3OSBTYWx0ZWRfX2qH3RB6uWnbt PIFY5Q8mUaxh/cEcZ9uRTjwTIl5c3NGnJvFeMr6sn/XlyOJbnPbcPqz9T4zZRTsVvS1LwTaxbs9 jMf8pcMDptINp+yf2SXKzTs+bnVqWoUzo3oPXYYOrKn1HjKosxLKsApvi87RZci6cbEF8Jpugf/ 0OUbTwfVmGMuuhOpKN8g7IvMDkiMKGn6ZRtQ0dPWZksQVlaiiNATg+DeZ4UkwpmVWo1TVosF2AS KdHl1dzxaMXouoVjux1VL2hGpmRZDJW4B0KAmCEuKUcAzCICQD9hjB5P7G+ya4tW860XR7e4aFp vdGfoN9ziaf7kKovL3oeoyDc5nLnxKW4AzTlE2MYBuytBDFfTsppgn3pAf0E9l1Fhey9UpPJYb0 spmUZawqmVtXS9fKG70U8LN5ypWTwRMfQkv3O45vcT69ftE1k0df20Ej3uarDqHmes7ykRFp+/9 RnEUqRqp2eReHgzyjww== X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-07-07_04,2026-07-06_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 impostorscore=0 malwarescore=0 bulkscore=0 spamscore=0 adultscore=0 lowpriorityscore=0 phishscore=0 clxscore=1015 suspectscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607070179 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=205.220.168.131; envelope-from=philmd@oss.qualcomm.com; helo=mx0a-0031df01.pphosted.com X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 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_LOW=-0.7, 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 @qualcomm.com) X-ZM-MESSAGEID: 1783448467678158500 From: James Hilliard Add the Octeon CHORD hardware register access path and the LLM 36-bit and 64-bit read and write windows. Model both CHORD access forms, including the RDHWR $30 path and the legacy DMFC2 alias. Implement sparse backing storage for the two LLM sets so user-mode code can save, restore, and probe the architectural state without allocating a full hardware-sized backing array. Signed-off-by: James Hilliard Message-ID: <20260608-mips-octeon-missing-insns-v2-v16-13-daef7a0d8b04@gmai= l.com> Signed-off-by: Philippe Mathieu-Daud=C3=A9 --- target/mips/cpu.h | 5 +++ target/mips/helper.h | 9 ++++ target/mips/internal.h | 3 ++ target/mips/cpu.c | 67 +++++++++++++++++++++++++++++ target/mips/system/machine.c | 67 +++++++++++++++++++++++++++++ target/mips/tcg/octeon_crypto.c | 76 +++++++++++++++++++++++++++++++++ target/mips/tcg/op_helper.c | 6 +++ target/mips/tcg/translate.c | 8 ++++ 8 files changed, 241 insertions(+) diff --git a/target/mips/cpu.h b/target/mips/cpu.h index 3df71adf9bd..319147a948c 100644 --- a/target/mips/cpu.h +++ b/target/mips/cpu.h @@ -11,6 +11,7 @@ #include "fpu/softfloat-types.h" #include "hw/core/clock.h" #include "mips-defs.h" +#include "qemu/qtree.h" =20 typedef struct CPUMIPSTLBContext CPUMIPSTLBContext; =20 @@ -559,6 +560,10 @@ typedef struct MIPSOcteonCryptoState { uint16_t gfm_poly; uint8_t aes_keylen; uint8_t crc_len; + uint64_t chord; + uint64_t llm_data[2]; + QTree *llm36; + QTree *llm64; } MIPSOcteonCryptoState; =20 typedef struct CPUArchState { diff --git a/target/mips/helper.h b/target/mips/helper.h index 834f2d07690..e210e406f9c 100644 --- a/target/mips/helper.h +++ b/target/mips/helper.h @@ -74,6 +74,14 @@ DEF_HELPER_2(octeon_cp2_mt_hsh_startmd5, void, env, i64) DEF_HELPER_2(octeon_cp2_mt_hsh_startsha256, void, env, i64) DEF_HELPER_2(octeon_cp2_mt_hsh_startsha, void, env, i64) DEF_HELPER_2(octeon_cp2_mt_hsh_startsha512, void, env, i64) +DEF_HELPER_2(octeon_cp2_mt_llm_read_addr0, void, env, i64) +DEF_HELPER_2(octeon_cp2_mt_llm_write_addr0, void, env, i64) +DEF_HELPER_2(octeon_cp2_mt_llm_read64_addr0, void, env, i64) +DEF_HELPER_2(octeon_cp2_mt_llm_write64_addr0, void, env, i64) +DEF_HELPER_2(octeon_cp2_mt_llm_read_addr1, void, env, i64) +DEF_HELPER_2(octeon_cp2_mt_llm_write_addr1, void, env, i64) +DEF_HELPER_2(octeon_cp2_mt_llm_read64_addr1, void, env, i64) +DEF_HELPER_2(octeon_cp2_mt_llm_write64_addr1, void, env, i64) =20 /* microMIPS functions */ DEF_HELPER_4(lwm, void, env, tl, tl, i32) @@ -245,6 +253,7 @@ DEF_HELPER_1(rdhwr_cc, tl, env) DEF_HELPER_1(rdhwr_ccres, tl, env) DEF_HELPER_1(rdhwr_performance, tl, env) DEF_HELPER_1(rdhwr_xnp, tl, env) +DEF_HELPER_1(rdhwr_chord, tl, env) DEF_HELPER_2(pmon, void, env, int) DEF_HELPER_1(wait, void, env) =20 diff --git a/target/mips/internal.h b/target/mips/internal.h index aab77b1b257..c5c286872eb 100644 --- a/target/mips/internal.h +++ b/target/mips/internal.h @@ -93,6 +93,9 @@ extern const int mips_defs_number; =20 int mips_cpu_gdb_read_register(CPUState *cpu, GByteArray *buf, int reg); int mips_cpu_gdb_write_register(CPUState *cpu, uint8_t *buf, int reg); +QTree *mips_octeon_llm_tree_new(void); +uint64_t mips_octeon_llm_load(QTree *tree, uint64_t addr); +void mips_octeon_llm_store(QTree **treep, uint64_t addr, uint64_t value); =20 #define USEG_LIMIT ((target_ulong)(int32_t)0x7FFFFFFFUL) #define KSEG0_BASE ((target_ulong)(int32_t)0x80000000UL) diff --git a/target/mips/cpu.c b/target/mips/cpu.c index fccc7a711d3..b223b767c9c 100644 --- a/target/mips/cpu.c +++ b/target/mips/cpu.c @@ -26,6 +26,7 @@ #include "cpu.h" #include "internal.h" #include "qemu/module.h" +#include "qemu/qtree.h" #include "system/qtest.h" #include "hw/core/qdev-properties.h" #include "hw/core/qdev-clock.h" @@ -181,6 +182,57 @@ static bool mips_cpu_has_work(CPUState *cs) =20 #include "cpu-defs.c.inc" =20 +static gint mips_octeon_u64_tree_compare(gconstpointer a, gconstpointer b, + gpointer user_data) +{ + uint64_t av =3D *(const uint64_t *)a; + uint64_t bv =3D *(const uint64_t *)b; + + return (av > bv) - (av < bv); +} + +QTree *mips_octeon_llm_tree_new(void) +{ + return q_tree_new_full(mips_octeon_u64_tree_compare, + NULL, g_free, g_free); +} + +uint64_t mips_octeon_llm_load(QTree *tree, uint64_t addr) +{ + uint64_t key =3D addr; + uint64_t *value =3D tree ? q_tree_lookup(tree, &key) : NULL; + + return value ? *value : 0; +} + +void mips_octeon_llm_store(QTree **treep, uint64_t addr, uint64_t value) +{ + uint64_t *key; + uint64_t *stored; + + if (!*treep) { + *treep =3D mips_octeon_llm_tree_new(); + } + + key =3D g_new(uint64_t, 1); + stored =3D g_new(uint64_t, 1); + *key =3D addr; + *stored =3D value; + q_tree_replace(*treep, key, stored); +} + +static void mips_octeon_destroy_llm_state(MIPSOcteonCryptoState *crypto) +{ + if (crypto->llm36) { + q_tree_destroy(crypto->llm36); + crypto->llm36 =3D NULL; + } + if (crypto->llm64) { + q_tree_destroy(crypto->llm64); + crypto->llm64 =3D NULL; + } +} + static void mips_cpu_reset_hold(Object *obj, ResetType type) { CPUState *cs =3D CPU(obj); @@ -192,6 +244,7 @@ static void mips_cpu_reset_hold(Object *obj, ResetType = type) mcc->parent_phases.hold(obj, type); } =20 + mips_octeon_destroy_llm_state(&env->octeon_crypto); memset(env, 0, offsetof(CPUMIPSState, end_reset_fields)); =20 /* Reset registers to their default values */ @@ -246,6 +299,9 @@ static void mips_cpu_reset_hold(Object *obj, ResetType = type) env->active_fpu.fcr31 =3D env->cpu_model->CP1_fcr31; env->msair =3D env->cpu_model->MSAIR; env->insn_flags =3D env->cpu_model->insn_flags; + if (env->insn_flags & INSN_OCTEON) { + env->octeon_crypto.chord =3D 1; + } =20 #if defined(CONFIG_USER_ONLY) env->CP0_Status =3D (MIPS_HFLAG_UM << CP0St_KSU); @@ -262,6 +318,9 @@ static void mips_cpu_reset_hold(Object *obj, ResetType = type) * hardware registers. */ env->CP0_HWREna |=3D 0x0000000F; + if (env->insn_flags & INSN_OCTEON) { + env->CP0_HWREna |=3D 0x40000000u; + } if (env->CP0_Config1 & (1 << CP0C1_FP)) { env->CP0_Status |=3D (1 << CP0St_CU1); } @@ -417,6 +476,13 @@ static void mips_cpu_reset_hold(Object *obj, ResetType= type) #endif } =20 +static void mips_cpu_finalize(Object *obj) +{ + MIPSCPU *cpu =3D MIPS_CPU(obj); + + mips_octeon_destroy_llm_state(&cpu->env.octeon_crypto); +} + static void mips_cpu_disas_set_info(const CPUState *cs, disassemble_info *= info) { const MIPSCPU *cpu =3D MIPS_CPU(cs); @@ -645,6 +711,7 @@ static const TypeInfo mips_cpu_type_info =3D { .instance_size =3D sizeof(MIPSCPU), .instance_align =3D __alignof(MIPSCPU), .instance_init =3D mips_cpu_initfn, + .instance_finalize =3D mips_cpu_finalize, .abstract =3D true, .class_size =3D sizeof(MIPSCPUClass), .class_init =3D mips_cpu_class_init, diff --git a/target/mips/system/machine.c b/target/mips/system/machine.c index 77f576a25b1..bd1e4002cfd 100644 --- a/target/mips/system/machine.c +++ b/target/mips/system/machine.c @@ -131,6 +131,69 @@ static const VMStateDescription vmstate_octeon_multipl= ier_tc =3D { } }; =20 +typedef struct OcteonLLMTreePutData { + QEMUFile *f; +} OcteonLLMTreePutData; + +static gboolean put_octeon_llm_tree_entry(gpointer key, gpointer value, + gpointer user_data) +{ + OcteonLLMTreePutData *data =3D user_data; + + qemu_put_be64(data->f, *(uint64_t *)key); + qemu_put_be64(data->f, *(uint64_t *)value); + return false; +} + +static int put_octeon_llm_tree(QEMUFile *f, void *pv, size_t size, + const VMStateField *field, JSONWriter *vmde= sc) +{ + QTree *tree =3D *(QTree **)pv; + OcteonLLMTreePutData data =3D { .f =3D f }; + uint32_t nnodes =3D tree ? q_tree_nnodes(tree) : 0; + + qemu_put_be32(f, nnodes); + if (tree) { + q_tree_foreach(tree, put_octeon_llm_tree_entry, &data); + } + + return 0; +} + +static int get_octeon_llm_tree(QEMUFile *f, void *pv, size_t size, + const VMStateField *field) +{ + QTree **treep =3D pv; + uint32_t nnodes =3D qemu_get_be32(f); + + if (*treep) { + q_tree_destroy(*treep); + } + *treep =3D mips_octeon_llm_tree_new(); + + for (uint32_t i =3D 0; i < nnodes; i++) { + uint64_t addr =3D qemu_get_be64(f); + uint64_t value =3D qemu_get_be64(f); + + mips_octeon_llm_store(treep, addr, value); + } + + return 0; +} + +static const VMStateInfo vmstate_info_octeon_llm_tree =3D { + .name =3D "octeon_llm_tree", + .get =3D get_octeon_llm_tree, + .put =3D put_octeon_llm_tree, +}; + +#define VMSTATE_OCTEON_LLM_TREE(_f, _s) { \ + .name =3D stringify(_f), \ + .version_id =3D 1, \ + .info =3D &vmstate_info_octeon_llm_tree, \ + .offset =3D vmstate_offset_pointer(_s, _f, QTree), \ +} + /* MVP state */ =20 static const VMStateDescription vmstate_mvp =3D { @@ -301,6 +364,10 @@ static const VMStateDescription mips_vmstate_octeon_cr= ypto =3D { VMSTATE_UINT16(env.octeon_crypto.gfm_poly, MIPSCPU), VMSTATE_UINT8(env.octeon_crypto.aes_keylen, MIPSCPU), VMSTATE_UINT8(env.octeon_crypto.crc_len, MIPSCPU), + VMSTATE_UINT64(env.octeon_crypto.chord, MIPSCPU), + VMSTATE_UINT64_ARRAY(env.octeon_crypto.llm_data, MIPSCPU, 2), + VMSTATE_OCTEON_LLM_TREE(env.octeon_crypto.llm36, MIPSCPU), + VMSTATE_OCTEON_LLM_TREE(env.octeon_crypto.llm64, MIPSCPU), VMSTATE_END_OF_LIST() } }; diff --git a/target/mips/tcg/octeon_crypto.c b/target/mips/tcg/octeon_crypt= o.c index 82ad355d56f..b24533e03df 100644 --- a/target/mips/tcg/octeon_crypto.c +++ b/target/mips/tcg/octeon_crypto.c @@ -16,6 +16,42 @@ #include "qemu/bitops.h" #include "qemu/host-utils.h" =20 +#define OCTEON_LLM_NARROW_MASK ((1ULL << 36) - 1) + +static uint64_t octeon_llm_pack_narrow(uint64_t value) +{ + value &=3D OCTEON_LLM_NARROW_MASK; + return value | ((uint64_t)(ctpop64(value) & 1) << 36); +} + +static void octeon_llm_read(MIPSOcteonCryptoState *crypto, unsigned int se= t, + uint64_t addr, bool wide) +{ + uint64_t value; + + if (wide) { + value =3D mips_octeon_llm_load(crypto->llm64, addr); + } else { + value =3D octeon_llm_pack_narrow( + mips_octeon_llm_load(crypto->llm36, addr)); + } + + crypto->llm_data[set] =3D value; +} + +static void octeon_llm_write(MIPSOcteonCryptoState *crypto, unsigned int s= et, + uint64_t addr, bool wide) +{ + uint64_t value =3D crypto->llm_data[set]; + + if (wide) { + mips_octeon_llm_store(&crypto->llm64, addr, value); + } else { + mips_octeon_llm_store(&crypto->llm36, addr, + value & OCTEON_LLM_NARROW_MASK); + } +} + static uint32_t octeon_crc_reflect32_by_byte(uint32_t v) { return bswap32(revbit32(v)); @@ -2225,3 +2261,43 @@ void helper_octeon_cp2_mt_crc_write_var_reflect(CPUM= IPSState *env, =20 octeon_crc_update_reflect(crypto, value, MIN(8U, crypto->crc_len & 0xf= )); } + +void helper_octeon_cp2_mt_llm_read_addr0(CPUMIPSState *env, uint64_t value) +{ + octeon_llm_read(&env->octeon_crypto, 0, value, false); +} + +void helper_octeon_cp2_mt_llm_write_addr0(CPUMIPSState *env, uint64_t valu= e) +{ + octeon_llm_write(&env->octeon_crypto, 0, value, false); +} + +void helper_octeon_cp2_mt_llm_read64_addr0(CPUMIPSState *env, uint64_t val= ue) +{ + octeon_llm_read(&env->octeon_crypto, 0, value, true); +} + +void helper_octeon_cp2_mt_llm_write64_addr0(CPUMIPSState *env, uint64_t va= lue) +{ + octeon_llm_write(&env->octeon_crypto, 0, value, true); +} + +void helper_octeon_cp2_mt_llm_read_addr1(CPUMIPSState *env, uint64_t value) +{ + octeon_llm_read(&env->octeon_crypto, 1, value, false); +} + +void helper_octeon_cp2_mt_llm_write_addr1(CPUMIPSState *env, uint64_t valu= e) +{ + octeon_llm_write(&env->octeon_crypto, 1, value, false); +} + +void helper_octeon_cp2_mt_llm_read64_addr1(CPUMIPSState *env, uint64_t val= ue) +{ + octeon_llm_read(&env->octeon_crypto, 1, value, true); +} + +void helper_octeon_cp2_mt_llm_write64_addr1(CPUMIPSState *env, uint64_t va= lue) +{ + octeon_llm_write(&env->octeon_crypto, 1, value, true); +} diff --git a/target/mips/tcg/op_helper.c b/target/mips/tcg/op_helper.c index 4502ae2b5be..3e586e3049e 100644 --- a/target/mips/tcg/op_helper.c +++ b/target/mips/tcg/op_helper.c @@ -255,6 +255,12 @@ target_ulong helper_rdhwr_xnp(CPUMIPSState *env) return (env->CP0_Config5 >> CP0C5_XNP) & 1; } =20 +target_ulong helper_rdhwr_chord(CPUMIPSState *env) +{ + check_hwrena(env, 30, GETPC()); + return env->octeon_crypto.chord; +} + void helper_pmon(CPUMIPSState *env, int function) { function /=3D 2; diff --git a/target/mips/tcg/translate.c b/target/mips/tcg/translate.c index 123d2c89c3d..1f449328825 100644 --- a/target/mips/tcg/translate.c +++ b/target/mips/tcg/translate.c @@ -10925,6 +10925,14 @@ void gen_rdhwr(DisasContext *ctx, int rt, int rd, = int sel) } break; #endif + case 30: + if (!(ctx->insn_flags & INSN_OCTEON)) { + gen_reserved_instruction(ctx); + break; + } + gen_helper_rdhwr_chord(t0, tcg_env); + gen_store_gpr(t0, rt); + break; default: /* Invalid */ MIPS_INVAL("rdhwr"); gen_reserved_instruction(ctx); --=20 2.53.0 From nobody Sun Jul 26 10:07:33 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=reject dis=none) header.from=oss.qualcomm.com ARC-Seal: i=1; a=rsa-sha256; t=1783448467; cv=none; d=zohomail.com; s=zohoarc; b=oKbX52mGgFU6dmJzdZj18StDTFHAGKdZjCMmyCjKrelth1v7yUs8/VxmB5gRGrk5WRZURLIon5WvT2BlUhVhnGY1DrMgbUia6G6OZJuQizOrcRMSFIVflMY9C7gOFmMAVGuO4JKKT0OLzRDoUSTBKLGTN4RCcyplTTNoviljOzo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783448467; h=Content-Type:Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=tjc1xg0RdmsvnqFSf2gsvMOceuIFqG+R6km1aQS+0aM=; b=JrMNwU8oKsrZ0At0FKnAS6evM4FshoNFL+CTocWzYFNqBihRF0zWEEb/orTfrx/DAvPjo5HN7jXUTMzM4MCO+kpMzjxmE5/lZlKR7CTNL5sVmXbkSqVtamYmYAa8fMB/tGf50jUVwXhl3Ac/yaudTSpbLku4vkXOoNaraBO9SVw= 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=reject dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1783448467351164.81770760515826; Tue, 7 Jul 2026 11:21:07 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1whAMT-00067R-5A; Tue, 07 Jul 2026 14:17: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 1whAME-0005Yi-Et for qemu-devel@nongnu.org; Tue, 07 Jul 2026 14:17:24 -0400 Received: from mx0b-0031df01.pphosted.com ([205.220.180.131]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1whAMA-0006UO-4P for qemu-devel@nongnu.org; Tue, 07 Jul 2026 14:17:22 -0400 Received: from pps.filterd (m0279873.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 667FT51t4130520 for ; Tue, 7 Jul 2026 18:17:16 GMT Received: from mail-qk1-f197.google.com (mail-qk1-f197.google.com [209.85.222.197]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4f8t15bhqv-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Tue, 07 Jul 2026 18:17:16 +0000 (GMT) Received: by mail-qk1-f197.google.com with SMTP id af79cd13be357-915d3261c5cso417918385a.3 for ; Tue, 07 Jul 2026 11:17: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-47a9e3e2702sm36521634f8f.9.2026.07.07.11.17.08 for (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Tue, 07 Jul 2026 11:17:09 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= tjc1xg0RdmsvnqFSf2gsvMOceuIFqG+R6km1aQS+0aM=; b=K+RnTeuR+xq9gq3w ppjyaE+Mqmt4DSO8mQH1gifCbKUQZr4JnL+jOoTknG3hkmN1XNsuXOyU0dWXhkUT T7gDbZA4SXFSGPls3arOfAP/mpTufJ57/hu6TxbJOPSxrw1bdcWjUBLbxlUtLFH/ zImqtlSOxhCTx4c/Bq66M0MGbRBRIzjb4y0wemdwEW5Grh5LMclm5ugJ8yQH7Py5 yKH1xuoXc3VKAQ7O5+leZSVGDCb6ZNrMwO01j9zVTkcSiNCVIlR9YNInFvh/xNuP gr1Lc4MTuU3ycJI40YVztaQgEld5rcntngQEDWzRdvqcrN6AIkgM5MHTvOd082AW LbTPNQ== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1783448236; x=1784053036; darn=nongnu.org; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=tjc1xg0RdmsvnqFSf2gsvMOceuIFqG+R6km1aQS+0aM=; b=iwOiyLlKI7cOtOU3nvN2knDYlhH9XDam5jCWNf5plUcOceN+eI05zNDrXjBXMH4xlV WRD+pOeVKTcqiPJC8MvJoobVsIiPUt6YukgWVp4qBwCYJmbMwiKOvZwQuapQSZtWLjrd nSIU6lyIi0Rbi5fH+VxZ6QXccnTyMYXR1k7NkYLJaBiJnhBoZocMhroRezeiB6gIpgo0 VjqMf7fIpGIXLRlP4lfQO4pWJIakweSUfvHu7jNcfKdpv11l4XtE3tcHY9eNXPzahUDL 36C58WYYpn7GJudfhY21cxwImJDH/kvzZ6cvdrA5AUGgcUr7s6N9NrX476356wFAzRp/ zKJQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783448236; x=1784053036; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:to:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=tjc1xg0RdmsvnqFSf2gsvMOceuIFqG+R6km1aQS+0aM=; b=NelHuOqc39xjCTgIGMOncd9VG7RcmwyazOCM/X1l0Nu/zk5ce4A0RQHYT3ll9WuUwX K+1JcVhg1imuXWSuNErv6iVNTNroUv1u2x/326VwZulyKZ/IqaTAtZlcWvSx/Z+GMhZ1 nCf3bc/1qf7B+w7sxpnRxjB4mHeah+vOIc1M2BioGHXbYSmxDWHPxLXU5U0z+2EN93ms C4N2rstxTmSrIm8sJx6P65gq3FsJhn2coJjCrSsskJblMkiOUGypaP3q4qG7p+/SPgoQ KC+3x/d9rHQc9giUM1iqL0W4OUqxmGcjZTbEMMLsmN0GPik5HZeJz7A2d+dUN9+UIJXF aa0A== X-Gm-Message-State: AOJu0YyjGWNzQaJcE8v2adZFcceN9CmyJNbDOjd1bzoO6TC0O1DYfd0I eohRLTf9MGqMgiog1U9TspW57Wdb7BT41YgJoVFBYZ37TIyDsVGVJwQZ4Is8U4rlaVDwk/wDvZc txFz/JJNXoRXVuwgDCunzGaEivD0/9GvbHeibBjVKp/pLPyGRCfthC3dibVJy2myevw== X-Gm-Gg: AfdE7clTtzHNkOpufKM+0pGWUOtYdbbAMEdOl/yk3KRg2/Tiuu9SpEPTkSALE9WSybl oVCkrDi4rqxveirZSjSpdNKJXTCI98MamwDrvxjU9q3qmKeh/h8NnDQJN8eAsWuOczWHLZZEWVn 7DFU0uT4hRsY7Kgxjyh5Ked1eparpfHm27VN/68dOFSMYDWT4EkjSSUfZ2NbQ82640y9FRJYLXC A/u1A3QibYT406fipKI1tKJYVPrvl2osHqk1lyAmZBGMFJwLlVBBD3WlHRPrEDYvcbENU2lTKKp bn+miBPtJsPYIdq/W9mkoxyvBlEMq0js9OLt4Hh5ugImo5lADtiqX5ISWjUOW2Meq3WZys+V67g osc4oo/oWmW8saIOnDhDtbRmxe1OuBC3QHYFEEZODSHY87m8ygkZczJazdf9dL1EZqEUJ X-Received: by 2002:a05:622a:2449:b0:51b:f640:2a4f with SMTP id d75a77b69052e-51c74776de2mr69913321cf.4.1783448230568; Tue, 07 Jul 2026 11:17:10 -0700 (PDT) X-Received: by 2002:a05:622a:2449:b0:51b:f640:2a4f with SMTP id d75a77b69052e-51c74776de2mr69912651cf.4.1783448229798; Tue, 07 Jul 2026 11:17:09 -0700 (PDT) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Subject: [PULL 14/23] target/mips: decode Octeon COP2 register selectors Date: Tue, 7 Jul 2026 20:15:19 +0200 Message-ID: <20260707181529.60191-15-philmd@oss.qualcomm.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260707181529.60191-1-philmd@oss.qualcomm.com> References: <20260707181529.60191-1-philmd@oss.qualcomm.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Proofpoint-GUID: gqWzDKW0S5D-7jJ4KHhdBzFa-RB06jGr X-Authority-Analysis: v=2.4 cv=HstG3UTS c=1 sm=1 tr=0 ts=6a4d42ac cx=c_pps a=50t2pK5VMbmlHzFWWp8p/g==:117 a=4s3hRJSeHn4rkQlkrse1kQ==:17 a=IkcTkHD0fZMA:10 a=RAioF0-LDSMA:10 a=M51BFTxLslgA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=rJkE3RaqiGZ5pbrm-msn:22 a=pGLkceISAAAA:8 a=KKAkSRfTAAAA:8 a=EUspDBNiAAAA:8 a=twb9M56xMN4JJA-i2tUA:9 a=3ZKOabzyN94A:10 a=QEXdDO2ut3YA:10 a=IoWCM6iH3mJn3m4BftBB:22 a=cvBusfyB2V15izCimMoJ:22 X-Proofpoint-ORIG-GUID: gqWzDKW0S5D-7jJ4KHhdBzFa-RB06jGr X-Proofpoint-Spam-Info: AW1haW4tMjYwNzA3MDE3OSBTYWx0ZWRfX/heY/e3Acg1M LT6QZ3bD6/pm25h9Ihq+UrKgK9og8dKv7XXYFgq32qIqKcp51jTS1hLi7geo6tvb0gWV07PjqCt VLD46fY2IIoKgKb8CCs38slmwi3sgh4= X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzA3MDE3OSBTYWx0ZWRfX4lxxBRQ1xq0K TyZciKhLoVz9gEHW+bduwDeafFV1GIZPrHEltaNXA+aSr+9j/GXOZl4ogWH1tpq7oMZ3y18Llri IYrYsqR1n2xoH7hYA54sjCRVZeXGY02jnLo8vYRcQyHMSJZscJXEnoNAeREA9UQ2qD+cVXCerG3 fdnftHHpa9QOQbd78pDHgh4HtFDo+zpEGmdADi1mjFmLsgeyedOCJLz3ZuXfJK9y4ij4Qb2+IZK mROTqh8NVYiQjE743I9w/Y2UK/+Kofr3WUptkgf9koE8eTJ26isnSHE/DkkuHKrgent9sp35uRg rliiYud+Ht/8uEt99XA649JtcMMSIR75+7641HayBsHyCY1OJJkEZJ3TKA62j+ZxOyw7YlVjdkj Y5HtxEk5MWnMWVzJsZpcgAghILIkZjNn8HlDcilD0mPf0vN0RYBn8h7sqGVd3uQ2YThcG4AIL2i zWCf7zOJOKJ8IoXjB/g== X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-07-07_04,2026-07-06_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 phishscore=0 impostorscore=0 suspectscore=0 malwarescore=0 bulkscore=0 clxscore=1015 spamscore=0 adultscore=0 lowpriorityscore=0 priorityscore=1501 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607070179 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=205.220.180.131; envelope-from=philmd@oss.qualcomm.com; helo=mx0b-0031df01.pphosted.com X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 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_LOW=-0.7, 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 @qualcomm.com) X-ZM-MESSAGEID: 1783448467549158500 From: James Hilliard Add explicit decodetree entries and translator bindings for Octeon DMFC2/DMTC2 selectors that are simple COP2 register transfers. Emit direct TCG loads and stores for register moves. Use signed 32-bit loads for 32-bit DMFC2 readback and mask narrow writable fields such as AESKEYLEN and CRCLEN on DMTC2. Keep operation selectors with side effects in later functional decode patches. Signed-off-by: James Hilliard Reviewed-by: Richard Henderson Message-ID: <20260608-mips-octeon-missing-insns-v2-v16-14-daef7a0d8b04@gmai= l.com> Signed-off-by: Philippe Mathieu-Daud=C3=A9 --- target/mips/tcg/octeon.decode | 80 +++++++ target/mips/tcg/octeon_translate.c | 210 ++++++++++++++++++ tests/tcg/mips/user/isa/octeon/octeon-insns.c | 89 ++++++++ 3 files changed, 379 insertions(+) diff --git a/target/mips/tcg/octeon.decode b/target/mips/tcg/octeon.decode index 1e44c588dd6..09fbc6c1e34 100644 --- a/target/mips/tcg/octeon.decode +++ b/target/mips/tcg/octeon.decode @@ -97,3 +97,83 @@ LBUX 011111 ..... ..... ..... 00110 001010 @lx LWUX 011111 ..... ..... ..... 10000 001010 @lx LBX 011111 ..... ..... ..... 10110 001010 @lx LDX 011111 ..... ..... ..... 01000 001010 @lx + +# Selector-driven DMFC2/DMTC2 interfaces for Octeon COP2 engines. +&cp2 rt +{ + [ + CVM_MF_HSH_IV0 010010 00001 rt:5 0000 0000 0100 = 1000 &cp2 + CVM_MF_HSH_IV1 010010 00001 rt:5 0000 0000 0100 = 1001 &cp2 + CVM_MF_HSH_IV2 010010 00001 rt:5 0000 0000 0100 = 1010 &cp2 + CVM_MF_HSH_IV3 010010 00001 rt:5 0000 0000 0100 = 1011 &cp2 + CVM_MF_HSH_DAT0 010010 00001 rt:5 0000 0000 0100 = 0000 &cp2 + CVM_MF_HSH_DAT1 010010 00001 rt:5 0000 0000 0100 = 0001 &cp2 + CVM_MF_HSH_DAT2 010010 00001 rt:5 0000 0000 0100 = 0010 &cp2 + CVM_MF_HSH_DAT3 010010 00001 rt:5 0000 0000 0100 = 0011 &cp2 + CVM_MF_HSH_DAT4 010010 00001 rt:5 0000 0000 0100 = 0100 &cp2 + CVM_MF_HSH_DAT5 010010 00001 rt:5 0000 0000 0100 = 0101 &cp2 + CVM_MF_HSH_DAT6 010010 00001 rt:5 0000 0000 0100 = 0110 &cp2 + CVM_MF_3DES_KEY0 010010 00001 rt:5 0000 0000 1000 = 0000 &cp2 + CVM_MF_3DES_KEY1 010010 00001 rt:5 0000 0000 1000 = 0001 &cp2 + CVM_MF_3DES_KEY2 010010 00001 rt:5 0000 0000 1000 = 0010 &cp2 + CVM_MF_3DES_IV 010010 00001 rt:5 0000 0000 1000 = 0100 &cp2 + CVM_MF_3DES_RESULT 010010 00001 rt:5 0000 0000 1000 = 1000 &cp2 + CVM_MF_KAS_RESULT 010010 00001 rt:5 0000 0000 1001 = 1000 &cp2 + CVM_MF_AES_RESINP0 010010 00001 rt:5 0000 0001 0000 = 0000 &cp2 + CVM_MF_AES_RESINP1 010010 00001 rt:5 0000 0001 0000 = 0001 &cp2 + CVM_MF_AES_IV0 010010 00001 rt:5 0000 0001 0000 = 0010 &cp2 + CVM_MF_AES_IV1 010010 00001 rt:5 0000 0001 0000 = 0011 &cp2 + CVM_MF_AES_KEY0 010010 00001 rt:5 0000 0001 0000 = 0100 &cp2 + CVM_MF_AES_KEY1 010010 00001 rt:5 0000 0001 0000 = 0101 &cp2 + CVM_MF_AES_KEY2 010010 00001 rt:5 0000 0001 0000 = 0110 &cp2 + CVM_MF_AES_KEY3 010010 00001 rt:5 0000 0001 0000 = 0111 &cp2 + CVM_MF_AES_KEYLENGTH 010010 00001 rt:5 0000 0001 0001 = 0000 &cp2 + CVM_MF_AES_INP0 010010 00001 rt:5 0000 0001 0001 = 0001 &cp2 + CVM_MF_CRC_POLYNOMIAL 010010 00001 rt:5 0000 0010 0000 = 0000 &cp2 + CVM_MF_CRC_IV 010010 00001 rt:5 0000 0010 0000 = 0001 &cp2 + CVM_MF_CRC_LEN 010010 00001 rt:5 0000 0010 0000 = 0010 &cp2 + CVM_MF_GFM_MUL0 010010 00001 rt:5 0000 0010 0101 = 1000 &cp2 + CVM_MF_GFM_MUL1 010010 00001 rt:5 0000 0010 0101 = 1001 &cp2 + CVM_MF_GFM_RESINP0 010010 00001 rt:5 0000 0010 0101 = 1010 &cp2 + CVM_MF_GFM_RESINP1 010010 00001 rt:5 0000 0010 0101 = 1011 &cp2 + CVM_MF_GFM_POLY 010010 00001 rt:5 0000 0010 0101 = 1110 &cp2 + CVM_MT_HSH_DAT0 010010 00101 rt:5 0000 0000 0100 = 0000 &cp2 + CVM_MT_HSH_DAT1 010010 00101 rt:5 0000 0000 0100 = 0001 &cp2 + CVM_MT_HSH_DAT2 010010 00101 rt:5 0000 0000 0100 = 0010 &cp2 + CVM_MT_HSH_DAT3 010010 00101 rt:5 0000 0000 0100 = 0011 &cp2 + CVM_MT_HSH_DAT4 010010 00101 rt:5 0000 0000 0100 = 0100 &cp2 + CVM_MT_HSH_DAT5 010010 00101 rt:5 0000 0000 0100 = 0101 &cp2 + CVM_MT_HSH_DAT6 010010 00101 rt:5 0000 0000 0100 = 0110 &cp2 + CVM_MT_HSH_IV0 010010 00101 rt:5 0000 0000 0100 = 1000 &cp2 + CVM_MT_HSH_IV1 010010 00101 rt:5 0000 0000 0100 = 1001 &cp2 + CVM_MT_HSH_IV2 010010 00101 rt:5 0000 0000 0100 = 1010 &cp2 + CVM_MT_HSH_IV3 010010 00101 rt:5 0000 0000 0100 = 1011 &cp2 + CVM_MT_3DES_KEY0 010010 00101 rt:5 0000 0000 1000 = 0000 &cp2 + CVM_MT_3DES_KEY1 010010 00101 rt:5 0000 0000 1000 = 0001 &cp2 + CVM_MT_3DES_KEY2 010010 00101 rt:5 0000 0000 1000 = 0010 &cp2 + CVM_MT_3DES_IV 010010 00101 rt:5 0000 0000 1000 = 0100 &cp2 + CVM_MT_3DES_RESULT 010010 00101 rt:5 0000 0000 1001 = 1000 &cp2 + CVM_MT_AES_RESINP0 010010 00101 rt:5 0000 0001 0000 = 0000 &cp2 + CVM_MT_AES_RESINP1 010010 00101 rt:5 0000 0001 0000 = 0001 &cp2 + CVM_MT_AES_IV0 010010 00101 rt:5 0000 0001 0000 = 0010 &cp2 + CVM_MT_AES_IV1 010010 00101 rt:5 0000 0001 0000 = 0011 &cp2 + CVM_MT_AES_KEY0 010010 00101 rt:5 0000 0001 0000 = 0100 &cp2 + CVM_MT_AES_KEY1 010010 00101 rt:5 0000 0001 0000 = 0101 &cp2 + CVM_MT_AES_KEY2 010010 00101 rt:5 0000 0001 0000 = 0110 &cp2 + CVM_MT_AES_KEY3 010010 00101 rt:5 0000 0001 0000 = 0111 &cp2 + CVM_MT_AES_ENC_CBC0 010010 00101 rt:5 0000 0001 0000 = 1000 &cp2 + CVM_MT_AES_ENC0 010010 00101 rt:5 0000 0001 0000 = 1010 &cp2 + CVM_MT_AES_DEC_CBC0 010010 00101 rt:5 0000 0001 0000 = 1100 &cp2 + CVM_MT_AES_DEC0 010010 00101 rt:5 0000 0001 0000 = 1110 &cp2 + CVM_MT_AES_KEYLENGTH 010010 00101 rt:5 0000 0001 0001 = 0000 &cp2 + CVM_MT_CRC_IV 010010 00101 rt:5 0000 0010 0000 = 0001 &cp2 + CVM_MT_GFM_MUL0 010010 00101 rt:5 0000 0010 0101 = 1000 &cp2 + CVM_MT_GFM_MUL1 010010 00101 rt:5 0000 0010 0101 = 1001 &cp2 + CVM_MT_GFM_RESINP0 010010 00101 rt:5 0000 0010 0101 = 1010 &cp2 + CVM_MT_GFM_RESINP1 010010 00101 rt:5 0000 0010 0101 = 1011 &cp2 + CVM_MT_GFM_POLY 010010 00101 rt:5 0000 0010 0101 = 1110 &cp2 + CVM_MT_CRC_LEN 010010 00101 rt:5 0001 0010 0000 = 0010 &cp2 + CVM_MT_CRC_POLYNOMIAL 010010 00101 rt:5 0100 0010 0000 = 0000 &cp2 + ] + CP2_Undef 010010 ----- ----- ---- ---- ----= ---- +} diff --git a/target/mips/tcg/octeon_translate.c b/target/mips/tcg/octeon_tr= anslate.c index b0af2f48382..b33252dd1f8 100644 --- a/target/mips/tcg/octeon_translate.c +++ b/target/mips/tcg/octeon_translate.c @@ -13,6 +13,216 @@ /* Include the auto-generated decoder. */ #include "decode-octeon.c.inc" =20 +#define OCTEON_CRYPTO_OFFSET(FIELD) \ + offsetof(CPUMIPSState, octeon_crypto.FIELD) + +#define CP2_MF_I64(NAME, FIELD) \ + TRANS(NAME, trans_octeon_cp2_mf_i64, OCTEON_CRYPTO_OFFSET(FIELD)) +#define CP2_MF_S32(NAME, FIELD) \ + TRANS(NAME, trans_octeon_cp2_mf_s32, OCTEON_CRYPTO_OFFSET(FIELD)) +#define CP2_MF_U16(NAME, FIELD) \ + TRANS(NAME, trans_octeon_cp2_mf_u16, OCTEON_CRYPTO_OFFSET(FIELD)) +#define CP2_MF_U8(NAME, FIELD) \ + TRANS(NAME, trans_octeon_cp2_mf_u8, OCTEON_CRYPTO_OFFSET(FIELD)) +#define CP2_MF_HSH_PAIR(NAME, FIELD, INDEX) \ + TRANS(NAME, trans_octeon_cp2_mf_hsh_pair, \ + OCTEON_CRYPTO_OFFSET(FIELD[2 * (INDEX)]), \ + OCTEON_CRYPTO_OFFSET(FIELD[2 * (INDEX) + 1])) +#define CP2_MT_I64(NAME, FIELD) \ + TRANS(NAME, trans_octeon_cp2_mt_i64, OCTEON_CRYPTO_OFFSET(FIELD)) +#define CP2_MT_U32(NAME, FIELD) \ + TRANS(NAME, trans_octeon_cp2_mt_u32, OCTEON_CRYPTO_OFFSET(FIELD)) +#define CP2_MT_U16(NAME, FIELD) \ + TRANS(NAME, trans_octeon_cp2_mt_u16, OCTEON_CRYPTO_OFFSET(FIELD)) +#define CP2_MT_U8_MASKED(NAME, FIELD, MASK) \ + TRANS(NAME, trans_octeon_cp2_mt_u8_masked, \ + OCTEON_CRYPTO_OFFSET(FIELD), MASK) +#define CP2_MT_HSH_PAIR(NAME, FIELD, INDEX) \ + TRANS(NAME, trans_octeon_cp2_mt_hsh_pair, \ + OCTEON_CRYPTO_OFFSET(FIELD[2 * (INDEX)]), \ + OCTEON_CRYPTO_OFFSET(FIELD[2 * (INDEX) + 1])) + +#define OCTEON_LO32_OFFSET (HOST_BIG_ENDIAN ? 4 : 0) + +static bool trans_CP2_Undef(DisasContext *ctx, arg_CP2_Undef *a) +{ + generate_exception_err(ctx, EXCP_CpU, 2); + return true; +} + +static bool trans_octeon_cp2_mf_i64(DisasContext *ctx, arg_cp2 *a, int off= set) +{ + TCGv_i64 value =3D tcg_temp_new_i64(); + + tcg_gen_ld_i64(value, tcg_env, offset); + gen_store_gpr(value, a->rt); + return true; +} + +static bool trans_octeon_cp2_mf_s32(DisasContext *ctx, arg_cp2 *a, int off= set) +{ + TCGv_i64 value =3D tcg_temp_new_i64(); + + tcg_gen_ld32s_i64(value, tcg_env, offset); + gen_store_gpr(value, a->rt); + return true; +} + +static bool trans_octeon_cp2_mf_u16(DisasContext *ctx, arg_cp2 *a, int off= set) +{ + TCGv_i64 value =3D tcg_temp_new_i64(); + + tcg_gen_ld16u_i64(value, tcg_env, offset); + gen_store_gpr(value, a->rt); + return true; +} + +static bool trans_octeon_cp2_mf_u8(DisasContext *ctx, arg_cp2 *a, int offs= et) +{ + TCGv_i64 value =3D tcg_temp_new_i64(); + + tcg_gen_ld8u_i64(value, tcg_env, offset); + gen_store_gpr(value, a->rt); + return true; +} + +static bool trans_octeon_cp2_mf_hsh_pair(DisasContext *ctx, arg_cp2 *a, + int hi_offset, int lo_offset) +{ + TCGv_i64 hi =3D tcg_temp_new_i64(); + TCGv_i64 lo =3D tcg_temp_new_i64(); + + tcg_gen_ld_i64(hi, tcg_env, hi_offset); + tcg_gen_ld_i64(lo, tcg_env, lo_offset); + tcg_gen_concat32_i64(lo, lo, hi); + gen_store_gpr(lo, a->rt); + return true; +} + +static bool trans_octeon_cp2_mt_i64(DisasContext *ctx, arg_cp2 *a, int off= set) +{ + TCGv_i64 value =3D tcg_temp_new_i64(); + + gen_load_gpr(value, a->rt); + tcg_gen_st_i64(value, tcg_env, offset); + return true; +} + +static bool trans_octeon_cp2_mt_u32(DisasContext *ctx, arg_cp2 *a, int off= set) +{ + TCGv_i64 value =3D tcg_temp_new_i64(); + + gen_load_gpr(value, a->rt); + tcg_gen_st32_i64(value, tcg_env, offset); + return true; +} + +static bool trans_octeon_cp2_mt_u16(DisasContext *ctx, arg_cp2 *a, int off= set) +{ + TCGv_i64 value =3D tcg_temp_new_i64(); + + gen_load_gpr(value, a->rt); + tcg_gen_st16_i64(value, tcg_env, offset); + return true; +} + +static bool trans_octeon_cp2_mt_u8_masked(DisasContext *ctx, arg_cp2 *a, + int offset, uint8_t mask) +{ + TCGv_i64 value =3D tcg_temp_new_i64(); + + gen_load_gpr(value, a->rt); + tcg_gen_andi_i64(value, value, mask); + tcg_gen_st8_i64(value, tcg_env, offset); + return true; +} + +static bool trans_octeon_cp2_mt_hsh_pair(DisasContext *ctx, arg_cp2 *a, + int hi_offset, int lo_offset) +{ + TCGv_i64 value =3D tcg_temp_new_i64(); + + gen_load_gpr(value, a->rt); + tcg_gen_st32_i64(value, tcg_env, lo_offset + OCTEON_LO32_OFFSET); + tcg_gen_shri_i64(value, value, 32); + tcg_gen_st32_i64(value, tcg_env, hi_offset + OCTEON_LO32_OFFSET); + return true; +} + +CP2_MF_HSH_PAIR(CVM_MF_HSH_DAT0, hsh_dat, 0); +CP2_MF_HSH_PAIR(CVM_MF_HSH_DAT1, hsh_dat, 1); +CP2_MF_HSH_PAIR(CVM_MF_HSH_DAT2, hsh_dat, 2); +CP2_MF_HSH_PAIR(CVM_MF_HSH_DAT3, hsh_dat, 3); +CP2_MF_HSH_PAIR(CVM_MF_HSH_DAT4, hsh_dat, 4); +CP2_MF_HSH_PAIR(CVM_MF_HSH_DAT5, hsh_dat, 5); +CP2_MF_HSH_PAIR(CVM_MF_HSH_DAT6, hsh_dat, 6); +CP2_MF_HSH_PAIR(CVM_MF_HSH_IV0, hsh_iv, 0); +CP2_MF_HSH_PAIR(CVM_MF_HSH_IV1, hsh_iv, 1); +CP2_MF_HSH_PAIR(CVM_MF_HSH_IV2, hsh_iv, 2); +CP2_MF_HSH_PAIR(CVM_MF_HSH_IV3, hsh_iv, 3); +CP2_MF_I64(CVM_MF_3DES_KEY0, des3_key[0]); +CP2_MF_I64(CVM_MF_3DES_KEY1, des3_key[1]); +CP2_MF_I64(CVM_MF_3DES_KEY2, des3_key[2]); +CP2_MF_I64(CVM_MF_3DES_IV, des3_iv); +CP2_MF_I64(CVM_MF_3DES_RESULT, des3_result); +CP2_MF_I64(CVM_MF_KAS_RESULT, des3_result); +CP2_MF_I64(CVM_MF_AES_RESINP0, aes_resinp[0]); +CP2_MF_I64(CVM_MF_AES_RESINP1, aes_resinp[1]); +CP2_MF_I64(CVM_MF_AES_IV0, aes_iv[0]); +CP2_MF_I64(CVM_MF_AES_IV1, aes_iv[1]); +CP2_MF_I64(CVM_MF_AES_KEY0, aes_key[0]); +CP2_MF_I64(CVM_MF_AES_KEY1, aes_key[1]); +CP2_MF_I64(CVM_MF_AES_KEY2, aes_key[2]); +CP2_MF_I64(CVM_MF_AES_KEY3, aes_key[3]); +CP2_MF_U8(CVM_MF_AES_KEYLENGTH, aes_keylen); +CP2_MF_I64(CVM_MF_AES_INP0, aes_resinp[0]); +CP2_MF_S32(CVM_MF_CRC_POLYNOMIAL, crc_poly); +CP2_MF_S32(CVM_MF_CRC_IV, crc_iv); +CP2_MF_U8(CVM_MF_CRC_LEN, crc_len); +CP2_MF_I64(CVM_MF_GFM_MUL0, gfm_mul[0]); +CP2_MF_I64(CVM_MF_GFM_MUL1, gfm_mul[1]); +CP2_MF_I64(CVM_MF_GFM_RESINP0, gfm_resinp[0]); +CP2_MF_I64(CVM_MF_GFM_RESINP1, gfm_resinp[1]); +CP2_MF_U16(CVM_MF_GFM_POLY, gfm_poly); + +CP2_MT_HSH_PAIR(CVM_MT_HSH_DAT0, hsh_dat, 0); +CP2_MT_HSH_PAIR(CVM_MT_HSH_DAT1, hsh_dat, 1); +CP2_MT_HSH_PAIR(CVM_MT_HSH_DAT2, hsh_dat, 2); +CP2_MT_HSH_PAIR(CVM_MT_HSH_DAT3, hsh_dat, 3); +CP2_MT_HSH_PAIR(CVM_MT_HSH_DAT4, hsh_dat, 4); +CP2_MT_HSH_PAIR(CVM_MT_HSH_DAT5, hsh_dat, 5); +CP2_MT_HSH_PAIR(CVM_MT_HSH_DAT6, hsh_dat, 6); +CP2_MT_HSH_PAIR(CVM_MT_HSH_IV0, hsh_iv, 0); +CP2_MT_HSH_PAIR(CVM_MT_HSH_IV1, hsh_iv, 1); +CP2_MT_HSH_PAIR(CVM_MT_HSH_IV2, hsh_iv, 2); +CP2_MT_HSH_PAIR(CVM_MT_HSH_IV3, hsh_iv, 3); +CP2_MT_I64(CVM_MT_3DES_KEY0, des3_key[0]); +CP2_MT_I64(CVM_MT_3DES_KEY1, des3_key[1]); +CP2_MT_I64(CVM_MT_3DES_KEY2, des3_key[2]); +CP2_MT_I64(CVM_MT_3DES_IV, des3_iv); +CP2_MT_I64(CVM_MT_3DES_RESULT, des3_result); +CP2_MT_I64(CVM_MT_AES_RESINP0, aes_resinp[0]); +CP2_MT_I64(CVM_MT_AES_RESINP1, aes_resinp[1]); +CP2_MT_I64(CVM_MT_AES_IV0, aes_iv[0]); +CP2_MT_I64(CVM_MT_AES_IV1, aes_iv[1]); +CP2_MT_I64(CVM_MT_AES_KEY0, aes_key[0]); +CP2_MT_I64(CVM_MT_AES_KEY1, aes_key[1]); +CP2_MT_I64(CVM_MT_AES_KEY2, aes_key[2]); +CP2_MT_I64(CVM_MT_AES_KEY3, aes_key[3]); +CP2_MT_I64(CVM_MT_AES_ENC_CBC0, aes_resinp[0]); +CP2_MT_I64(CVM_MT_AES_ENC0, aes_resinp[0]); +CP2_MT_I64(CVM_MT_AES_DEC_CBC0, aes_resinp[0]); +CP2_MT_I64(CVM_MT_AES_DEC0, aes_resinp[0]); +CP2_MT_U8_MASKED(CVM_MT_AES_KEYLENGTH, aes_keylen, 3); +CP2_MT_U32(CVM_MT_CRC_IV, crc_iv); +CP2_MT_I64(CVM_MT_GFM_MUL0, gfm_mul[0]); +CP2_MT_I64(CVM_MT_GFM_MUL1, gfm_mul[1]); +CP2_MT_I64(CVM_MT_GFM_RESINP0, gfm_resinp[0]); +CP2_MT_I64(CVM_MT_GFM_RESINP1, gfm_resinp[1]); +CP2_MT_U16(CVM_MT_GFM_POLY, gfm_poly); +CP2_MT_U8_MASKED(CVM_MT_CRC_LEN, crc_len, 0xf); +CP2_MT_U32(CVM_MT_CRC_POLYNOMIAL, crc_poly); + static bool trans_BBIT(DisasContext *ctx, arg_BBIT *a) { TCGv_i64 p; diff --git a/tests/tcg/mips/user/isa/octeon/octeon-insns.c b/tests/tcg/mips= /user/isa/octeon/octeon-insns.c index 9153e37e9e0..7a7445c40a5 100644 --- a/tests/tcg/mips/user/isa/octeon/octeon-insns.c +++ b/tests/tcg/mips/user/isa/octeon/octeon-insns.c @@ -186,6 +186,86 @@ static uint64_t octeon_mtp0_zeroes_p1(void) return rd; } =20 +static uint64_t octeon_cop2_key0_readback(uint64_t value) +{ + uint64_t rd; + + asm volatile( + "move $8, %[value]\n\t" + ".word 0x48a80104\n\t" /* dmtc2 $8, AES_KEY0 selector */ + ".word 0x482a0104\n\t" /* dmfc2 $10, AES_KEY0 selector */ + "move %[rd], $10\n\t" + : [rd] "=3Dr" (rd) + : [value] "r" (value) + : "$8", "$10"); + + return rd; +} + +static uint64_t octeon_cop2_key2_readback(uint64_t value) +{ + uint64_t rd; + + asm volatile( + "move $8, %[value]\n\t" + ".word 0x48a80106\n\t" /* dmtc2 $8, AES_KEY2 selector */ + ".word 0x482a0106\n\t" /* dmfc2 $10, AES_KEY2 selector */ + "move %[rd], $10\n\t" + : [rd] "=3Dr" (rd) + : [value] "r" (value) + : "$8", "$10"); + + return rd; +} + +static uint64_t octeon_cop2_key3_readback(uint64_t value) +{ + uint64_t rd; + + asm volatile( + "move $8, %[value]\n\t" + ".word 0x48a80107\n\t" /* dmtc2 $8, AES_KEY3 selector */ + ".word 0x482a0107\n\t" /* dmfc2 $10, AES_KEY3 selector */ + "move %[rd], $10\n\t" + : [rd] "=3Dr" (rd) + : [value] "r" (value) + : "$8", "$10"); + + return rd; +} + +static uint64_t octeon_cop2_keylength_readback(uint64_t value) +{ + uint64_t rd; + + asm volatile( + "move $8, %[value]\n\t" + ".word 0x48a80110\n\t" /* dmtc2 $8, AES_KEYLENGTH selector */ + ".word 0x482a0110\n\t" /* dmfc2 $10, AES_KEYLENGTH selector */ + "move %[rd], $10\n\t" + : [rd] "=3Dr" (rd) + : [value] "r" (value) + : "$8", "$10"); + + return rd; +} + +static uint64_t octeon_cop2_hsh_dat0_readback(uint64_t value) +{ + uint64_t rd; + + asm volatile( + "move $8, %[value]\n\t" + ".word 0x48a80040\n\t" /* dmtc2 $8, HSH_DAT0 selector */ + ".word 0x482a0040\n\t" /* dmfc2 $10, HSH_DAT0 selector */ + "move %[rd], $10\n\t" + : [rd] "=3Dr" (rd) + : [value] "r" (value) + : "$8", "$10"); + + return rd; +} + int main(void) { assert(octeon_baddu(0x123, 0x0f0) =3D=3D 0x13); @@ -199,6 +279,15 @@ int main(void) 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); + assert(octeon_cop2_key0_readback(0x1122334455667788ULL) =3D=3D + 0x1122334455667788ULL); + assert(octeon_cop2_key2_readback(0x8877665544332211ULL) =3D=3D + 0x8877665544332211ULL); + assert(octeon_cop2_key3_readback(0x0102030405060708ULL) =3D=3D + 0x0102030405060708ULL); + assert(octeon_cop2_keylength_readback(0xa5) =3D=3D 1); + assert(octeon_cop2_hsh_dat0_readback(0x0102030405060708ULL) =3D=3D + 0x0102030405060708ULL); =20 return 0; } --=20 2.53.0 From nobody Sun Jul 26 10:07:33 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=reject dis=none) header.from=oss.qualcomm.com ARC-Seal: i=1; a=rsa-sha256; t=1783448363; cv=none; d=zohomail.com; s=zohoarc; b=XLrwCYkbjSocYcMxtgcfnaS6wiqpE2dKVWYy0r2Tc9xxp1cyM4mi5JdlJ2Mkj/8TWkryTSXfd+FHrGNIlN8ZSFZriwUn4G18uxUwTERgkm9zsLkzTvc+C2EDtsFe84g6H7xLnxIbCW9iZAEie8diM025bV+DEI6LAoXEQRzhoKU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783448363; h=Content-Type:Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=0wtQgmx/NVlKO958uqowOtMGTQ7eBtEK767tGSSbrd8=; b=kzV71j6VJbTZtD4M7/qjPxpQ4ermlDICKCXWXnWpoNzf32vgTgnc06DYddRHVfrw7MbB7slT3Y1oZn5lsw/Nj7lN60ZgDn7rlBI5mAhUrVSzvwSruTa8NCjHwu3Or6hCUfPR+2BD4rRsWy5v6wSXoq2EtnUctQyQMuPERH9jJbM= 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=reject dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1783448363787344.0594427540152; Tue, 7 Jul 2026 11:19:23 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1whAMb-0006Lb-0M; Tue, 07 Jul 2026 14:17:47 -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 1whAMG-0005bM-A3 for qemu-devel@nongnu.org; Tue, 07 Jul 2026 14:17:24 -0400 Received: from mx0b-0031df01.pphosted.com ([205.220.180.131]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1whAMB-0006Ur-TB for qemu-devel@nongnu.org; Tue, 07 Jul 2026 14:17:24 -0400 Received: from pps.filterd (m0279870.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 667Gxbut187970 for ; Tue, 7 Jul 2026 18:17:18 GMT Received: from mail-qt1-f198.google.com (mail-qt1-f198.google.com [209.85.160.198]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4f95fd0cef-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Tue, 07 Jul 2026 18:17:18 +0000 (GMT) Received: by mail-qt1-f198.google.com with SMTP id d75a77b69052e-51c01ff996dso60159561cf.2 for ; Tue, 07 Jul 2026 11:17: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-47a9e3e2702sm36522504f8f.9.2026.07.07.11.17.15 for (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Tue, 07 Jul 2026 11:17:16 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= 0wtQgmx/NVlKO958uqowOtMGTQ7eBtEK767tGSSbrd8=; b=b2HcSFLPG3wPBZOj c/CbY6CL97Fk7emRIue2El+CPrmpbtTSS7nlSsemoNQz+CJLgEfaibE4VS/Vwl65 Aobr7kScrfCwFYYwXbwJOH4kK8X8z0HTuO4wmHOo3EWm31Y2TJPwiBhdmJ8RROhA uH4Nl99vhc0/xhw/JVDItKOF25/D7+cICOMiPrVW8t0VighBkO7y5j8lkepuZeX3 SdqU2w5xkoaKu3KO0MSDrgev76kxvOnI7/FZnRv94YEkvxpL7OQDkP/E6jQkWTuI tGPwXg5c/MwIKbZr9wk9AhlG98E43yZj7nXTXjL7K0JuWm55sARcWk7ABbwTIlZf UlI50A== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1783448238; x=1784053038; darn=nongnu.org; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=0wtQgmx/NVlKO958uqowOtMGTQ7eBtEK767tGSSbrd8=; b=X+DfBnyocY5+HRpzaw5qAKVOwviE2R5UAJ4REoLY41ZIDub40j7pD0/O5K1QC3Fqnl G+Jy/1QYkxys0MHgN11X9fdL3voBRnAviKsCgoAmmVQzWUKEwtKNhT97d8i4V4zZ9PGQ VcPBp6TDwIExPTovTpWRdNi7j1z3e84/eFeuCAaGbJFB59o7+j1eq40TjKlzsDhW3Nca rUyNAPZtfMKfGKjeQc+K2iWzDr2YVDXC3RxsRQdUVl9bRPKnDHQDMlhMDZKx9drvtBme MIOTfuqNZyhzBbBUgu8MO+xur0TSq1wzgSBXsr+9iGcn9JeIdwz/Xx4z4VRM/Q8+oTO1 ppBQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783448238; x=1784053038; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:to:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=0wtQgmx/NVlKO958uqowOtMGTQ7eBtEK767tGSSbrd8=; b=pKukdbzk0/HAA4KjrsAD6WWp7WN1ks8qUiDamTwakKqtzlIegL3X6txQ/OOKam4y8y FZgLi+hZaKFdRJES/5kVRh5Kt5vqKPQ7zM8hL2wKy/W/0lD4pY7f+m9NcVysXWWXQB3a iLSa4+kWil3Yar1V6XwF2sn175bq7fdZ1HS/Gl9Pz0se4eIFR0hyytKxj/G0044geAdx MGNC87e8lFnBCf40JfsAimiRJ98GdmdpyritNQdrnq8dKABLZu9UsAlAaqEu3O/D0CBi +xBuLAvF59krbrHG1VS+RFEj8xIf7InmbNiwbdt8btPLAnHoB9doGU7L0RS2Bmtgtjrt +p8g== X-Gm-Message-State: AOJu0YxlzqjsaYEAVOWcmTWDIVg95x1G2RP2qq/fONkSa00j/gfhdTkx MwZtpZRyAiFP6S8oxIys2xX3bF8X4Pl2w/pC6Eypd91ez9jKl+XpbqWwl7LO6iOkYQSqn0ggAOM dj+OLY6PPjcNb6SnJskGDf+sO4yyQngvPAvy+M5M4PqcJ4lv0Gxfsr54c4Izf0V21fg== X-Gm-Gg: AfdE7cmVL1Z7rZLGkjj+Le/xUv8h+boTO58gUF6grcyqcj6o2Zw29Gubh+Eucg66UBL f9vMczIYE2QVRGwtgSfaA5Ozsrj3kQbeJUBZxZj9B32nKlSDIvWtyp3wKqTsyz8gS7Wk1RB4ryz MkZIaoub15K2xJyNSuzbSKhFbrvNox+pXFKv1HMR9s9pTqq03mQrgaksKMOF8b5H1OjkEo1TugG j1UTzqtcRSr0ZGGZFuYez89n1w7AO/nTVLKQs2gzp+FA8GLbbI5OyshZWm/Oa/w3o312V5Yi9lR TXukbUv4n/Q5eKWdL1Lzfikm7q8eAE54qzga83JxaukqcMvc8nTCzVK+J26GuORF8i4pTYdh1gN 8/5rk8TmanFf21+qNaU4UGX9+DbkjvHLB74fr3buAMbQGh5jFtLLnQM9ZoC0S8nuvvntH X-Received: by 2002:a05:622a:1183:b0:51c:1b78:b044 with SMTP id d75a77b69052e-51c7487febcmr66637431cf.61.1783448237366; Tue, 07 Jul 2026 11:17:17 -0700 (PDT) X-Received: by 2002:a05:622a:1183:b0:51c:1b78:b044 with SMTP id d75a77b69052e-51c7487febcmr66637251cf.61.1783448236812; Tue, 07 Jul 2026 11:17:16 -0700 (PDT) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Subject: [PULL 15/23] target/mips: decode Octeon CRC and GFM COP2 selectors Date: Tue, 7 Jul 2026 20:15:20 +0200 Message-ID: <20260707181529.60191-16-philmd@oss.qualcomm.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260707181529.60191-1-philmd@oss.qualcomm.com> References: <20260707181529.60191-1-philmd@oss.qualcomm.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzA3MDE3OSBTYWx0ZWRfX59nVWgaaXd1y nrUHjQYHT93d+82L+E0mLjlnzBEFnmIEBGnNmIZcA+kErmgbR061YLZkesKJVMMbHXBv8h+8ln4 kTp0WCoaChQrluL24Kpy5iTKQ3j4o/dFuZnRh59MavEXhARMVciPxQY4zRafGd/hla5ItSA7/ky ySr/BpGnKNJ6VFAWbnrTt67DptxNaZEHI9j76VshYgbXRoJPVzs/tSW/Yr047VzYWjR+RQmFPdV ynusN1ERyV4tp33U22hFm00PReHZbsfDKahX91ALP5+llbVcf8mXtI57LISH2KIRzNbyzDsikDq Qgmk1C0W/KlN1hw1ngWDbdXapI7w/5PiOfwE/Sw+iaMeiUeUu/6QZCD5vx3ug4LJ3h8qwFg+XMb aMmjx8usRo/Mzh2d7shQV1tWxWu5BW+zQYAtgEqj17HmjaDkMTGEGlBRq85RAaQrtmKWREg9XNt /nWhaQxQ5Xy1gvA1Y/g== X-Authority-Analysis: v=2.4 cv=VZLH+lp9 c=1 sm=1 tr=0 ts=6a4d42ae cx=c_pps a=mPf7EqFMSY9/WdsSgAYMbA==:117 a=4s3hRJSeHn4rkQlkrse1kQ==:17 a=IkcTkHD0fZMA:10 a=RAioF0-LDSMA:10 a=M51BFTxLslgA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=gowsoOTTUOVcmtlkKump:22 a=pGLkceISAAAA:8 a=KKAkSRfTAAAA:8 a=EUspDBNiAAAA:8 a=p39F3lQ1OLOpEbmj1dkA:9 a=3ZKOabzyN94A:10 a=QEXdDO2ut3YA:10 a=dawVfQjAaf238kedN5IG:22 a=cvBusfyB2V15izCimMoJ:22 X-Proofpoint-ORIG-GUID: EuCgIurvj6y9yod77u5QNElyJHXC5gmN X-Proofpoint-Spam-Info: AW1haW4tMjYwNzA3MDE3OSBTYWx0ZWRfX5nDNAeZZdEhb GZyMY16TfRtmkPUmYLWQs79tvaXzOTlRRDB8tFAKBNAnOnrWa7c0GKZ1zX/R5/kXqUBulmtkMvH 2691EmaKq3veT5vFnS5cST9HgjXLk2s= X-Proofpoint-GUID: EuCgIurvj6y9yod77u5QNElyJHXC5gmN X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-07-07_04,2026-07-06_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 impostorscore=0 bulkscore=0 priorityscore=1501 suspectscore=0 lowpriorityscore=0 spamscore=0 malwarescore=0 adultscore=0 clxscore=1015 phishscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607070179 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=205.220.180.131; envelope-from=philmd@oss.qualcomm.com; helo=mx0b-0031df01.pphosted.com X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 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_LOW=-0.7, 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 @qualcomm.com) X-ZM-MESSAGEID: 1783448365058158500 From: James Hilliard Add explicit decodetree entries and translator bindings for the Octeon CRC and GFM COP2 operation selectors. Unlike simple register moves, these selectors update CRC or Galois-field state and therefore remain per-operation helper calls. Keep CRC/GFM decode next to the helpers that implement these side effects while avoiding a monolithic selector-dispatch helper. Signed-off-by: James Hilliard Reviewed-by: Richard Henderson Message-ID: <20260608-mips-octeon-missing-insns-v2-v16-15-daef7a0d8b04@gmai= l.com> Signed-off-by: Philippe Mathieu-Daud=C3=A9 --- target/mips/helper.h | 1 + target/mips/tcg/octeon.decode | 22 ++++++ target/mips/tcg/octeon_crypto.c | 7 ++ target/mips/tcg/octeon_translate.c | 50 +++++++++++++ tests/tcg/mips/user/isa/octeon/octeon-insns.c | 70 +++++++++++++++++++ 5 files changed, 150 insertions(+) diff --git a/target/mips/helper.h b/target/mips/helper.h index e210e406f9c..141350e80ad 100644 --- a/target/mips/helper.h +++ b/target/mips/helper.h @@ -32,6 +32,7 @@ DEF_HELPER_1(octeon_cp2_mf_gfm_mul_reflect1, i64, env) DEF_HELPER_1(octeon_cp2_mf_gfm_resinp_reflect0, i64, env) DEF_HELPER_1(octeon_cp2_mf_gfm_resinp_reflect1, i64, env) DEF_HELPER_2(octeon_cp2_mt_crc_write_iv_reflect, void, env, i64) +DEF_HELPER_2(octeon_cp2_mt_crc_write_polynomial_reflect, void, env, i64) DEF_HELPER_2(octeon_cp2_mt_crc_write_byte, void, env, i64) DEF_HELPER_2(octeon_cp2_mt_crc_write_half, void, env, i64) DEF_HELPER_2(octeon_cp2_mt_crc_write_word, void, env, i64) diff --git a/target/mips/tcg/octeon.decode b/target/mips/tcg/octeon.decode index 09fbc6c1e34..70e02d0b0e9 100644 --- a/target/mips/tcg/octeon.decode +++ b/target/mips/tcg/octeon.decode @@ -132,6 +132,11 @@ LDX 011111 ..... ..... ..... 01000 001010 @lx CVM_MF_CRC_POLYNOMIAL 010010 00001 rt:5 0000 0010 0000 = 0000 &cp2 CVM_MF_CRC_IV 010010 00001 rt:5 0000 0010 0000 = 0001 &cp2 CVM_MF_CRC_LEN 010010 00001 rt:5 0000 0010 0000 = 0010 &cp2 + CVM_MF_CRC_IV_REFLECT 010010 00001 rt:5 0000 0010 0000 = 0011 &cp2 + CVM_MF_GFM_MUL_REFLECT0 010010 00001 rt:5 0000 0000 0101 = 1000 &cp2 + CVM_MF_GFM_MUL_REFLECT1 010010 00001 rt:5 0000 0000 0101 = 1001 &cp2 + CVM_MF_GFM_RESINP_REFLECT0 010010 00001 rt:5 0000 0000 0101 = 1010 &cp2 + CVM_MF_GFM_RESINP_REFLECT1 010010 00001 rt:5 0000 0000 0101 = 1011 &cp2 CVM_MF_GFM_MUL0 010010 00001 rt:5 0000 0010 0101 = 1000 &cp2 CVM_MF_GFM_MUL1 010010 00001 rt:5 0000 0010 0101 = 1001 &cp2 CVM_MF_GFM_RESINP0 010010 00001 rt:5 0000 0010 0101 = 1010 &cp2 @@ -148,6 +153,9 @@ LDX 011111 ..... ..... ..... 01000 001010 @lx CVM_MT_HSH_IV1 010010 00101 rt:5 0000 0000 0100 = 1001 &cp2 CVM_MT_HSH_IV2 010010 00101 rt:5 0000 0000 0100 = 1010 &cp2 CVM_MT_HSH_IV3 010010 00101 rt:5 0000 0000 0100 = 1011 &cp2 + CVM_MT_GFM_MUL_REFLECT0 010010 00101 rt:5 0000 0000 0101 = 1000 &cp2 + CVM_MT_GFM_MUL_REFLECT1 010010 00101 rt:5 0000 0000 0101 = 1001 &cp2 + CVM_MT_GFM_XOR0_REFLECT 010010 00101 rt:5 0000 0000 0101 = 1100 &cp2 CVM_MT_3DES_KEY0 010010 00101 rt:5 0000 0000 1000 = 0000 &cp2 CVM_MT_3DES_KEY1 010010 00101 rt:5 0000 0000 1000 = 0001 &cp2 CVM_MT_3DES_KEY2 010010 00101 rt:5 0000 0000 1000 = 0010 &cp2 @@ -167,13 +175,27 @@ LDX 011111 ..... ..... ..... 01000 001010 @lx CVM_MT_AES_DEC0 010010 00101 rt:5 0000 0001 0000 = 1110 &cp2 CVM_MT_AES_KEYLENGTH 010010 00101 rt:5 0000 0001 0001 = 0000 &cp2 CVM_MT_CRC_IV 010010 00101 rt:5 0000 0010 0000 = 0001 &cp2 + CVM_MT_CRC_IV_REFLECT 010010 00101 rt:5 0000 0010 0001 = 0001 &cp2 + CVM_MT_CRC_BYTE 010010 00101 rt:5 0000 0010 0000 = 0100 &cp2 + CVM_MT_CRC_HALF 010010 00101 rt:5 0000 0010 0000 = 0101 &cp2 + CVM_MT_CRC_WORD 010010 00101 rt:5 0000 0010 0000 = 0110 &cp2 + CVM_MT_CRC_BYTE_REFLECT 010010 00101 rt:5 0000 0010 0001 = 0100 &cp2 + CVM_MT_CRC_HALF_REFLECT 010010 00101 rt:5 0000 0010 0001 = 0101 &cp2 + CVM_MT_CRC_WORD_REFLECT 010010 00101 rt:5 0000 0010 0001 = 0110 &cp2 CVM_MT_GFM_MUL0 010010 00101 rt:5 0000 0010 0101 = 1000 &cp2 CVM_MT_GFM_MUL1 010010 00101 rt:5 0000 0010 0101 = 1001 &cp2 CVM_MT_GFM_RESINP0 010010 00101 rt:5 0000 0010 0101 = 1010 &cp2 CVM_MT_GFM_RESINP1 010010 00101 rt:5 0000 0010 0101 = 1011 &cp2 CVM_MT_GFM_POLY 010010 00101 rt:5 0000 0010 0101 = 1110 &cp2 CVM_MT_CRC_LEN 010010 00101 rt:5 0001 0010 0000 = 0010 &cp2 + CVM_MT_CRC_DWORD 010010 00101 rt:5 0001 0010 0000 = 0111 &cp2 + CVM_MT_CRC_VAR 010010 00101 rt:5 0001 0010 0000 = 1000 &cp2 + CVM_MT_CRC_DWORD_REFLECT 010010 00101 rt:5 0001 0010 0001 = 0111 &cp2 + CVM_MT_CRC_VAR_REFLECT 010010 00101 rt:5 0001 0010 0001 = 1000 &cp2 + CVM_MT_GFM_XORMUL1_REFLECT 010010 00101 rt:5 0100 0000 0101 = 1101 &cp2 CVM_MT_CRC_POLYNOMIAL 010010 00101 rt:5 0100 0010 0000 = 0000 &cp2 + CVM_MT_CRC_POLYNOMIAL_REFLECT 010010 00101 rt:5 0100 0010 0001 = 0000 &cp2 + CVM_MT_GFM_XORMUL1 010010 00101 rt:5 0100 0010 0101 = 1101 &cp2 ] CP2_Undef 010010 ----- ----- ---- ---- ----= ---- } diff --git a/target/mips/tcg/octeon_crypto.c b/target/mips/tcg/octeon_crypt= o.c index b24533e03df..fbf80be2a53 100644 --- a/target/mips/tcg/octeon_crypto.c +++ b/target/mips/tcg/octeon_crypto.c @@ -2203,6 +2203,13 @@ void helper_octeon_cp2_mt_crc_write_iv_reflect(CPUMI= PSState *env, octeon_crc_reflect32_by_byte((uint32_t)value); } =20 +void helper_octeon_cp2_mt_crc_write_polynomial_reflect(CPUMIPSState *env, + uint64_t value) +{ + env->octeon_crypto.crc_poly =3D + octeon_crc_reflect32_by_byte((uint32_t)value); +} + void helper_octeon_cp2_mt_crc_write_byte(CPUMIPSState *env, uint64_t value) { octeon_crc_update_normal(&env->octeon_crypto, value, 1); diff --git a/target/mips/tcg/octeon_translate.c b/target/mips/tcg/octeon_tr= anslate.c index b33252dd1f8..ce4cfcb3f30 100644 --- a/target/mips/tcg/octeon_translate.c +++ b/target/mips/tcg/octeon_translate.c @@ -28,6 +28,9 @@ TRANS(NAME, trans_octeon_cp2_mf_hsh_pair, \ OCTEON_CRYPTO_OFFSET(FIELD[2 * (INDEX)]), \ OCTEON_CRYPTO_OFFSET(FIELD[2 * (INDEX) + 1])) +#define CP2_MF_HELPER(NAME, SUFFIX) \ + TRANS(NAME, trans_octeon_cp2_mf_helper, \ + gen_helper_octeon_cp2_mf_ ## SUFFIX) #define CP2_MT_I64(NAME, FIELD) \ TRANS(NAME, trans_octeon_cp2_mt_i64, OCTEON_CRYPTO_OFFSET(FIELD)) #define CP2_MT_U32(NAME, FIELD) \ @@ -41,6 +44,9 @@ TRANS(NAME, trans_octeon_cp2_mt_hsh_pair, \ OCTEON_CRYPTO_OFFSET(FIELD[2 * (INDEX)]), \ OCTEON_CRYPTO_OFFSET(FIELD[2 * (INDEX) + 1])) +#define CP2_MT_HELPER(NAME, SUFFIX) \ + TRANS(NAME, trans_octeon_cp2_mt_helper, \ + gen_helper_octeon_cp2_mt_ ## SUFFIX) =20 #define OCTEON_LO32_OFFSET (HOST_BIG_ENDIAN ? 4 : 0) =20 @@ -99,6 +105,16 @@ static bool trans_octeon_cp2_mf_hsh_pair(DisasContext *= ctx, arg_cp2 *a, return true; } =20 +static bool trans_octeon_cp2_mf_helper(DisasContext *ctx, arg_cp2 *a, + void (*gen_helper)(TCGv_i64, TCGv_e= nv)) +{ + TCGv_i64 value =3D tcg_temp_new_i64(); + + gen_helper(value, tcg_env); + gen_store_gpr(value, a->rt); + return true; +} + static bool trans_octeon_cp2_mt_i64(DisasContext *ctx, arg_cp2 *a, int off= set) { TCGv_i64 value =3D tcg_temp_new_i64(); @@ -149,6 +165,16 @@ static bool trans_octeon_cp2_mt_hsh_pair(DisasContext = *ctx, arg_cp2 *a, return true; } =20 +static bool trans_octeon_cp2_mt_helper(DisasContext *ctx, arg_cp2 *a, + void (*gen_helper)(TCGv_env, TCGv_i= 64)) +{ + TCGv_i64 value =3D tcg_temp_new_i64(); + + gen_load_gpr(value, a->rt); + gen_helper(tcg_env, value); + return true; +} + CP2_MF_HSH_PAIR(CVM_MF_HSH_DAT0, hsh_dat, 0); CP2_MF_HSH_PAIR(CVM_MF_HSH_DAT1, hsh_dat, 1); CP2_MF_HSH_PAIR(CVM_MF_HSH_DAT2, hsh_dat, 2); @@ -185,6 +211,12 @@ CP2_MF_I64(CVM_MF_GFM_RESINP0, gfm_resinp[0]); CP2_MF_I64(CVM_MF_GFM_RESINP1, gfm_resinp[1]); CP2_MF_U16(CVM_MF_GFM_POLY, gfm_poly); =20 +CP2_MF_HELPER(CVM_MF_CRC_IV_REFLECT, crc_iv_reflect); +CP2_MF_HELPER(CVM_MF_GFM_MUL_REFLECT0, gfm_mul_reflect0); +CP2_MF_HELPER(CVM_MF_GFM_MUL_REFLECT1, gfm_mul_reflect1); +CP2_MF_HELPER(CVM_MF_GFM_RESINP_REFLECT0, gfm_resinp_reflect0); +CP2_MF_HELPER(CVM_MF_GFM_RESINP_REFLECT1, gfm_resinp_reflect1); + CP2_MT_HSH_PAIR(CVM_MT_HSH_DAT0, hsh_dat, 0); CP2_MT_HSH_PAIR(CVM_MT_HSH_DAT1, hsh_dat, 1); CP2_MT_HSH_PAIR(CVM_MT_HSH_DAT2, hsh_dat, 2); @@ -196,6 +228,9 @@ CP2_MT_HSH_PAIR(CVM_MT_HSH_IV0, hsh_iv, 0); CP2_MT_HSH_PAIR(CVM_MT_HSH_IV1, hsh_iv, 1); CP2_MT_HSH_PAIR(CVM_MT_HSH_IV2, hsh_iv, 2); CP2_MT_HSH_PAIR(CVM_MT_HSH_IV3, hsh_iv, 3); +CP2_MT_HELPER(CVM_MT_GFM_MUL_REFLECT0, gfm_mul_reflect0); +CP2_MT_HELPER(CVM_MT_GFM_MUL_REFLECT1, gfm_mul_reflect1); +CP2_MT_HELPER(CVM_MT_GFM_XOR0_REFLECT, gfm_xor0_reflect); CP2_MT_I64(CVM_MT_3DES_KEY0, des3_key[0]); CP2_MT_I64(CVM_MT_3DES_KEY1, des3_key[1]); CP2_MT_I64(CVM_MT_3DES_KEY2, des3_key[2]); @@ -223,6 +258,21 @@ CP2_MT_U16(CVM_MT_GFM_POLY, gfm_poly); CP2_MT_U8_MASKED(CVM_MT_CRC_LEN, crc_len, 0xf); CP2_MT_U32(CVM_MT_CRC_POLYNOMIAL, crc_poly); =20 +CP2_MT_HELPER(CVM_MT_CRC_POLYNOMIAL_REFLECT, crc_write_polynomial_reflect); +CP2_MT_HELPER(CVM_MT_CRC_IV_REFLECT, crc_write_iv_reflect); +CP2_MT_HELPER(CVM_MT_CRC_BYTE, crc_write_byte); +CP2_MT_HELPER(CVM_MT_CRC_HALF, crc_write_half); +CP2_MT_HELPER(CVM_MT_CRC_WORD, crc_write_word); +CP2_MT_HELPER(CVM_MT_CRC_BYTE_REFLECT, crc_write_byte_reflect); +CP2_MT_HELPER(CVM_MT_CRC_HALF_REFLECT, crc_write_half_reflect); +CP2_MT_HELPER(CVM_MT_CRC_WORD_REFLECT, crc_write_word_reflect); +CP2_MT_HELPER(CVM_MT_CRC_DWORD, crc_write_dword); +CP2_MT_HELPER(CVM_MT_CRC_VAR, crc_write_var); +CP2_MT_HELPER(CVM_MT_CRC_DWORD_REFLECT, crc_write_dword_reflect); +CP2_MT_HELPER(CVM_MT_CRC_VAR_REFLECT, crc_write_var_reflect); +CP2_MT_HELPER(CVM_MT_GFM_XORMUL1_REFLECT, gfm_xormul1_reflect); +CP2_MT_HELPER(CVM_MT_GFM_XORMUL1, gfm_xormul1); + static bool trans_BBIT(DisasContext *ctx, arg_BBIT *a) { TCGv_i64 p; diff --git a/tests/tcg/mips/user/isa/octeon/octeon-insns.c b/tests/tcg/mips= /user/isa/octeon/octeon-insns.c index 7a7445c40a5..f3c52d7829e 100644 --- a/tests/tcg/mips/user/isa/octeon/octeon-insns.c +++ b/tests/tcg/mips/user/isa/octeon/octeon-insns.c @@ -266,6 +266,70 @@ static uint64_t octeon_cop2_hsh_dat0_readback(uint64_t= value) return rd; } =20 +static uint64_t octeon_cop2_crc_len_readback(uint64_t value) +{ + uint64_t rd; + + asm volatile( + "move $8, %[value]\n\t" + ".word 0x48a81202\n\t" /* dmtc2 $8, CRC_LEN selector */ + ".word 0x482a0202\n\t" /* dmfc2 $10, CRC_LEN selector */ + "move %[rd], $10\n\t" + : [rd] "=3Dr" (rd) + : [value] "r" (value) + : "$8", "$10"); + + return rd; +} + +static uint64_t octeon_cop2_crc_poly_reflect_readback(uint64_t value) +{ + uint64_t rd; + + asm volatile( + "move $8, %[value]\n\t" + ".word 0x48a84210\n\t" /* dmtc2 $8, CRC_POLYNOMIAL_REFLECT selecto= r */ + ".word 0x482a0200\n\t" /* dmfc2 $10, CRC_POLYNOMIAL selector */ + "move %[rd], $10\n\t" + : [rd] "=3Dr" (rd) + : [value] "r" (value) + : "$8", "$10"); + + return rd; +} + +static uint64_t octeon_cop2_gfm_mul_reflect_write_readback(uint64_t value) +{ + uint64_t rd; + + asm volatile( + "move $8, %[value]\n\t" + ".word 0x48a80058\n\t" /* dmtc2 $8, GFM_MUL_REFLECT0 selector */ + ".word 0x482a0258\n\t" /* dmfc2 $10, GFM_MUL0 selector */ + "move %[rd], $10\n\t" + : [rd] "=3Dr" (rd) + : [value] "r" (value) + : "$8", "$10"); + + return rd; +} + +static uint64_t octeon_cop2_gfm_mul_reflect_readback(uint64_t value) +{ + uint64_t rd; + + asm volatile( + "move $8, %[value]\n\t" + ".word 0x48a80258\n\t" /* dmtc2 $8, GFM_MUL0 selector */ + ".word 0x482a0058\n\t" /* dmfc2 $10, GFM_MUL_REFLECT0 selector */ + "move %[rd], $10\n\t" + : [rd] "=3Dr" (rd) + : [value] "r" (value) + : "$8", "$10"); + + return rd; +} + int main(void) { assert(octeon_baddu(0x123, 0x0f0) =3D=3D 0x13); @@ -288,6 +352,12 @@ int main(void) assert(octeon_cop2_keylength_readback(0xa5) =3D=3D 1); assert(octeon_cop2_hsh_dat0_readback(0x0102030405060708ULL) =3D=3D 0x0102030405060708ULL); + assert(octeon_cop2_crc_len_readback(0xb5) =3D=3D 5); + assert(octeon_cop2_crc_poly_reflect_readback(0x12345678) =3D=3D 0x482c= 6a1e); + assert(octeon_cop2_gfm_mul_reflect_write_readback( + 0x0123456789abcdefULL) =3D=3D 0xf7b3d591e6a2c480ULL); + assert(octeon_cop2_gfm_mul_reflect_readback( + 0xfedcba9876543210ULL) =3D=3D 0x084c2a6e195d3b7fULL); =20 return 0; } --=20 2.53.0 From nobody Sun Jul 26 10:07:33 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=reject dis=none) header.from=oss.qualcomm.com ARC-Seal: i=1; a=rsa-sha256; t=1783448443; cv=none; d=zohomail.com; s=zohoarc; b=Ion6vntmzkQtvig5b3UGP/HfMASPInOpQI3mDZJStqvy55zsxpOOs+HxNpeNkLE2KPjHvo5tahzwSdWCUqoPQLKqXOr1UqW0eUbCbTsYJ5aFv1myyOprjorTwU7+uFAvQ7gpcUyIzn1oKqAnY2/JXEM1UfIrOd8bykeMdaOjvR4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783448443; h=Content-Type:Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=wDPADTpwN+4bv75/s9vZUAKbnfqR7GHOmTTI3hQ84ZU=; b=kfAiJu5sIuAZkCZg/voJoVIbD5MXL4dLA5SwYWTxMI6ZFGYHeMOL4gIzNL1AVaJ8NOAW57lPqNSuOQear1LqSe0LgEdOFzHlFIDSoJuN1uTEneOLC4DGxhdhABgDGjPeV54izz/IWHCq5Wuktobk2qY4OwMWhhFHoki2Za90NZY= 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=reject dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1783448443315584.2792970530757; Tue, 7 Jul 2026 11:20:43 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1whAMq-0006k6-Jg; Tue, 07 Jul 2026 14:18: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 1whAMM-0005xR-61 for qemu-devel@nongnu.org; Tue, 07 Jul 2026 14:17:30 -0400 Received: from mx0b-0031df01.pphosted.com ([205.220.180.131]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1whAMI-0006Vz-WA for qemu-devel@nongnu.org; Tue, 07 Jul 2026 14:17:29 -0400 Received: from pps.filterd (m0279870.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 667GxaZo187964 for ; Tue, 7 Jul 2026 18:17:26 GMT Received: from mail-qt1-f200.google.com (mail-qt1-f200.google.com [209.85.160.200]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4f95fd0cfs-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Tue, 07 Jul 2026 18:17:25 +0000 (GMT) Received: by mail-qt1-f200.google.com with SMTP id d75a77b69052e-51c083f1818so49358081cf.0 for ; Tue, 07 Jul 2026 11:17:25 -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-47aa0f214d2sm34689935f8f.33.2026.07.07.11.17.22 for (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Tue, 07 Jul 2026 11:17:23 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= wDPADTpwN+4bv75/s9vZUAKbnfqR7GHOmTTI3hQ84ZU=; b=FBA24MPWK1KZ6sEA BOWZuRXcAz/X1+yDy7xLoFzy9nHdLIw9LS6hPx0sNOUeaBctqAYYE2yWE/IuQuOw h85iWLfIEyZOJW1ZPu2Kj9JL9ji3YjfdfQtIKjv8M6kRL3ca2Nq3AN+Iqx/Ozb3c cydvtUpMQwi2KQSuEwmLEVrh8y3YkubiaR0im41MQJJtk8XY3LYkKtYr64/C1mdh igMvLLItWiYHoC6ZblixeWonPquhs94S4uLqypTS8V7G1wrcPZaR260vUiZbZ+/2 iNmXb1jR8lky1OZkplh0CBJPJIBo8RHHZOKVQXso4HOf63NizjfyyJVd1dzE2AjH p5v7kQ== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1783448245; x=1784053045; darn=nongnu.org; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=wDPADTpwN+4bv75/s9vZUAKbnfqR7GHOmTTI3hQ84ZU=; b=IlSmmYUHr/58rDu3hf9wW0KouKn0fOanoMzfzsaldTm5F3OLkofZY6n6KazJzxdS8R LMuttVILFpsEFa8hZzpKM+L67re/xVknL2XJ1iIt/yJlDk9x2mkJBV0nVEiYyoUBKayU YtZj3XLwOErxzLrjAzyfh6cUDHfbvMs4M45uvbusZqxkyrJgos2LmyMKPXhHOMq2q38t WjUOML+4Bmr3J9GTYEN+GH2w4zPmp/d7Bwz5QSFcOkGRuniAqw+HVTg0w5Zy6RQqZOFM 3XLq2WBSaFYwothBVeKE4E4kRjqAmxr6Vg3bjfmodXj+Zyc8P2+Nh4wO9uYwiz1fGCgI +uYw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783448245; x=1784053045; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:to:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=wDPADTpwN+4bv75/s9vZUAKbnfqR7GHOmTTI3hQ84ZU=; b=DdJuUxtozP5eI3fGXQwpi/LB1T/d3T4yn3xYrfqX1r0IMSdCQFd4s36zXvNr47FD4m s2wbn0ZSGrHc/Qmfuee1c6iNxi1GPWRfAVl+hXcDKKkMnFzZ6q4CVj3DOGu0OmuscSRh kCIfvZRMXt3Ao5ZqNECT82qZ381W0F8hWNuGDbV4eFBxfVNytoUPlNopc1S2RazPg0yE a12vGCS5vMw3OvATlvcAl9tu3YxBLXCNXzgJpAHD35n8qKn3DBQ0c6pSMieIXH68UHfH 5PjkQsBalintRwLBt6mgHY+5djXifBx1MfNDjVRJPtwcjmFTNDCAULREelxjsUSl3xhW a6/g== X-Gm-Message-State: AOJu0YzrcHTbQi5esOivobkgekf4tQS2SBdz7XqVrgG8sYgUAGl76kp+ UBDsznyjPjkd9msBPhk9+BQcltrVTdF/uoFgnGgZ98cYXvK6OJZ83pO66t+PBCTU+BhXs1lZVnM zhl2Y7rP1YfiXHD4g6QbeFUAYZ0LwumqFPdmxthZykjhL3am/VlQXBoiXVCdmZAkmZw== X-Gm-Gg: AfdE7cnjIwQWUjECt8jsiHbs550UN5WJR1lCFZhOxGt0KCLbqSZrBSFhiDJf3/DpG7r FWfC5fetGz9HHsVO8dxP1ikVtAmunbcKXoc1aUNlmKTxMoVlLYvKbUkbFBazIx4AhzbwXeWSUDK fbOz9MRpdy2MpjQRnpSlubKyAhL5sBou8BNioOTPESklo/5jZh4+0QHJ/0rFU1DU6bkmnSAKNVQ cex9gMF6tQkAr72cH2i7kbT8+JmYFtkjmc6AGtuntjrzXrA/+cX/7CRN3ew1sFMomKmA4LpNVWO +gJlpkwVWv+Tm0L3ThEMATgwaDPtxwUsV3l1eSq0QTPA1LfZ4Wk0VtHTF3l9QNAK1V1QOQiU+dL Ie8NKgU04DOB2NELnGmOD0mNHLg6pV14fjWIiEQREP83t0lC0B88aGiJOmEBBJu0eQ+fQ X-Received: by 2002:ac8:584a:0:b0:51c:1b22:b855 with SMTP id d75a77b69052e-51c748731admr68758841cf.62.1783448244662; Tue, 07 Jul 2026 11:17:24 -0700 (PDT) X-Received: by 2002:ac8:584a:0:b0:51c:1b22:b855 with SMTP id d75a77b69052e-51c748731admr68758221cf.62.1783448243780; Tue, 07 Jul 2026 11:17:23 -0700 (PDT) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Subject: [PULL 16/23] target/mips: decode Octeon HSH and SHA3 COP2 selectors Date: Tue, 7 Jul 2026 20:15:21 +0200 Message-ID: <20260707181529.60191-17-philmd@oss.qualcomm.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260707181529.60191-1-philmd@oss.qualcomm.com> References: <20260707181529.60191-1-philmd@oss.qualcomm.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzA3MDE3OSBTYWx0ZWRfX1cpoajL5fSLk nQKnIBoeb9m4h0Gb2kKC+Z7YYgZwhaNyRnxXq5sxVQzRAFaCSbKNnOBuqrUfCNGuxeyxDUeaUNi 9hv/4RvFwFLciwZdLsdbiQCPFHChZF6cmTOdMTu7/y5CFVMKPCXzjp1dcPbnKaYa9n99QtxyDIi LfK+jnAxLwANyL3gGHWF9EQbeMrlFFmH3Ev7PVGWOEQqDCx51zTuGQnBr3lNYI2+AtQUFp8wc/2 MCYwjqqjaAtxQ6p1Z7XiVOEIKzWchEtWlSVpYv7WX4PbLeSgL06g0/IUu6XEbwPAHC0gTJ84D21 DdKD7x/Fi6MHjrmwFmpJw8YPnHd6H1C0iATyjojTBJqTPhht1udGiJH2vxRoVFqzawU9hE3wYNg g8B7WMhmOa7dXfyFz6bA16gqsM1EgRW2uPBjSdq7zfQd9Ij7b3p1brT3MPnMab6oLPv6ODPCUke hO+T4AAaG3sgUz0QWnw== X-Authority-Analysis: v=2.4 cv=VZLH+lp9 c=1 sm=1 tr=0 ts=6a4d42b5 cx=c_pps a=JbAStetqSzwMeJznSMzCyw==:117 a=4s3hRJSeHn4rkQlkrse1kQ==:17 a=IkcTkHD0fZMA:10 a=RAioF0-LDSMA:10 a=M51BFTxLslgA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=gowsoOTTUOVcmtlkKump:22 a=pGLkceISAAAA:8 a=KKAkSRfTAAAA:8 a=EUspDBNiAAAA:8 a=nzZw3bgjB8hCpGrHF1wA:9 a=3ZKOabzyN94A:10 a=QEXdDO2ut3YA:10 a=uxP6HrT_eTzRwkO_Te1X:22 a=cvBusfyB2V15izCimMoJ:22 X-Proofpoint-ORIG-GUID: Wc0XJLc6jchPWPjtw6qVdsMha4QSR2s6 X-Proofpoint-Spam-Info: AW1haW4tMjYwNzA3MDE3OSBTYWx0ZWRfX4ULXF6whfWOj ZvM0EUdNDmalfpqH1jOqVbCTSMPslmFTLIqoDzElpQhoFD6Lf9RBD1nLcM8ApgRFfVuorZFVXlz fiwz+UvkRAUNcsFNqI332deHwHghK18= X-Proofpoint-GUID: Wc0XJLc6jchPWPjtw6qVdsMha4QSR2s6 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-07-07_04,2026-07-06_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 impostorscore=0 bulkscore=0 priorityscore=1501 suspectscore=0 lowpriorityscore=0 spamscore=0 malwarescore=0 adultscore=0 clxscore=1015 phishscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607070179 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=205.220.180.131; envelope-from=philmd@oss.qualcomm.com; helo=mx0b-0031df01.pphosted.com X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 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_LOW=-0.7, 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 @qualcomm.com) X-ZM-MESSAGEID: 1783448445620158500 From: James Hilliard Add explicit decodetree entries and translator bindings for the Octeon HSH shared-window selectors and SHA3 operation selectors. Simple SHA3 DAT register moves and XORDAT selectors use direct TCG transfers, while HSH operation selectors and SHA3 STARTOP remain helper-backed for their visible side effects. Keep HSH/SHA3 decode separate from direct register transfers because the shared hash-window aliases and side-effecting operations need their own selector coverage. Signed-off-by: James Hilliard Reviewed-by: Richard Henderson Message-ID: <20260608-mips-octeon-missing-insns-v2-v16-16-daef7a0d8b04@gmai= l.com> Signed-off-by: Philippe Mathieu-Daud=C3=A9 --- target/mips/tcg/octeon.decode | 77 ++++++++++++++++++++++ target/mips/tcg/octeon_translate.c | 102 +++++++++++++++++++++++++++++ 2 files changed, 179 insertions(+) diff --git a/target/mips/tcg/octeon.decode b/target/mips/tcg/octeon.decode index 70e02d0b0e9..b1a63b743f2 100644 --- a/target/mips/tcg/octeon.decode +++ b/target/mips/tcg/octeon.decode @@ -113,6 +113,7 @@ LDX 011111 ..... ..... ..... 01000 001010 @lx CVM_MF_HSH_DAT4 010010 00001 rt:5 0000 0000 0100 = 0100 &cp2 CVM_MF_HSH_DAT5 010010 00001 rt:5 0000 0000 0100 = 0101 &cp2 CVM_MF_HSH_DAT6 010010 00001 rt:5 0000 0000 0100 = 0110 &cp2 + CVM_MF_SHA3_DAT24 010010 00001 rt:5 0000 0000 0101 = 0000 &cp2 CVM_MF_3DES_KEY0 010010 00001 rt:5 0000 0000 1000 = 0000 &cp2 CVM_MF_3DES_KEY1 010010 00001 rt:5 0000 0000 1000 = 0001 &cp2 CVM_MF_3DES_KEY2 010010 00001 rt:5 0000 0000 1000 = 0010 &cp2 @@ -137,6 +138,30 @@ LDX 011111 ..... ..... ..... 01000 001010 @lx CVM_MF_GFM_MUL_REFLECT1 010010 00001 rt:5 0000 0000 0101 = 1001 &cp2 CVM_MF_GFM_RESINP_REFLECT0 010010 00001 rt:5 0000 0000 0101 = 1010 &cp2 CVM_MF_GFM_RESINP_REFLECT1 010010 00001 rt:5 0000 0000 0101 = 1011 &cp2 + CVM_MF_HSH_DATW0 010010 00001 rt:5 0000 0010 0100 = 0000 &cp2 + CVM_MF_HSH_DATW1 010010 00001 rt:5 0000 0010 0100 = 0001 &cp2 + CVM_MF_HSH_DATW2 010010 00001 rt:5 0000 0010 0100 = 0010 &cp2 + CVM_MF_HSH_DATW3 010010 00001 rt:5 0000 0010 0100 = 0011 &cp2 + CVM_MF_HSH_DATW4 010010 00001 rt:5 0000 0010 0100 = 0100 &cp2 + CVM_MF_HSH_DATW5 010010 00001 rt:5 0000 0010 0100 = 0101 &cp2 + CVM_MF_HSH_DATW6 010010 00001 rt:5 0000 0010 0100 = 0110 &cp2 + CVM_MF_HSH_DATW7 010010 00001 rt:5 0000 0010 0100 = 0111 &cp2 + CVM_MF_HSH_DATW8 010010 00001 rt:5 0000 0010 0100 = 1000 &cp2 + CVM_MF_HSH_DATW9 010010 00001 rt:5 0000 0010 0100 = 1001 &cp2 + CVM_MF_HSH_DATW10 010010 00001 rt:5 0000 0010 0100 = 1010 &cp2 + CVM_MF_HSH_DATW11 010010 00001 rt:5 0000 0010 0100 = 1011 &cp2 + CVM_MF_HSH_DATW12 010010 00001 rt:5 0000 0010 0100 = 1100 &cp2 + CVM_MF_HSH_DATW13 010010 00001 rt:5 0000 0010 0100 = 1101 &cp2 + CVM_MF_HSH_DATW14 010010 00001 rt:5 0000 0010 0100 = 1110 &cp2 + CVM_MF_HSH_DATW15 010010 00001 rt:5 0000 0010 0100 = 1111 &cp2 + CVM_MF_HSH_IVW0 010010 00001 rt:5 0000 0010 0101 = 0000 &cp2 + CVM_MF_HSH_IVW1 010010 00001 rt:5 0000 0010 0101 = 0001 &cp2 + CVM_MF_HSH_IVW2 010010 00001 rt:5 0000 0010 0101 = 0010 &cp2 + CVM_MF_HSH_IVW3 010010 00001 rt:5 0000 0010 0101 = 0011 &cp2 + CVM_MF_HSH_IVW4 010010 00001 rt:5 0000 0010 0101 = 0100 &cp2 + CVM_MF_HSH_IVW5 010010 00001 rt:5 0000 0010 0101 = 0101 &cp2 + CVM_MF_HSH_IVW6 010010 00001 rt:5 0000 0010 0101 = 0110 &cp2 + CVM_MF_HSH_IVW7 010010 00001 rt:5 0000 0010 0101 = 0111 &cp2 CVM_MF_GFM_MUL0 010010 00001 rt:5 0000 0010 0101 = 1000 &cp2 CVM_MF_GFM_MUL1 010010 00001 rt:5 0000 0010 0101 = 1001 &cp2 CVM_MF_GFM_RESINP0 010010 00001 rt:5 0000 0010 0101 = 1010 &cp2 @@ -153,6 +178,10 @@ LDX 011111 ..... ..... ..... 01000 001010 @lx CVM_MT_HSH_IV1 010010 00101 rt:5 0000 0000 0100 = 1001 &cp2 CVM_MT_HSH_IV2 010010 00101 rt:5 0000 0000 0100 = 1010 &cp2 CVM_MT_HSH_IV3 010010 00101 rt:5 0000 0000 0100 = 1011 &cp2 + CVM_MT_SHA3_DAT24 010010 00101 rt:5 0000 0000 0101 = 0000 &cp2 + CVM_MT_SHA3_DAT15 010010 00101 rt:5 0000 0000 0101 = 0001 &cp2 + # Cavium SDK code uses 0x0057 as a STARTSHA1 compatibility alias. + CVM_MT_HSH_STARTSHA1_COMPAT 010010 00101 rt:5 0000 0000 0101 = 0111 &cp2 CVM_MT_GFM_MUL_REFLECT0 010010 00101 rt:5 0000 0000 0101 = 1000 &cp2 CVM_MT_GFM_MUL_REFLECT1 010010 00101 rt:5 0000 0000 0101 = 1001 &cp2 CVM_MT_GFM_XOR0_REFLECT 010010 00101 rt:5 0000 0000 0101 = 1100 &cp2 @@ -182,19 +211,67 @@ LDX 011111 ..... ..... ..... 01000 001010 @lx CVM_MT_CRC_BYTE_REFLECT 010010 00101 rt:5 0000 0010 0001 = 0100 &cp2 CVM_MT_CRC_HALF_REFLECT 010010 00101 rt:5 0000 0010 0001 = 0101 &cp2 CVM_MT_CRC_WORD_REFLECT 010010 00101 rt:5 0000 0010 0001 = 0110 &cp2 + CVM_MT_HSH_DATW0 010010 00101 rt:5 0000 0010 0100 = 0000 &cp2 + CVM_MT_HSH_DATW1 010010 00101 rt:5 0000 0010 0100 = 0001 &cp2 + CVM_MT_HSH_DATW2 010010 00101 rt:5 0000 0010 0100 = 0010 &cp2 + CVM_MT_HSH_DATW3 010010 00101 rt:5 0000 0010 0100 = 0011 &cp2 + CVM_MT_HSH_DATW4 010010 00101 rt:5 0000 0010 0100 = 0100 &cp2 + CVM_MT_HSH_DATW5 010010 00101 rt:5 0000 0010 0100 = 0101 &cp2 + CVM_MT_HSH_DATW6 010010 00101 rt:5 0000 0010 0100 = 0110 &cp2 + CVM_MT_HSH_DATW7 010010 00101 rt:5 0000 0010 0100 = 0111 &cp2 + CVM_MT_HSH_DATW8 010010 00101 rt:5 0000 0010 0100 = 1000 &cp2 + CVM_MT_HSH_DATW9 010010 00101 rt:5 0000 0010 0100 = 1001 &cp2 + CVM_MT_HSH_DATW10 010010 00101 rt:5 0000 0010 0100 = 1010 &cp2 + CVM_MT_HSH_DATW11 010010 00101 rt:5 0000 0010 0100 = 1011 &cp2 + CVM_MT_HSH_DATW12 010010 00101 rt:5 0000 0010 0100 = 1100 &cp2 + CVM_MT_HSH_DATW13 010010 00101 rt:5 0000 0010 0100 = 1101 &cp2 + CVM_MT_HSH_DATW14 010010 00101 rt:5 0000 0010 0100 = 1110 &cp2 + CVM_MT_HSH_DATW15 010010 00101 rt:5 0000 0010 0100 = 1111 &cp2 + CVM_MT_HSH_IVW0 010010 00101 rt:5 0000 0010 0101 = 0000 &cp2 + CVM_MT_HSH_IVW1 010010 00101 rt:5 0000 0010 0101 = 0001 &cp2 + CVM_MT_HSH_IVW2 010010 00101 rt:5 0000 0010 0101 = 0010 &cp2 + CVM_MT_HSH_IVW3 010010 00101 rt:5 0000 0010 0101 = 0011 &cp2 + CVM_MT_HSH_IVW4 010010 00101 rt:5 0000 0010 0101 = 0100 &cp2 + CVM_MT_HSH_IVW5 010010 00101 rt:5 0000 0010 0101 = 0101 &cp2 + CVM_MT_HSH_IVW6 010010 00101 rt:5 0000 0010 0101 = 0110 &cp2 + CVM_MT_HSH_IVW7 010010 00101 rt:5 0000 0010 0101 = 0111 &cp2 CVM_MT_GFM_MUL0 010010 00101 rt:5 0000 0010 0101 = 1000 &cp2 CVM_MT_GFM_MUL1 010010 00101 rt:5 0000 0010 0101 = 1001 &cp2 CVM_MT_GFM_RESINP0 010010 00101 rt:5 0000 0010 0101 = 1010 &cp2 CVM_MT_GFM_RESINP1 010010 00101 rt:5 0000 0010 0101 = 1011 &cp2 + CVM_MT_GFM_XOR0 010010 00101 rt:5 0000 0010 0101 = 1100 &cp2 CVM_MT_GFM_POLY 010010 00101 rt:5 0000 0010 0101 = 1110 &cp2 + CVM_MT_SHA3_XORDAT0 010010 00101 rt:5 0000 0010 1100 = 0000 &cp2 + CVM_MT_SHA3_XORDAT1 010010 00101 rt:5 0000 0010 1100 = 0001 &cp2 + CVM_MT_SHA3_XORDAT2 010010 00101 rt:5 0000 0010 1100 = 0010 &cp2 + CVM_MT_SHA3_XORDAT3 010010 00101 rt:5 0000 0010 1100 = 0011 &cp2 + CVM_MT_SHA3_XORDAT4 010010 00101 rt:5 0000 0010 1100 = 0100 &cp2 + CVM_MT_SHA3_XORDAT5 010010 00101 rt:5 0000 0010 1100 = 0101 &cp2 + CVM_MT_SHA3_XORDAT6 010010 00101 rt:5 0000 0010 1100 = 0110 &cp2 + CVM_MT_SHA3_XORDAT7 010010 00101 rt:5 0000 0010 1100 = 0111 &cp2 + CVM_MT_SHA3_XORDAT8 010010 00101 rt:5 0000 0010 1100 = 1000 &cp2 + CVM_MT_SHA3_XORDAT9 010010 00101 rt:5 0000 0010 1100 = 1001 &cp2 + CVM_MT_SHA3_XORDAT10 010010 00101 rt:5 0000 0010 1100 = 1010 &cp2 + CVM_MT_SHA3_XORDAT11 010010 00101 rt:5 0000 0010 1100 = 1011 &cp2 + CVM_MT_SHA3_XORDAT12 010010 00101 rt:5 0000 0010 1100 = 1100 &cp2 + CVM_MT_SHA3_XORDAT13 010010 00101 rt:5 0000 0010 1100 = 1101 &cp2 + CVM_MT_SHA3_XORDAT14 010010 00101 rt:5 0000 0010 1100 = 1110 &cp2 + CVM_MT_SHA3_XORDAT15 010010 00101 rt:5 0000 0010 1100 = 1111 &cp2 + CVM_MT_SHA3_XORDAT16 010010 00101 rt:5 0000 0010 1101 = 0000 &cp2 + CVM_MT_SHA3_XORDAT17 010010 00101 rt:5 0000 0010 1101 = 0001 &cp2 CVM_MT_CRC_LEN 010010 00101 rt:5 0001 0010 0000 = 0010 &cp2 CVM_MT_CRC_DWORD 010010 00101 rt:5 0001 0010 0000 = 0111 &cp2 CVM_MT_CRC_VAR 010010 00101 rt:5 0001 0010 0000 = 1000 &cp2 CVM_MT_CRC_DWORD_REFLECT 010010 00101 rt:5 0001 0010 0001 = 0111 &cp2 CVM_MT_CRC_VAR_REFLECT 010010 00101 rt:5 0001 0010 0001 = 1000 &cp2 + CVM_MT_HSH_STARTMD5 010010 00101 rt:5 0100 0000 0100 = 0111 &cp2 + CVM_MT_HSH_STARTSHA256 010010 00101 rt:5 0100 0000 0100 = 1111 &cp2 + CVM_MT_SHA3_STARTOP 010010 00101 rt:5 0100 0000 0101 = 0010 &cp2 + CVM_MT_HSH_STARTSHA 010010 00101 rt:5 0100 0000 0101 = 0111 &cp2 CVM_MT_GFM_XORMUL1_REFLECT 010010 00101 rt:5 0100 0000 0101 = 1101 &cp2 CVM_MT_CRC_POLYNOMIAL 010010 00101 rt:5 0100 0010 0000 = 0000 &cp2 CVM_MT_CRC_POLYNOMIAL_REFLECT 010010 00101 rt:5 0100 0010 0001 = 0000 &cp2 + CVM_MT_HSH_STARTSHA512 010010 00101 rt:5 0100 0010 0100 = 1111 &cp2 CVM_MT_GFM_XORMUL1 010010 00101 rt:5 0100 0010 0101 = 1101 &cp2 ] CP2_Undef 010010 ----- ----- ---- ---- ----= ---- diff --git a/target/mips/tcg/octeon_translate.c b/target/mips/tcg/octeon_tr= anslate.c index ce4cfcb3f30..5497e5a6cec 100644 --- a/target/mips/tcg/octeon_translate.c +++ b/target/mips/tcg/octeon_translate.c @@ -47,6 +47,11 @@ #define CP2_MT_HELPER(NAME, SUFFIX) \ TRANS(NAME, trans_octeon_cp2_mt_helper, \ gen_helper_octeon_cp2_mt_ ## SUFFIX) +#define CP2_MT_HELPER_ENV(NAME, SUFFIX) \ + TRANS(NAME, trans_octeon_cp2_mt_helper_env, \ + gen_helper_octeon_cp2_mt_ ## SUFFIX) +#define CP2_MT_XOR_I64(NAME, FIELD) \ + TRANS(NAME, trans_octeon_cp2_mt_xor_i64, OCTEON_CRYPTO_OFFSET(FIELD)) =20 #define OCTEON_LO32_OFFSET (HOST_BIG_ENDIAN ? 4 : 0) =20 @@ -165,6 +170,19 @@ static bool trans_octeon_cp2_mt_hsh_pair(DisasContext = *ctx, arg_cp2 *a, return true; } =20 +static bool trans_octeon_cp2_mt_xor_i64(DisasContext *ctx, arg_cp2 *a, + int offset) +{ + TCGv_i64 value =3D tcg_temp_new_i64(); + TCGv_i64 old =3D tcg_temp_new_i64(); + + gen_load_gpr(value, a->rt); + tcg_gen_ld_i64(old, tcg_env, offset); + tcg_gen_xor_i64(old, old, value); + tcg_gen_st_i64(old, tcg_env, offset); + return true; +} + static bool trans_octeon_cp2_mt_helper(DisasContext *ctx, arg_cp2 *a, void (*gen_helper)(TCGv_env, TCGv_i= 64)) { @@ -175,6 +193,13 @@ static bool trans_octeon_cp2_mt_helper(DisasContext *c= tx, arg_cp2 *a, return true; } =20 +static bool trans_octeon_cp2_mt_helper_env(DisasContext *ctx, arg_cp2 *a, + void (*gen_helper)(TCGv_env)) +{ + gen_helper(tcg_env); + return true; +} + CP2_MF_HSH_PAIR(CVM_MF_HSH_DAT0, hsh_dat, 0); CP2_MF_HSH_PAIR(CVM_MF_HSH_DAT1, hsh_dat, 1); CP2_MF_HSH_PAIR(CVM_MF_HSH_DAT2, hsh_dat, 2); @@ -212,10 +237,35 @@ CP2_MF_I64(CVM_MF_GFM_RESINP1, gfm_resinp[1]); CP2_MF_U16(CVM_MF_GFM_POLY, gfm_poly); =20 CP2_MF_HELPER(CVM_MF_CRC_IV_REFLECT, crc_iv_reflect); +CP2_MF_I64(CVM_MF_SHA3_DAT24, sha3_dat24); CP2_MF_HELPER(CVM_MF_GFM_MUL_REFLECT0, gfm_mul_reflect0); CP2_MF_HELPER(CVM_MF_GFM_MUL_REFLECT1, gfm_mul_reflect1); CP2_MF_HELPER(CVM_MF_GFM_RESINP_REFLECT0, gfm_resinp_reflect0); CP2_MF_HELPER(CVM_MF_GFM_RESINP_REFLECT1, gfm_resinp_reflect1); +CP2_MF_I64(CVM_MF_HSH_DATW0, hsh_dat[0]); +CP2_MF_I64(CVM_MF_HSH_DATW1, hsh_dat[1]); +CP2_MF_I64(CVM_MF_HSH_DATW2, hsh_dat[2]); +CP2_MF_I64(CVM_MF_HSH_DATW3, hsh_dat[3]); +CP2_MF_I64(CVM_MF_HSH_DATW4, hsh_dat[4]); +CP2_MF_I64(CVM_MF_HSH_DATW5, hsh_dat[5]); +CP2_MF_I64(CVM_MF_HSH_DATW6, hsh_dat[6]); +CP2_MF_I64(CVM_MF_HSH_DATW7, hsh_dat[7]); +CP2_MF_I64(CVM_MF_HSH_DATW8, hsh_dat[8]); +CP2_MF_I64(CVM_MF_HSH_DATW9, hsh_dat[9]); +CP2_MF_I64(CVM_MF_HSH_DATW10, hsh_dat[10]); +CP2_MF_I64(CVM_MF_HSH_DATW11, hsh_dat[11]); +CP2_MF_I64(CVM_MF_HSH_DATW12, hsh_dat[12]); +CP2_MF_I64(CVM_MF_HSH_DATW13, hsh_dat[13]); +CP2_MF_I64(CVM_MF_HSH_DATW14, hsh_dat[14]); +CP2_MF_I64(CVM_MF_HSH_DATW15, hsh_dat[15]); +CP2_MF_I64(CVM_MF_HSH_IVW0, hsh_iv[0]); +CP2_MF_I64(CVM_MF_HSH_IVW1, hsh_iv[1]); +CP2_MF_I64(CVM_MF_HSH_IVW2, hsh_iv[2]); +CP2_MF_I64(CVM_MF_HSH_IVW3, hsh_iv[3]); +CP2_MF_I64(CVM_MF_HSH_IVW4, hsh_iv[4]); +CP2_MF_I64(CVM_MF_HSH_IVW5, hsh_iv[5]); +CP2_MF_I64(CVM_MF_HSH_IVW6, hsh_iv[6]); +CP2_MF_I64(CVM_MF_HSH_IVW7, hsh_iv[7]); =20 CP2_MT_HSH_PAIR(CVM_MT_HSH_DAT0, hsh_dat, 0); CP2_MT_HSH_PAIR(CVM_MT_HSH_DAT1, hsh_dat, 1); @@ -254,11 +304,13 @@ CP2_MT_I64(CVM_MT_GFM_MUL0, gfm_mul[0]); CP2_MT_I64(CVM_MT_GFM_MUL1, gfm_mul[1]); CP2_MT_I64(CVM_MT_GFM_RESINP0, gfm_resinp[0]); CP2_MT_I64(CVM_MT_GFM_RESINP1, gfm_resinp[1]); +CP2_MT_XOR_I64(CVM_MT_GFM_XOR0, gfm_resinp[0]); CP2_MT_U16(CVM_MT_GFM_POLY, gfm_poly); CP2_MT_U8_MASKED(CVM_MT_CRC_LEN, crc_len, 0xf); CP2_MT_U32(CVM_MT_CRC_POLYNOMIAL, crc_poly); =20 CP2_MT_HELPER(CVM_MT_CRC_POLYNOMIAL_REFLECT, crc_write_polynomial_reflect); + CP2_MT_HELPER(CVM_MT_CRC_IV_REFLECT, crc_write_iv_reflect); CP2_MT_HELPER(CVM_MT_CRC_BYTE, crc_write_byte); CP2_MT_HELPER(CVM_MT_CRC_HALF, crc_write_half); @@ -272,6 +324,56 @@ CP2_MT_HELPER(CVM_MT_CRC_DWORD_REFLECT, crc_write_dwor= d_reflect); CP2_MT_HELPER(CVM_MT_CRC_VAR_REFLECT, crc_write_var_reflect); CP2_MT_HELPER(CVM_MT_GFM_XORMUL1_REFLECT, gfm_xormul1_reflect); CP2_MT_HELPER(CVM_MT_GFM_XORMUL1, gfm_xormul1); +CP2_MT_I64(CVM_MT_SHA3_DAT24, sha3_dat24); +CP2_MT_I64(CVM_MT_SHA3_DAT15, hsh_dat[15]); +CP2_MT_XOR_I64(CVM_MT_SHA3_XORDAT0, sha3_dat[0]); +CP2_MT_XOR_I64(CVM_MT_SHA3_XORDAT1, sha3_dat[1]); +CP2_MT_XOR_I64(CVM_MT_SHA3_XORDAT2, sha3_dat[2]); +CP2_MT_XOR_I64(CVM_MT_SHA3_XORDAT3, sha3_dat[3]); +CP2_MT_XOR_I64(CVM_MT_SHA3_XORDAT4, sha3_dat[4]); +CP2_MT_XOR_I64(CVM_MT_SHA3_XORDAT5, sha3_dat[5]); +CP2_MT_XOR_I64(CVM_MT_SHA3_XORDAT6, sha3_dat[6]); +CP2_MT_XOR_I64(CVM_MT_SHA3_XORDAT7, sha3_dat[7]); +CP2_MT_XOR_I64(CVM_MT_SHA3_XORDAT8, sha3_dat[8]); +CP2_MT_XOR_I64(CVM_MT_SHA3_XORDAT9, sha3_dat[9]); +CP2_MT_XOR_I64(CVM_MT_SHA3_XORDAT10, sha3_dat[10]); +CP2_MT_XOR_I64(CVM_MT_SHA3_XORDAT11, sha3_dat[11]); +CP2_MT_XOR_I64(CVM_MT_SHA3_XORDAT12, sha3_dat[12]); +CP2_MT_XOR_I64(CVM_MT_SHA3_XORDAT13, sha3_dat[13]); +CP2_MT_XOR_I64(CVM_MT_SHA3_XORDAT14, sha3_dat[14]); +CP2_MT_XOR_I64(CVM_MT_SHA3_XORDAT15, sha3_dat[15]); +CP2_MT_XOR_I64(CVM_MT_SHA3_XORDAT16, sha3_dat[16]); +CP2_MT_XOR_I64(CVM_MT_SHA3_XORDAT17, sha3_dat[17]); +CP2_MT_HELPER_ENV(CVM_MT_SHA3_STARTOP, sha3_startop); +CP2_MT_HELPER(CVM_MT_HSH_STARTSHA1_COMPAT, hsh_startsha1_compat); +CP2_MT_I64(CVM_MT_HSH_DATW0, hsh_dat[0]); +CP2_MT_I64(CVM_MT_HSH_DATW1, hsh_dat[1]); +CP2_MT_I64(CVM_MT_HSH_DATW2, hsh_dat[2]); +CP2_MT_I64(CVM_MT_HSH_DATW3, hsh_dat[3]); +CP2_MT_I64(CVM_MT_HSH_DATW4, hsh_dat[4]); +CP2_MT_I64(CVM_MT_HSH_DATW5, hsh_dat[5]); +CP2_MT_I64(CVM_MT_HSH_DATW6, hsh_dat[6]); +CP2_MT_I64(CVM_MT_HSH_DATW7, hsh_dat[7]); +CP2_MT_I64(CVM_MT_HSH_DATW8, hsh_dat[8]); +CP2_MT_I64(CVM_MT_HSH_DATW9, hsh_dat[9]); +CP2_MT_I64(CVM_MT_HSH_DATW10, hsh_dat[10]); +CP2_MT_I64(CVM_MT_HSH_DATW11, hsh_dat[11]); +CP2_MT_I64(CVM_MT_HSH_DATW12, hsh_dat[12]); +CP2_MT_I64(CVM_MT_HSH_DATW13, hsh_dat[13]); +CP2_MT_I64(CVM_MT_HSH_DATW14, hsh_dat[14]); +CP2_MT_I64(CVM_MT_HSH_DATW15, hsh_dat[15]); +CP2_MT_I64(CVM_MT_HSH_IVW0, hsh_iv[0]); +CP2_MT_I64(CVM_MT_HSH_IVW1, hsh_iv[1]); +CP2_MT_I64(CVM_MT_HSH_IVW2, hsh_iv[2]); +CP2_MT_I64(CVM_MT_HSH_IVW3, hsh_iv[3]); +CP2_MT_I64(CVM_MT_HSH_IVW4, hsh_iv[4]); +CP2_MT_I64(CVM_MT_HSH_IVW5, hsh_iv[5]); +CP2_MT_I64(CVM_MT_HSH_IVW6, hsh_iv[6]); +CP2_MT_I64(CVM_MT_HSH_IVW7, hsh_iv[7]); +CP2_MT_HELPER(CVM_MT_HSH_STARTMD5, hsh_startmd5); +CP2_MT_HELPER(CVM_MT_HSH_STARTSHA256, hsh_startsha256); +CP2_MT_HELPER(CVM_MT_HSH_STARTSHA, hsh_startsha); +CP2_MT_HELPER(CVM_MT_HSH_STARTSHA512, hsh_startsha512); =20 static bool trans_BBIT(DisasContext *ctx, arg_BBIT *a) { --=20 2.53.0 From nobody Sun Jul 26 10:07:33 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=reject dis=none) header.from=oss.qualcomm.com ARC-Seal: i=1; a=rsa-sha256; t=1783448542; cv=none; d=zohomail.com; s=zohoarc; b=fsXWOdhV1yhOe6T/AMfUN65EZcveLb5N2aEGMtrS1vZlsvn0PlDTlbp0MfR66zJx+g7yvRdjXb5Fl7XwJvNvSWyINoabM0Re6oZby9czoQfIAk27bWXmFlmxvBR6xPZ9xHR1BxuzniftVexlYytj+aBPZPEKuNh5GeBkqh/cYnI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783448542; h=Content-Type:Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=ZOCC+BVnpFcEU5n6NzIHbE/NkewddBue6uBFvx3CZXA=; b=oCMmn1Z1HYwXWRpU1uJ22ThlbwFObhwCTbDxDKaTK1JGzwiqOM8HgiUEj+PaWHQTOFequuUU8WdBrQcUpHC11CBf4IFxBs/YZDU9q+3NETPxcF93ET09oOvPIfrxzsjxUoKi1fAvnACKOCeLlX4HpPfVA76LebhdjtQIK5tPPIc= 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=reject dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1783448542251666.952913466745; Tue, 7 Jul 2026 11:22:22 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1whAO1-0007q2-4D; Tue, 07 Jul 2026 14:19: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 1whAMQ-00065D-JH for qemu-devel@nongnu.org; Tue, 07 Jul 2026 14:17:35 -0400 Received: from mx0b-0031df01.pphosted.com ([205.220.180.131]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1whAMO-0006XV-WA for qemu-devel@nongnu.org; Tue, 07 Jul 2026 14:17:34 -0400 Received: from pps.filterd (m0279868.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 667FTBhF4194065 for ; Tue, 7 Jul 2026 18:17:32 GMT Received: from mail-qt1-f197.google.com (mail-qt1-f197.google.com [209.85.160.197]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4f8v9ab0du-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Tue, 07 Jul 2026 18:17:31 +0000 (GMT) Received: by mail-qt1-f197.google.com with SMTP id d75a77b69052e-51c1a97644aso60837231cf.2 for ; Tue, 07 Jul 2026 11:17:31 -0700 (PDT) Received: from localhost.localdomain (88-187-86-199.subs.proxad.net. [88.187.86.199]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-47a9de1d8cdsm38677884f8f.1.2026.07.07.11.17.29 for (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Tue, 07 Jul 2026 11:17:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= ZOCC+BVnpFcEU5n6NzIHbE/NkewddBue6uBFvx3CZXA=; b=Xlw8o1IWjJkCUlcu wdrJQvKPwVN9qR+3zY88LgukQ9jttAd8SoyBoBqtz9fjUJiizHWvh0d3S+01HcDd ZfXyq6H2JDLvUUfkAOzwgwCTcZB1Z0PHr9Tzj6Mp6Kbt3X4xU5knE4ZPuMC6gWkk vo5CJHPBNhtNZk289cO28CkeuMAoHJKaBUAZaBRrRT2j3xtFzQc/hnDKHTorWxEr 2y2GsSjR5m15cjKluGBs3Xq5NQGGmfFkbVrnqeUo/S5srXHibcascbkCUlF8zm9n mJvXFbPWkpEpBGG7vYQHV0Z9OjmlC70W5GQbPx0DzYEGDbyQrORLXwglilCOiZkE Cvn/Hg== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1783448251; x=1784053051; darn=nongnu.org; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=ZOCC+BVnpFcEU5n6NzIHbE/NkewddBue6uBFvx3CZXA=; b=bfuAtvefKOKsjKeJ7FmZ29PLzdPzPxV63knzZU3zMYEtjD5Fm0IpEu41rwZtUTqNiM P0Slmv4AkIQRxtUBYtWNubKNmx+8g51SP9H9pdgiqCxCXTlnIdMZ//uOvnRvGCUDQoFF d+kUMv4aCxrlq36GG6SiqdDCmi+vNyd9j2TIJOXSSeqZkCQvVzHUXDRjf4XBLVD6xe2E Ls8cgiTmgd/cBnxB6bPwlET6Yh1tqCHoISJyxdvXcBK2iBze5DYwoT2sjHyrnAk0ld8M 36RkDDqCyVIYijX/ZUfaHf1wzHvZcsm2vqqJ25N5vOJzh8xcpvZG6cB8IlZJcfRzSRPC FLjQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783448251; x=1784053051; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:to:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=ZOCC+BVnpFcEU5n6NzIHbE/NkewddBue6uBFvx3CZXA=; b=UgsY5pMPU+3TCrUZFnxUw3LhiPPD2EDaCVesEFslZOoldEwkJM5POwyHdUhQ06MG/o 3dwVpoZsMipB1bDKY5YwtDTozBBhqYf186yxOmiLlIw2jNkBMMedaDZGqpqx6juQkR3D Wx5+CVkB58KR/8TJsBjgM+VvuJ9TIHMDWHUoh69EnmIf61dDiHlA3ntmJeTzAneJDAGP cyoQu7Xn2OCcOJ3E2sbN8fTWpiTw0Mou3w6yd7uxBk1kx2tfO/Zaugo14jrwKi9ppKT+ vQOEmd3H5fypaVvCK9kct1nFJh0XmzuD6rg31LDtuUNUrHgtcoqa5VDLeLu7iguBRCE5 9mLw== X-Gm-Message-State: AOJu0YyaCo8MN4ICVUCHD/9ZDwrqzfOg+9pD0ydF79KjRRSVd2YDrFkT sb6pRV3g6VtzUikADlG09L7yCMDUxr6ZW8Ufjt671+0AtbaLf+D7EDrqwAAAa1zAWl0gzYthgBC 2ZpQm0dGz7ZCD566uXaOCJaql1lIcqe0U99SH1EQqkeuBxFnqvL7Q/J4e7Syu3KSk3w== X-Gm-Gg: AfdE7cnMknKKtdEhOaO1wwgefbHTjMhZ+tBfDpflLgZc2vVccddmbqpAIwhnkQRa1p2 nS5FNAp2KZ6i/BeSEIUdnHCchAdVn0hF1gCcznOHiq25p6lhKZQqGftYy62htIeLlrp1JJxUhoq YVPTPI6TaVw2CsgyRxKWxCLmoVmSijtXh0yUK3Qn2s3zo9KYLW1xs4g+c7VzBy3KTZQU4gDKIc4 HNNk+QUQlS6XICOmlAAU6zOuaytcKJUpmTXFNidR2uX1rP2fW/+3xWRupQhTygNMXMFJWvUkgoS sbKrV19iXJHB1riPRYrxi8W77wsQ2TVSaVmRCxeGZLU/cEat1z/gGJaJLndWjsNApsyJbaYgCGl mekEMVGyAKHMno36aBbpC6TpRyObCGzWKYSgZd0OaaKl2alGCG/gNiV04D5vveTIGaCvE X-Received: by 2002:ac8:7f11:0:b0:51c:7b11:41af with SMTP id d75a77b69052e-51c7b114368mr38253951cf.75.1783448251236; Tue, 07 Jul 2026 11:17:31 -0700 (PDT) X-Received: by 2002:ac8:7f11:0:b0:51c:7b11:41af with SMTP id d75a77b69052e-51c7b114368mr38253551cf.75.1783448250704; Tue, 07 Jul 2026 11:17:30 -0700 (PDT) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Subject: [PULL 17/23] target/mips: decode Octeon ZUC and SNOW3G COP2 selectors Date: Tue, 7 Jul 2026 20:15:22 +0200 Message-ID: <20260707181529.60191-18-philmd@oss.qualcomm.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260707181529.60191-1-philmd@oss.qualcomm.com> References: <20260707181529.60191-1-philmd@oss.qualcomm.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Proofpoint-GUID: U2YtMsoywAQ3yTWjAVkRZVbt-vN-FKDv X-Proofpoint-ORIG-GUID: U2YtMsoywAQ3yTWjAVkRZVbt-vN-FKDv X-Proofpoint-Spam-Info: AW1haW4tMjYwNzA3MDE3OSBTYWx0ZWRfXwhW9QLTqMTdc 7ylT1X7CY8yeb1PbP36uDKr3t85GRmKqeBv/KQTB7HuCTd4f1sQSwjl+3driv5RmY2NkwrxXU/I NZ98pKUu9u0tVZ2iYUxM2Dt/TX7lA08= X-Authority-Analysis: v=2.4 cv=b9yCJNGx c=1 sm=1 tr=0 ts=6a4d42bc cx=c_pps a=EVbN6Ke/fEF3bsl7X48z0g==:117 a=4s3hRJSeHn4rkQlkrse1kQ==:17 a=IkcTkHD0fZMA:10 a=RAioF0-LDSMA:10 a=M51BFTxLslgA:10 a=s4-Qcg_JpJYA:10 a=Zc_DtpmQZw8A:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=ZpdpYltYx_vBUK5n70dp:22 a=pGLkceISAAAA:8 a=KKAkSRfTAAAA:8 a=EUspDBNiAAAA:8 a=yyVd_-7kbyztQqAuhIsA:9 a=3ZKOabzyN94A:10 a=QEXdDO2ut3YA:10 a=a_PwQJl-kcHnX1M80qC6:22 a=cvBusfyB2V15izCimMoJ:22 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzA3MDE3OSBTYWx0ZWRfX6RMPTjpFdwnX aCeMG6PlSixrf2GyQgvPciL2rqok+0475b6gxY8KPGqsi2KguX4a2rmU+H0G83tZR5pAsoCd8XM Qgj/M6yO5yVutnq3ovh55yndiyxj1lhLZLiNVNSRQbekd6u7q+LgP3TcJaMj8ktCHsRtM1TzTxJ Ler6YHe3gvf0QrVzKUJOCD79uRJpdu3k/zwFwhm+Z1BWFkIKDPGxo2RgQugEVohRLgN+B7gi/Wg AnepDIwZ0XbJRVRsMf6lvsFcFYlL4J6ZV5RXp+8kchidF4XxNHEWrke3KKzdk922BAWTbhkZr/u p6wE4iiZmfZPi34zPdR0/csJy8i/VCXdcuvwxzw/8Qijs7Q8vdbBZP3/zusJ0gypKryXP6ykhHm PHt7J+nP6MYIsewOGBB/gcEaFhy0HeBSkwZbOLz5gCWj23jxFUJHJMmRFKHnYQbhydJdKR32Nxr N9WvYoaxi8mORctZkwg== X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-07-07_04,2026-07-06_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 impostorscore=0 suspectscore=0 priorityscore=1501 adultscore=0 malwarescore=0 bulkscore=0 spamscore=0 lowpriorityscore=0 phishscore=0 clxscore=1015 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607070179 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=205.220.180.131; envelope-from=philmd@oss.qualcomm.com; helo=mx0b-0031df01.pphosted.com X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 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_LOW=-0.7, 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 @qualcomm.com) X-ZM-MESSAGEID: 1783448544199158500 From: James Hilliard Add explicit decodetree entries and translator bindings for the Octeon ZUC and SNOW3G COP2 operation selectors. These stream-cipher selectors operate on the shared HSH register window state, so dispatch them through the per-operation helpers added with the corresponding engine support. Keep stream-cipher decode separate because these selectors share the HSH register window with unrelated engines. Signed-off-by: James Hilliard Reviewed-by: Richard Henderson Message-ID: <20260608-mips-octeon-missing-insns-v2-v16-17-daef7a0d8b04@gmai= l.com> Signed-off-by: Philippe Mathieu-Daud=C3=A9 --- target/mips/tcg/octeon.decode | 4 ++++ target/mips/tcg/octeon_translate.c | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/target/mips/tcg/octeon.decode b/target/mips/tcg/octeon.decode index b1a63b743f2..2b27fa205ff 100644 --- a/target/mips/tcg/octeon.decode +++ b/target/mips/tcg/octeon.decode @@ -265,8 +265,12 @@ LDX 011111 ..... ..... ..... 01000 001010 @lx CVM_MT_CRC_DWORD_REFLECT 010010 00101 rt:5 0001 0010 0001 = 0111 &cp2 CVM_MT_CRC_VAR_REFLECT 010010 00101 rt:5 0001 0010 0001 = 1000 &cp2 CVM_MT_HSH_STARTMD5 010010 00101 rt:5 0100 0000 0100 = 0111 &cp2 + CVM_MT_SNOW3G_START 010010 00101 rt:5 0100 0000 0100 = 1101 &cp2 + CVM_MT_SNOW3G_MORE 010010 00101 rt:5 0100 0000 0100 = 1110 &cp2 CVM_MT_HSH_STARTSHA256 010010 00101 rt:5 0100 0000 0100 = 1111 &cp2 CVM_MT_SHA3_STARTOP 010010 00101 rt:5 0100 0000 0101 = 0010 &cp2 + CVM_MT_ZUC_START 010010 00101 rt:5 0100 0000 0101 = 0101 &cp2 + CVM_MT_ZUC_MORE 010010 00101 rt:5 0100 0000 0101 = 0110 &cp2 CVM_MT_HSH_STARTSHA 010010 00101 rt:5 0100 0000 0101 = 0111 &cp2 CVM_MT_GFM_XORMUL1_REFLECT 010010 00101 rt:5 0100 0000 0101 = 1101 &cp2 CVM_MT_CRC_POLYNOMIAL 010010 00101 rt:5 0100 0010 0000 = 0000 &cp2 diff --git a/target/mips/tcg/octeon_translate.c b/target/mips/tcg/octeon_tr= anslate.c index 5497e5a6cec..b4663b35a34 100644 --- a/target/mips/tcg/octeon_translate.c +++ b/target/mips/tcg/octeon_translate.c @@ -345,6 +345,10 @@ CP2_MT_XOR_I64(CVM_MT_SHA3_XORDAT15, sha3_dat[15]); CP2_MT_XOR_I64(CVM_MT_SHA3_XORDAT16, sha3_dat[16]); CP2_MT_XOR_I64(CVM_MT_SHA3_XORDAT17, sha3_dat[17]); CP2_MT_HELPER_ENV(CVM_MT_SHA3_STARTOP, sha3_startop); +CP2_MT_HELPER(CVM_MT_ZUC_START, zuc_start); +CP2_MT_HELPER(CVM_MT_ZUC_MORE, zuc_more); +CP2_MT_HELPER(CVM_MT_SNOW3G_START, snow3g_start); +CP2_MT_HELPER(CVM_MT_SNOW3G_MORE, snow3g_more); CP2_MT_HELPER(CVM_MT_HSH_STARTSHA1_COMPAT, hsh_startsha1_compat); CP2_MT_I64(CVM_MT_HSH_DATW0, hsh_dat[0]); CP2_MT_I64(CVM_MT_HSH_DATW1, hsh_dat[1]); --=20 2.53.0 From nobody Sun Jul 26 10:07:33 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=reject dis=none) header.from=oss.qualcomm.com ARC-Seal: i=1; a=rsa-sha256; t=1783448364; cv=none; d=zohomail.com; s=zohoarc; b=PGw78QcaD5K0uM0tg3LvsO6/mD94SMEk515tXyU7uhY7Ru05a7slM1DtN+8bN6O6HJgJ/oIhnpjXDiltqlsb9/v9bP2S4ZAYaKZzRmoI4u/CvnM9P9YgKC1iyHmcEtguFM7CFfiaCnPDVnNnPwuPmFHIZLwB/uFPkEeqNp8q5BU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783448364; h=Content-Type:Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=HH4ej2NLvs8V6pxbRVNkyAzI6YhndgdI5YIJaL/DxVk=; b=BGZ00uvgM0XLxT7i7MQge8VN9ld/piMs/mRQdT50pRS7cqgJsZRrGz/pLRsTWfNghdkc4bTBrRzysdswJqQfsMSzYPW+m6NURxzEIjzlIqv55zs9MxRYD62RvWkGSrYCXZ72VuRGunW5+Y7vjVo78XHHftfy1M52n4//Vm+8W7M= 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=reject dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1783448364217203.32785519332947; Tue, 7 Jul 2026 11:19:24 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1whANs-0007iz-3L; Tue, 07 Jul 2026 14:19:08 -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 1whAMY-0006JC-Gf for qemu-devel@nongnu.org; Tue, 07 Jul 2026 14:17:43 -0400 Received: from mx0b-0031df01.pphosted.com ([205.220.180.131]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1whAMW-0006Yk-4R for qemu-devel@nongnu.org; Tue, 07 Jul 2026 14:17:41 -0400 Received: from pps.filterd (m0279872.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 667FT7h04045099 for ; Tue, 7 Jul 2026 18:17:39 GMT Received: from mail-qt1-f198.google.com (mail-qt1-f198.google.com [209.85.160.198]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4f8w2uas5u-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Tue, 07 Jul 2026 18:17:39 +0000 (GMT) Received: by mail-qt1-f198.google.com with SMTP id d75a77b69052e-51c1d7886cdso93384161cf.1 for ; Tue, 07 Jul 2026 11:17:38 -0700 (PDT) Received: from localhost.localdomain (88-187-86-199.subs.proxad.net. [88.187.86.199]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-47aa039b126sm35361207f8f.24.2026.07.07.11.17.36 for (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Tue, 07 Jul 2026 11:17:36 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= HH4ej2NLvs8V6pxbRVNkyAzI6YhndgdI5YIJaL/DxVk=; b=m3wqGlmEoQKmYfxQ YQPjur7RjOGMYm1/j/bDnJxIfrsNH9KlU9dbiphCAVAGe8Ltu222uyxkAmuwx+7n 44Oad1mnyOPw9TT/41W0RrWu9ninxaXYEVQTDmfLXiu/XgFxcn2jI8TVrmKN8Bf0 ZvUPMurmGUEvft+F9yOk+q1jfOWu72D4ea2ao/sXsq4F4V8F1RaFQSKQd9Uiteti XyIsVOsWoQwVjb9/y4MIJf8dyhBZ7UC6OMpAyXxB52SSSgMGNLkeIEKcniA8C/aq 1vtr983mpBGTf3CK7BLsYUn0CW4KYKLZNoru9WIsPqffV0YYIuPB9DX0HHEV7md+ 4XwrvA== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1783448258; x=1784053058; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=HH4ej2NLvs8V6pxbRVNkyAzI6YhndgdI5YIJaL/DxVk=; b=g7/0TlVP0L9egxwHOhZSFk5ovHLXN8fKoC+uyWSt8Ca66wF097wMgqjM9zA3SJrR5o 0yiRMLIDhsgG26WKeUR81JgWFhJomiodcBr0d601cZxAutuc8skoRBoDipafPX2RLyR7 Dsv1TOTTB5XdTmU51B2nz4fLvbwaa5l+CcR6rkar6DDeKpyLI5/zXdvyNoyVLWP++WYT OIM1e2L1KJ6Kaco7jXdDtAaTqXtbOM2ngMlWoRJY3UdrKW6z7NKsRf6gAYCJM5E38ZXC QtlXeKPrVDDGWJsUxluQg1pTkgg+yTdOKleVq7019vfgnTsC+4XtBnQrKZsXQn/1VS1p p9Ag== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783448258; x=1784053058; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=HH4ej2NLvs8V6pxbRVNkyAzI6YhndgdI5YIJaL/DxVk=; b=IOgM9HmqZCaqu6Ht5cTqHKwDrNKaOny+XIgAgcGp7RKn8vKEGulEfJdTZJbL85sBTJ MpEr8cnoOLcjIR/lQUJoYHuXCjobeP3CfURqAsBxiZFNTM6CVknBi4WdaPSqiWRKdE/K GvyXeHdw0XE+K6OdS6D8NrGBYsG+tvv37azB7cacA4leqYn4t312QZK4aOGG621hytuE S0aHvD122Ah7YxoMEtdtc/hN0nY6IgloT2+OI0JLOv+szqefeMNE7HGiV+qH5tc8b1EO PFF7kIbPDj/Rg3jCQI09b6tvp8vjpVBtTwDhgkb2o9K6le5qMMdKR3nfgYMM3ryYBRRn vxMw== X-Gm-Message-State: AOJu0YxdvkEbFIQQnNR5g2NhX9eF7THem9ZIX7A41EqTkH3ER5R3EPrh vlgCQGsG3IGfrd9kxsA0JGoS/HHulO7GC4NQ9KCcLeWjQE4A6ZxKyWQS9kijkojaNC+boCGuBRE 1r+nwsTLFN5k+mXFrlwsat0iBS6B+H/4pycu3dsnnKZ1L2KYaXncFMkJoTp8/5Xoxvg== X-Gm-Gg: AfdE7clk5kfN+W6iUnhsMJfbMH13Krs5xhyL8NZ34ro9PKvXMAyCW5ou0V9AQHXZuUB 7h5Qa9jBknzUXakSoEOPoH2tMJWlrJp9hkasiQ30Ydd6VM+NmQbrU9sMgSd+9K6DotoTyeWxCXt 47RaMuxyU+UwoRs+JmEYiVDutAzI6yqdeXieWdw5F8uWQe0M99RHQAEiay2XlejwW9WPwcAh8n+ fSdpBiizxmeXNsBpfA7yQy3NmuyQ1jyR9j1D/zwimbBeP/KCbN/Mq3VV0KdEVOUSbsPw/tbrITp MvqZvYwsq59K5zXQq4WvH3QgJp3880Au6F/rmTFi8Nd3ryB5+RvuBCgq60eSHfZe0VNJxImLd8b 4yk2myvcJeZUX8/B8ZqJqQreabvmgOp/zOkMAiCNOOfSm2cbKMd3pl5Nohz6oC3X7tq/O X-Received: by 2002:a05:622a:110f:b0:51c:1c73:5945 with SMTP id d75a77b69052e-51c747d0552mr68059891cf.24.1783448258188; Tue, 07 Jul 2026 11:17:38 -0700 (PDT) X-Received: by 2002:a05:622a:110f:b0:51c:1c73:5945 with SMTP id d75a77b69052e-51c747d0552mr68059571cf.24.1783448257637; Tue, 07 Jul 2026 11:17:37 -0700 (PDT) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Subject: [PULL 18/23] target/mips: decode Octeon block-cipher COP2 selectors Date: Tue, 7 Jul 2026 20:15:23 +0200 Message-ID: <20260707181529.60191-19-philmd@oss.qualcomm.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260707181529.60191-1-philmd@oss.qualcomm.com> References: <20260707181529.60191-1-philmd@oss.qualcomm.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Proofpoint-Spam-Info: AW1haW4tMjYwNzA3MDE3OSBTYWx0ZWRfX7ooQeZAHsa0N +M15rbu2Ky62Ab3vU+lQxK8bKnLgfBp+PcYBmLqVHdxgQpMAycmwb2m6Cbq+W254zS4EiwwaSqL uUxqzAE2LX5/jej9LbzCjLhcr7cVNrc= X-Proofpoint-GUID: KglZmg8hk1CXY9r2NPNHfRNRE_Wn6kLJ X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzA3MDE3OSBTYWx0ZWRfX4dVAbK5iGkB4 fBcR0M4y/QuQtW4HXRS/vXzugjHIOxr6eix4Nn7FnsRDNd9J08GhTP7NALn2fg8GOg9AUwPRS33 bplk/MzLu+GYLQjFp5VTkD3wG0ngVQu4MEsu/TxPvEDBaRPlPMELzxJ7C+H1JwU+zD1s0/eEm4h D1yAEmQTLt6coiUdoyiZ8bmjWIXJs9rSYjCDyqYFXSpPs9I9NNAsgmgjQn0kSibwy/oETRAgHAI mD0+mGu9r4Ldw5MRyTQ7C2o1+LVsOp6D1uzpshtaZKsHQGI+eisLD+prTtHuWvrMUwqSE5bRvLw HetsKBZV53U9gP5OC2+bRLuMGZu6kd4k7rgcMrL0dEpTOC/FhBfoZ88x4Z2vc9HSJWGZrd2gXux AILqkMlLIcdCDrA0/KpSrcjmk3Ocv8WXg5hQbVhsAG1Fwp7tl+B1TGn7v0e6/xMuzZi54CUXzK8 8fXSYAs6o4bF4a+1t5g== X-Proofpoint-ORIG-GUID: KglZmg8hk1CXY9r2NPNHfRNRE_Wn6kLJ X-Authority-Analysis: v=2.4 cv=bPQm5v+Z c=1 sm=1 tr=0 ts=6a4d42c3 cx=c_pps a=mPf7EqFMSY9/WdsSgAYMbA==:117 a=4s3hRJSeHn4rkQlkrse1kQ==:17 a=IkcTkHD0fZMA:10 a=RAioF0-LDSMA:10 a=M51BFTxLslgA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=yx91gb_oNiZeI1HMLzn7:22 a=pGLkceISAAAA:8 a=KKAkSRfTAAAA:8 a=EUspDBNiAAAA:8 a=f58Cf6jUHuCqYyNe2GoA:9 a=3ZKOabzyN94A:10 a=QEXdDO2ut3YA:10 a=dawVfQjAaf238kedN5IG:22 a=cvBusfyB2V15izCimMoJ:22 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-07-07_04,2026-07-06_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 phishscore=0 spamscore=0 clxscore=1015 priorityscore=1501 malwarescore=0 bulkscore=0 lowpriorityscore=0 suspectscore=0 adultscore=0 impostorscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607070179 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=205.220.180.131; envelope-from=philmd@oss.qualcomm.com; helo=mx0b-0031df01.pphosted.com X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 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_LOW=-0.7, 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 @qualcomm.com) X-ZM-MESSAGEID: 1783448364872158500 From: James Hilliard Add explicit decodetree entries and translator bindings for the Octeon AES, SMS4, 3DES, KASUMI, and Camellia COP2 operation selectors. These selectors consume or update engine state, so keep them as per-operation helper calls while the simple block-cipher register moves remain direct TCG loads and stores from the earlier register-selector patch. This completes the block-cipher selector coverage without reintroducing a generic runtime selector dispatch path. Signed-off-by: James Hilliard Reviewed-by: Richard Henderson Message-ID: <20260608-mips-octeon-missing-insns-v2-v16-18-daef7a0d8b04@gmai= l.com> Signed-off-by: Philippe Mathieu-Daud=C3=A9 --- target/mips/tcg/octeon.decode | 17 +++++++++++++++++ target/mips/tcg/octeon_translate.c | 17 +++++++++++++++++ 2 files changed, 34 insertions(+) diff --git a/target/mips/tcg/octeon.decode b/target/mips/tcg/octeon.decode index 2b27fa205ff..4ac38d264c8 100644 --- a/target/mips/tcg/octeon.decode +++ b/target/mips/tcg/octeon.decode @@ -203,6 +203,8 @@ LDX 011111 ..... ..... ..... 01000 001010 @lx CVM_MT_AES_DEC_CBC0 010010 00101 rt:5 0000 0001 0000 = 1100 &cp2 CVM_MT_AES_DEC0 010010 00101 rt:5 0000 0001 0000 = 1110 &cp2 CVM_MT_AES_KEYLENGTH 010010 00101 rt:5 0000 0001 0001 = 0000 &cp2 + CVM_MT_CAMELLIA_FL 010010 00101 rt:5 0000 0001 0001 = 0101 &cp2 + CVM_MT_CAMELLIA_FLINV 010010 00101 rt:5 0000 0001 0001 = 0110 &cp2 CVM_MT_CRC_IV 010010 00101 rt:5 0000 0010 0000 = 0001 &cp2 CVM_MT_CRC_IV_REFLECT 010010 00101 rt:5 0000 0010 0001 = 0001 &cp2 CVM_MT_CRC_BYTE 010010 00101 rt:5 0000 0010 0000 = 0100 &cp2 @@ -264,6 +266,15 @@ LDX 011111 ..... ..... ..... 01000 001010 @lx CVM_MT_CRC_VAR 010010 00101 rt:5 0001 0010 0000 = 1000 &cp2 CVM_MT_CRC_DWORD_REFLECT 010010 00101 rt:5 0001 0010 0001 = 0111 &cp2 CVM_MT_CRC_VAR_REFLECT 010010 00101 rt:5 0001 0010 0001 = 1000 &cp2 + CVM_MT_AES_ENC_CBC1 010010 00101 rt:5 0011 0001 0000 = 1001 &cp2 + CVM_MT_AES_ENC1 010010 00101 rt:5 0011 0001 0000 = 1011 &cp2 + CVM_MT_AES_DEC_CBC1 010010 00101 rt:5 0011 0001 0000 = 1101 &cp2 + CVM_MT_AES_DEC1 010010 00101 rt:5 0011 0001 0000 = 1111 &cp2 + CVM_MT_CAMELLIA_ROUND 010010 00101 rt:5 0011 0001 0001 = 0100 &cp2 + CVM_MT_SMS4_ENC_CBC1 010010 00101 rt:5 0011 0001 0001 = 1001 &cp2 + CVM_MT_SMS4_ENC1 010010 00101 rt:5 0011 0001 0001 = 1011 &cp2 + CVM_MT_SMS4_DEC_CBC1 010010 00101 rt:5 0011 0001 0001 = 1101 &cp2 + CVM_MT_SMS4_DEC1 010010 00101 rt:5 0011 0001 0001 = 1111 &cp2 CVM_MT_HSH_STARTMD5 010010 00101 rt:5 0100 0000 0100 = 0111 &cp2 CVM_MT_SNOW3G_START 010010 00101 rt:5 0100 0000 0100 = 1101 &cp2 CVM_MT_SNOW3G_MORE 010010 00101 rt:5 0100 0000 0100 = 1110 &cp2 @@ -273,6 +284,12 @@ LDX 011111 ..... ..... ..... 01000 001010 @lx CVM_MT_ZUC_MORE 010010 00101 rt:5 0100 0000 0101 = 0110 &cp2 CVM_MT_HSH_STARTSHA 010010 00101 rt:5 0100 0000 0101 = 0111 &cp2 CVM_MT_GFM_XORMUL1_REFLECT 010010 00101 rt:5 0100 0000 0101 = 1101 &cp2 + CVM_MT_3DES_ENC_CBC 010010 00101 rt:5 0100 0000 1000 = 1000 &cp2 + CVM_MT_KAS_ENC_CBC 010010 00101 rt:5 0100 0000 1000 = 1001 &cp2 + CVM_MT_3DES_ENC 010010 00101 rt:5 0100 0000 1000 = 1010 &cp2 + CVM_MT_KAS_ENC 010010 00101 rt:5 0100 0000 1000 = 1011 &cp2 + CVM_MT_3DES_DEC_CBC 010010 00101 rt:5 0100 0000 1000 = 1100 &cp2 + CVM_MT_3DES_DEC 010010 00101 rt:5 0100 0000 1000 = 1110 &cp2 CVM_MT_CRC_POLYNOMIAL 010010 00101 rt:5 0100 0010 0000 = 0000 &cp2 CVM_MT_CRC_POLYNOMIAL_REFLECT 010010 00101 rt:5 0100 0010 0001 = 0000 &cp2 CVM_MT_HSH_STARTSHA512 010010 00101 rt:5 0100 0010 0100 = 1111 &cp2 diff --git a/target/mips/tcg/octeon_translate.c b/target/mips/tcg/octeon_tr= anslate.c index b4663b35a34..76792c9c874 100644 --- a/target/mips/tcg/octeon_translate.c +++ b/target/mips/tcg/octeon_translate.c @@ -349,6 +349,23 @@ CP2_MT_HELPER(CVM_MT_ZUC_START, zuc_start); CP2_MT_HELPER(CVM_MT_ZUC_MORE, zuc_more); CP2_MT_HELPER(CVM_MT_SNOW3G_START, snow3g_start); CP2_MT_HELPER(CVM_MT_SNOW3G_MORE, snow3g_more); +CP2_MT_HELPER(CVM_MT_AES_ENC_CBC1, aes_enc_cbc1); +CP2_MT_HELPER(CVM_MT_AES_ENC1, aes_enc1); +CP2_MT_HELPER(CVM_MT_AES_DEC_CBC1, aes_dec_cbc1); +CP2_MT_HELPER(CVM_MT_AES_DEC1, aes_dec1); +CP2_MT_HELPER(CVM_MT_SMS4_ENC_CBC1, sms4_enc_cbc1); +CP2_MT_HELPER(CVM_MT_SMS4_ENC1, sms4_enc1); +CP2_MT_HELPER(CVM_MT_SMS4_DEC_CBC1, sms4_dec_cbc1); +CP2_MT_HELPER(CVM_MT_SMS4_DEC1, sms4_dec1); +CP2_MT_HELPER(CVM_MT_3DES_ENC_CBC, des3_enc_cbc); +CP2_MT_HELPER(CVM_MT_KAS_ENC_CBC, kas_enc_cbc); +CP2_MT_HELPER(CVM_MT_3DES_ENC, des3_enc); +CP2_MT_HELPER(CVM_MT_KAS_ENC, kas_enc); +CP2_MT_HELPER(CVM_MT_3DES_DEC_CBC, des3_dec_cbc); +CP2_MT_HELPER(CVM_MT_3DES_DEC, des3_dec); +CP2_MT_HELPER(CVM_MT_CAMELLIA_FL, camellia_fl); +CP2_MT_HELPER(CVM_MT_CAMELLIA_FLINV, camellia_flinv); +CP2_MT_HELPER(CVM_MT_CAMELLIA_ROUND, camellia_round); CP2_MT_HELPER(CVM_MT_HSH_STARTSHA1_COMPAT, hsh_startsha1_compat); CP2_MT_I64(CVM_MT_HSH_DATW0, hsh_dat[0]); CP2_MT_I64(CVM_MT_HSH_DATW1, hsh_dat[1]); --=20 2.53.0 From nobody Sun Jul 26 10:07:33 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=reject dis=none) header.from=oss.qualcomm.com ARC-Seal: i=1; a=rsa-sha256; t=1783448535; cv=none; d=zohomail.com; s=zohoarc; b=KmdYaPtCAiWj43LiOAE3wYQC8NiuKgXcxURrRGAk+UflBp2NS6e9fbUMqatkoMn9xKv61jZjbwBhsq7fLqLxr7UAeYCpJRlSkeqGUbsdymCsjcqT7e8Dsm7Bw5kGM/IPu12wiHSekN5yQb2ftpgeSyMNSVpk9E5DCyRryCS6Gts= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783448535; h=Content-Type:Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=S4UeV9GwVf1pBt2GklbwPNfwdgfJwcfzqHhzaPugt30=; b=NhLdXWqKQsV3GYMT/K/cOT9GbosXvpto9MhWe77AoX2cYY5565GHzGIgT6Q8bkQ6V0HSuKCXMT1sdL12m5Xl5lenolIySLb3x19hM2boIKkSSjQRfWUr9dld0xxxJrw8L74aYracTOgpKgRVxIQO5W/OPa7jfkHH7ydJijuA3go= 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=reject dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1783448535628989.9177918019304; Tue, 7 Jul 2026 11:22:15 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1whAO9-0008Cs-5E; Tue, 07 Jul 2026 14:19:21 -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 1whAMg-0006eR-HR for qemu-devel@nongnu.org; Tue, 07 Jul 2026 14:17:52 -0400 Received: from mx0a-0031df01.pphosted.com ([205.220.168.131]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1whAMe-0006Zg-HP for qemu-devel@nongnu.org; Tue, 07 Jul 2026 14:17:50 -0400 Received: from pps.filterd (m0279865.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 667FT5VW045839 for ; Tue, 7 Jul 2026 18:17:46 GMT Received: from mail-qk1-f197.google.com (mail-qk1-f197.google.com [209.85.222.197]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4f8w11trc7-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Tue, 07 Jul 2026 18:17:46 +0000 (GMT) Received: by mail-qk1-f197.google.com with SMTP id af79cd13be357-92aea0d801dso457175085a.1 for ; Tue, 07 Jul 2026 11:17:46 -0700 (PDT) Received: from localhost.localdomain (88-187-86-199.subs.proxad.net. [88.187.86.199]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-47aa0f2186bsm35236255f8f.36.2026.07.07.11.17.43 for (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Tue, 07 Jul 2026 11:17:43 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= S4UeV9GwVf1pBt2GklbwPNfwdgfJwcfzqHhzaPugt30=; b=JvCaTlFjIZPVua5u KFKkYM7BKUXBpyZlBFlHZ6MiBus0Oz0wfya2K617JnrzF9hi7uMYIPPCaTGUd5zJ Yh6rY/IVR1y8/K4E7Bvkx3mdmZSciH0nMKjMjmcAHPN/RLocjZ1AWv9R/SgxD7xe 2yX5YraTazmTmgQYguwR1Al4q/eE6Q/YtSVHk36200IYSSPuZpUZIFskEWyFWX5o r3duCNzk4fwgq6j5Amjqrg9wxoPKJ/5fozPNbbcpSB6cmEc8cO8ryrm/3HfhGKPl 2DYHYUthzFGieuSFWmL5cABYdqydt0AIdy8PbliO2PSKGz96umsk8OCA5EYTiGVV gyn7DQ== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1783448265; x=1784053065; darn=nongnu.org; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=S4UeV9GwVf1pBt2GklbwPNfwdgfJwcfzqHhzaPugt30=; b=aVlUNUzL/cF7px3FyP4XjL+z5GVyIYLSyvNRYGkb+Mpfr7GFti5s6c4xKqVraDEnjV /hrqX2y7jArZloRM4tMpNl6EjHFHNe8VD87HHbTfSoxNJDTySj0kMCIDH4Glt8ShZVgw esIjdgDg405hYeJvl7ZCOsY6vbM++w2ZuWnWh+rxQNCal1oLTcRlMwD69/+cXqjl/L+g XQsieRwlwp0opJxzwESgKSGO8F7bEsIAAX7UrFQJ+39yONqzF3WVvowPjVhZSyZAn3hB xZopxPeeXztTtYcrDNvS8pkn/o+nuxOy4WjBXmh4YqNH3l5AkhtoU3qwjkAYcj5VO97g CDsg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783448265; x=1784053065; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:to:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=S4UeV9GwVf1pBt2GklbwPNfwdgfJwcfzqHhzaPugt30=; b=otrlg1LkkiOgddxhalAkwDssuFGDg7lQe8URfiOBcT5NIm6wyAN8ZMhntflEWdjU4i ppJGHM9T134gax1QXn/vSQIBzCS1r+Pihfi4+LQCoqQUpK0S+656GBFxdiylj8zaU1A6 BSi/yxIdhjYN/W/0bYQng17dbv3KvkRhTX9c3V1W+ONC27syOTgNaNjB7+V58TSbUNzR 9zhZkgE15EFKUkERa+IUPkKShq4PUcuKezD/kmguZoM0K2Nv0gbgKhB/mCIwUw4PzAS8 pk2pUDi5astzr6UpswIwZ2tuQK5p5YQKlSTeiKT3Q1ECQLXqI+SXBTViuF0Ua6cxcaHy ECZA== X-Gm-Message-State: AOJu0Yy9GFId3qjCtmnD+BppVBgfe6f2kUgT+v37n9s11+DBAxsyhhre 2HugceTpj17mV8Q0DjxUFrAr0NuNJeoLXsRkovymt1wz/K0po6q5YiLYNYpr/1YmncwGPfiIBWI WRXO5gesqT+7nmFSQC8b9LV0TAXFEKIfsHG6iJ2JiNeEs96RQBohM4d0TBqy9Cay5Tw== X-Gm-Gg: AfdE7ckdef2I14F4L2NnH9H+0DwQ3GeT6jtJcTw0ducP69qEbnGlXsGyBJP9gkFb3fq YXpaR1mSZR6UVhojdnCYKyVgh/kCQGWv00RIKodnEsky1GLeDvjnzioR67HGi2ccHkY0u2W+5Yd uYEXR/HN9G4kVkZ49LXTqFod4M+ygSPNpeVqhd1wKaDmrDXf+93b2hDt2mf7qmcDoE/g+fl2yXv NiWT1y90lO9pptcg8mkACm/4m90c5UuQgjElHegjcIP5ylIsh2m5VXIkQCj9R28RN6U3K/qX4zB m/lgf9EDsrWQkG1aQznh4IiMuY1Bhk3riE7/IH+/pPaZ8bbq0tPbi0Jilq1OfZVZZxpwzc/78Nv K3K4kLEPuOHOiP4qOODTW5zuEmc9B9xCXL2jSm38WD/x3ZMVGJpyQavkH1tdP/2ZVspIZ X-Received: by 2002:a05:622a:11cc:b0:51a:8f3a:13b9 with SMTP id d75a77b69052e-51c747955c4mr69790711cf.16.1783448265170; Tue, 07 Jul 2026 11:17:45 -0700 (PDT) X-Received: by 2002:a05:622a:11cc:b0:51a:8f3a:13b9 with SMTP id d75a77b69052e-51c747955c4mr69790241cf.16.1783448264510; Tue, 07 Jul 2026 11:17:44 -0700 (PDT) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Subject: [PULL 19/23] target/mips: decode Octeon CHORD and LLM COP2 selectors Date: Tue, 7 Jul 2026 20:15:24 +0200 Message-ID: <20260707181529.60191-20-philmd@oss.qualcomm.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260707181529.60191-1-philmd@oss.qualcomm.com> References: <20260707181529.60191-1-philmd@oss.qualcomm.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Authority-Analysis: v=2.4 cv=DMe/JSNb c=1 sm=1 tr=0 ts=6a4d42ca cx=c_pps a=50t2pK5VMbmlHzFWWp8p/g==:117 a=4s3hRJSeHn4rkQlkrse1kQ==:17 a=IkcTkHD0fZMA:10 a=RAioF0-LDSMA:10 a=M51BFTxLslgA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=Um2Pa8k9VHT-vaBCBUpS:22 a=pGLkceISAAAA:8 a=KKAkSRfTAAAA:8 a=EUspDBNiAAAA:8 a=f58Cf6jUHuCqYyNe2GoA:9 a=3ZKOabzyN94A:10 a=QEXdDO2ut3YA:10 a=IoWCM6iH3mJn3m4BftBB:22 a=cvBusfyB2V15izCimMoJ:22 X-Proofpoint-GUID: ZdZ0wK1uialqTqmIVfTPVqP95_Zq6s2p X-Proofpoint-Spam-Info: AW1haW4tMjYwNzA3MDE4MCBTYWx0ZWRfX0gm3h5NadPEn kOAggiOPxQRXQ2mZJ+51FySyeGxCQ9WxG9nqMU8PctUetuwmO2ZYYgeV/XGXssEYbz/Rn+mACUp hiGHJtdT+b6l+p0M17oPHgn9iC88iSY= X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzA3MDE4MCBTYWx0ZWRfX3E4b1CHHxjdZ yAU+H+VuwaCcv6XRz9jamaPND71xNwKPZT/15LPplzmVpIsSa2RioeU0raT7sPwd+ExvKoajC9f Mt8kfQlLm2T/oawXrN5C8fHwm05J5hA/S/jcU/QFj3SzlPWi39R8CnYNeMVfmHknhvWheVF/1a4 V+8f0xZQaz7iVUy7u/CYpGM/+6KyPLLT31q2O+LoQRg//B+GkbbgTJA6Z2jAk+EMnsU+24HrwuE EQmzEMGC8hPWZ3H5SddlL+5eRC3nc40WlIK5CqzKH+XmfzcJQMZXlqs0xsDtUJwAm4BVo+As5cQ DylgueULOvdRNLAP7ycpvxMxqearxsBujE0McSMs9h7fZ7ruQaTQDAN7a7z18Pn1GOA4M4AGNM+ 6xE+L0Me4aJ+j+W9LAiUDg8D4eu2HhZrcprv3Csq3CAIVt5Ur2TfujhnGYpl2oCB9XdqQ6Va11U tpKSFIMsyfMXtNKzutw== X-Proofpoint-ORIG-GUID: ZdZ0wK1uialqTqmIVfTPVqP95_Zq6s2p X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-07-07_04,2026-07-06_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 malwarescore=0 impostorscore=0 suspectscore=0 phishscore=0 clxscore=1015 spamscore=0 priorityscore=1501 bulkscore=0 adultscore=0 lowpriorityscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607070180 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=205.220.168.131; envelope-from=philmd@oss.qualcomm.com; helo=mx0a-0031df01.pphosted.com X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 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_LOW=-0.7, 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 @qualcomm.com) X-ZM-MESSAGEID: 1783448535977158500 From: James Hilliard Add explicit decodetree entries and translator bindings for the Octeon CHORD and sparse LLM COP2 selectors. CHORD and LLM use their own COP2 selector window rather than the crypto engine windows covered by the preceding decode patches. This completes the explicit COP2 selector coverage by adding the remaining CHORD and LLM register and operation selectors. Signed-off-by: James Hilliard Acked-by: Richard Henderson Message-ID: <20260608-mips-octeon-missing-insns-v2-v16-19-daef7a0d8b04@gmai= l.com> Signed-off-by: Philippe Mathieu-Daud=C3=A9 --- target/mips/tcg/octeon.decode | 13 +++++++++++++ target/mips/tcg/octeon_translate.c | 13 +++++++++++++ 2 files changed, 26 insertions(+) diff --git a/target/mips/tcg/octeon.decode b/target/mips/tcg/octeon.decode index 4ac38d264c8..a8c944e6681 100644 --- a/target/mips/tcg/octeon.decode +++ b/target/mips/tcg/octeon.decode @@ -167,6 +167,9 @@ LDX 011111 ..... ..... ..... 01000 001010 @lx CVM_MF_GFM_RESINP0 010010 00001 rt:5 0000 0010 0101 = 1010 &cp2 CVM_MF_GFM_RESINP1 010010 00001 rt:5 0000 0010 0101 = 1011 &cp2 CVM_MF_GFM_POLY 010010 00001 rt:5 0000 0010 0101 = 1110 &cp2 + CVM_MF_CHORD 010010 00001 rt:5 0000 0100 0000 = 0000 &cp2 + CVM_MF_LLM_DATA0 010010 00001 rt:5 0000 0100 0000 = 0010 &cp2 + CVM_MF_LLM_DATA1 010010 00001 rt:5 0000 0100 0000 = 1010 &cp2 CVM_MT_HSH_DAT0 010010 00101 rt:5 0000 0000 0100 = 0000 &cp2 CVM_MT_HSH_DAT1 010010 00101 rt:5 0000 0000 0100 = 0001 &cp2 CVM_MT_HSH_DAT2 010010 00101 rt:5 0000 0000 0100 = 0010 &cp2 @@ -261,6 +264,16 @@ LDX 011111 ..... ..... ..... 01000 001010 @lx CVM_MT_SHA3_XORDAT15 010010 00101 rt:5 0000 0010 1100 = 1111 &cp2 CVM_MT_SHA3_XORDAT16 010010 00101 rt:5 0000 0010 1101 = 0000 &cp2 CVM_MT_SHA3_XORDAT17 010010 00101 rt:5 0000 0010 1101 = 0001 &cp2 + CVM_MT_LLM_READ_ADDR0 010010 00101 rt:5 0000 0100 0000 = 0000 &cp2 + CVM_MT_LLM_WRITE_ADDR0 010010 00101 rt:5 0000 0100 0000 = 0001 &cp2 + CVM_MT_LLM_DATA0 010010 00101 rt:5 0000 0100 0000 = 0010 &cp2 + CVM_MT_LLM_READ64_ADDR0 010010 00101 rt:5 0000 0100 0000 = 0100 &cp2 + CVM_MT_LLM_WRITE64_ADDR0 010010 00101 rt:5 0000 0100 0000 = 0101 &cp2 + CVM_MT_LLM_READ_ADDR1 010010 00101 rt:5 0000 0100 0000 = 1000 &cp2 + CVM_MT_LLM_WRITE_ADDR1 010010 00101 rt:5 0000 0100 0000 = 1001 &cp2 + CVM_MT_LLM_DATA1 010010 00101 rt:5 0000 0100 0000 = 1010 &cp2 + CVM_MT_LLM_READ64_ADDR1 010010 00101 rt:5 0000 0100 0000 = 1100 &cp2 + CVM_MT_LLM_WRITE64_ADDR1 010010 00101 rt:5 0000 0100 0000 = 1101 &cp2 CVM_MT_CRC_LEN 010010 00101 rt:5 0001 0010 0000 = 0010 &cp2 CVM_MT_CRC_DWORD 010010 00101 rt:5 0001 0010 0000 = 0111 &cp2 CVM_MT_CRC_VAR 010010 00101 rt:5 0001 0010 0000 = 1000 &cp2 diff --git a/target/mips/tcg/octeon_translate.c b/target/mips/tcg/octeon_tr= anslate.c index 76792c9c874..a0db6630c7d 100644 --- a/target/mips/tcg/octeon_translate.c +++ b/target/mips/tcg/octeon_translate.c @@ -235,6 +235,9 @@ CP2_MF_I64(CVM_MF_GFM_MUL1, gfm_mul[1]); CP2_MF_I64(CVM_MF_GFM_RESINP0, gfm_resinp[0]); CP2_MF_I64(CVM_MF_GFM_RESINP1, gfm_resinp[1]); CP2_MF_U16(CVM_MF_GFM_POLY, gfm_poly); +CP2_MF_I64(CVM_MF_CHORD, chord); +CP2_MF_I64(CVM_MF_LLM_DATA0, llm_data[0]); +CP2_MF_I64(CVM_MF_LLM_DATA1, llm_data[1]); =20 CP2_MF_HELPER(CVM_MF_CRC_IV_REFLECT, crc_iv_reflect); CP2_MF_I64(CVM_MF_SHA3_DAT24, sha3_dat24); @@ -306,6 +309,8 @@ CP2_MT_I64(CVM_MT_GFM_RESINP0, gfm_resinp[0]); CP2_MT_I64(CVM_MT_GFM_RESINP1, gfm_resinp[1]); CP2_MT_XOR_I64(CVM_MT_GFM_XOR0, gfm_resinp[0]); CP2_MT_U16(CVM_MT_GFM_POLY, gfm_poly); +CP2_MT_I64(CVM_MT_LLM_DATA0, llm_data[0]); +CP2_MT_I64(CVM_MT_LLM_DATA1, llm_data[1]); CP2_MT_U8_MASKED(CVM_MT_CRC_LEN, crc_len, 0xf); CP2_MT_U32(CVM_MT_CRC_POLYNOMIAL, crc_poly); =20 @@ -395,6 +400,14 @@ CP2_MT_HELPER(CVM_MT_HSH_STARTMD5, hsh_startmd5); CP2_MT_HELPER(CVM_MT_HSH_STARTSHA256, hsh_startsha256); CP2_MT_HELPER(CVM_MT_HSH_STARTSHA, hsh_startsha); CP2_MT_HELPER(CVM_MT_HSH_STARTSHA512, hsh_startsha512); +CP2_MT_HELPER(CVM_MT_LLM_READ_ADDR0, llm_read_addr0); +CP2_MT_HELPER(CVM_MT_LLM_WRITE_ADDR0, llm_write_addr0); +CP2_MT_HELPER(CVM_MT_LLM_READ64_ADDR0, llm_read64_addr0); +CP2_MT_HELPER(CVM_MT_LLM_WRITE64_ADDR0, llm_write64_addr0); +CP2_MT_HELPER(CVM_MT_LLM_READ_ADDR1, llm_read_addr1); +CP2_MT_HELPER(CVM_MT_LLM_WRITE_ADDR1, llm_write_addr1); +CP2_MT_HELPER(CVM_MT_LLM_READ64_ADDR1, llm_read64_addr1); +CP2_MT_HELPER(CVM_MT_LLM_WRITE64_ADDR1, llm_write64_addr1); =20 static bool trans_BBIT(DisasContext *ctx, arg_BBIT *a) { --=20 2.53.0 From nobody Sun Jul 26 10:07:33 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=reject dis=none) header.from=oss.qualcomm.com ARC-Seal: i=1; a=rsa-sha256; t=1783448526; cv=none; d=zohomail.com; s=zohoarc; b=eAToWxfdxDZEwFP39XmoXXrTML3pjxzDm170poBNhREX9sJM3XxU9t1VK4p269XV3HXq54GSxHw4+BEYGRr08wFdBvG4z/UiadozitjXbtYfN1N/vSZGpSAoK8OsuwUpqEPJRIqBZqAPJe6GsOTYfC49bA+bPT48ujnvqRDfA/U= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783448526; h=Content-Type:Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=0oS8TlNqmKKtwABU+p3EM/iq+UpHviGBYQRG289kxeU=; b=gJ+mEZzewSspEJSD4S2iu0AfjgEWU3a6VEx1xs+d44HzzUO+ynJR9qGCeLKcJC7YvG0D5MMRv54uEpQmistfOLH+P0cS8yfhx7ZEoz3Enxh7BarlcUSeswN9TdnjYQZAIYHlUZBDYEcWJxFIVxXqyau7vvRXf9G4sk3tFx0czLw= 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=reject dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1783448526957593.6798619778857; Tue, 7 Jul 2026 11:22:06 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1whAOH-0008I7-A3; Tue, 07 Jul 2026 14:19: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 1whAMn-0006lE-4B for qemu-devel@nongnu.org; Tue, 07 Jul 2026 14:17:58 -0400 Received: from mx0a-0031df01.pphosted.com ([205.220.168.131]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1whAMl-0006ad-7a for qemu-devel@nongnu.org; Tue, 07 Jul 2026 14:17:56 -0400 Received: from pps.filterd (m0279863.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 667FTBli018008 for ; Tue, 7 Jul 2026 18:17:53 GMT Received: from mail-qt1-f197.google.com (mail-qt1-f197.google.com [209.85.160.197]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4f8wep2p4w-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Tue, 07 Jul 2026 18:17:53 +0000 (GMT) Received: by mail-qt1-f197.google.com with SMTP id d75a77b69052e-51c1d137a68so104317451cf.3 for ; Tue, 07 Jul 2026 11:17:53 -0700 (PDT) Received: from localhost.localdomain (88-187-86-199.subs.proxad.net. [88.187.86.199]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-47aa0f2186bsm35237075f8f.36.2026.07.07.11.17.50 for (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Tue, 07 Jul 2026 11:17:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= 0oS8TlNqmKKtwABU+p3EM/iq+UpHviGBYQRG289kxeU=; b=WskoHASzqoaaPtKq udKRne02Q93So8g2gUfhKNUgN8qN/SnT5xQaWA7a0vRcblHvBQ+urPG95W7f+Bck aScdLighMDS6AxlCUzg1sU983zkAP7iFoEEFsYl5DwCQut9UyoS8JvoIj7biSsO7 0ysOIO3oJ5BezOKgaT+qIlNaZ+jU2SHh0EhSSlVvHfKYbmfLgWzNILnR0LDcGKHr Oc5IDf2OAEVHbn8dloynoHeyj9dn0KL3vBpJIMa/bS174+9yX37LDH1u3L/V/WUd uMnASNmsF8w4m6yYFRRXHZ53UZV4Hl2V0w+jPYMV/9uU8Ji+Tx8fMy/tBMHTvMO0 CyDiVQ== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1783448272; x=1784053072; darn=nongnu.org; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=0oS8TlNqmKKtwABU+p3EM/iq+UpHviGBYQRG289kxeU=; b=RT9F2XQY/iyYmR4EIZHR0DlqF+x8TouBDTGHupQMhR38VUvZoRtje0F8s62nMi13S+ 7hbQEh/wdSKPaMz53HjklqUHUQp1lVIFxvvBGJI+FCyIGj3IR/L6aEB08EyRcNnLsEMf qku1bImIaRzVszLC1hXFfi/OoUwO/LBXosFveMwss3TaL6uqqVweHbin2k3QX97yZW0b R9l8v0CYKqmVyBsh5gh1tV96B/XOSnadUjzmbValGH9HscLXoAGjlqx2yI6LBOB2B5RH k22oPRaY6X80r8ji7lBVGoFXEQ5ah14gNEBPpDjZJrZ2UF3f97YR/wAaykwdkfTKOSsd 5vmg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783448272; x=1784053072; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:to:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=0oS8TlNqmKKtwABU+p3EM/iq+UpHviGBYQRG289kxeU=; b=Y0PKrhhXgKlFrilf9NzSMu92TzXL3VUP2MsKFosljFcrCOp8hYoyT+iV6ICJhnz8Af q5p7CThNUs55K+VS0pmzPHonyRt4nOhRfBuKRhsxsKNNhbwIDKp2aOB9Haxr4u9OPTL0 4yaWpOJCPXCpUPDBtAFl8rCOqgjGTlATaIeP9O7sfQ3j7SjHrm9QD1L3sSA/LOcb59b9 lLm6VtS6qtmQtghvBqNbixvAs/ANwdUSd8XJuTYZ2/0a/4RbX3NzC7W4XzxEFGpndEia sI1qQuAC3H0Fjd7NUhHB7qm3PzHhJeI4erd/mvB1qj2IiTlkul0T4JVFwMW55diYGfw3 m+vA== X-Gm-Message-State: AOJu0YyBetSYpPBY38sgM5aPiuSIgwfSX+L+F5CpmV3u7bsPF+yzF7F/ Sk6yrg0aYXvXtEHWEez14RmCeZCKvV2S3mHRvqoGTRyFH0foLNWXa+jnH0XOL3CplaGKY2mRt+o YhjZaBdRoAf0uSYOJp5MliaiioSsl7P4l/rmYsnEu8IfT5kOgTe5I8gtsUHM6KjhMbA== X-Gm-Gg: AfdE7cn69IcdPXozjLdKFRU3deE6dub2F/C2kgaiKvmp0o3elAwsqiYHmfM2pi//QvF wEnlpp0ntGtBQGBo23nwhpT2ixbctWm5MOydgsG6qcqAHTMDaYvXvmJVgwOa8rU3+Ml4PTuNlGG iUuXpmrozhkQl/+buBu/q2GUATxGgIG9KXe7wWYXAQAc4tYxA0tvNad0QhSqijFnXQC6iiQPGe6 7RGQt0eIPE2c8jgEDSwA7DFNTklA+RSQ5qwZ2iPgAWqcCcPNmPuP+e7yCC7LQd4B+g8fmGY3y0f Sxh5kJq3+V/+KXGv8r4B05P/VmiEoPaTxat4URlumDH9P6h/dKqmHy3KME9ro4D3zGA7gkgS7kV GzCdmtaEwq64qFcWr/uro9bWvrpWbu6I6ARnIWzK57srU/A7Jese7oqGvR5RCOhx4AgGW X-Received: by 2002:a05:622a:15cf:b0:51b:ec6c:766c with SMTP id d75a77b69052e-51c747bb629mr72723151cf.12.1783448272075; Tue, 07 Jul 2026 11:17:52 -0700 (PDT) X-Received: by 2002:a05:622a:15cf:b0:51b:ec6c:766c with SMTP id d75a77b69052e-51c747bb629mr72722841cf.12.1783448271497; Tue, 07 Jul 2026 11:17:51 -0700 (PDT) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Subject: [PULL 20/23] target/mips: add Octeon CvmCount RDHWR support Date: Tue, 7 Jul 2026 20:15:25 +0200 Message-ID: <20260707181529.60191-21-philmd@oss.qualcomm.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260707181529.60191-1-philmd@oss.qualcomm.com> References: <20260707181529.60191-1-philmd@oss.qualcomm.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Proofpoint-GUID: MkV2UoxO2jdBPZwq-Nq2gv4VOrCiV5u7 X-Proofpoint-ORIG-GUID: MkV2UoxO2jdBPZwq-Nq2gv4VOrCiV5u7 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzA3MDE4MCBTYWx0ZWRfXxNsWC9i6oopV 6r4Fk+akgoma47IR/JyJ0ANbyLgpl4pn2sBEpFneYb00ggRhr/z5MkfHYYK2z6qRVXF14OxIHV2 O2UekpaeaOzx79Pgezr2feVetmG9wQyycOIQQLLT0XGJmoNXqPpWN/AJ2SIdJ8rvQPso/DnM/bc L41rNU8HNcpnHnCItQ9iPHAOfX0xNg3oyadMIGZZxXnqfnY8jsl5IR+xFaEaYOE26FSJ/qFPRhl 8Q9LtKRYHpJhdtUJHEBMiQi+KHSAYmoIFFNdmpywGFnxBm+bVQ/87cu54Nq4s6Vh1F3vUpAB9jZ 4L3MJcZ3Ba4ni8PedcNV9ysSHXRzoxopRzOzzRnbG14A0zMWI8t5aGTxHCzIQH9Sqo+zjwwEMXZ 7x4fhU6qJDGSXdpxa8MoH3lklNyzX1TPDxLKo9rSOHY7S1vEBwm2P3hBQ9LGXLkBaB2AD+bRi2M T231dbQr3EOyB8icx3A== X-Proofpoint-Spam-Info: AW1haW4tMjYwNzA3MDE4MCBTYWx0ZWRfX00pCwxfJBac+ dRFuSyKhVvX8MZFJhj8XQ0aCvkGu+2Q7h1G4bvESqxw60Z/9ItfsYHon+/HR1RsNP1fkUDYRKXQ 2RNls/aU/TZ877XyljJYQVkGhF9aAQI= X-Authority-Analysis: v=2.4 cv=atSCzyZV c=1 sm=1 tr=0 ts=6a4d42d1 cx=c_pps a=EVbN6Ke/fEF3bsl7X48z0g==:117 a=4s3hRJSeHn4rkQlkrse1kQ==:17 a=IkcTkHD0fZMA:10 a=RAioF0-LDSMA:10 a=M51BFTxLslgA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=yOCtJkima9RkubShWh1s:22 a=pGLkceISAAAA:8 a=KKAkSRfTAAAA:8 a=EUspDBNiAAAA:8 a=_IbzaBZH6cVti85KOtYA:9 a=3ZKOabzyN94A:10 a=QEXdDO2ut3YA:10 a=a_PwQJl-kcHnX1M80qC6:22 a=cvBusfyB2V15izCimMoJ:22 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-07-07_04,2026-07-06_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 malwarescore=0 phishscore=0 clxscore=1015 priorityscore=1501 spamscore=0 suspectscore=0 lowpriorityscore=0 bulkscore=0 impostorscore=0 adultscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607070180 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=205.220.168.131; envelope-from=philmd@oss.qualcomm.com; helo=mx0a-0031df01.pphosted.com X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 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_LOW=-0.7, 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 @qualcomm.com) X-ZM-MESSAGEID: 1783448527996158500 From: James Hilliard Octeon exposes CvmCount through RDHWR register 31. Add the Octeon-only decode path, enable the corresponding HWREna bit for linux-user, and use an unsigned mask when checking HWREna so bit 31 is handled safely. For user-mode emulation, return host ticks as a monotonic counter source suitable for existing Octeon userspace code. In system mode, fall back to the existing CP0 Count value. Reviewed-by: Richard Henderson Signed-off-by: James Hilliard Message-ID: <20260608-mips-octeon-missing-insns-v2-v16-20-daef7a0d8b04@gmai= l.com> Signed-off-by: Philippe Mathieu-Daud=C3=A9 --- target/mips/helper.h | 1 + target/mips/cpu.c | 1 + target/mips/tcg/op_helper.c | 13 ++++++++++++- target/mips/tcg/translate.c | 11 +++++++++++ tests/tcg/mips/user/isa/octeon/octeon-insns.c | 17 +++++++++++++++++ 5 files changed, 42 insertions(+), 1 deletion(-) diff --git a/target/mips/helper.h b/target/mips/helper.h index 141350e80ad..786117813ae 100644 --- a/target/mips/helper.h +++ b/target/mips/helper.h @@ -255,6 +255,7 @@ DEF_HELPER_1(rdhwr_ccres, tl, env) DEF_HELPER_1(rdhwr_performance, tl, env) DEF_HELPER_1(rdhwr_xnp, tl, env) DEF_HELPER_1(rdhwr_chord, tl, env) +DEF_HELPER_1(rdhwr_cvmcount, tl, env) DEF_HELPER_2(pmon, void, env, int) DEF_HELPER_1(wait, void, env) =20 diff --git a/target/mips/cpu.c b/target/mips/cpu.c index b223b767c9c..d72044aef61 100644 --- a/target/mips/cpu.c +++ b/target/mips/cpu.c @@ -320,6 +320,7 @@ static void mips_cpu_reset_hold(Object *obj, ResetType = type) env->CP0_HWREna |=3D 0x0000000F; if (env->insn_flags & INSN_OCTEON) { env->CP0_HWREna |=3D 0x40000000u; + env->CP0_HWREna |=3D 0x80000000u; } if (env->CP0_Config1 & (1 << CP0C1_FP)) { env->CP0_Status |=3D (1 << CP0St_CU1); diff --git a/target/mips/tcg/op_helper.c b/target/mips/tcg/op_helper.c index 3e586e3049e..df1b5c37347 100644 --- a/target/mips/tcg/op_helper.c +++ b/target/mips/tcg/op_helper.c @@ -25,6 +25,7 @@ #include "exec/memop.h" #include "fpu_helper.h" #include "qemu/crc32c.h" +#include "qemu/timer.h" #include =20 static inline target_ulong bitswap(target_ulong v) @@ -209,7 +210,7 @@ target_ulong helper_yield(CPUMIPSState *env, target_ulo= ng arg) =20 static inline void check_hwrena(CPUMIPSState *env, int reg, uintptr_t pc) { - if ((env->hflags & MIPS_HFLAG_CP0) || (env->CP0_HWREna & (1 << reg))) { + if ((env->hflags & MIPS_HFLAG_CP0) || (env->CP0_HWREna & (1u << reg)))= { return; } do_raise_exception(env, EXCP_RI, pc); @@ -261,6 +262,16 @@ target_ulong helper_rdhwr_chord(CPUMIPSState *env) return env->octeon_crypto.chord; } =20 +target_ulong helper_rdhwr_cvmcount(CPUMIPSState *env) +{ + check_hwrena(env, 31, GETPC()); +#ifdef CONFIG_USER_ONLY + return cpu_get_host_ticks(); +#else + return (uint32_t)cpu_mips_get_count(env); +#endif +} + void helper_pmon(CPUMIPSState *env, int function) { function /=3D 2; diff --git a/target/mips/tcg/translate.c b/target/mips/tcg/translate.c index 1f449328825..e3467d15251 100644 --- a/target/mips/tcg/translate.c +++ b/target/mips/tcg/translate.c @@ -10933,6 +10933,17 @@ void gen_rdhwr(DisasContext *ctx, int rt, int rd, = int sel) gen_helper_rdhwr_chord(t0, tcg_env); gen_store_gpr(t0, rt); break; + case 31: + if (!(ctx->insn_flags & INSN_OCTEON)) { + gen_reserved_instruction(ctx); + break; + } + translator_io_start(&ctx->base); + gen_helper_rdhwr_cvmcount(t0, tcg_env); + gen_store_gpr(t0, rt); + gen_save_pc(ctx->base.pc_next + 4); + ctx->base.is_jmp =3D DISAS_EXIT; + break; default: /* Invalid */ MIPS_INVAL("rdhwr"); gen_reserved_instruction(ctx); diff --git a/tests/tcg/mips/user/isa/octeon/octeon-insns.c b/tests/tcg/mips= /user/isa/octeon/octeon-insns.c index f3c52d7829e..6480c8532a1 100644 --- a/tests/tcg/mips/user/isa/octeon/octeon-insns.c +++ b/tests/tcg/mips/user/isa/octeon/octeon-insns.c @@ -330,6 +330,22 @@ static uint64_t octeon_cop2_gfm_mul_reflect_readback(u= int64_t value) return rd; } =20 +static uint64_t octeon_rdhwr31_non_decreasing(void) +{ + uint64_t first, second; + + asm volatile( + ".word 0x7c08f83b\n\t" /* rdhwr $8, $31 */ + ".word 0x7c09f83b\n\t" /* rdhwr $9, $31 */ + "move %[first], $8\n\t" + "move %[second], $9\n\t" + : [first] "=3Dr" (first), [second] "=3Dr" (second) + : + : "$8", "$9"); + + return second >=3D first; +} + int main(void) { assert(octeon_baddu(0x123, 0x0f0) =3D=3D 0x13); @@ -358,6 +374,7 @@ int main(void) 0x0123456789abcdefULL) =3D=3D 0xf7b3d591e6a2c480ULL); assert(octeon_cop2_gfm_mul_reflect_readback( 0xfedcba9876543210ULL) =3D=3D 0x084c2a6e195d3b7fULL); + assert(octeon_rdhwr31_non_decreasing()); =20 return 0; } --=20 2.53.0 From nobody Sun Jul 26 10:07:33 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=reject dis=none) header.from=oss.qualcomm.com ARC-Seal: i=1; a=rsa-sha256; t=1783448500; cv=none; d=zohomail.com; s=zohoarc; b=WSak3PRgFXxjrP7gMPf40FC8cK62dr1ArBjz8djV4X8ysdG7RCBoIJMUtq2FHqsxNPPqOmR9tGebfKxUTHf7WupRej78yg03UcXy8azt/Y5mj4k6wtY13RqdyoJ7NcKEclJu8dn/M+W8HKpPfgv251kvSa5Oek/g3JCl/oqDVr4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783448500; h=Content-Type:Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=ZLpYZGBQM4c6BxYlWik9hnlxQknGdLKYWPVcWlRha3M=; b=iFCiVX+NPKRPxdnpNZQY01uLf8VcDjWjPBnpRmpgmFFWpkNxQr64JyPIhA3qUccyExwIfw4Npn2zeQgdfxfi4TvDZhs/7ghe7ZFPPmNrM1r05CxHT6+0qO5ofEpeZ805INqmfkV7tM/Qrztm4NwZtfeuG0dGOLvbNj47l20lgvs= 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=reject dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 17834485008371009.2705894383549; Tue, 7 Jul 2026 11:21:40 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1whAN7-0007Ve-86; Tue, 07 Jul 2026 14:18:17 -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 1whAMu-0006ue-Br for qemu-devel@nongnu.org; Tue, 07 Jul 2026 14:18:04 -0400 Received: from mx0a-0031df01.pphosted.com ([205.220.168.131]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1whAMs-0006cQ-82 for qemu-devel@nongnu.org; Tue, 07 Jul 2026 14:18:04 -0400 Received: from pps.filterd (m0279866.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 667FTGMY4059295 for ; Tue, 7 Jul 2026 18:18:00 GMT Received: from mail-qt1-f200.google.com (mail-qt1-f200.google.com [209.85.160.200]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4f8sm8kgpg-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Tue, 07 Jul 2026 18:18:00 +0000 (GMT) Received: by mail-qt1-f200.google.com with SMTP id d75a77b69052e-51c1a97644aso60843041cf.2 for ; Tue, 07 Jul 2026 11:18:00 -0700 (PDT) Received: from localhost.localdomain (88-187-86-199.subs.proxad.net. [88.187.86.199]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-47a9de1e6ccsm36154564f8f.5.2026.07.07.11.17.57 for (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Tue, 07 Jul 2026 11:17:57 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= ZLpYZGBQM4c6BxYlWik9hnlxQknGdLKYWPVcWlRha3M=; b=Buv68Fpx9UGg4K5N NFWlPPe12aWhk6UV/kGX7JzSOUpMzTIBz7LK7V4qc8RrtfoL0keuHGV9kQJ7UUZN o6d3UIr2PO51d8rvJGuzf5MfcJ/S5QeLWeJmQkrrVH029MTijGlsS0bXHo8VboGE xnw7ilQqhManlkwytHyHe0vOr7cDMj9Eqei8y52RmeFJtaNAFoFQkkzKJP1zr7UI Oj4D2yWXjK02g3fgAIQiVzf0rWYyM4uLaXirwmHBAzjmEJF6CX8D4lBsFV88zZHp HeL5MCrbfCn5x3Dedw2W1lIPuSfkgf6nvy4Kww3s94VzSpGQ02/0yH4hPlUXLdy4 guqM3w== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1783448279; x=1784053079; darn=nongnu.org; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=ZLpYZGBQM4c6BxYlWik9hnlxQknGdLKYWPVcWlRha3M=; b=H2URvW0JP+t4kkrmypKIomQ5+4Ns2aCew59D5ucu4KuAjLKGsVSPI7QTV7E3P7w5iU e5ZLj3We8YP3TVccYohXP/NEJPLD9NUqnREkXPGuiD8G1VzGUYsIsZ5TqPHViUD2awLe ERK/S5PYC0mu8XI1tgcZpoyM11/HnzW+9i2Et/hu+AmpaR9uepBUCRhSX26bFZ+X8/G9 MGCvZHYVslmlN8RUJGzFIw4a47a+FbQtB651bImwGSkZ8peao9qk+NK42wGbt8NpxNAf nLFMp8AANxd606i89QELivrIMOfCL8zOEVQKtKViOkm65ZewB2o3BjDPmXM2PloQKpdI mDcQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783448279; x=1784053079; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:to:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=ZLpYZGBQM4c6BxYlWik9hnlxQknGdLKYWPVcWlRha3M=; b=p4XAqKK6jGRGAK6ZHNAxr+GIuMQ8ICoacmFe9cQWL4GHFXBugfWjMhZTtONaMqDGbg LpGQb9ymLPYcYJraHHnH32Gf856dHo/TDjUDEot+9dHJiQl6tSwAQecwCzWJOdbd41+M qshX9Q4f0YFXIxKREiWIIw/U0pHNXESyDDh2/29W/LNb2Tj9x3R2reyaTRvO3CsOmebC 18MsxoOnxkCqfrnlcvOp5j6YSZm3H2Zn5jiuNnrZrotph2ODwQ635pPDv8bgsUP2gxJ6 oAx4CCDY9I8UaGpeHQ/8JudXuoFRL64uQDQ4GpjSmItZxxge4TYv2R4T9btbIEAUOF8S zkSQ== X-Gm-Message-State: AOJu0Yya5ncnsY9w6JQEUIFfAk54FDxyZ8Y6uLhkY5arB22GmQ9RaGWU df7NxFYJq12782SEivzmyiVzbwyk92h7h/vs5BWEmeLlqxioczyinW2tPVX4RaynYr5WiiWbrHi KTyl4/UJBQ8BKRgZczcPgQgNDAdkzngecYZlcSKqJjWV8yUYTrrQrafje4xjMtZFWJw== X-Gm-Gg: AfdE7clGFC5jOuidv6R0wzH2Tdeckjy42bZTs28D747WF5y09yrsvVp0KvMy1THukOG 3lkV4wxQyFTsgwwHi15d0lc0hvERxeWVIq2JF+VywGwNDVvo83+/tV6nnrii4I/LYoA/JAXwKrI lzkuz/+UhQp3qJYiaYVAmcA+dGW8bF3+b1GR1QHNfWTsiuu17s0eAkY+Cq600tRS/cHeTFF2mN4 vVETqPb+1/gfdhUfqV8gj5ZsNfANUGqbKHCronoFKvVIelUv3rH4050+nYnyQPKbQwyeA8iu0Bk XiFoXoDDF7n8/NIwOSVdnvH5u9uRJrE1+HYB64SbD7XCzSCr7tyUsrhnAXxOLtSeD5v81ywDpat bibdq3/ciCmOfJxXAwttFSo+lTHIICs8q3Oo2yAtEmPzyhmYH9dMypjVrfa82nSUsBONU X-Received: by 2002:a05:622a:ce:b0:51b:8539:e8f7 with SMTP id d75a77b69052e-51c748bf8ccmr66431071cf.42.1783448279084; Tue, 07 Jul 2026 11:17:59 -0700 (PDT) X-Received: by 2002:a05:622a:ce:b0:51b:8539:e8f7 with SMTP id d75a77b69052e-51c748bf8ccmr66430541cf.42.1783448278359; Tue, 07 Jul 2026 11:17:58 -0700 (PDT) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Subject: [PULL 21/23] tests/tcg/mips: cover Octeon QMAC instructions Date: Tue, 7 Jul 2026 20:15:26 +0200 Message-ID: <20260707181529.60191-22-philmd@oss.qualcomm.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260707181529.60191-1-philmd@oss.qualcomm.com> References: <20260707181529.60191-1-philmd@oss.qualcomm.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzA3MDE3OSBTYWx0ZWRfX0DEY91mqq/Ds 0Ar4JMaHUcYEhLz8CSq468cwxxqQ4SxUfj7DUPTaijZEzVmhSNdFGoTVz79LCBbUXBu3vICFPR5 YIGO6RPpo7r50oFgb0cVS1FaJRIjHyjj7XHO0Y7g5dK/d9tnVULjaLyYiofgnf4dY/04g+zLtwT eHhk8oZAL/xMF3clagfgOgwyuhDIMlFi+PbT2mH53Q73wU0lZ1lrI30voh5SjXrgAxhYsJBq0Vk +TchSbNz+f1Ku5OiQIGyKRb4beJKiZvMOhVC+vHVRfA8xkNK/kR2e3TuLaxxt6gUr10tD8InhOz RNXKLrL0VSys2zpuuW9waS7HBFNhdFOB66rDLTOmHFVdd0T4I81mAGi1vozEmJTkBALw8JPP0kr Nr1cMR/Wnk9uL5xah8zmuPKAeKA4BTKjcXaY7ZpIhtmwX0ul/zwjVg9PjK9HGO/LeEIAo87G2SB CfHeGNvYUc0LMBbt2kw== X-Proofpoint-Spam-Info: AW1haW4tMjYwNzA3MDE3OSBTYWx0ZWRfXzU4DcBZ98TtV edfF2zSuiNVGOfbzUhZSMaX4fyUrAMWYewdkAtjQeJ/SpDPZKzSBueZHn45+jR9XRYpiJC7dti2 u0TsYL00IDcZO1+QmYyB9b3R/TYH6fA= X-Proofpoint-GUID: 5tIGlyK9DtXFy2yLpF5sxNVg6v9awF9n X-Authority-Analysis: v=2.4 cv=UvdT8ewB c=1 sm=1 tr=0 ts=6a4d42d8 cx=c_pps a=JbAStetqSzwMeJznSMzCyw==:117 a=4s3hRJSeHn4rkQlkrse1kQ==:17 a=IkcTkHD0fZMA:10 a=RAioF0-LDSMA:10 a=M51BFTxLslgA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=YMgV9FUhrdKAYTUUvYB2:22 a=pGLkceISAAAA:8 a=KKAkSRfTAAAA:8 a=EUspDBNiAAAA:8 a=8cCW5OL_3pmOQgKCisAA:9 a=3ZKOabzyN94A:10 a=QEXdDO2ut3YA:10 a=uxP6HrT_eTzRwkO_Te1X:22 a=cvBusfyB2V15izCimMoJ:22 X-Proofpoint-ORIG-GUID: 5tIGlyK9DtXFy2yLpF5sxNVg6v9awF9n X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-07-07_04,2026-07-06_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 clxscore=1015 phishscore=0 malwarescore=0 bulkscore=0 suspectscore=0 priorityscore=1501 lowpriorityscore=0 impostorscore=0 adultscore=0 spamscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607070179 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=205.220.168.131; envelope-from=philmd@oss.qualcomm.com; helo=mx0a-0031df01.pphosted.com X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 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_LOW=-0.7, 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 @qualcomm.com) X-ZM-MESSAGEID: 1783448501901158500 From: James Hilliard Add smoke coverage for Octeon QMAC and QMACS fixed-point accumulator instruction paths. The coverage exercises normal accumulation, saturating accumulation, and the sticky saturation flag. Signed-off-by: James Hilliard Reviewed-by: Richard Henderson Message-ID: <20260608-mips-octeon-missing-insns-v2-v16-21-daef7a0d8b04@gmai= l.com> Signed-off-by: Philippe Mathieu-Daud=C3=A9 --- tests/tcg/mips/user/isa/octeon/octeon-insns.c | 40 +++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/tests/tcg/mips/user/isa/octeon/octeon-insns.c b/tests/tcg/mips= /user/isa/octeon/octeon-insns.c index 6480c8532a1..6fffc820103 100644 --- a/tests/tcg/mips/user/isa/octeon/octeon-insns.c +++ b/tests/tcg/mips/user/isa/octeon/octeon-insns.c @@ -129,6 +129,43 @@ static uint64_t octeon_vmm0(uint64_t mpl0, uint64_t p0, return rd; } =20 +static uint64_t octeon_qmac_lo(uint64_t rs, uint64_t rt, uint64_t lo) +{ + uint64_t rd; + + asm volatile( + "move $8, %[rs]\n\t" + "move $9, %[rt]\n\t" + "mtlo %[lo]\n\t" + "mthi $0\n\t" + ".word 0x710904d2\n\t" /* qmac.03 $8, $9 */ + "mflo %[rd]\n\t" + : [rd] "=3Dr" (rd) + : [rs] "r" (rs), [rt] "r" (rt), [lo] "r" (lo) + : "$8", "$9"); + + return rd; +} + +static uint64_t octeon_qmacs_state(uint64_t rs, uint64_t rt, uint64_t lo) +{ + uint64_t hi, rd; + + asm volatile( + "move $8, %[rs]\n\t" + "move $9, %[rt]\n\t" + "mtlo %[lo]\n\t" + "mthi $0\n\t" + ".word 0x71090012\n\t" /* qmacs.00 $8, $9 */ + "mfhi %[hi]\n\t" + "mflo %[rd]\n\t" + : [hi] "=3Dr" (hi), [rd] "=3Dr" (rd) + : [rs] "r" (rs), [rt] "r" (rt), [lo] "r" (lo) + : "$8", "$9"); + + return ((hi & 1) << 32) | (rd & 0xffffffff); +} + static uint64_t octeon_vmm0_zeroes_mpl1(void) { uint64_t rd; @@ -355,6 +392,9 @@ 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_qmac_lo(0x0003000000000000ULL, 2, 1) =3D=3D 13); + assert(octeon_qmacs_state(1, 1, 0x7ffffffe) =3D=3D 0x17fffffffULL); + assert(octeon_qmacs_state(0x8000, 0x8000, 0) =3D=3D 0x17fffffffULL); 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); --=20 2.53.0 From nobody Sun Jul 26 10:07:33 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=reject dis=none) header.from=oss.qualcomm.com ARC-Seal: i=1; a=rsa-sha256; t=1783448468; cv=none; d=zohomail.com; s=zohoarc; b=l/nLdiy05FiCoCycjG0usmrSyRAnO/peQH88HamaZMQ3uBEAxjnjkuFLydESsLnfWPbFolEQCqbO/Hh2wRII6npftE+LrVMfctVw48rhYP22T30Trh0WCJKvn9B9Z+TiX+zZnTra4yMIOKBEsUOYNZMIAz1XyAyydzdDq2fRP0c= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783448468; h=Content-Type:Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=CgS9XFauO3KSfOojWTo4Z4kVN7kcTgbfNw/MBbeYG2M=; b=Y9IbL6zHeumRhbQNC/k57IMV6hqG1BLMWIAfR0vOn6Mhd4MVjMK8PerAZIaThbh4bMvjSjGs79c7GldcoEbfAGl4ADzXrOl+oD7neL0V40fow1bKcEVZQ1KQBnQN+G50si0GqmR8z714+W93kku3h2BFDvNGteAk8VyHQDfyWfs= 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=reject dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 17834484681831017.3129558772386; Tue, 7 Jul 2026 11:21:08 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1whAP2-0000yF-UL; Tue, 07 Jul 2026 14:20:17 -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 1whAN0-0007CQ-WA for qemu-devel@nongnu.org; Tue, 07 Jul 2026 14:18:12 -0400 Received: from mx0a-0031df01.pphosted.com ([205.220.168.131]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1whAMz-0006fE-6Y for qemu-devel@nongnu.org; Tue, 07 Jul 2026 14:18:10 -0400 Received: from pps.filterd (m0279862.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 667FT2Bp4073514 for ; Tue, 7 Jul 2026 18:18:08 GMT Received: from mail-qt1-f198.google.com (mail-qt1-f198.google.com [209.85.160.198]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4f8vun2skw-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Tue, 07 Jul 2026 18:18:07 +0000 (GMT) Received: by mail-qt1-f198.google.com with SMTP id d75a77b69052e-51c1d137a68so104320571cf.3 for ; Tue, 07 Jul 2026 11:18:07 -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-493e0f4ef53sm81903205e9.8.2026.07.07.11.18.04 for (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Tue, 07 Jul 2026 11:18:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= CgS9XFauO3KSfOojWTo4Z4kVN7kcTgbfNw/MBbeYG2M=; b=OIyUsm1zeruHovOv pY4mruCV/XucRKWlu0dYg+8G2ivQtMpusRF0P+drFcysBIfM9viynnHGLjFZz8Ur hEORsVa4x3nopz+XPdIyveks7kCEdsKmZRlZ8k47LPqj3hSU0z+c/0J2s6fIRfmj 2clHjk5ZO6xanB7Gpj/dTF7dUn3zO0lnGAIknJko9hRdkJfpFDonqMX5Fdvzu/Q4 Zfk/lvaewvvlJxlSWuUIgWhhFS6yZ5x8Y4cabr5/YjBo/zVwLmpibb1Q/S9shcpz sX7pa/SS10t+bk1GaIsRFBvEqKwUDPvG0u1kO15m3Y7BrjLmz+Mh4m1AYQWpQn5q ZRU8wA== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1783448287; x=1784053087; darn=nongnu.org; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=CgS9XFauO3KSfOojWTo4Z4kVN7kcTgbfNw/MBbeYG2M=; b=e9J5dFXhKpYP971nFMVJp5MmcQIWR3ryGVQsaODWbCPpfKqckmMizET56ycNs7Va37 kdCkTy8hW5Pf23HwCMagkQWFXJIw76hzY8XC/A5SOcnzVwoT7t0F3pKMbMvfsxTfuUm7 7bGyqHOnUQX2+koxkamdg1Y7SlvvANVqlLV8dALF5PuT+7rkmljN7XNySKDtyLNCaiq2 uFh+Zcj2CWhDlM3g9RG6KcE8VfrtZzEcg0bPfhNVPgr/5kA4DI5L/VHq1bBy6olMzera P2qlMFT4IZTHEIs9/2SzKXd7LjfZ5HtS0PVqLhc78wco255CYhvEp6JMNs8GHKuGIDO/ p23g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783448287; x=1784053087; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:to:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=CgS9XFauO3KSfOojWTo4Z4kVN7kcTgbfNw/MBbeYG2M=; b=cxjaEyGDzjuBYHV7/u1HMZs6khE0zgqO6Cf5OZjZjK94q2trtuGqzsiDRejm0umrfQ WbuosWiSe5bW2l56EkBuGaM1Yvn1gyPo7Ga1UyV0glJoGqNIz9dSQNptxc8TQoN5R//h 5nQ75b71+3W9xaDgqLmpdS+K7VGPeguZooZIqgIUNB+FBEHWx56TmWhr0OqDZdAw+wVb Ai8PyHxRblekWIDd1YsO3zG4VgdtPQtgej4Qg1ji3vaApymMckd4yCNfGwGfpMuwKG/T /WI95Dd5wFmxXLiBoQZddssYM+fXb3jqVo8zH2xMxLBAJb5Bydt5WhjCAD04aMKZsHw5 1C+g== X-Gm-Message-State: AOJu0Yw3MWLkxlZYLgBO4aOfScFPOxyKdcXCSeRg3IOS6kI46aKERFcu kTo3+Gq/69dd9V9hlN64uO24iWNNXVd8Aq0dqq4OSntYtQ45ZvLuMRzXCx5fSwVTbb4ZL56QPsP o1f1h2VPfM7kactsZ+01fhiiL6Mwi1ILTC9hlqit75TMiZAzqkwe8gD/xfnmTk5bnmQ== X-Gm-Gg: AfdE7cnnciruruDFBBZb6JnWbEoF4Pe60AW8dmZXLXcYJ70vwGVIIlyi1ZhdSympmue BqnUuXCrXn8gPf+XOGLtH+HStxPKEKz37akArdA4J5NG2PoqAAkw92RteDO84Ow3HZKqPeChwbg pXELTjv/l5ahlujNykw7C9wfAgrcJvZGS2v0/V3kcjDlKYxaZD7aaHWkTJqKtcRioFJBxtZ/mZq D9A47ZxamNu4dDu9OI/EataVBSiaMTI33gmUS4brNMpo+JgsQ/5moRWO/2/umCCssU1Vo3VhkQ6 MzAdTjjDgprgE8PdfXQi0uHeZMrffsboVlpQqBW5vAG8UJEffmxj2yGfwPQxNvcmorRaygRDNK1 MhCmGEeVqIQCiRcRhVtJ2Una7W1sb8fIqvoPbpUGFfxS0d43qD9VSLTwZtjAftwWnkut9 X-Received: by 2002:a05:622a:5817:b0:51a:8c9a:8fb4 with SMTP id d75a77b69052e-51c748e0ae6mr69526011cf.69.1783448286552; Tue, 07 Jul 2026 11:18:06 -0700 (PDT) X-Received: by 2002:a05:622a:5817:b0:51a:8c9a:8fb4 with SMTP id d75a77b69052e-51c748e0ae6mr69525111cf.69.1783448285410; Tue, 07 Jul 2026 11:18:05 -0700 (PDT) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Subject: [PULL 22/23] target/sh4: fixup tcg for sh4 fipr/ftrv instructions Date: Tue, 7 Jul 2026 20:15:27 +0200 Message-ID: <20260707181529.60191-23-philmd@oss.qualcomm.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260707181529.60191-1-philmd@oss.qualcomm.com> References: <20260707181529.60191-1-philmd@oss.qualcomm.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Proofpoint-Spam-Info: AW1haW4tMjYwNzA3MDE4MCBTYWx0ZWRfX90rWiKtp8yaP nSZO++GNiiv7SFNyKOe5ymomr9vu6JZ/jWmC7ZtIHOoezMSzGVocBMULHONWMPnn41aiLgS3U8f 0v38P4RSXlSDge9YhbdkC8hDbGHkBAk= X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzA3MDE4MCBTYWx0ZWRfX+9u06M/wVdbB i28UxIKoQbRp+I1Zea8hVa5J9tHMMvLP2Q2J6YiiQevuLI3vUYVR5A6TTDtZXXmcZwXthRSczjm 45MaghzKJmFgsiXG30ieUgSUQEEz/iAU5ZGqp/FXUvi6yrSLyvDKPtIPl959U7+jablXelDbRuc z0XsuLvkFZuuDTj8ClXUnUnhpz3DsK1IUpg3N/ruweoj5MD+kYPx9nm2/RCKl6qCRgV03OTBPuf h6/I4BrP1cFOWH5HAAsNDsjoYTqjFrNa60THYroYsbO160ZzxhbwYqB7qnBPZlSm+9L8yMQLWUy D46MTNKZte+Ec91QiVPILQJoifHwgciyR1u3PelyJoThWPlyT+P3/nAzehmCBSoqHyx1jJJ6Vk3 aQtAp+iZpdYXTXDAgwSRYEjVo62T0Cqjmy1ALUKly7rlbzWh/N27oNeLXzcjznmcX3BYBiklSlK 0LwiV5Q2CQOfTtAkEFA== X-Proofpoint-GUID: 11OM9Jlr_L0FLe149YTGxdcGWh9fgRrC X-Authority-Analysis: v=2.4 cv=N+IZ0W9B c=1 sm=1 tr=0 ts=6a4d42df cx=c_pps a=mPf7EqFMSY9/WdsSgAYMbA==:117 a=4s3hRJSeHn4rkQlkrse1kQ==:17 a=IkcTkHD0fZMA:10 a=RAioF0-LDSMA:10 a=M51BFTxLslgA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=_K5XuSEh1TEqbUxoQ0s3:22 a=pGLkceISAAAA:8 a=YEB5RgzmAAAA:8 a=EUspDBNiAAAA:8 a=QUFLcnT3Zhn122vlBIQA:9 a=3ZKOabzyN94A:10 a=QEXdDO2ut3YA:10 a=dawVfQjAaf238kedN5IG:22 X-Proofpoint-ORIG-GUID: 11OM9Jlr_L0FLe149YTGxdcGWh9fgRrC X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-07-07_04,2026-07-06_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 spamscore=0 phishscore=0 priorityscore=1501 clxscore=1015 adultscore=0 bulkscore=0 suspectscore=0 impostorscore=0 malwarescore=0 lowpriorityscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607070180 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=205.220.168.131; envelope-from=philmd@oss.qualcomm.com; helo=mx0a-0031df01.pphosted.com X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 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_LOW=-0.7, 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 @qualcomm.com) X-ZM-MESSAGEID: 1783448469508158500 From: Randy Schifflin Fixes TCG generation for sh4 `fipr` and `ftrv` instructions. Updates the current logic for these instructions to check the FPSCR register appropriately (according to the sh4 cpu manual, `fipr` and `ftrv` are only defined when the FPSCR register PR flag is 0). Also fixes the mth/nth-vector operands by multiplying by 4 to convert to the correct floating point register offset. Signed-off-by: Randy Schifflin Reviewed-by: Yoshinori Sato Message-ID: <20260629-fixup-sh4-tcg-fpu-instructions-b4-v1-2-4356b305f971@g= mail.com> Signed-off-by: Philippe Mathieu-Daud=C3=A9 --- target/sh4/op_helper.c | 2 +- target/sh4/translate.c | 15 +++++---------- 2 files changed, 6 insertions(+), 11 deletions(-) diff --git a/target/sh4/op_helper.c b/target/sh4/op_helper.c index 90c065b217b..777380f8e40 100644 --- a/target/sh4/op_helper.c +++ b/target/sh4/op_helper.c @@ -488,7 +488,7 @@ void helper_ftrv(CPUSH4State *env, uint32_t n) float32 p; =20 bank_matrix =3D (env->sr & FPSCR_FR) ? 0 : 16; - bank_vector =3D (env->sr & FPSCR_FR) ? 16 : 0; + bank_vector =3D (env->sr & FPSCR_FR) ? 16 + n : n; set_float_exception_flags(0, &env->fp_status); for (i =3D 0 ; i < 4 ; i++) { r[i] =3D float32_zero; diff --git a/target/sh4/translate.c b/target/sh4/translate.c index d38a6bd352f..373950fd662 100644 --- a/target/sh4/translate.c +++ b/target/sh4/translate.c @@ -377,11 +377,6 @@ static inline void gen_store_fpr64(DisasContext *ctx, = TCGv_i64 t, int reg) goto do_illegal; \ } =20 -#define CHECK_FPSCR_PR_1 \ - if (!(ctx->tbflags & FPSCR_PR)) { \ - goto do_illegal; \ - } - #define CHECK_SH4A \ if (!(ctx->features & SH_FEATURE_SH4A)) { \ goto do_illegal; \ @@ -1740,22 +1735,22 @@ static void _decode_opc(DisasContext * ctx) return; case 0xf0ed: /* fipr FVm,FVn */ CHECK_FPU_ENABLED - CHECK_FPSCR_PR_1 + CHECK_FPSCR_PR_0 { - TCGv m =3D tcg_constant_i32((ctx->opcode >> 8) & 3); - TCGv n =3D tcg_constant_i32((ctx->opcode >> 10) & 3); + TCGv m =3D tcg_constant_i32(((ctx->opcode >> 8) & 3) << 2); + TCGv n =3D tcg_constant_i32(((ctx->opcode >> 10) & 3) << 2); gen_helper_fipr(tcg_env, m, n); return; } break; case 0xf0fd: /* ftrv XMTRX,FVn */ CHECK_FPU_ENABLED - CHECK_FPSCR_PR_1 + CHECK_FPSCR_PR_0 { if ((ctx->opcode & 0x0300) !=3D 0x0100) { goto do_illegal; } - TCGv n =3D tcg_constant_i32((ctx->opcode >> 10) & 3); + TCGv n =3D tcg_constant_i32(((ctx->opcode >> 10) & 3) << 2); gen_helper_ftrv(tcg_env, n); return; } --=20 2.53.0 From nobody Sun Jul 26 10:07:33 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=reject dis=none) header.from=oss.qualcomm.com ARC-Seal: i=1; a=rsa-sha256; t=1783448500; cv=none; d=zohomail.com; s=zohoarc; b=SRQ28tn10fQsjQnrjHn+pvnJfS8LT3gvqEvV4imHCcvY7ekojUyqpcbIu39F7DtUO9cuqwLOKkF09fBOhx5IR/qKlM+74CtNLhoDknU87u/eIxegFSNmmFQctAbSHChkCr2mPit/WaHWCH60jJe5gGIzw3eHi5Q+L0pYfcoj4Yc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783448500; h=Content-Type:Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=rNdzhmMd3pzAiLNXaTNayxj0g21OJfaad1a7HKl1sDs=; b=mXYpMQrAx6JvH5s/sgrI2YORon0EXpB8J5EhLbW8WmhWwIAyotD2aR3jZ5N9rKXg+pWy4YK0tJcXG0QOMspZnHXOATXSsrduBinkWf5cEYYk6Rm1eB5NgVdagFn8VCGwRB/GYpQhG2Jhs/QBoX5DZF4TO8HDHrQCOnXM+F7Gxy8= 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=reject dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1783448500773594.0555157721644; Tue, 7 Jul 2026 11:21:40 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1whAOA-0008Gf-U9; Tue, 07 Jul 2026 14:19: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 1whANJ-0007eO-Tg for qemu-devel@nongnu.org; Tue, 07 Jul 2026 14:18:34 -0400 Received: from mx0a-0031df01.pphosted.com ([205.220.168.131]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1whAN9-0006gU-8v for qemu-devel@nongnu.org; Tue, 07 Jul 2026 14:18:22 -0400 Received: from pps.filterd (m0279865.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 667FSwHJ045466 for ; Tue, 7 Jul 2026 18:18:17 GMT Received: from mail-qt1-f199.google.com (mail-qt1-f199.google.com [209.85.160.199]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4f8w11trf4-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Tue, 07 Jul 2026 18:18:17 +0000 (GMT) Received: by mail-qt1-f199.google.com with SMTP id d75a77b69052e-517e054fe07so83291971cf.1 for ; Tue, 07 Jul 2026 11:18:17 -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-493e0f40d50sm81809285e9.5.2026.07.07.11.18.11 for (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Tue, 07 Jul 2026 11:18:11 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= rNdzhmMd3pzAiLNXaTNayxj0g21OJfaad1a7HKl1sDs=; b=obBwqBA29FxijbCs bQHk0khpfZf9R0zrhIGdt2WHaj7enk0YIF4ZnYBQxqvzWAv4/cHat4th3aMMNYl3 m5UeIF9WrSrzcEXF9PBVFn1U7jGe9dnihyOyrq4hzN/NeR+SneMTvbs1zqx91zDi jopz7K91znAEYzuykW0YAdLHwzaeiqwAhv0iztVggYrW60ZHkX9hbh5JwH980OMB /1nrq/Na9Ir6HS2K+5mSE1ob4jvaEj05ORB65cNegw4f383/vAe/1Jf+1OKFvmbT b/brT2idn+90jNoB6i/2c+LvzzqBfBTu3r1vFEgoVKp3kzjhHd0cuNwuLaDfWNo8 9NSqkQ== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1783448297; x=1784053097; darn=nongnu.org; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=rNdzhmMd3pzAiLNXaTNayxj0g21OJfaad1a7HKl1sDs=; b=aSdOvXm4a1IbovdguNo+jaz458PBTlqQTTbDS7UzjgCI/x/wIGC+L8Qdo4TIZAp7y/ dAqFPeB2H9wXbLzqjZ3Mhf+dfd2RHU9CYiFrs9/Jc+MZWLPI1hukVU//uI0h0G9BpONh 8OezAkivuzD/S28GjOySPJbaPjm15wV+vQENPImVqj1N172Eu5QcgBnC3NwP8NPUuNaQ I9EF+B2GEy987jTIJKvANCsEggRkoX+GMokd3dWy9hFW2V3R/mLls85wMXFJ1gS3zl0j 6aZgOmBHTxI2qj5faHoKjPb+WRnETUSzjJCharrlbnwRVnDGc4TCUmeOmsonFDiZGvGL WXVg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783448297; x=1784053097; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:to:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=rNdzhmMd3pzAiLNXaTNayxj0g21OJfaad1a7HKl1sDs=; b=CCKEslFJ0WO7YcdAwoYsxdiNF5ChoapTufYkYkiV7fOuB6UblBuZ5Xi7p0+71AGjck dF5Ga4PAKi9p/FLrK9HkVAoFhKCE18N+BbI4tSUHL6jvuVzA93e+KnbMs4cYCp04dMXn NPLfRfZn5/E9cyDglCbYxOiZ89PAMWanx1yP0Imi71eKv1FduAHyGmTjPuUED7tOYWiK Cg9POxlnj0j5//7515gt3c46v4XRYhby3k0j4XXdZm8T2j6v2pgjgx2duvFrp/8WvOuV rRGcjqlbOxGzUdGPQTO/k4M65HHlcVLSXvGuYLMwuMPhOLQBvez00Bry819HcsJOfcio zCWQ== X-Gm-Message-State: AOJu0YxaUXsSskqtI5QoAiUdepN26uTCpCRi/fbrqwbGQA6+H7pYba4J PITkVW+MCrLAcfIyBZIgwv51pgOj/XkIIWWNWEu7vAq1MflkjQIEykbm1ovwVrvDi/wvS5mcWY1 4AetJ1XD9nCp/wofWiW7GksolvEa/PD2YaJtNZq4VlJrq1fOe3ZupRJJrY6VlUsKyKQ== X-Gm-Gg: AfdE7cmKqvQinONLvA6D8Dilsc+KxzhCD8fAeI5WReTXQ0nzpEnEAOPmZaKiFBBauCH dMvtPn5MSFiGtRYvfd5bztIgweGh1eUfflz1s4reO+r78gh+scn4+wz6Wfa3kWq5DnnAuoHXsZ0 2a+uO/a28JcN+7e3TrlyHdRyc4KAxDkadqIcupgKVDCrVjGHcDAWTQvxf8XgkzOoQrz/NdM2pQ8 yTJCez1tetSMrjH6lteFfY60wKD93kn3ymdFo4fQ6qtX4sCpX6OIn67jLcoQpwcdYL5gyqwS5Ly MZVMYvsEDk06dJLfyq18Nwv38DSzCdZllXM1f5kYC40GxxsJn0MJ6w8KfA0BkLL1ubHfB0Z/YIw a2xGUc/OT5AWegrgLj+jPzej9VpTasZoVKDTNxJJvSolTWufqmMZg+pcurRggoW81qMPS X-Received: by 2002:a05:622a:1a91:b0:51c:f4f:b3ab with SMTP id d75a77b69052e-51c747d5315mr69714271cf.20.1783448296291; Tue, 07 Jul 2026 11:18:16 -0700 (PDT) X-Received: by 2002:a05:622a:1a91:b0:51c:f4f:b3ab with SMTP id d75a77b69052e-51c747d5315mr69711321cf.20.1783448292488; Tue, 07 Jul 2026 11:18:12 -0700 (PDT) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Subject: [PULL 23/23] qemu-options: Do not list -enable-kvm on MIPS binaries Date: Tue, 7 Jul 2026 20:15:28 +0200 Message-ID: <20260707181529.60191-24-philmd@oss.qualcomm.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260707181529.60191-1-philmd@oss.qualcomm.com> References: <20260707181529.60191-1-philmd@oss.qualcomm.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Authority-Analysis: v=2.4 cv=DMe/JSNb c=1 sm=1 tr=0 ts=6a4d42e9 cx=c_pps a=WeENfcodrlLV9YRTxbY/uA==:117 a=4s3hRJSeHn4rkQlkrse1kQ==:17 a=IkcTkHD0fZMA:10 a=RAioF0-LDSMA:10 a=M51BFTxLslgA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=Um2Pa8k9VHT-vaBCBUpS:22 a=pGLkceISAAAA:8 a=EUspDBNiAAAA:8 a=20KFwNOVAAAA:8 a=lxiqw3fu-qJSzJVeTUcA:9 a=3ZKOabzyN94A:10 a=QEXdDO2ut3YA:10 a=kacYvNCVWA4VmyqE58fU:22 X-Proofpoint-GUID: 99KvFYYtVimwVg7tgS6VhQ-wfIDIbELK X-Proofpoint-Spam-Info: AW1haW4tMjYwNzA3MDE4MCBTYWx0ZWRfX+Ww3/sOw9YCF mZU1joBj7aySCwgHUg28Ek4zi+/H4dxy5P+IyaKYYPZc3ifMnMRYj2OjXilJK91K5lBWpAFx79b 8V4SlaDMTaMbpXOnelfbfDqzQ6HAw4M= X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzA3MDE4MCBTYWx0ZWRfX3qS0SwLuc8Kf cSccnjmVg9OCgQoofzg2iC/qc9rEEmCB6rrIkwVxSX+Zddzzwu7trf1xRBGaL+SzWKXa6T1jBnp kSBpm5ivyNxC8rqI74SoI1CP3b9XH6g9XTqXXZ+GGdIRzi6lfcdyc3jKCnj0IQNlP+Otbu/FGCP dX50EnidIAe5/IPp3qCx2hKXnN4gNdjddHoD/jzfrGNz9FOA0VFDCHmqOykzUekP9nEQwXzMgUg VtTQV1KOAJ/ags1X1ZaKY7i7RGg6fZzCSKtO4vjfv4EFmZyI/HU5ls5lDX9ANQzVkyncrF7UWLv zf20XI6TpXRRN351JxsCifBHbV51O1jmUfCrZoVlHIgHB0kC10ME6AKj5xCmh8t6hNFBaE7K8U5 j7bycGeUj+riOw6bFSeLIrrdII1a2Jscs9rHaOrD2OydhFTXUjL434hiP9DHQAeNUs33itKfT3L NgMoRA2CGyxGfiQCLcQ== X-Proofpoint-ORIG-GUID: 99KvFYYtVimwVg7tgS6VhQ-wfIDIbELK X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-07-07_04,2026-07-06_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 malwarescore=0 impostorscore=0 suspectscore=0 phishscore=0 clxscore=1015 spamscore=0 priorityscore=1501 bulkscore=0 adultscore=0 lowpriorityscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607070180 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=205.220.168.131; envelope-from=philmd@oss.qualcomm.com; helo=mx0a-0031df01.pphosted.com X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 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_LOW=-0.7, 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 @qualcomm.com) X-ZM-MESSAGEID: 1783448501888158500 When removing KVM support in commit 630decdfccd we forgot to remove MIPS of the '-enable-kvm' option help. Do it now. Fixes: 630decdfccd ("buildsys: Remove MIPS KVM") Inspired-by: Miao Wang Signed-off-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Thomas Huth Message-Id: <20260707095723.36591-1-philmd@oss.qualcomm.com> --- qemu-options.hx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/qemu-options.hx b/qemu-options.hx index e44b47de681..ccb71743ee3 100644 --- a/qemu-options.hx +++ b/qemu-options.hx @@ -5163,7 +5163,7 @@ ERST =20 DEF("enable-kvm", 0, QEMU_OPTION_enable_kvm, \ "-enable-kvm enable KVM full virtualization support\n", - QEMU_ARCH_ARM | QEMU_ARCH_I386 | QEMU_ARCH_MIPS | QEMU_ARCH_PPC | + QEMU_ARCH_ARM | QEMU_ARCH_I386 | QEMU_ARCH_PPC | QEMU_ARCH_RISCV | QEMU_ARCH_S390X) SRST ``-enable-kvm`` --=20 2.53.0