From nobody Sat May 30 19:23:38 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1777438215; cv=none; d=zohomail.com; s=zohoarc; b=XgG2yp3eS3AJ5jjy0nKsiOspyzMHj2EEWOfrP1WnT2kuUYIUwVUB3SS7zMKTaktEhidck3Z+RHtVjyb4xPhYY/0Cfzyj1NlBh8FaOISY2cQwkCVvw/lFMYtrRiFGeF3M3aNSZ9YnVh26kIgSdK9jyl5HvfOttmj0xgfJ/71OW30= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777438215; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=up6skKqJSQQNZDXlNUFBGctHSex7FpmhenPiP1DwEl0=; b=a8iF/FDZo3yXgT72lfDaZyHhn8YT7IF5uHGvzCwc2k/XUTjNQJP79bREfxzPZCNOp8CNvhb+ztvn8T22mpl9UQrMdh/ZZPUhdy8TfH6cTLM834iBG5RJZc5d77yTneVO1fKDvB/h3OJtSfhKxmahDpkV8aUaersVgVi6jlkFvWc= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1777438215568699.4763946300862; Tue, 28 Apr 2026 21:50:15 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wHwqU-0000wu-0b; Wed, 29 Apr 2026 00:48:22 -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 1wHwqS-0000wc-5L for qemu-devel@nongnu.org; Wed, 29 Apr 2026 00:48:20 -0400 Received: from mail-pg1-x533.google.com ([2607:f8b0:4864:20::533]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wHwqP-00087Y-Vd for qemu-devel@nongnu.org; Wed, 29 Apr 2026 00:48:19 -0400 Received: by mail-pg1-x533.google.com with SMTP id 41be03b00d2f7-c76c60c7502so197317a12.0 for ; Tue, 28 Apr 2026 21:48:17 -0700 (PDT) Received: from toolbx.alistair23.me ([2403:581e:fdf9:0:6209:4521:6813:45b7]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2b988772ae8sm7756145ad.7.2026.04.28.21.48.11 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 28 Apr 2026 21:48:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1777438096; x=1778042896; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=up6skKqJSQQNZDXlNUFBGctHSex7FpmhenPiP1DwEl0=; b=XGcsUc7yjmkpakthUY1UqVi8AJo9VC2sa4LwQ1s9gNG62kzkW6ZWFik4BGtCQgeZit tiKg75qv2eqZXZSMt/TsY36pY02j8FR1/DhePEJ+6IEtS33Gu12U2W7FZksgfBY2o7fv imSQDZmKBVCjIVQBGTuPLs9kvzWvRrYz6w+1NySl0oIshaiHoSIeZx4XCZ5+u4kbBD23 xXlUxCQbKDIkqdmWIkV+u7glcN2hYjHSE6GLDIIZVFcFUWWOd5xQ1pzC/57jQGiE7eKU lYlNWJbGCLPOaTspOhMmWCt7NmNG1edMm6YVojr6ZWRKcmYEygZlp0c8tDxLkabGOBFN /nNw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777438096; x=1778042896; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=up6skKqJSQQNZDXlNUFBGctHSex7FpmhenPiP1DwEl0=; b=OvNMc5NifPv1kliLJyduHiuCXX1c6kIVxQ06OtMh+HjnhP3U+5xlSwlbKMNBRS95YE oX8QzAHrZVL8aSlGzzrtfWjecdmq2lxeD5zK0cG++XjM/RgG9oGn7KDNbX+XFpjuDSEi ZBPcssv3yQmSbJy3AjQP8PKI4LYB1vzlPdqJhyMPdFjyGikCLP/FMevKpjcF4JSmVYH3 HCdj8CMLfFZjI8jk3rdndYPhDh43aj91LAWAeRJt+aWkGqeud/RX+aXSrSu7lh3VADY5 3Gjz5ycKIsZRAJUhrkBqzsWTRg4oaA+IhV1o2MMYv7kZ+/KNVLbJ1IgEmKEH97iF273U +sBg== X-Forwarded-Encrypted: i=1; AFNElJ9JcHxhcSWD6EXU6AsuXyZeC9hJ8y+JVhcMHktjaTulichR4MmIFRo4hX/lZhXpgkOVfQBRR5dvg+Pu@nongnu.org X-Gm-Message-State: AOJu0YyDYkPwL/3K7WA3RTtsorTtrqFotcl8reJN+Q4mFLgdBmP6ZOS0 tchu2rEOTye9bvz+Qg2vaIt5ox2k7GTy64wkw6JWrpOoNZf7s/oesxtn X-Gm-Gg: AeBDiesokmrLxOnfqVZzTo3Ciq1SxZ8gaAUzzFq1JBLi8cBj7TxRgbPk09b3HHx/4r3 D2O/8iXWrRu0ga8m9dme6oO1OEQCscSZ2whwRXg7YISBTqZIHbgtqB2CnZp6WD2ROKPNXrvvNbd yxQ+UJlacblFV9T+mLnNJmEzY9413wPLk65koU5vnmXWjdARF654hWukR2rkcH2iPDW5S2p+B77 eoI76YMcXs31ylrqtNyx/KIZdAWT91B6ZxsrJ4xCM75co4EXlB1fuMlBCgu/uUngfzv9th5qEUb 5BLQBMB1xO/h6CgOOotcE61Bt13SSTcIOQ7vOldGTWNC7U6xG+npZ7MvV6DCVsfC5lW3q2s2Zq1 s0NIYbQYECMkXHGATyXLvBlSslHrcI30mG2jf0pkRnT0B6LEoLVNNerjFpy6yXC5COEGD6Vn4sH kQcvajg/ul7RfFfIKooQquSVO17/nKeUEJMNWbIYwXWYXtdCWdl7rs X-Received: by 2002:a17:903:2b0b:b0:2b9:6cde:c34b with SMTP id d9443c01a7336-2b988238921mr15113085ad.15.1777438096502; Tue, 28 Apr 2026 21:48:16 -0700 (PDT) From: alistair23@gmail.com X-Google-Original-From: alistair.francis@wdc.com To: palmer@dabbelt.com, liwei1518@gmail.com, daniel.barboza@oss.qualcomm.com, zhiwei_liu@linux.alibaba.com, chao.liu.zevorn@gmail.com, qemu-riscv@nongnu.org, qemu-devel@nongnu.org Cc: alistair23@gmail.com, Jay Chang , Frank Chang , Nutty Liu , Alistair Francis Subject: [PULL 01/51] hw/riscv/riscv-iommu: Use standard EN_PRI bit for PRI Date: Wed, 29 Apr 2026 14:47:02 +1000 Message-ID: <20260429044752.4176397-2-alistair.francis@wdc.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260429044752.4176397-1-alistair.francis@wdc.com> References: <20260429044752.4176397-1-alistair.francis@wdc.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::533; envelope-from=alistair23@gmail.com; helo=mail-pg1-x533.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.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, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1777438217382158500 Content-Type: text/plain; charset="utf-8" From: Jay Chang Replace the temporary custom extension bit (TC[32]) with the standard EN_PRI bit defined in RISC-V IOMMU specification. Signed-off-by: Jay Chang Reviewed-by: Frank Chang Reviewed-by: Nutty Liu Signed-off-by: Jay Chang Reviewed-by: Alistair Francis Message-ID: <20260325014856.58948-1-jay.chang@sifive.com> Signed-off-by: Alistair Francis --- hw/riscv/riscv-iommu.c | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/hw/riscv/riscv-iommu.c b/hw/riscv/riscv-iommu.c index c3c9ed6469..8476405d0e 100644 --- a/hw/riscv/riscv-iommu.c +++ b/hw/riscv/riscv-iommu.c @@ -1572,11 +1572,8 @@ static int riscv_iommu_translate(RISCVIOMMUState *s,= RISCVIOMMUContext *ctx, riscv_iommu_hpm_incr_ctr(s, ctx, RISCV_IOMMU_HPMEVENT_URQ); =20 iot_cache =3D g_hash_table_ref(s->iot_cache); - /* - * TC[32] is reserved for custom extensions, used here to temporarily - * enable automatic page-request generation for ATS queries. - */ - enable_pri =3D (iotlb->perm =3D=3D IOMMU_NONE) && (ctx->tc & BIT_ULL(3= 2)); + enable_pri =3D (iotlb->perm =3D=3D IOMMU_NONE) && + (ctx->tc & RISCV_IOMMU_DC_TC_EN_PRI); enable_pid =3D (ctx->tc & RISCV_IOMMU_DC_TC_PDTV); =20 /* Check for ATS request. */ --=20 2.53.0 From nobody Sat May 30 19:23:38 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1777438515; cv=none; d=zohomail.com; s=zohoarc; b=LN46eTD9hw+jlf8KXCDluPGMa+bkKFA8mu2VoytPv8tnyy9+5//tWuWOu9a+cb7WgVyvOcBfyZ3yRYZpBV+Cj8AjjmLQwiHr9WCij0ERDDembltkQrb8iCBqy0fkRFjMgx3mtFypS5AVuRv+KUjrqNxc9/Ye9evOmEuKhZmflJk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777438515; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=MEs1tU/ypjD6LA+hJ9/ToOqooccD2fyxXoDqPUC79fA=; b=e7UZVaFOe9+3jdto3MIl9bIzO60zpcL5c8eEQzQ/3lpFC0WzwwZtiG0EeiU1bILiGYbJaFfWU5zAG7R8NDh74Vap5OBEoz6i/cLlQyzROxZw+35qdFT4o8kfB5FKQsRBC1KzegNflNaMbS1fxwTfpLAMWl8hIb/0oHSlkAG3LjQ= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 177743851594257.512438126063216; Tue, 28 Apr 2026 21:55:15 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wHwqc-0000yJ-VQ; Wed, 29 Apr 2026 00:48: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 1wHwqX-0000xk-9M for qemu-devel@nongnu.org; Wed, 29 Apr 2026 00:48:25 -0400 Received: from mail-pl1-x630.google.com ([2607:f8b0:4864:20::630]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wHwqV-0008Ch-7g for qemu-devel@nongnu.org; Wed, 29 Apr 2026 00:48:25 -0400 Received: by mail-pl1-x630.google.com with SMTP id d9443c01a7336-2ad9f316d68so53640885ad.2 for ; Tue, 28 Apr 2026 21:48:22 -0700 (PDT) Received: from toolbx.alistair23.me ([2403:581e:fdf9:0:6209:4521:6813:45b7]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2b988772ae8sm7756145ad.7.2026.04.28.21.48.16 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 28 Apr 2026 21:48:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1777438102; x=1778042902; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=MEs1tU/ypjD6LA+hJ9/ToOqooccD2fyxXoDqPUC79fA=; b=h2hoh6s5JryjTqn13UFhYRIybt7bszq+zFEayquHolnsHp4gpCnZH+tJ7yOkweor00 fRTxITtmt+YHKB6klKIebREX+XokCQEKKCdotlKZt85iE6TQ4B64C3Xf0l6/b9nnVOV4 9zS/u8zrMIhylwdNKbYlLB1ya6jp7oYDZiGMubVw858gG6CnhN2ciFsmN/hQCRtH53De GaujeG3st8SHKxeHB+DmH+3yktYAPgt6Q+RDdD8gQdKSgANTKjXg8bNYWpLMsYO2x6o4 WBmt1GZlRaEpRi2zhCAWhOvs7hdCT/Mtj1mcAcPf6aiM3ysqG9ZvcjubEkiKvc9lTHCo WH/A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777438102; x=1778042902; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=MEs1tU/ypjD6LA+hJ9/ToOqooccD2fyxXoDqPUC79fA=; b=c3mrxkLvHcmAlRCCluOXt2hSA0XOsVNSpYXAzt/pCq6W/turCEmuHUKnxcJMwKn+64 eh90WBfg2Ol3ZUGlMXKwX2KHfNzRW16pOZpT8uI525Lt5p4b1qFRclh0nG1hUW/Qn6Ki BooYzdjrluTsAfMvxosyrCsbOPtd+asDlj6Sn1TXp0MSAhc8HApLmajnolEGKgL8JBAL TgK+0i0f5oAH3F/blHJpPU5m10e00uCzk1dEBDuc6yeCzOXg29eppxs9j0fQN7dXTNNL hSBXe8j7kUEkLpIaDJHLi+DS0PCsTxyAuPFiH8EckhEDTHPGUxvo7CCGQp/v/QGb07xE Cp0A== X-Forwarded-Encrypted: i=1; AFNElJ/xcRjWcv7RcvsZGk/NlzMkTEFuKuRVyKp8PUeSyAG638XjXuClTleIFvGv7V26Q5LQena43kml7AY+@nongnu.org X-Gm-Message-State: AOJu0YzUCrAAHQ8lwi14vD2IQDhUrOXc0J5IP9vS1IY3PPSSaboQlqhO U8oBrgJIrwB1NSzIRw9cSUWk9jtmDkJrlljShVwdlxC9w6xB2DSyDcN7 X-Gm-Gg: AeBDievYqAXe4vbGL0IyAZvzP/2knbtLu2YmJObkHljcGvuMLMwXshS8NVe40FTlPkM pvuSQEE8cg2V6gCj0JdVPjx4Xg2+bkjbmKIbZsTHNVauhvjPiYML1cJhVCLC6oLWWtdJ2fnP+Cj wAGcNzpLABYPZNUluHxqfyY0ACAKQsiD2By2PyBzYPohKWePHCUx85CqfS044TzmdChjhVebtUS PUYEeHrrWQM9x5R2S5P6Y1UYrCSq8rDMTyIzsmV+HkZwQUCKsEXUlByB24MGGKiYgH4niQM5Omi YJ2etpTlZGps9NodgzDCBTL5Tse/pHC7HFGugrT2pIl9azNOHQyvbmT53oN8FtIFo3EvgOh0YP7 dKxGsgtGWYvBP7Om4NF+MJobzzqYDRA2Kyd/FEMmFRu8mQzTqu/OZyNH+4WuEh46O2f++5kHd+5 7hYYxZjJqKkVGQM69kDDSvgG8sjMGYka3ZgpwJ/tlaqw6MmWFq8j8+lyKOMbwqB2Y= X-Received: by 2002:a17:902:f551:b0:2b0:6d56:8d29 with SMTP id d9443c01a7336-2b98744be20mr20500055ad.32.1777438101631; Tue, 28 Apr 2026 21:48:21 -0700 (PDT) From: alistair23@gmail.com X-Google-Original-From: alistair.francis@wdc.com To: palmer@dabbelt.com, liwei1518@gmail.com, daniel.barboza@oss.qualcomm.com, zhiwei_liu@linux.alibaba.com, chao.liu.zevorn@gmail.com, qemu-riscv@nongnu.org, qemu-devel@nongnu.org Cc: alistair23@gmail.com, Emmanuel Blot , James Wainwright , Alistair Francis Subject: [PULL 02/51] util: export CRC32[C] lookup tables Date: Wed, 29 Apr 2026 14:47:03 +1000 Message-ID: <20260429044752.4176397-3-alistair.francis@wdc.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260429044752.4176397-1-alistair.francis@wdc.com> References: <20260429044752.4176397-1-alistair.francis@wdc.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::630; envelope-from=alistair23@gmail.com; helo=mail-pl1-x630.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.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, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1777438516275158500 Content-Type: text/plain; charset="utf-8" From: Emmanuel Blot These are needed for the xlrbr CRC32 instructions which pre-XOR the data into the CRC state before the instruction is executed, making the zlib crc32 and QEMU crc32c implementations inappropriate. https://github.com/riscv/riscv-bitmanip/releases/download/v0.93/bitmanip-0.= 93.pdf Signed-off-by: James Wainwright Reviewed-by: Alistair Francis Message-ID: <20260320134254.217123-2-james.wainwright@lowrisc.org> Signed-off-by: Alistair Francis --- include/qemu/crc32.h | 14 ++++++++ include/qemu/crc32c.h | 1 + util/crc32.c | 81 +++++++++++++++++++++++++++++++++++++++++++ util/crc32c.c | 4 +-- util/meson.build | 1 + 5 files changed, 99 insertions(+), 2 deletions(-) create mode 100644 include/qemu/crc32.h create mode 100644 util/crc32.c diff --git a/include/qemu/crc32.h b/include/qemu/crc32.h new file mode 100644 index 0000000000..9824a8cb5d --- /dev/null +++ b/include/qemu/crc32.h @@ -0,0 +1,14 @@ +/* + * CRC32 Checksum + * + * Copyright (c) 2026 QEMU contributors + * + * SPDX-License-Identifier: GPL-2.0-or-later + */ + +#ifndef QEMU_CRC32_H +#define QEMU_CRC32_H + +extern const uint32_t crc32_table[256]; + +#endif diff --git a/include/qemu/crc32c.h b/include/qemu/crc32c.h index 88b4d2b3b3..3d5ba189ef 100644 --- a/include/qemu/crc32c.h +++ b/include/qemu/crc32c.h @@ -28,6 +28,7 @@ #ifndef QEMU_CRC32C_H #define QEMU_CRC32C_H =20 +extern const uint32_t crc32c_table[256]; =20 uint32_t crc32c(uint32_t crc, const uint8_t *data, unsigned int length); uint32_t iov_crc32c(uint32_t crc, const struct iovec *iov, size_t iov_cnt); diff --git a/util/crc32.c b/util/crc32.c new file mode 100644 index 0000000000..a0f91ff09c --- /dev/null +++ b/util/crc32.c @@ -0,0 +1,81 @@ +/* + * Constants for computing CRC32 checksums + * + * Copyright (c) 2026 QEMU contributors + * + * SPDX-License-Identifier: GPL-2.0-or-later + */ + +#include "qemu/osdep.h" +#include "qemu/crc32.h" + +/* + * CRC-32 table (reversed; polynomial 0xEDB88320). + */ + +const uint32_t crc32_table[256] =3D { + 0x00000000u, 0x77073096u, 0xee0e612cu, 0x990951bau, + 0x076dc419u, 0x706af48fu, 0xe963a535u, 0x9e6495a3u, + 0x0edb8832u, 0x79dcb8a4u, 0xe0d5e91eu, 0x97d2d988u, + 0x09b64c2bu, 0x7eb17cbdu, 0xe7b82d07u, 0x90bf1d91u, + 0x1db71064u, 0x6ab020f2u, 0xf3b97148u, 0x84be41deu, + 0x1adad47du, 0x6ddde4ebu, 0xf4d4b551u, 0x83d385c7u, + 0x136c9856u, 0x646ba8c0u, 0xfd62f97au, 0x8a65c9ecu, + 0x14015c4fu, 0x63066cd9u, 0xfa0f3d63u, 0x8d080df5u, + 0x3b6e20c8u, 0x4c69105eu, 0xd56041e4u, 0xa2677172u, + 0x3c03e4d1u, 0x4b04d447u, 0xd20d85fdu, 0xa50ab56bu, + 0x35b5a8fau, 0x42b2986cu, 0xdbbbc9d6u, 0xacbcf940u, + 0x32d86ce3u, 0x45df5c75u, 0xdcd60dcfu, 0xabd13d59u, + 0x26d930acu, 0x51de003au, 0xc8d75180u, 0xbfd06116u, + 0x21b4f4b5u, 0x56b3c423u, 0xcfba9599u, 0xb8bda50fu, + 0x2802b89eu, 0x5f058808u, 0xc60cd9b2u, 0xb10be924u, + 0x2f6f7c87u, 0x58684c11u, 0xc1611dabu, 0xb6662d3du, + 0x76dc4190u, 0x01db7106u, 0x98d220bcu, 0xefd5102au, + 0x71b18589u, 0x06b6b51fu, 0x9fbfe4a5u, 0xe8b8d433u, + 0x7807c9a2u, 0x0f00f934u, 0x9609a88eu, 0xe10e9818u, + 0x7f6a0dbbu, 0x086d3d2du, 0x91646c97u, 0xe6635c01u, + 0x6b6b51f4u, 0x1c6c6162u, 0x856530d8u, 0xf262004eu, + 0x6c0695edu, 0x1b01a57bu, 0x8208f4c1u, 0xf50fc457u, + 0x65b0d9c6u, 0x12b7e950u, 0x8bbeb8eau, 0xfcb9887cu, + 0x62dd1ddfu, 0x15da2d49u, 0x8cd37cf3u, 0xfbd44c65u, + 0x4db26158u, 0x3ab551ceu, 0xa3bc0074u, 0xd4bb30e2u, + 0x4adfa541u, 0x3dd895d7u, 0xa4d1c46du, 0xd3d6f4fbu, + 0x4369e96au, 0x346ed9fcu, 0xad678846u, 0xda60b8d0u, + 0x44042d73u, 0x33031de5u, 0xaa0a4c5fu, 0xdd0d7cc9u, + 0x5005713cu, 0x270241aau, 0xbe0b1010u, 0xc90c2086u, + 0x5768b525u, 0x206f85b3u, 0xb966d409u, 0xce61e49fu, + 0x5edef90eu, 0x29d9c998u, 0xb0d09822u, 0xc7d7a8b4u, + 0x59b33d17u, 0x2eb40d81u, 0xb7bd5c3bu, 0xc0ba6cadu, + 0xedb88320u, 0x9abfb3b6u, 0x03b6e20cu, 0x74b1d29au, + 0xead54739u, 0x9dd277afu, 0x04db2615u, 0x73dc1683u, + 0xe3630b12u, 0x94643b84u, 0x0d6d6a3eu, 0x7a6a5aa8u, + 0xe40ecf0bu, 0x9309ff9du, 0x0a00ae27u, 0x7d079eb1u, + 0xf00f9344u, 0x8708a3d2u, 0x1e01f268u, 0x6906c2feu, + 0xf762575du, 0x806567cbu, 0x196c3671u, 0x6e6b06e7u, + 0xfed41b76u, 0x89d32be0u, 0x10da7a5au, 0x67dd4accu, + 0xf9b9df6fu, 0x8ebeeff9u, 0x17b7be43u, 0x60b08ed5u, + 0xd6d6a3e8u, 0xa1d1937eu, 0x38d8c2c4u, 0x4fdff252u, + 0xd1bb67f1u, 0xa6bc5767u, 0x3fb506ddu, 0x48b2364bu, + 0xd80d2bdau, 0xaf0a1b4cu, 0x36034af6u, 0x41047a60u, + 0xdf60efc3u, 0xa867df55u, 0x316e8eefu, 0x4669be79u, + 0xcb61b38cu, 0xbc66831au, 0x256fd2a0u, 0x5268e236u, + 0xcc0c7795u, 0xbb0b4703u, 0x220216b9u, 0x5505262fu, + 0xc5ba3bbeu, 0xb2bd0b28u, 0x2bb45a92u, 0x5cb36a04u, + 0xc2d7ffa7u, 0xb5d0cf31u, 0x2cd99e8bu, 0x5bdeae1du, + 0x9b64c2b0u, 0xec63f226u, 0x756aa39cu, 0x026d930au, + 0x9c0906a9u, 0xeb0e363fu, 0x72076785u, 0x05005713u, + 0x95bf4a82u, 0xe2b87a14u, 0x7bb12baeu, 0x0cb61b38u, + 0x92d28e9bu, 0xe5d5be0du, 0x7cdcefb7u, 0x0bdbdf21u, + 0x86d3d2d4u, 0xf1d4e242u, 0x68ddb3f8u, 0x1fda836eu, + 0x81be16cdu, 0xf6b9265bu, 0x6fb077e1u, 0x18b74777u, + 0x88085ae6u, 0xff0f6a70u, 0x66063bcau, 0x11010b5cu, + 0x8f659effu, 0xf862ae69u, 0x616bffd3u, 0x166ccf45u, + 0xa00ae278u, 0xd70dd2eeu, 0x4e048354u, 0x3903b3c2u, + 0xa7672661u, 0xd06016f7u, 0x4969474du, 0x3e6e77dbu, + 0xaed16a4au, 0xd9d65adcu, 0x40df0b66u, 0x37d83bf0u, + 0xa9bcae53u, 0xdebb9ec5u, 0x47b2cf7fu, 0x30b5ffe9u, + 0xbdbdf21cu, 0xcabac28au, 0x53b39330u, 0x24b4a3a6u, + 0xbad03605u, 0xcdd70693u, 0x54de5729u, 0x23d967bfu, + 0xb3667a2eu, 0xc4614ab8u, 0x5d681b02u, 0x2a6f2b94u, + 0xb40bbe37u, 0xc30c8ea1u, 0x5a05df1bu, 0x2d02ef8du +}; diff --git a/util/crc32c.c b/util/crc32c.c index ea7f345de8..f40597f80d 100644 --- a/util/crc32c.c +++ b/util/crc32c.c @@ -1,7 +1,7 @@ /* * Castagnoli CRC32C Checksum Algorithm * - * Polynomial: 0x11EDC6F41 + * Polynomial: 0x1EDC6F41 * * Castagnoli93: Guy Castagnoli and Stefan Braeuer and Martin Herrman * "Optimization of Cyclic Redundancy-Check Codes with 24 @@ -37,7 +37,7 @@ * reflect output bytes =3D true */ =20 -static const uint32_t crc32c_table[256] =3D { +const uint32_t crc32c_table[256] =3D { 0x00000000L, 0xF26B8303L, 0xE13B70F7L, 0x1350F3F4L, 0xC79A971FL, 0x35F1141CL, 0x26A1E7E8L, 0xD4CA64EBL, 0x8AD958CFL, 0x78B2DBCCL, 0x6BE22838L, 0x9989AB3BL, diff --git a/util/meson.build b/util/meson.build index 8bed0267c0..e29cbd948a 100644 --- a/util/meson.build +++ b/util/meson.build @@ -45,6 +45,7 @@ util_ss.add(files('id.c')) util_ss.add(files('qemu-config.c', 'notify.c')) util_ss.add(files('qemu-option.c', 'qemu-progress.c')) util_ss.add(files('keyval.c')) +util_ss.add(files('crc32.c')) util_ss.add(files('crc32c.c')) util_ss.add(files('uuid.c')) util_ss.add(files('getauxval.c')) --=20 2.53.0 From nobody Sat May 30 19:23:38 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1777438238; cv=none; d=zohomail.com; s=zohoarc; b=kndd6BZZA+QJGJi6/hlZgiLlUEjBXrSdg7IRoQ1DeC5deYSKWI+5VD+IBM0XRKWZk67DetV+Vskm5Pv74l65bj5qA5ypgn3CgUe6/dSjghkA8Hq5TRzUiTUfkMxLqUph7y7WfYUQb2SIZSQg1NslCEM7QnSR/iHpPwFdYnOACo4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777438238; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=i8hyu7swjhrsU/gJUfb9mmvgbvEP5e+2AQ4x55Hc3XY=; b=ZMqotrl22ObHF/4CvGmJTuvg/Mx/PZC4fTs74FNsTkQstAXP8XKD5kTu1WSwT2e2PE9TmA4QtltGnkzuzwPTU6KUvYx5gKkqg4TOkfnwRd8zBJQcSN4npxjidWjqq0iZRAXQqxkQuZOEjVIxF2jbUQqenPdHugnp8yR9KDhV0X8= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1777438238201572.5230174702235; Tue, 28 Apr 2026 21:50:38 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wHwqe-0000z4-Pa; Wed, 29 Apr 2026 00:48:32 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wHwqc-0000yP-LY for qemu-devel@nongnu.org; Wed, 29 Apr 2026 00:48:30 -0400 Received: from mail-pg1-x536.google.com ([2607:f8b0:4864:20::536]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wHwqa-0008EM-F2 for qemu-devel@nongnu.org; Wed, 29 Apr 2026 00:48:30 -0400 Received: by mail-pg1-x536.google.com with SMTP id 41be03b00d2f7-c797d5ad36bso4184962a12.2 for ; Tue, 28 Apr 2026 21:48:28 -0700 (PDT) Received: from toolbx.alistair23.me ([2403:581e:fdf9:0:6209:4521:6813:45b7]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2b988772ae8sm7756145ad.7.2026.04.28.21.48.22 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 28 Apr 2026 21:48:26 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1777438107; x=1778042907; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=i8hyu7swjhrsU/gJUfb9mmvgbvEP5e+2AQ4x55Hc3XY=; b=rDbdKA3G2K6k3CkD6mdHYiN4nbWGvS3xX70cqByBneQ4pATh1/wgaOc7Guc678G9BK ngOhZVOZeZPJ+qrOqRZOPSzl250ugKmG4uIzWmSm0VFWs174n5d9CE/C6Yx9bgOranou yV1CKNFUAl/86ekJ1YCzo2A3HsTrTGZdWrIM90EdM3aYhfI/IHNqn1nDvp73/lbbGIhq A6FaAzynhix0oJBLQL88FhO8xRjTZMyosjf1fXEm/H5TP7VmJj7AH13GQbz+mujyLJ3S aXleuh1hcSZb+vEi03NXLU0m+8g6Kurg78hMyHpdFotd9ZZ1a7U9qQOkkeAJGWmMFmMX Qt9Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777438107; x=1778042907; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=i8hyu7swjhrsU/gJUfb9mmvgbvEP5e+2AQ4x55Hc3XY=; b=iECjbFBVRfI+LiRajRUOSRfxUr6GpmP+EhAv/ty45Wo5oHGUpSTwq95ZY/X4CnHcLv rhNo6AOdZh/RsyD+reFMt8kCsMKe7ITQQUwqfINl6ORn5w6H9c+JcH/cdVvO9yYEt8NQ lhZ9pnolOMzb032031k+QmsuJ/WXzjF1/yEFP79+e2yy+zqTZRP4yTNf3ndXj+T2eGdQ SffWb/4wFfgxR7V1lD1oilB8z4yLWZo9SgmpO1u+1Xc2MbG5dDb3rd/cC4fe4yOsWVET ftImtC7RmLBR/wFIU8OtjAIaQ5xRNeqFmukrG9bgD/VqmknXmTE5M/EC6BaeJprJDbvw d6LA== X-Forwarded-Encrypted: i=1; AFNElJ9hVVeB9uGXEjf+23IONuaOMy3+1z4UWK56n8XITTP+yvdIb8uq92ItfgnBb3y8M8LeEI99Ra/tJgbr@nongnu.org X-Gm-Message-State: AOJu0YwA4m520VJEO7bfWO7ampW6XLvTEodCQZ56OzbS5/K4soEPDtD+ d+NlWr1ngW6roBiUChzbzDP9wM77KZDZqypJPW5ZIEwOxAmjpLynPOxL X-Gm-Gg: AeBDieue92n7SpDXLoDfZNQpeW3qumUjh5dNx/aK1e6W7UZFqC1KUtlhS6hh7X7h5gx CAzKcAapieVscoj9ti5k6f+9d/5XIipJiLTLHzYh0vC5fsJp6cpv1P+Ztfm5hZ7MsAGhy1Hcz78 NhltzfIPw5+bwE6qrO4vZWezx1LIyz0nJpXEydqoV3vBE5T8HTxzub5BscdnNss7QzhBTnyccBX 6vqBKPdg1ClHWipoQ/pqdv+mPOX1zTX6N+ofd108eMb+mpsETURnwmC8aj2uAstVq/v94SX9Ib+ LXPA46pZYjEdtx4qPalUq8qn8FMu10Pu2ZrSZO5IXTo8O7pTgy1qz7HoT64nCyA0/5aQ3Z1XfNd tIt4xNKRhTyX0ZLtRMz96xFF6lJ6ldbMvbenEBFm8IeDynee5IsGUAolY7V8EFrauFNNb1h6+lA K6Pr3VC95pd6UH7JTWh9J0FHYffYM/nDTOq1StiaMr4espTuQgwtpj X-Received: by 2002:a17:902:bd43:b0:2b2:50bd:83ac with SMTP id d9443c01a7336-2b9874996bamr16263165ad.40.1777438106952; Tue, 28 Apr 2026 21:48:26 -0700 (PDT) From: alistair23@gmail.com X-Google-Original-From: alistair.francis@wdc.com To: palmer@dabbelt.com, liwei1518@gmail.com, daniel.barboza@oss.qualcomm.com, zhiwei_liu@linux.alibaba.com, chao.liu.zevorn@gmail.com, qemu-riscv@nongnu.org, qemu-devel@nongnu.org Cc: alistair23@gmail.com, Emmanuel Blot , James Wainwright , Alistair Francis Subject: [PULL 03/51] target/riscv: add draft RISC-V Zbr ext as xbr0p93 Date: Wed, 29 Apr 2026 14:47:04 +1000 Message-ID: <20260429044752.4176397-4-alistair.francis@wdc.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260429044752.4176397-1-alistair.francis@wdc.com> References: <20260429044752.4176397-1-alistair.francis@wdc.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::536; envelope-from=alistair23@gmail.com; helo=mail-pg1-x536.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.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, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable 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 @gmail.com) X-ZM-MESSAGEID: 1777438239470158500 Content-Type: text/plain; charset="utf-8" From: Emmanuel Blot This extension was not ratified with the Zb[abcs] bitmanip extensions. This is the latest draft version (0.93) as implemented by the Ibex core. These instructions are in the reserved encoding space but have not been ratified and could conflict with future ratified instructions. For this reason they are added as a vendor extension to support Ibex's impl. Signed-off-by: James Wainwright Reviewed-by: Alistair Francis Message-ID: <20260320134254.217123-3-james.wainwright@lowrisc.org> Signed-off-by: Alistair Francis --- MAINTAINERS | 3 ++ target/riscv/cpu_cfg.h | 1 + target/riscv/helper.h | 2 + target/riscv/cpu_cfg_fields.h.inc | 1 + target/riscv/xlrbr.decode | 30 +++++++++++ target/riscv/bitmanip_helper.c | 20 +++++++ target/riscv/cpu.c | 4 +- target/riscv/translate.c | 3 ++ target/riscv/insn_trans/trans_xlrbr.c.inc | 45 ++++++++++++++++ target/riscv/meson.build | 1 + tests/tcg/riscv64/Makefile.softmmu-target | 5 ++ tests/tcg/riscv64/test-crc32.S | 64 +++++++++++++++++++++++ 12 files changed, 178 insertions(+), 1 deletion(-) create mode 100644 target/riscv/xlrbr.decode create mode 100644 target/riscv/insn_trans/trans_xlrbr.c.inc create mode 100644 tests/tcg/riscv64/test-crc32.S diff --git a/MAINTAINERS b/MAINTAINERS index 49f9bce818..f7e835cf55 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -1729,6 +1729,9 @@ F: hw/riscv/opentitan.c F: hw/*/ibex_*.c F: include/hw/riscv/opentitan.h F: include/hw/*/ibex_*.h +F: target/riscv/insn_trans/trans_xthead.c.inc +F: target/riscv/xlrbr.decode +F: tests/tcg/riscv64/test-crc32.S =20 Microchip PolarFire SoC Icicle Kit L: qemu-riscv@nongnu.org diff --git a/target/riscv/cpu_cfg.h b/target/riscv/cpu_cfg.h index cd1cba797c..211d0708ba 100644 --- a/target/riscv/cpu_cfg.h +++ b/target/riscv/cpu_cfg.h @@ -69,5 +69,6 @@ MATERIALISE_EXT_PREDICATE(xtheadmemidx) MATERIALISE_EXT_PREDICATE(xtheadmempair) MATERIALISE_EXT_PREDICATE(xtheadsync) MATERIALISE_EXT_PREDICATE(XVentanaCondOps) +MATERIALISE_EXT_PREDICATE(xlrbr); =20 #endif diff --git a/target/riscv/helper.h b/target/riscv/helper.h index b785456ee0..7722c590bd 100644 --- a/target/riscv/helper.h +++ b/target/riscv/helper.h @@ -84,6 +84,8 @@ DEF_HELPER_FLAGS_1(unzip, TCG_CALL_NO_RWG_SE, tl, tl) DEF_HELPER_FLAGS_1(zip, TCG_CALL_NO_RWG_SE, tl, tl) DEF_HELPER_FLAGS_2(xperm4, TCG_CALL_NO_RWG_SE, tl, tl, tl) DEF_HELPER_FLAGS_2(xperm8, TCG_CALL_NO_RWG_SE, tl, tl, tl) +DEF_HELPER_FLAGS_2(crc32, TCG_CALL_NO_RWG_SE, tl, tl, tl) +DEF_HELPER_FLAGS_2(crc32c, TCG_CALL_NO_RWG_SE, tl, tl, tl) =20 /* Floating Point - Half Precision */ DEF_HELPER_FLAGS_3(fadd_h, TCG_CALL_NO_RWG, i64, env, i64, i64) diff --git a/target/riscv/cpu_cfg_fields.h.inc b/target/riscv/cpu_cfg_field= s.h.inc index cd1a5ec56b..d4b7c880d4 100644 --- a/target/riscv/cpu_cfg_fields.h.inc +++ b/target/riscv/cpu_cfg_fields.h.inc @@ -154,6 +154,7 @@ BOOL_FIELD(ext_XVentanaCondOps) BOOL_FIELD(ext_xmipscbop) BOOL_FIELD(ext_xmipscmov) BOOL_FIELD(ext_xmipslsp) +BOOL_FIELD(ext_xlrbr) =20 BOOL_FIELD(mmu) BOOL_FIELD(pmp) diff --git a/target/riscv/xlrbr.decode b/target/riscv/xlrbr.decode new file mode 100644 index 0000000000..893ce6ec71 --- /dev/null +++ b/target/riscv/xlrbr.decode @@ -0,0 +1,30 @@ +# +# Translation routines for the instructions of the xlrbr ISA extension +# (matching the draft encodings in the standard reserved encoding space fo= r the +# unratified Zbr CRC32 bitmanip extension version 0.93). +# +# Copyright (c) 2026 Rivos Inc. +# +# SPDX-License-Identifier: GPL-2.0-or-later + +# Fields: +%rs1 15:5 +%rd 7:5 + +# Argument sets: +&r2 rd rs1 !extern + +# Formats 32: +@r2 ....... ..... ..... ... ..... ....... &r2 %rs1 %rd + +# *** RV32 xlrbr extension *** +crc32_b 0110000 10000 ..... 001 ..... 0010011 @r2 +crc32_h 0110000 10001 ..... 001 ..... 0010011 @r2 +crc32_w 0110000 10010 ..... 001 ..... 0010011 @r2 +crc32c_b 0110000 11000 ..... 001 ..... 0010011 @r2 +crc32c_h 0110000 11001 ..... 001 ..... 0010011 @r2 +crc32c_w 0110000 11010 ..... 001 ..... 0010011 @r2 + +# *** RV64 xlrbr extension (in addition to RV32) *** +crc32_d 0110000 10011 ..... 001 ..... 0010011 @r2 +crc32c_d 0110000 11011 ..... 001 ..... 0010011 @r2 diff --git a/target/riscv/bitmanip_helper.c b/target/riscv/bitmanip_helper.c index e9c8d7f778..1156a87dd3 100644 --- a/target/riscv/bitmanip_helper.c +++ b/target/riscv/bitmanip_helper.c @@ -23,6 +23,8 @@ #include "exec/target_long.h" #include "exec/helper-proto.h" #include "tcg/tcg.h" +#include "qemu/crc32.h" +#include "qemu/crc32c.h" =20 target_ulong HELPER(clmul)(target_ulong rs1, target_ulong rs2) { @@ -129,3 +131,21 @@ target_ulong HELPER(xperm8)(target_ulong rs1, target_u= long rs2) { return do_xperm(rs1, rs2, 3); } + +target_ulong HELPER(crc32)(target_ulong rs1, target_ulong sz) +{ + for (target_ulong i =3D 0; i < sz; i++) { + rs1 =3D crc32_table[rs1 & 0xFF] ^ (rs1 >> 8); + } + + return rs1; +} + +target_ulong HELPER(crc32c)(target_ulong rs1, target_ulong sz) +{ + for (target_ulong i =3D 0; i < sz; i++) { + rs1 =3D crc32c_table[rs1 & 0xFF] ^ (rs1 >> 8); + } + + return rs1; +} diff --git a/target/riscv/cpu.c b/target/riscv/cpu.c index 8ac935ac06..03a1bb075a 100644 --- a/target/riscv/cpu.c +++ b/target/riscv/cpu.c @@ -1373,6 +1373,7 @@ const RISCVCPUMultiExtConfig riscv_cpu_vendor_exts[] = =3D { MULTI_EXT_CFG_BOOL("xmipscbop", ext_xmipscbop, false), MULTI_EXT_CFG_BOOL("xmipscmov", ext_xmipscmov, false), MULTI_EXT_CFG_BOOL("xmipslsp", ext_xmipslsp, false), + MULTI_EXT_CFG_BOOL("xlrbr", ext_xlrbr, false), =20 { }, }; @@ -3059,7 +3060,8 @@ static const TypeInfo riscv_cpu_type_infos[] =3D { .cfg.ext_zba =3D true, .cfg.ext_zbb =3D true, .cfg.ext_zbc =3D true, - .cfg.ext_zbs =3D true + .cfg.ext_zbs =3D true, + .cfg.ext_xlrbr =3D true ), =20 DEFINE_RISCV_CPU(TYPE_RISCV_CPU_SIFIVE_E31, TYPE_RISCV_CPU_SIFIVE_E, diff --git a/target/riscv/translate.c b/target/riscv/translate.c index f42e53df88..711080f3fd 100644 --- a/target/riscv/translate.c +++ b/target/riscv/translate.c @@ -1213,9 +1213,11 @@ static uint32_t opcode_at(DisasContextBase *dcbase, = target_ulong pc) #include "insn_trans/trans_rvbf16.c.inc" #include "decode-xthead.c.inc" #include "decode-xmips.c.inc" +#include "decode-xlrbr.c.inc" #include "insn_trans/trans_xthead.c.inc" #include "insn_trans/trans_xventanacondops.c.inc" #include "insn_trans/trans_xmips.c.inc" +#include "insn_trans/trans_xlrbr.c.inc" =20 /* Include the auto-generated decoder for 16 bit insn */ #include "decode-insn16.c.inc" @@ -1235,6 +1237,7 @@ const RISCVDecoder decoder_table[] =3D { { has_xmips_p, decode_xmips}, { has_xthead_p, decode_xthead}, { has_XVentanaCondOps_p, decode_XVentanaCodeOps}, + { has_xlrbr_p, decode_xlrbr}, }; =20 const size_t decoder_table_size =3D ARRAY_SIZE(decoder_table); diff --git a/target/riscv/insn_trans/trans_xlrbr.c.inc b/target/riscv/insn_= trans/trans_xlrbr.c.inc new file mode 100644 index 0000000000..01da2b6ce1 --- /dev/null +++ b/target/riscv/insn_trans/trans_xlrbr.c.inc @@ -0,0 +1,45 @@ +/* + * RISC-V translation routines for xlrbr matching the unratified Zbr CRC32 + * bitmanip extension v0.93. + * + * Copyright (c) 2026 Rivos Inc. + * + * SPDX-License-Identifier: GPL-2.0-or-later + */ + +#define REQUIRE_XLRBR(ctx) do { \ + if (!ctx->cfg_ptr->ext_xlrbr) { \ + return false; \ + } \ +} while (0) + +static bool gen_crc(DisasContext *ctx, arg_r2 *a, + void (*func)(TCGv, TCGv, TCGv), TCGv tsz) +{ + REQUIRE_XLRBR(ctx); + TCGv dest =3D dest_gpr(ctx, a->rd); + TCGv src1 =3D get_gpr(ctx, a->rs1, EXT_NONE); + + func(dest, src1, tsz); + gen_set_gpr(ctx, a->rd, dest); + + return true; +} + +#define TRANS_CRC32(NAME, SIZE) \ + static bool trans_crc32_##NAME(DisasContext *ctx, arg_r2 *a) \ + { if (SIZE =3D=3D 8) { REQUIRE_64BIT(ctx); }; \ + return gen_crc(ctx, a, gen_helper_crc32, tcg_constant_tl(SIZE)); } +#define TRANS_CRC32C(NAME, SIZE) \ + static bool trans_crc32c_##NAME(DisasContext *ctx, arg_r2 *a) \ + { if (SIZE =3D=3D 8) { REQUIRE_64BIT(ctx); }; \ + return gen_crc(ctx, a, gen_helper_crc32c, tcg_constant_tl(SIZE)); } + +TRANS_CRC32(b, 1); +TRANS_CRC32(h, 2); +TRANS_CRC32(w, 4); +TRANS_CRC32(d, 8); +TRANS_CRC32C(b, 1); +TRANS_CRC32C(h, 2); +TRANS_CRC32C(w, 4); +TRANS_CRC32C(d, 8); diff --git a/target/riscv/meson.build b/target/riscv/meson.build index 3842c7c1a8..79f36abd63 100644 --- a/target/riscv/meson.build +++ b/target/riscv/meson.build @@ -5,6 +5,7 @@ gen =3D [ decodetree.process('xthead.decode', extra_args: '--static-decode=3Ddecod= e_xthead'), decodetree.process('XVentanaCondOps.decode', extra_args: '--static-decod= e=3Ddecode_XVentanaCodeOps'), decodetree.process('xmips.decode', extra_args: '--static-decode=3Ddecode= _xmips'), + decodetree.process('xlrbr.decode', extra_args: '--static-decode=3Ddecode= _xlrbr'), ] =20 riscv_ss =3D ss.source_set() diff --git a/tests/tcg/riscv64/Makefile.softmmu-target b/tests/tcg/riscv64/= Makefile.softmmu-target index eb1ce6504a..82be8a2c91 100644 --- a/tests/tcg/riscv64/Makefile.softmmu-target +++ b/tests/tcg/riscv64/Makefile.softmmu-target @@ -36,5 +36,10 @@ run-plugin-interruptedmemory: interruptedmemory $(QEMU) -plugin ../plugins/libdiscons.so -d plugin -D $<.pout \ $(QEMU_OPTS)$<) =20 +EXTRA_RUNS +=3D run-test-crc32 +comma:=3D , +run-test-crc32: test-crc32 + $(call run-test, $<, $(QEMU) -cpu rv64$(comma)xlrbr=3Dtrue $(QEMU_OPTS)$<) + # We don't currently support the multiarch system tests undefine MULTIARCH_TESTS diff --git a/tests/tcg/riscv64/test-crc32.S b/tests/tcg/riscv64/test-crc32.S new file mode 100644 index 0000000000..70d70b16a9 --- /dev/null +++ b/tests/tcg/riscv64/test-crc32.S @@ -0,0 +1,64 @@ +/* + * Copyright (c) 2026 lowRISC CIC + * SPDX-License-Identifier: GPL-2.0-or-later + */ + +#define crc32(op, rd, rs1) .insn r 19, 1, 48, rd, rs1, x##op + +#define crc32_b(rd, rs1) crc32(16, rd, rs1) +#define crc32_h(rd, rs1) crc32(17, rd, rs1) +#define crc32_w(rd, rs1) crc32(18, rd, rs1) +#define crc32_d(rd, rs1) crc32(19, rd, rs1) +#define crc32c_b(rd, rs1) crc32(24, rd, rs1) +#define crc32c_h(rd, rs1) crc32(25, rd, rs1) +#define crc32c_w(rd, rs1) crc32(26, rd, rs1) +#define crc32c_d(rd, rs1) crc32(27, rd, rs1) + + .option norvc + + .text + .globl _start +_start: + lla t0, trap + csrw mtvec, t0 + + li t0, 0x34e24a2cd65650d4 + + crc32_b (t0, t0) + crc32_h (t0, t0) + crc32_w (t0, t0) + crc32_d (t0, t0) + crc32c_b (t0, t0) + crc32c_h (t0, t0) + crc32c_w (t0, t0) + crc32c_d (t0, t0) + + li t1, 0x68167e78 + + li a0, 0 + beq t0, t1, _exit +fail: + li a0, 1 +_exit: + lla a1, semiargs + li t0, 0x20026 # ADP_Stopped_ApplicationExit + sd t0, 0(a1) + sd a0, 8(a1) + li a0, 0x20 # TARGET_SYS_EXIT_EXTENDED + + # Semihosting call sequence + .balign 16 + slli zero, zero, 0x1f + ebreak + srai zero, zero, 0x7 + j . + + .data + .balign 16 +semiargs: + .space 16 + +trap: + csrr t0, mepc + addi t0, t0, 4 + mret --=20 2.53.0 From nobody Sat May 30 19:23:38 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1777438138; cv=none; d=zohomail.com; s=zohoarc; b=FSUeldCV6bCuKHW/mEpcKCXVhINzS+8NJ/qpPSydgimwk2QEX5g2ro1JXlzz2D264C+/F+PSX0MuW2RMXRJwdCAUG+pfuc1ZAFf8nfdM2XMJojJglG+FW1TiNY4Mc1GofnNHPAVmFM+E+/xlZKs699mpQ20H6zbrAm1kzH2+eVo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777438138; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=W3qddBomdwVPgXcvkN5q95ic1E8DF7L9b2VLQtgxH/4=; b=kea35vIHjpNNPkbuLQrC1zw2qoi5HD2na7tnqjPRBllFBHVUkGk07T9pyGnWrhtDHCh7SUXDzB86CLkN0OM5hyPEjWE7/9gSROQ5j12gObEGCQ/hk+GKUCB3RkHAeK1YZXnLleSs2stuZsxD7ZBJmniV5604+leiaMeXi1n8z7Q= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1777438138490501.6551972204775; Tue, 28 Apr 2026 21:48:58 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wHwqk-00010I-TU; Wed, 29 Apr 2026 00:48: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 1wHwqi-0000zv-Ld for qemu-devel@nongnu.org; Wed, 29 Apr 2026 00:48:38 -0400 Received: from mail-pl1-x633.google.com ([2607:f8b0:4864:20::633]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wHwqf-0008FQ-Og for qemu-devel@nongnu.org; Wed, 29 Apr 2026 00:48:36 -0400 Received: by mail-pl1-x633.google.com with SMTP id d9443c01a7336-2b25cf1b5f0so66518875ad.3 for ; Tue, 28 Apr 2026 21:48:33 -0700 (PDT) Received: from toolbx.alistair23.me ([2403:581e:fdf9:0:6209:4521:6813:45b7]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2b988772ae8sm7756145ad.7.2026.04.28.21.48.27 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 28 Apr 2026 21:48:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1777438112; x=1778042912; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=W3qddBomdwVPgXcvkN5q95ic1E8DF7L9b2VLQtgxH/4=; b=gWUIgn2hGr+cIsN40PJdFOdieVnjuMR9O8+8/sDRdE8dpUiHDRgkgK2nnRXhA1PNNh 8VGKdPlSXxTuuRHA5YlpQMgD1Lu9ntgcZ77nIz7pLApAU9GYwvqdtR+/nA38ppso0LPw PFJw6lt09HzBKpKTdruca86Zby0Kft+IPenYCPF9RUjdrNIJflcmOcXjJIlhJwfFaykQ 41JZruUtHdmJrnOsMkyGDhsETbsgPBP5EVX73eBqxI5238QXxTM07wfbO5x2Lu+BQg8w ia+4BpkaQLT2dssMBj0O/rFEKv0P3tEQQg1dpSCrsJ4YSS/jW+NuGSDXlIYbsURZGXoM hJYg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777438112; x=1778042912; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=W3qddBomdwVPgXcvkN5q95ic1E8DF7L9b2VLQtgxH/4=; b=SaA6lagaDTX7fC1VV2m2UnI9VhcSzEzIzeMZD5Zpl2cA5wcFTtWRbhz9mbsS/h/FBL /jwSBYFKcMwZacaq4MAnDklHsyAn8g5qI9nBQg+nLnoe7VOZD1n0yDLSh2oaCjwvZz2l hhB1pI7w97ZUmDzo9+VVHvTnFSoUCb5f/fGVm5nWkQUhIJdbyWEQ9vZ5DxSugt982s/G ljsvIUmCKZ3bd2WqjTWH5INHXwh606pToJ3VIsTHkzm5s3gvlAG7eilxgOWPeZ9RlTyj vreY3Wth5ZgziEgHU5b9p1CphAcGhbfN9V0pXfuj1+RLf1yeR1b/lxLRVlgL+jqKsaUD /C5A== X-Forwarded-Encrypted: i=1; AFNElJ9m6ZhcCKPlzPsIHG8fEgxaXwzgUBPTpn2ekQ6R55l7l9aHPmx1iQGfrjKZg82kdFJB7dPgQAyqLtaK@nongnu.org X-Gm-Message-State: AOJu0YzOnmLgdgJrWIpoKe9TY1EtZ63ZhfLXrIA0Su/ZQm28onF5GzEf idiwefGNnj+B4/Vs5jXoJLjzqfwI7CcNmF8/UtqUEIiR0NpFZGCo4hCV X-Gm-Gg: AeBDieuf9YtYbMCAbVfWAE9YIoqeadenQQGIsnIvVHoy151xk62ppWPkU2EkdkJtK1P qAc3YMxPhUQMX+we5u6JorLCUav9ENKg4n7Hx0dxvFNBZr6IN3Z7Skj5xqs83t8EEjHRrQ5KloU KDuuCv5ERsVlW+MrTjB6Q30+pN9DQEiUUJ0Y6XpJ+JRAvtR4NwwHzR1V+aBIjqI+hHr1RBpR1ur 6LzVuyoLo9W0M/hW5h0lqxxRi/EsGvmfxWpw7H7iP2OSTO3VfTCMjJOQKPFblWLuX+oLNTs/f7M 6D5LdvXasxJwo1bQsiph+KMg/mV/dhOxPVy7HEYpY7DU1dOUxO+J+4TT6miV6lW68QAtsY1e4P+ MbA7MRbuh7VYPrLR+MmKAqRfkg1mNDPnQAj3d7JQ87TdnaUNnpELLhXdIi6/Cna24yxXVH8b/YG GemOU10FwLITuawO9mLe7pbMyznGIKk793YxeA2hfrYxc6byScWp4Q X-Received: by 2002:a17:902:f08d:b0:2ae:46b9:c653 with SMTP id d9443c01a7336-2b98744d1bdmr14639225ad.33.1777438112103; Tue, 28 Apr 2026 21:48:32 -0700 (PDT) From: alistair23@gmail.com X-Google-Original-From: alistair.francis@wdc.com To: palmer@dabbelt.com, liwei1518@gmail.com, daniel.barboza@oss.qualcomm.com, zhiwei_liu@linux.alibaba.com, chao.liu.zevorn@gmail.com, qemu-riscv@nongnu.org, qemu-devel@nongnu.org Cc: alistair23@gmail.com, Emmanuel Blot , James Wainwright , Alistair Francis Subject: [PULL 04/51] disas: diassemble RISC-V xlrbr (crc32) instructions Date: Wed, 29 Apr 2026 14:47:05 +1000 Message-ID: <20260429044752.4176397-5-alistair.francis@wdc.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260429044752.4176397-1-alistair.francis@wdc.com> References: <20260429044752.4176397-1-alistair.francis@wdc.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::633; envelope-from=alistair23@gmail.com; helo=mail-pl1-x633.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.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, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable 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 @gmail.com) X-ZM-MESSAGEID: 1777438140851154100 Content-Type: text/plain; charset="utf-8" From: Emmanuel Blot Placed in a separate file as a vendor extension. Signed-off-by: James Wainwright Reviewed-by: Alistair Francis Message-ID: <20260320134254.217123-4-james.wainwright@lowrisc.org> Signed-off-by: Alistair Francis --- MAINTAINERS | 2 +- disas/riscv-xlrbr.h | 19 +++++++++++ disas/riscv-xlrbr.c | 79 +++++++++++++++++++++++++++++++++++++++++++++ disas/riscv.c | 2 ++ disas/meson.build | 3 +- 5 files changed, 103 insertions(+), 2 deletions(-) create mode 100644 disas/riscv-xlrbr.h create mode 100644 disas/riscv-xlrbr.c diff --git a/MAINTAINERS b/MAINTAINERS index f7e835cf55..e41f0eb92c 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -4135,7 +4135,7 @@ R: Daniel Henrique Barboza L: qemu-riscv@nongnu.org S: Maintained F: tcg/riscv64/ -F: disas/riscv.[ch] +F: disas/riscv*.[ch] =20 S390 TCG target M: Richard Henderson diff --git a/disas/riscv-xlrbr.h b/disas/riscv-xlrbr.h new file mode 100644 index 0000000000..939a69ea6d --- /dev/null +++ b/disas/riscv-xlrbr.h @@ -0,0 +1,19 @@ +/* + * QEMU RISC-V Disassembler for xlrbr matching the unratified Zbr CRC32 + * bitmanip extension v0.93. + * + * Copyright (c) 2023 Rivos Inc + * + * SPDX-License-Identifier: GPL-2.0-or-later + */ + +#ifndef DISAS_RISCV_XLRBR_H +#define DISAS_RISCV_XLRBR_H + +#include "disas/riscv.h" + +extern const rv_opcode_data rv_xlrbr_opcode_data[]; + +void decode_xlrbr(rv_decode *, rv_isa); + +#endif /* DISAS_RISCV_XLRBR_H */ diff --git a/disas/riscv-xlrbr.c b/disas/riscv-xlrbr.c new file mode 100644 index 0000000000..57cb434523 --- /dev/null +++ b/disas/riscv-xlrbr.c @@ -0,0 +1,79 @@ +/* + * QEMU RISC-V Disassembler for xlrbr matching the unratified Zbr CRC32 + * bitmanip extension v0.93. + * + * Copyright (c) 2023 Rivos Inc + * + * SPDX-License-Identifier: GPL-2.0-or-later + */ + +#include "qemu/osdep.h" + +#include "disas/riscv.h" +#include "disas/riscv-xlrbr.h" + +typedef enum { + /* 0 is reserved for rv_op_illegal. */ + rv_op_crc32_b =3D 1, + rv_op_crc32_h =3D 2, + rv_op_crc32_w =3D 3, + rv_op_crc32_d =3D 4, + rv_op_crc32c_b =3D 5, + rv_op_crc32c_h =3D 6, + rv_op_crc32c_w =3D 7, + rv_op_crc32c_d =3D 8, +} rv_xlrbr_op; + +const rv_opcode_data rv_xlrbr_opcode_data[] =3D { + { "illegal", rv_codec_illegal, rv_fmt_none, NULL, 0, 0, 0 }, + { "crc32.b", rv_codec_r, rv_fmt_rd_rs1, NULL, 0, 0, 0 }, + { "crc32.h", rv_codec_r, rv_fmt_rd_rs1, NULL, 0, 0, 0 }, + { "crc32.w", rv_codec_r, rv_fmt_rd_rs1, NULL, 0, 0, 0 }, + { "crc32.d", rv_codec_r, rv_fmt_rd_rs1, NULL, 0, 0, 0 }, + { "crc32c.b", rv_codec_r, rv_fmt_rd_rs1, NULL, 0, 0, 0 }, + { "crc32c.h", rv_codec_r, rv_fmt_rd_rs1, NULL, 0, 0, 0 }, + { "crc32c.w", rv_codec_r, rv_fmt_rd_rs1, NULL, 0, 0, 0 }, + { "crc32c.d", rv_codec_r, rv_fmt_rd_rs1, NULL, 0, 0, 0 }, +}; + +void decode_xlrbr(rv_decode *dec, rv_isa isa) +{ + rv_inst inst =3D dec->inst; + rv_opcode op =3D rv_op_illegal; + + switch ((inst >> 0) & 0b1111111) { + case 0b0010011: + switch ((inst >> 12) & 0b111) { + case 0b001: + switch ((inst >> 20 & 0b111111111111)) { + case 0b011000010000: + op =3D rv_op_crc32_b; + break; + case 0b011000010001: + op =3D rv_op_crc32_h; + break; + case 0b011000010010: + op =3D rv_op_crc32_w; + break; + case 0b011000010011: + op =3D rv_op_crc32_d; + break; + case 0b011000011000: + op =3D rv_op_crc32c_b; + break; + case 0b011000011001: + op =3D rv_op_crc32c_h; + break; + case 0b011000011010: + op =3D rv_op_crc32c_w; + break; + case 0b011000011011: + op =3D rv_op_crc32c_d; + break; + } + break; + } + break; + } + dec->op =3D op; +} diff --git a/disas/riscv.c b/disas/riscv.c index 6f2667482d..d416a4d6b3 100644 --- a/disas/riscv.c +++ b/disas/riscv.c @@ -26,6 +26,7 @@ /* Vendor extensions */ #include "disas/riscv-xthead.h" #include "disas/riscv-xventana.h" +#include "disas/riscv-xlrbr.h" =20 typedef enum { /* 0 is reserved for rv_op_illegal. */ @@ -5434,6 +5435,7 @@ static GString *disasm_inst(rv_isa isa, uint64_t pc, = rv_inst inst, { has_xtheadmempair_p, xthead_opcode_data, decode_xtheadmempair }, { has_xtheadsync_p, xthead_opcode_data, decode_xtheadsync }, { has_XVentanaCondOps_p, ventana_opcode_data, decode_xventanacondo= ps }, + { has_xlrbr_p, rv_xlrbr_opcode_data, decode_xlrbr }, }; =20 for (size_t i =3D 0; i < ARRAY_SIZE(decoders); i++) { diff --git a/disas/meson.build b/disas/meson.build index bbfa119783..42977a1f74 100644 --- a/disas/meson.build +++ b/disas/meson.build @@ -7,7 +7,8 @@ common_ss.add(when: 'CONFIG_MIPS_DIS', if_true: files('mips= .c', 'nanomips.c')) common_ss.add(when: 'CONFIG_RISCV_DIS', if_true: files( 'riscv.c', 'riscv-xthead.c', - 'riscv-xventana.c' + 'riscv-xventana.c', + 'riscv-xlrbr.c' )) common_ss.add(when: 'CONFIG_SH4_DIS', if_true: files('sh4.c')) common_ss.add(when: 'CONFIG_SPARC_DIS', if_true: files('sparc.c')) --=20 2.53.0 From nobody Sat May 30 19:23:38 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1777438465; cv=none; d=zohomail.com; s=zohoarc; b=Q0NvBwRr4C7Lcv8UZifK5Wwx+N10J+Z7XspoACopL8nFZVVsMCgxgUP0+9i76t7pGCrK9ClLcxUy7VmnDdSpnkWAS7M6KqlIjq2T0+5aePLOKuAeEYc/4elPVJfyi4vF/H+d/gWwV/HfrmbKJZPkkgLmodPVVcPns5laizVhSNY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777438465; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=zjUGp6dpPz69NZeEvuc53ZXnGIq/CvkiZTgMTbPhfg8=; b=i15FaLBbUPLed3fF7jauplbnOz9AcAAz/aMueP45EA0+1gILgIkSaUY8HN+9DV6JgvSydquUR13SiBbj1Ok12hZxERYWNf9QkLDUmF5i2IgIc7odf8uX7X+a2r6bCxN0bNlE+DaZB60TqBWo4lczM1IdnsrAVbSutQfViAvpu6w= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1777438465269858.2333313834007; Tue, 28 Apr 2026 21:54:25 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wHwqo-000128-95; Wed, 29 Apr 2026 00:48:42 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wHwql-000115-KS for qemu-devel@nongnu.org; Wed, 29 Apr 2026 00:48:39 -0400 Received: from mail-pl1-x629.google.com ([2607:f8b0:4864:20::629]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wHwqk-0008GT-6u for qemu-devel@nongnu.org; Wed, 29 Apr 2026 00:48:39 -0400 Received: by mail-pl1-x629.google.com with SMTP id d9443c01a7336-2b45cb89f7eso75746755ad.0 for ; Tue, 28 Apr 2026 21:48:37 -0700 (PDT) Received: from toolbx.alistair23.me ([2403:581e:fdf9:0:6209:4521:6813:45b7]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2b988772ae8sm7756145ad.7.2026.04.28.21.48.32 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 28 Apr 2026 21:48:36 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1777438117; x=1778042917; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=zjUGp6dpPz69NZeEvuc53ZXnGIq/CvkiZTgMTbPhfg8=; b=D8RGp0y2LO/j54XcRFRv4S6a6Vpeyb7GWpVnXTClpxh+gZfcm2WpkYoCmQonm8zrdO Bc49bAed/ByhNCTrngxn6Q7mqUZ3vNbW594Dl2u6KH0YIN+FrwjCVXkffyStB3uJo5zN lkqeRkJRSmwY304Vwy9Q+UWljIKr7B6rHf0guGkfFp1GJ7J7f8KDBvQrwjcWCsrS/c81 v22bTSX61PnGdqD92BnOYsNa7luqcviudBLN705qMyIkpZgQLqv8suj3IywuuaemTCSQ 1eGeKMVKgMJwcR+feS3t5df8Rk0vCe7NZe8HOW9Vg1BaudUh8Kk4CuM4Iqlx1SOzv4q3 7f6A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777438117; x=1778042917; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=zjUGp6dpPz69NZeEvuc53ZXnGIq/CvkiZTgMTbPhfg8=; b=lX6fvDCm8mRtKX3iI3SJtJBc0CagMq5YwLk+gqmAKdy0FqqrsKkrYyeXGaI+AFg9WV 7JTyYMdeQtG9yWS5nnUevSYXJbmWfg8PaMxWo7REPgf9pykqEAho0nVuatoQRb1qy9Z1 X3pu5zsXGnO3oXR7RGvaSToM4CQubl32SGg3NAAMfabmun2qFmE09ytsyupwZLjMEpyd dNsbZAtaiCeVimZhEsozBYQOOcPrfsFkf0VYdEsoxeb/j1bBOjdujwIIcv6czg9Gx7fS 0uuT5RI5Fs9Qzs+QCJQHhtmnHicKgRlAqR8kfSrGrSwbVHKMTcv2tTrXcJG2Ojj6aPR0 bryg== X-Forwarded-Encrypted: i=1; AFNElJ/RSePIpyMZand6kdbyjrPRb8utQyuXUV7oAhu3sFDsBftrnIozrfC+FqhBsUOuv3AXm94axUse2dWq@nongnu.org X-Gm-Message-State: AOJu0Yy3BFBg61bNLDogGKrJ3wO91sJuxdHPXIcvF8s2gfsEMHVHWbyn eoux7aJpzL6FEp4tEA2L0AX7YHNfasNlQazvz29nv6nYs2gU5JG5qqcg X-Gm-Gg: AeBDieujNXDchNFrvWVF91DWGjB7RyT36THp/LLJvWErlkDB+6sbRqdU/G2jLgml73n sv5hXbWBGE4+n7X+jhTNhiQuy9657Fh/at2YtA3EJ7YDULqFc60A/7NtgceGQneeovYdK3ST3OW h8sXdjUsqBmH76LquTCBQdC3abv8cI197E1woVSpz2HcZ2KOOTCzey5YWMq+se4ctETjoaqwlY0 eb4GD0baH+bFQ7O+ah2WVG6CcyObruGsab5TMRgRKw3ISOe6YyxNbnoobKiik7mELhi/ua4IJqg YCWjyOMj0uUDya6zob+lw9/WIUAErOcOxUtrl4qkBTkQ+yi25JrCzO10UYvFWskfHooCKqIDDD6 eGbt00/CC43j/UhRicFYboQw8MDb/vyaWhwGI3x6O7JjoTuWD0wXaaW/JzGxQK3Ia8iApwUtSJy gTRQYkUrtjztBSsCzeV6l0GHb0jOg59lz4qYuVc/r9wpmuGY8i4Ss5 X-Received: by 2002:a17:902:be02:b0:2b0:61c2:8e83 with SMTP id d9443c01a7336-2b97c4b28eemr45625505ad.20.1777438116908; Tue, 28 Apr 2026 21:48:36 -0700 (PDT) From: alistair23@gmail.com X-Google-Original-From: alistair.francis@wdc.com To: palmer@dabbelt.com, liwei1518@gmail.com, daniel.barboza@oss.qualcomm.com, zhiwei_liu@linux.alibaba.com, chao.liu.zevorn@gmail.com, qemu-riscv@nongnu.org, qemu-devel@nongnu.org Cc: alistair23@gmail.com, =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Alistair Francis Subject: [PULL 05/51] target/riscv: Use explicit little-endian LD/ST API Date: Wed, 29 Apr 2026 14:47:06 +1000 Message-ID: <20260429044752.4176397-6-alistair.francis@wdc.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260429044752.4176397-1-alistair.francis@wdc.com> References: <20260429044752.4176397-1-alistair.francis@wdc.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::629; envelope-from=alistair23@gmail.com; helo=mail-pl1-x629.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.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, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable 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 @gmail.com) X-ZM-MESSAGEID: 1777438466257158500 From: Philippe Mathieu-Daud=C3=A9 We only build our RISC-V targets as little-endian, therefore the LD/ST API expands to its little-endian variant. Directly use the latter. Mechanical change running: $ for a in uw w l q; do \ sed -i -e "s/ld${a}_p(/ld${a}_le_p(/" \ $(git grep -wlE '(ld|st)u?[wlq]_p' target/riscv); done Signed-off-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Alistair Francis Message-ID: <20260318103122.97244-3-philmd@linaro.org> Signed-off-by: Alistair Francis --- target/riscv/cpu_helper.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/target/riscv/cpu_helper.c b/target/riscv/cpu_helper.c index dd6c861a90..c28832e0e3 100644 --- a/target/riscv/cpu_helper.c +++ b/target/riscv/cpu_helper.c @@ -1365,9 +1365,9 @@ static int get_physical_address(CPURISCVState *env, h= waddr *physical, } =20 if (riscv_cpu_mxl(env) =3D=3D MXL_RV32) { - pte =3D address_space_ldl(cs->as, pte_addr, attrs, &res); + pte =3D address_space_ldl_le(cs->as, pte_addr, attrs, &res); } else { - pte =3D address_space_ldq(cs->as, pte_addr, attrs, &res); + pte =3D address_space_ldq_le(cs->as, pte_addr, attrs, &res); } =20 if (res !=3D MEMTX_OK) { --=20 2.53.0 From nobody Sat May 30 19:23:38 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1777438154; cv=none; d=zohomail.com; s=zohoarc; b=cNIuduEkuRRkpUue5J3fsIVSr/Iu5IEIHfoOLXgANBhaEo3wrIP34gqp5mabktezTUy9QrdyyQQBgG/jxflRfjrXh9Jmf9vKbtGsPmsQRY/P8tHBHCyLlQgvgmgzbKqQ8y5qLhV9t6+qfJU8dUB6ANjDqM0a8uyeJljnlCdrT4I= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777438154; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=zqeMwhjDBjglQffNTUWVy8tQdA8hvh3XZpyZhrNNsAc=; b=bRWHYWgd+HG4LfHm2FJsPe2sTD37MD72wc8W43pU2/2GCC4N7si6+miYSwul0UCi8z8+AaiCKWQE6TrygxaLB6zENbT/CgE5TQQse2d8TNzgtJMC4omdHmbBPKWqSzSxiYyXE7rCtxU1TKhL1xY6oHM0JmCTg5WhdBJ+N91rNEk= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1777438154961872.2508718178526; Tue, 28 Apr 2026 21:49:14 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wHwqt-000139-ST; Wed, 29 Apr 2026 00:48: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 1wHwqr-00012d-O5 for qemu-devel@nongnu.org; Wed, 29 Apr 2026 00:48:45 -0400 Received: from mail-pl1-x62a.google.com ([2607:f8b0:4864:20::62a]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wHwqq-0008HV-2D for qemu-devel@nongnu.org; Wed, 29 Apr 2026 00:48:45 -0400 Received: by mail-pl1-x62a.google.com with SMTP id d9443c01a7336-2b7d3ecc10dso39171975ad.2 for ; Tue, 28 Apr 2026 21:48:43 -0700 (PDT) Received: from toolbx.alistair23.me ([2403:581e:fdf9:0:6209:4521:6813:45b7]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2b988772ae8sm7756145ad.7.2026.04.28.21.48.37 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 28 Apr 2026 21:48:41 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1777438122; x=1778042922; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=zqeMwhjDBjglQffNTUWVy8tQdA8hvh3XZpyZhrNNsAc=; b=lW9DgOKXGHotq8hWqlRsvg+lhYCCfGgLQ6YU4o9pfeRqOHWqJKYTGIlRsZ8/3IWJoE j/W2xcRBcc83wyreM/n8CjGXnoJe8kqB730hyz5hGgdi7ZlPy2GMotvpJnV+7hbcSvEL 6hnUrquEP3d06h/mSJiqlgSypI4Am89gvsOmEt2FqlLz3HPiFY1E7nNOkZ0Elw+TQbBH ddzTaJdicb9WMtk0XaFyBwumCwsTllTpztDwRYXq1ewhWXrRSZzs1W3FEk4HmV8syTTw LwiUCgD/Fpp8yV4iA/itFFAt4+MjFGiW0hxNiy2hwALfi/REuIZBv0BrpVCkwkScdrux YLeg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777438122; x=1778042922; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=zqeMwhjDBjglQffNTUWVy8tQdA8hvh3XZpyZhrNNsAc=; b=Hh5m2oyFbzavlnI5GHGaLbSCBQFKC4V2j8y5UeiFZshYAXNeXXiIMuLdyuIrUxMErF XnT6nWMixHGvYrl4ocu1Aznuqo7DBai6JrE0KbBN9Tqn9jQGASjGH6bBT8L00tgPnj+U jPoImGHA+Utg7fZZBsz6Gu/NSdFl4N8Ug+HB4wpJVBF5CNnQqTI0AodrHW7iW0JcsQCc 5wMiLodtNzJEycFocoU7fPg3AFUrsrxFBvefKrBlqLGJ3FlgeB7oK7TuVqCUvZ3EPnvQ UzMIPYB6BgkX9GaJdFdt4SRUi5z8r3C/nm4kjZEavdF0b84LaoDt+bwMNirourBfR94w gs1g== X-Forwarded-Encrypted: i=1; AFNElJ9io8EnYQ7Vs/FUHJPvmcTOva3KZw5A4FIdO5sbNSSb0kNyiVWPth06yUOitnDYoAVqrvn3i0JZDQB0@nongnu.org X-Gm-Message-State: AOJu0YxiHjDIrNktimBk2vnObBl/wJWyLE4axFTJIyLYUYFnMoexzAPD rvIvOEWJXn6i28NddUW7epC/YOpPQHlw7Sgv255J3YXVFWOeeMQhqMGK X-Gm-Gg: AeBDietnRD4UxzbcaaxBHRa/HD5xIgkm5bGT9KhTa3mjWsD6YYQBxPCedNjaEPQUs47 5e2PFP5UVIjFhJX+XK6k+NJNpa5Fi+yXScsjJA1ocdthp3eUWS9saRcP3B7Mw3nyfGYdgTTp8Vp KlwFbpcpW9F4tv5mXwrTj9tkKKZWR2hFy9CqgBUIH16L8p4Ctms44QZs59SJ3OYXKf44h3k/YBa BL+mKk2ABiGn7po2lQmXHi6aYhWpwT4KLS6Oav1UgpC4zFiqBsPaJQMOG8dU5yGXZ0w/+8h3ysr /bgc4GuS4xP65KBmIW4+TzRi8Tk+z0FidmC2FRDwr2UA9HEs2/cFlyr+Q7FQeHr1WBoSb5cMhDY t50k3PfTmRVaTJBbw5+gYHMrC9hbmdFt6wdv3ttMWYO70kwqlvz3w3Ui3lVyX5HR+ZxGw3n+j4q OrBvdkot4K8CxLE5tOQOojq+JMqQpLC678pIR1EmbsStHbBqeIchKj X-Received: by 2002:a17:903:298c:b0:2b2:6df1:1112 with SMTP id d9443c01a7336-2b97c4f41b0mr58709595ad.40.1777438122263; Tue, 28 Apr 2026 21:48:42 -0700 (PDT) From: alistair23@gmail.com X-Google-Original-From: alistair.francis@wdc.com To: palmer@dabbelt.com, liwei1518@gmail.com, daniel.barboza@oss.qualcomm.com, zhiwei_liu@linux.alibaba.com, chao.liu.zevorn@gmail.com, qemu-riscv@nongnu.org, qemu-devel@nongnu.org Cc: alistair23@gmail.com, =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20P=C3=A9trot?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Richard Henderson , Alistair Francis Subject: [PULL 06/51] target/riscv: Make LQ and SQ use 128-bit ld/st Date: Wed, 29 Apr 2026 14:47:07 +1000 Message-ID: <20260429044752.4176397-7-alistair.francis@wdc.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260429044752.4176397-1-alistair.francis@wdc.com> References: <20260429044752.4176397-1-alistair.francis@wdc.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::62a; envelope-from=alistair23@gmail.com; helo=mail-pl1-x62a.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.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, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1777438156917154100 From: Fr=C3=A9d=C3=A9ric P=C3=A9trot The lq and sq helpers for the experimental rv128 architecture currently use direct memory accesses. Replace these direct accesses with the standard tcg_gen_qemu_{ld,st}_i128 TCG helpers that handle endianness issues. Reported-by: Philippe Mathieu-Daud=C3=A9 Suggested-by: Richard Henderson Signed-off-by: Fr=C3=A9d=C3=A9ric P=C3=A9trot Message-ID: <20260101181442.2489496-2-frederic.petrot@univ-grenoble-alpes.f= r> Signed-off-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Alistair Francis Message-ID: <20260318103122.97244-4-philmd@linaro.org> Signed-off-by: Alistair Francis --- target/riscv/insn_trans/trans_rvi.c.inc | 32 ++++++++++++++++++------- 1 file changed, 24 insertions(+), 8 deletions(-) diff --git a/target/riscv/insn_trans/trans_rvi.c.inc b/target/riscv/insn_tr= ans/trans_rvi.c.inc index 54b9b4f241..2c82ae41a7 100644 --- a/target/riscv/insn_trans/trans_rvi.c.inc +++ b/target/riscv/insn_trans/trans_rvi.c.inc @@ -377,6 +377,9 @@ static bool gen_load_i128(DisasContext *ctx, arg_lb *a,= MemOp memop) TCGv destl =3D dest_gpr(ctx, a->rd); TCGv desth =3D dest_gprh(ctx, a->rd); TCGv addrl =3D tcg_temp_new(); + TCGv_i128 t16 =3D tcg_temp_new_i128(); + TCGv_i64 tl =3D tcg_temp_new_i64(); + TCGv_i64 th =3D tcg_temp_new_i64(); =20 tcg_gen_addi_tl(addrl, src1l, a->imm); =20 @@ -388,10 +391,14 @@ static bool gen_load_i128(DisasContext *ctx, arg_lb *= a, MemOp memop) tcg_gen_movi_tl(desth, 0); } } else { - /* assume little-endian memory access for now */ - tcg_gen_qemu_ld_tl(destl, addrl, ctx->mem_idx, MO_TEUQ); - tcg_gen_addi_tl(addrl, addrl, 8); - tcg_gen_qemu_ld_tl(desth, addrl, ctx->mem_idx, MO_TEUQ); + tcg_gen_qemu_ld_i128(t16, addrl, ctx->mem_idx, memop); + if (mo_endian(ctx) =3D=3D MO_LE) { + tcg_gen_extr_i128_i64(tl, th, t16); + } else { + tcg_gen_extr_i128_i64(th, tl, t16); + } + tcg_gen_trunc_i64_tl(destl, tl); + tcg_gen_trunc_i64_tl(desth, th); } =20 gen_set_gpr128(ctx, a->rd, destl, desth); @@ -488,16 +495,25 @@ static bool gen_store_i128(DisasContext *ctx, arg_sb = *a, MemOp memop) TCGv src2l =3D get_gpr(ctx, a->rs2, EXT_NONE); TCGv src2h =3D get_gprh(ctx, a->rs2); TCGv addrl =3D tcg_temp_new(); + TCGv_i128 t16 =3D tcg_temp_new_i128(); + TCGv_i64 tl =3D tcg_temp_new_i64(); + TCGv_i64 th =3D tcg_temp_new_i64(); =20 tcg_gen_addi_tl(addrl, src1l, a->imm); =20 if ((memop & MO_SIZE) <=3D MO_64) { tcg_gen_qemu_st_tl(src2l, addrl, ctx->mem_idx, memop); } else { - /* little-endian memory access assumed for now */ - tcg_gen_qemu_st_tl(src2l, addrl, ctx->mem_idx, MO_TEUQ); - tcg_gen_addi_tl(addrl, addrl, 8); - tcg_gen_qemu_st_tl(src2h, addrl, ctx->mem_idx, MO_TEUQ); + + tcg_gen_ext_tl_i64(tl, src2l); + tcg_gen_ext_tl_i64(th, src2h); + + if (mo_endian(ctx) =3D=3D MO_LE) { + tcg_gen_concat_i64_i128(t16, tl, th); + } else { + tcg_gen_concat_i64_i128(t16, th, tl); + } + tcg_gen_qemu_st_i128(t16, addrl, ctx->mem_idx, memop); } return true; } --=20 2.53.0 From nobody Sat May 30 19:23:38 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1777438183; cv=none; d=zohomail.com; s=zohoarc; b=PfUmVcXQqHLyN0Q70xEnTinzswwbOMkAWjpX3YirfFCGga7RXqYs0k6VmCAMclXVLFMxEMiguJAuh32M8k7DuM2+8uPXec/cczEPH962F1/tyRqxwc9oGG0mhiyX6mT8vsX0qxzMwaKwistdx/FpfAD4FO/CtZeiOJqNzpoOxFM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777438183; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=vTreqGd/1Raf3RsX/9R0sQ7/2mzs2tC0VLy5UcXV31E=; b=H3gT2CorYLYlrUqpnhm9EE29Txyz/gDi+4nTPWPJcxGyIspBDmbJ3FXD1KWaAV/Nq/Cpdf4bMPYbDqqxwAehVu0vpmvAf/J3lI2MVlrBdeuQdlcZLG9+POoU881Thx2U9bEBbvbPFGuiHXQTH/yDxAmOy0rchH6sinpZ6+yPUMg= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1777438183479233.87666102748915; Tue, 28 Apr 2026 21:49:43 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wHwqx-00013x-AU; Wed, 29 Apr 2026 00:48:51 -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 1wHwqw-00013b-EK for qemu-devel@nongnu.org; Wed, 29 Apr 2026 00:48:50 -0400 Received: from mail-pj1-x1031.google.com ([2607:f8b0:4864:20::1031]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wHwqu-0008IL-R3 for qemu-devel@nongnu.org; Wed, 29 Apr 2026 00:48:50 -0400 Received: by mail-pj1-x1031.google.com with SMTP id 98e67ed59e1d1-35fbca04006so6092243a91.1 for ; Tue, 28 Apr 2026 21:48:48 -0700 (PDT) Received: from toolbx.alistair23.me ([2403:581e:fdf9:0:6209:4521:6813:45b7]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2b988772ae8sm7756145ad.7.2026.04.28.21.48.42 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 28 Apr 2026 21:48:46 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1777438127; x=1778042927; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=vTreqGd/1Raf3RsX/9R0sQ7/2mzs2tC0VLy5UcXV31E=; b=iuR9IbI9pPZgR0YwyP4FCU079bAXUHdf67eO9aTQ98MEK1/vCrYoPDLVs+gZJItS60 6BeGCZ2KlF6jYgb7bCAG8WgS/B7J5DurAmD+zmw3Qm3XUrQ/Xu3axWwXoCyZZ4WO7Q8K LprwgfNxneYDpf+Y8Ydm5u7yLSuXAy6TEs7Cfrh1U6w1IzZNaJ+dLp0DysoGXwBEDc5c Yg4OVuEGZbwtNEFhO648+NCfN5o4+IUk55ejH6O5igTeqKo25bbplAl/jnO/1NF5AbGB +p+WNoXyL5bTQ+Hmb5IW16iJ8xF/QH6ZjupG0N4PDcmKXHPaZEJSs5HbyDlAbgi1/+CU rysg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777438127; x=1778042927; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=vTreqGd/1Raf3RsX/9R0sQ7/2mzs2tC0VLy5UcXV31E=; b=tWMJx5wo/128ZVza4pZOGneFjN5Tb53pzRndE5J1fde4FDlMLbISi9mN2XucxDLGFd RCBP2vGHpLwLFqOPjnW6f9RV1cv8yAodfts60pLa/m0PWD+qNBOx60PaITo0xJ5sirwS 6bVScGFAawur7h4dj/TtMLTVZaBDKPOle4Dl8/gbI6wuReb/mr8ltnR7m+FvVFGDYMLu 3H4/6JK72p2eJDnz8srBCn0Yj4nxBH+8VS6/FsonVFDr5onjtf/XCIDsdgdoVkxc1lpM BG+kBnFCHlff44MokQxC7au9SlMxpM/qh8pxmyPlj+6g0yxZ3gEsE40imIUYxTQvNvq6 fQmQ== X-Forwarded-Encrypted: i=1; AFNElJ8dc914SPwG+yYoy4DtN7sVdr9ypSnM2Hw7FEGlheMf6k410ZL/J1I19CVD1MUI2igB8Ht5xiJFo2Hj@nongnu.org X-Gm-Message-State: AOJu0Yz1Ip2GUuJXm+AT5KmGZQl7XkGRq3WmsOewORsnoVRTqCB/77mg Hlvhnrw3WbY/Dc+ENydqTLyNFDenFVF5JMo89a5+dc6uQ5JlQFqRVxJC X-Gm-Gg: AeBDieu8ZIVyxmq+6bHVPmrGNGASA39Job52D0eHGc6pzz9tYHPunGRYWzwoaouWYKq R0pF4taUGB2xmc++XyHa4bQ+9rssmReq+5ZvFEdFuH0juXE44Fl2fLYxEBCD3hfaKufD5pgJSq0 +STB/n4gUSStgh/JxEEZ9y2TzfMDM89vz8zFmxTnm0R0UPlHYAzKKcjsAmnJnfm8IX3rclQLtis h03Z6zFkFeZY0zml8DsculuugNcQ0x9VZI4SpCKoP6GtnRH6JgVrZ0kVDKvHAau5K3qQybUA0hJ M5nRvYztm/455iRvM6LwI7K6Qps5I2r0l5yp3CXpDx52wRaeDzBSpEowRzQXTqYNYpPCIDB+0SI mIJXsaz4v7/B3JsmPOL1B30rAFfGn5Wx3OtQ7Qg8pVS8RzscoMZ6hroU6n4c9duPCMkAfPirxwd XyY/CHtqsommU+I5BZ3yF0WXcJ0TPoqL+vYtNq8EtrfNBtIgWuY3sk X-Received: by 2002:a17:902:e746:b0:2b7:97b9:54fa with SMTP id d9443c01a7336-2b97c4b5056mr69431435ad.32.1777438127345; Tue, 28 Apr 2026 21:48:47 -0700 (PDT) From: alistair23@gmail.com X-Google-Original-From: alistair.francis@wdc.com To: palmer@dabbelt.com, liwei1518@gmail.com, daniel.barboza@oss.qualcomm.com, zhiwei_liu@linux.alibaba.com, chao.liu.zevorn@gmail.com, qemu-riscv@nongnu.org, qemu-devel@nongnu.org Cc: alistair23@gmail.com, =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20P=C3=A9trot?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Alistair Francis Subject: [PULL 07/51] target/riscv: Remove MTTCG check for x-rv128 CPU model Date: Wed, 29 Apr 2026 14:47:08 +1000 Message-ID: <20260429044752.4176397-8-alistair.francis@wdc.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260429044752.4176397-1-alistair.francis@wdc.com> References: <20260429044752.4176397-1-alistair.francis@wdc.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::1031; envelope-from=alistair23@gmail.com; helo=mail-pj1-x1031.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.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, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1777438185327154100 From: Fr=C3=A9d=C3=A9ric P=C3=A9trot We had to check that mttcg was not used when executing QEMU with -cpu x-rv128 as a single 128-bit access was done as two distinct 64-bit accesses. Now that we use the 128-bit ld/st that access the data atomically, this check is no longer necessary. Signed-off-by: Fr=C3=A9d=C3=A9ric P=C3=A9trot Message-ID: <20260101181442.2489496-3-frederic.petrot@univ-grenoble-alpes.f= r> Signed-off-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Alistair Francis Message-ID: <20260318103122.97244-5-philmd@linaro.org> Signed-off-by: Alistair Francis --- target/riscv/tcg/tcg-cpu.c | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/target/riscv/tcg/tcg-cpu.c b/target/riscv/tcg/tcg-cpu.c index 988b2d905f..3407191c22 100644 --- a/target/riscv/tcg/tcg-cpu.c +++ b/target/riscv/tcg/tcg-cpu.c @@ -1305,16 +1305,6 @@ static bool riscv_tcg_cpu_realize(CPUState *cs, Erro= r **errp) } =20 #ifndef CONFIG_USER_ONLY - RISCVCPUClass *mcc =3D RISCV_CPU_GET_CLASS(cpu); - - if (mcc->def->misa_mxl_max >=3D MXL_RV128 && qemu_tcg_mttcg_enabled())= { - /* Missing 128-bit aligned atomics */ - error_setg(errp, - "128-bit RISC-V currently does not work with Multi " - "Threaded TCG. Please use: -accel tcg,thread=3Dsingle"); - return false; - } - CPURISCVState *env =3D &cpu->env; =20 tcg_cflags_set(CPU(cs), CF_PCREL); --=20 2.53.0 From nobody Sat May 30 19:23:38 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1777438251; cv=none; d=zohomail.com; s=zohoarc; b=awf5jWikVc7aR3SYjSrc3MJ93RT1S1UjNNaCZXq5YpYB8NouQSgclXE7BKwtNKxDsIYzasuTO7TqoHkLYVD6Rj9urmIwg+bZq6N8+y4dcs2uupjwOo0KijlAGcqvnfrzoMB9R6VR0r3BcetJBmXgyhw0aTLfx9yyKCGjKEl2yn0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777438251; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=HkLUQJjTejs5SkUpf6I65XYzbpK75WlvWkzO4cu5fqA=; b=EGWgdbhQw4CrvO9IDubuswzGmlkBLz6hPqDiHJq4s2JPaU6+AUxFJQ15A0fVPUpDNg9yz7KgSdpjfSC3VwxA0eNTMDZMo9VeS5xzyUIho30rBKZ47GWGTy3O8Sb+3he/e5UjR+DCF6CSzNj4R6C2guiFeT2OnJZpjtOvsKnIbpY= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1777438251607294.7860553654108; Tue, 28 Apr 2026 21:50:51 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wHwr2-00015e-OX; Wed, 29 Apr 2026 00:48: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 1wHwr1-000158-B2 for qemu-devel@nongnu.org; Wed, 29 Apr 2026 00:48:55 -0400 Received: from mail-pl1-x630.google.com ([2607:f8b0:4864:20::630]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wHwqz-0008Iz-Gs for qemu-devel@nongnu.org; Wed, 29 Apr 2026 00:48:55 -0400 Received: by mail-pl1-x630.google.com with SMTP id d9443c01a7336-2b2ea1b3962so68651595ad.0 for ; Tue, 28 Apr 2026 21:48:53 -0700 (PDT) Received: from toolbx.alistair23.me ([2403:581e:fdf9:0:6209:4521:6813:45b7]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2b988772ae8sm7756145ad.7.2026.04.28.21.48.47 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 28 Apr 2026 21:48:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1777438132; x=1778042932; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=HkLUQJjTejs5SkUpf6I65XYzbpK75WlvWkzO4cu5fqA=; b=PmCUy6mU4WY0AaqWzoFem0eQ3/8tGG6yZhAZsL3PUJ85AL5kN8oFbyt0xaeg3bbnab 0vPGeyXpojg7t5/0PPDegH2RmbgBRKyOf4CE04b0O/IYQa5TdiQ1nteg6OJtNvuWXqHa TISMJvqhbneisw4iP1X9g7LCLVYvm0smhmjLlUPftj6jl7Vrhu8bGzEMDQ1M2+AbRKvt QX6kcScqsRGOSco6X4fYOixlDMbo0Yh2GrvsuZ7eAOqqpmdOpFx2fRG+XsXsTVapfz0d AendWVRq0DrGFdNrHM4lk78u7RqsKw0GXhR/X8msscQqH8MEc2J7W+wciIz+jLme1UgP K3cw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777438132; x=1778042932; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=HkLUQJjTejs5SkUpf6I65XYzbpK75WlvWkzO4cu5fqA=; b=E3OOLlnFcsSZLTvdpxoTe2fLH535Ub7pzGX5aDqGkmOIqJsn9cTToglELpDBKma21u HGrRWjZi2Pm8I6jdrauZzJKlPAsj7YyTj1OW8V46Nhb8EAZi69cBc0cqlBEDm6AWZMyT Bpcptxoz32zmW5NJ8DAslmxRhYQhpOoG0x7SWMqQQI8TcUe0GzsuPgj0zr8MwkDmZ35+ 6RZPMJ9uXiRLnK5IKFDIAFFu7iNuUI9xt7BxqcUwrLWSt6ciLi/izdWkQTY2qIsJd0O/ KKFK1o0Ks1+U1SasoHc4+04XNgK6I8qdMlyJAAOHN7NZcIyTkPiGDSs+nko7+9c9apxu Gp+w== X-Forwarded-Encrypted: i=1; AFNElJ+Ju2kLD2Wqs5l1HAsEsjYnaQF4Q0rGffc0AngGAxMnKh7EFSNw9GNPr6IfU7oStjpbqWWy6lONK2rH@nongnu.org X-Gm-Message-State: AOJu0YzGNpIQdPmcpBepLzumbLiO4LGFayMZ2Ub9BUNuh0CmyyrHrUlG xeilTHv0w57uHUEXqc0AobbVJL/fI1J9wzX1HRUoK1w5lgMJweZTPdAN X-Gm-Gg: AeBDietH5SEAp1k23dc2kR/at/aaSleQAAYMBaM04Yx7UKQCEfRnPtpjlMjHB5/VYgA m2fZRyqa3EkMqXc6eTijjegBImDXxzrANplaAfUVRtILKLnUpycYmUE72Z0cDDfDAmqejMotxvf 9GlKaRhWOklmKU6dJbaXsusvR0BooWbF8Qfc2/t2gwrgdnIt/Vm78JbRbKRuMWF2DRiQdPH5VqN 33hwY4w1ozuji3dMTkdHR6oRMkS+a5a9T+5KsRoZN32csKTuiwkvNyzw09VNxNHlZ7QXw6NCvuA RFhdWn6+TKn2xaIQEWtJ931DmvT/k8m7UUHxZS5IG+si2rFh0/PFj8Ydsuy+Vxg1CeOijbY5EX4 DFmKswF5174EonoczPUa8YC2HYGjcBJpisL8SNNT9SlWSOJ+B71sH7fjgOzUGUPSap1+bwLgrJb XaBirlbg0e0F7GGaCGQBMbEU4fzDtdTtp6H2sPh3sf9QJEGkcoj5RF X-Received: by 2002:a17:903:2a83:b0:2b2:ae89:fd44 with SMTP id d9443c01a7336-2b987359d09mr23771325ad.6.1777438132187; Tue, 28 Apr 2026 21:48:52 -0700 (PDT) From: alistair23@gmail.com X-Google-Original-From: alistair.francis@wdc.com To: palmer@dabbelt.com, liwei1518@gmail.com, daniel.barboza@oss.qualcomm.com, zhiwei_liu@linux.alibaba.com, chao.liu.zevorn@gmail.com, qemu-riscv@nongnu.org, qemu-devel@nongnu.org Cc: alistair23@gmail.com, =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Alistair Francis Subject: [PULL 08/51] target/riscv: Explode MO_TExx -> MO_TE | MO_xx (again) Date: Wed, 29 Apr 2026 14:47:09 +1000 Message-ID: <20260429044752.4176397-9-alistair.francis@wdc.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260429044752.4176397-1-alistair.francis@wdc.com> References: <20260429044752.4176397-1-alistair.francis@wdc.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::630; envelope-from=alistair23@gmail.com; helo=mail-pl1-x630.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.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, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1777438254130154100 From: Philippe Mathieu-Daud=C3=A9 Following commit 73ae67fd4e6, extract the implicit MO_TE definition in order to replace it. Mechanical change using: $ for n in UW UL UQ UO SW SL SQ; do \ sed -i -e "s/MO_TE$n/MO_TE | MO_$n/" \ $(git grep -l MO_TE$n target/riscv); \ done Signed-off-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Alistair Francis Message-ID: <20260318103122.97244-6-philmd@linaro.org> Signed-off-by: Alistair Francis --- target/riscv/insn_trans/trans_rvzalasr.c.inc | 12 ++++++------ target/riscv/insn_trans/trans_xmips.c.inc | 16 ++++++++-------- target/riscv/insn_trans/trans_zilsd.c.inc | 4 ++-- 3 files changed, 16 insertions(+), 16 deletions(-) diff --git a/target/riscv/insn_trans/trans_rvzalasr.c.inc b/target/riscv/in= sn_trans/trans_rvzalasr.c.inc index bf86805cef..525f01ca34 100644 --- a/target/riscv/insn_trans/trans_rvzalasr.c.inc +++ b/target/riscv/insn_trans/trans_rvzalasr.c.inc @@ -49,20 +49,20 @@ static bool trans_lb_aqrl(DisasContext *ctx, arg_lb_aqr= l *a) static bool trans_lh_aqrl(DisasContext *ctx, arg_lh_aqrl *a) { REQUIRE_ZALASR(ctx); - return gen_load_acquire(ctx, a, (MO_ALIGN | MO_TESW)); + return gen_load_acquire(ctx, a, (MO_ALIGN | MO_TE | MO_SW)); } =20 static bool trans_lw_aqrl(DisasContext *ctx, arg_lw_aqrl *a) { REQUIRE_ZALASR(ctx); - return gen_load_acquire(ctx, a, (MO_ALIGN | MO_TESL)); + return gen_load_acquire(ctx, a, (MO_ALIGN | MO_TE | MO_SL)); } =20 static bool trans_ld_aqrl(DisasContext *ctx, arg_ld_aqrl *a) { REQUIRE_64BIT(ctx); REQUIRE_ZALASR(ctx); - return gen_load_acquire(ctx, a, (MO_ALIGN | MO_TEUQ)); + return gen_load_acquire(ctx, a, (MO_ALIGN | MO_TE | MO_UQ)); } =20 static bool gen_store_release(DisasContext *ctx, arg_sb_aqrl *a, MemOp mem= op) @@ -96,18 +96,18 @@ static bool trans_sb_aqrl(DisasContext *ctx, arg_sb_aqr= l *a) static bool trans_sh_aqrl(DisasContext *ctx, arg_sh_aqrl *a) { REQUIRE_ZALASR(ctx); - return gen_store_release(ctx, a, (MO_ALIGN | MO_TESW)); + return gen_store_release(ctx, a, (MO_ALIGN | MO_TE | MO_SW)); } =20 static bool trans_sw_aqrl(DisasContext *ctx, arg_sw_aqrl *a) { REQUIRE_ZALASR(ctx); - return gen_store_release(ctx, a, (MO_ALIGN | MO_TESL)); + return gen_store_release(ctx, a, (MO_ALIGN | MO_TE | MO_SL)); } =20 static bool trans_sd_aqrl(DisasContext *ctx, arg_sd_aqrl *a) { REQUIRE_64BIT(ctx); REQUIRE_ZALASR(ctx); - return gen_store_release(ctx, a, (MO_ALIGN | MO_TEUQ)); + return gen_store_release(ctx, a, (MO_ALIGN | MO_TE | MO_UQ)); } diff --git a/target/riscv/insn_trans/trans_xmips.c.inc b/target/riscv/insn_= trans/trans_xmips.c.inc index 9a72f3392f..37572563ae 100644 --- a/target/riscv/insn_trans/trans_xmips.c.inc +++ b/target/riscv/insn_trans/trans_xmips.c.inc @@ -56,11 +56,11 @@ static bool trans_ldp(DisasContext *ctx, arg_ldp *a) TCGv addr =3D tcg_temp_new(); =20 tcg_gen_addi_tl(addr, src, a->imm_y); - tcg_gen_qemu_ld_tl(dest0, addr, ctx->mem_idx, MO_TESQ); + tcg_gen_qemu_ld_tl(dest0, addr, ctx->mem_idx, MO_TE | MO_SQ); gen_set_gpr(ctx, a->rd, dest0); =20 tcg_gen_addi_tl(addr, addr, 8); - tcg_gen_qemu_ld_tl(dest1, addr, ctx->mem_idx, MO_TESQ); + tcg_gen_qemu_ld_tl(dest1, addr, ctx->mem_idx, MO_TE | MO_SQ); gen_set_gpr(ctx, a->rs3, dest1); =20 return true; @@ -77,11 +77,11 @@ static bool trans_lwp(DisasContext *ctx, arg_lwp *a) TCGv addr =3D tcg_temp_new(); =20 tcg_gen_addi_tl(addr, src, a->imm_x); - tcg_gen_qemu_ld_tl(dest0, addr, ctx->mem_idx, MO_TESL); + tcg_gen_qemu_ld_tl(dest0, addr, ctx->mem_idx, MO_TE | MO_SL); gen_set_gpr(ctx, a->rd, dest0); =20 tcg_gen_addi_tl(addr, addr, 4); - tcg_gen_qemu_ld_tl(dest1, addr, ctx->mem_idx, MO_TESL); + tcg_gen_qemu_ld_tl(dest1, addr, ctx->mem_idx, MO_TE | MO_SL); gen_set_gpr(ctx, a->rs3, dest1); =20 return true; @@ -99,10 +99,10 @@ static bool trans_sdp(DisasContext *ctx, arg_sdp *a) TCGv addr =3D tcg_temp_new(); =20 tcg_gen_addi_tl(addr, src, a->imm_w); - tcg_gen_qemu_st_tl(data0, addr, ctx->mem_idx, MO_TEUQ); + tcg_gen_qemu_st_tl(data0, addr, ctx->mem_idx, MO_TE | MO_UQ); =20 tcg_gen_addi_tl(addr, addr, 8); - tcg_gen_qemu_st_tl(data1, addr, ctx->mem_idx, MO_TEUQ); + tcg_gen_qemu_st_tl(data1, addr, ctx->mem_idx, MO_TE | MO_UQ); =20 return true; } @@ -118,10 +118,10 @@ static bool trans_swp(DisasContext *ctx, arg_swp *a) TCGv addr =3D tcg_temp_new(); =20 tcg_gen_addi_tl(addr, src, a->imm_v); - tcg_gen_qemu_st_tl(data0, addr, ctx->mem_idx, MO_TESL); + tcg_gen_qemu_st_tl(data0, addr, ctx->mem_idx, MO_TE | MO_SL); =20 tcg_gen_addi_tl(addr, addr, 4); - tcg_gen_qemu_st_tl(data1, addr, ctx->mem_idx, MO_TESL); + tcg_gen_qemu_st_tl(data1, addr, ctx->mem_idx, MO_TE | MO_SL); =20 return true; } diff --git a/target/riscv/insn_trans/trans_zilsd.c.inc b/target/riscv/insn_= trans/trans_zilsd.c.inc index 369c33004b..445406cf01 100644 --- a/target/riscv/insn_trans/trans_zilsd.c.inc +++ b/target/riscv/insn_trans/trans_zilsd.c.inc @@ -30,7 +30,7 @@ static bool gen_load_i64(DisasContext *ctx, arg_ld *a) TCGv addr =3D get_address(ctx, a->rs1, a->imm); TCGv_i64 tmp =3D tcg_temp_new_i64(); =20 - tcg_gen_qemu_ld_i64(tmp, addr, ctx->mem_idx, MO_TESQ); + tcg_gen_qemu_ld_i64(tmp, addr, ctx->mem_idx, MO_TE | MO_SQ); =20 if (a->rd =3D=3D 0) { return true; @@ -85,7 +85,7 @@ static bool gen_store_i64(DisasContext *ctx, arg_sd *a) } else { tcg_gen_concat_tl_i64(tmp, data_low, data_high); } - tcg_gen_qemu_st_i64(tmp, addr, ctx->mem_idx, MO_TESQ); + tcg_gen_qemu_st_i64(tmp, addr, ctx->mem_idx, MO_TE | MO_SQ); =20 return true; } --=20 2.53.0 From nobody Sat May 30 19:23:38 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1777438664; cv=none; d=zohomail.com; s=zohoarc; b=nRD4aAGRlOrKzrwcHgs30Yjjxyp//sQGgzuXZ9G3P6k+YBVesPItK/HDs53sWZUiB55kx0jJFezxlavc6j8dhCXFj1D9xGVRqgjItQ0DozzcM5m72x0C26o/ulvCMZ3LVyxabpshW5Ck/psGFnSncAbQgpS+WTwYhHbFwXidEVQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777438664; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=JuREkh5J91b+6stvcbVPwJjRjRION1tVvSChwlaKA7c=; b=PkK1DF5frcdWyT+HYOL7GxFPKwfQlS67sOLBEPTLBNdwNWBjZVo4cSy2CxgewQrPfSlOFwdCZplNjgqXJBj9puzntX0E/lYbIdq1hMsm4N/ZJl3arIHIUAIHjMPD5lmyKF3gfgbDLPLcUq3CGvZjflArguF9UQp547H9rnYHMFA= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1777438664936233.96031151534692; Tue, 28 Apr 2026 21:57:44 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wHwr8-0001DU-VV; Wed, 29 Apr 2026 00:49:02 -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 1wHwr6-0001CT-Ot for qemu-devel@nongnu.org; Wed, 29 Apr 2026 00:49:00 -0400 Received: from mail-pl1-x635.google.com ([2607:f8b0:4864:20::635]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wHwr4-0008KP-Bg for qemu-devel@nongnu.org; Wed, 29 Apr 2026 00:49:00 -0400 Received: by mail-pl1-x635.google.com with SMTP id d9443c01a7336-2ad617d5b80so74150895ad.1 for ; Tue, 28 Apr 2026 21:48:58 -0700 (PDT) Received: from toolbx.alistair23.me ([2403:581e:fdf9:0:6209:4521:6813:45b7]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2b988772ae8sm7756145ad.7.2026.04.28.21.48.52 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 28 Apr 2026 21:48:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1777438137; x=1778042937; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=JuREkh5J91b+6stvcbVPwJjRjRION1tVvSChwlaKA7c=; b=qkegiynvMoTzzmOb/YN28GIhhlfqY+FBTOyaFrPcit8RMrzlMztWpNVqFWRmg8AFf4 xI8zGRcsI6EFLjbus4kEgrTtRV473GUXnUymJddHogFM4V/gn+WOU283ORFVi7T9ATDc SIh5Hr2tcmVjLlUoKh3fOx3oGxlG15GiDSNPvIz1eOxvC8Yak+RQKrzuK8AX/tc/F9vD I3jMgTbSMst/1CjA3RYD1+Tzk0hYRR6DDzX4ZwDeUxTDrhngiZimUDfFayKBpbad2YRp WNXkYodyOTkX0v/9Xo8+1Tk+0EQLuqsmia5wlER7cLJKFG6Qd1gplSWvMPE9wWJrHA7B FcKA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777438137; x=1778042937; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=JuREkh5J91b+6stvcbVPwJjRjRION1tVvSChwlaKA7c=; b=XoSIXTG5f8GpCZDst/lChqrHI7dmQ2u1U7qW4EihRnQPYIyIBCK2EfYZfOPZ8HW8pL P/wAYIsh9rfXkDIwAW18lP+xvfVeI6TTDXAvMPuhdzrATN+lShhj+ImG7SVhhRS2Itwq p/JNOY+enLBcnSXaFAQ1Yz6SkxSgbwa+MOg6hq3SCnssHg/EhI6KzgPjiZS9/GXMsbaZ VFIfjVZpbzmV/TgMxpBRZsMamipT31uNr8EKZXwnjvTJDKsogPHe1g86l0JKGu1NxG7B p8M87MMPbqF21Z3uqYdI8T/GXWVLXoisGYfaYaj4c5kJWfZhzejlzUdqs40K55V4TjMC WLqA== X-Forwarded-Encrypted: i=1; AFNElJ8ku+6UuQvvkrzL9foVLszO/ICiWkWrtVCEH3Evsd6iq6eMFjN/JhFQFFdb/HL6u01J+WXwycoIzr5W@nongnu.org X-Gm-Message-State: AOJu0YyOQJ/X9TxWBDnClAT8jVixIdpkXS0G4BECV2qjQdoPzA+d0Opy CQb05zYyX1Asnz8li4OuO+BW/CZIEE4xwKPLVv9AdsSfoddxQ9K9mqHx X-Gm-Gg: AeBDiet+cVRTveKFGZoDmbqkjY3nN3O+csYrU9QoPLS7y8EFKSh8+VpE2qu0rVRSZhq 1/yx9P8ByFZ8Cb8T+/h547j5rC+rl3JrH8yqv5w/LhrwcONTRj9G2YhrUslWgZlx2eGWXlGDlXN I0q35xWutbCKWl9pLUI6Jt6F8ggWEYhjWkZbGJaKhisW76vJcU8rvxWT2U8FU+OpeNWyI8L8c/A qa6b4/QgaX6jG2IH2ULV8qaz/7kqau355jn+zBf6a/gdhcQ1lnBYOkij57OHP7R2b7Tfm73JpeJ 7Ajpi2f6ACj1Fq7YM7IME/p6TSIXei0IoKqXfgBsVowxIuWD9vq7sHcXFszkqtHtqx6ek9PWDT7 YmUptqfuUHvWdOWicMsw1uEWr5bO1qPl3Lz7uK67UbKPp743Lqk/yR0sn3DfUrB7/ic42E+SZnU WTmqC8h3sDr2dSp1YiDyCuv1/iOLBPHmJh6tXM8TybvNbjpo2DgHcy9V8AEyQ09zo= X-Received: by 2002:a17:903:1b07:b0:2b4:5c20:ec7 with SMTP id d9443c01a7336-2b97c4ca086mr56632805ad.41.1777438136978; Tue, 28 Apr 2026 21:48:56 -0700 (PDT) From: alistair23@gmail.com X-Google-Original-From: alistair.francis@wdc.com To: palmer@dabbelt.com, liwei1518@gmail.com, daniel.barboza@oss.qualcomm.com, zhiwei_liu@linux.alibaba.com, chao.liu.zevorn@gmail.com, qemu-riscv@nongnu.org, qemu-devel@nongnu.org Cc: alistair23@gmail.com, =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Alistair Francis Subject: [PULL 09/51] target/riscv: Conceal MO_ALIGN|MO_TE within load_acquire / store_release Date: Wed, 29 Apr 2026 14:47:10 +1000 Message-ID: <20260429044752.4176397-10-alistair.francis@wdc.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260429044752.4176397-1-alistair.francis@wdc.com> References: <20260429044752.4176397-1-alistair.francis@wdc.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::635; envelope-from=alistair23@gmail.com; helo=mail-pl1-x635.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.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, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable 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 @gmail.com) X-ZM-MESSAGEID: 1777438666686158500 From: Philippe Mathieu-Daud=C3=A9 All callers of gen_load_acquire() and gen_store_release() set both the MO_ALIGN|MO_TE flags. Set them once in each callee. Signed-off-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Alistair Francis Message-ID: <20260318103122.97244-7-philmd@linaro.org> Signed-off-by: Alistair Francis --- target/riscv/insn_trans/trans_rvzalasr.c.inc | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/target/riscv/insn_trans/trans_rvzalasr.c.inc b/target/riscv/in= sn_trans/trans_rvzalasr.c.inc index 525f01ca34..2b1f73f650 100644 --- a/target/riscv/insn_trans/trans_rvzalasr.c.inc +++ b/target/riscv/insn_trans/trans_rvzalasr.c.inc @@ -29,6 +29,7 @@ static bool gen_load_acquire(DisasContext *ctx, arg_lb_aq= rl *a, MemOp memop) return false; } =20 + memop |=3D MO_ALIGN | MO_TE; memop |=3D (ctx->cfg_ptr->ext_zama16b) ? MO_ATOM_WITHIN16 : 0; =20 tcg_gen_qemu_ld_tl(dest, addr, ctx->mem_idx, memop); @@ -43,26 +44,26 @@ static bool gen_load_acquire(DisasContext *ctx, arg_lb_= aqrl *a, MemOp memop) static bool trans_lb_aqrl(DisasContext *ctx, arg_lb_aqrl *a) { REQUIRE_ZALASR(ctx); - return gen_load_acquire(ctx, a, (MO_ALIGN | MO_SB)); + return gen_load_acquire(ctx, a, MO_SB); } =20 static bool trans_lh_aqrl(DisasContext *ctx, arg_lh_aqrl *a) { REQUIRE_ZALASR(ctx); - return gen_load_acquire(ctx, a, (MO_ALIGN | MO_TE | MO_SW)); + return gen_load_acquire(ctx, a, MO_SW); } =20 static bool trans_lw_aqrl(DisasContext *ctx, arg_lw_aqrl *a) { REQUIRE_ZALASR(ctx); - return gen_load_acquire(ctx, a, (MO_ALIGN | MO_TE | MO_SL)); + return gen_load_acquire(ctx, a, MO_SL); } =20 static bool trans_ld_aqrl(DisasContext *ctx, arg_ld_aqrl *a) { REQUIRE_64BIT(ctx); REQUIRE_ZALASR(ctx); - return gen_load_acquire(ctx, a, (MO_ALIGN | MO_TE | MO_UQ)); + return gen_load_acquire(ctx, a, MO_UQ); } =20 static bool gen_store_release(DisasContext *ctx, arg_sb_aqrl *a, MemOp mem= op) @@ -78,6 +79,7 @@ static bool gen_store_release(DisasContext *ctx, arg_sb_a= qrl *a, MemOp memop) return false; } =20 + memop |=3D MO_ALIGN | MO_TE; memop |=3D (ctx->cfg_ptr->ext_zama16b) ? MO_ATOM_WITHIN16 : 0; =20 /* Add a memory barrier implied by RL (mandatory) and AQ (optional) */ @@ -90,24 +92,24 @@ static bool gen_store_release(DisasContext *ctx, arg_sb= _aqrl *a, MemOp memop) static bool trans_sb_aqrl(DisasContext *ctx, arg_sb_aqrl *a) { REQUIRE_ZALASR(ctx); - return gen_store_release(ctx, a, (MO_ALIGN | MO_SB)); + return gen_store_release(ctx, a, MO_SB); } =20 static bool trans_sh_aqrl(DisasContext *ctx, arg_sh_aqrl *a) { REQUIRE_ZALASR(ctx); - return gen_store_release(ctx, a, (MO_ALIGN | MO_TE | MO_SW)); + return gen_store_release(ctx, a, MO_SW); } =20 static bool trans_sw_aqrl(DisasContext *ctx, arg_sw_aqrl *a) { REQUIRE_ZALASR(ctx); - return gen_store_release(ctx, a, (MO_ALIGN | MO_TE | MO_SL)); + return gen_store_release(ctx, a, MO_SL); } =20 static bool trans_sd_aqrl(DisasContext *ctx, arg_sd_aqrl *a) { REQUIRE_64BIT(ctx); REQUIRE_ZALASR(ctx); - return gen_store_release(ctx, a, (MO_ALIGN | MO_TE | MO_UQ)); + return gen_store_release(ctx, a, MO_UQ); } --=20 2.53.0 From nobody Sat May 30 19:23:38 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1777438198; cv=none; d=zohomail.com; s=zohoarc; b=VWTamaAF8mYRGBB4vrH09YEuc9PIiHj9YGXvQ87j4/TlGKM7LdDkkE/Oql5RMs1n4aJG9agFkRhmdN6F8BPKsUkMFNQqtTA0GG8jVqFZFqaU+2jMcaZaT0Pqtqa5tNGt2VD1OloZr2RiLjSijrcf8KfkHNyS/KpzRDrUR8FwRZY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777438198; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=YzCQglAuFo55n1ndLCOchCoUqIiCrL+yg0KWpQOh6n0=; b=InmgUPcLIEEB/apzBCNhpE9rtn1a8ALHt0iu0u2uZda7QUTq3BOIRi54zvy61tY2ePHP0y1p777sT64z8AIWs4m19zHJlHhQDwLdBaQwdpkmJb87pVMK2dVHKTq9TeenYtGnrwCb0g05XytuIxhJ+8U7886wQzAxtxVtuoJhYNw= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1777438198750143.9665810884569; Tue, 28 Apr 2026 21:49:58 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wHwrF-0001LD-Ka; Wed, 29 Apr 2026 00:49:09 -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 1wHwrE-0001IH-Cc for qemu-devel@nongnu.org; Wed, 29 Apr 2026 00:49:08 -0400 Received: from mail-pl1-x62d.google.com ([2607:f8b0:4864:20::62d]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wHwr9-0008LO-3u for qemu-devel@nongnu.org; Wed, 29 Apr 2026 00:49:08 -0400 Received: by mail-pl1-x62d.google.com with SMTP id d9443c01a7336-2b45cb89f7eso75747825ad.0 for ; Tue, 28 Apr 2026 21:49:02 -0700 (PDT) Received: from toolbx.alistair23.me ([2403:581e:fdf9:0:6209:4521:6813:45b7]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2b988772ae8sm7756145ad.7.2026.04.28.21.48.57 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 28 Apr 2026 21:49:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1777438142; x=1778042942; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=YzCQglAuFo55n1ndLCOchCoUqIiCrL+yg0KWpQOh6n0=; b=ENeIIFyB6cSeSKWRd0efUekk9TITZvBb5So5/cNPI2ZXOOT80C+viUbLG6OMp8vKkm jFF0L4WbUSH9PLB+pI4kvGyi7izeA2Y7VDoPcy9yzCwqDhEI73NqZ5cRkSHhthOWbp28 EYvBZW7ZuIUbi4pueOy0FIPKahkemkUdWRlWO44mMhBCHQQ/+sdjv7VWeudJl8IcWiZK n0+Ui9HZgh9A30VwLSGy18TCedxaQzWmPFl8yX+xK18ZUJr1nhvhNBL/5fNgUZokzjvl InrJlc8GP2g76o2HRJJQF2DCrPOKHZ++zi90naqkuTdCvarh+oK51OyVd8uP2D/LDJbw EsFw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777438142; x=1778042942; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=YzCQglAuFo55n1ndLCOchCoUqIiCrL+yg0KWpQOh6n0=; b=CZxP/6U/YL9yrhiBwgyTPYWZoydqWsXjIKJLy915LxjhjTXElCUqPHAN0v3b2T+Fs5 gX/+UbYBhQFXQRZbt3Q6szo3vE6CQ0IKiquqWDIep1CEOd5YtqQvjx9a8KiHn9x4TiBC 6QsUmIm2U4s2Zx2NT9QWEc6t+/hvPXzHuPk/ikkFSf7ivyFMKUUe6ylPokAJNyko9lci 99Zw4DaSp2C0qGxGrFhrvzCrV/4IH4AOytScF2BnQcWaiBEz0MwSDoqwMGK6xPYnswyy QxdNzKUgx9ltEk0Nf6ZrTuF5KK8dXTkD5z8T/RACJBjcJP+kve7KLqzmO26pn6BJ4c/6 TJVw== X-Forwarded-Encrypted: i=1; AFNElJ+V4rCz3ZFs0qdInuLcpu0zamMxBrZlMljbG4ygddDua+LwfOL9gvx5CI4UAdZXMqcEWJLfriyx0CwQ@nongnu.org X-Gm-Message-State: AOJu0YxxuhdCbJcZqnUxUUqQDj+le2UomdO+DxdgvZZPIgQ9c60uPDti QUqhdDorFYMOXiYfNmBZp4g6SN0XbXD4bcZVPIU70lWvN3GVDfSfO3J2 X-Gm-Gg: AeBDietn4PdOd8D+yVpPx7cIvENhcl/NCoMStrpDJNXy4EU8824+7lNEmSalJGTzg8o uXt7gau0XcUZwBnmGu8YBSywXq4gnQAO+UcRAqrX6sJFYk2qIS8LgiBHW+tWrr6JuRljJQaefi8 P10RJCC9SYZd6I9xiApKNdwIAjCnjlbuyNk9Y6Twjc+hjyOpXbMhqW3upzVt10pHs+yZNvyYfg3 UacBzTDLN8FwaGcHMb8fdswwgqN1r5pF5r4LpOYHLPUCHjcB/e2kpRiAJrLwJ6k+K9N+StJ5gAe VxQRrg07defIcKVPQKC88ca18FXjfK1aU/dZMS/u8J1h97aqkjG+kreoir2uTRHGK01NfYOh8Yz C6yA9Vp08NWCJ9GFcWEAPI1Tlfdyw/i+jjkUta0cko6+7OYJ5IRIjTZaHMzGg6iYN7QAqMjfuJ4 1YxoThbwtYfH2b2hOUPNASti8u8YDOYQ/Wsq/TfwjPXJhqi6hVGzMrAihtPKS/UwU= X-Received: by 2002:a17:902:e0c6:b0:2b2:49a7:a5d0 with SMTP id d9443c01a7336-2b97c43c7d4mr45808795ad.11.1777438141766; Tue, 28 Apr 2026 21:49:01 -0700 (PDT) From: alistair23@gmail.com X-Google-Original-From: alistair.francis@wdc.com To: palmer@dabbelt.com, liwei1518@gmail.com, daniel.barboza@oss.qualcomm.com, zhiwei_liu@linux.alibaba.com, chao.liu.zevorn@gmail.com, qemu-riscv@nongnu.org, qemu-devel@nongnu.org Cc: alistair23@gmail.com, =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Alistair Francis Subject: [PULL 10/51] target/riscv: Factor tiny ldn() helper in gdbstub Date: Wed, 29 Apr 2026 14:47:11 +1000 Message-ID: <20260429044752.4176397-11-alistair.francis@wdc.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260429044752.4176397-1-alistair.francis@wdc.com> References: <20260429044752.4176397-1-alistair.francis@wdc.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::62d; envelope-from=alistair23@gmail.com; helo=mail-pl1-x62d.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.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, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1777438199194158500 From: Philippe Mathieu-Daud=C3=A9 In preparation of having this helper handle CPU runtime endianness changes, factor the ldn() helper out. Signed-off-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Alistair Francis Message-ID: <20260318103122.97244-8-philmd@linaro.org> Signed-off-by: Alistair Francis --- target/riscv/gdbstub.c | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/target/riscv/gdbstub.c b/target/riscv/gdbstub.c index 6a5b7a82fd..be42566bcc 100644 --- a/target/riscv/gdbstub.c +++ b/target/riscv/gdbstub.c @@ -47,6 +47,11 @@ static const struct TypeSize vec_lanes[] =3D { { "uint8", "bytes", 8, 'b' }, }; =20 +static uint64_t ldn(CPURISCVState *env, uint8_t *mem_buf, size_t regsz) +{ + return ldn_p(mem_buf, regsz); +} + int riscv_cpu_gdb_read_register(CPUState *cs, GByteArray *mem_buf, int n) { RISCVCPUClass *mcc =3D RISCV_CPU_GET_CLASS(cs); @@ -84,15 +89,15 @@ int riscv_cpu_gdb_write_register(CPUState *cs, uint8_t = *mem_buf, int n) =20 switch (mcc->def->misa_mxl_max) { case MXL_RV32: - tmp =3D (int32_t)ldl_p(mem_buf); + tmp =3D (int32_t)ldn(env, mem_buf, 4); length =3D 4; break; case MXL_RV64: case MXL_RV128: if (env->xl < MXL_RV64) { - tmp =3D (int32_t)ldq_p(mem_buf); + tmp =3D (int32_t)ldn(env, mem_buf, 8); } else { - tmp =3D ldq_p(mem_buf); + tmp =3D ldn(env, mem_buf, 8); } length =3D 8; break; @@ -130,7 +135,7 @@ static int riscv_gdb_set_fpu(CPUState *cs, uint8_t *mem= _buf, int n) CPURISCVState *env =3D &cpu->env; =20 if (n < 32) { - env->fpr[n] =3D ldq_p(mem_buf); /* always 64-bit */ + env->fpr[n] =3D ldn(env, mem_buf, 8); /* always 64-bit */ return sizeof(uint64_t); } return 0; @@ -162,7 +167,7 @@ static int riscv_gdb_set_vector(CPUState *cs, uint8_t *= mem_buf, int n) if (n < 32) { int i; for (i =3D 0; i < vlenb; i +=3D 8) { - env->vreg[(n * vlenb + i) / 8] =3D ldq_p(mem_buf + i); + env->vreg[(n * vlenb + i) / 8] =3D ldn(env, mem_buf + i, 8); } return vlenb; } @@ -194,7 +199,7 @@ static int riscv_gdb_set_csr(CPUState *cs, uint8_t *mem= _buf, int n) const unsigned regsz =3D riscv_cpu_is_32bit(cpu) ? 4 : 8; =20 if (n < CSR_TABLE_SIZE) { - uint64_t val =3D ldn_p(mem_buf, regsz); + uint64_t val =3D ldn(env, mem_buf, regsz); int result; =20 result =3D riscv_csrrw_debug(env, n, NULL, val, -1); @@ -230,8 +235,7 @@ static int riscv_gdb_set_virtual(CPUState *cs, uint8_t = *mem_buf, int n) const unsigned regsz =3D riscv_cpu_is_32bit(cpu) ? 4 : 8; #ifndef CONFIG_USER_ONLY CPURISCVState *env =3D &cpu->env; - - target_ulong new_priv =3D ldn_p(mem_buf, regsz) & 0x3; + uint64_t new_priv =3D ldn(env, mem_buf, regsz) & 0x3; bool new_virt =3D 0; =20 if (new_priv =3D=3D PRV_RESERVED) { @@ -239,7 +243,7 @@ static int riscv_gdb_set_virtual(CPUState *cs, uint8_t = *mem_buf, int n) } =20 if (new_priv !=3D PRV_M) { - new_virt =3D (ldn_p(mem_buf, regsz) & BIT(2)) >> 2; + new_virt =3D (ldn(env, mem_buf, regsz) & BIT(2)) >> 2; } =20 if (riscv_has_ext(env, RVH) && new_virt !=3D env->virt_enabled) { --=20 2.53.0 From nobody Sat May 30 19:23:38 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1777438209; cv=none; d=zohomail.com; s=zohoarc; b=GkncJbz7ayRWeE8gkJJc9EVacNa8aL+wlBq0cIjFh2bHuzlCBBUgh/MJWNHddMDGLSeAi6ggCrpFMS/3JK9YXLhR62MaAaS0LsxGm2We5Nyvj4i7ktrFJxKYfiC/dHKr7x7XJ4U+CNFbvdgntWekMMjs2LHalVeKkHj8cyAMjV8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777438209; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=CvgZDDVcfV8DLmoSwqxj+6lV+VN16zkZ0t0yAAk4yH4=; b=X7w+dTJsN7fOknu1S1Qw4pw3nP+mHacMlk0EGXdYQMG13zJLr/cGWP8WMPYaHZ1NaIg7/f4XcGc8C76CzVJEpG/hTgpcQ6A7MtkOpHQqY59vFOrelaf9feODEkA9nCohAoO14bjYqY/CbjfbsvQRkNkmfU/iuyNljofgtljoR8M= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1777438209231946.5596318113323; Tue, 28 Apr 2026 21:50:09 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wHwrH-0001M6-1s; Wed, 29 Apr 2026 00:49:11 -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 1wHwrF-0001Kt-E6 for qemu-devel@nongnu.org; Wed, 29 Apr 2026 00:49:09 -0400 Received: from mail-pl1-x633.google.com ([2607:f8b0:4864:20::633]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wHwrD-0008Lz-Qf for qemu-devel@nongnu.org; Wed, 29 Apr 2026 00:49:09 -0400 Received: by mail-pl1-x633.google.com with SMTP id d9443c01a7336-2b9705613ddso16498695ad.1 for ; Tue, 28 Apr 2026 21:49:07 -0700 (PDT) Received: from toolbx.alistair23.me ([2403:581e:fdf9:0:6209:4521:6813:45b7]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2b988772ae8sm7756145ad.7.2026.04.28.21.49.02 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 28 Apr 2026 21:49:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1777438146; x=1778042946; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=CvgZDDVcfV8DLmoSwqxj+6lV+VN16zkZ0t0yAAk4yH4=; b=R2uXS83b7aVfhSyZLH/hmDazZiuLInWzeWuedNA8PS3NxjRERE3pI9V2fkHl/Qom4l 1Tcv/PN5yYV5NAPnyVHg7pAimUtQ6NToOIxK4OLVU0LzuMxW8qIfWaJUH/SWm4IiNjhT HG+deM9YpjXk5LrYubl+wB5MwiPY4+PXboAgtDYxJES0F/31Hv0OuYhN52yAxGSm5U+U JVNeIpSoDlFwV5S2GmTwix6mQZfM5VTkgCpvkW3XlUyYrJHTx4Q2lWDsZa8vIZp2pOcT yaWg9gkIgC6XsKUY1+0F8dIxuoYTkzZZGaxnTT1R1KVhhD2QgeSg7oEGskBFnNsh1MRx PNog== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777438146; x=1778042946; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=CvgZDDVcfV8DLmoSwqxj+6lV+VN16zkZ0t0yAAk4yH4=; b=JibmKz2P4le6Jcdv9Yc7fvWzyndNPER+pJoiqn4YN02LPTuiwxh5QJ1ToavZkF8KUb fZ7FVifr/3bE5w337Gw7ZZwWM9jPlRRW1RDXt1OzhOF+e/n1eeulx02R0CRMtXbRnhbG rEE2+d03fpPtW4As5ByArWdJ3VJwe79FX3U4b0t9LmGpeKHCXGCH3lPQJc1SteBSNLwW PIGF/xXzPqZHDMdX0eJY1bK8U2l/pE/YjJ9LyrqDQjwC0dV862GiraLdcdvXZHBO3t7o E+Wy7zjALbYQIyxAPK+73XCchYxhWG/SiCdLzLNrGsxjIN7Niia7ak6n+ht/zHDkUfil yRVg== X-Forwarded-Encrypted: i=1; AFNElJ/+hkydnOXpUa5dxsZZull3IOHdQcKZCq8pZ3yzoyrwVIsNolCt0pZu1P6mslAdR2sjB3eF7ggr4y+L@nongnu.org X-Gm-Message-State: AOJu0Yzbiotu8ZPP12yssWo4TDRPXTqygd7V4GSSVRwP38azu2fDE9PW 1mAdHaiRHHqbwX3LIFU8ONDwHQ35OKgwE54EXf0bcVnzCUaglwwQBV6i X-Gm-Gg: AeBDieuyWMd6MIQcCQ7TRWhXlwFMz/OYdUKUsS0NSRHaFJ65n9K8Rs4cG/Xaro3yZ27 4Bp9PoYoSwYqNVtoWs+gTCmksKEIeW/6gXFjNVxNr1u5SrbBJUvj2p/d997TJzgBDTcdKtO8Ezl nUUS+4iF/BkmZwyYmkxStA0Y0nLqhP9+0VGtESv31Q1IISa/u5x4u4fNgyHDDpd4A9KEJXn103k Kw+4295A4p5GwhF2kF2obTgtjEPHTAfWG0KfHnq8ykTBS8M52hmQ9Au3l8WUXGUL1jhB8Jt3oyW AmgWrEGAtrSdmZYvFD0QATKNeatnz9/ZC5ShUuo7UI2ygm6aAdFc0gSD5aCfnHPmP9Kf+nNGFI0 RxZKsxC4yRX/WmOBRHPLiDRYuSGLmHsECEoqzugmQwG+H2M01NsS9fxKaiER1LM2eO9ut55PqvY QTJnyOIFDaaPr+3iGMnt5HFmndMb60JmCbtCSevxM/hfSAHB7VXcSq X-Received: by 2002:a17:902:eec2:b0:2b4:5f67:5914 with SMTP id d9443c01a7336-2b987442b4fmr16318365ad.33.1777438146530; Tue, 28 Apr 2026 21:49:06 -0700 (PDT) From: alistair23@gmail.com X-Google-Original-From: alistair.francis@wdc.com To: palmer@dabbelt.com, liwei1518@gmail.com, daniel.barboza@oss.qualcomm.com, zhiwei_liu@linux.alibaba.com, chao.liu.zevorn@gmail.com, qemu-riscv@nongnu.org, qemu-devel@nongnu.org Cc: alistair23@gmail.com, =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Alistair Francis Subject: [PULL 11/51] target/riscv: Simplify riscv_cpu_gdb_write_register() Date: Wed, 29 Apr 2026 14:47:12 +1000 Message-ID: <20260429044752.4176397-12-alistair.francis@wdc.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260429044752.4176397-1-alistair.francis@wdc.com> References: <20260429044752.4176397-1-alistair.francis@wdc.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::633; envelope-from=alistair23@gmail.com; helo=mail-pl1-x633.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.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, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1777438211426154100 From: Philippe Mathieu-Daud=C3=A9 Use a single ldn() call, sign-extend once. Signed-off-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Alistair Francis Message-ID: <20260318103122.97244-9-philmd@linaro.org> Signed-off-by: Alistair Francis --- target/riscv/gdbstub.c | 25 ++++++------------------- 1 file changed, 6 insertions(+), 19 deletions(-) diff --git a/target/riscv/gdbstub.c b/target/riscv/gdbstub.c index be42566bcc..a5c1263878 100644 --- a/target/riscv/gdbstub.c +++ b/target/riscv/gdbstub.c @@ -84,33 +84,20 @@ int riscv_cpu_gdb_write_register(CPUState *cs, uint8_t = *mem_buf, int n) RISCVCPUClass *mcc =3D RISCV_CPU_GET_CLASS(cs); RISCVCPU *cpu =3D RISCV_CPU(cs); CPURISCVState *env =3D &cpu->env; - int length =3D 0; - uint64_t tmp; + const size_t regsize =3D mcc->def->misa_mxl_max =3D=3D MXL_RV32 ? 4 : = 8; + uint64_t tmp =3D ldn(env, mem_buf, regsize); =20 - switch (mcc->def->misa_mxl_max) { - case MXL_RV32: - tmp =3D (int32_t)ldn(env, mem_buf, 4); - length =3D 4; - break; - case MXL_RV64: - case MXL_RV128: - if (env->xl < MXL_RV64) { - tmp =3D (int32_t)ldn(env, mem_buf, 8); - } else { - tmp =3D ldn(env, mem_buf, 8); - } - length =3D 8; - break; - default: - g_assert_not_reached(); + if (env->xl < MXL_RV64) { + tmp =3D (int32_t)tmp; } + if (n > 0 && n < 32) { env->gpr[n] =3D tmp; } else if (n =3D=3D 32) { env->pc =3D tmp; } =20 - return length; + return regsize; } =20 static int riscv_gdb_get_fpu(CPUState *cs, GByteArray *buf, int n) --=20 2.53.0 From nobody Sat May 30 19:23:38 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1777438660; cv=none; d=zohomail.com; s=zohoarc; b=PsOlAxcRWut6m9qsX8YP9Uao3klo8uz7y0/XgBazfFGtXan+wfBWrLYYyPNYakmlDtnkGbr4amSYWqOwsC+i5SI6nKVlqk616z3TkpAYa1i025ICRWqDDRIj/Gki4d+L4086MXQHUdGe5IXW56zo1mboH9A4ncPAAk29pbdbS0U= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777438660; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=cRThZhlDdYDMRAwOPXW2eKuqfgG85s+OsOROYluam24=; b=QHkFpVOacEU0wWDXeBmaoEQ479axDsUlYWqPmerG0cV1agkDwNT+auzxgVghEzbdY2jZrGkfVuFTHfpQKwVB1CKP7OvZTSSvbxRv3fCSSRPol2cexMelL4vTOWiLYXf+sDs9zrlHn05wsWyZsT7s9rUsFD0GLt6Fe1wo/EKiPog= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1777438660273752.77601952398; Tue, 28 Apr 2026 21:57:40 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wHwrL-0001co-Nx; Wed, 29 Apr 2026 00:49:15 -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 1wHwrK-0001Zk-8i for qemu-devel@nongnu.org; Wed, 29 Apr 2026 00:49:14 -0400 Received: from mail-pl1-x632.google.com ([2607:f8b0:4864:20::632]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wHwrI-0008N5-Px for qemu-devel@nongnu.org; Wed, 29 Apr 2026 00:49:14 -0400 Received: by mail-pl1-x632.google.com with SMTP id d9443c01a7336-2b0afa0210bso55920035ad.2 for ; Tue, 28 Apr 2026 21:49:12 -0700 (PDT) Received: from toolbx.alistair23.me ([2403:581e:fdf9:0:6209:4521:6813:45b7]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2b988772ae8sm7756145ad.7.2026.04.28.21.49.06 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 28 Apr 2026 21:49:10 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1777438151; x=1778042951; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=cRThZhlDdYDMRAwOPXW2eKuqfgG85s+OsOROYluam24=; b=RGXLiU+QBDaXlxfC2bGxsfDSO5a5beiCKg2ysQr7pv5o6G17kNtB5Brz13WaVea2ON GWIOEiJHe3t1koYGltm91nsOOxjW+MxYXtwk+qWFViDyQZ1lOvohiFJ3cgPklmAXIawH +sbv9tP656MoFpT+wbB3rOX9WhWjGV4m3ysC5twW54EWxg11xosBmm9IWzado2lwXDpF 5RA18E8evebyVJf8WAS/0jdTUBZnvFuuLOqhbwp64cRHs/2aBEVkUQ+6VKrS6+Ml+icg RxUq6r8ykSDCRjdInIgq0fsgS6ZLe3+Wyj9ct4YvuNveMQg5SQ69x5aWvD5uSszuezJO W+IQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777438151; x=1778042951; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=cRThZhlDdYDMRAwOPXW2eKuqfgG85s+OsOROYluam24=; b=Tsi04eNxE3JJ/e9wb9X6aWy+XNn79eNIB+2Wf0ZhqBio7nOscdE7K86ArBnrzT7FGA nT5fx/zYianQZH8oampuhoxn1QAFwmHmnahfxKcd8vHyns4ds8pVPVK0liqO5DXn9cXF YcFo8tWyXFO42flhedpB6dX0RMxKJVLk4xqhSfX/czDdI7G+2Z7hwvfbTOFqA+OdMxWI MB9BU2UlYPLzw1fTywuS1Rr+YZgBbSfxWsgZajGXRYQVhnXGAUcRlp2Sp3bQ3eVP5PPL 5IVT/6RktCT127osUssvR8TT0rp3RfAggevJ/yaf0XqcNKUHpI42NvryenH2estOzBNA ZtyA== X-Forwarded-Encrypted: i=1; AFNElJ9H2lm9fV3blX0eHoJS2bAEQhXHpkli6ic+EstUG42h6j/4Hu9A4BOvvsSvZ8132/acWNfz0ULAyO+3@nongnu.org X-Gm-Message-State: AOJu0YxAX9/T4qG0fNXOvmnkby+clwdFDr3043Rg5u0lnSZCDClIhQIw 61MLfGjQsK1V8AMB9uXdnhQ3B2GY90iFnX8wSlo3MO42Pe0zy/BDEbAb X-Gm-Gg: AeBDieu9z8ntS5QsuXpOFcR6BgJBXOtTkex81gC4p7VjhwddC7n9oJceaIqsGhmW5m7 Nf5h/Ba/5K0tl3hBkMBA8Le06STNnRLgZJQcdgJmWG3tWkybFz+cUbmohDR3RMJi943wLXwV4Te QVlxwOTa4xEl5I1v4BOw/mUmo9BlwGPAMIVZM72J27HrWHhr7bx0YdB4uBPLvBlgF5avft94ewG gQLr2FiMyaSKfRinrlaqqyw/G9w0oiW6RSlMFObouDhQvs9pQysqFGbijchKAU60bDt9VFAYkEF UfBntUKrFP89Gmjj1bqjTNo4MdZ7oSs+yBtguhSvffYkuc4IH0+DWd7c8A+VLJrTH0pkQ9AAbjO Zo+VhSA73bqgMNee18PQ3Fu6HqxWKRRbOg0yotfhVuTnIwuKfaF0lyQTenrCyrAkpQRQllBiDnw A2WLGv1RnwLarhE1ltp2X33bGZVK8PkCUjcStIuoY8o5X//G2fFsY4 X-Received: by 2002:a17:902:8b88:b0:2b7:86be:7673 with SMTP id d9443c01a7336-2b9872f8691mr15236545ad.6.1777438151302; Tue, 28 Apr 2026 21:49:11 -0700 (PDT) From: alistair23@gmail.com X-Google-Original-From: alistair.francis@wdc.com To: palmer@dabbelt.com, liwei1518@gmail.com, daniel.barboza@oss.qualcomm.com, zhiwei_liu@linux.alibaba.com, chao.liu.zevorn@gmail.com, qemu-riscv@nongnu.org, qemu-devel@nongnu.org Cc: alistair23@gmail.com, =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Alistair Francis Subject: [PULL 12/51] target/riscv: Expose mo_endian_env() Date: Wed, 29 Apr 2026 14:47:13 +1000 Message-ID: <20260429044752.4176397-13-alistair.francis@wdc.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260429044752.4176397-1-alistair.francis@wdc.com> References: <20260429044752.4176397-1-alistair.francis@wdc.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::632; envelope-from=alistair23@gmail.com; helo=mail-pl1-x632.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.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, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1777438660682158500 From: Philippe Mathieu-Daud=C3=A9 Move mo_endian_env() definition to "internals.h" for re-use. Do not restrict to system emulation only because this will also be used by user emulation code. Signed-off-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Alistair Francis Message-ID: <20260318103122.97244-10-philmd@linaro.org> Signed-off-by: Alistair Francis --- target/riscv/internals.h | 12 ++++++++++++ target/riscv/op_helper.c | 14 -------------- 2 files changed, 12 insertions(+), 14 deletions(-) diff --git a/target/riscv/internals.h b/target/riscv/internals.h index 35b923c4bf..860c47732b 100644 --- a/target/riscv/internals.h +++ b/target/riscv/internals.h @@ -62,6 +62,18 @@ static inline bool mmuidx_2stage(int mmu_idx) return mmu_idx & MMU_2STAGE_BIT; } =20 +static inline MemOp mo_endian_env(CPURISCVState *env) +{ + /* + * A couple of bits in MSTATUS set the endianness: + * - MSTATUS_UBE (User-mode), + * - MSTATUS_SBE (Supervisor-mode), + * - MSTATUS_MBE (Machine-mode) + * but we don't implement that yet. + */ + return MO_TE; +} + /* share data between vector helpers and decode code */ FIELD(VDATA, VM, 0, 1) FIELD(VDATA, LMUL, 1, 3) diff --git a/target/riscv/op_helper.c b/target/riscv/op_helper.c index 6ccc127c30..dde40a5549 100644 --- a/target/riscv/op_helper.c +++ b/target/riscv/op_helper.c @@ -28,20 +28,6 @@ #include "exec/tlb-flags.h" #include "trace.h" =20 -#ifndef CONFIG_USER_ONLY -static inline MemOp mo_endian_env(CPURISCVState *env) -{ - /* - * A couple of bits in MSTATUS set the endianness: - * - MSTATUS_UBE (User-mode), - * - MSTATUS_SBE (Supervisor-mode), - * - MSTATUS_MBE (Machine-mode) - * but we don't implement that yet. - */ - return MO_TE; -} -#endif - /* Exceptions processing helpers */ G_NORETURN void riscv_raise_exception(CPURISCVState *env, RISCVException exception, --=20 2.53.0 From nobody Sat May 30 19:23:38 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1777438625; cv=none; d=zohomail.com; s=zohoarc; b=P6YwOH8kQz4GZrUARPFpg1ziUy4KGigOuJSODZDz2iHFxq1CAfy8UZ3Yy+qo43qg7LDHs0EmbJr9pid4IlHFcyp4wxIdXYbX0HkcjjzazOVXKZaa3Pu92r4yYi1FznvQqThT2bXLxoXVM8l67DyST0HtEP/uOMMVPzdNHoXEqoM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777438625; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=VYaCpLhM2B+aL5Il3mvnrndYFUZT3mEw0ylxbbpyQAA=; b=aTbhU8O1gGNh1Z8Yaxzx8aBVUVWCzyNokDwV8Cy3SyjDDs3UDee5l6gY3Q1y8AcgNQasMBTDRDoZsdQIowGazdE03r7a6dcmwf7h/h5T5Zb392OdTzcmHfmV1Vh/W0D2+V1NGbfw1+ewDiqHDlBE5sSnI7eBfB1+e4aZ2/0T05U= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 177743862503552.8332507862026; Tue, 28 Apr 2026 21:57:05 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wHwrR-0001iX-Ml; Wed, 29 Apr 2026 00:49: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 1wHwrP-0001hR-MZ for qemu-devel@nongnu.org; Wed, 29 Apr 2026 00:49:19 -0400 Received: from mail-pl1-x636.google.com ([2607:f8b0:4864:20::636]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wHwrN-0008OL-ID for qemu-devel@nongnu.org; Wed, 29 Apr 2026 00:49:19 -0400 Received: by mail-pl1-x636.google.com with SMTP id d9443c01a7336-2b2589c26e3so112391385ad.1 for ; Tue, 28 Apr 2026 21:49:17 -0700 (PDT) Received: from toolbx.alistair23.me ([2403:581e:fdf9:0:6209:4521:6813:45b7]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2b988772ae8sm7756145ad.7.2026.04.28.21.49.11 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 28 Apr 2026 21:49:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1777438156; x=1778042956; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=VYaCpLhM2B+aL5Il3mvnrndYFUZT3mEw0ylxbbpyQAA=; b=TPWDjjfkr2zuU2q+9BI7fBZehBNJMeijBzGxxmWrzok0cvLxRIaoZGRyXJkAD7xfjJ PicVZiCjW3kAQaP86ISgFZE8aWG7gbS8hG9jtMGxcMBaR4MLmdCkoiKW10lOo/SdaFPl qeVNMMq/GsvGjepRWYbbbfYYsjw6F2NU9wDyDYp9Ug5qSu9W/9f5TzVJQAr7oJLXIqHY /7SyY29roNbNVanH2TXibae/XXOnfWA9Q5qBbTPNkSmV0okbwdAFCWTox0S1G/uGlZVe uyWQXcclZJwuG2UetavekXuz5AxzPqRPgVrNjpNaK9FUJ2kDqo88f0MzvSXi4ZDC/IPK klKQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777438156; x=1778042956; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=VYaCpLhM2B+aL5Il3mvnrndYFUZT3mEw0ylxbbpyQAA=; b=fcgS5UpFz/zvJjJGMs/W8a0RUf9Ox+HUl7I28sA4VCy0SxH/nkPrsxtsYxM9qIydTJ tcmcQ1jwOLtfKHF99AeAC4CqFrkTxX6slVl91vDMhbmayN02m/+AXp5dlgogDk9X0ZVs qwmd8ituTsXUeZRlsNuFGTX8ZFgmGHqyc80MbV8wlDhwEspU1/cgw1vHKpYO8jRVqn/o MeKWcWcMjoEmjglPel0O3AOFJfib3zS2xOaMTatoGfSd1fyudA6K4zDvE5zGnFQ3PCNB 4mlOmVxcCnT2L9XDm9VcNUXJj2OmNbhIUne/9vEOgp7Q6Hd4CzAref+Xcl8nrv9xACd8 PCuA== X-Forwarded-Encrypted: i=1; AFNElJ8BZHGF2QRhNAuVn+cKooYXM4RnDhNdjocvtYSMipUbUvL9hMjYof27QmuIOQ675ZRrNUMtdKHfUk5h@nongnu.org X-Gm-Message-State: AOJu0Ywq57+zyGl6/u18UaHjsQo8Lvj1KCOeYXwqcamST5TAQB3OErVU ldbiFcodvoXeIYXE2FbYCL3MUd0s3ODu9umG7mBmLbOdUdFBONbE1hz1 X-Gm-Gg: AeBDieuMT8xra1K6d6EDugdcz/1hqx30bv/XKG2yKSF0NGU0A/sOHYRG8P7jkNs1Nzg ZC3a1jG4WN5SnCfsEZTHr0PPOa2SJtJs0fUMw/c8WTaLWbezjNibI5iEcNGNpl42aPHF2GL3Yc3 o3J4xpOIVEkFJoPlhGo/PcIiAS9O9iiqroK6EcJRKeMgZIquRvMQqvSL+od5Rt7BnnUeHf5fAZu 6baBS+PSZ3Oiv6gK57tgKAtkImImqeneDq+yY56zpgpI/VIPqn/TsS/k+cMaQPB7a3aHzaDSAgd SoMcohCGpjHDwRiMDN6I8mb4n0ZVvWNHImPdoYZZqQ1Pz/VQjA5/BnG2CDHh05+EwbJO2kOs+Jp 2DizraKAc+DK+I2iAd56B/R3H6k6SgkvsSZ6A6YQ1lt8UGhmCtyHaSPa1153IwxsmKzb77YZPtM e9ZuZ3P6xiPwEMMzROKHu0Q7TpNdqAfCyAI7eKlUAPzXOGIVnJy3XW X-Received: by 2002:a17:903:3bcc:b0:2b9:87e0:1f80 with SMTP id d9443c01a7336-2b987e02b8emr20731155ad.24.1777438156061; Tue, 28 Apr 2026 21:49:16 -0700 (PDT) From: alistair23@gmail.com X-Google-Original-From: alistair.francis@wdc.com To: palmer@dabbelt.com, liwei1518@gmail.com, daniel.barboza@oss.qualcomm.com, zhiwei_liu@linux.alibaba.com, chao.liu.zevorn@gmail.com, qemu-riscv@nongnu.org, qemu-devel@nongnu.org Cc: alistair23@gmail.com, =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Alistair Francis Subject: [PULL 13/51] target/riscv: Have gdbstub consider CPU endianness Date: Wed, 29 Apr 2026 14:47:14 +1000 Message-ID: <20260429044752.4176397-14-alistair.francis@wdc.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260429044752.4176397-1-alistair.francis@wdc.com> References: <20260429044752.4176397-1-alistair.francis@wdc.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::636; envelope-from=alistair23@gmail.com; helo=mail-pl1-x636.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.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, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable 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 @gmail.com) X-ZM-MESSAGEID: 1777438627365154101 From: Philippe Mathieu-Daud=C3=A9 Consider CPU endianness when accessing registers. Signed-off-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Alistair Francis Message-ID: <20260318103122.97244-11-philmd@linaro.org> Signed-off-by: Alistair Francis --- target/riscv/gdbstub.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/target/riscv/gdbstub.c b/target/riscv/gdbstub.c index a5c1263878..2c6ccd4761 100644 --- a/target/riscv/gdbstub.c +++ b/target/riscv/gdbstub.c @@ -20,6 +20,7 @@ #include "exec/gdbstub.h" #include "gdbstub/helpers.h" #include "cpu.h" +#include "internals.h" =20 struct TypeSize { const char *gdb_type; @@ -49,7 +50,7 @@ static const struct TypeSize vec_lanes[] =3D { =20 static uint64_t ldn(CPURISCVState *env, uint8_t *mem_buf, size_t regsz) { - return ldn_p(mem_buf, regsz); + return (mo_endian_env(env) =3D=3D MO_LE ? ldn_le_p : ldn_be_p)(mem_buf= , regsz); } =20 int riscv_cpu_gdb_read_register(CPUState *cs, GByteArray *mem_buf, int n) --=20 2.53.0 From nobody Sat May 30 19:23:38 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1777438636; cv=none; d=zohomail.com; s=zohoarc; b=H2AJk9bOxPm3gheyhUtYCX/H+7yeHn2qHgrzlKLxrXeZWokNmfCZ0dhDvp/OS1E5H8EI+J54iCqgEVdmgpwvIexYZqciTF8tJqIqfiSURTuVlbvQHqtQPMYco2FK3sVobmXqu8YaTmnM0tTCLQ+Kamp3X2aC6MVoNFvl+ZyWhPw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777438636; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=DU3UjdfEZ3JGk1yzzSHiuHXC6FomJ4ypw5VY1zuKTMU=; b=eISwOf9yIkxLfdtWK+XrennsdPDAtqsZJfyQEGvdCfsZMfeDrKWWolmOlRen0SWo+HzauiIA8x1mGFRHiFdjFZGZXs2SfbvB6a1iV+ngDgtiduOj9y+mVWxgq7sKmT6e2JAU5ZePtVsRWDxVI8GD7jAqDIAmFqBir0/zTbXNGPI= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1777438636655751.4821003176812; Tue, 28 Apr 2026 21:57:16 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wHwrV-00026w-Dt; Wed, 29 Apr 2026 00:49:25 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wHwrT-0001xS-Sq for qemu-devel@nongnu.org; Wed, 29 Apr 2026 00:49:23 -0400 Received: from mail-pl1-x636.google.com ([2607:f8b0:4864:20::636]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wHwrS-0008PR-5Y for qemu-devel@nongnu.org; Wed, 29 Apr 2026 00:49:23 -0400 Received: by mail-pl1-x636.google.com with SMTP id d9443c01a7336-2b7adb38d65so58101315ad.2 for ; Tue, 28 Apr 2026 21:49:21 -0700 (PDT) Received: from toolbx.alistair23.me ([2403:581e:fdf9:0:6209:4521:6813:45b7]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2b988772ae8sm7756145ad.7.2026.04.28.21.49.16 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 28 Apr 2026 21:49:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1777438161; x=1778042961; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=DU3UjdfEZ3JGk1yzzSHiuHXC6FomJ4ypw5VY1zuKTMU=; b=nIbJ2a3plfB5kFBvKEi207oVs8AYn35VdU6Dly3c3H3jfQuCn4hUWb0swMdYdJoOCs NRqdCtviqen8pPmEMZc3RarU82tPYXb+4h8SlEnzEqmFoa3G+8TDQpV2Nettr7kxFiu6 4OZ5XaGa/h02R1CNrW4QM8tQ6ws/Zhzkh/TJiy0IRGu0PDWgfM14ZKR8M00W9YpkCB66 5SLh/FEpF7V7JdMc29kX/NUXdodx40b3cFOJcszzg/Pa0Ij0cYeXoaaGWl4YQf2IofzE Jg/2nIm5tHPmp7h5ZXyWlBoNfTEE66TNq2pch8Y5qiLo1GbFvGQkaubuo3KcjuDO96Vy JuIQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777438161; x=1778042961; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=DU3UjdfEZ3JGk1yzzSHiuHXC6FomJ4ypw5VY1zuKTMU=; b=VxiW4sx91THYY5MYLotngzR9YbBM0CWJoWFFVAX7xKe0Q3y8P31rOl+K5uIsK9N/Gn qoltAbXb0t+9rmog7wq9isa6/SmgHA78GyP7J8ZXmyjwTZY1g9GD6mvZ+uBW89RAspk3 u71JOED03Uq6HGLAF8ORK/esopdIE3iVxpSJI30w0p7Y2jM+nj4940PbUyhdYM0qE68K dse5Mofg+/do/i5LjwhBQuttb8WJDkyFLfoopHZ90IkZdcu8EgeKlVxM4yUTANoWVomt T3PxPIeLfIeaNuYZsbLTNGniFEGtDmz/F25ZjM0SpjKct1dtJhxvSSmTqX8iCwbdk0Tb ET9Q== X-Forwarded-Encrypted: i=1; AFNElJ/bLcF9NXpJFdDZ36xQAOWPFjzj8JnjNo4/w41ooHtFsrR2+A1AvxSxyVzxMUPMNtbfskqiRbThmsTf@nongnu.org X-Gm-Message-State: AOJu0YyEKJjYDLK8aZGVB/4uTwAXJYFx4eYcYRJP8RfrnsnR1hhFPDJw nJqr4FmUm4HwkAguRlxVzm42og5OxtEbdc9ptsfB5L8U1DYVJ2dmNKlc X-Gm-Gg: AeBDievpCTlAfibx2u3ddHClXG3qvp1fO4hHQc18QO5CP5trZkiUV91AivM9nQVNUDv kstkL/Fkg/0ZXCviuwEA68gVWjTc5nsNsFFc5kHzpId+7MSCqDie/mvG1PZf9qM6esclfTTFkHh CZTuZCauMVC11IPYp4O8e7HQCwqPu1pNtRwqSvAnx4eOPMIW8loPYfwDQXyUaGyM/tuchrUjEBS nk7avQTf0SY7CCXxXrRtcYQlvkOeNdvS014t59Y2TQcaJ6vjW6cRCtbjCOfykMh0hi7UY3eqEIT jFH0Gqf7wtguXQaXlRXzXhCPByeLHHc56b80aMGEHpJGS/fdGzC0YpG0iLsD9CpDom9zW3OLIr2 XW7vdikegi+5lPw96MeIM7u3YD4f8IWyTrfdm17Wjp11ps83DCPr7eFd/6uYrqsl54EMZGrnYjw Rrhy2ycnITdILwkS1YZpMmtediA3LxyzawT3/81jFsfEekhzR/A4Qm X-Received: by 2002:a17:903:3c6b:b0:2b2:50e1:f104 with SMTP id d9443c01a7336-2b97c3d4e15mr62585895ad.3.1777438160824; Tue, 28 Apr 2026 21:49:20 -0700 (PDT) From: alistair23@gmail.com X-Google-Original-From: alistair.francis@wdc.com To: palmer@dabbelt.com, liwei1518@gmail.com, daniel.barboza@oss.qualcomm.com, zhiwei_liu@linux.alibaba.com, chao.liu.zevorn@gmail.com, qemu-riscv@nongnu.org, qemu-devel@nongnu.org Cc: alistair23@gmail.com, =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Alistair Francis Subject: [PULL 14/51] target/riscv: Replace MO_TE by mo_endian (MIPS extension) Date: Wed, 29 Apr 2026 14:47:15 +1000 Message-ID: <20260429044752.4176397-15-alistair.francis@wdc.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260429044752.4176397-1-alistair.francis@wdc.com> References: <20260429044752.4176397-1-alistair.francis@wdc.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::636; envelope-from=alistair23@gmail.com; helo=mail-pl1-x636.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.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, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1777438638623158500 From: Philippe Mathieu-Daud=C3=A9 Replace compile-time MO_TE evaluation by runtime mo_endian() one, which expand target endianness from DisasContext. Signed-off-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Alistair Francis Message-ID: <20260318103122.97244-12-philmd@linaro.org> Signed-off-by: Alistair Francis --- target/riscv/insn_trans/trans_xmips.c.inc | 24 +++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/target/riscv/insn_trans/trans_xmips.c.inc b/target/riscv/insn_= trans/trans_xmips.c.inc index 37572563ae..c1a30156d3 100644 --- a/target/riscv/insn_trans/trans_xmips.c.inc +++ b/target/riscv/insn_trans/trans_xmips.c.inc @@ -47,6 +47,8 @@ static bool trans_ccmov(DisasContext *ctx, arg_ccmov *a) /* Load Doubleword Pair. */ static bool trans_ldp(DisasContext *ctx, arg_ldp *a) { + MemOp memop =3D MO_SQ | mo_endian(ctx); + REQUIRE_XMIPSLSP(ctx); REQUIRE_64_OR_128BIT(ctx); =20 @@ -56,11 +58,11 @@ static bool trans_ldp(DisasContext *ctx, arg_ldp *a) TCGv addr =3D tcg_temp_new(); =20 tcg_gen_addi_tl(addr, src, a->imm_y); - tcg_gen_qemu_ld_tl(dest0, addr, ctx->mem_idx, MO_TE | MO_SQ); + tcg_gen_qemu_ld_tl(dest0, addr, ctx->mem_idx, memop); gen_set_gpr(ctx, a->rd, dest0); =20 tcg_gen_addi_tl(addr, addr, 8); - tcg_gen_qemu_ld_tl(dest1, addr, ctx->mem_idx, MO_TE | MO_SQ); + tcg_gen_qemu_ld_tl(dest1, addr, ctx->mem_idx, memop); gen_set_gpr(ctx, a->rs3, dest1); =20 return true; @@ -69,6 +71,8 @@ static bool trans_ldp(DisasContext *ctx, arg_ldp *a) /* Load Word Pair. */ static bool trans_lwp(DisasContext *ctx, arg_lwp *a) { + MemOp memop =3D MO_SL | mo_endian(ctx); + REQUIRE_XMIPSLSP(ctx); =20 TCGv src =3D get_gpr(ctx, a->rs1, EXT_NONE); @@ -77,11 +81,11 @@ static bool trans_lwp(DisasContext *ctx, arg_lwp *a) TCGv addr =3D tcg_temp_new(); =20 tcg_gen_addi_tl(addr, src, a->imm_x); - tcg_gen_qemu_ld_tl(dest0, addr, ctx->mem_idx, MO_TE | MO_SL); + tcg_gen_qemu_ld_tl(dest0, addr, ctx->mem_idx, memop); gen_set_gpr(ctx, a->rd, dest0); =20 tcg_gen_addi_tl(addr, addr, 4); - tcg_gen_qemu_ld_tl(dest1, addr, ctx->mem_idx, MO_TE | MO_SL); + tcg_gen_qemu_ld_tl(dest1, addr, ctx->mem_idx, memop); gen_set_gpr(ctx, a->rs3, dest1); =20 return true; @@ -90,6 +94,8 @@ static bool trans_lwp(DisasContext *ctx, arg_lwp *a) /* Store Doubleword Pair. */ static bool trans_sdp(DisasContext *ctx, arg_sdp *a) { + MemOp memop =3D MO_UQ | mo_endian(ctx); + REQUIRE_XMIPSLSP(ctx); REQUIRE_64_OR_128BIT(ctx); =20 @@ -99,10 +105,10 @@ static bool trans_sdp(DisasContext *ctx, arg_sdp *a) TCGv addr =3D tcg_temp_new(); =20 tcg_gen_addi_tl(addr, src, a->imm_w); - tcg_gen_qemu_st_tl(data0, addr, ctx->mem_idx, MO_TE | MO_UQ); + tcg_gen_qemu_st_tl(data0, addr, ctx->mem_idx, memop); =20 tcg_gen_addi_tl(addr, addr, 8); - tcg_gen_qemu_st_tl(data1, addr, ctx->mem_idx, MO_TE | MO_UQ); + tcg_gen_qemu_st_tl(data1, addr, ctx->mem_idx, memop); =20 return true; } @@ -110,6 +116,8 @@ static bool trans_sdp(DisasContext *ctx, arg_sdp *a) /* Store Word Pair. */ static bool trans_swp(DisasContext *ctx, arg_swp *a) { + MemOp memop =3D MO_SL | mo_endian(ctx); + REQUIRE_XMIPSLSP(ctx); =20 TCGv src =3D get_gpr(ctx, a->rs1, EXT_NONE); @@ -118,10 +126,10 @@ static bool trans_swp(DisasContext *ctx, arg_swp *a) TCGv addr =3D tcg_temp_new(); =20 tcg_gen_addi_tl(addr, src, a->imm_v); - tcg_gen_qemu_st_tl(data0, addr, ctx->mem_idx, MO_TE | MO_SL); + tcg_gen_qemu_st_tl(data0, addr, ctx->mem_idx, memop); =20 tcg_gen_addi_tl(addr, addr, 4); - tcg_gen_qemu_st_tl(data1, addr, ctx->mem_idx, MO_TE | MO_SL); + tcg_gen_qemu_st_tl(data1, addr, ctx->mem_idx, memop); =20 return true; } --=20 2.53.0 From nobody Sat May 30 19:23:38 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1777438736; cv=none; d=zohomail.com; s=zohoarc; b=FLOVutJwNvZT7dsVexysGbkUBGmd/9jZl+BmEOZjAd1mCVNhBez5vjpL2Eoo4W/Od8oKS6Lq7MhHqx7kTc1wnRBCJOpZ13P8w2QFa1vAYgQ2YHmI95xdeBY3Oj6qwxj0Iu++Np0h0opDjX8iKFYv861B79t1BZDrYtXHI9rV8/Y= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777438736; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=7wR/oXjKpk4leSOy7dojdHq270BtFNLUhfA6WOnCB+M=; b=CHjCAT4iVFviT4JFo8bNHbWt3fM7JhnyaEHs/eGrXxSklGf2pbQ7V4LOt/qcdZzSRwumpgnw+7W1/mzkNL1vz40Qb7wmm/TmQhzybzMmYyPYz4AKCbTEkCs/3mgxoSxq1+002C+3okvReYqJj6BSkofTJ7IrdkQpVq/pDBs7eI8= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1777438736088818.7544024321426; Tue, 28 Apr 2026 21:58:56 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wHwra-0002NV-7d; Wed, 29 Apr 2026 00:49: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 1wHwrY-0002EI-DS for qemu-devel@nongnu.org; Wed, 29 Apr 2026 00:49:28 -0400 Received: from mail-pg1-x52d.google.com ([2607:f8b0:4864:20::52d]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wHwrW-0008R7-Ux for qemu-devel@nongnu.org; Wed, 29 Apr 2026 00:49:28 -0400 Received: by mail-pg1-x52d.google.com with SMTP id 41be03b00d2f7-c70fb6aa323so4294068a12.3 for ; Tue, 28 Apr 2026 21:49:26 -0700 (PDT) Received: from toolbx.alistair23.me ([2403:581e:fdf9:0:6209:4521:6813:45b7]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2b988772ae8sm7756145ad.7.2026.04.28.21.49.21 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 28 Apr 2026 21:49:25 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1777438165; x=1778042965; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=7wR/oXjKpk4leSOy7dojdHq270BtFNLUhfA6WOnCB+M=; b=MtnXBEspaSajpD/Dkaw/Uwb3j35iPQQVMIE9tHkT3uJpswLuTR/fFiaXPKQkRJMzhI o1r72wIPEPQCqT4gSOZDboB4xB5qkkHsVzJ2lPcBdKGAxvN2tiCq+ZbgsHPp0AcNeC54 FKm7erkIGqMUsB56P6GFL8fIT5s5wmbVK3JfFIqcCJfL6s5V8GPT3/iGy+GUszUGnk9E pgiDqg6d8nRRyS+QnwqGyRq397M3vy6taKAT2je426xTI7A1vSpGdCVJx3Mn3IVKT2eW alG810JZS6e0SoNQvrNrjkIm1xAYCH+/IF4D+RwQxvArlal8Ub7qc137YMyLfRe5d3FT Agdw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777438165; x=1778042965; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=7wR/oXjKpk4leSOy7dojdHq270BtFNLUhfA6WOnCB+M=; b=nM0epxNC/bJOvS9lJoZs3fALEfcw0uwfN6gU3uPL9c3oY1PdUwjhsvw37xVlTE3TLg u/5pQiPfxmTq3g+UWT5vNRMabZzYqwrZCkbsoaTy4QuBegWS241Fe3F1KDHW79MQPnxp pDIQ/ciwGHfdOkf5Ev275MzsqIAzx3xTnHackI7Gn14d2seyCKBEq/pj9Z4oyDMb1Fn0 ZFTW0Pvg2cQhv+ZNja1XPE1p/MfqkcgbGr1655j/uGd8vcyHCPSIdWwtq1UGM3cU76Iz ycLCSI2O4X6tmrlMw7NmURzipK22xOc9BBv5O4cVcikrWbVPL/W0LKgAdt2cO5Xz9X8w Mv7A== X-Forwarded-Encrypted: i=1; AFNElJ/SiaTdU+3gSI3hl1Zl5vpnVPJpKkaJ2euXVfvR06NsbUfqtlScccMJ0Cjpm+OgEHlLDs+K0knG4S2J@nongnu.org X-Gm-Message-State: AOJu0YzIFxebhXuGl9j4YRj6suynNAp9j0IpLXqXse7raqAbGq9Z3lFe WCy4XcE1w7N9xDxR9U5oQkb6blpOG5UC1d2tLGN/R0DXCAwXEfnl8pVw X-Gm-Gg: AeBDietLo2ig3/wjuRyPox4SpQcd5rkT9ZaF43z6TZGgbZOPO6yw6j0QLoPtB52SIkW Ub17XoYxupc3y3GJJlr5FAVL6gsJcQ+LIt4IhDMYJ14JqPDV7nb0+OEJMB8UXl49vg9NDumuGHG tvS8Q5WK6pN5vjYYQb8Q7kzeGjQM7Tw8pQPHxc9DQV1CtAdZjq4/nsnPdHGuJjvt6Iby8Ch9Xmh 9dypSVmhpqZ8Aj2mXSzCYfo0EbhSEXh9N17Z5tC6/cnBldBGn27OMfQYXbPIwydvtKavyoovlEh 3ZVg6nZoL+/Qd0v5hgeda8rENN/s0YXG+pAmw2kKqxj0O4jF2gVjNeZvpGc4eCpxo1GVq5+04JN FfQ7hojb8rVSFzA08+FTNk3pqaPzZ87U4YTQuKSWoD6B7YgFpthDmk06s3gzq5BTg40kfSkUIWg am4uXCoLEV7T+Kp6KzvMrJGswguG36CnbjQoD2Z1IyRzHcz0+ddEV+ X-Received: by 2002:a17:90b:5826:b0:35f:b46e:e329 with SMTP id 98e67ed59e1d1-364a0ae656amr2340700a91.6.1777438165582; Tue, 28 Apr 2026 21:49:25 -0700 (PDT) From: alistair23@gmail.com X-Google-Original-From: alistair.francis@wdc.com To: palmer@dabbelt.com, liwei1518@gmail.com, daniel.barboza@oss.qualcomm.com, zhiwei_liu@linux.alibaba.com, chao.liu.zevorn@gmail.com, qemu-riscv@nongnu.org, qemu-devel@nongnu.org Cc: alistair23@gmail.com, =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Alistair Francis Subject: [PULL 15/51] target/riscv: Replace MO_TE by mo_endian (Zilsd extension) Date: Wed, 29 Apr 2026 14:47:16 +1000 Message-ID: <20260429044752.4176397-16-alistair.francis@wdc.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260429044752.4176397-1-alistair.francis@wdc.com> References: <20260429044752.4176397-1-alistair.francis@wdc.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::52d; envelope-from=alistair23@gmail.com; helo=mail-pg1-x52d.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.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, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1777438738724154100 From: Philippe Mathieu-Daud=C3=A9 Replace compile-time MO_TE evaluation by runtime mo_endian() one, which expand target endianness from DisasContext. Signed-off-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Alistair Francis Message-ID: <20260318103122.97244-13-philmd@linaro.org> Signed-off-by: Alistair Francis --- target/riscv/insn_trans/trans_zilsd.c.inc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/target/riscv/insn_trans/trans_zilsd.c.inc b/target/riscv/insn_= trans/trans_zilsd.c.inc index 445406cf01..f50c52f22c 100644 --- a/target/riscv/insn_trans/trans_zilsd.c.inc +++ b/target/riscv/insn_trans/trans_zilsd.c.inc @@ -30,7 +30,7 @@ static bool gen_load_i64(DisasContext *ctx, arg_ld *a) TCGv addr =3D get_address(ctx, a->rs1, a->imm); TCGv_i64 tmp =3D tcg_temp_new_i64(); =20 - tcg_gen_qemu_ld_i64(tmp, addr, ctx->mem_idx, MO_TE | MO_SQ); + tcg_gen_qemu_ld_i64(tmp, addr, ctx->mem_idx, MO_SQ | mo_endian(ctx)); =20 if (a->rd =3D=3D 0) { return true; @@ -85,7 +85,7 @@ static bool gen_store_i64(DisasContext *ctx, arg_sd *a) } else { tcg_gen_concat_tl_i64(tmp, data_low, data_high); } - tcg_gen_qemu_st_i64(tmp, addr, ctx->mem_idx, MO_TE | MO_SQ); + tcg_gen_qemu_st_i64(tmp, addr, ctx->mem_idx, MO_SQ | mo_endian(ctx)); =20 return true; } --=20 2.53.0 From nobody Sat May 30 19:23:38 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1777438270; cv=none; d=zohomail.com; s=zohoarc; b=bTFvQSq+poPovFYRzu3iHUEJ77UwGQ4CNbU0PkGBinlGcQ0UAGs0G8bpU+hqxjiHnG2yV+S0aEDQV0bcLpAoc1rGHcs1rwyQxzH4nckHG1qYS15CwshMPX339F3rrUgs7PccFS0O6nIjhR6suFxwv15lHNao6+OLg3BuqkZo63c= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777438270; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=kSxzjeWowjH6pPZPuZ1B8y5yQscu5B8SeT7B6HwvaD0=; b=VBozwW6DT/r3cJJ2uzoZngEC8SkD65JaJkhDq94/X0UfhlsaQeb3acFU+sP/Pfd6PVNqNsAAfsXX/zVZOgblXpkmvV3/y+m402ePhWN842AcKRl5Vd9QrspiVDnZpTqx8r+dJKncvOPm0gw5eNetyPyTZYN5TqnZbjPMfOsBSHI= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1777438270481502.50787354558383; Tue, 28 Apr 2026 21:51:10 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wHwri-0002ni-H4; Wed, 29 Apr 2026 00:49:40 -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 1wHwrd-0002fz-Iw for qemu-devel@nongnu.org; Wed, 29 Apr 2026 00:49:33 -0400 Received: from mail-pl1-x636.google.com ([2607:f8b0:4864:20::636]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wHwrb-0008S1-Si for qemu-devel@nongnu.org; Wed, 29 Apr 2026 00:49:33 -0400 Received: by mail-pl1-x636.google.com with SMTP id d9443c01a7336-2aaed195901so52974125ad.0 for ; Tue, 28 Apr 2026 21:49:31 -0700 (PDT) Received: from toolbx.alistair23.me ([2403:581e:fdf9:0:6209:4521:6813:45b7]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2b988772ae8sm7756145ad.7.2026.04.28.21.49.26 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 28 Apr 2026 21:49:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1777438170; x=1778042970; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=kSxzjeWowjH6pPZPuZ1B8y5yQscu5B8SeT7B6HwvaD0=; b=XzPA577w2lkuI5TiJoegOAidhNfIJfmmU3fyyKT6k+T2rmL7tKHffMjAOI3iDkuazK NI7KbegUP/+3E0llQtlccxJhpKLWGDEiatL2VfE9j21QvYf3Sq/hAkqgGGg7yKmo3NjC rNugsR3N+VkGHPIt0n4efdTRQkog/bufOZ7jniiu6a+U4SbWmmNuba5uIP86eWXmN4E4 V63DDeUotxlDuH7aSJjgD3EgZeuOrYPX67RTCusf8okUOZKk/pHZUNqdUB+fWqsPszSF L3iNN9BUCYeDELFhhcGxbDd08ESNVMPAVXLe1SQnBeVvH2HGuSwZjO4M1yV9brWvFzob vTXA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777438170; x=1778042970; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=kSxzjeWowjH6pPZPuZ1B8y5yQscu5B8SeT7B6HwvaD0=; b=GuUriyQoYrXj0Z5tnHOkWCdRpx6QlPvnBAiqzkUvtqRmFb6qGcmko/SdnyNALoJ6to fTj3ha6MRp+JyGHtYfIdA86PNBEZodvjwt9ukTm6lyufEzdjB3U0j+DBvwSf4Hh2MLad Va+7SXmOmgtFF1d4kMg7TYxlow4e8vAMA5IbicKwDOelYR6KZTv2LgQ4dNSyeJznYDRA 442H78TlOcSn8HKTEvKL5ey3LSE+BlDLM2oCZ5vGInfcoaDrIlxM3JT9ON0WCTEgJVi/ J6uxueo/6TyUd1zFmujKiuOWbAZFaTd48zBc+lM5MLgtShCXHpc4K2rMogcoT+R/5n1g dSZQ== X-Forwarded-Encrypted: i=1; AFNElJ936oGppuFL8u0XMG++ms0ZSZ7JFwd64l5PF67Q/hygA1zkvoskz3dhgyvjkrbuwHuRuxVOdvwLctZs@nongnu.org X-Gm-Message-State: AOJu0YzCGnCMnRxDaE1BeaB9WUMaCDQbQdTbl7LzVGvRMFQDBHqBP0j3 2Q+4NYXwaPnAS7u6WrCT/6VrJZp3Q0DtW7EEk8YG3rTWhYDvk9bGn3Sm X-Gm-Gg: AeBDiesMTZenZYpbcgrdd9D9YEP47hUpUMaNP129KYv1gSYY/4MSrzhFr/0JNIPh6+r Ml7i8tkKLZmlO2qWwwnhBBecE6qEAxQUo+yxytvSN1nme5zroC/5Y5HiVwg5UwMiDBUw4NS1O9L ENBrnOGIC7xxD5E70TPWAXlEO6WTn5EGzrFRtW5sDmz2FFwaiPh+aNETKnYFWbY9sryi5qpFMAy TVYtXfYRL7FjfpNIfUklla7WKv2Vim1Svqbm+Z3EfhK5qKDfW9gJo0gclxA4baDBxkGql5lyuRM eQBfsrKwulN05awb7qqcvWOiY9tYSok0nVRUqzCnxwgFmjbiNCaehm+mud0szC/PBscqI8LYdnv CzBd6ONtXCxas2p9Hs1jqQ1nWZ6bmSFNDoIQn/lToLS06yoZTbF6BIQzIT/fsJc5LizeRUolaD4 7Iv9AVgB1mrxm46hJOCJuMG2PrzXYH1tFqSdrE81ubmvW0PRAmMGtSRUeULM9Xf5k= X-Received: by 2002:a17:903:1ae7:b0:2b7:aa20:3c61 with SMTP id d9443c01a7336-2b97c4b6a0cmr60140225ad.33.1777438170310; Tue, 28 Apr 2026 21:49:30 -0700 (PDT) From: alistair23@gmail.com X-Google-Original-From: alistair.francis@wdc.com To: palmer@dabbelt.com, liwei1518@gmail.com, daniel.barboza@oss.qualcomm.com, zhiwei_liu@linux.alibaba.com, chao.liu.zevorn@gmail.com, qemu-riscv@nongnu.org, qemu-devel@nongnu.org Cc: alistair23@gmail.com, =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Alistair Francis Subject: [PULL 16/51] target/riscv: Replace MO_TE by mo_endian (Zalasr extension) Date: Wed, 29 Apr 2026 14:47:17 +1000 Message-ID: <20260429044752.4176397-17-alistair.francis@wdc.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260429044752.4176397-1-alistair.francis@wdc.com> References: <20260429044752.4176397-1-alistair.francis@wdc.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::636; envelope-from=alistair23@gmail.com; helo=mail-pl1-x636.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.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, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1777438272339154100 From: Philippe Mathieu-Daud=C3=A9 Replace compile-time MO_TE evaluation by runtime mo_endian() one, which expand target endianness from DisasContext. Signed-off-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Alistair Francis Message-ID: <20260318103122.97244-14-philmd@linaro.org> Signed-off-by: Alistair Francis --- target/riscv/insn_trans/trans_rvzalasr.c.inc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/target/riscv/insn_trans/trans_rvzalasr.c.inc b/target/riscv/in= sn_trans/trans_rvzalasr.c.inc index 2b1f73f650..0f307affec 100644 --- a/target/riscv/insn_trans/trans_rvzalasr.c.inc +++ b/target/riscv/insn_trans/trans_rvzalasr.c.inc @@ -29,7 +29,7 @@ static bool gen_load_acquire(DisasContext *ctx, arg_lb_aq= rl *a, MemOp memop) return false; } =20 - memop |=3D MO_ALIGN | MO_TE; + memop |=3D MO_ALIGN | mo_endian(ctx); memop |=3D (ctx->cfg_ptr->ext_zama16b) ? MO_ATOM_WITHIN16 : 0; =20 tcg_gen_qemu_ld_tl(dest, addr, ctx->mem_idx, memop); @@ -79,7 +79,7 @@ static bool gen_store_release(DisasContext *ctx, arg_sb_a= qrl *a, MemOp memop) return false; } =20 - memop |=3D MO_ALIGN | MO_TE; + memop |=3D MO_ALIGN | mo_endian(ctx); memop |=3D (ctx->cfg_ptr->ext_zama16b) ? MO_ATOM_WITHIN16 : 0; =20 /* Add a memory barrier implied by RL (mandatory) and AQ (optional) */ --=20 2.53.0 From nobody Sat May 30 19:23:38 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1777438767; cv=none; d=zohomail.com; s=zohoarc; b=JooVGUbdIKRvGhtoX/3FEHCkVCb0QHGxZM4goRr45jqk/PO8jKW0qn2t5Jmi1htyuz/4jq5puFR7R0yrlwV+LYk6x1DNMByLCcspFWvvEzmtp4DONA0zOqQvAFsgVd3bDTPngfvGNClM+FcJGFuYzPWXiDZ3IvqusQqK3V/MMcQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777438767; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=NI1miOV7mrsZ3JQDa5kG7B4WvfyBv1kO+i190i8zle0=; b=ON9OIpOtSsarMLnFr8JC/WTGUmybzBFc7q2IKaX4LuGcpGiOx3H5+LzkZvR9SM9Gv1+/Ca1cnaRwoKqciBB/OkGvsFI3zoo3OqoBzNFQEVDqcok6iJJViw12Sm9eGvOakhCGsgFM9zKhAkbs4/0qShKCV+aNzw99KgZNgM04DlQ= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1777438767957961.1935933865491; Tue, 28 Apr 2026 21:59:27 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wHwro-00034m-GB; Wed, 29 Apr 2026 00:49:44 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wHwri-0002v0-Nk for qemu-devel@nongnu.org; Wed, 29 Apr 2026 00:49:40 -0400 Received: from mail-pj1-x1035.google.com ([2607:f8b0:4864:20::1035]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wHwrg-0008Sr-MI for qemu-devel@nongnu.org; Wed, 29 Apr 2026 00:49:37 -0400 Received: by mail-pj1-x1035.google.com with SMTP id 98e67ed59e1d1-35da9692ec3so10202288a91.1 for ; Tue, 28 Apr 2026 21:49:36 -0700 (PDT) Received: from toolbx.alistair23.me ([2403:581e:fdf9:0:6209:4521:6813:45b7]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2b988772ae8sm7756145ad.7.2026.04.28.21.49.30 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 28 Apr 2026 21:49:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1777438175; x=1778042975; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=NI1miOV7mrsZ3JQDa5kG7B4WvfyBv1kO+i190i8zle0=; b=jB6tx6oEzngKnav3NNjAilL4lbDzTC0vlZWcm9yeNqI2WGBq667oZj26X/wnfYXQNQ OlfQCA3auz8DHw4N9zCB1mQjO0lLpR7B7WeE1lAYAcfFRlGIJQ4zDoZMiHInvEDrpQ2L AnvJ5MPpSPnWyWMWHUz3OWsmpucXwUI3/s+EYtfkSHmyuZxkk8sBgEOcxqETO9FU+AWk JiOX20lzaaeb6Pt+Ldxxtk6qI/pnvjD7bnC7LTgT4xd46mHs+cke9bX6uKb0Va2pJSgh nVezVoIg48RRtsOa+9gxE4Em9A1pGSBkWLZ+LSouLx+lARaz6Bn2FLc6LPEjVEju2mqj EPng== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777438175; x=1778042975; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=NI1miOV7mrsZ3JQDa5kG7B4WvfyBv1kO+i190i8zle0=; b=neX+4P5Q+rwpFGwpWfoiVQUVMTh+ilk3vgCVBeAAfe1coCuebv+Uei1GgAzB/V+NB+ v7pxHP74+zIKBf0u4PgcTaGMuJ9OlD4YdtcHoL8tgxNmfTGsKwLjrfFdcjCQAEnFq0xH +Bh6uso/5/Evl/gC/hTn1ivDdE+AnuB9ZdFB0xORgWnBbTE2cRGbcLsjDvYyLo1beQ5s /UjPfLRnALBK2a1I9BLELR+fa+qbV5Os6c1uQjP6g+zwQmkJ9+OEiXmSzjJfLUz3mz2a k1g0mrhmWw5WTCg0VhKCYwvh2lpuieZvdkPzXWHltXGaen+49OruH4hu3Y3C0qLg1O2Y Lgmw== X-Forwarded-Encrypted: i=1; AFNElJ+8VwShJmYVh9HA4WgBFiB0g4o3P99x8BHIxZGavHHM5xRSgf0eR7hXXFSTBLrnXd6i5yImAOvqgAzB@nongnu.org X-Gm-Message-State: AOJu0Yy8Sck5d02KvJ0VSg8B/tW8Z/H45piEYjQHq4HEnKKpmHmja1Az jDNEmxMjxgJ+b16HJJEHvz8aO9gJobR95P3mmQ0A+8DRbdTnNvA8fcwA X-Gm-Gg: AeBDievnQp2hZc9zICcfMRsb2xrfm3/cE8MnFWFYN5BDIkNz2o75hcrOpv1xRwCIwVB BLr+CKEf4SuW76pKtmQtTIkrRabrJAak/PdUhxBO1ISdOx+Hndldx1M4pAwxtBCMukBSrkP87z6 agBOge6W8vegWEPb8rv9qtLJsCDQviOA1X0BqpvFyu8DtltdKiI6tDBx9dqdHYhieU4bczgHv9w /Vs8EM9XdwVNp3/jovIdIaFKoKciZU5e/uP1qlKwB0fWlDL3aypVAuXyC3vJDUZhXMj9jA9K6Wv 4/NvDLYCi3sfbK2FtPyphi+AI3ZV/kNBjhUXr1fmBPYR1npemqmevViVryKHwuIqRnuOE7lyF+d Z28QchvOi/JwuyGgBi3hyLAeF81syPXlT47+aHSZLnWtxuQbiI1Vvccoro2wjCnWjoOzvCNxw1p Tg1WQ1zAX/LwayjjMY+UG/dJuCC+JLekbp352Ut9n3O48bpGIfFWlq X-Received: by 2002:a17:90b:4d:b0:35a:1762:92fc with SMTP id 98e67ed59e1d1-364a0f61584mr2369199a91.26.1777438175286; Tue, 28 Apr 2026 21:49:35 -0700 (PDT) From: alistair23@gmail.com X-Google-Original-From: alistair.francis@wdc.com To: palmer@dabbelt.com, liwei1518@gmail.com, daniel.barboza@oss.qualcomm.com, zhiwei_liu@linux.alibaba.com, chao.liu.zevorn@gmail.com, qemu-riscv@nongnu.org, qemu-devel@nongnu.org Cc: alistair23@gmail.com, =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Alistair Francis Subject: [PULL 17/51] target/riscv: Replace MO_TE -> MO_LE Date: Wed, 29 Apr 2026 14:47:18 +1000 Message-ID: <20260429044752.4176397-18-alistair.francis@wdc.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260429044752.4176397-1-alistair.francis@wdc.com> References: <20260429044752.4176397-1-alistair.francis@wdc.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::1035; envelope-from=alistair23@gmail.com; helo=mail-pj1-x1035.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.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, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1777438769307158500 From: Philippe Mathieu-Daud=C3=A9 We only build the RISC-V target using little endianness order, therefore the MO_TE definitions expand to the little endian one. Use the latter which is more explicit. Mechanical change running: $ sed -i -e s/MO_TE/MO_LE/ \ $(git grep -wl MO_TE target/riscv/) Signed-off-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Alistair Francis Message-ID: <20260318103122.97244-15-philmd@linaro.org> Signed-off-by: Alistair Francis --- target/riscv/internals.h | 2 +- target/riscv/translate.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/target/riscv/internals.h b/target/riscv/internals.h index 860c47732b..460346dd6d 100644 --- a/target/riscv/internals.h +++ b/target/riscv/internals.h @@ -71,7 +71,7 @@ static inline MemOp mo_endian_env(CPURISCVState *env) * - MSTATUS_MBE (Machine-mode) * but we don't implement that yet. */ - return MO_TE; + return MO_LE; } =20 /* share data between vector helpers and decode code */ diff --git a/target/riscv/translate.c b/target/riscv/translate.c index 711080f3fd..1a25c517a2 100644 --- a/target/riscv/translate.c +++ b/target/riscv/translate.c @@ -135,7 +135,7 @@ static inline MemOp mo_endian(DisasContext *ctx) * - MSTATUS_MBE (Machine-mode) * but we don't implement that yet. */ - return MO_TE; + return MO_LE; } =20 #ifdef TARGET_RISCV32 --=20 2.53.0 From nobody Sat May 30 19:23:38 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1777438228; cv=none; d=zohomail.com; s=zohoarc; b=JPLRi5FQva8euQ+2nmdWjcu6ld7c6/Ep0rILlOQqR7zGV86Og5RoOUQv2k6v0EITiM5veWaNlfNSeeW+dTtQWfmcB2tQecUxKzbXFF6D4CrTLbl3wrk2DLcIUiV5j2ghwyybKfO2guQpOKKhh6u71hw10zjRN8y9xxpxxMLOTkk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777438228; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=RnyPHQlUiDDCph8rrdK6ut5dk8ag4T7nwEwsUHMnquw=; b=Ulsjc/0Xg63lucKOltvdfdi2+KzvNLXqi4VMVFNhLBkUmVQaggJcvzppnXgHhnJHrCLE6Vz4aR5MR7ADGQMqnNo7ePVybrhA2af1e8/SUP8LaL2xdBt93CopCEJ4n/eZJSSXz0gIlNoCMVIIPfVUabGd/+gKelcEKp/OkBOXqYM= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1777438228325426.65738971101075; Tue, 28 Apr 2026 21:50:28 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wHwrt-0003Eb-4i; Wed, 29 Apr 2026 00:49:49 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wHwrn-00034l-9z for qemu-devel@nongnu.org; Wed, 29 Apr 2026 00:49:44 -0400 Received: from mail-pg1-x535.google.com ([2607:f8b0:4864:20::535]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wHwrl-0008UO-NP for qemu-devel@nongnu.org; Wed, 29 Apr 2026 00:49:43 -0400 Received: by mail-pg1-x535.google.com with SMTP id 41be03b00d2f7-c7961d7bc09so4937177a12.1 for ; Tue, 28 Apr 2026 21:49:41 -0700 (PDT) Received: from toolbx.alistair23.me ([2403:581e:fdf9:0:6209:4521:6813:45b7]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2b988772ae8sm7756145ad.7.2026.04.28.21.49.35 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 28 Apr 2026 21:49:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1777438180; x=1778042980; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=RnyPHQlUiDDCph8rrdK6ut5dk8ag4T7nwEwsUHMnquw=; b=VRY9+CyoHqlIhAs3MQU6RNhWmymeWGzEfeCoKYZSP4fcQvH/j+jfwbXDEbKnXi368x nOy5tYiqBOBDpjwmtDY3Hi+KQbq5HpwTedrIVKbWc9FXlupjaoYQOWvy258sbrtIouAu 2kAOc4fq9dQxHl/FvTRenuW4tTt5XWBQ6+BbfwZttXnCCEI67ux+jZqdHUs2n9Fstq7O 02ucuNTosfxYrS29qb4VeZEnmcG5zflltOrHXeX1vv9MLIULtGmnF4JTrW4Jvl47vbxp xQ/Kh+pGLoxDIKtdpwLajZoNNsj88hF4gX6U9mxdcc+HgquIAzC4YH27ZM6KMkCPIGeU aoIg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777438180; x=1778042980; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=RnyPHQlUiDDCph8rrdK6ut5dk8ag4T7nwEwsUHMnquw=; b=GRQgnLHCfiHMZ0+Me62/XB2twI4++vI90zjcgS4roEUv8ejYpBvSDw3kpCH+eJWrmN f4BQHutFTkmC0Rn37d9RtT7P0cQ4wz5YBZz1gMiiNx13LWJGYW45ISBHerNjWsqWbLL0 n6tT24pSc1s7WxL+NXZCpFPkPiz7OzaN8AcuTxbw4++sr6+Kq3zhyzTz4NCoYFY+4XRj M+0Eu6vPId7pmAuObp6wjRNotwVvU758SueisUZDcUs77ncK6rtY5UpQSUiWScKhUXwT vyezYPhsUmkFCPTan8wZ6kNXGcpuSJJV9bFXoifU2jZCjtVlLiS4TlMIcRwPZjxrkQQc FFNw== X-Forwarded-Encrypted: i=1; AFNElJ8a4vNmSQrU/qXURgX7cWWfkEAWhAyqWksOPfNy0Y2rHy7z5RVbZsuakBym2zoj4DoBYeHRZgvblYAX@nongnu.org X-Gm-Message-State: AOJu0YzmYfON3NfrwHKPyvxGoQX1YNG3tNQCHByGLJofjR2V4WfPbBrI swd62Rai/yM7I+wMFUuxr7Swfyc1kdrRBN0aQ+6OJ870A8+7VWJd/ehe X-Gm-Gg: AeBDievN5BT6CAaRnDtAPA7IiqJJ4Jl2YcAHjNQlLkN2dsu4wVGcXaOmom0SRh11YYZ yacgBfSn3KuPxpo9uZmKQLQgl4dhRyO/LGyGzk5uqgfzns5dW+F5LF2fk3Gk/ro6RlzSfQL/v5Z o9+hrRKD/RoDDdQjOtOCYY6htqaniofmkueqBJIDKjoUkd34vsWXeKjcJxZDdaIXlTObUYxLS9n Vsf8tkCxsbyds4rQ29NfpTUmCLSaPWlGDlR7shNhnOHmcc5uxC5Hk3h+NUvkj6oOJlH73kF4KuB yE9MTjZtU+2bEPzkU6MiyIE3vDF+UWGdhgkR8rVfWMY3LlRmOy/CFqvGgDZZ3DPOVndnrCnvG9A QfzeBKAdDf8HHSYOUF8MK8evMQZ737dX7VnM1Ip5ghvSxWygcG3/rq2CFqNrdopaW/npfXMSUcX GyumoOgcivR9FjBpnuTC+GB8X31F3AWSlRCQdoC+ubYmskcHQTzUoq X-Received: by 2002:a17:902:ebca:b0:2b2:5704:5715 with SMTP id d9443c01a7336-2b97c43d4d3mr56814955ad.15.1777438180374; Tue, 28 Apr 2026 21:49:40 -0700 (PDT) From: alistair23@gmail.com X-Google-Original-From: alistair.francis@wdc.com To: palmer@dabbelt.com, liwei1518@gmail.com, daniel.barboza@oss.qualcomm.com, zhiwei_liu@linux.alibaba.com, chao.liu.zevorn@gmail.com, qemu-riscv@nongnu.org, qemu-devel@nongnu.org Cc: alistair23@gmail.com, Djordje Todorovic , Alistair Francis , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Subject: [PULL 18/51] target/riscv: Use MO_LE for instruction fetch Date: Wed, 29 Apr 2026 14:47:19 +1000 Message-ID: <20260429044752.4176397-19-alistair.francis@wdc.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260429044752.4176397-1-alistair.francis@wdc.com> References: <20260429044752.4176397-1-alistair.francis@wdc.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::535; envelope-from=alistair23@gmail.com; helo=mail-pg1-x535.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.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, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable 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 @gmail.com) X-ZM-MESSAGEID: 1777438229328158500 From: Djordje Todorovic RISC-V instructions are always little-endian regardless of the data endianness mode configured via mstatus SBE/MBE/UBE bits. Currently, instruction fetches in decode_opc() and the page boundary check use mo_endian(ctx), which returns MO_TE. This happens to work today because RISC-V targets are little-endian only, but is semantically incorrect and will break once mo_endian() is updated to respect runtime data endianness for big-endian support. Use MO_LE explicitly for all instruction fetch paths. Data memory operations (AMOs, loads/stores via mxl_memop) continue to use mo_endian(ctx) as they should respect the configured data endianness. Not-Signed-off-by: Djordje Todorovic Reviewed-by: Alistair Francis Message-ID: <20260311115910.564481-3-djordje.todorovic@htecgroup.com> Signed-off-by: Philippe Mathieu-Daud=C3=A9 Message-ID: <20260318103122.97244-16-philmd@linaro.org> Signed-off-by: Alistair Francis --- target/riscv/translate.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/target/riscv/translate.c b/target/riscv/translate.c index 1a25c517a2..f6b915a7fb 100644 --- a/target/riscv/translate.c +++ b/target/riscv/translate.c @@ -1258,7 +1258,7 @@ static void decode_opc(CPURISCVState *env, DisasConte= xt *ctx) * additional page fault. */ opcode =3D translator_ldl_end(env, &ctx->base, ctx->base.pc_next, - mo_endian(ctx)); + MO_LE); } else { /* * For unaligned pc, instruction preload may trigger additional @@ -1266,7 +1266,7 @@ static void decode_opc(CPURISCVState *env, DisasConte= xt *ctx) */ opcode =3D (uint32_t) translator_lduw_end(env, &ctx->base, ctx->base.pc_next, - mo_endian(ctx)); + MO_LE); } ctx->ol =3D ctx->xl; =20 @@ -1288,7 +1288,7 @@ static void decode_opc(CPURISCVState *env, DisasConte= xt *ctx) opcode =3D deposit32(opcode, 16, 16, translator_lduw_end(env, &ctx->base, ctx->base.pc_next + 2, - mo_endian(ctx))); + MO_LE)); } ctx->opcode =3D opcode; =20 @@ -1404,7 +1404,7 @@ static void riscv_tr_translate_insn(DisasContextBase = *dcbase, CPUState *cpu) if (page_ofs > TARGET_PAGE_SIZE - MAX_INSN_LEN) { uint16_t next_insn =3D translator_lduw_end(env, &ctx->base, ctx->base.pc_next, - mo_endian(ctx)); + MO_LE); int len =3D insn_len(next_insn); =20 if (!translator_is_same_page(&ctx->base, ctx->base.pc_next= + len - 1)) { --=20 2.53.0 From nobody Sat May 30 19:23:38 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1777438316; cv=none; d=zohomail.com; s=zohoarc; b=JgJidfSG3f+1Qie618RG2fl+IPOPhW2nt5XgE7ZD14CNLp/sttLBYuoSV/fy7R5TBI9AMpoNqhyde6pLZz1dys2Hk1teKL7g++Hb1/AYhEhfMaVC/Uqkq4f3whZeHprAuHghcClo6365gPbSeG3YYZ4Sm++CBqvMqGmk96y7HbQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777438316; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=qEDmsR/JqcbgCNghfcXwBD3pCtURvXQEABYF1XFgcWM=; b=R7SX4MLtgyb1YkYVN/eS1Ty3laCsrYCCwxRW6pNWxZV3D8hcisR46D9cw7w8ArPf0kPx7E985a/XRR4qr5bSDoY6wVrDbK0SzYtsQFIsP7TUKLgG/htJ78+2OiO0Ng69aUtXMei5/eIb1TLa7jgU9/djiuIu8lNWGEBlINSQsu4= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1777438316043690.5429986296928; Tue, 28 Apr 2026 21:51:56 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wHwrw-0003X9-HM; Wed, 29 Apr 2026 00:49: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 1wHwrt-0003IG-My for qemu-devel@nongnu.org; Wed, 29 Apr 2026 00:49:50 -0400 Received: from mail-pj1-x1034.google.com ([2607:f8b0:4864:20::1034]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wHwrq-0008VU-On for qemu-devel@nongnu.org; Wed, 29 Apr 2026 00:49:49 -0400 Received: by mail-pj1-x1034.google.com with SMTP id 98e67ed59e1d1-362bb3260f1so6145833a91.2 for ; Tue, 28 Apr 2026 21:49:46 -0700 (PDT) Received: from toolbx.alistair23.me ([2403:581e:fdf9:0:6209:4521:6813:45b7]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2b988772ae8sm7756145ad.7.2026.04.28.21.49.40 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 28 Apr 2026 21:49:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1777438185; x=1778042985; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=qEDmsR/JqcbgCNghfcXwBD3pCtURvXQEABYF1XFgcWM=; b=WhW3ZJezEP0JJ9HrEbWgpCcm4EdrHooWInJs6tGtXH+ZVAyu8i+JhDb+SIOqMrKdFF F14lDm+63prBhKxg0On/70rzyxccgHBHPtWnA/asUJ4s2vCmRrUwuIIggTk58+V24wIM EVgSJt9bwLEu6txQHYUpG3qWo3HB1iDuId5vcJWAwQ2hFdOsf2HHyBPAQeOq0JPwXrbD eWJ8kwrTdKmE9TbZXH7mAci7rOpKmHJ6RwXswymoaWfRFZgTOJvRHprv+DQuG0lXa5lR qNDttXxpVqSUFQr8ec227FJUIQbhaX8iM5Tt97/1fo4LbaBOzW+8+XKnYmxjCWiVudxK IeWA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777438185; x=1778042985; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=qEDmsR/JqcbgCNghfcXwBD3pCtURvXQEABYF1XFgcWM=; b=ea4qksePabF7j5o33oOhu7tEntLx+RKlUJd8PRenmoIt/LcSN/kWtWFy+dGl3sbHsq HJcJ8GP6VflvPzyzjKrktcfJLss1srqb3CFKF+ubCpPMloFcYGqh9e2vQFA28aGLRba2 T68yJdQHbHLXxm8eIqHUHzo2Nqp/ytvLd2kRd86jvhfC+Qfs6Rb3OLxKSVLjC5z6qtqs wR5bXpMCxb3B5UzJg7gtQfwrzakm0FIb2C7XQSOYTHddVcbdoMxFJ2kqLQgZbVzXRwjc VtJori20AKGJ6lMFy3OTjNV8t6D/d47qGsD+sOBfDYar1JlwZwOwsNEoYb49SVo8S7uj DhUQ== X-Forwarded-Encrypted: i=1; AFNElJ+xu+TNOmFrHe9gEI0UB0Cw5MHynH2P4VbbdH/n1zwjeZAUQ47qm6RLM46x6yvX69HQEBpOvdzsMrz+@nongnu.org X-Gm-Message-State: AOJu0YyLooUFdLTPE0GE8nSKPYuWygLAC8eCEAqMDRln493wI5/hLZDT 25ruU/WliklISuORmfWwuAByxumPjPiMttNTDDBB53Bpw8YnPfscVXk6 X-Gm-Gg: AeBDietiHoIMtka9fCXdjIZdTB3nOqYi3BjuJF9XYJASnBB447hO86v7C//5Gaxl5il cU5/n5sXULqG9rTEpDkMik0vbROG3Z/O4H8eyE1fLF8I88WxCcpiflBFRHbpyEV+6hMlLpuloa5 Ekxa5VN2fbjvICrJcrcm7o6erET5rSmc+hAAm4tHGRpduhA7nkF9laZ5RI7HYo2bUPNWWE7z+1P 0ge/+HohY2PNHJVSMHRG/QqvVNPNEqfwoVC3r3SCuBckTpd0g/arAEm6T3zEmBi8/pYwXPuXgPX ESTy3n/YY1UB0gq4yEi8OrBNixSxOoqyAPxGGmSVlXHyU8IDf47juIs7MrrAR/QlA6J1LORTne0 zavFf06vBaVfH3CFgjrBxs5g/u2Gf+DW6kBhb83BQS+ykCYU2En/uKMnOVhNqk2jqDRffPfq9D3 1Tpy9v1lpzFTuF+KSxCZxeBhpR5YmHraV/1A99aQVIcyPNmUuI4Aoa X-Received: by 2002:a17:903:38cd:b0:2ad:d0ff:2ed4 with SMTP id d9443c01a7336-2b98730ca9emr21563935ad.6.1777438185183; Tue, 28 Apr 2026 21:49:45 -0700 (PDT) From: alistair23@gmail.com X-Google-Original-From: alistair.francis@wdc.com To: palmer@dabbelt.com, liwei1518@gmail.com, daniel.barboza@oss.qualcomm.com, zhiwei_liu@linux.alibaba.com, chao.liu.zevorn@gmail.com, qemu-riscv@nongnu.org, qemu-devel@nongnu.org Cc: alistair23@gmail.com, =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Alistair Francis Subject: [PULL 19/51] configs/targets: Forbid RISC-V to use legacy native endianness APIs Date: Wed, 29 Apr 2026 14:47:20 +1000 Message-ID: <20260429044752.4176397-20-alistair.francis@wdc.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260429044752.4176397-1-alistair.francis@wdc.com> References: <20260429044752.4176397-1-alistair.francis@wdc.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::1034; envelope-from=alistair23@gmail.com; helo=mail-pj1-x1034.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.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, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable 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 @gmail.com) X-ZM-MESSAGEID: 1777438317603158500 From: Philippe Mathieu-Daud=C3=A9 All RISC-V related binaries are buildable without a single use of the legacy "native endian" API. Set the transitional TARGET_USE_LEGACY_NATIVE_ENDIAN_API definition to forbid further uses of the legacy API. Signed-off-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Alistair Francis Message-ID: <20260318103122.97244-17-philmd@linaro.org> Signed-off-by: Alistair Francis --- configs/targets/riscv32-linux-user.mak | 1 + configs/targets/riscv32-softmmu.mak | 1 + configs/targets/riscv64-bsd-user.mak | 1 + configs/targets/riscv64-linux-user.mak | 1 + configs/targets/riscv64-softmmu.mak | 1 + 5 files changed, 5 insertions(+) diff --git a/configs/targets/riscv32-linux-user.mak b/configs/targets/riscv= 32-linux-user.mak index f069ab9a0f..d88fdf5e1b 100644 --- a/configs/targets/riscv32-linux-user.mak +++ b/configs/targets/riscv32-linux-user.mak @@ -8,3 +8,4 @@ TARGET_SYSTBL_ABI=3D32 TARGET_SYSTBL_ABI=3Dcommon,32,riscv,memfd_secret TARGET_SYSTBL=3Dsyscall.tbl TARGET_LONG_BITS=3D32 +TARGET_NOT_USING_LEGACY_NATIVE_ENDIAN_API=3Dy diff --git a/configs/targets/riscv32-softmmu.mak b/configs/targets/riscv32-= softmmu.mak index 26080599be..5d5016d008 100644 --- a/configs/targets/riscv32-softmmu.mak +++ b/configs/targets/riscv32-softmmu.mak @@ -5,3 +5,4 @@ TARGET_XML_FILES=3D riscv-32bit-cpu.xml riscv-32bit-fpu.xml= riscv-64bit-fpu.xml ri TARGET_NEED_FDT=3Dy TARGET_LONG_BITS=3D32 TARGET_NOT_USING_LEGACY_LDST_PHYS_API=3Dy +TARGET_NOT_USING_LEGACY_NATIVE_ENDIAN_API=3Dy diff --git a/configs/targets/riscv64-bsd-user.mak b/configs/targets/riscv64= -bsd-user.mak index bc85d9ed04..5b4e138099 100644 --- a/configs/targets/riscv64-bsd-user.mak +++ b/configs/targets/riscv64-bsd-user.mak @@ -3,3 +3,4 @@ TARGET_BASE_ARCH=3Driscv TARGET_ABI_DIR=3Driscv TARGET_XML_FILES=3D riscv-64bit-cpu.xml riscv-32bit-fpu.xml riscv-64bit-fp= u.xml riscv-64bit-virtual.xml TARGET_LONG_BITS=3D64 +TARGET_NOT_USING_LEGACY_NATIVE_ENDIAN_API=3Dy diff --git a/configs/targets/riscv64-linux-user.mak b/configs/targets/riscv= 64-linux-user.mak index bca0864512..35621520c5 100644 --- a/configs/targets/riscv64-linux-user.mak +++ b/configs/targets/riscv64-linux-user.mak @@ -8,3 +8,4 @@ TARGET_SYSTBL_ABI=3D64 TARGET_SYSTBL_ABI=3Dcommon,64,riscv,rlimit,memfd_secret TARGET_SYSTBL=3Dsyscall.tbl TARGET_LONG_BITS=3D64 +TARGET_NOT_USING_LEGACY_NATIVE_ENDIAN_API=3Dy diff --git a/configs/targets/riscv64-softmmu.mak b/configs/targets/riscv64-= softmmu.mak index 5059c55048..a10dc03c04 100644 --- a/configs/targets/riscv64-softmmu.mak +++ b/configs/targets/riscv64-softmmu.mak @@ -6,3 +6,4 @@ TARGET_XML_FILES=3D riscv-64bit-cpu.xml riscv-32bit-fpu.xml= riscv-64bit-fpu.xml ri TARGET_NEED_FDT=3Dy TARGET_LONG_BITS=3D64 TARGET_NOT_USING_LEGACY_LDST_PHYS_API=3Dy +TARGET_NOT_USING_LEGACY_NATIVE_ENDIAN_API=3Dy --=20 2.53.0 From nobody Sat May 30 19:23:38 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1777438242; cv=none; d=zohomail.com; s=zohoarc; b=FB6O9mH8shD2iDpHgarJOGEuIRiWy16KVANQk6cO+QeTLspuKBIRifAIXqo5rOfXluQvCeSjsT0u9wVqXDQXeC54lMGGaqCKEQNYgD+i7KMGzvQCvF21eflw/fhEcUa6cp9toS7zlFBJI3mBFb5HL/NyOgfDXPfCnucXXt2kSpQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777438242; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=wQxi5/VkCKc9ZyyGXjIgaYB2jZ9JIHmdH6v/FJVMUb0=; b=gAnSyKz/TQlJ5M6Gm68sqG/4UlfAAPB1EDxz7p3GFzOxV6/fuKriz5vpeUCoWqZCfSsmbj+NrUaoU7liNprj7taPPUxt5O6uTCMpSYdTSKEvsIIN9DkeUuV8MjYFl9co9HSDw2NPq180YLPM3R2pNKrsSlm+1sxvOBmf7KxeV8s= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1777438242737157.2598329924848; Tue, 28 Apr 2026 21:50:42 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wHwry-0003f7-H3; Wed, 29 Apr 2026 00:49:54 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wHwrx-0003Zg-8U for qemu-devel@nongnu.org; Wed, 29 Apr 2026 00:49:53 -0400 Received: from mail-pl1-x62c.google.com ([2607:f8b0:4864:20::62c]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wHwrv-00005x-Ml for qemu-devel@nongnu.org; Wed, 29 Apr 2026 00:49:52 -0400 Received: by mail-pl1-x62c.google.com with SMTP id d9443c01a7336-2ad9f316d68so53644195ad.2 for ; Tue, 28 Apr 2026 21:49:51 -0700 (PDT) Received: from toolbx.alistair23.me ([2403:581e:fdf9:0:6209:4521:6813:45b7]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2b988772ae8sm7756145ad.7.2026.04.28.21.49.45 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 28 Apr 2026 21:49:49 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1777438190; x=1778042990; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=wQxi5/VkCKc9ZyyGXjIgaYB2jZ9JIHmdH6v/FJVMUb0=; b=j4p4qg/Khzix8+j25HsR5fofscR/bzf/ieBTkZe7M1H8yY7EIzi69Z3kOT7S8pLxvU t1dwQbKJ2MjklH7gnRTfzKfOgpPiYnw7ggztuZm/G+0wN3yDZwA0WZqrAMqjCdsn59ic 2uFVfuMzeu3WNaRQmYnQ7fKsN610zQZtDMQS9p/Vtk6mzpcqax7GwIiywth/TGPVYHMf hTqL1fFp/b8HGabbk12DomeR6gCYkOeTEHF59BGjlhvLM/tfaTV1tuaUn1Mj36CuaNoB ZUOUCe6BPO0LuAHc7RVgolYkf1v5TRMB9fN5g7m7uLam/2FYW5j2l515Lpu5sWtRRvxP rjSg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777438190; x=1778042990; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=wQxi5/VkCKc9ZyyGXjIgaYB2jZ9JIHmdH6v/FJVMUb0=; b=P3kSXY8pEw52GJKTOCB553qy21rsA1Ip0gfQFyJ31Y5IF+/laMZssvqvkKyhDQC20r y4QRW6jkLx02D5n2d2AJhb0+aGi83GB2ucFvEK5UfmXphjvxwI3MMExUii+6pxJnKCIk FMJoqdhoMsZKxnAWiXw6xoHwL2uQaqzr7t4ZyHoxo4ZO13qbW5jhOjdsociTNcoUqOpG 7mtg0utLJM+nYieJVYnZcY0f68k/NO28N7nUaZGQ7avd6324vEQ87T1L/dnGqlnVKohX vMFQbWpqo2vZXbSnF93iUKddyoPXaDpSWm99RfDQAVOI3BmthmuDcq+Rg2Ny60vQ1K+D VJmQ== X-Forwarded-Encrypted: i=1; AFNElJ+UwAjIE1WeqtZtjXl9Auge1o3eJALgoU3W10FtPHEUtXxONJQmym3jGbhacPGOGQ2KwHmVkhssQNb0@nongnu.org X-Gm-Message-State: AOJu0YyWXWYBPmDrDDSl8Md9iyxQ8SU2GUtU7uL2R4cpfZH7iWkJkoSE iARzGBkd4+q19+cQWS9LLG2MuI+Z33BVTouaaOGefAnorKEupNkp8xbnbUA4kw== X-Gm-Gg: AeBDiesD/CMzO3U/WrfA5E1fZ4JOXEMFuxh5/ya5zS33iHdHWRBaSqhOHIEM2LaohdC pCwp1k5EQ6jUwsQ7O3muIv26DOpk5CJNcoeIDcw9DUx1pBoBCv/Tka0huAPn59fUxPFKPlebEGF AVPRWLgmAhqhsmIKgWQs5MD+4YKBEDTgN49njUsAQ4sUkuPvVBRS0yDGIe/Eice4AZKjXt6onB/ 3HPsSV1EI/QMkqgMOivA6EliSL7U0J+yzbg5FVNCqOQ4zVWopiR+u/TaChu79lCH60fXZcwna5y djAgmUn9tUlDxwccMLLfRCpx0TKSOPYAv8fuapIiO+wUqomS43J2baNCQZfkw+4gKgyXT7mDeFe nAcUoPF4q2nOblt0MVh+xpqKRM6ICCtOv7GRbFcHx0gBBPnaf7+ZeMJN1QPDJ41JT3fLU379J+n 4/3nLCFbhPGDB9IMgb6LKOjifDxzxHSC3/A+l1Cjy5S/72Sb+6QHCd X-Received: by 2002:a17:902:7b85:b0:2b0:4aeb:dedc with SMTP id d9443c01a7336-2b98740952cmr15129055ad.26.1777438190275; Tue, 28 Apr 2026 21:49:50 -0700 (PDT) From: alistair23@gmail.com X-Google-Original-From: alistair.francis@wdc.com To: palmer@dabbelt.com, liwei1518@gmail.com, daniel.barboza@oss.qualcomm.com, zhiwei_liu@linux.alibaba.com, chao.liu.zevorn@gmail.com, qemu-riscv@nongnu.org, qemu-devel@nongnu.org Cc: alistair23@gmail.com, Jay Chang , Frank Chang , Alistair Francis Subject: [PULL 20/51] hw/riscv/riscv-iommu-hpm: Fix irq_overflow_left residual value bug Date: Wed, 29 Apr 2026 14:47:21 +1000 Message-ID: <20260429044752.4176397-21-alistair.francis@wdc.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260429044752.4176397-1-alistair.francis@wdc.com> References: <20260429044752.4176397-1-alistair.francis@wdc.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::62c; envelope-from=alistair23@gmail.com; helo=mail-pl1-x62c.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.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, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable 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 @gmail.com) X-ZM-MESSAGEID: 1777438243359158500 Content-Type: text/plain; charset="utf-8" From: Jay Chang Reset irq_overflow_left to 0 before setting up a new timer. Without this fix, a stale irq_overflow_left value from a previous timer setup could cause incorrect timer behavior. Signed-off-by: Jay Chang Reviewed-by: Frank Chang Reviewed-by: Chao Liu Message-ID: <20260325050011.66722-2-jay.chang@sifive.com> Signed-off-by: Alistair Francis --- hw/riscv/riscv-iommu-hpm.c | 1 + 1 file changed, 1 insertion(+) diff --git a/hw/riscv/riscv-iommu-hpm.c b/hw/riscv/riscv-iommu-hpm.c index c5034bff79..e8d284ac8b 100644 --- a/hw/riscv/riscv-iommu-hpm.c +++ b/hw/riscv/riscv-iommu-hpm.c @@ -228,6 +228,7 @@ static void hpm_setup_timer(RISCVIOMMUState *s, uint64_= t value) } =20 overflow_at =3D (uint64_t)qemu_clock_get_ns(QEMU_CLOCK_VIRTUAL) + over= flow_ns; + s->irq_overflow_left =3D 0; =20 if (overflow_at > INT64_MAX) { s->irq_overflow_left =3D overflow_at - INT64_MAX; --=20 2.53.0 From nobody Sat May 30 19:23:38 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1777438243; cv=none; d=zohomail.com; s=zohoarc; b=MV7r/iAPXfebCVa1V5ltvhNfThTfb9kVrVGX/fwZ2VvV8hE+R/3C2NRuGURd2HKsbObNAUvJ1VWjVq2JAAM5MGc0w+admYWa0Py7xqd1srqF+uIoP+qFD+GDeVtSBdsmZ/GRf1SmXeAOTEn+ZGshIgv5iyNXRCc+nYq5bRla2IQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777438243; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=hxLLYH9MzoUJ2vk/paiI+vtwF1wl9GSiiqD56bk7rlg=; b=jmKHYYBsYJawKJ4o8gb1cgAPZWhdbjRchgWutTqcxudOWUDdhJhSZRV987Prc1aCL84fCoMQO+9afG154Z9iGNYsqK9w6xXOGJgiJKACEHxndPM0u/qDe5CekFQz9ivgJCFjE/ScXOu3ytYvce43PlFOcKJCBt4Z1FB0Acwb8jY= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1777438243900983.7539193859966; Tue, 28 Apr 2026 21:50:43 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wHws3-00041a-LD; Wed, 29 Apr 2026 00:49: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 1wHws2-0003q8-DL for qemu-devel@nongnu.org; Wed, 29 Apr 2026 00:49:58 -0400 Received: from mail-pl1-x631.google.com ([2607:f8b0:4864:20::631]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wHws0-00007c-Tm for qemu-devel@nongnu.org; Wed, 29 Apr 2026 00:49:58 -0400 Received: by mail-pl1-x631.google.com with SMTP id d9443c01a7336-2b2503753efso125122475ad.0 for ; Tue, 28 Apr 2026 21:49:56 -0700 (PDT) Received: from toolbx.alistair23.me ([2403:581e:fdf9:0:6209:4521:6813:45b7]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2b988772ae8sm7756145ad.7.2026.04.28.21.49.50 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 28 Apr 2026 21:49:55 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1777438195; x=1778042995; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=hxLLYH9MzoUJ2vk/paiI+vtwF1wl9GSiiqD56bk7rlg=; b=YhuOmwpPEdGml56UBOnB6aAfsMKsfBj0wWYkBksJp/hezPNkfOWQQ3vObSArOLSiBU aAWcL6LMG73PYohLNtEt/8TqmB8CIP8VJ5QSftSiTxOELEGTPlc4IxkLBgosvdBJ1tv/ J9VZsmAxYpGJaXbHZ7YcZBYqDU/95gOhiAabZ+q3bvXqqRJ7aI/l/9LcblYh33NqXq0Q 5/6t5IJJMweAYNErKv5W2hk0hYQCApCQUUmgK/Tzp1+wiAn+lsR42j9lybTLifqViqEl tigAxl+WbXU3/x8UuBSsV0PLcNQQjABatEqfQd1wuRzSh9WBlI+wB6ZINf6F0hJRGpnj vt0A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777438195; x=1778042995; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=hxLLYH9MzoUJ2vk/paiI+vtwF1wl9GSiiqD56bk7rlg=; b=eXCI14iqPbmiF13G5/LQHMtqwSgdZmmryIuMfV8eXptPCB/jgoQ73f9ytxILsaWisk u+bCBhqlLmL2RbifeTUVls+vZE+rD4xPZQKWv+B2IHRX+zNJtf9U5icmdbRD+MA78CSu XLz5sQqsnCPsZkgsAfsWnY1I2e8FVfmD3RisyGWChMC7ozse53eWQIqXYVsdOPZJZy6w iIWWWc25zros7i5rnvB4O2b/ZQFndRq48pfvk3gylGyxo6B1ZlpRHZcAx08lXWHIFLna PPoKndBv5OZj7kJbWcr9UV99g9sY50OQspm/vmAzNUrPFBnDcWTYjoXGe/CDtDwgnEMN QU7g== X-Forwarded-Encrypted: i=1; AFNElJ92FLc5c+heI5t7GoP4uOz/Ptfw+PnIUSR80trJTH/OVqICDLlyPiRxehn1TIgr+cvVsJ3quPvZuuih@nongnu.org X-Gm-Message-State: AOJu0Yyv4s7NTCYFze+tk17ygqmr6nW9Mb6QE/toI3z2Pp/7ZoJKXSkD o/KTdqcQo0FSMypG/Pc3z+6vEx/pLMiklTA7g2fyWU8VIjxVukWAupAk X-Gm-Gg: AeBDieukMD/9WykOqABW0HJ9CDZea6hH+7wP8WCu4CbjOJgDmWq50dwV34/RAvA9TjV 0StkvwAW6bnd5JwPEX7iVDham66iFYwQexySpyjyzobSR2ZYwPmE3hsKo6+ZZPDhuStGMTfvGws 8zmLYvSZKamjCNmkZsD6pYUkO5faAMXsywkmfhfQodY9vnvl6sFHtKUU708LQUMkkRXzVdY9ObJ je3b08Lj2uHmhE/uIe/T9lwnr5oTordDx+AO/yOaoDEgzbHWJ1jRafd8hb8lmQSP0benkIIvYt7 cZkf12u22FvZSmIDGu0IHUpNSWvehb2EIQLIkim+pSxwbhiha8oCE6CEPZvTTZ2zrQSPWydvCEz F1xBvc8APeQ3y4k/2gtyMuAygE4GCitS7/1ofO6L0geM/TFhHinX5uU9eUNcN8+tPK4ZpNr6MNs Xkd/0AABfhclGXm5QHrWWCHjIR/bN8YqnyAUTUdllPJsCrGhS/SNevFww0odq9YRo= X-Received: by 2002:a17:903:2c9:b0:2b2:42da:25cb with SMTP id d9443c01a7336-2b97c4aa15cmr56774395ad.19.1777438195628; Tue, 28 Apr 2026 21:49:55 -0700 (PDT) From: alistair23@gmail.com X-Google-Original-From: alistair.francis@wdc.com To: palmer@dabbelt.com, liwei1518@gmail.com, daniel.barboza@oss.qualcomm.com, zhiwei_liu@linux.alibaba.com, chao.liu.zevorn@gmail.com, qemu-riscv@nongnu.org, qemu-devel@nongnu.org Cc: alistair23@gmail.com, Jay Chang , Frank Chang , Nutty Liu , Alistair Francis Subject: [PULL 21/51] hw/riscv/riscv-iommu: Add IPSR.PMIP RW1C support Date: Wed, 29 Apr 2026 14:47:22 +1000 Message-ID: <20260429044752.4176397-22-alistair.francis@wdc.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260429044752.4176397-1-alistair.francis@wdc.com> References: <20260429044752.4176397-1-alistair.francis@wdc.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::631; envelope-from=alistair23@gmail.com; helo=mail-pl1-x631.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.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, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1777438245876154100 Content-Type: text/plain; charset="utf-8" From: Jay Chang Add proper RW1C (Read/Write 1 to Clear) support for the IPSR.PMIP (Performance Monitor Interrupt Pending) bit, which was missing from the IPSR register implementation. Signed-off-by: Jay Chang Reviewed-by: Frank Chang Reviewed-by: Nutty Liu Reviewed-by: Chao Liu Message-ID: <20260325050011.66722-3-jay.chang@sifive.com> Signed-off-by: Alistair Francis --- hw/riscv/riscv-iommu-bits.h | 1 + hw/riscv/riscv-iommu.c | 4 ++++ 2 files changed, 5 insertions(+) diff --git a/hw/riscv/riscv-iommu-bits.h b/hw/riscv/riscv-iommu-bits.h index 47fe01bee5..a938fd3eb4 100644 --- a/hw/riscv/riscv-iommu-bits.h +++ b/hw/riscv/riscv-iommu-bits.h @@ -189,6 +189,7 @@ enum riscv_iommu_ddtp_modes { #define RISCV_IOMMU_REG_IPSR 0x0054 #define RISCV_IOMMU_IPSR_CIP BIT(0) #define RISCV_IOMMU_IPSR_FIP BIT(1) +#define RISCV_IOMMU_IPSR_PMIP BIT(2) #define RISCV_IOMMU_IPSR_PIP BIT(3) =20 enum { diff --git a/hw/riscv/riscv-iommu.c b/hw/riscv/riscv-iommu.c index 8476405d0e..7ba3240552 100644 --- a/hw/riscv/riscv-iommu.c +++ b/hw/riscv/riscv-iommu.c @@ -2150,6 +2150,10 @@ static void riscv_iommu_update_ipsr(RISCVIOMMUState = *s, uint64_t data) ipsr_clr |=3D RISCV_IOMMU_IPSR_FIP; } =20 + if (!(data & RISCV_IOMMU_IPSR_PMIP)) { + ipsr_clr |=3D RISCV_IOMMU_IPSR_PMIP; + } + if (data & RISCV_IOMMU_IPSR_PIP) { pqcsr =3D riscv_iommu_reg_get32(s, RISCV_IOMMU_REG_PQCSR); =20 --=20 2.53.0 From nobody Sat May 30 19:23:38 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1777438225; cv=none; d=zohomail.com; s=zohoarc; b=DnGp81MHA9hCFJ7ghlI3AWadVApGOy8OVAL9eRScybcjTELy39RHeoC2QkPPOJycJb7IVgIeELTUb+eWhqX6YB/77E4ov3yZ7ei0FkBtdNkiENdShErODC0jqQSP9aElc5WPma7rVL8X0N/UEqHdW/VaUwqludSKXn9DIg+syjU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777438225; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=8aJdIKQsrxZX3dfBBdKm1LLNMdym3GoXLlya5UAy0ms=; b=TFYRQkC/I6ZHx7yJY9BHyMCYrUzUb2GK5aiY4c/M12stXv07TH//60mXf3nBtqJMM1skpBNzIPE4uhRMoMlpzd5idIJ1acShVdizO02eVoSGlVnM8NYcCePQktT1WV/QqYn8ebM19BUh5mIU5Y5VNjf6LrGjdJD8lurOeyQchgw= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1777438225399409.65461195139085; Tue, 28 Apr 2026 21:50:25 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wHws9-0004hG-Kg; Wed, 29 Apr 2026 00:50:05 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wHws7-0004VR-Vt for qemu-devel@nongnu.org; Wed, 29 Apr 2026 00:50:04 -0400 Received: from mail-pl1-x629.google.com ([2607:f8b0:4864:20::629]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wHws6-00008m-74 for qemu-devel@nongnu.org; Wed, 29 Apr 2026 00:50:03 -0400 Received: by mail-pl1-x629.google.com with SMTP id d9443c01a7336-2ad9516a653so61696535ad.0 for ; Tue, 28 Apr 2026 21:50:01 -0700 (PDT) Received: from toolbx.alistair23.me ([2403:581e:fdf9:0:6209:4521:6813:45b7]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2b988772ae8sm7756145ad.7.2026.04.28.21.49.56 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 28 Apr 2026 21:50:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1777438201; x=1778043001; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=8aJdIKQsrxZX3dfBBdKm1LLNMdym3GoXLlya5UAy0ms=; b=C6lxuA69JsRGcmeK1doHk5hCe6aBtYjxq0gNfKRtnKZF6tfEzsMBBoFgDpMNoCI3n2 XRlatSxqXhBQ4fXYUhmstQyhfL8xEuhfrVs/5yhqxP1U4PdSNFzPDuCuQy9THalS1Ong T8CnS6jL3hI+X9Kq4AQ26zY0bpzlejAGfk9sjEBgdFyo+SwBYGWhBnyysO5Yk6QK+HCz 9HG9e7G3OzIRyQ0BMcntiodN2ZL4f4as1QW2z4SF4loXfsOWeolOv0AIaV5IVdsCuDbc l3uQtKuA6eWd2L1e+qKl4Y63nchnO1PHrT7M+NV7324JRY8PuAGQoWRFIPz8tEcQCbJR j5gg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777438201; x=1778043001; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=8aJdIKQsrxZX3dfBBdKm1LLNMdym3GoXLlya5UAy0ms=; b=kwDIdk2d0+obJsFfO4M3XRJiZG9NL7cGlSk/jC8Wism+abanp10b8qIZ4oo0MDN4J3 ErGpuBnPginkzvLEk8o+kTk3/ghOGEfFfY28q9hW4RIH2HkC76eRRDwPOYz/DaMnjYDt jRTHMxTXsY4jpkuBGpNR+tZQSOPCLmOEDJPA12sSK5u9BnNIguYxOhhbe/1AvU0QwnEh j59qXdWICDsAHhbuyHNidqdblQf8rxNNdQGd5aukCAbhKKnJqD6sZKaWZcusO65q4qZy qNidY8D/XbYtrEulWEO4tRmfP8SCoESA/bV0QfzdHy0epZwKgTnO0Igq9z02ZcC4HACZ Ibmg== X-Forwarded-Encrypted: i=1; AFNElJ9K+i4iY9PKXOYIew5Z1TWpGoIR0L9jFpq8v9ZTmg4LVjtQrQn6aG+J5rZzhJOscOvdWDAxjgkdcbIg@nongnu.org X-Gm-Message-State: AOJu0Yx0t5NqdlJPnApINFjf73+n3rKutB6hc4XK8B4q9mcBswo6xbyP AyIyUp2Meq3KvHW8oOPpWbUbQFlOKAUF+ZBnYzZfJgMNEhlfqj6sTjrs X-Gm-Gg: AeBDievgZRt35rmn5bxOZqlybIdQ2ukWywN91wFL3/kllbRfQBR18qMeuU4xZjuYc7D snnI76A6ILpGpOZoouSLxBmZGkYknNWpDg9ZhVg7pqLFoFZJc2rhcrBNEPLIMBAAnSV5x2vb5bl iH25k5ltDJvyFMZ4dMaioy4mhv9t7EwyzyYFw8WVfxo1yHRx70E36zCkWW24teyCgvq6RmZ8yt+ ueY3I7u0HgU4JtB4s6dhw/6qIbsHX0a27RZfD/ZGF/E2ZHn5WUXM2ecY5c55GaLTGXvcOlTdz3d PhuFCiqG2H5bEGMijdOJceqSiYbHEKACAbpgcKL92f10R/e3rFM3urK3cJ/F9mTiyaEhEjjIvMd jyzAEa0VUuGdWjL+OMK0YSs7ZKovjg4Fk5byVtVD/mT7Hsndgw70VHOGF3RXbwiKo1brjjaN/5Q x8LQDP/ObrU7HwAANB3QkVFcFQuA+9lz7G2gpzMpTf8qfaWXj5Uo0apwI+i3xTZl4= X-Received: by 2002:a17:903:11c7:b0:2b2:65db:8c51 with SMTP id d9443c01a7336-2b98730ce7fmr20980545ad.8.1777438200784; Tue, 28 Apr 2026 21:50:00 -0700 (PDT) From: alistair23@gmail.com X-Google-Original-From: alistair.francis@wdc.com To: palmer@dabbelt.com, liwei1518@gmail.com, daniel.barboza@oss.qualcomm.com, zhiwei_liu@linux.alibaba.com, chao.liu.zevorn@gmail.com, qemu-riscv@nongnu.org, qemu-devel@nongnu.org Cc: alistair23@gmail.com, Yicong Yang , Andrew Jones , Alistair Francis Subject: [PULL 22/51] hw/riscv/virt-acpi-build.c: Use kvm timer frequency when kvm enabled Date: Wed, 29 Apr 2026 14:47:23 +1000 Message-ID: <20260429044752.4176397-23-alistair.francis@wdc.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260429044752.4176397-1-alistair.francis@wdc.com> References: <20260429044752.4176397-1-alistair.francis@wdc.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::629; envelope-from=alistair23@gmail.com; helo=mail-pl1-x629.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.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, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1777438227277158500 Content-Type: text/plain; charset="utf-8" From: Yicong Yang The timer frequency is decided by the host(kvm) rather than a fixed RISCV_ACLINT_DEFAULT_TIMEBASE_FREQ on kvm accelerated VM. So build RCHT with KVM provided timer frequency if KVM is enabled, just like how we build the timer node on DT based VM. Fixes: ebfd39289370 ("hw/riscv/virt: virt-acpi-build.c: Add RHCT Table") Signed-off-by: Yicong Yang Reviewed-by: Andrew Jones Message-ID: <20260325081314.57089-1-yang.yicong@picoheart.com> Signed-off-by: Alistair Francis --- hw/riscv/virt-acpi-build.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/hw/riscv/virt-acpi-build.c b/hw/riscv/virt-acpi-build.c index f1406cb683..fd6ca5dbc4 100644 --- a/hw/riscv/virt-acpi-build.c +++ b/hw/riscv/virt-acpi-build.c @@ -35,9 +35,11 @@ #include "hw/riscv/virt.h" #include "hw/riscv/numa.h" #include "hw/virtio/virtio-acpi.h" +#include "kvm/kvm_riscv.h" #include "migration/vmstate.h" #include "qapi/error.h" #include "qemu/error-report.h" +#include "system/kvm.h" #include "system/reset.h" =20 #define ACPI_BUILD_TABLE_SIZE 0x20000 @@ -296,7 +298,10 @@ static void build_rhct(GArray *table_data, =20 /* Time Base Frequency */ build_append_int_noprefix(table_data, - RISCV_ACLINT_DEFAULT_TIMEBASE_FREQ, 8); + kvm_enabled() ? + kvm_riscv_get_timebase_frequency(&s->soc->ha= rts[0]) : + RISCV_ACLINT_DEFAULT_TIMEBASE_FREQ, + 8); =20 /* ISA + N hart info */ num_rhct_nodes =3D 1 + ms->smp.cpus; --=20 2.53.0 From nobody Sat May 30 19:23:38 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1777438599; cv=none; d=zohomail.com; s=zohoarc; b=jwrTUHyUBqgrAvxdP4fIQj46ciz8aRWG27zx8XYs4yNsw/K3YKoqL+O/hshyWB5/LTXSdFWH4/EalMGhBipV6oN7QoX6b7umPLmny8FJrnt+Zq7EdhBN9KkaWHdOjhnmRwU9LtuAxkynIvZ9keCF2qvaaIRJU+p2v6t8QV7xZII= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777438599; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=6LT1/EJ4TmcNjWWSWxvrhRM1oUkyUaxsMz6fDhIwFOg=; b=k47UwpjEyxRd+hPW4GDfy4oNI+L+SRNIX5fKC5rcUL9I7HWKkmCBLQN9m/KecSpeKlzw0V5IuBPCBAZeY0vid39Z+df/qU7PfEpUo+H588P2wu8mdogtIy6v1AlKMp2x+mq4CaV9ukVsbp04hU6jFZitpJP91U2Wf9w14oWZhz0= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1777438599317391.21343270155126; Tue, 28 Apr 2026 21:56:39 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wHwsE-0004vZ-0w; Wed, 29 Apr 2026 00:50:10 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wHwsC-0004rU-IC for qemu-devel@nongnu.org; Wed, 29 Apr 2026 00:50:08 -0400 Received: from mail-pl1-x62f.google.com ([2607:f8b0:4864:20::62f]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wHwsB-0000Mo-0k for qemu-devel@nongnu.org; Wed, 29 Apr 2026 00:50:08 -0400 Received: by mail-pl1-x62f.google.com with SMTP id d9443c01a7336-2ab077e3f32so53035935ad.3 for ; Tue, 28 Apr 2026 21:50:06 -0700 (PDT) Received: from toolbx.alistair23.me ([2403:581e:fdf9:0:6209:4521:6813:45b7]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2b988772ae8sm7756145ad.7.2026.04.28.21.50.01 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 28 Apr 2026 21:50:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1777438205; x=1778043005; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=6LT1/EJ4TmcNjWWSWxvrhRM1oUkyUaxsMz6fDhIwFOg=; b=fz4BG+bGwBVYlMHfjfbxzbaglFp3atiGW1sYJqELE8H1F3zLfqQVu7i9ILHQRqxIPb oNusGJx7TZChTvf2zCuIx35fLKQHSFtQo9W+ctTmUj9vX7k0AQAyP3NcnlJk7b23PvYH ErKHkKeNKUq3djenFDxNWZCA2p4BGWfZAhDaFymmneiaRjUCbeeWNgf1K958dQ0b7sdv 0yX/oBp0r4qltOAnI6Rzzk9e2Vnktkv5unoHHMnZDNIGT1EV9/YNSb/alUj1NscRliHV F0EanEBAOEvtTxRzxf0QjqrUTtr0S6i8o6IhcwprNNWlfsiPpPHC6NWs33Oi4DRkjbRn AyiA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777438205; x=1778043005; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=6LT1/EJ4TmcNjWWSWxvrhRM1oUkyUaxsMz6fDhIwFOg=; b=gWSEB9BU4yCNXFVNJpxNYlYdfSalHj4Rz3pAB822f7+Lfcx4nUAyCdS64qg7Kwhv9t H1HKNExhcSOCK+EDGi9Dx56dhGIwJMmX+e5NuT3tCnmXh1U5h5OfvtKu9jUWYf6jrbcw dgjMgkoMVmhoorCxaW0TR7R6dcWatR+taxVcABoEj9MVVGT6ibY2ona1hgJUOodYizll fgFggLFBxCKOYzO/E0b2p3hlDwIjdLkqiDgIhPuKoa6AiU5hwptnMR5ihD8+9PsZohbn FAEhhQXO/EoLH9ge4eKOSEdQn9xoC5TFMZtYTtpo++++x7kVBCeZS1ecU8L8fK9L1hLp 5ZBQ== X-Forwarded-Encrypted: i=1; AFNElJ/lV3okcGJa296ihZfvvpmHzi6GhvFsn3jvobSJZPU0+6ZI/caMQPr8OcW7PgW7N0RRc7E9iqZDU9tE@nongnu.org X-Gm-Message-State: AOJu0Yw8cxqxSXZKqxY0U1vNlBjzO0TAz2YiSZBavsAxC/lN1+MWCYz3 wQAcsOODZL9BxW3JRh40Vy/LPrHLWmgaLhpe+pv6L3eyWIzbOfOiJ8RJ X-Gm-Gg: AeBDievjyOZZGR2QGSOwCZv5IFhFn70UImEXyv6h0zLG2d2LFmbEkSirDO4QQDmYdcN nEe1gPw5zXPfo6u3NAlLgKYkKB5yK6WYUUvG+7mKTzvuyhLkUk7NTUb7IzC1ZD6fUsSTXpRMcfw GpJ5OjfdlET1Sp+Tme3wS7A/HlrNIufbRwEDelHbBjNLCrpMgNsJL66B0p/x4pnBkqp3gfEhswJ Fzhy3VeTMj1qLwRR8LdEfc/AkFM4dkauNKw+Fqni0pgOk4pdzSkqAiP1WbPC9OtEBQUXGnj8/tF G62U8W936jL7wyOkkqSHTrn0Z5ARQxBQy6f58ZEU42f7c2sVmJADE3e12VAAOIlL2sx6QeSYyhy W1/VuUl5+7xnncNirANlSVQAP1jpw090MJQ9pA3ttfED+ZtNKFayJLlKTjEw2r48nl2FJs7k/Yy F7bXKDy60JFgP+nJNolEU0/CyVAKwQa/1FxmiHbaUFnqvrEhb2iJLXf8uXRq83USo= X-Received: by 2002:a17:902:f212:b0:2b4:5743:2395 with SMTP id d9443c01a7336-2b97c4b2a2fmr41125825ad.19.1777438205527; Tue, 28 Apr 2026 21:50:05 -0700 (PDT) From: alistair23@gmail.com X-Google-Original-From: alistair.francis@wdc.com To: palmer@dabbelt.com, liwei1518@gmail.com, daniel.barboza@oss.qualcomm.com, zhiwei_liu@linux.alibaba.com, chao.liu.zevorn@gmail.com, qemu-riscv@nongnu.org, qemu-devel@nongnu.org Cc: alistair23@gmail.com, =?UTF-8?q?Sebasti=C3=A1n=20Alba=20Vives?= , Alistair Francis Subject: [PULL 23/51] target/riscv: fix stale ptshift and base on page walk restart Date: Wed, 29 Apr 2026 14:47:24 +1000 Message-ID: <20260429044752.4176397-24-alistair.francis@wdc.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260429044752.4176397-1-alistair.francis@wdc.com> References: <20260429044752.4176397-1-alistair.francis@wdc.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::62f; envelope-from=alistair23@gmail.com; helo=mail-pl1-x62f.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.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, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable 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 @gmail.com) X-ZM-MESSAGEID: 1777438600895154100 From: Sebasti=C3=A1n Alba Vives When the atomic compare-and-swap for updating A/D bits in the page table entry fails due to a concurrent PTE modification by another vCPU, get_physical_address() jumps to the 'restart' label to re-walk the page table from the root. However, neither 'ptshift' nor 'base' are re-initialized before the restart. After the walk completes, ptshift has been decremented to its final value and base has been overwritten with an inner PTE PPN. On goto restart, the for loop resets i=3D0 but ptshift and base remain stale, causing the restarted walk to compute incorrect PTE addresses. In an SMP guest with MTTCG and Svadu active, this can result in incorrect physical address mappings or guest crashes. Fix by saving the root base address and re-initializing both ptshift and base on each restart. Fixes: 0c3e702aca ("RISC-V CPU Helpers") Signed-off-by: Sebasti=C3=A1n Alba Vives Reviewed-by: Alistair Francis Message-ID: <20260401053853.10473-1-sebasjosue84@gmail.com> Signed-off-by: Alistair Francis --- target/riscv/cpu_helper.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/target/riscv/cpu_helper.c b/target/riscv/cpu_helper.c index c28832e0e3..659150c646 100644 --- a/target/riscv/cpu_helper.c +++ b/target/riscv/cpu_helper.c @@ -1316,12 +1316,15 @@ static int get_physical_address(CPURISCVState *env,= hwaddr *physical, adue =3D adue && (env->henvcfg & HENVCFG_ADUE); } =20 - int ptshift =3D (levels - 1) * ptidxbits; + int ptshift; target_ulong pte; hwaddr pte_addr; + const hwaddr base_root =3D base; int i; =20 restart: + ptshift =3D (levels - 1) * ptidxbits; + base =3D base_root; for (i =3D 0; i < levels; i++, ptshift -=3D ptidxbits) { target_ulong idx; if (i =3D=3D 0) { --=20 2.53.0 From nobody Sat May 30 19:23:38 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1777438245; cv=none; d=zohomail.com; s=zohoarc; b=RkZIpxriTfip7sNWqbR3a82xhd+TujAuuaBbwwMsi23J/+DTwkosgQbynvXgdcifi33KcYgBxJ6/vjNcCWq+OrAZi9AXXaQFOZUD5THLDRVdXpHqy/H1w8FRiNhJP9IMAGJ647u8eoGsxzPc705MzMX0gFQJ3XFv63mreFYtj5U= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777438245; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=yMpS+oxPJGbRpex+VelLT6bbUjNH9wP4CLelzYLvWOg=; b=ZTcGoQ6MIXVsKdtVCOmXlKWU0oTLHwb7NzpPfmK+p/lWYKiK7/5NrrnO6J6D1nHkO3y7qTNfsS2tEuPjszwpCYLRKFiH1EnXWtR2KaSu+iqd2fDG9fDKoyYvaLIhNphi1FBY0bCegNnF9VG/j29ClISoisV/jZyf53oqoek+1J0= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1777438245201204.84032492713823; Tue, 28 Apr 2026 21:50:45 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wHwsK-00058n-5f; Wed, 29 Apr 2026 00:50:16 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wHwsI-000501-E6 for qemu-devel@nongnu.org; Wed, 29 Apr 2026 00:50:14 -0400 Received: from mail-pl1-x62e.google.com ([2607:f8b0:4864:20::62e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wHwsG-0000PC-0v for qemu-devel@nongnu.org; Wed, 29 Apr 2026 00:50:14 -0400 Received: by mail-pl1-x62e.google.com with SMTP id d9443c01a7336-2b2429f98d0so72267465ad.2 for ; Tue, 28 Apr 2026 21:50:11 -0700 (PDT) Received: from toolbx.alistair23.me ([2403:581e:fdf9:0:6209:4521:6813:45b7]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2b988772ae8sm7756145ad.7.2026.04.28.21.50.05 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 28 Apr 2026 21:50:10 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1777438211; x=1778043011; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=yMpS+oxPJGbRpex+VelLT6bbUjNH9wP4CLelzYLvWOg=; b=rmD0JejQu8AW2AthOjFd6LgOkAMBv8tsp/2BFseC3dwGbpKE6eiZDx+ZaNznBXaDyX VrpXdZbmZdVCYaLw2gXwtV5eeoVhYSeVJXzoJX0WBVpBXx8sHzky6qGL+Ss156WZvfQe Wv27oaCsAOQiPazRLI0y+pNl8KaymTMIBSLwScOVciSysdVwg3TVy3jsjjuSnHgnxQq2 ZsJ/omd6zo1sLgMCAlU5RiIP94FvcjUhluPJUv1y9UCsmwsw2czHscMuyy2dd+RmhGvI TOxX22077jRT5EHilXBZjEw6acFKaW4duCE+cgKv3xjygNwQOZmpEHxEN8Tzp046JTxd j5jA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777438211; x=1778043011; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=yMpS+oxPJGbRpex+VelLT6bbUjNH9wP4CLelzYLvWOg=; b=USTQA5Exb/WwEFo1cMBITsomm01Q8f4/MhRzUL6MFLXyJtggRWxulHYHJHuObpb+ie Saj8/zmg6AoqlybLZA0R5culyHfhDMwxb294y7vYiccr9H9I1hU3HNSTQD2lcys9SxLh shEsYYprP3NNNJLifszgHefIgl6P9PWeV9wMbZUuBZG3YiMfWUfrvaxAxQJSYjEsQLhO A1R6i6CjzvuHDjV00APNSePSXNxgdlxSWx27If7ui8ci93k9+S7HfjyqVPZnqnZhs+KL MDz6dcWrcUIOZr5kAPr0mITwUoi05/63vfyXTPh+cJIoE5nSQVNwDKv6gTrmrsST7hFt Mk3w== X-Forwarded-Encrypted: i=1; AFNElJ/5ncJ8ql+TVGcQvJp4650fdGOlvSNWy4vyYkLyqGVmhuGlmIzbuRKHJJ1bypMvHNRrl7fUwQQk6Vn8@nongnu.org X-Gm-Message-State: AOJu0YzWJOyWpNB8jE5CJEnmaKJKoetsJ4ES+q17yuL1XjyAtdq5EZAd Py3cYpQkbWTzXwGgEG/D0aiZrsW/6xbE3gc3AI694EcdPpNKwP6ZJJT1 X-Gm-Gg: AeBDiesEU0aNx6nxPXU3rrwlwt1w1af0BF0QyIJE2pcM866/Igu6V3J2pYKBc3jtBJ7 nWLLN+kgH3LAfri6lZn5ipW1dnF6s8b16TYCLinY7BfWQ6jKeGRFQJMxEqbsriDsDTnbjI02RXR x0HlRvjtHnN1IZyKZ426B/CkvkuqogLud1G7s7iIkMA7MeHI7Th3ezY/jtvnfLJkNNHbTYMW5R6 NQ2Tx/8XiPH0nUWZuN4FtEHKiWwl3LNbIfCAKxYqHz+ghfkJTGrm9xDyOISpQCYxRqMxQnOmWE6 x0I45AavT/pKYLhiR04yCa7RhGUwIsARoMGU4WP5qj2fV08PrBvo10FZqcIAfiPAZWSewsviuj0 H9FsaK4MPExlzIQMBoX/d6Wcg+m4leO4x6HS6gnK1e0iprlmZ0dsLoQr0WyGlOtOh25ypbnW9uW VFboMqN0rCSY/hbcv/+4gYT2kV8kXdEehnvKuseMX5bc0dvuTMyAq8xR3kDQLaQZU= X-Received: by 2002:a17:903:2a8b:b0:2b9:8e63:71c8 with SMTP id d9443c01a7336-2b98e63730amr751005ad.29.1777438210678; Tue, 28 Apr 2026 21:50:10 -0700 (PDT) From: alistair23@gmail.com X-Google-Original-From: alistair.francis@wdc.com To: palmer@dabbelt.com, liwei1518@gmail.com, daniel.barboza@oss.qualcomm.com, zhiwei_liu@linux.alibaba.com, chao.liu.zevorn@gmail.com, qemu-riscv@nongnu.org, qemu-devel@nongnu.org Cc: alistair23@gmail.com, =?UTF-8?q?Sebasti=C3=A1n=20Alba=20Vives?= , qemu-security@nongnu.org, Alistair Francis Subject: [PULL 24/51] hw/intc: fix heap OOB in ACLINT MTIMER multi-socket Date: Wed, 29 Apr 2026 14:47:25 +1000 Message-ID: <20260429044752.4176397-25-alistair.francis@wdc.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260429044752.4176397-1-alistair.francis@wdc.com> References: <20260429044752.4176397-1-alistair.francis@wdc.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::62e; envelope-from=alistair23@gmail.com; helo=mail-pl1-x62e.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.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, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1777438247367158500 From: Sebasti=C3=A1n Alba Vives The MMIO read/write handlers index timecmp[] with the absolute hartid (hartid_base + offset) but the array is allocated with num_harts elements. In multi-socket configurations with hartid_base > 0 this causes heap OOB access in the QEMU process. Fix by using the relative offset for array indexing. Cc: qemu-security@nongnu.org Signed-off-by: Sebasti=C3=A1n Alba Vives Reviewed-by: Alistair Francis Message-ID: <20260401053853.10473-2-sebasjosue84@gmail.com> Signed-off-by: Alistair Francis --- hw/intc/riscv_aclint.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/hw/intc/riscv_aclint.c b/hw/intc/riscv_aclint.c index 9c1491bd04..e27e5fb394 100644 --- a/hw/intc/riscv_aclint.c +++ b/hw/intc/riscv_aclint.c @@ -131,6 +131,7 @@ static uint64_t riscv_aclint_mtimer_read(void *opaque, = hwaddr addr, addr < (mtimer->timecmp_base + (mtimer->num_harts << 3))) { size_t hartid =3D mtimer->hartid_base + ((addr - mtimer->timecmp_base) >> 3); + size_t hartid_offset =3D hartid - mtimer->hartid_base; CPUState *cpu =3D cpu_by_arch_id(hartid); CPURISCVState *env =3D cpu ? cpu_env(cpu) : NULL; if (!env) { @@ -138,11 +139,11 @@ static uint64_t riscv_aclint_mtimer_read(void *opaque= , hwaddr addr, "aclint-mtimer: invalid hartid: %zu", hartid); } else if ((addr & 0x7) =3D=3D 0) { /* timecmp_lo for RV32/RV64 or timecmp for RV64 */ - uint64_t timecmp =3D mtimer->timecmp[hartid]; + uint64_t timecmp =3D mtimer->timecmp[hartid_offset]; return (size =3D=3D 4) ? (timecmp & 0xFFFFFFFF) : timecmp; } else if ((addr & 0x7) =3D=3D 4) { /* timecmp_hi */ - uint64_t timecmp =3D mtimer->timecmp[hartid]; + uint64_t timecmp =3D mtimer->timecmp[hartid_offset]; return (timecmp >> 32) & 0xFFFFFFFF; } else { qemu_log_mask(LOG_UNIMP, @@ -174,6 +175,7 @@ static void riscv_aclint_mtimer_write(void *opaque, hwa= ddr addr, addr < (mtimer->timecmp_base + (mtimer->num_harts << 3))) { size_t hartid =3D mtimer->hartid_base + ((addr - mtimer->timecmp_base) >> 3); + size_t hartid_offset =3D hartid - mtimer->hartid_base; CPUState *cpu =3D cpu_by_arch_id(hartid); CPURISCVState *env =3D cpu ? cpu_env(cpu) : NULL; if (!env) { @@ -182,7 +184,7 @@ static void riscv_aclint_mtimer_write(void *opaque, hwa= ddr addr, } else if ((addr & 0x7) =3D=3D 0) { if (size =3D=3D 4) { /* timecmp_lo for RV32/RV64 */ - uint64_t timecmp_hi =3D mtimer->timecmp[hartid] >> 32; + uint64_t timecmp_hi =3D mtimer->timecmp[hartid_offset] >> = 32; riscv_aclint_mtimer_write_timecmp(mtimer, RISCV_CPU(cpu), = hartid, timecmp_hi << 32 | (value & 0xFFFFFFFF)); } else { @@ -193,7 +195,7 @@ static void riscv_aclint_mtimer_write(void *opaque, hwa= ddr addr, } else if ((addr & 0x7) =3D=3D 4) { if (size =3D=3D 4) { /* timecmp_hi for RV32/RV64 */ - uint64_t timecmp_lo =3D mtimer->timecmp[hartid]; + uint64_t timecmp_lo =3D mtimer->timecmp[hartid_offset]; riscv_aclint_mtimer_write_timecmp(mtimer, RISCV_CPU(cpu), = hartid, value << 32 | (timecmp_lo & 0xFFFFFFFF)); } else { --=20 2.53.0 From nobody Sat May 30 19:23:38 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1777438480; cv=none; d=zohomail.com; s=zohoarc; b=nxRbrZPUR52BI4mg0cxwZg7SecNd/i/pJWgGJweQw0Zf/ipLuBCcPCytw0l3nMMeQ969hEogiowyYgRIv6jNt+qDFUapmNy4ugk96yTcdjdL8mGVXM9OIHIGeHg3DSFpDfon0agVFfOzhDU3drwdCygFD5X0BDbHfqvZgD9GwaA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777438480; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=J1DqayjN7Pd/ZfUHF12td1wkfi6fDh2DrvjYRmsYHbg=; b=QeX6cCiF0lFBHiVMy/ok0yEGL5dZ1LG2//kxAvwTFo5+Zhu1fr9tyPrtwtnW6PiQzKCovb3xZhstsX3nQCxYk7tJBGj/OoZqPae/WZBxKeJ4lMrlYanq4eff5PMtP9qNd85Y1FLOSC4bDevr84z5R+izKe4HBqrLURnT5Uma6rk= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1777438480173271.46268801020244; Tue, 28 Apr 2026 21:54:40 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wHwsO-0005EY-Vf; Wed, 29 Apr 2026 00:50: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 1wHwsN-0005DC-1j for qemu-devel@nongnu.org; Wed, 29 Apr 2026 00:50:19 -0400 Received: from mail-pl1-x632.google.com ([2607:f8b0:4864:20::632]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wHwsL-0000Qq-CB for qemu-devel@nongnu.org; Wed, 29 Apr 2026 00:50:18 -0400 Received: by mail-pl1-x632.google.com with SMTP id d9443c01a7336-2aaed195901so52976415ad.0 for ; Tue, 28 Apr 2026 21:50:17 -0700 (PDT) Received: from toolbx.alistair23.me ([2403:581e:fdf9:0:6209:4521:6813:45b7]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2b988772ae8sm7756145ad.7.2026.04.28.21.50.11 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 28 Apr 2026 21:50:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1777438216; x=1778043016; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=J1DqayjN7Pd/ZfUHF12td1wkfi6fDh2DrvjYRmsYHbg=; b=LT8tDNp2ytUqKNNVEYgQUZbopQMgd1f5z6Q9BkM1EpBxZhjet3ATwCbQJutMk/kbcc Ld1YOiXAHwm4u8ifpFIEKBobVcyMdlHOhujEXhbSxKEdkWtxCJegBVjyXATzcItnPOYZ q9n3cs7CXNtrVRiwGdOV1HyeqbmOrq1kQ2cbw51tJuJ7O3rm/BKR+K36pN+ERd7pL49u xwSNxPCY7H77QgixFUhjpwasf7Fglo0lkGqt+MVXDOB26qVOjnp2HVXhbV1yPDeWhoth ENty4SLmySOqpcXGOGFicFHSsWrPMmjmaPGoIcLSX5SJAHqSwhchX/2a84Wq2LF4febc 0m1w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777438216; x=1778043016; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=J1DqayjN7Pd/ZfUHF12td1wkfi6fDh2DrvjYRmsYHbg=; b=sJAoR74UEco7UHC8sqvg36WLRGkwvQdRHT90h6pOJkDgsTmg4yMymMED3LjOFo115i KPktysajI+S1Rl9uhVP6UdLL6ZI76oUX0jFLZ/q4XomtVg5AZor/nr/pYlM/0M4kHFDZ ap7iZ8aN7nv6i80UfG91LUhIV4Zh1+8EtrbzPTJTjokSflstvAi/MzZ8YqsSg053G+T6 n3I7nmlEsN7ePjcXQ6bsbp8rtvO4T8zdNKZ58O4IggTQwMtX3rTLzvQ6oicOdw3b6Nou CIHOmQtkAUOVCZKd2jXjRbAtBZd4+8Nln/D+aseQGK6ebCP4Yy0MIMeKBrnij4+HeTVr Bz2g== X-Forwarded-Encrypted: i=1; AFNElJ+sUTR3QdGul2TeAMbz4jQglLBOsmy9KOJl8DZg2BHD/3Bx+UCkPN5qbeUZ2dILIMmgph21KyaJC+cG@nongnu.org X-Gm-Message-State: AOJu0YxF1oHxmPyPNTH+/gQ2MyqvbnbZ9BpJHtqq9pnNGtSLv7S+LcBP lzaxbmepdhsdpEA94E1gY+SJrPjW+3Ae5DeWQwoa1zVpra3N2RQDAc6Z X-Gm-Gg: AeBDievzrfCoVKZsWs7SdN+NA4+gaQiRVD5suekew1zP2RrYEgaP6mB7HNn5y8iwyjf mrnvaPbDKcz4S1iVvZ8BqZ24QXqFdTY7hGVgfSq/fOFE6IeLz/lEkXnAE6ySR4OXrcZ6HmpgRPr dlBLc8iaBaaiOQ3sqI0KQ/RntGlOLYOr5ZF5p6p8kI8iDs0W/jLzuzQ6dlT21xN7pOBHCt8nGcU FhE2JNnzp+yej/rtcR2Bk6L/R48weK+msURsO9IYtBu4Qrsi6TM3+qOXnrFWPMw+F7jUzCByCZn mhZUGTSCjVGRm+jStmVGbF5Me0mdMVHgGdo/DaPRqQNbWWiVndp+zEihfPjI2xM5KCUjqodxT9q 8s2I6DH7sGikX+BQsJVKBZmWCrI14QdzFYruC4uav2XwLIG2PYWMxApfpEili7PgNNnP5ngu6Ar yH68V+LVA+GMBJKeu66j3i7GVFA5Qh69I3CAoRQ7E7nZtP872Bhr4HHmf9gp3KOI0= X-Received: by 2002:a17:903:3848:b0:2b2:4d36:7ba with SMTP id d9443c01a7336-2b97c03f4d7mr59554155ad.0.1777438216023; Tue, 28 Apr 2026 21:50:16 -0700 (PDT) From: alistair23@gmail.com X-Google-Original-From: alistair.francis@wdc.com To: palmer@dabbelt.com, liwei1518@gmail.com, daniel.barboza@oss.qualcomm.com, zhiwei_liu@linux.alibaba.com, chao.liu.zevorn@gmail.com, qemu-riscv@nongnu.org, qemu-devel@nongnu.org Cc: alistair23@gmail.com, Munkhbaatar Enkhbaatar , Alistair Francis , Tao Tang , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Subject: [PULL 25/51] riscv_htif: reject invalid signature ranges (end <= begin) Date: Wed, 29 Apr 2026 14:47:26 +1000 Message-ID: <20260429044752.4176397-26-alistair.francis@wdc.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260429044752.4176397-1-alistair.francis@wdc.com> References: <20260429044752.4176397-1-alistair.francis@wdc.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::632; envelope-from=alistair23@gmail.com; helo=mail-pl1-x632.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.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, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1777438482337158501 From: Munkhbaatar Enkhbaatar Prevents huge allocations and crashes caused by malformed HTIF signature addresses. Resolves: https://gitlab.com/qemu-project/qemu/-/work_items/3205 Signed-off-by: Munkhbaatar Enkhbaatar Reviewed-by: Alistair Francis Message-ID: <20251209085349.61510-1-munkhuu0825@gmail.com> [ Squashed with following commit to fix build failures hw/char/riscv_htif: Fix format specifier for uint64_t Message-ID: <20260415134826.1742308-1-chao.liu.zevorn@gmail.com> Signed-off-by: Chao Liu ] Tested-by: Tao Tang Reviewed-by: Philippe Mathieu-Daud=C3=A9 Signed-off-by: Chao Liu Signed-off-by: Alistair Francis --- hw/char/riscv_htif.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/hw/char/riscv_htif.c b/hw/char/riscv_htif.c index e9efab16e9..a53d2ace02 100644 --- a/hw/char/riscv_htif.c +++ b/hw/char/riscv_htif.c @@ -171,6 +171,12 @@ static void htif_handle_tohost_write(HTIFState *s, uin= t64_t val_written) * begin/end_signature symbols exist. */ if (sig_file && begin_sig_addr && end_sig_addr) { + if (end_sig_addr <=3D begin_sig_addr) { + error_report("Invalid HTIF signature range:" + " begin=3D0x%" PRIx64 " end=3D0x%" PR= Ix64, + begin_sig_addr, end_sig_addr); + return; + } uint64_t sig_len =3D end_sig_addr - begin_sig_addr; char *sig_data =3D g_malloc(sig_len); dma_memory_read(&address_space_memory, begin_sig_addr, --=20 2.53.0 From nobody Sat May 30 19:23:38 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1777438643; cv=none; d=zohomail.com; s=zohoarc; b=WIYsyLiBWJrtp5W2vVOLH4pp7XF2WYiSg0tUse+TLNiucNTQBR94ryxEpguCe4Gzpba2+MY5WCcXxBDi9E1Hdm0PBY6ZRGKIgzhMREW/Zg519FtUQOoaSGI1tgnHqvs9ateI0RQ6aaYpUN/y7BahKpZjY9q3FCLxZebTBgVeFi4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777438643; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=hYb5INL1c8NoLrhbLHuNkrNTieGO07Z8dugd5Q2koJ8=; b=iIo3ogPFty/OHwboR7/g8QA/9t6sNFpVjGRLlZmKhd06G3VpwvDEIO4PUcVLk34dRWVNl4sOnQ04fu9W62nWoqIfDpLUnPFz71PVWw7oo4WDf5Egd3uIilv7BpJubr+d8vz6WkU7qHXpVUDZhBFswhwfO3Nlw8cvTsZsC1JpiJo= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 177743864351971.76145275500483; Tue, 28 Apr 2026 21:57:23 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wHwsT-0005QH-Ea; Wed, 29 Apr 2026 00:50:25 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wHwsR-0005Iv-O7 for qemu-devel@nongnu.org; Wed, 29 Apr 2026 00:50:23 -0400 Received: from mail-pl1-x636.google.com ([2607:f8b0:4864:20::636]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wHwsQ-0000S7-52 for qemu-devel@nongnu.org; Wed, 29 Apr 2026 00:50:23 -0400 Received: by mail-pl1-x636.google.com with SMTP id d9443c01a7336-2b7d3ecc10dso39181295ad.2 for ; Tue, 28 Apr 2026 21:50:21 -0700 (PDT) Received: from toolbx.alistair23.me ([2403:581e:fdf9:0:6209:4521:6813:45b7]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2b988772ae8sm7756145ad.7.2026.04.28.21.50.16 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 28 Apr 2026 21:50:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1777438221; x=1778043021; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=hYb5INL1c8NoLrhbLHuNkrNTieGO07Z8dugd5Q2koJ8=; b=Bb22FATZmjtNvoMmg4FCklcvhHPHCE8FETUO/m3bMd7DtvjvvvqPH8n+DB1kyiUCOh z3MV0QQcu3wO6ZVfa5iUq2nN7pU/QiwyA+lHs69YSgJBHU+VpLe9DSoVqmkus/1ZHAsb RBssK5YqkruE7ILIm54MQnolGM84mie1OglHcpUbHgxTkwoY7+O9v8hwupwKqhma1DjV 1xDFvd1Rjxu8UCx0RqDFkHluIjbwodhTp5TatkPPiuchyP70wJ5kfJ4e4GXkp9+Rp+pu JJnyOHQmm4N18O4KYbQImMPJKUiknsFgc9Ecnw3zachmf/x026d4fdjb5gEgtYe4dIra 8W8Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777438221; x=1778043021; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=hYb5INL1c8NoLrhbLHuNkrNTieGO07Z8dugd5Q2koJ8=; b=K6XWndME58jaOFdxLQFfuxuN58N9XaEzGl6EsOaP1qZX2p2c2ve48Lgs98v1YDjMzF vUkp8V5q1in9clmeJuhIg2jeSOa1VnZgvmFDuSsxOFGyGylxHDen52C1JYXG/FliNtk/ f9lGv8rt4vQRILjjWqOMoRpMszs0qvsK5hTQu00HwghFf6cOWnOAb9welQEH0Hbv/H8r lbKsMMeK9j21kIIIlhqHFw4bokxRZhLzpejQFqzYplBsbH2xXuk4b0IM7uoCLcyzutcR 5+yrYlK9zqIP9btPPh/bqPjhIew2Sf8DyjbSc+Tc46aZ+8RsGD17V/CGueL2WCW5cHCl TM0g== X-Forwarded-Encrypted: i=1; AFNElJ9wcWb4ucOTnFZq7hpSBzzIrQVU4NY+hO/Exr8CFK0yU/ImZ6a+sFX5v+W1XGvz20l03YA/rsGq0nCr@nongnu.org X-Gm-Message-State: AOJu0Yzy+ED01KFP1XE7IOcz/1dYxBOk2lfuxd8yEr1UvKH0eBs7SgjP PCql0Wlkv6DmpaKZVLBo89I66+jHC3cw0zue8RCVznvJRZB69xLVTdDn X-Gm-Gg: AeBDievd67u79bvtu/rTznGZcdmoyEZVrGES1xEX12fyncAelCuMdZ4gB5uYenRI2IG LbLMk4ggvbCHJfNCVlVSBSoSk/LctOwbwmcHGQEMkcF6Yo7Jdlt/TOw1EEj4EvWzhk1vz8h5Brv AT22g+BK8lX6uljG6SSbGK60SVPkmeQxtf1K9Ic5gGrkMF5zUy4vcxy4E0CYm1OXn1IlDC+XILf 188V3w61bu7Ugfo+/QTtNF1hE52XwXFZKryjHfwjg4ZAz7j5ZumKMa9HI6pnlbVCMhheipCcrhc AL8xApP+nxYRb6PsHKIbi9RAVJcfGkYjW89gh8wtj2Qrquka57uTdDNCUKOhbh9BoWihMIRZk3F WZieRVUisZebvzk2QvnUtbPjWssHn4+KqktNsHPbQBhsojTZlxqIrvmeo5/BQy6Uuaq1sJD8/uW 0VujcD/LRYq1ODIjHLR5jn+VofXZadT3T45OFxvJPMS0DQ+GCZWsOe X-Received: by 2002:a17:903:450c:b0:2b2:cfdf:10f2 with SMTP id d9443c01a7336-2b97c4aa599mr44698325ad.20.1777438220821; Tue, 28 Apr 2026 21:50:20 -0700 (PDT) From: alistair23@gmail.com X-Google-Original-From: alistair.francis@wdc.com To: palmer@dabbelt.com, liwei1518@gmail.com, daniel.barboza@oss.qualcomm.com, zhiwei_liu@linux.alibaba.com, chao.liu.zevorn@gmail.com, qemu-riscv@nongnu.org, qemu-devel@nongnu.org Cc: alistair23@gmail.com, Bruno Sa , Alistair Francis Subject: [PULL 26/51] target/riscv: preserve RV32 henvcfgh on henvcfg writes Date: Wed, 29 Apr 2026 14:47:27 +1000 Message-ID: <20260429044752.4176397-27-alistair.francis@wdc.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260429044752.4176397-1-alistair.francis@wdc.com> References: <20260429044752.4176397-1-alistair.francis@wdc.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::636; envelope-from=alistair23@gmail.com; helo=mail-pl1-x636.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.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, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable 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 @gmail.com) X-ZM-MESSAGEID: 1777438645382154100 Content-Type: text/plain; charset="utf-8" From: Bruno Sa On RV32, STCE/ADUE/PBMTE/DTE are implemented in henvcfgh. A write to henvcfg should therefore only update the low 32 bits of env->henvcfg. The current write_henvcfg() path overwrites env->henvcfg with the low-half value and clears any bits previously written via henvcfgh. Preserve the upper 32 bits on RV32 henvcfg writes and keep the existing RV64 behaviour unchanged. Signed-off-by: Bruno Sa Reviewed-by: Alistair Francis Message-ID: <20260409155344.2849233-2-bruno.vilaca.sa@gmail.com> Signed-off-by: Alistair Francis --- target/riscv/csr.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/target/riscv/csr.c b/target/riscv/csr.c index a75281539b..cfd076b368 100644 --- a/target/riscv/csr.c +++ b/target/riscv/csr.c @@ -3353,7 +3353,15 @@ static RISCVException write_henvcfg(CPURISCVState *e= nv, int csrno, } } =20 - env->henvcfg =3D val & mask; + if (riscv_cpu_mxl(env) =3D=3D MXL_RV32) { + /* + * RV32 stores STCE/ADUE/PBMTE/DTE in henvcfgh, so a low-half henv= cfg + * write must not clobber the upper 32 bits. + */ + env->henvcfg =3D (env->henvcfg & ~0xFFFFFFFFULL) | (val & mask); + } else { + env->henvcfg =3D val & mask; + } if ((env->henvcfg & HENVCFG_DTE) =3D=3D 0) { env->vsstatus &=3D ~MSTATUS_SDT; } --=20 2.53.0 From nobody Sat May 30 19:23:38 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1777438703; cv=none; d=zohomail.com; s=zohoarc; b=hMz7Y5xQR2z58l8D80aJNARakS72CkJ8md3y7qQku8Ib+qls0b4NcYP2ouu+jHWN7o31YMW8q1Mzn0v0ziIEJ+Iq9sMtxxOl/PGE05XelhAloXvi77rXNBmGx12l3KZxAiaPZm5sQxGf4V5UplHZqJ41FXI7das69nzdg2G7ON0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777438703; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=cZGBDYnwZqSqs28QzjXN8Q4ySmk72zZ3GUDndcMdMCw=; b=J80zRDutym5GdKsPzslFFy/4bv0mz8nS3rgs0LZ095ynPGBmqXHUjzBknPIuTLhlxw3OQCDNGH19mnYQMDapd8gOD+ku9soIqOrg675kAi9F22WYVjLEMHTmmqdhhb1XLJbbJkIGUPC19U/6z7z+imC/Ip7LTM9M9RuNuFYd0+s= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 177743870348348.50773442231332; Tue, 28 Apr 2026 21:58:23 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wHwsa-0005uy-20; Wed, 29 Apr 2026 00:50:32 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wHwsX-0005kM-Ki for qemu-devel@nongnu.org; Wed, 29 Apr 2026 00:50:29 -0400 Received: from mail-pl1-x631.google.com ([2607:f8b0:4864:20::631]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wHwsV-0000Zy-IT for qemu-devel@nongnu.org; Wed, 29 Apr 2026 00:50:29 -0400 Received: by mail-pl1-x631.google.com with SMTP id d9443c01a7336-2b7adb38d65so58107065ad.2 for ; Tue, 28 Apr 2026 21:50:27 -0700 (PDT) Received: from toolbx.alistair23.me ([2403:581e:fdf9:0:6209:4521:6813:45b7]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2b988772ae8sm7756145ad.7.2026.04.28.21.50.21 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 28 Apr 2026 21:50:25 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1777438226; x=1778043026; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=cZGBDYnwZqSqs28QzjXN8Q4ySmk72zZ3GUDndcMdMCw=; b=J/RKSGC+48CrpmKdNcPc4SKRFLhj1Y29yXLaC96MYEJ8FdbbInKhIZqaPrYOVbman+ yvcVKH3cm/3IXJWjrX5gFIZdySqtr3cdnugTCGHdq2na9qyddy7j/KMwI4jXrAnzNMN7 dTFBOmqldqPo+7pc9PQnwp2jFiqNQcNQlYqB7sx0LrwE3tnHqoN/JtJaQl/aozXu4Mrv oytlb/w9+fKHDbhxdzZfMQ3x9LxzZ5vnKFylBlDGkzghWFOeIgPKxzOC6iLs1Ra+4xDB 3HUshS8kGVbdyz6WkP9lxG/deEnYI0e0p4w6kY6Ie2u7h54CrZYwVTvqki2Wr/qy1MpL FCVw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777438226; x=1778043026; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=cZGBDYnwZqSqs28QzjXN8Q4ySmk72zZ3GUDndcMdMCw=; b=NZnMGHo+iuOJo/d+4t2WDQ+YIPoh/RzqDF7Lnw/ZBmm7zZDdTvOSl2lxaPzwKpQJVu 3bKCfv2jpU5Q0z5FxGssAfrd1g9UjX5JW1qGUSWe07BHx8XvHbf7vfe59MjhDTCZGv+z acnFN4N0JAsk5Y6lyB3VqFkd2W44BUUAO7zfSmgnndsHSFsDKcRz/MvaGm4m4ZIlmRSQ IhsNU5BB5vooY2VCYlkJRZugJ93HdC79HJ3xg9qa8oQu4Hh1lBF3urgZ4LAt9XH5BhFM 1JbZF3QlQGf03PO/hOys7wJHDOsdBN0nIS1G3W2Ywb6UKammsb3RygyDVO7EX9aplWMZ zabQ== X-Forwarded-Encrypted: i=1; AFNElJ8aOC5wgTcBi7m5wDv4qMGnFlpidSz9Sjf2G3U7N1qDE/Cx+HyvJcdpHYhKi3j3Pn19/b6wi0l23Jhz@nongnu.org X-Gm-Message-State: AOJu0YzF7brwpgHTj3lox4r4PL+Hg0BXyzdkKtuSEZVdm6R9IRVPnFTa 6aDGsM6j8Pz8Rf2c8zTSgSs+S8ktV4IIbZX0IAJgMpHhCnPVIV4g/XnZ X-Gm-Gg: AeBDiesTyGjKEzPX0Yfr+X6J/CtYs+oo/TQkLdZPBKvNznFBfky3S5guhAaopRuG8v9 ClcQtcDkOu28u577qVn9Fc4cariXWpRdtDr2F995TFxEm/9J7P6CBWM8lZ/Yk5GI27ju3v63oHh d1nJD0hYDxKrasDL7QX3fxVit/oy/RiYJ41cWnnybx61TUKVktPy64aBPSqINeyYbAdBQWzTbCL +tHIboLZ+TmlDOdFYF6+8+S8eC9Wm4NCTtPvt4iwEsI2cmvSRp/DaYd97vea6u7NP7X53885PrF dw6O0nZoZ04ZWrDQ6m/jT+87rV83D6TxyNlmMhfqMm0Zd86GxbduUHmYA1V6pi5DbtmZLMkAji1 FqY83FeGpkgLGHFYbNi39/Ug+G+WnmOROC5zKkWsX0aKCTYvu2Y6mxJogKEJHPEnf9U9T4WvMBy i3wsZYYYrhMJdQ+MTrw6bn8wxpXkUpJo6bNZlmB/i19AoZDQb1BiAEOTUruTrseTc= X-Received: by 2002:a17:903:3c6b:b0:2b2:50e1:f104 with SMTP id d9443c01a7336-2b97c3d4e15mr62616045ad.3.1777438226290; Tue, 28 Apr 2026 21:50:26 -0700 (PDT) From: alistair23@gmail.com X-Google-Original-From: alistair.francis@wdc.com To: palmer@dabbelt.com, liwei1518@gmail.com, daniel.barboza@oss.qualcomm.com, zhiwei_liu@linux.alibaba.com, chao.liu.zevorn@gmail.com, qemu-riscv@nongnu.org, qemu-devel@nongnu.org Cc: alistair23@gmail.com, Max Chou , Daniel Henrique Barboza , Nutty Liu , Alistair Francis Subject: [PULL 27/51] target/riscv: Add cfg properties for Zvfbfa extensions Date: Wed, 29 Apr 2026 14:47:28 +1000 Message-ID: <20260429044752.4176397-28-alistair.francis@wdc.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260429044752.4176397-1-alistair.francis@wdc.com> References: <20260429044752.4176397-1-alistair.francis@wdc.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::631; envelope-from=alistair23@gmail.com; helo=mail-pl1-x631.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.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, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1777438704981158500 Content-Type: text/plain; charset="utf-8" From: Max Chou The Zvfbfa extension adds more complete BF16 vector compute support and requires the Zve32f and Zfbfmin extensions. Reviewed-by: Daniel Henrique Barboza Reviewed-by: Nutty Liu Reviewed-by: Chao Liu Reviewed-by: Alistair Francis Signed-off-by: Max Chou Message-ID: <20260402125234.1371897-2-max.chou@sifive.com> Signed-off-by: Alistair Francis --- target/riscv/cpu_cfg_fields.h.inc | 1 + target/riscv/cpu.c | 1 + target/riscv/tcg/tcg-cpu.c | 8 ++++++++ 3 files changed, 10 insertions(+) diff --git a/target/riscv/cpu_cfg_fields.h.inc b/target/riscv/cpu_cfg_field= s.h.inc index d4b7c880d4..734fa079f2 100644 --- a/target/riscv/cpu_cfg_fields.h.inc +++ b/target/riscv/cpu_cfg_fields.h.inc @@ -100,6 +100,7 @@ BOOL_FIELD(ext_zvks) BOOL_FIELD(ext_zvksc) BOOL_FIELD(ext_zvksg) BOOL_FIELD(ext_zmmul) +BOOL_FIELD(ext_zvfbfa) BOOL_FIELD(ext_zvfbfmin) BOOL_FIELD(ext_zvfbfwma) BOOL_FIELD(ext_zvfh) diff --git a/target/riscv/cpu.c b/target/riscv/cpu.c index 03a1bb075a..7c652dea78 100644 --- a/target/riscv/cpu.c +++ b/target/riscv/cpu.c @@ -189,6 +189,7 @@ const RISCVIsaExtData isa_edata_arr[] =3D { ISA_EXT_DATA_ENTRY(zve64f, PRIV_VERSION_1_10_0, ext_zve64f), ISA_EXT_DATA_ENTRY(zve64d, PRIV_VERSION_1_10_0, ext_zve64d), ISA_EXT_DATA_ENTRY(zve64x, PRIV_VERSION_1_10_0, ext_zve64x), + ISA_EXT_DATA_ENTRY(zvfbfa, PRIV_VERSION_1_13_0, ext_zvfbfa), ISA_EXT_DATA_ENTRY(zvfbfmin, PRIV_VERSION_1_12_0, ext_zvfbfmin), ISA_EXT_DATA_ENTRY(zvfbfwma, PRIV_VERSION_1_12_0, ext_zvfbfwma), ISA_EXT_DATA_ENTRY(zvfh, PRIV_VERSION_1_12_0, ext_zvfh), diff --git a/target/riscv/tcg/tcg-cpu.c b/target/riscv/tcg/tcg-cpu.c index 3407191c22..c4f7da7193 100644 --- a/target/riscv/tcg/tcg-cpu.c +++ b/target/riscv/tcg/tcg-cpu.c @@ -720,6 +720,14 @@ void riscv_cpu_validate_set_extensions(RISCVCPU *cpu, = Error **errp) return; } =20 + if (cpu->cfg.ext_zvfbfa) { + if (!cpu->cfg.ext_zve32f || !cpu->cfg.ext_zfbfmin) { + error_setg(errp, "Zvfbfa extension requires Zve32f extension " + "and Zfbfmin extension"); + return; + } + } + if ((cpu->cfg.ext_zdinx || cpu->cfg.ext_zhinxmin) && !cpu->cfg.ext_zfi= nx) { error_setg(errp, "Zdinx/Zhinx/Zhinxmin extensions require Zfinx"); return; --=20 2.53.0 From nobody Sat May 30 19:23:38 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1777438492; cv=none; d=zohomail.com; s=zohoarc; b=fPTlocZBeCzEa7IjqsU6cx+pghjcgOglRS6VFrBjDbOGSnXMrszOT/vXm/lpEyWkuhhix65iG70Spi61ClNeE8LkcjpJP02ryVdIkMouvdFQuaEzzsb152KNrA3y8m2jMC4epi7UtsqIp9ZcxQ5K5phGyA3Iexoj8msDwN9dqOc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777438492; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=EnJkJpchAM7vwOFSUOFAUxKHXhQnmjW3rca5keBbe/Q=; b=Pk4+I/TNm07DK8hkIuWlADLnLD/t2b7+NOZEoqO6EcQa7X07nnA6wvSO7j+iGI6mR8DWa1VhrwdElIHqqqszC6hbxcTmCIKvR3bWG5BzdXosIyDsYR5UawQBcPW4Yjv4jqTkfVY7kutbY9mYgsQOIYVrRXq1gsHVGMVKaM2UQQ4= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1777438492690447.2860409895171; Tue, 28 Apr 2026 21:54:52 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wHwse-00067I-IH; Wed, 29 Apr 2026 00:50:36 -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 1wHwsc-00063K-KA for qemu-devel@nongnu.org; Wed, 29 Apr 2026 00:50:34 -0400 Received: from mail-pl1-x631.google.com ([2607:f8b0:4864:20::631]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wHwsb-0000dK-2o for qemu-devel@nongnu.org; Wed, 29 Apr 2026 00:50:34 -0400 Received: by mail-pl1-x631.google.com with SMTP id d9443c01a7336-2ab077e3f32so53037135ad.3 for ; Tue, 28 Apr 2026 21:50:32 -0700 (PDT) Received: from toolbx.alistair23.me ([2403:581e:fdf9:0:6209:4521:6813:45b7]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2b988772ae8sm7756145ad.7.2026.04.28.21.50.26 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 28 Apr 2026 21:50:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1777438231; x=1778043031; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=EnJkJpchAM7vwOFSUOFAUxKHXhQnmjW3rca5keBbe/Q=; b=Lnj3KHJL7ndnF9+vPk1qDUdudOQ8N01Kz4P5oC3NM0jKbcw009Y/yJeim6PiGcsW4u hRVRx3QgP0+Zc9TF+nbNjiy03byea1+3GhLurkjUxqA/C8/7kNZt9c10iZbDn0By90pR I9Cpnehd3+yamzp5/y5Ee6Nl6hS5UqisnRWOJR5OQD4NB3fG1YMlBjGHNwG/LK3E4XYv /0407jMuvsXUxeiL9dr6xkT0yte6e2Vj56vMKry0kc0CVv1tADxjxbnYgLWmy1g0eymS X2xSCukeJJdCwrhnoV1DcTdgvQBdWsz5wQasQJqh+pSO+X4/DZjXSPJa+H+wu8nY37av RdxQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777438231; x=1778043031; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=EnJkJpchAM7vwOFSUOFAUxKHXhQnmjW3rca5keBbe/Q=; b=rFiiv8yLEuS0/QQSfnnCvrf1b+J4nEGgrwpN0+pCFNPF+eKfOpg5cC8uWspv5XC5ZB BUAcvcl2ckyCm7CH1Jw3rqbLMzPZqtggiWAvpi61krG2Si0Ys1xsllVxXIGuW06CMg7o otvWXTx6QRPqm9DSO2gKYIW/qm0g+P0J/86lhGeO1qnc11OmFIGWaOhLkmWHmobbUdbe Dc9EyjcM7JWhj28yvwKc1ZvdeeX2UWTW2yHixb1daL8dUPNwmgaNSdHaYPQ6+3sIq60T 5gIMqQvottXVW7ucpvifLwjzSm9vCwtYnZJAUqZGPt09RYKq/Pf1HxvxkOUoCGz+T1mg AO9A== X-Forwarded-Encrypted: i=1; AFNElJ+QeKou5ehgfQuBD3Old3++6W/ZSQQhOnlJXDq2TqmZQNNZbvGiHLEeO4e7D79RTetVwYxn4N+Zg4gf@nongnu.org X-Gm-Message-State: AOJu0YwcExYq/uxDWAMbCpmS7zeltIFdMbY2pE2GpefmK6H9iZSB4fM6 mE6UxIthsRxy7Ex7zK9zHxluJ2jCEh8FD2AxN7IPORE8BNP28rXzE4Mi X-Gm-Gg: AeBDiesZRL8t2gZH1vMGhGJGDc3zkRi8srDPbPfJ8FEAA4qziuQK4gtS88Kb+GMiFSs 1RXNsQt5YYOK5p0ndMP8kXAOXqpTwDa0XNxe6iVDqVlQE8WVNierF1hf8lD6vZhEnfKUAfgTnbx Gil9jSfcDeBlC840Qx5SjDZa5VKi1N+SjqjnHvGuc4IGrcQIo6kMUC9hFxywns7kgNlTHQjnntJ XWHrNSGqPj2eNizJmx9cS51El27T05cs6AYZrRN/wjg7SUYSK0b0J0QnTJ5QNFm71pyIp/cUH99 wAa6cLRAszUJsu41fVMD8iVvL0OwFWQhA0MhTI58rem+aAhQCDDrdqav7pJhcjd9HF/leuINoLz YREDIzK6w3C6KKpmq46+W5QoXkAYstYXy+7nCSkP8pbMyHb/kYtaWoWhPDoQ9lZVgmqD+GQB4+q fkv+LTlEaI7jhbP8tcnzwPq4lcyjqjxjRfOcegaZHbFodCjlhw3WuY X-Received: by 2002:a17:903:2ed0:b0:2ae:cb0e:fd59 with SMTP id d9443c01a7336-2b97c4120bdmr60169505ad.8.1777438231583; Tue, 28 Apr 2026 21:50:31 -0700 (PDT) From: alistair23@gmail.com X-Google-Original-From: alistair.francis@wdc.com To: palmer@dabbelt.com, liwei1518@gmail.com, daniel.barboza@oss.qualcomm.com, zhiwei_liu@linux.alibaba.com, chao.liu.zevorn@gmail.com, qemu-riscv@nongnu.org, qemu-devel@nongnu.org Cc: alistair23@gmail.com, Max Chou , Daniel Henrique Barboza , Nutty Liu , Alistair Francis Subject: [PULL 28/51] target/riscv: Add the Zvfbfa extension implied rule Date: Wed, 29 Apr 2026 14:47:29 +1000 Message-ID: <20260429044752.4176397-29-alistair.francis@wdc.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260429044752.4176397-1-alistair.francis@wdc.com> References: <20260429044752.4176397-1-alistair.francis@wdc.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::631; envelope-from=alistair23@gmail.com; helo=mail-pl1-x631.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.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, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1777438494115158500 Content-Type: text/plain; charset="utf-8" From: Max Chou According to the Zvfbfa isa spec: The Zvfbfa extension requires the Zve32f and Zfbfmin extensions. Reviewed-by: Daniel Henrique Barboza Reviewed-by: Nutty Liu Reviewed-by: Chao Liu Reviewed-by: Alistair Francis Signed-off-by: Max Chou Message-ID: <20260402125234.1371897-3-max.chou@sifive.com> Signed-off-by: Alistair Francis --- target/riscv/cpu.c | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/target/riscv/cpu.c b/target/riscv/cpu.c index 7c652dea78..bbab96385b 100644 --- a/target/riscv/cpu.c +++ b/target/riscv/cpu.c @@ -2622,6 +2622,15 @@ static RISCVCPUImpliedExtsRule SSCTR_IMPLIED =3D { }, }; =20 +static RISCVCPUImpliedExtsRule ZVFBFA_IMPLIED =3D { + .ext =3D CPU_CFG_OFFSET(ext_zvfbfa), + .implied_multi_exts =3D { + CPU_CFG_OFFSET(ext_zve32f), CPU_CFG_OFFSET(ext_zfbfmin), + + RISCV_IMPLIED_EXTS_RULE_END + }, +}; + RISCVCPUImpliedExtsRule *riscv_misa_ext_implied_rules[] =3D { &RVA_IMPLIED, &RVD_IMPLIED, &RVF_IMPLIED, &RVM_IMPLIED, &RVV_IMPLIED, NULL @@ -2635,8 +2644,8 @@ RISCVCPUImpliedExtsRule *riscv_multi_ext_implied_rule= s[] =3D { &ZHINX_IMPLIED, &ZHINXMIN_IMPLIED, &ZICNTR_IMPLIED, &ZIHPM_IMPLIED, &ZK_IMPLIED, &ZKN_IMPLIED, &ZKS_IMPLIED, &ZVBB_IMPLIED, &ZVE32F_IMPLIED, - &ZVE32X_IMPLIED, &ZVE64D_IMPLIED, &ZVE64F_IMPLIED, - &ZVE64X_IMPLIED, &ZVFBFMIN_IMPLIED, &ZVFBFWMA_IMPLIED, + &ZVE32X_IMPLIED, &ZVE64D_IMPLIED, &ZVE64F_IMPLIED, &ZVE64X_IMPLIED, + &ZVFBFA_IMPLIED, &ZVFBFMIN_IMPLIED, &ZVFBFWMA_IMPLIED, &ZVFH_IMPLIED, &ZVFHMIN_IMPLIED, &ZVKN_IMPLIED, &ZVKNC_IMPLIED, &ZVKNG_IMPLIED, &ZVKNHB_IMPLIED, &ZVKS_IMPLIED, &ZVKSC_IMPLIED, &ZVKSG_IMPLIED, &SSCFG_IMPLIED, --=20 2.53.0 From nobody Sat May 30 19:23:38 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1777438298; cv=none; d=zohomail.com; s=zohoarc; b=jzJ3fwTGWVW5F/ubJqtgKSbudJNVVI8sTmIA5tizvlE97ShUz4sS9Sa+gGleHHriuy0aZpqR+IE1MHf3cacaEh98TeTd+BKAKPqnqrHRLAW4/Faah7X9I8HvENI8LCtzfGBi1EkNBQDynnJIUuBO+046F9dNbaMI7DQeADw04GM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777438298; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=fIZU8Gh7QJtlybesDgHA1mbz+UBZEFTfXaC0E836a7M=; b=Usdkg5Ah0EQ0MUIlxfW/isxDQcr4Em7osorw7LwT/9YNe8b9Y1d2NZ4KwSaVyJJ+oa31G66DPS+8ls90YNmgfFKln0x52DOecnKEIr4ACFMWX792/w8xX2PKOqm+nN94Bk7CbD7YA7ZcJg7aICFsJX4z0zsCz6jxSw9YzvDVQgw= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1777438298888263.7979816436414; Tue, 28 Apr 2026 21:51:38 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wHwsk-0006fY-Fl; Wed, 29 Apr 2026 00:50:42 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wHwsi-0006WB-Fk for qemu-devel@nongnu.org; Wed, 29 Apr 2026 00:50:40 -0400 Received: from mail-pl1-x632.google.com ([2607:f8b0:4864:20::632]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wHwsg-0000kx-CQ for qemu-devel@nongnu.org; Wed, 29 Apr 2026 00:50:40 -0400 Received: by mail-pl1-x632.google.com with SMTP id d9443c01a7336-2ab232cc803so58614945ad.3 for ; Tue, 28 Apr 2026 21:50:37 -0700 (PDT) Received: from toolbx.alistair23.me ([2403:581e:fdf9:0:6209:4521:6813:45b7]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2b988772ae8sm7756145ad.7.2026.04.28.21.50.32 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 28 Apr 2026 21:50:36 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1777438237; x=1778043037; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=fIZU8Gh7QJtlybesDgHA1mbz+UBZEFTfXaC0E836a7M=; b=ewBP4u3eD7/7QnlIV6VroJIcbezjiMMwWjr5HT+XeFEGFQ7AmLWlTSc4EKdevHl0/3 f8uCUuDDETGFEG9W4NToU4oEfKRqFBFF2pCjBXqrFmRNT/Rfk4dUk3iZD6wYolzTomlN q5zwxF4ruUO2QNLXZhUEEnar5A8tXPgi/fY1431vNS92QjsOiJNaW6GS71ueIiDt90DM 6nMdNwy7NG2MQN3rUJh+yxIMUAMHBKxtVDPYGemt2yi/1byEPhpk/mw1eS4pvaznfL/P QSOhgDXbO/RFv6MWT2tlwzsapHfZB2XSsm8nUEQepaz+VTqWmhpKlyOeFco1J6vP6VMZ bfzw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777438237; x=1778043037; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=fIZU8Gh7QJtlybesDgHA1mbz+UBZEFTfXaC0E836a7M=; b=LmWUMrQ89w9so1rkVj2YtkfF0Gg41nkbQlXqkyobgXAuzLNUukU2JwQflYprawXtdc U2gDk9tKEnw3DT3pYdVdtVs+tFVFf69vfR93xJihqLiM3GLsZf+lhXn7KqkjEJs59vvD 9Ph+pzK9eDEulD8qfBFh2eixPjcGJV2ZxyorXjzdhCtRuaaPtgpiNplDLPbjso6zM84K 23HCt7quPoo5vGLx0U6Mgl7v85vNcUbpPiZLy5V2+67qZtszk6SHo4RrpcdR9keoBkcY NLrUq2mkMYcut1XVRYKUvaVKDRcJpz7Tlo8N3tahNXT15Y7z++Ea+o1PJKQlUyEoUTRw jQZw== X-Forwarded-Encrypted: i=1; AFNElJ84PjIRzriRe79At58clIF4Ap9+DI2mGBc8vyGEfHQJByTJGZc73vPBopWHYlmhId8mszpmlW54hNIx@nongnu.org X-Gm-Message-State: AOJu0YxX2h2zk3yOcEuKe2S/UDbdAbU+C5GHZ3TZQWpEkDqjLMB0Nyu6 4pnF28O1pwHJU5qHiEDNJzBv8Z4owVnch8AUsWOOswUnhU6qZxceleZZ X-Gm-Gg: AeBDietyXIce2MST4A6vZEpC5odiEvZR0uceeg9l0NoI7zBxm3HIbeIKwNLW19lYukC TgvUUpcO8s+hCPuCKeNrMRox5LQnrehUCADkq6r/iSR5qWL6Zny9SiebrRuLDdB78qi1Wb+XGwP dZDeAvSEyfQOiOvcdhYzsb8GjcS3JZep4yOWFOv6ndK9+sPzlmarTsJk1SAQqh2yt/SiczGvhON Btc1L3ENCIOMGO6xh9gHtkDBlzdUePUGGnAZ25+9LOw2p8T5YyvAzmFGKh8UYuurqgTevO6E6aj XfIh4Bho+wTIDW+/tkrUKEKkE72mKbln7ZdprhjWdzsYoxHEQsU5vEutfBfU4le1UBHRu8RAXdR XP1acSvNEn91KD2VqMxIJQ9i+hBxrU4ORnCVXEsxv3cAsb6QKrahj4kkZbGQqADdQWqt3uiuUbo /Pa6IfKACiJz/JYGGbtSLoOM5tG0nmz29YKatUysinxilLEq5Wqbs4 X-Received: by 2002:a17:903:3c2f:b0:2b9:6453:389a with SMTP id d9443c01a7336-2b97c3cc0b3mr59380525ad.8.1777438236961; Tue, 28 Apr 2026 21:50:36 -0700 (PDT) From: alistair23@gmail.com X-Google-Original-From: alistair.francis@wdc.com To: palmer@dabbelt.com, liwei1518@gmail.com, daniel.barboza@oss.qualcomm.com, zhiwei_liu@linux.alibaba.com, chao.liu.zevorn@gmail.com, qemu-riscv@nongnu.org, qemu-devel@nongnu.org Cc: alistair23@gmail.com, Max Chou , Daniel Henrique Barboza , Nutty Liu , Alistair Francis Subject: [PULL 29/51] target/riscv: rvv: Add new VTYPE CSR field - altfmt Date: Wed, 29 Apr 2026 14:47:30 +1000 Message-ID: <20260429044752.4176397-30-alistair.francis@wdc.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260429044752.4176397-1-alistair.francis@wdc.com> References: <20260429044752.4176397-1-alistair.francis@wdc.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::632; envelope-from=alistair23@gmail.com; helo=mail-pl1-x632.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.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, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1777438299609158500 Content-Type: text/plain; charset="utf-8" From: Max Chou According to the Zvfbfa ISA spec v0.1, the vtype CSR adds a new field: altfmt for BF16 support. This update changes the layout of the vtype CSR fields. - Removed VEDIV field (bits 8-9) since EDIV extension is not planned to be part of the base V extension - Added ALTFMT field at bit 8 - Changed RESERVED field to start from bit 9 instead of bit 10 When Zvfbfa is disabled, bits 8+ are treated as reserved (preserving existing behavior for altfmt bit). When Zvfbfa is enabled, only bits 9+ are reserved. Reference: - https://github.com/riscvarchive/riscv-v-spec/blob/master/ediv.adoc Reviewed-by: Daniel Henrique Barboza Reviewed-by: Chao Liu Reviewed-by: Nutty Liu Reviewed-by: Alistair Francis Signed-off-by: Max Chou Message-ID: <20260402125234.1371897-4-max.chou@sifive.com> Signed-off-by: Alistair Francis --- target/riscv/cpu.h | 4 ++-- target/riscv/vector_helper.c | 39 +++++++++++++++++++++++++++++++----- 2 files changed, 36 insertions(+), 7 deletions(-) diff --git a/target/riscv/cpu.h b/target/riscv/cpu.h index 35d1f6362c..962cc45073 100644 --- a/target/riscv/cpu.h +++ b/target/riscv/cpu.h @@ -191,8 +191,8 @@ FIELD(VTYPE, VLMUL, 0, 3) FIELD(VTYPE, VSEW, 3, 3) FIELD(VTYPE, VTA, 6, 1) FIELD(VTYPE, VMA, 7, 1) -FIELD(VTYPE, VEDIV, 8, 2) -FIELD(VTYPE, RESERVED, 10, sizeof(target_ulong) * 8 - 11) +FIELD(VTYPE, ALTFMT, 8, 1) +FIELD(VTYPE, RESERVED, 9, sizeof(target_ulong) * 8 - 10) =20 typedef struct PMUCTRState { /* Current value of a counter */ diff --git a/target/riscv/vector_helper.c b/target/riscv/vector_helper.c index 83dd26314d..63ca6fe16b 100644 --- a/target/riscv/vector_helper.c +++ b/target/riscv/vector_helper.c @@ -33,6 +33,22 @@ #include "vector_internals.h" #include =20 +static target_ulong vtype_reserved(CPURISCVState *env, target_ulong vtype) +{ + int xlen =3D riscv_cpu_xlen(env); + target_ulong reserved =3D 0; + + if (riscv_cpu_cfg(env)->ext_zvfbfa) { + reserved =3D vtype & MAKE_64BIT_MASK(R_VTYPE_RESERVED_SHIFT, + xlen - 1 - R_VTYPE_RESERVED_SHI= FT); + } else { + reserved =3D vtype & MAKE_64BIT_MASK(R_VTYPE_ALTFMT_SHIFT, + xlen - 1 - R_VTYPE_ALTFMT_SHIFT= ); + } + + return reserved; +} + target_ulong HELPER(vsetvl)(CPURISCVState *env, target_ulong s1, target_ulong s2, target_ulong x0) { @@ -41,12 +57,10 @@ target_ulong HELPER(vsetvl)(CPURISCVState *env, target_= ulong s1, uint64_t vlmul =3D FIELD_EX64(s2, VTYPE, VLMUL); uint8_t vsew =3D FIELD_EX64(s2, VTYPE, VSEW); uint16_t sew =3D 8 << vsew; - uint8_t ediv =3D FIELD_EX64(s2, VTYPE, VEDIV); + uint8_t altfmt =3D FIELD_EX64(s2, VTYPE, ALTFMT); + bool ill_altfmt =3D true; int xlen =3D riscv_cpu_xlen(env); bool vill =3D (s2 >> (xlen - 1)) & 0x1; - target_ulong reserved =3D s2 & - MAKE_64BIT_MASK(R_VTYPE_RESERVED_SHIFT, - xlen - 1 - R_VTYPE_RESERVED_SH= IFT); uint16_t vlen =3D cpu->cfg.vlenb << 3; int8_t lmul; =20 @@ -63,7 +77,22 @@ target_ulong HELPER(vsetvl)(CPURISCVState *env, target_u= long s1, } } =20 - if ((sew > cpu->cfg.elen) || vill || (ediv !=3D 0) || (reserved !=3D 0= )) { + switch (vsew) { + case MO_8: + ill_altfmt &=3D !(cpu->cfg.ext_zvfbfa); + break; + case MO_16: + ill_altfmt &=3D !(cpu->cfg.ext_zvfbfa); + break; + default: + break; + } + + if (altfmt && ill_altfmt) { + vill =3D true; + } + + if ((sew > cpu->cfg.elen) || vill || (vtype_reserved(env, s2) !=3D 0))= { /* only set vill bit. */ env->vill =3D 1; env->vtype =3D 0; --=20 2.53.0 From nobody Sat May 30 19:23:38 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1777438318; cv=none; d=zohomail.com; s=zohoarc; b=JNLqxQYxIF9/WEiPL9A2fVH/DoHX0a8RyvQJYqsMFByIq+ma+4psoEGpRviaAGPJ8myrQ4C7o1IPYccYKMZb1nv6sCajtE/b1xoqoXJAN6EoYD/aWyIgKxMyIUw0d/ZXjcm4QIJCvSZTu94GkM5PYwhvVzROmOA69y8j2YLsRXk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777438318; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=p7jK/u4DdaFgaTP8Rvh9WoNYZJWw9ae1XuCaZbNk3Mc=; b=DJG0TDjMb5BKoUwrypB0QIlCey7VtrVI6WiIv/EFlwzSopAWAq8wXEv+9bdpgzf/JAsIqYxmLTyjh82kwLssszvm72VZaRdnXrm269r44OsHJ4PRiL4qY551pMHCQaskjZ6E5A5s7ZAOe1v+8IDg2hIOkuUDxO9AuP97PmcSy3g= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1777438318615896.5522471030536; Tue, 28 Apr 2026 21:51:58 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wHwt1-00074q-8T; Wed, 29 Apr 2026 00:51:01 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wHwso-0006w5-Kz for qemu-devel@nongnu.org; Wed, 29 Apr 2026 00:50:46 -0400 Received: from mail-pl1-x62e.google.com ([2607:f8b0:4864:20::62e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wHwsm-0000nI-OF for qemu-devel@nongnu.org; Wed, 29 Apr 2026 00:50:46 -0400 Received: by mail-pl1-x62e.google.com with SMTP id d9443c01a7336-2ad21f437eeso3398505ad.0 for ; Tue, 28 Apr 2026 21:50:43 -0700 (PDT) Received: from toolbx.alistair23.me ([2403:581e:fdf9:0:6209:4521:6813:45b7]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2b988772ae8sm7756145ad.7.2026.04.28.21.50.37 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 28 Apr 2026 21:50:41 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1777438242; x=1778043042; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=p7jK/u4DdaFgaTP8Rvh9WoNYZJWw9ae1XuCaZbNk3Mc=; b=cBnXY7O6i2VO6X6w3sM39UPd0s1smFbs4eLQ5oWyVKrrs57ObOxWiHXd6gQdtaC8Us djVPcl/aRgRukll1NdHUCbXY2Petv3jul8ATgw7LRYY2a8ddmGOFhriYKV+Uc/Bl9zwF ZQKk0VabXKyEhmGcQ/8VeTQBeaUvKtFRJj61A3JP62sT89x+MfS08Nl6cFLfsGzFxwj8 JwhNAgSY00WXo/XwjSPlkaZwBkHRTYL2Mt+tHDu1rDS8fLtZA0c3nwXodF7fhJv5DSMp sAXVeMWXiyt60BWCkS5Ndeh0Kk99v7b9tSrV9pDrCgw9WGfb/uxaBDZhfurhr8eTMHD/ b6kA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777438242; x=1778043042; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=p7jK/u4DdaFgaTP8Rvh9WoNYZJWw9ae1XuCaZbNk3Mc=; b=qhgog+SZxLXGgYebe0Pp9rUXGxUCDQilJa+TViFJ5xGbGMJD2hqAUrdBhNiKI77XC2 HxeSo1YqHveHnXPBFboL4SuyqFPmnrueSUV6a6xsOflY9AZiS0H4XvIQnehPkjGUOK8I VHiY9+Qm8cd0mN3Zj5C13hvgOHEfxId6ZrKkHrPxWNCsrXHE+NDtMMeUnTXSdaibOrRe U2ZIQ7GmNamIZBqd+gFVG1s35xGrOCaFYQs8i7bWl3kiyH1YXpY0+unUYD2eU+kqgELI YLEfV6JgHd3TOUoslgPw5msnbBx4yf4yiIc82ULfagm7JnFU8ipliJ2KsTA+ihTJmdZz OupQ== X-Forwarded-Encrypted: i=1; AFNElJ/U23ikB6DfEWgGINPZiYRjzkklC7ZhmyHosFHIxgBZaHO209dEMfw7vTeDpLcefTHA5xCBJ8DVLSo9@nongnu.org X-Gm-Message-State: AOJu0Yx2NZDujWQADR51CSxmdQke/lo4FAxNX+cZEbuPYhs/u3k8Bhlx Koxnld1HlK+Yrh3qWsrBBe7dAN7bStKh2jyWC3msaihwTWZoWr3mxZ+U X-Gm-Gg: AeBDies+1Kmp1A09JsVUVti2pxL3m752wwo1hu37XCodLsYXkqsZUas1yAgvarHzZcD SmLV4wQ7W9NniRUzNXweGfCh2r81/fs+Nnm8M85RvsEnqggDr20Tu77SUdMcntoFlGC+zvB+k1P mrwgy60f0XLCZ6BT8O7jnh17aePa6dIAvBFwoTpLzkPc/98G2IJNzyi9o5/M++6P60pt88CqP7c uasv1EcJ9lHYCU2eOXJoR0InmKXt/L4DnN80Y7scRgGankAfbBkYqibwlDjs/99iMcO5YHybCmI bLYkxY1JM+mvoQKiN626wZQtVupCFnS+31kduGtZ8xDbkjnzO7f2NP/YQG2DM+OxTYbApWS/e32 ypikFuIl3WBkSnTqWtkMMsoiTvSf/rxDzVcOPTP+ccQWmZ9FyYDEtLQK9aWVwDNTeyOITdgDGfU 83S92kF14QW7QKX4nibe6uahsmAQsQEyLGOK7/bfeZNH9OAOV49trp X-Received: by 2002:a17:902:c405:b0:2b4:5bf8:a7e1 with SMTP id d9443c01a7336-2b9883991abmr16319885ad.6.1777438242115; Tue, 28 Apr 2026 21:50:42 -0700 (PDT) From: alistair23@gmail.com X-Google-Original-From: alistair.francis@wdc.com To: palmer@dabbelt.com, liwei1518@gmail.com, daniel.barboza@oss.qualcomm.com, zhiwei_liu@linux.alibaba.com, chao.liu.zevorn@gmail.com, qemu-riscv@nongnu.org, qemu-devel@nongnu.org Cc: alistair23@gmail.com, Max Chou , Alistair Francis , Nutty Liu Subject: [PULL 30/51] target/riscv: rvv: Introduce reset_ill_vtype to reset illegal vtype CSR Date: Wed, 29 Apr 2026 14:47:31 +1000 Message-ID: <20260429044752.4176397-31-alistair.francis@wdc.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260429044752.4176397-1-alistair.francis@wdc.com> References: <20260429044752.4176397-1-alistair.francis@wdc.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::62e; envelope-from=alistair23@gmail.com; helo=mail-pl1-x62e.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.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, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable 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 @gmail.com) X-ZM-MESSAGEID: 1777438320942154100 Content-Type: text/plain; charset="utf-8" From: Max Chou Replace the same vill reset flow by reset_ill_vtype function. Reviewed-by: Daniel Henrique Barboza Reviewed-by: Chao Liu Reviewed-by: Alistair Francis Reviewed-by: Nutty Liu Signed-off-by: Max Chou Message-ID: <20260402125234.1371897-5-max.chou@sifive.com> Signed-off-by: Alistair Francis --- target/riscv/vector_helper.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/target/riscv/vector_helper.c b/target/riscv/vector_helper.c index 63ca6fe16b..1e0cce5ae5 100644 --- a/target/riscv/vector_helper.c +++ b/target/riscv/vector_helper.c @@ -49,6 +49,15 @@ static target_ulong vtype_reserved(CPURISCVState *env, t= arget_ulong vtype) return reserved; } =20 +static inline void reset_ill_vtype(CPURISCVState *env) +{ + /* only set vill bit. */ + env->vill =3D 1; + env->vtype =3D 0; + env->vl =3D 0; + env->vstart =3D 0; +} + target_ulong HELPER(vsetvl)(CPURISCVState *env, target_ulong s1, target_ulong s2, target_ulong x0) { @@ -93,11 +102,7 @@ target_ulong HELPER(vsetvl)(CPURISCVState *env, target_= ulong s1, } =20 if ((sew > cpu->cfg.elen) || vill || (vtype_reserved(env, s2) !=3D 0))= { - /* only set vill bit. */ - env->vill =3D 1; - env->vtype =3D 0; - env->vl =3D 0; - env->vstart =3D 0; + reset_ill_vtype(env); return 0; } =20 @@ -113,11 +118,7 @@ target_ulong HELPER(vsetvl)(CPURISCVState *env, target= _ulong s1, } =20 if (cpu->cfg.rvv_vsetvl_x0_vill && x0 && (env->vl !=3D vl)) { - /* only set vill bit. */ - env->vill =3D 1; - env->vtype =3D 0; - env->vl =3D 0; - env->vstart =3D 0; + reset_ill_vtype(env); return 0; } =20 --=20 2.53.0 From nobody Sat May 30 19:23:38 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1777438568; cv=none; d=zohomail.com; s=zohoarc; b=CUfuHP0tb8P+7hoAixvskHSg+mt07qzusZwyjfd76RZ7hugP0HbVMOEUKdQGkoc9hUz+LAgiO72oM+bBVLFWB/i36JFMDwpx7DA3q/0fsYSdg/VGqisg2UcZ9Bw3yIKS0r4PE3pmhlZp3YBSopMYSDg887AsAxOID7ze/ZPUIhQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777438568; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=CyWTd4V1LX1FwIyi0fsHKZKqus546/diDeVLNl78gPI=; b=QDHE945Uu0qpHJ/QQzGZCqiDvkcv63+yvtlvlvLgEKX/jjpoiidXfW76dbl7mVVpXUKG/t/S+JfCoWt8wK6qsnhjzyBcfYbmoq92QEAp0rnFjhwgpwffwD+DYeqt0lbPvYPblOPhHViUb2RSN2KNXR6T2fwqWIYPbv7n8z0DpSY= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1777438568492848.1098326728995; Tue, 28 Apr 2026 21:56:08 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wHwtA-0007Nu-I9; Wed, 29 Apr 2026 00:51: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 1wHwss-00072i-Tr for qemu-devel@nongnu.org; Wed, 29 Apr 2026 00:50:53 -0400 Received: from mail-pl1-x62b.google.com ([2607:f8b0:4864:20::62b]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wHwsq-0000oH-OU for qemu-devel@nongnu.org; Wed, 29 Apr 2026 00:50:50 -0400 Received: by mail-pl1-x62b.google.com with SMTP id d9443c01a7336-2b2429f98d0so72269315ad.2 for ; Tue, 28 Apr 2026 21:50:47 -0700 (PDT) Received: from toolbx.alistair23.me ([2403:581e:fdf9:0:6209:4521:6813:45b7]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2b988772ae8sm7756145ad.7.2026.04.28.21.50.42 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 28 Apr 2026 21:50:46 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1777438247; x=1778043047; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=CyWTd4V1LX1FwIyi0fsHKZKqus546/diDeVLNl78gPI=; b=R/EqJdLMI7sSu3+G20o+wtCk5jOM9WjqIjp7eyCy6M85RZxN1buhxEFcFPE9E1WlkX juY3SGxEpwG/SsrsbsQEWSwjbBcC3BV1QXicDTeEEG9fr85oqysKhH3cjKUtehJBbbc+ m+plw75BzTgghWkhpWgCnD+B1C756mza4ZLe370Sr+DgfsnQnEmm56vc5PPTZUWRLGYe 7kLlRqtccYexM36s1p+CfgKAQqwHqgunEzjGB+FT/cmutb/xeUawAY12wcH/zp7g4uvQ a4Gj90iirQrAkl5rqJ1M1EVb2+6tveROE7ZZKKfdJlwkHn+ZNKjT4m2Zjq8XZL3zpWGX PkCA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777438247; x=1778043047; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=CyWTd4V1LX1FwIyi0fsHKZKqus546/diDeVLNl78gPI=; b=p3lDd/jJe5KwyuejLHh2C9mNhLlJPW4Qf6HGpKfXsOEev0SODPPtuuDyhkbMwJyHZ4 QWYLQfDQhyyfGRtrr3Dr+MAHqHpkOaDj7EvwyXewWA6WQjMTLSisYdyoDDIvReGHWtXD iCHqG35IcdGOlf5RebgkwPcmO3o3mS3K03B3Q2O5gewU4poFqDzx7MTKXIo29Cvds/af rBiRZwRdwsVY6fYgXqjCH2av5s0KQ1rsQXclZ21uuDLZ7GBXZrWbkhnqCRKTvPU2d6Dm fO6chWk3/TkKxCkQ4cZruqwuqzDtOsLyavfCOvgrun2WzzwP0MN1u1Xw7IB1fnzTqGx4 hPMg== X-Forwarded-Encrypted: i=1; AFNElJ+COue6U0/ZjZTclxkv2TWtStzfOhWEnAkewU0ADhRgf4cJtdRKNI9M9dCEiTZudgESs8d01HLUVDtm@nongnu.org X-Gm-Message-State: AOJu0Yz4tEYfKGkwLlOS4ZstR3be2i05UTrIEawMnGnxCzCS9HD76kdD FdpmROHsxMDofm1kEDhGErfiC4Sq70LCZlHUbwNbjRDJf5uqGvKiR8+i X-Gm-Gg: AeBDietXq53wknx4gMc6cBuUUjwS0W8SufgKTbt/c+GRUwNb6MZu2MkNUnq0ox/Zwkm w96kqIOiHE6t/6pzlZneBoj9Jk5ao+R1g1FBLSBG9SJc3Rh1PQTejVNv8LRCx2ZIVhvhuYfRvp/ HeHUQK05tSKvJqkFVS/PG5/wEPRBWBvb39NRbpFJHBTM6SYJiz03bWNS/w3uykfLlMzjN632i1v oevu1aZpj4OSCBvcvhQKTxL9g/mtU/Sj70HTnjTge8UnmsHRcfymNevCQ8cqb0+DTa8/PGCmWtu IAAVlq5OMyBFzjWv6Qs26y1Oa+CudNhilpoPEARR+u9Ks0ljCvqcNXg0tVjZDMTkG+4MDlzYUTy RaY7HgjmEXOgXp3SP00NfYa58MWrtniUrx0Lwatds0OKQqomoWD0wO9s52kuNX9rFjwK9gdsPvE 8VGOMqMo26r/QqyhBWjDNN0jPVx/zJ/R76aXnQ9Raw77O1waY9wgRU X-Received: by 2002:a17:902:c40e:b0:2b0:7e4d:f390 with SMTP id d9443c01a7336-2b97c4f4770mr60006375ad.41.1777438246956; Tue, 28 Apr 2026 21:50:46 -0700 (PDT) From: alistair23@gmail.com X-Google-Original-From: alistair.francis@wdc.com To: palmer@dabbelt.com, liwei1518@gmail.com, daniel.barboza@oss.qualcomm.com, zhiwei_liu@linux.alibaba.com, chao.liu.zevorn@gmail.com, qemu-riscv@nongnu.org, qemu-devel@nongnu.org Cc: alistair23@gmail.com, Max Chou , Alistair Francis Subject: [PULL 31/51] target/riscv: Use the tb->cs_base as the extend tb flags Date: Wed, 29 Apr 2026 14:47:32 +1000 Message-ID: <20260429044752.4176397-32-alistair.francis@wdc.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260429044752.4176397-1-alistair.francis@wdc.com> References: <20260429044752.4176397-1-alistair.francis@wdc.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::62b; envelope-from=alistair23@gmail.com; helo=mail-pl1-x62b.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.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, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1777438570414158500 Content-Type: text/plain; charset="utf-8" From: Max Chou We have more than 32-bits worth of state per TB, so use the tb->cs_base, which is otherwise unused for RISC-V, as the extend flag. Reviewed-by: Daniel Henrique Barboza Reviewed-by: Chao Liu Signed-off-by: Max Chou Message-ID: <20260402125234.1371897-6-max.chou@sifive.com> Signed-off-by: Alistair Francis --- include/exec/translation-block.h | 1 + target/riscv/cpu.h | 3 +++ target/riscv/tcg/tcg-cpu.c | 7 ++++++- 3 files changed, 10 insertions(+), 1 deletion(-) diff --git a/include/exec/translation-block.h b/include/exec/translation-bl= ock.h index 4f83d5bec9..40cc699031 100644 --- a/include/exec/translation-block.h +++ b/include/exec/translation-block.h @@ -65,6 +65,7 @@ struct TranslationBlock { * arm: an extension of tb->flags, * s390x: instruction data for EXECUTE, * sparc: the next pc of the instruction queue (for delay slots). + * riscv: an extension of tb->flags, */ uint64_t cs_base; =20 diff --git a/target/riscv/cpu.h b/target/riscv/cpu.h index 962cc45073..4c0676ed53 100644 --- a/target/riscv/cpu.h +++ b/target/riscv/cpu.h @@ -703,6 +703,9 @@ FIELD(TB_FLAGS, BCFI_ENABLED, 28, 1) FIELD(TB_FLAGS, PM_PMM, 29, 2) FIELD(TB_FLAGS, PM_SIGNEXTEND, 31, 1) =20 +FIELD(EXT_TB_FLAGS, MISA_EXT, 0, 32) +FIELD(EXT_TB_FLAGS, ALTFMT, 32, 1) + #ifdef TARGET_RISCV32 #define riscv_cpu_mxl(env) ((void)(env), MXL_RV32) #else diff --git a/target/riscv/tcg/tcg-cpu.c b/target/riscv/tcg/tcg-cpu.c index c4f7da7193..f3f7808895 100644 --- a/target/riscv/tcg/tcg-cpu.c +++ b/target/riscv/tcg/tcg-cpu.c @@ -104,6 +104,7 @@ static TCGTBCPUState riscv_get_tb_cpu_state(CPUState *c= s) RISCVCPU *cpu =3D env_archcpu(env); RISCVExtStatus fs, vs; uint32_t flags =3D 0; + uint64_t ext_flags =3D 0; bool pm_signext =3D riscv_cpu_virt_mem_enabled(env); =20 if (cpu->cfg.ext_zve32x) { @@ -118,6 +119,7 @@ static TCGTBCPUState riscv_get_tb_cpu_state(CPUState *c= s) =20 /* lmul encoded as in DisasContext::lmul */ int8_t lmul =3D sextract32(FIELD_EX64(env->vtype, VTYPE, VLMUL), 0= , 3); + uint8_t altfmt =3D FIELD_EX64(env->vtype, VTYPE, ALTFMT); uint32_t vsew =3D FIELD_EX64(env->vtype, VTYPE, VSEW); uint32_t vlmax =3D vext_get_vlmax(cpu->cfg.vlenb, vsew, lmul); uint32_t maxsz =3D vlmax << vsew; @@ -133,6 +135,7 @@ static TCGTBCPUState riscv_get_tb_cpu_state(CPUState *c= s) flags =3D FIELD_DP32(flags, TB_FLAGS, VMA, FIELD_EX64(env->vtype, VTYPE, VMA)); flags =3D FIELD_DP32(flags, TB_FLAGS, VSTART_EQ_ZERO, env->vstart = =3D=3D 0); + ext_flags =3D FIELD_DP64(ext_flags, EXT_TB_FLAGS, ALTFMT, altfmt); } else { flags =3D FIELD_DP32(flags, TB_FLAGS, VILL, 1); } @@ -189,10 +192,12 @@ static TCGTBCPUState riscv_get_tb_cpu_state(CPUState = *cs) flags =3D FIELD_DP32(flags, TB_FLAGS, PM_PMM, riscv_pm_get_pmm(env)); flags =3D FIELD_DP32(flags, TB_FLAGS, PM_SIGNEXTEND, pm_signext); =20 + ext_flags =3D FIELD_DP64(ext_flags, EXT_TB_FLAGS, MISA_EXT, env->misa_= ext); + return (TCGTBCPUState){ .pc =3D env->xl =3D=3D MXL_RV32 ? env->pc & UINT32_MAX : env->pc, .flags =3D flags, - .cs_base =3D env->misa_ext, + .cs_base =3D ext_flags, }; } =20 --=20 2.53.0 From nobody Sat May 30 19:23:38 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1777438328; cv=none; d=zohomail.com; s=zohoarc; b=iAcTrw83ct5wJUby5MAEbylbLbMS6sjZwlSkJVzT9oiSEcj3Ji2MG0gKQQB6Zu5THYuUxR2/MBPVJJtDDH9SnC3ODQPjACRBOvgiswXOMJezFqcX0bMO9oqbLog+re6hkosqszbjfAVZvQKywupK5AvEPO2AokTVZwY8YXEP3vk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777438328; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=plC3YfL5KUVaXD9kpuwyDCHEonQqOYGFLhOa8lMByQc=; b=Z8O2vag5nu6FjAyLKZiXtsXnmnlM1AwBtycXUqP3SrHTaQQ3dg4YmyrsQU2YdEKZa7FWKiCqc2inZL4wjj7hUUss5a/FaUeiA6+TH9vP73rfTRKHvBndxVZdUj2Co4sfyg6TuKqtLTvHVML1naDnnfB4J6afrLiJuO58BWz6+jU= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1777438328332791.7722481916911; Tue, 28 Apr 2026 21:52:08 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wHwtC-0007Qw-Fs; Wed, 29 Apr 2026 00:51:12 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wHwsx-0007B9-Ab for qemu-devel@nongnu.org; Wed, 29 Apr 2026 00:50:59 -0400 Received: from mail-pl1-x630.google.com ([2607:f8b0:4864:20::630]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wHwsv-0000p9-8a for qemu-devel@nongnu.org; Wed, 29 Apr 2026 00:50:55 -0400 Received: by mail-pl1-x630.google.com with SMTP id d9443c01a7336-2b299b3c739so56410755ad.3 for ; Tue, 28 Apr 2026 21:50:52 -0700 (PDT) Received: from toolbx.alistair23.me ([2403:581e:fdf9:0:6209:4521:6813:45b7]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2b988772ae8sm7756145ad.7.2026.04.28.21.50.47 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 28 Apr 2026 21:50:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1777438252; x=1778043052; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=plC3YfL5KUVaXD9kpuwyDCHEonQqOYGFLhOa8lMByQc=; b=qvC4TyuUHMXYGFDtiqY6tCFb3ikcQhXKhXpLMoBZOl/+lOguy+6lvO1iqm/UsBlJtD OaVD5s5XSoGxCPxKjoWSlitodwfnkbGl2ffMeIvoHCtgUwBrHUYTUkkyFiCF2Zoga5/8 dMKZi48LoMICc/EHN6/5C/tFnXUrHGh+ExiCAKq7SA/OoaU+H9aUaLudkBY2k7sQWEnu mBNbKPJz4p5Mao6LXK2LDxJhcfOV1cZtVSigsLwaPZ2g4jI1YR0ILdwl7ir1TBhNgbhZ M4ZV67mLw4u6lGtSclDPNiY9mii/M7/C6qMl+5xvWyAeXQsXumhNODTJdfYh2y9p8Obb UZxA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777438252; x=1778043052; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=plC3YfL5KUVaXD9kpuwyDCHEonQqOYGFLhOa8lMByQc=; b=gh62Y5yDN4r1kfzJ06jJfgdPlRWp2ZvI53+MCl1ECl2meY5IaYYdk3XV0WxzIBVrce 4eE1hiKGLf5WG/YQyxD+0gNKq8q6tPwz1yEsvJiQr0VCWZAWBqiDO2H/0Vah22jg4fCA tRh7ON44IG0y1/HTGPHOCvNCFy1PJcuoRA2ROv4dSNELTCGQLGjVW59LCYAtsETO1Nts 4Oe7QBgIDt9/YzRgD+CxFhO1yFqYByGpmxPyE1fH/TZ+lxvqo01vG2UwS90zraV2h94i uX5F8iGApGtWU5qhxsuz6hwc2u2qPmkgs6Gt2swirWmKexxKdwZQKgmeZ1fflNp7g4Mh ysEQ== X-Forwarded-Encrypted: i=1; AFNElJ92KpNMnllhT1OTlY3Exx02S5X+3OrcVueZfyZt4KMn8CdMDqxJMdQ0BNjlgZ81kGEla6YNEGbDDfAh@nongnu.org X-Gm-Message-State: AOJu0YwnnuYZSG9AxZTUCdN3Oy2IizHdF0IV1OOeXD5mGD69eu+TUYRx CpPa4M33Jcgz29y+UCsV2VHzdPZ42DqZbX908zOWBWrzdR7JVS3GWJXfR6oZwQ== X-Gm-Gg: AeBDieuWxNLX0Ya1ruD5U94n8nPPtF6N23kJpYi85q7ZnHk3n/YCxgYdC4aMXLSTQ4n lZgYCjXoKVU9cUi3iDiGhidkihKCXAhU5G/j0kv9DpMBjZQRcPLKQ1L8WClsgf8tT3jvjZyD740 NvqCJ0OLfz9bxykGTsdM3Uxjx6VIHW7ZgyDU/rQ8h8Ta4RmiVd6zTnKByGIvfzqDJAj7gEMSciS Ksyxbph5GWHy8m56bEFvtkSwTPoQOAHcMyosah+vVocNfHIxbjC1MdBEDfzLjXBXrF1T00B1lh6 BLrQq5SqVB9TOO+qghwiV0N/xsJN34wkHdoBl7M9r3jCF5sC9RfjACiQCMSd0Z645euBXH3Szpp QK5P/0jEAgWbxkNGotabeznN25EqXyxx5lqzd9MGHSj4FtzQ5j9/xR8KEZCcj1RU/3fEJUBCCQt 0gZW4nceC6maW/EPCTnfixST1Vpfm1/VpZhbCaHnC8s+kDS7CHRkrQ X-Received: by 2002:a17:903:2c8:b0:2b4:5b82:a8e3 with SMTP id d9443c01a7336-2b97c460ff4mr55162315ad.24.1777438251775; Tue, 28 Apr 2026 21:50:51 -0700 (PDT) From: alistair23@gmail.com X-Google-Original-From: alistair.francis@wdc.com To: palmer@dabbelt.com, liwei1518@gmail.com, daniel.barboza@oss.qualcomm.com, zhiwei_liu@linux.alibaba.com, chao.liu.zevorn@gmail.com, qemu-riscv@nongnu.org, qemu-devel@nongnu.org Cc: alistair23@gmail.com, Max Chou , Alistair Francis Subject: [PULL 32/51] target/riscv: Introduce altfmt into DisasContext Date: Wed, 29 Apr 2026 14:47:33 +1000 Message-ID: <20260429044752.4176397-33-alistair.francis@wdc.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260429044752.4176397-1-alistair.francis@wdc.com> References: <20260429044752.4176397-1-alistair.francis@wdc.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::630; envelope-from=alistair23@gmail.com; helo=mail-pl1-x630.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.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, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable 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 @gmail.com) X-ZM-MESSAGEID: 1777438331111154100 Content-Type: text/plain; charset="utf-8" From: Max Chou Reviewed-by: Daniel Henrique Barboza Reviewed-by: Chao Liu Reviewed-by: Alistair Francis Signed-off-by: Max Chou Message-ID: <20260402125234.1371897-7-max.chou@sifive.com> Signed-off-by: Alistair Francis --- target/riscv/translate.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/target/riscv/translate.c b/target/riscv/translate.c index f6b915a7fb..f8ccf34438 100644 --- a/target/riscv/translate.c +++ b/target/riscv/translate.c @@ -101,6 +101,7 @@ typedef struct DisasContext { bool cfg_vta_all_1s; bool vstart_eq_zero; bool vl_eq_vlmax; + bool altfmt; CPUState *cs; TCGv zero; /* actual address width */ @@ -1310,6 +1311,7 @@ static void riscv_tr_init_disas_context(DisasContextB= ase *dcbase, CPUState *cs) RISCVCPUClass *mcc =3D RISCV_CPU_GET_CLASS(cs); RISCVCPU *cpu =3D RISCV_CPU(cs); uint32_t tb_flags =3D ctx->base.tb->flags; + uint64_t ext_tb_flags =3D ctx->base.tb->cs_base; =20 ctx->pc_save =3D ctx->base.pc_first; ctx->priv =3D FIELD_EX32(tb_flags, TB_FLAGS, PRIV); @@ -1329,6 +1331,7 @@ static void riscv_tr_init_disas_context(DisasContextB= ase *dcbase, CPUState *cs) ctx->cfg_vta_all_1s =3D cpu->cfg.rvv_ta_all_1s; ctx->vstart_eq_zero =3D FIELD_EX32(tb_flags, TB_FLAGS, VSTART_EQ_ZERO); ctx->vl_eq_vlmax =3D FIELD_EX32(tb_flags, TB_FLAGS, VL_EQ_VLMAX); + ctx->altfmt =3D FIELD_EX64(ext_tb_flags, EXT_TB_FLAGS, ALTFMT); ctx->misa_mxl_max =3D mcc->def->misa_mxl_max; ctx->xl =3D FIELD_EX32(tb_flags, TB_FLAGS, XL); ctx->address_xl =3D FIELD_EX32(tb_flags, TB_FLAGS, AXL); --=20 2.53.0 From nobody Sat May 30 19:23:38 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1777438767; cv=none; d=zohomail.com; s=zohoarc; b=iUEp/y7RHjrevFl4iurNRKTfIlBfUms5NRMpWz7sgirOQ1DcB21gw0ZLRujCAGKhM8u4rvViDeuEG3IUW1aNy1sEqDx1Yrpscr85JrBQEGyWbHkaPILBNgsdCVCyIO1Bww8ROV0VNqeJZOE9eX4DBTvG1Y4+mMPYNOgyZJQvv6E= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777438767; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=DvzcxG+epy8Ki+870FfNlVL7pr0x5PDwCS1eWs4a/Mw=; b=njTE0BPZhkpV76xiMCEgPY21TM5xRO5+CwqUnI2ipIfOb/lnJQBHzCTdk/XLl3u86DN7ZOCNhF2mAyzW1ktzUM1/wWUvVv/RaW03l0QuSm3UBu3NFwO4JNv39knYJmjZXz3/vRWYsri6kZw1dCPtpHJUYzbpQjpuEivI6/pDkmM= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1777438767668820.1178669422114; Tue, 28 Apr 2026 21:59:27 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wHwtd-00083b-8E; Wed, 29 Apr 2026 00:51:37 -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 1wHwt1-0007FC-BQ for qemu-devel@nongnu.org; Wed, 29 Apr 2026 00:51:01 -0400 Received: from mail-pl1-x62c.google.com ([2607:f8b0:4864:20::62c]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wHwsz-0000qA-S0 for qemu-devel@nongnu.org; Wed, 29 Apr 2026 00:50:59 -0400 Received: by mail-pl1-x62c.google.com with SMTP id d9443c01a7336-2b9705613ddso16505335ad.1 for ; Tue, 28 Apr 2026 21:50:57 -0700 (PDT) Received: from toolbx.alistair23.me ([2403:581e:fdf9:0:6209:4521:6813:45b7]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2b988772ae8sm7756145ad.7.2026.04.28.21.50.52 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 28 Apr 2026 21:50:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1777438256; x=1778043056; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=DvzcxG+epy8Ki+870FfNlVL7pr0x5PDwCS1eWs4a/Mw=; b=sxxW0sFcOITYlTkRytR/F0mPc2tV1/XbB8nktoOn/sqpVCmSSK6O14+mlvRXKqhXHl Z/04QgmnB4edGKVm3MCOVPl4H98tSrHcXbJSqOZGQULtgvwErWQPeT+u9lXesgdLrp6g Q45nTHfRET1lm1ofYtfIyubCYqeuNhv3BU5JNzB4B1pgceH3fIFsMQwizqghKvehFTXi 3YkvwFKtxdoF0+f2/rOZtPhtvV7mIV1M496EB5EXUoTp/an4ZXdtRYKH96v7bcldg0n5 OvQJB9nWrsSiKlykPuss7XvQxxmOF9kxPNws/xbZSU9rjCYx1VmXkvd/wrQxBU+umrGp YBjw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777438256; x=1778043056; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=DvzcxG+epy8Ki+870FfNlVL7pr0x5PDwCS1eWs4a/Mw=; b=N6WOtSlBCXbKW6n0HHu28X+q7xRyJ3fs73zBjmU/RyHhnLsUxpGJWUAAuDrw9FVPp4 6yNisDRMYMnJfLL7FaVRee/vHyZ4P0MO7lUlaXXjoNp2cC0xwOewHw+1rEtM5Dy4YLCZ 7rU1zwuyua916L8Gl9B6kz4DYPa+TWMbhiWV3q8/e8QPRrH2njTj97qQRkSKyJBZsqlM 0iL9oWk7/iYoXdMiXZ/O7gFqJWMZD5fBbf23hjxMxPNnAXdrsMWisB8HYxQYI7QYzV19 6xgVK3ofzZ+NBX+OgbRWfgcPvZulWa7wWVpBd0Vx2fPFrZwvzl5/PWSR8t1Bo0v22S// 8xRw== X-Forwarded-Encrypted: i=1; AFNElJ96qqKKpGGQIoyP2WLGWwDOI36ndQQGNCxyO3ugM1dmdHesrLoDn3F6yFI+ToirxYgFrm21O3MqvDh/@nongnu.org X-Gm-Message-State: AOJu0YwZfBe06x2919l7wEZCIWckoF6jsIsJ4XtHh5/U59zdtmZJe1lF kT4llQIVAebc15zhNXxNzC4Bjza6iuFI9rNila/CxvyVjxm6rUxqKKCM X-Gm-Gg: AeBDiev7Hq4Gu434qjeGWAcbfFt2C8qVQMDr04LEd+ErWNc3a20KKbe9eHB0CSORpQR yCVmWb9fr2dJmjxQsufu+KBvsFLBevvJ1byIUjcASeEzzdgmVOrJN+QgYgYPb6wiCGClsSholQh wHQgJJxk10dphqb5Kn6+JhaU3RPauIhCZXLnmjrcs4j57LWk/E8OYXWWmX8/A9FRcFogwS3jkvq yGGcuFkluCP5CUA/62cftzrck/5hYzwFtTMPZtyqOJ4eNyNG3ht/uDzCWKuRG39GrH28guuKM58 3nt/CRzxuK8yXpfY1wl+FcHCbIMoJnMLXqg91NwJWVSdB75IOSq37EQxGX5AV3EKNmtLxqgJGqh EJkPtZ83+yHimwap1coAsk6IiCyY40s0VhSWuT/z/aXHsNKd5tZJYJTT+5dzJGfNCnVl3kKChwV AJmZg8Pis31D2SutKGn6EVRxoKhbpM57EiSPfoXrJgW2fpFdXGb80v X-Received: by 2002:a17:903:2c0e:b0:2b9:78cb:3477 with SMTP id d9443c01a7336-2b9872f82a1mr21524875ad.8.1777438256514; Tue, 28 Apr 2026 21:50:56 -0700 (PDT) From: alistair23@gmail.com X-Google-Original-From: alistair.francis@wdc.com To: palmer@dabbelt.com, liwei1518@gmail.com, daniel.barboza@oss.qualcomm.com, zhiwei_liu@linux.alibaba.com, chao.liu.zevorn@gmail.com, qemu-riscv@nongnu.org, qemu-devel@nongnu.org Cc: alistair23@gmail.com, Max Chou , Alistair Francis Subject: [PULL 33/51] target/riscv: Introduce BF16 canonical NaN for Zvfbfa extension Date: Wed, 29 Apr 2026 14:47:34 +1000 Message-ID: <20260429044752.4176397-34-alistair.francis@wdc.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260429044752.4176397-1-alistair.francis@wdc.com> References: <20260429044752.4176397-1-alistair.francis@wdc.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::62c; envelope-from=alistair23@gmail.com; helo=mail-pl1-x62c.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.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, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1777438769214158500 Content-Type: text/plain; charset="utf-8" From: Max Chou According to the Zvfbfa ISA spec (v0.1), improperly NaN-boxed f-register operands must substitute the BF16 canonical NaN instead of the FP16 canonical NaN for some vector floating-point instructions. Reviewed-by: Daniel Henrique Barboza Reviewed-by: Chao Liu Reviewed-by: Alistair Francis Signed-off-by: Max Chou Message-ID: <20260402125234.1371897-8-max.chou@sifive.com> Signed-off-by: Alistair Francis --- target/riscv/translate.c | 8 ++++++++ target/riscv/insn_trans/trans_rvv.c.inc | 18 +++++++++--------- 2 files changed, 17 insertions(+), 9 deletions(-) diff --git a/target/riscv/translate.c b/target/riscv/translate.c index f8ccf34438..1e4f340256 100644 --- a/target/riscv/translate.c +++ b/target/riscv/translate.c @@ -214,6 +214,14 @@ static void gen_check_nanbox_h(TCGv_i64 out, TCGv_i64 = in) tcg_gen_movcond_i64(TCG_COND_GEU, out, in, t_max, in, t_nan); } =20 +static void gen_check_nanbox_h_bf16(TCGv_i64 out, TCGv_i64 in) +{ + TCGv_i64 t_max =3D tcg_constant_i64(0xffffffffffff0000ull); + TCGv_i64 t_nan =3D tcg_constant_i64(0xffffffffffff7fc0ull); + + tcg_gen_movcond_i64(TCG_COND_GEU, out, in, t_max, in, t_nan); +} + static void gen_check_nanbox_s(TCGv_i64 out, TCGv_i64 in) { TCGv_i64 t_max =3D tcg_constant_i64(0xffffffff00000000ull); diff --git a/target/riscv/insn_trans/trans_rvv.c.inc b/target/riscv/insn_tr= ans/trans_rvv.c.inc index 4df9a40b44..03ae85796a 100644 --- a/target/riscv/insn_trans/trans_rvv.c.inc +++ b/target/riscv/insn_trans/trans_rvv.c.inc @@ -2319,17 +2319,17 @@ GEN_OPIWI_NARROW_TRANS(vnclip_wi, IMM_ZX, vnclip_wx) */ static void do_nanbox(DisasContext *s, TCGv_i64 out, TCGv_i64 in) { - switch (s->sew) { - case 1: - gen_check_nanbox_h(out, in); - break; - case 2: + if (s->sew =3D=3D MO_16) { + if (s->altfmt) { + gen_check_nanbox_h_bf16(out, in); + } else { + gen_check_nanbox_h(out, in); + } + } else if (s->sew =3D=3D MO_32) { gen_check_nanbox_s(out, in); - break; - case 3: + } else if (s->sew =3D=3D MO_64) { tcg_gen_mov_i64(out, in); - break; - default: + } else { g_assert_not_reached(); } } --=20 2.53.0 From nobody Sat May 30 19:23:38 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1777438377; cv=none; d=zohomail.com; s=zohoarc; b=iMcRgDw7k3j5qyb6idc1ky8pSyMhzfl9CxfCloUeoC4AH89jVOPzkM44niHYo4zalFSGK+sCXOeqTP9SLbFp2xCb574BlCnIjnKRJaYEw+TDJpd21eUBXoWZRpTFEws3SMZdZtKtcbALoTyiS+1II6N1J8/Zr7RvVKEVr6xt7RE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777438377; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=xuQlWrYFNlPfy12gmfcFCor/lpjMDdjpQZkPlv++DTQ=; b=jErHYJWyZAOLNrFo/HM04G5C3p2DhNlPNQRpX85aOBjPh7LYbCNJXQhf0nKaOo9Uhvsv4wFBUtvjRhXHMAE73uJd8AvvJB5bH8YCrBbgTA6VEQq43myOC6IxxnW0/ZzCwv/KBq3QDgmd/8xsktoEqM5lMWdYPDKMea2KxsU6UlY= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1777438377445960.0246655485633; Tue, 28 Apr 2026 21:52:57 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wHwte-0008Ea-JR; Wed, 29 Apr 2026 00:51: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 1wHwtB-0007R0-H4 for qemu-devel@nongnu.org; Wed, 29 Apr 2026 00:51:10 -0400 Received: from mail-pl1-x632.google.com ([2607:f8b0:4864:20::632]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wHwt6-0000rX-1g for qemu-devel@nongnu.org; Wed, 29 Apr 2026 00:51:09 -0400 Received: by mail-pl1-x632.google.com with SMTP id d9443c01a7336-2b4583f0a1aso76767855ad.3 for ; Tue, 28 Apr 2026 21:51:03 -0700 (PDT) Received: from toolbx.alistair23.me ([2403:581e:fdf9:0:6209:4521:6813:45b7]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2b988772ae8sm7756145ad.7.2026.04.28.21.50.56 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 28 Apr 2026 21:51:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1777438263; x=1778043063; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=xuQlWrYFNlPfy12gmfcFCor/lpjMDdjpQZkPlv++DTQ=; b=KU1GRL/IK1M6ECUDCYyVmusxt5WxByzdTaZKeAUgyMSnzM0pBFdEBBld6iqrzhFtK1 8xjVbK0kBoXtj7mNxCU+Gm18rID46w2ZFV3/OBJPjW92hOWDN2cTfDap2Uqh7y85i2Bn oibbbPypJGFiEXPbZnUHgmpfnEt/kaAafReQvoyawGv0Ge24TT9dFf02Fu0Jiw8L7mYf sXa/IYsO26V1dpRjrTkxYwshfEAPb7tuj3KKcB1V2Bsr+vTcwsrkvgCRZwpHKFPg3ra6 fybq4VZdX5tjzlpCJ588CqQnSX7QMCGOgqAhUF1aNQ8bjqPy2RZ9QuDMjansh2sR2Rco my3A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777438263; x=1778043063; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=xuQlWrYFNlPfy12gmfcFCor/lpjMDdjpQZkPlv++DTQ=; b=FZPcCEtKqTswsW3e4M/M4+2Z3IzahxzswP4UpKa3IP9jx62n5iCqDP4VlC9vTPGIHy qIhwia1KdWcy0SDS10TEOt1Ns9SZuoLDIVtwzX4k5iLdPLsMPHo6xvJhDY1NHFZQ+2ob 9+dTpWwKCCOXlY9WKALAC41LChryxkNJfIbzB8CCnl49oX7lAmFfyBgFoB9jJzq0j1e1 H2cAiCT0NNAbXu2v5MonYNHp/8SlUmq6xjFWXhXOeOFboceI+xtvxvIH4Mxa3i8wYWfC insYoC+f/KXRdeeoW+vqtAPM0dpd5KswOn10KbCQ9hUFnJrxG+SXXvkxqeVdxeMvjtvy 5ZRQ== X-Forwarded-Encrypted: i=1; AFNElJ9WdkYAfcctog6WRu29LAIRRyg8j/8tVRkzp6O3WphAS+WVRqL3HJlTybDmb4ScAsyiOo1pF/3umJ36@nongnu.org X-Gm-Message-State: AOJu0Yy4G0nEG9hzsiydoc22v4Ka7AGGaVag3iLJw2DHwacMVgNSl/iD G9MWNgwRj4+9HfRDivs/BR4ZqmPLAu97Tt3ndhUY/TtFfG324vq4InnffoekuA== X-Gm-Gg: AeBDiev+MG/AjeodROzlWaejUVyI3Oj0mWo4AkEA6paKfFqqpmZuOH3te383xEDt/Sg ecI/8+njW2ilYx0/mz5taaS6UNWwS6FwfzthA/m6vO6yXfsHv24XR7PqTe4y+eYN/SxtMzEUpds wQ7ZuMXrgbdrF4Mf0Eq/7C9R62SxF9+r+vLU5QRD6oENmO9vKl77JY6r61DambB/X8cxFneLKbm gbjJk2Dt5CPPzx1SESSxaJTZ0Qa7MtJqNU0uNwOaIrhXJxJnyg/raRCce6O4fvhmOm6+zkVrPfd K5L8sbC8QfYikfVHDqGede7YgPXaU4nLUg89xvcojmOl3ZjdY3xVHTKc456Z2zGoBtrXRK7WH6M KJr/mA2OWTnZZYwa7SvgfRGnc2SCcW31iwmEAdf+7xAPOIm6kgBnE7pupXLhpURRd5Kuin+8Syw MhdaYkDH4nCTMcJLUXDssJHF428glFbuAbIizIvxtCgaMxVJvOcGJO X-Received: by 2002:a17:903:1b2c:b0:2b2:a267:784a with SMTP id d9443c01a7336-2b97c47b88fmr56651455ad.24.1777438262170; Tue, 28 Apr 2026 21:51:02 -0700 (PDT) From: alistair23@gmail.com X-Google-Original-From: alistair.francis@wdc.com To: palmer@dabbelt.com, liwei1518@gmail.com, daniel.barboza@oss.qualcomm.com, zhiwei_liu@linux.alibaba.com, chao.liu.zevorn@gmail.com, qemu-riscv@nongnu.org, qemu-devel@nongnu.org Cc: alistair23@gmail.com, Max Chou , Alistair Francis Subject: [PULL 34/51] target/riscv: rvv: Support Zvfbfa vector bf16 operations Date: Wed, 29 Apr 2026 14:47:35 +1000 Message-ID: <20260429044752.4176397-35-alistair.francis@wdc.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260429044752.4176397-1-alistair.francis@wdc.com> References: <20260429044752.4176397-1-alistair.francis@wdc.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::632; envelope-from=alistair23@gmail.com; helo=mail-pl1-x632.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.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, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1777438377754158500 Content-Type: text/plain; charset="utf-8" From: Max Chou According to the Zvfbfa ISA spec v0.1, the following vector floating point instructions have different behaviors depend on the ALTFMT and VSEW fields of VTYPE CSR. When altfmt=3D1 and SEW=3D8, all vector floating-point instructions become reserved, except for the following, which are redefined to use the BF16 format for any operand that would otherwise have used the FP16 format: - vfwcvt.f.x[u].v, vfncvt.x[u].f.w, vfncvt.rtz.x[u].f.w When altfmt=3D1 and SEW=3D16, all vector floating-point instructions become reserved, except for the following, which are redefined to use the BF16 format for any operand that would otherwise have used the FP16 format: - vfadd.v[vf], vfsub.v[vf], vfmin.v[vf], vfmax.v[vf], vmfeq.v[vf], vmfle.v[vf], vmflt.v[vf], vmfne.v[vf], vmfgt.vf, vmfge.vf, vfmul.v[vf], vfrsub.vf, vfmadd.v[vf], vfnmadd.v[vf], vfmsub.v[vf], vfnmsub.v[vf], vfmacc.v[vf], vfnmacc.v[vf], vfmsac.v[vf], vfnmsac.v[vf], vfwadd.v[vf], vfwsub.v[vf], vfwadd.w[vf], vfwsub.w[vf], vfwmul.v[vf], vfwmacc.v[vf], vfwnmacc.v[vf], vfwmsac.v[vf], vfwnmsac.v[vf], vfwcvt.f.f.v, vfncvt.f.f.w, vfncvt.rod.f.f.w, vfrsqrt7.v, vfrec7.v, vfclass.v The following instructions marked with * have the same semantics regardless of altfmt. *- vfmv.f.s, vfwmaccbf16.v[vf] (only if Zvfbfwma is implemented) vfwcvtbf16.f.f.v (only if Zvfbfmin is implemented) vfncvtbf16.f.f.w (only if Zvfbfmin is implemented) The following instructions marked with ** differ only in that improperly NaN-boxed f-register operands must substitute the BF16 canonical NaN instead of the FP16 canonical NaN. **- vfsgnj.v[vf], vfsgnjn.v[vf], vfsgnjx.v[vf], vfslide1up.vf, vfslide1down.vf, vfmv.v.f, vfmerge.vfm, vfmv.s.f Reviewed-by: Daniel Henrique Barboza Reviewed-by: Chao Liu Signed-off-by: Max Chou Message-ID: <20260402125234.1371897-9-max.chou@sifive.com> Signed-off-by: Alistair Francis --- target/riscv/helper.h | 60 ++ target/riscv/internals.h | 1 + target/riscv/vector_helper.c | 329 ++++++++ target/riscv/insn_trans/trans_rvv.c.inc | 970 +++++++++++++++--------- 4 files changed, 989 insertions(+), 371 deletions(-) diff --git a/target/riscv/helper.h b/target/riscv/helper.h index 7722c590bd..54d2331966 100644 --- a/target/riscv/helper.h +++ b/target/riscv/helper.h @@ -768,45 +768,60 @@ DEF_HELPER_6(vnclip_wx_b, void, ptr, ptr, tl, ptr, en= v, i32) DEF_HELPER_6(vnclip_wx_h, void, ptr, ptr, tl, ptr, env, i32) DEF_HELPER_6(vnclip_wx_w, void, ptr, ptr, tl, ptr, env, i32) =20 +DEF_HELPER_6(vfadd_vv_h_bf16, void, ptr, ptr, ptr, ptr, env, i32) DEF_HELPER_6(vfadd_vv_h, void, ptr, ptr, ptr, ptr, env, i32) DEF_HELPER_6(vfadd_vv_w, void, ptr, ptr, ptr, ptr, env, i32) DEF_HELPER_6(vfadd_vv_d, void, ptr, ptr, ptr, ptr, env, i32) +DEF_HELPER_6(vfsub_vv_h_bf16, void, ptr, ptr, ptr, ptr, env, i32) DEF_HELPER_6(vfsub_vv_h, void, ptr, ptr, ptr, ptr, env, i32) DEF_HELPER_6(vfsub_vv_w, void, ptr, ptr, ptr, ptr, env, i32) DEF_HELPER_6(vfsub_vv_d, void, ptr, ptr, ptr, ptr, env, i32) +DEF_HELPER_6(vfadd_vf_h_bf16, void, ptr, ptr, i64, ptr, env, i32) DEF_HELPER_6(vfadd_vf_h, void, ptr, ptr, i64, ptr, env, i32) DEF_HELPER_6(vfadd_vf_w, void, ptr, ptr, i64, ptr, env, i32) DEF_HELPER_6(vfadd_vf_d, void, ptr, ptr, i64, ptr, env, i32) +DEF_HELPER_6(vfsub_vf_h_bf16, void, ptr, ptr, i64, ptr, env, i32) DEF_HELPER_6(vfsub_vf_h, void, ptr, ptr, i64, ptr, env, i32) DEF_HELPER_6(vfsub_vf_w, void, ptr, ptr, i64, ptr, env, i32) DEF_HELPER_6(vfsub_vf_d, void, ptr, ptr, i64, ptr, env, i32) +DEF_HELPER_6(vfrsub_vf_h_bf16, void, ptr, ptr, i64, ptr, env, i32) DEF_HELPER_6(vfrsub_vf_h, void, ptr, ptr, i64, ptr, env, i32) DEF_HELPER_6(vfrsub_vf_w, void, ptr, ptr, i64, ptr, env, i32) DEF_HELPER_6(vfrsub_vf_d, void, ptr, ptr, i64, ptr, env, i32) =20 +DEF_HELPER_6(vfwadd_vv_h_bf16, void, ptr, ptr, ptr, ptr, env, i32) DEF_HELPER_6(vfwadd_vv_h, void, ptr, ptr, ptr, ptr, env, i32) DEF_HELPER_6(vfwadd_vv_w, void, ptr, ptr, ptr, ptr, env, i32) +DEF_HELPER_6(vfwsub_vv_h_bf16, void, ptr, ptr, ptr, ptr, env, i32) DEF_HELPER_6(vfwsub_vv_h, void, ptr, ptr, ptr, ptr, env, i32) DEF_HELPER_6(vfwsub_vv_w, void, ptr, ptr, ptr, ptr, env, i32) +DEF_HELPER_6(vfwadd_wv_h_bf16, void, ptr, ptr, ptr, ptr, env, i32) DEF_HELPER_6(vfwadd_wv_h, void, ptr, ptr, ptr, ptr, env, i32) DEF_HELPER_6(vfwadd_wv_w, void, ptr, ptr, ptr, ptr, env, i32) +DEF_HELPER_6(vfwsub_wv_h_bf16, void, ptr, ptr, ptr, ptr, env, i32) DEF_HELPER_6(vfwsub_wv_h, void, ptr, ptr, ptr, ptr, env, i32) DEF_HELPER_6(vfwsub_wv_w, void, ptr, ptr, ptr, ptr, env, i32) +DEF_HELPER_6(vfwadd_vf_h_bf16, void, ptr, ptr, i64, ptr, env, i32) DEF_HELPER_6(vfwadd_vf_h, void, ptr, ptr, i64, ptr, env, i32) DEF_HELPER_6(vfwadd_vf_w, void, ptr, ptr, i64, ptr, env, i32) +DEF_HELPER_6(vfwsub_vf_h_bf16, void, ptr, ptr, i64, ptr, env, i32) DEF_HELPER_6(vfwsub_vf_h, void, ptr, ptr, i64, ptr, env, i32) DEF_HELPER_6(vfwsub_vf_w, void, ptr, ptr, i64, ptr, env, i32) +DEF_HELPER_6(vfwadd_wf_h_bf16, void, ptr, ptr, i64, ptr, env, i32) DEF_HELPER_6(vfwadd_wf_h, void, ptr, ptr, i64, ptr, env, i32) DEF_HELPER_6(vfwadd_wf_w, void, ptr, ptr, i64, ptr, env, i32) +DEF_HELPER_6(vfwsub_wf_h_bf16, void, ptr, ptr, i64, ptr, env, i32) DEF_HELPER_6(vfwsub_wf_h, void, ptr, ptr, i64, ptr, env, i32) DEF_HELPER_6(vfwsub_wf_w, void, ptr, ptr, i64, ptr, env, i32) =20 +DEF_HELPER_6(vfmul_vv_h_bf16, void, ptr, ptr, ptr, ptr, env, i32) DEF_HELPER_6(vfmul_vv_h, void, ptr, ptr, ptr, ptr, env, i32) DEF_HELPER_6(vfmul_vv_w, void, ptr, ptr, ptr, ptr, env, i32) DEF_HELPER_6(vfmul_vv_d, void, ptr, ptr, ptr, ptr, env, i32) DEF_HELPER_6(vfdiv_vv_h, void, ptr, ptr, ptr, ptr, env, i32) DEF_HELPER_6(vfdiv_vv_w, void, ptr, ptr, ptr, ptr, env, i32) DEF_HELPER_6(vfdiv_vv_d, void, ptr, ptr, ptr, ptr, env, i32) +DEF_HELPER_6(vfmul_vf_h_bf16, void, ptr, ptr, i64, ptr, env, i32) DEF_HELPER_6(vfmul_vf_h, void, ptr, ptr, i64, ptr, env, i32) DEF_HELPER_6(vfmul_vf_w, void, ptr, ptr, i64, ptr, env, i32) DEF_HELPER_6(vfmul_vf_d, void, ptr, ptr, i64, ptr, env, i32) @@ -817,74 +832,98 @@ DEF_HELPER_6(vfrdiv_vf_h, void, ptr, ptr, i64, ptr, e= nv, i32) DEF_HELPER_6(vfrdiv_vf_w, void, ptr, ptr, i64, ptr, env, i32) DEF_HELPER_6(vfrdiv_vf_d, void, ptr, ptr, i64, ptr, env, i32) =20 +DEF_HELPER_6(vfwmul_vv_h_bf16, void, ptr, ptr, ptr, ptr, env, i32) DEF_HELPER_6(vfwmul_vv_h, void, ptr, ptr, ptr, ptr, env, i32) DEF_HELPER_6(vfwmul_vv_w, void, ptr, ptr, ptr, ptr, env, i32) +DEF_HELPER_6(vfwmul_vf_h_bf16, void, ptr, ptr, i64, ptr, env, i32) DEF_HELPER_6(vfwmul_vf_h, void, ptr, ptr, i64, ptr, env, i32) DEF_HELPER_6(vfwmul_vf_w, void, ptr, ptr, i64, ptr, env, i32) =20 +DEF_HELPER_6(vfmacc_vv_h_bf16, void, ptr, ptr, ptr, ptr, env, i32) DEF_HELPER_6(vfmacc_vv_h, void, ptr, ptr, ptr, ptr, env, i32) DEF_HELPER_6(vfmacc_vv_w, void, ptr, ptr, ptr, ptr, env, i32) DEF_HELPER_6(vfmacc_vv_d, void, ptr, ptr, ptr, ptr, env, i32) +DEF_HELPER_6(vfnmacc_vv_h_bf16, void, ptr, ptr, ptr, ptr, env, i32) DEF_HELPER_6(vfnmacc_vv_h, void, ptr, ptr, ptr, ptr, env, i32) DEF_HELPER_6(vfnmacc_vv_w, void, ptr, ptr, ptr, ptr, env, i32) DEF_HELPER_6(vfnmacc_vv_d, void, ptr, ptr, ptr, ptr, env, i32) +DEF_HELPER_6(vfmsac_vv_h_bf16, void, ptr, ptr, ptr, ptr, env, i32) DEF_HELPER_6(vfmsac_vv_h, void, ptr, ptr, ptr, ptr, env, i32) DEF_HELPER_6(vfmsac_vv_w, void, ptr, ptr, ptr, ptr, env, i32) DEF_HELPER_6(vfmsac_vv_d, void, ptr, ptr, ptr, ptr, env, i32) +DEF_HELPER_6(vfnmsac_vv_h_bf16, void, ptr, ptr, ptr, ptr, env, i32) DEF_HELPER_6(vfnmsac_vv_h, void, ptr, ptr, ptr, ptr, env, i32) DEF_HELPER_6(vfnmsac_vv_w, void, ptr, ptr, ptr, ptr, env, i32) DEF_HELPER_6(vfnmsac_vv_d, void, ptr, ptr, ptr, ptr, env, i32) +DEF_HELPER_6(vfmadd_vv_h_bf16, void, ptr, ptr, ptr, ptr, env, i32) DEF_HELPER_6(vfmadd_vv_h, void, ptr, ptr, ptr, ptr, env, i32) DEF_HELPER_6(vfmadd_vv_w, void, ptr, ptr, ptr, ptr, env, i32) DEF_HELPER_6(vfmadd_vv_d, void, ptr, ptr, ptr, ptr, env, i32) +DEF_HELPER_6(vfnmadd_vv_h_bf16, void, ptr, ptr, ptr, ptr, env, i32) DEF_HELPER_6(vfnmadd_vv_h, void, ptr, ptr, ptr, ptr, env, i32) DEF_HELPER_6(vfnmadd_vv_w, void, ptr, ptr, ptr, ptr, env, i32) DEF_HELPER_6(vfnmadd_vv_d, void, ptr, ptr, ptr, ptr, env, i32) +DEF_HELPER_6(vfmsub_vv_h_bf16, void, ptr, ptr, ptr, ptr, env, i32) DEF_HELPER_6(vfmsub_vv_h, void, ptr, ptr, ptr, ptr, env, i32) DEF_HELPER_6(vfmsub_vv_w, void, ptr, ptr, ptr, ptr, env, i32) DEF_HELPER_6(vfmsub_vv_d, void, ptr, ptr, ptr, ptr, env, i32) +DEF_HELPER_6(vfnmsub_vv_h_bf16, void, ptr, ptr, ptr, ptr, env, i32) DEF_HELPER_6(vfnmsub_vv_h, void, ptr, ptr, ptr, ptr, env, i32) DEF_HELPER_6(vfnmsub_vv_w, void, ptr, ptr, ptr, ptr, env, i32) DEF_HELPER_6(vfnmsub_vv_d, void, ptr, ptr, ptr, ptr, env, i32) +DEF_HELPER_6(vfmacc_vf_h_bf16, void, ptr, ptr, i64, ptr, env, i32) DEF_HELPER_6(vfmacc_vf_h, void, ptr, ptr, i64, ptr, env, i32) DEF_HELPER_6(vfmacc_vf_w, void, ptr, ptr, i64, ptr, env, i32) DEF_HELPER_6(vfmacc_vf_d, void, ptr, ptr, i64, ptr, env, i32) +DEF_HELPER_6(vfnmacc_vf_h_bf16, void, ptr, ptr, i64, ptr, env, i32) DEF_HELPER_6(vfnmacc_vf_h, void, ptr, ptr, i64, ptr, env, i32) DEF_HELPER_6(vfnmacc_vf_w, void, ptr, ptr, i64, ptr, env, i32) DEF_HELPER_6(vfnmacc_vf_d, void, ptr, ptr, i64, ptr, env, i32) +DEF_HELPER_6(vfmsac_vf_h_bf16, void, ptr, ptr, i64, ptr, env, i32) DEF_HELPER_6(vfmsac_vf_h, void, ptr, ptr, i64, ptr, env, i32) DEF_HELPER_6(vfmsac_vf_w, void, ptr, ptr, i64, ptr, env, i32) DEF_HELPER_6(vfmsac_vf_d, void, ptr, ptr, i64, ptr, env, i32) +DEF_HELPER_6(vfnmsac_vf_h_bf16, void, ptr, ptr, i64, ptr, env, i32) DEF_HELPER_6(vfnmsac_vf_h, void, ptr, ptr, i64, ptr, env, i32) DEF_HELPER_6(vfnmsac_vf_w, void, ptr, ptr, i64, ptr, env, i32) DEF_HELPER_6(vfnmsac_vf_d, void, ptr, ptr, i64, ptr, env, i32) +DEF_HELPER_6(vfmadd_vf_h_bf16, void, ptr, ptr, i64, ptr, env, i32) DEF_HELPER_6(vfmadd_vf_h, void, ptr, ptr, i64, ptr, env, i32) DEF_HELPER_6(vfmadd_vf_w, void, ptr, ptr, i64, ptr, env, i32) DEF_HELPER_6(vfmadd_vf_d, void, ptr, ptr, i64, ptr, env, i32) +DEF_HELPER_6(vfnmadd_vf_h_bf16, void, ptr, ptr, i64, ptr, env, i32) DEF_HELPER_6(vfnmadd_vf_h, void, ptr, ptr, i64, ptr, env, i32) DEF_HELPER_6(vfnmadd_vf_w, void, ptr, ptr, i64, ptr, env, i32) DEF_HELPER_6(vfnmadd_vf_d, void, ptr, ptr, i64, ptr, env, i32) +DEF_HELPER_6(vfmsub_vf_h_bf16, void, ptr, ptr, i64, ptr, env, i32) DEF_HELPER_6(vfmsub_vf_h, void, ptr, ptr, i64, ptr, env, i32) DEF_HELPER_6(vfmsub_vf_w, void, ptr, ptr, i64, ptr, env, i32) DEF_HELPER_6(vfmsub_vf_d, void, ptr, ptr, i64, ptr, env, i32) +DEF_HELPER_6(vfnmsub_vf_h_bf16, void, ptr, ptr, i64, ptr, env, i32) DEF_HELPER_6(vfnmsub_vf_h, void, ptr, ptr, i64, ptr, env, i32) DEF_HELPER_6(vfnmsub_vf_w, void, ptr, ptr, i64, ptr, env, i32) DEF_HELPER_6(vfnmsub_vf_d, void, ptr, ptr, i64, ptr, env, i32) =20 DEF_HELPER_6(vfwmacc_vv_h, void, ptr, ptr, ptr, ptr, env, i32) DEF_HELPER_6(vfwmacc_vv_w, void, ptr, ptr, ptr, ptr, env, i32) +DEF_HELPER_6(vfwnmacc_vv_h_bf16, void, ptr, ptr, ptr, ptr, env, i32) DEF_HELPER_6(vfwnmacc_vv_h, void, ptr, ptr, ptr, ptr, env, i32) DEF_HELPER_6(vfwnmacc_vv_w, void, ptr, ptr, ptr, ptr, env, i32) +DEF_HELPER_6(vfwmsac_vv_h_bf16, void, ptr, ptr, ptr, ptr, env, i32) DEF_HELPER_6(vfwmsac_vv_h, void, ptr, ptr, ptr, ptr, env, i32) DEF_HELPER_6(vfwmsac_vv_w, void, ptr, ptr, ptr, ptr, env, i32) +DEF_HELPER_6(vfwnmsac_vv_h_bf16, void, ptr, ptr, ptr, ptr, env, i32) DEF_HELPER_6(vfwnmsac_vv_h, void, ptr, ptr, ptr, ptr, env, i32) DEF_HELPER_6(vfwnmsac_vv_w, void, ptr, ptr, ptr, ptr, env, i32) DEF_HELPER_6(vfwmacc_vf_h, void, ptr, ptr, i64, ptr, env, i32) DEF_HELPER_6(vfwmacc_vf_w, void, ptr, ptr, i64, ptr, env, i32) +DEF_HELPER_6(vfwnmacc_vf_h_bf16, void, ptr, ptr, i64, ptr, env, i32) DEF_HELPER_6(vfwnmacc_vf_h, void, ptr, ptr, i64, ptr, env, i32) DEF_HELPER_6(vfwnmacc_vf_w, void, ptr, ptr, i64, ptr, env, i32) +DEF_HELPER_6(vfwmsac_vf_h_bf16, void, ptr, ptr, i64, ptr, env, i32) DEF_HELPER_6(vfwmsac_vf_h, void, ptr, ptr, i64, ptr, env, i32) DEF_HELPER_6(vfwmsac_vf_w, void, ptr, ptr, i64, ptr, env, i32) +DEF_HELPER_6(vfwnmsac_vf_h_bf16, void, ptr, ptr, i64, ptr, env, i32) DEF_HELPER_6(vfwnmsac_vf_h, void, ptr, ptr, i64, ptr, env, i32) DEF_HELPER_6(vfwnmsac_vf_w, void, ptr, ptr, i64, ptr, env, i32) =20 @@ -892,23 +931,29 @@ DEF_HELPER_5(vfsqrt_v_h, void, ptr, ptr, ptr, env, i3= 2) DEF_HELPER_5(vfsqrt_v_w, void, ptr, ptr, ptr, env, i32) DEF_HELPER_5(vfsqrt_v_d, void, ptr, ptr, ptr, env, i32) =20 +DEF_HELPER_5(vfrsqrt7_v_h_bf16, void, ptr, ptr, ptr, env, i32) DEF_HELPER_5(vfrsqrt7_v_h, void, ptr, ptr, ptr, env, i32) DEF_HELPER_5(vfrsqrt7_v_w, void, ptr, ptr, ptr, env, i32) DEF_HELPER_5(vfrsqrt7_v_d, void, ptr, ptr, ptr, env, i32) =20 +DEF_HELPER_5(vfrec7_v_h_bf16, void, ptr, ptr, ptr, env, i32) DEF_HELPER_5(vfrec7_v_h, void, ptr, ptr, ptr, env, i32) DEF_HELPER_5(vfrec7_v_w, void, ptr, ptr, ptr, env, i32) DEF_HELPER_5(vfrec7_v_d, void, ptr, ptr, ptr, env, i32) =20 +DEF_HELPER_6(vfmin_vv_h_bf16, void, ptr, ptr, ptr, ptr, env, i32) DEF_HELPER_6(vfmin_vv_h, void, ptr, ptr, ptr, ptr, env, i32) DEF_HELPER_6(vfmin_vv_w, void, ptr, ptr, ptr, ptr, env, i32) DEF_HELPER_6(vfmin_vv_d, void, ptr, ptr, ptr, ptr, env, i32) +DEF_HELPER_6(vfmax_vv_h_bf16, void, ptr, ptr, ptr, ptr, env, i32) DEF_HELPER_6(vfmax_vv_h, void, ptr, ptr, ptr, ptr, env, i32) DEF_HELPER_6(vfmax_vv_w, void, ptr, ptr, ptr, ptr, env, i32) DEF_HELPER_6(vfmax_vv_d, void, ptr, ptr, ptr, ptr, env, i32) +DEF_HELPER_6(vfmin_vf_h_bf16, void, ptr, ptr, i64, ptr, env, i32) DEF_HELPER_6(vfmin_vf_h, void, ptr, ptr, i64, ptr, env, i32) DEF_HELPER_6(vfmin_vf_w, void, ptr, ptr, i64, ptr, env, i32) DEF_HELPER_6(vfmin_vf_d, void, ptr, ptr, i64, ptr, env, i32) +DEF_HELPER_6(vfmax_vf_h_bf16, void, ptr, ptr, i64, ptr, env, i32) DEF_HELPER_6(vfmax_vf_h, void, ptr, ptr, i64, ptr, env, i32) DEF_HELPER_6(vfmax_vf_w, void, ptr, ptr, i64, ptr, env, i32) DEF_HELPER_6(vfmax_vf_d, void, ptr, ptr, i64, ptr, env, i32) @@ -932,37 +977,48 @@ DEF_HELPER_6(vfsgnjx_vf_h, void, ptr, ptr, i64, ptr, = env, i32) DEF_HELPER_6(vfsgnjx_vf_w, void, ptr, ptr, i64, ptr, env, i32) DEF_HELPER_6(vfsgnjx_vf_d, void, ptr, ptr, i64, ptr, env, i32) =20 +DEF_HELPER_6(vmfeq_vv_h_bf16, void, ptr, ptr, ptr, ptr, env, i32) DEF_HELPER_6(vmfeq_vv_h, void, ptr, ptr, ptr, ptr, env, i32) DEF_HELPER_6(vmfeq_vv_w, void, ptr, ptr, ptr, ptr, env, i32) DEF_HELPER_6(vmfeq_vv_d, void, ptr, ptr, ptr, ptr, env, i32) +DEF_HELPER_6(vmfne_vv_h_bf16, void, ptr, ptr, ptr, ptr, env, i32) DEF_HELPER_6(vmfne_vv_h, void, ptr, ptr, ptr, ptr, env, i32) DEF_HELPER_6(vmfne_vv_w, void, ptr, ptr, ptr, ptr, env, i32) DEF_HELPER_6(vmfne_vv_d, void, ptr, ptr, ptr, ptr, env, i32) +DEF_HELPER_6(vmflt_vv_h_bf16, void, ptr, ptr, ptr, ptr, env, i32) DEF_HELPER_6(vmflt_vv_h, void, ptr, ptr, ptr, ptr, env, i32) DEF_HELPER_6(vmflt_vv_w, void, ptr, ptr, ptr, ptr, env, i32) DEF_HELPER_6(vmflt_vv_d, void, ptr, ptr, ptr, ptr, env, i32) +DEF_HELPER_6(vmfle_vv_h_bf16, void, ptr, ptr, ptr, ptr, env, i32) DEF_HELPER_6(vmfle_vv_h, void, ptr, ptr, ptr, ptr, env, i32) DEF_HELPER_6(vmfle_vv_w, void, ptr, ptr, ptr, ptr, env, i32) DEF_HELPER_6(vmfle_vv_d, void, ptr, ptr, ptr, ptr, env, i32) +DEF_HELPER_6(vmfeq_vf_h_bf16, void, ptr, ptr, i64, ptr, env, i32) DEF_HELPER_6(vmfeq_vf_h, void, ptr, ptr, i64, ptr, env, i32) DEF_HELPER_6(vmfeq_vf_w, void, ptr, ptr, i64, ptr, env, i32) DEF_HELPER_6(vmfeq_vf_d, void, ptr, ptr, i64, ptr, env, i32) +DEF_HELPER_6(vmfne_vf_h_bf16, void, ptr, ptr, i64, ptr, env, i32) DEF_HELPER_6(vmfne_vf_h, void, ptr, ptr, i64, ptr, env, i32) DEF_HELPER_6(vmfne_vf_w, void, ptr, ptr, i64, ptr, env, i32) DEF_HELPER_6(vmfne_vf_d, void, ptr, ptr, i64, ptr, env, i32) +DEF_HELPER_6(vmflt_vf_h_bf16, void, ptr, ptr, i64, ptr, env, i32) DEF_HELPER_6(vmflt_vf_h, void, ptr, ptr, i64, ptr, env, i32) DEF_HELPER_6(vmflt_vf_w, void, ptr, ptr, i64, ptr, env, i32) DEF_HELPER_6(vmflt_vf_d, void, ptr, ptr, i64, ptr, env, i32) +DEF_HELPER_6(vmfle_vf_h_bf16, void, ptr, ptr, i64, ptr, env, i32) DEF_HELPER_6(vmfle_vf_h, void, ptr, ptr, i64, ptr, env, i32) DEF_HELPER_6(vmfle_vf_w, void, ptr, ptr, i64, ptr, env, i32) DEF_HELPER_6(vmfle_vf_d, void, ptr, ptr, i64, ptr, env, i32) +DEF_HELPER_6(vmfgt_vf_h_bf16, void, ptr, ptr, i64, ptr, env, i32) DEF_HELPER_6(vmfgt_vf_h, void, ptr, ptr, i64, ptr, env, i32) DEF_HELPER_6(vmfgt_vf_w, void, ptr, ptr, i64, ptr, env, i32) DEF_HELPER_6(vmfgt_vf_d, void, ptr, ptr, i64, ptr, env, i32) +DEF_HELPER_6(vmfge_vf_h_bf16, void, ptr, ptr, i64, ptr, env, i32) DEF_HELPER_6(vmfge_vf_h, void, ptr, ptr, i64, ptr, env, i32) DEF_HELPER_6(vmfge_vf_w, void, ptr, ptr, i64, ptr, env, i32) DEF_HELPER_6(vmfge_vf_d, void, ptr, ptr, i64, ptr, env, i32) =20 +DEF_HELPER_5(vfclass_v_h_bf16, void, ptr, ptr, ptr, env, i32) DEF_HELPER_5(vfclass_v_h, void, ptr, ptr, ptr, env, i32) DEF_HELPER_5(vfclass_v_w, void, ptr, ptr, ptr, env, i32) DEF_HELPER_5(vfclass_v_d, void, ptr, ptr, ptr, env, i32) @@ -989,18 +1045,22 @@ DEF_HELPER_5(vfwcvt_xu_f_v_w, void, ptr, ptr, ptr, e= nv, i32) DEF_HELPER_5(vfwcvt_x_f_v_h, void, ptr, ptr, ptr, env, i32) DEF_HELPER_5(vfwcvt_x_f_v_w, void, ptr, ptr, ptr, env, i32) DEF_HELPER_5(vfwcvt_f_xu_v_b, void, ptr, ptr, ptr, env, i32) +DEF_HELPER_5(vfwcvt_f_xu_v_b_bf16, void, ptr, ptr, ptr, env, i32) DEF_HELPER_5(vfwcvt_f_xu_v_h, void, ptr, ptr, ptr, env, i32) DEF_HELPER_5(vfwcvt_f_xu_v_w, void, ptr, ptr, ptr, env, i32) DEF_HELPER_5(vfwcvt_f_x_v_b, void, ptr, ptr, ptr, env, i32) +DEF_HELPER_5(vfwcvt_f_x_v_b_bf16, void, ptr, ptr, ptr, env, i32) DEF_HELPER_5(vfwcvt_f_x_v_h, void, ptr, ptr, ptr, env, i32) DEF_HELPER_5(vfwcvt_f_x_v_w, void, ptr, ptr, ptr, env, i32) DEF_HELPER_5(vfwcvt_f_f_v_h, void, ptr, ptr, ptr, env, i32) DEF_HELPER_5(vfwcvt_f_f_v_w, void, ptr, ptr, ptr, env, i32) =20 DEF_HELPER_5(vfncvt_xu_f_w_b, void, ptr, ptr, ptr, env, i32) +DEF_HELPER_5(vfncvt_xu_f_w_b_bf16, void, ptr, ptr, ptr, env, i32) DEF_HELPER_5(vfncvt_xu_f_w_h, void, ptr, ptr, ptr, env, i32) DEF_HELPER_5(vfncvt_xu_f_w_w, void, ptr, ptr, ptr, env, i32) DEF_HELPER_5(vfncvt_x_f_w_b, void, ptr, ptr, ptr, env, i32) +DEF_HELPER_5(vfncvt_x_f_w_b_bf16, void, ptr, ptr, ptr, env, i32) DEF_HELPER_5(vfncvt_x_f_w_h, void, ptr, ptr, ptr, env, i32) DEF_HELPER_5(vfncvt_x_f_w_w, void, ptr, ptr, ptr, env, i32) DEF_HELPER_5(vfncvt_f_xu_w_h, void, ptr, ptr, ptr, env, i32) diff --git a/target/riscv/internals.h b/target/riscv/internals.h index 460346dd6d..b001cbc080 100644 --- a/target/riscv/internals.h +++ b/target/riscv/internals.h @@ -84,6 +84,7 @@ FIELD(VDATA, NF, 7, 4) FIELD(VDATA, WD, 7, 1) =20 /* float point classify helpers */ +target_ulong fclass_h_bf16(uint64_t frs1); target_ulong fclass_h(uint64_t frs1); target_ulong fclass_s(uint64_t frs1); target_ulong fclass_d(uint64_t frs1); diff --git a/target/riscv/vector_helper.c b/target/riscv/vector_helper.c index 1e0cce5ae5..538168efc9 100644 --- a/target/riscv/vector_helper.c +++ b/target/riscv/vector_helper.c @@ -3168,9 +3168,11 @@ void HELPER(NAME)(void *vd, void *v0, void *vs1, = \ total_elems * ESZ); \ } =20 +RVVCALL(OPFVV2, vfadd_vv_h_bf16, OP_UUU_H, H2, H2, H2, bfloat16_add) RVVCALL(OPFVV2, vfadd_vv_h, OP_UUU_H, H2, H2, H2, float16_add) RVVCALL(OPFVV2, vfadd_vv_w, OP_UUU_W, H4, H4, H4, float32_add) RVVCALL(OPFVV2, vfadd_vv_d, OP_UUU_D, H8, H8, H8, float64_add) +GEN_VEXT_VV_ENV(vfadd_vv_h_bf16, 2) GEN_VEXT_VV_ENV(vfadd_vv_h, 2) GEN_VEXT_VV_ENV(vfadd_vv_w, 4) GEN_VEXT_VV_ENV(vfadd_vv_d, 8) @@ -3213,26 +3215,37 @@ void HELPER(NAME)(void *vd, void *v0, uint64_t s1, = \ total_elems * ESZ); \ } =20 +RVVCALL(OPFVF2, vfadd_vf_h_bf16, OP_UUU_H, H2, H2, bfloat16_add) RVVCALL(OPFVF2, vfadd_vf_h, OP_UUU_H, H2, H2, float16_add) RVVCALL(OPFVF2, vfadd_vf_w, OP_UUU_W, H4, H4, float32_add) RVVCALL(OPFVF2, vfadd_vf_d, OP_UUU_D, H8, H8, float64_add) +GEN_VEXT_VF(vfadd_vf_h_bf16, 2) GEN_VEXT_VF(vfadd_vf_h, 2) GEN_VEXT_VF(vfadd_vf_w, 4) GEN_VEXT_VF(vfadd_vf_d, 8) =20 +RVVCALL(OPFVV2, vfsub_vv_h_bf16, OP_UUU_H, H2, H2, H2, bfloat16_sub) RVVCALL(OPFVV2, vfsub_vv_h, OP_UUU_H, H2, H2, H2, float16_sub) RVVCALL(OPFVV2, vfsub_vv_w, OP_UUU_W, H4, H4, H4, float32_sub) RVVCALL(OPFVV2, vfsub_vv_d, OP_UUU_D, H8, H8, H8, float64_sub) +GEN_VEXT_VV_ENV(vfsub_vv_h_bf16, 2) GEN_VEXT_VV_ENV(vfsub_vv_h, 2) GEN_VEXT_VV_ENV(vfsub_vv_w, 4) GEN_VEXT_VV_ENV(vfsub_vv_d, 8) +RVVCALL(OPFVF2, vfsub_vf_h_bf16, OP_UUU_H, H2, H2, bfloat16_sub) RVVCALL(OPFVF2, vfsub_vf_h, OP_UUU_H, H2, H2, float16_sub) RVVCALL(OPFVF2, vfsub_vf_w, OP_UUU_W, H4, H4, float32_sub) RVVCALL(OPFVF2, vfsub_vf_d, OP_UUU_D, H8, H8, float64_sub) +GEN_VEXT_VF(vfsub_vf_h_bf16, 2) GEN_VEXT_VF(vfsub_vf_h, 2) GEN_VEXT_VF(vfsub_vf_w, 4) GEN_VEXT_VF(vfsub_vf_d, 8) =20 +static uint16_t bfloat16_rsub(uint16_t a, uint16_t b, float_status * s) +{ + return bfloat16_sub(b, a, s); +} + static uint16_t float16_rsub(uint16_t a, uint16_t b, float_status *s) { return float16_sub(b, a, s); @@ -3248,14 +3261,22 @@ static uint64_t float64_rsub(uint64_t a, uint64_t b= , float_status *s) return float64_sub(b, a, s); } =20 +RVVCALL(OPFVF2, vfrsub_vf_h_bf16, OP_UUU_H, H2, H2, bfloat16_rsub) RVVCALL(OPFVF2, vfrsub_vf_h, OP_UUU_H, H2, H2, float16_rsub) RVVCALL(OPFVF2, vfrsub_vf_w, OP_UUU_W, H4, H4, float32_rsub) RVVCALL(OPFVF2, vfrsub_vf_d, OP_UUU_D, H8, H8, float64_rsub) +GEN_VEXT_VF(vfrsub_vf_h_bf16, 2) GEN_VEXT_VF(vfrsub_vf_h, 2) GEN_VEXT_VF(vfrsub_vf_w, 4) GEN_VEXT_VF(vfrsub_vf_d, 8) =20 /* Vector Widening Floating-Point Add/Subtract Instructions */ +static uint32_t vfwadd16_bf16(uint16_t a, uint16_t b, float_status *s) +{ + return float32_add(bfloat16_to_float32(a, s), + bfloat16_to_float32(b, s), s); +} + static uint32_t vfwadd16(uint16_t a, uint16_t b, float_status *s) { return float32_add(float16_to_float32(a, true, s), @@ -3269,15 +3290,25 @@ static uint64_t vfwadd32(uint32_t a, uint32_t b, fl= oat_status *s) =20 } =20 +RVVCALL(OPFVV2, vfwadd_vv_h_bf16, WOP_UUU_H, H4, H2, H2, vfwadd16_bf16) RVVCALL(OPFVV2, vfwadd_vv_h, WOP_UUU_H, H4, H2, H2, vfwadd16) RVVCALL(OPFVV2, vfwadd_vv_w, WOP_UUU_W, H8, H4, H4, vfwadd32) +GEN_VEXT_VV_ENV(vfwadd_vv_h_bf16, 4) GEN_VEXT_VV_ENV(vfwadd_vv_h, 4) GEN_VEXT_VV_ENV(vfwadd_vv_w, 8) +RVVCALL(OPFVF2, vfwadd_vf_h_bf16, WOP_UUU_H, H4, H2, vfwadd16_bf16) RVVCALL(OPFVF2, vfwadd_vf_h, WOP_UUU_H, H4, H2, vfwadd16) RVVCALL(OPFVF2, vfwadd_vf_w, WOP_UUU_W, H8, H4, vfwadd32) +GEN_VEXT_VF(vfwadd_vf_h_bf16, 4) GEN_VEXT_VF(vfwadd_vf_h, 4) GEN_VEXT_VF(vfwadd_vf_w, 8) =20 +static uint32_t vfwsub16_bf16(uint16_t a, uint16_t b, float_status *s) +{ + return float32_sub(bfloat16_to_float32(a, s), + bfloat16_to_float32(b, s), s); +} + static uint32_t vfwsub16(uint16_t a, uint16_t b, float_status *s) { return float32_sub(float16_to_float32(a, true, s), @@ -3291,15 +3322,24 @@ static uint64_t vfwsub32(uint32_t a, uint32_t b, fl= oat_status *s) =20 } =20 +RVVCALL(OPFVV2, vfwsub_vv_h_bf16, WOP_UUU_H, H4, H2, H2, vfwsub16_bf16) RVVCALL(OPFVV2, vfwsub_vv_h, WOP_UUU_H, H4, H2, H2, vfwsub16) RVVCALL(OPFVV2, vfwsub_vv_w, WOP_UUU_W, H8, H4, H4, vfwsub32) +GEN_VEXT_VV_ENV(vfwsub_vv_h_bf16, 4) GEN_VEXT_VV_ENV(vfwsub_vv_h, 4) GEN_VEXT_VV_ENV(vfwsub_vv_w, 8) +RVVCALL(OPFVF2, vfwsub_vf_h_bf16, WOP_UUU_H, H4, H2, vfwsub16_bf16) RVVCALL(OPFVF2, vfwsub_vf_h, WOP_UUU_H, H4, H2, vfwsub16) RVVCALL(OPFVF2, vfwsub_vf_w, WOP_UUU_W, H8, H4, vfwsub32) +GEN_VEXT_VF(vfwsub_vf_h_bf16, 4) GEN_VEXT_VF(vfwsub_vf_h, 4) GEN_VEXT_VF(vfwsub_vf_w, 8) =20 +static uint32_t vfwaddw16_bf16(uint32_t a, uint16_t b, float_status *s) +{ + return float32_add(a, bfloat16_to_float32(b, s), s); +} + static uint32_t vfwaddw16(uint32_t a, uint16_t b, float_status *s) { return float32_add(a, float16_to_float32(b, true, s), s); @@ -3310,15 +3350,24 @@ static uint64_t vfwaddw32(uint64_t a, uint32_t b, f= loat_status *s) return float64_add(a, float32_to_float64(b, s), s); } =20 +RVVCALL(OPFVV2, vfwadd_wv_h_bf16, WOP_WUUU_H, H4, H2, H2, vfwaddw16_bf16) RVVCALL(OPFVV2, vfwadd_wv_h, WOP_WUUU_H, H4, H2, H2, vfwaddw16) RVVCALL(OPFVV2, vfwadd_wv_w, WOP_WUUU_W, H8, H4, H4, vfwaddw32) +GEN_VEXT_VV_ENV(vfwadd_wv_h_bf16, 4) GEN_VEXT_VV_ENV(vfwadd_wv_h, 4) GEN_VEXT_VV_ENV(vfwadd_wv_w, 8) +RVVCALL(OPFVF2, vfwadd_wf_h_bf16, WOP_WUUU_H, H4, H2, vfwaddw16_bf16) RVVCALL(OPFVF2, vfwadd_wf_h, WOP_WUUU_H, H4, H2, vfwaddw16) RVVCALL(OPFVF2, vfwadd_wf_w, WOP_WUUU_W, H8, H4, vfwaddw32) +GEN_VEXT_VF(vfwadd_wf_h_bf16, 4) GEN_VEXT_VF(vfwadd_wf_h, 4) GEN_VEXT_VF(vfwadd_wf_w, 8) =20 +static uint32_t vfwsubw16_bf16(uint32_t a, uint16_t b, float_status *s) +{ + return float32_sub(a, bfloat16_to_float32(b, s), s); +} + static uint32_t vfwsubw16(uint32_t a, uint16_t b, float_status *s) { return float32_sub(a, float16_to_float32(b, true, s), s); @@ -3329,25 +3378,33 @@ static uint64_t vfwsubw32(uint64_t a, uint32_t b, f= loat_status *s) return float64_sub(a, float32_to_float64(b, s), s); } =20 +RVVCALL(OPFVV2, vfwsub_wv_h_bf16, WOP_WUUU_H, H4, H2, H2, vfwsubw16_bf16) RVVCALL(OPFVV2, vfwsub_wv_h, WOP_WUUU_H, H4, H2, H2, vfwsubw16) RVVCALL(OPFVV2, vfwsub_wv_w, WOP_WUUU_W, H8, H4, H4, vfwsubw32) +GEN_VEXT_VV_ENV(vfwsub_wv_h_bf16, 4) GEN_VEXT_VV_ENV(vfwsub_wv_h, 4) GEN_VEXT_VV_ENV(vfwsub_wv_w, 8) +RVVCALL(OPFVF2, vfwsub_wf_h_bf16, WOP_WUUU_H, H4, H2, vfwsubw16_bf16) RVVCALL(OPFVF2, vfwsub_wf_h, WOP_WUUU_H, H4, H2, vfwsubw16) RVVCALL(OPFVF2, vfwsub_wf_w, WOP_WUUU_W, H8, H4, vfwsubw32) +GEN_VEXT_VF(vfwsub_wf_h_bf16, 4) GEN_VEXT_VF(vfwsub_wf_h, 4) GEN_VEXT_VF(vfwsub_wf_w, 8) =20 /* Vector Single-Width Floating-Point Multiply/Divide Instructions */ +RVVCALL(OPFVV2, vfmul_vv_h_bf16, OP_UUU_H, H2, H2, H2, bfloat16_mul) RVVCALL(OPFVV2, vfmul_vv_h, OP_UUU_H, H2, H2, H2, float16_mul) RVVCALL(OPFVV2, vfmul_vv_w, OP_UUU_W, H4, H4, H4, float32_mul) RVVCALL(OPFVV2, vfmul_vv_d, OP_UUU_D, H8, H8, H8, float64_mul) +GEN_VEXT_VV_ENV(vfmul_vv_h_bf16, 2) GEN_VEXT_VV_ENV(vfmul_vv_h, 2) GEN_VEXT_VV_ENV(vfmul_vv_w, 4) GEN_VEXT_VV_ENV(vfmul_vv_d, 8) +RVVCALL(OPFVF2, vfmul_vf_h_bf16, OP_UUU_H, H2, H2, bfloat16_mul) RVVCALL(OPFVF2, vfmul_vf_h, OP_UUU_H, H2, H2, float16_mul) RVVCALL(OPFVF2, vfmul_vf_w, OP_UUU_W, H4, H4, float32_mul) RVVCALL(OPFVF2, vfmul_vf_d, OP_UUU_D, H8, H8, float64_mul) +GEN_VEXT_VF(vfmul_vf_h_bf16, 2) GEN_VEXT_VF(vfmul_vf_h, 2) GEN_VEXT_VF(vfmul_vf_w, 4) GEN_VEXT_VF(vfmul_vf_d, 8) @@ -3388,6 +3445,12 @@ GEN_VEXT_VF(vfrdiv_vf_w, 4) GEN_VEXT_VF(vfrdiv_vf_d, 8) =20 /* Vector Widening Floating-Point Multiply */ +static uint32_t vfwmul16_bf16(uint16_t a, uint16_t b, float_status *s) +{ + return float32_mul(bfloat16_to_float32(a, s), + bfloat16_to_float32(b, s), s); +} + static uint32_t vfwmul16(uint16_t a, uint16_t b, float_status *s) { return float32_mul(float16_to_float32(a, true, s), @@ -3400,12 +3463,17 @@ static uint64_t vfwmul32(uint32_t a, uint32_t b, fl= oat_status *s) float32_to_float64(b, s), s); =20 } + +RVVCALL(OPFVV2, vfwmul_vv_h_bf16, WOP_UUU_H, H4, H2, H2, vfwmul16_bf16) RVVCALL(OPFVV2, vfwmul_vv_h, WOP_UUU_H, H4, H2, H2, vfwmul16) RVVCALL(OPFVV2, vfwmul_vv_w, WOP_UUU_W, H8, H4, H4, vfwmul32) +GEN_VEXT_VV_ENV(vfwmul_vv_h_bf16, 4) GEN_VEXT_VV_ENV(vfwmul_vv_h, 4) GEN_VEXT_VV_ENV(vfwmul_vv_w, 8) +RVVCALL(OPFVF2, vfwmul_vf_h_bf16, WOP_UUU_H, H4, H2, vfwmul16_bf16) RVVCALL(OPFVF2, vfwmul_vf_h, WOP_UUU_H, H4, H2, vfwmul16) RVVCALL(OPFVF2, vfwmul_vf_w, WOP_UUU_W, H8, H4, vfwmul32) +GEN_VEXT_VF(vfwmul_vf_h_bf16, 4) GEN_VEXT_VF(vfwmul_vf_h, 4) GEN_VEXT_VF(vfwmul_vf_w, 8) =20 @@ -3420,6 +3488,12 @@ static void do_##NAME(void *vd, void *vs1, void *vs2= , int i, \ *((TD *)vd + HD(i)) =3D OP(s2, s1, d, &env->fp_status); \ } =20 +static uint16_t fmacc16_bf16(uint16_t a, uint16_t b, uint16_t d, + float_status *s) +{ + return bfloat16_muladd(a, b, d, 0, s); +} + static uint16_t fmacc16(uint16_t a, uint16_t b, uint16_t d, float_status *= s) { return float16_muladd(a, b, d, 0, s); @@ -3435,9 +3509,11 @@ static uint64_t fmacc64(uint64_t a, uint64_t b, uint= 64_t d, float_status *s) return float64_muladd(a, b, d, 0, s); } =20 +RVVCALL(OPFVV3, vfmacc_vv_h_bf16, OP_UUU_H, H2, H2, H2, fmacc16_bf16) RVVCALL(OPFVV3, vfmacc_vv_h, OP_UUU_H, H2, H2, H2, fmacc16) RVVCALL(OPFVV3, vfmacc_vv_w, OP_UUU_W, H4, H4, H4, fmacc32) RVVCALL(OPFVV3, vfmacc_vv_d, OP_UUU_D, H8, H8, H8, fmacc64) +GEN_VEXT_VV_ENV(vfmacc_vv_h_bf16, 2) GEN_VEXT_VV_ENV(vfmacc_vv_h, 2) GEN_VEXT_VV_ENV(vfmacc_vv_w, 4) GEN_VEXT_VV_ENV(vfmacc_vv_d, 8) @@ -3451,13 +3527,22 @@ static void do_##NAME(void *vd, uint64_t s1, void *= vs2, int i, \ *((TD *)vd + HD(i)) =3D OP(s2, (TX1)(T1)s1, d, &env->fp_status);\ } =20 +RVVCALL(OPFVF3, vfmacc_vf_h_bf16, OP_UUU_H, H2, H2, fmacc16_bf16) RVVCALL(OPFVF3, vfmacc_vf_h, OP_UUU_H, H2, H2, fmacc16) RVVCALL(OPFVF3, vfmacc_vf_w, OP_UUU_W, H4, H4, fmacc32) RVVCALL(OPFVF3, vfmacc_vf_d, OP_UUU_D, H8, H8, fmacc64) +GEN_VEXT_VF(vfmacc_vf_h_bf16, 2) GEN_VEXT_VF(vfmacc_vf_h, 2) GEN_VEXT_VF(vfmacc_vf_w, 4) GEN_VEXT_VF(vfmacc_vf_d, 8) =20 +static uint16_t fnmacc16_bf16(uint16_t a, uint16_t b, uint16_t d, + float_status *s) +{ + return bfloat16_muladd(a, b, d, float_muladd_negate_c | + float_muladd_negate_product, s); +} + static uint16_t fnmacc16(uint16_t a, uint16_t b, uint16_t d, float_status = *s) { return float16_muladd(a, b, d, float_muladd_negate_c | @@ -3476,19 +3561,29 @@ static uint64_t fnmacc64(uint64_t a, uint64_t b, ui= nt64_t d, float_status *s) float_muladd_negate_product, s); } =20 +RVVCALL(OPFVV3, vfnmacc_vv_h_bf16, OP_UUU_H, H2, H2, H2, fnmacc16_bf16) RVVCALL(OPFVV3, vfnmacc_vv_h, OP_UUU_H, H2, H2, H2, fnmacc16) RVVCALL(OPFVV3, vfnmacc_vv_w, OP_UUU_W, H4, H4, H4, fnmacc32) RVVCALL(OPFVV3, vfnmacc_vv_d, OP_UUU_D, H8, H8, H8, fnmacc64) +GEN_VEXT_VV_ENV(vfnmacc_vv_h_bf16, 2) GEN_VEXT_VV_ENV(vfnmacc_vv_h, 2) GEN_VEXT_VV_ENV(vfnmacc_vv_w, 4) GEN_VEXT_VV_ENV(vfnmacc_vv_d, 8) +RVVCALL(OPFVF3, vfnmacc_vf_h_bf16, OP_UUU_H, H2, H2, fnmacc16_bf16) RVVCALL(OPFVF3, vfnmacc_vf_h, OP_UUU_H, H2, H2, fnmacc16) RVVCALL(OPFVF3, vfnmacc_vf_w, OP_UUU_W, H4, H4, fnmacc32) RVVCALL(OPFVF3, vfnmacc_vf_d, OP_UUU_D, H8, H8, fnmacc64) +GEN_VEXT_VF(vfnmacc_vf_h_bf16, 2) GEN_VEXT_VF(vfnmacc_vf_h, 2) GEN_VEXT_VF(vfnmacc_vf_w, 4) GEN_VEXT_VF(vfnmacc_vf_d, 8) =20 +static uint16_t fmsac16_bf16(uint16_t a, uint16_t b, uint16_t d, + float_status *s) +{ + return bfloat16_muladd(a, b, d, float_muladd_negate_c, s); +} + static uint16_t fmsac16(uint16_t a, uint16_t b, uint16_t d, float_status *= s) { return float16_muladd(a, b, d, float_muladd_negate_c, s); @@ -3504,19 +3599,29 @@ static uint64_t fmsac64(uint64_t a, uint64_t b, uin= t64_t d, float_status *s) return float64_muladd(a, b, d, float_muladd_negate_c, s); } =20 +RVVCALL(OPFVV3, vfmsac_vv_h_bf16, OP_UUU_H, H2, H2, H2, fmsac16_bf16) RVVCALL(OPFVV3, vfmsac_vv_h, OP_UUU_H, H2, H2, H2, fmsac16) RVVCALL(OPFVV3, vfmsac_vv_w, OP_UUU_W, H4, H4, H4, fmsac32) RVVCALL(OPFVV3, vfmsac_vv_d, OP_UUU_D, H8, H8, H8, fmsac64) +GEN_VEXT_VV_ENV(vfmsac_vv_h_bf16, 2) GEN_VEXT_VV_ENV(vfmsac_vv_h, 2) GEN_VEXT_VV_ENV(vfmsac_vv_w, 4) GEN_VEXT_VV_ENV(vfmsac_vv_d, 8) +RVVCALL(OPFVF3, vfmsac_vf_h_bf16, OP_UUU_H, H2, H2, fmsac16_bf16) RVVCALL(OPFVF3, vfmsac_vf_h, OP_UUU_H, H2, H2, fmsac16) RVVCALL(OPFVF3, vfmsac_vf_w, OP_UUU_W, H4, H4, fmsac32) RVVCALL(OPFVF3, vfmsac_vf_d, OP_UUU_D, H8, H8, fmsac64) +GEN_VEXT_VF(vfmsac_vf_h_bf16, 2) GEN_VEXT_VF(vfmsac_vf_h, 2) GEN_VEXT_VF(vfmsac_vf_w, 4) GEN_VEXT_VF(vfmsac_vf_d, 8) =20 +static uint16_t fnmsac16_bf16(uint16_t a, uint16_t b, uint16_t d, + float_status *s) +{ + return bfloat16_muladd(a, b, d, float_muladd_negate_product, s); +} + static uint16_t fnmsac16(uint16_t a, uint16_t b, uint16_t d, float_status = *s) { return float16_muladd(a, b, d, float_muladd_negate_product, s); @@ -3532,19 +3637,29 @@ static uint64_t fnmsac64(uint64_t a, uint64_t b, ui= nt64_t d, float_status *s) return float64_muladd(a, b, d, float_muladd_negate_product, s); } =20 +RVVCALL(OPFVV3, vfnmsac_vv_h_bf16, OP_UUU_H, H2, H2, H2, fnmsac16_bf16) RVVCALL(OPFVV3, vfnmsac_vv_h, OP_UUU_H, H2, H2, H2, fnmsac16) RVVCALL(OPFVV3, vfnmsac_vv_w, OP_UUU_W, H4, H4, H4, fnmsac32) RVVCALL(OPFVV3, vfnmsac_vv_d, OP_UUU_D, H8, H8, H8, fnmsac64) +GEN_VEXT_VV_ENV(vfnmsac_vv_h_bf16, 2) GEN_VEXT_VV_ENV(vfnmsac_vv_h, 2) GEN_VEXT_VV_ENV(vfnmsac_vv_w, 4) GEN_VEXT_VV_ENV(vfnmsac_vv_d, 8) +RVVCALL(OPFVF3, vfnmsac_vf_h_bf16, OP_UUU_H, H2, H2, fnmsac16_bf16) RVVCALL(OPFVF3, vfnmsac_vf_h, OP_UUU_H, H2, H2, fnmsac16) RVVCALL(OPFVF3, vfnmsac_vf_w, OP_UUU_W, H4, H4, fnmsac32) RVVCALL(OPFVF3, vfnmsac_vf_d, OP_UUU_D, H8, H8, fnmsac64) +GEN_VEXT_VF(vfnmsac_vf_h_bf16, 2) GEN_VEXT_VF(vfnmsac_vf_h, 2) GEN_VEXT_VF(vfnmsac_vf_w, 4) GEN_VEXT_VF(vfnmsac_vf_d, 8) =20 +static uint16_t fmadd16_bf16(uint16_t a, uint16_t b, uint16_t d, + float_status *s) +{ + return bfloat16_muladd(d, b, a, 0, s); +} + static uint16_t fmadd16(uint16_t a, uint16_t b, uint16_t d, float_status *= s) { return float16_muladd(d, b, a, 0, s); @@ -3560,19 +3675,30 @@ static uint64_t fmadd64(uint64_t a, uint64_t b, uin= t64_t d, float_status *s) return float64_muladd(d, b, a, 0, s); } =20 +RVVCALL(OPFVV3, vfmadd_vv_h_bf16, OP_UUU_H, H2, H2, H2, fmadd16_bf16) RVVCALL(OPFVV3, vfmadd_vv_h, OP_UUU_H, H2, H2, H2, fmadd16) RVVCALL(OPFVV3, vfmadd_vv_w, OP_UUU_W, H4, H4, H4, fmadd32) RVVCALL(OPFVV3, vfmadd_vv_d, OP_UUU_D, H8, H8, H8, fmadd64) +GEN_VEXT_VV_ENV(vfmadd_vv_h_bf16, 2) GEN_VEXT_VV_ENV(vfmadd_vv_h, 2) GEN_VEXT_VV_ENV(vfmadd_vv_w, 4) GEN_VEXT_VV_ENV(vfmadd_vv_d, 8) +RVVCALL(OPFVF3, vfmadd_vf_h_bf16, OP_UUU_H, H2, H2, fmadd16_bf16) RVVCALL(OPFVF3, vfmadd_vf_h, OP_UUU_H, H2, H2, fmadd16) RVVCALL(OPFVF3, vfmadd_vf_w, OP_UUU_W, H4, H4, fmadd32) RVVCALL(OPFVF3, vfmadd_vf_d, OP_UUU_D, H8, H8, fmadd64) +GEN_VEXT_VF(vfmadd_vf_h_bf16, 2) GEN_VEXT_VF(vfmadd_vf_h, 2) GEN_VEXT_VF(vfmadd_vf_w, 4) GEN_VEXT_VF(vfmadd_vf_d, 8) =20 +static uint16_t fnmadd16_bf16(uint16_t a, uint16_t b, uint16_t d, + float_status *s) +{ + return bfloat16_muladd(d, b, a, float_muladd_negate_c | + float_muladd_negate_product, s); +} + static uint16_t fnmadd16(uint16_t a, uint16_t b, uint16_t d, float_status = *s) { return float16_muladd(d, b, a, float_muladd_negate_c | @@ -3591,19 +3717,29 @@ static uint64_t fnmadd64(uint64_t a, uint64_t b, ui= nt64_t d, float_status *s) float_muladd_negate_product, s); } =20 +RVVCALL(OPFVV3, vfnmadd_vv_h_bf16, OP_UUU_H, H2, H2, H2, fnmadd16_bf16) RVVCALL(OPFVV3, vfnmadd_vv_h, OP_UUU_H, H2, H2, H2, fnmadd16) RVVCALL(OPFVV3, vfnmadd_vv_w, OP_UUU_W, H4, H4, H4, fnmadd32) RVVCALL(OPFVV3, vfnmadd_vv_d, OP_UUU_D, H8, H8, H8, fnmadd64) +GEN_VEXT_VV_ENV(vfnmadd_vv_h_bf16, 2) GEN_VEXT_VV_ENV(vfnmadd_vv_h, 2) GEN_VEXT_VV_ENV(vfnmadd_vv_w, 4) GEN_VEXT_VV_ENV(vfnmadd_vv_d, 8) +RVVCALL(OPFVF3, vfnmadd_vf_h_bf16, OP_UUU_H, H2, H2, fnmadd16_bf16) RVVCALL(OPFVF3, vfnmadd_vf_h, OP_UUU_H, H2, H2, fnmadd16) RVVCALL(OPFVF3, vfnmadd_vf_w, OP_UUU_W, H4, H4, fnmadd32) RVVCALL(OPFVF3, vfnmadd_vf_d, OP_UUU_D, H8, H8, fnmadd64) +GEN_VEXT_VF(vfnmadd_vf_h_bf16, 2) GEN_VEXT_VF(vfnmadd_vf_h, 2) GEN_VEXT_VF(vfnmadd_vf_w, 4) GEN_VEXT_VF(vfnmadd_vf_d, 8) =20 +static uint16_t fmsub16_bf16(uint16_t a, uint16_t b, uint16_t d, + float_status *s) +{ + return bfloat16_muladd(d, b, a, float_muladd_negate_c, s); +} + static uint16_t fmsub16(uint16_t a, uint16_t b, uint16_t d, float_status *= s) { return float16_muladd(d, b, a, float_muladd_negate_c, s); @@ -3619,19 +3755,29 @@ static uint64_t fmsub64(uint64_t a, uint64_t b, uin= t64_t d, float_status *s) return float64_muladd(d, b, a, float_muladd_negate_c, s); } =20 +RVVCALL(OPFVV3, vfmsub_vv_h_bf16, OP_UUU_H, H2, H2, H2, fmsub16_bf16) RVVCALL(OPFVV3, vfmsub_vv_h, OP_UUU_H, H2, H2, H2, fmsub16) RVVCALL(OPFVV3, vfmsub_vv_w, OP_UUU_W, H4, H4, H4, fmsub32) RVVCALL(OPFVV3, vfmsub_vv_d, OP_UUU_D, H8, H8, H8, fmsub64) +GEN_VEXT_VV_ENV(vfmsub_vv_h_bf16, 2) GEN_VEXT_VV_ENV(vfmsub_vv_h, 2) GEN_VEXT_VV_ENV(vfmsub_vv_w, 4) GEN_VEXT_VV_ENV(vfmsub_vv_d, 8) +RVVCALL(OPFVF3, vfmsub_vf_h_bf16, OP_UUU_H, H2, H2, fmsub16_bf16) RVVCALL(OPFVF3, vfmsub_vf_h, OP_UUU_H, H2, H2, fmsub16) RVVCALL(OPFVF3, vfmsub_vf_w, OP_UUU_W, H4, H4, fmsub32) RVVCALL(OPFVF3, vfmsub_vf_d, OP_UUU_D, H8, H8, fmsub64) +GEN_VEXT_VF(vfmsub_vf_h_bf16, 2) GEN_VEXT_VF(vfmsub_vf_h, 2) GEN_VEXT_VF(vfmsub_vf_w, 4) GEN_VEXT_VF(vfmsub_vf_d, 8) =20 +static uint16_t fnmsub16_bf16(uint16_t a, uint16_t b, uint16_t d, + float_status *s) +{ + return bfloat16_muladd(d, b, a, float_muladd_negate_product, s); +} + static uint16_t fnmsub16(uint16_t a, uint16_t b, uint16_t d, float_status = *s) { return float16_muladd(d, b, a, float_muladd_negate_product, s); @@ -3647,15 +3793,19 @@ static uint64_t fnmsub64(uint64_t a, uint64_t b, ui= nt64_t d, float_status *s) return float64_muladd(d, b, a, float_muladd_negate_product, s); } =20 +RVVCALL(OPFVV3, vfnmsub_vv_h_bf16, OP_UUU_H, H2, H2, H2, fnmsub16_bf16) RVVCALL(OPFVV3, vfnmsub_vv_h, OP_UUU_H, H2, H2, H2, fnmsub16) RVVCALL(OPFVV3, vfnmsub_vv_w, OP_UUU_W, H4, H4, H4, fnmsub32) RVVCALL(OPFVV3, vfnmsub_vv_d, OP_UUU_D, H8, H8, H8, fnmsub64) +GEN_VEXT_VV_ENV(vfnmsub_vv_h_bf16, 2) GEN_VEXT_VV_ENV(vfnmsub_vv_h, 2) GEN_VEXT_VV_ENV(vfnmsub_vv_w, 4) GEN_VEXT_VV_ENV(vfnmsub_vv_d, 8) +RVVCALL(OPFVF3, vfnmsub_vf_h_bf16, OP_UUU_H, H2, H2, fnmsub16_bf16) RVVCALL(OPFVF3, vfnmsub_vf_h, OP_UUU_H, H2, H2, fnmsub16) RVVCALL(OPFVF3, vfnmsub_vf_w, OP_UUU_W, H4, H4, fnmsub32) RVVCALL(OPFVF3, vfnmsub_vf_d, OP_UUU_D, H8, H8, fnmsub64) +GEN_VEXT_VF(vfnmsub_vf_h_bf16, 2) GEN_VEXT_VF(vfnmsub_vf_h, 2) GEN_VEXT_VF(vfnmsub_vf_w, 4) GEN_VEXT_VF(vfnmsub_vf_d, 8) @@ -3693,6 +3843,15 @@ GEN_VEXT_VV_ENV(vfwmaccbf16_vv, 4) RVVCALL(OPFVF3, vfwmaccbf16_vf, WOP_UUU_H, H4, H2, fwmaccbf16) GEN_VEXT_VF(vfwmaccbf16_vf, 4) =20 +static uint32_t fwnmacc16_bf16(uint16_t a, uint16_t b, uint32_t d, + float_status *s) +{ + return float32_muladd(bfloat16_to_float32(a, s), + bfloat16_to_float32(b, s), d, + float_muladd_negate_c | float_muladd_negate_prod= uct, + s); +} + static uint32_t fwnmacc16(uint16_t a, uint16_t b, uint32_t d, float_status= *s) { return float32_muladd(float16_to_float32(a, true, s), @@ -3708,15 +3867,27 @@ static uint64_t fwnmacc32(uint32_t a, uint32_t b, u= int64_t d, float_status *s) float_muladd_negate_product, s); } =20 +RVVCALL(OPFVV3, vfwnmacc_vv_h_bf16, WOP_UUU_H, H4, H2, H2, fwnmacc16_bf16) RVVCALL(OPFVV3, vfwnmacc_vv_h, WOP_UUU_H, H4, H2, H2, fwnmacc16) RVVCALL(OPFVV3, vfwnmacc_vv_w, WOP_UUU_W, H8, H4, H4, fwnmacc32) +GEN_VEXT_VV_ENV(vfwnmacc_vv_h_bf16, 4) GEN_VEXT_VV_ENV(vfwnmacc_vv_h, 4) GEN_VEXT_VV_ENV(vfwnmacc_vv_w, 8) +RVVCALL(OPFVF3, vfwnmacc_vf_h_bf16, WOP_UUU_H, H4, H2, fwnmacc16_bf16) RVVCALL(OPFVF3, vfwnmacc_vf_h, WOP_UUU_H, H4, H2, fwnmacc16) RVVCALL(OPFVF3, vfwnmacc_vf_w, WOP_UUU_W, H8, H4, fwnmacc32) +GEN_VEXT_VF(vfwnmacc_vf_h_bf16, 4) GEN_VEXT_VF(vfwnmacc_vf_h, 4) GEN_VEXT_VF(vfwnmacc_vf_w, 8) =20 +static uint32_t fwmsac16_bf16(uint16_t a, uint16_t b, uint32_t d, + float_status *s) +{ + return float32_muladd(bfloat16_to_float32(a, s), + bfloat16_to_float32(b, s), d, + float_muladd_negate_c, s); +} + static uint32_t fwmsac16(uint16_t a, uint16_t b, uint32_t d, float_status = *s) { return float32_muladd(float16_to_float32(a, true, s), @@ -3731,15 +3902,27 @@ static uint64_t fwmsac32(uint32_t a, uint32_t b, ui= nt64_t d, float_status *s) float_muladd_negate_c, s); } =20 +RVVCALL(OPFVV3, vfwmsac_vv_h_bf16, WOP_UUU_H, H4, H2, H2, fwmsac16_bf16) RVVCALL(OPFVV3, vfwmsac_vv_h, WOP_UUU_H, H4, H2, H2, fwmsac16) RVVCALL(OPFVV3, vfwmsac_vv_w, WOP_UUU_W, H8, H4, H4, fwmsac32) +GEN_VEXT_VV_ENV(vfwmsac_vv_h_bf16, 4) GEN_VEXT_VV_ENV(vfwmsac_vv_h, 4) GEN_VEXT_VV_ENV(vfwmsac_vv_w, 8) +RVVCALL(OPFVF3, vfwmsac_vf_h_bf16, WOP_UUU_H, H4, H2, fwmsac16_bf16) RVVCALL(OPFVF3, vfwmsac_vf_h, WOP_UUU_H, H4, H2, fwmsac16) RVVCALL(OPFVF3, vfwmsac_vf_w, WOP_UUU_W, H8, H4, fwmsac32) +GEN_VEXT_VF(vfwmsac_vf_h_bf16, 4) GEN_VEXT_VF(vfwmsac_vf_h, 4) GEN_VEXT_VF(vfwmsac_vf_w, 8) =20 +static uint32_t fwnmsac16_bf16(uint16_t a, uint16_t b, uint32_t d, + float_status *s) +{ + return float32_muladd(bfloat16_to_float32(a, s), + bfloat16_to_float32(b, s), d, + float_muladd_negate_product, s); +} + static uint32_t fwnmsac16(uint16_t a, uint16_t b, uint32_t d, float_status= *s) { return float32_muladd(float16_to_float32(a, true, s), @@ -3754,12 +3937,16 @@ static uint64_t fwnmsac32(uint32_t a, uint32_t b, u= int64_t d, float_status *s) float_muladd_negate_product, s); } =20 +RVVCALL(OPFVV3, vfwnmsac_vv_h_bf16, WOP_UUU_H, H4, H2, H2, fwnmsac16_bf16) RVVCALL(OPFVV3, vfwnmsac_vv_h, WOP_UUU_H, H4, H2, H2, fwnmsac16) RVVCALL(OPFVV3, vfwnmsac_vv_w, WOP_UUU_W, H8, H4, H4, fwnmsac32) +GEN_VEXT_VV_ENV(vfwnmsac_vv_h_bf16, 4) GEN_VEXT_VV_ENV(vfwnmsac_vv_h, 4) GEN_VEXT_VV_ENV(vfwnmsac_vv_w, 8) +RVVCALL(OPFVF3, vfwnmsac_vf_h_bf16, WOP_UUU_H, H4, H2, fwnmsac16_bf16) RVVCALL(OPFVF3, vfwnmsac_vf_h, WOP_UUU_H, H4, H2, fwnmsac16) RVVCALL(OPFVF3, vfwnmsac_vf_w, WOP_UUU_W, H8, H4, fwnmsac32) +GEN_VEXT_VF(vfwnmsac_vf_h_bf16, 4) GEN_VEXT_VF(vfwnmsac_vf_h, 4) GEN_VEXT_VF(vfwnmsac_vf_w, 8) =20 @@ -3865,6 +4052,46 @@ static uint64_t frsqrt7(uint64_t f, int exp_size, in= t frac_size) return val; } =20 +static bfloat16 frsqrt7_h_bf16(bfloat16 f, float_status *s) +{ + int exp_size =3D 8, frac_size =3D 7; + bool sign =3D bfloat16_is_neg(f); + + /* + * frsqrt7(sNaN) =3D canonical NaN + * frsqrt7(-inf) =3D canonical NaN + * frsqrt7(-normal) =3D canonical NaN + * frsqrt7(-subnormal) =3D canonical NaN + */ + if (bfloat16_is_signaling_nan(f, s) || + (bfloat16_is_infinity(f) && sign) || + (bfloat16_is_normal(f) && sign) || + (bfloat16_is_zero_or_denormal(f) && !bfloat16_is_zero(f) && sign))= { + s->float_exception_flags |=3D float_flag_invalid; + return bfloat16_default_nan(s); + } + + /* frsqrt7(qNaN) =3D canonical NaN */ + if (bfloat16_is_quiet_nan(f, s)) { + return bfloat16_default_nan(s); + } + + /* frsqrt7(+-0) =3D +-inf */ + if (bfloat16_is_zero(f)) { + s->float_exception_flags |=3D float_flag_divbyzero; + return bfloat16_set_sign(bfloat16_infinity, sign); + } + + /* frsqrt7(+inf) =3D +0 */ + if (bfloat16_is_infinity(f) && !sign) { + return bfloat16_set_sign(bfloat16_zero, sign); + } + + /* +normal, +subnormal */ + uint64_t val =3D frsqrt7(f, exp_size, frac_size); + return make_float16(val); +} + static float16 frsqrt7_h(float16 f, float_status *s) { int exp_size =3D 5, frac_size =3D 10; @@ -3985,9 +4212,11 @@ static float64 frsqrt7_d(float64 f, float_status *s) return make_float64(val); } =20 +RVVCALL(OPFVV1, vfrsqrt7_v_h_bf16, OP_UU_H, H2, H2, frsqrt7_h_bf16) RVVCALL(OPFVV1, vfrsqrt7_v_h, OP_UU_H, H2, H2, frsqrt7_h) RVVCALL(OPFVV1, vfrsqrt7_v_w, OP_UU_W, H4, H4, frsqrt7_s) RVVCALL(OPFVV1, vfrsqrt7_v_d, OP_UU_D, H8, H8, frsqrt7_d) +GEN_VEXT_V_ENV(vfrsqrt7_v_h_bf16, 2) GEN_VEXT_V_ENV(vfrsqrt7_v_h, 2) GEN_VEXT_V_ENV(vfrsqrt7_v_w, 4) GEN_VEXT_V_ENV(vfrsqrt7_v_d, 8) @@ -4080,6 +4309,38 @@ static uint64_t frec7(uint64_t f, int exp_size, int = frac_size, return val; } =20 +static bfloat16 frec7_h_bf16(bfloat16 f, float_status *s) +{ + int exp_size =3D 8, frac_size =3D 7; + bool sign =3D bfloat16_is_neg(f); + + /* frec7(+-inf) =3D +-0 */ + if (bfloat16_is_infinity(f)) { + return bfloat16_set_sign(bfloat16_zero, sign); + } + + /* frec7(+-0) =3D +-inf */ + if (bfloat16_is_zero(f)) { + s->float_exception_flags |=3D float_flag_divbyzero; + return bfloat16_set_sign(bfloat16_infinity, sign); + } + + /* frec7(sNaN) =3D canonical NaN */ + if (bfloat16_is_signaling_nan(f, s)) { + s->float_exception_flags |=3D float_flag_invalid; + return bfloat16_default_nan(s); + } + + /* frec7(qNaN) =3D canonical NaN */ + if (bfloat16_is_quiet_nan(f, s)) { + return bfloat16_default_nan(s); + } + + /* +-normal, +-subnormal */ + uint64_t val =3D frec7(f, exp_size, frac_size, s); + return make_float16(val); +} + static float16 frec7_h(float16 f, float_status *s) { int exp_size =3D 5, frac_size =3D 10; @@ -4176,36 +4437,46 @@ static float64 frec7_d(float64 f, float_status *s) return make_float64(val); } =20 +RVVCALL(OPFVV1, vfrec7_v_h_bf16, OP_UU_H, H2, H2, frec7_h_bf16) RVVCALL(OPFVV1, vfrec7_v_h, OP_UU_H, H2, H2, frec7_h) RVVCALL(OPFVV1, vfrec7_v_w, OP_UU_W, H4, H4, frec7_s) RVVCALL(OPFVV1, vfrec7_v_d, OP_UU_D, H8, H8, frec7_d) +GEN_VEXT_V_ENV(vfrec7_v_h_bf16, 2) GEN_VEXT_V_ENV(vfrec7_v_h, 2) GEN_VEXT_V_ENV(vfrec7_v_w, 4) GEN_VEXT_V_ENV(vfrec7_v_d, 8) =20 /* Vector Floating-Point MIN/MAX Instructions */ +RVVCALL(OPFVV2, vfmin_vv_h_bf16, OP_UUU_H, H2, H2, H2, bfloat16_minimum_nu= mber) RVVCALL(OPFVV2, vfmin_vv_h, OP_UUU_H, H2, H2, H2, float16_minimum_number) RVVCALL(OPFVV2, vfmin_vv_w, OP_UUU_W, H4, H4, H4, float32_minimum_number) RVVCALL(OPFVV2, vfmin_vv_d, OP_UUU_D, H8, H8, H8, float64_minimum_number) +GEN_VEXT_VV_ENV(vfmin_vv_h_bf16, 2) GEN_VEXT_VV_ENV(vfmin_vv_h, 2) GEN_VEXT_VV_ENV(vfmin_vv_w, 4) GEN_VEXT_VV_ENV(vfmin_vv_d, 8) +RVVCALL(OPFVF2, vfmin_vf_h_bf16, OP_UUU_H, H2, H2, bfloat16_minimum_number) RVVCALL(OPFVF2, vfmin_vf_h, OP_UUU_H, H2, H2, float16_minimum_number) RVVCALL(OPFVF2, vfmin_vf_w, OP_UUU_W, H4, H4, float32_minimum_number) RVVCALL(OPFVF2, vfmin_vf_d, OP_UUU_D, H8, H8, float64_minimum_number) +GEN_VEXT_VF(vfmin_vf_h_bf16, 2) GEN_VEXT_VF(vfmin_vf_h, 2) GEN_VEXT_VF(vfmin_vf_w, 4) GEN_VEXT_VF(vfmin_vf_d, 8) =20 +RVVCALL(OPFVV2, vfmax_vv_h_bf16, OP_UUU_H, H2, H2, H2, bfloat16_maximum_nu= mber) RVVCALL(OPFVV2, vfmax_vv_h, OP_UUU_H, H2, H2, H2, float16_maximum_number) RVVCALL(OPFVV2, vfmax_vv_w, OP_UUU_W, H4, H4, H4, float32_maximum_number) RVVCALL(OPFVV2, vfmax_vv_d, OP_UUU_D, H8, H8, H8, float64_maximum_number) +GEN_VEXT_VV_ENV(vfmax_vv_h_bf16, 2) GEN_VEXT_VV_ENV(vfmax_vv_h, 2) GEN_VEXT_VV_ENV(vfmax_vv_w, 4) GEN_VEXT_VV_ENV(vfmax_vv_d, 8) +RVVCALL(OPFVF2, vfmax_vf_h_bf16, OP_UUU_H, H2, H2, bfloat16_maximum_number) RVVCALL(OPFVF2, vfmax_vf_h, OP_UUU_H, H2, H2, float16_maximum_number) RVVCALL(OPFVF2, vfmax_vf_w, OP_UUU_W, H4, H4, float32_maximum_number) RVVCALL(OPFVF2, vfmax_vf_d, OP_UUU_D, H8, H8, float64_maximum_number) +GEN_VEXT_VF(vfmax_vf_h_bf16, 2) GEN_VEXT_VF(vfmax_vf_h, 2) GEN_VEXT_VF(vfmax_vf_w, 4) GEN_VEXT_VF(vfmax_vf_d, 8) @@ -4334,6 +4605,7 @@ void HELPER(NAME)(void *vd, void *v0, void *vs1, void= *vs2, \ } \ } =20 +GEN_VEXT_CMP_VV_ENV(vmfeq_vv_h_bf16, uint16_t, H2, bfloat16_eq_quiet) GEN_VEXT_CMP_VV_ENV(vmfeq_vv_h, uint16_t, H2, float16_eq_quiet) GEN_VEXT_CMP_VV_ENV(vmfeq_vv_w, uint32_t, H4, float32_eq_quiet) GEN_VEXT_CMP_VV_ENV(vmfeq_vv_d, uint64_t, H8, float64_eq_quiet) @@ -4375,10 +4647,17 @@ void HELPER(NAME)(void *vd, void *v0, uint64_t s1, = void *vs2, \ } \ } =20 +GEN_VEXT_CMP_VF(vmfeq_vf_h_bf16, uint16_t, H2, bfloat16_eq_quiet) GEN_VEXT_CMP_VF(vmfeq_vf_h, uint16_t, H2, float16_eq_quiet) GEN_VEXT_CMP_VF(vmfeq_vf_w, uint32_t, H4, float32_eq_quiet) GEN_VEXT_CMP_VF(vmfeq_vf_d, uint64_t, H8, float64_eq_quiet) =20 +static bool vmfne16_bf16(uint16_t a, uint16_t b, float_status *s) +{ + FloatRelation compare =3D bfloat16_compare_quiet(a, b, s); + return compare !=3D float_relation_equal; +} + static bool vmfne16(uint16_t a, uint16_t b, float_status *s) { FloatRelation compare =3D float16_compare_quiet(a, b, s); @@ -4397,27 +4676,39 @@ static bool vmfne64(uint64_t a, uint64_t b, float_s= tatus *s) return compare !=3D float_relation_equal; } =20 +GEN_VEXT_CMP_VV_ENV(vmfne_vv_h_bf16, uint16_t, H2, vmfne16_bf16) GEN_VEXT_CMP_VV_ENV(vmfne_vv_h, uint16_t, H2, vmfne16) GEN_VEXT_CMP_VV_ENV(vmfne_vv_w, uint32_t, H4, vmfne32) GEN_VEXT_CMP_VV_ENV(vmfne_vv_d, uint64_t, H8, vmfne64) +GEN_VEXT_CMP_VF(vmfne_vf_h_bf16, uint16_t, H2, vmfne16_bf16) GEN_VEXT_CMP_VF(vmfne_vf_h, uint16_t, H2, vmfne16) GEN_VEXT_CMP_VF(vmfne_vf_w, uint32_t, H4, vmfne32) GEN_VEXT_CMP_VF(vmfne_vf_d, uint64_t, H8, vmfne64) =20 +GEN_VEXT_CMP_VV_ENV(vmflt_vv_h_bf16, uint16_t, H2, bfloat16_lt) GEN_VEXT_CMP_VV_ENV(vmflt_vv_h, uint16_t, H2, float16_lt) GEN_VEXT_CMP_VV_ENV(vmflt_vv_w, uint32_t, H4, float32_lt) GEN_VEXT_CMP_VV_ENV(vmflt_vv_d, uint64_t, H8, float64_lt) +GEN_VEXT_CMP_VF(vmflt_vf_h_bf16, uint16_t, H2, bfloat16_lt) GEN_VEXT_CMP_VF(vmflt_vf_h, uint16_t, H2, float16_lt) GEN_VEXT_CMP_VF(vmflt_vf_w, uint32_t, H4, float32_lt) GEN_VEXT_CMP_VF(vmflt_vf_d, uint64_t, H8, float64_lt) =20 +GEN_VEXT_CMP_VV_ENV(vmfle_vv_h_bf16, uint16_t, H2, bfloat16_le) GEN_VEXT_CMP_VV_ENV(vmfle_vv_h, uint16_t, H2, float16_le) GEN_VEXT_CMP_VV_ENV(vmfle_vv_w, uint32_t, H4, float32_le) GEN_VEXT_CMP_VV_ENV(vmfle_vv_d, uint64_t, H8, float64_le) +GEN_VEXT_CMP_VF(vmfle_vf_h_bf16, uint16_t, H2, bfloat16_le) GEN_VEXT_CMP_VF(vmfle_vf_h, uint16_t, H2, float16_le) GEN_VEXT_CMP_VF(vmfle_vf_w, uint32_t, H4, float32_le) GEN_VEXT_CMP_VF(vmfle_vf_d, uint64_t, H8, float64_le) =20 +static bool vmfgt16_bf16(uint16_t a, uint16_t b, float_status *s) +{ + FloatRelation compare =3D bfloat16_compare(a, b, s); + return compare =3D=3D float_relation_greater; +} + static bool vmfgt16(uint16_t a, uint16_t b, float_status *s) { FloatRelation compare =3D float16_compare(a, b, s); @@ -4436,10 +4727,18 @@ static bool vmfgt64(uint64_t a, uint64_t b, float_s= tatus *s) return compare =3D=3D float_relation_greater; } =20 +GEN_VEXT_CMP_VF(vmfgt_vf_h_bf16, uint16_t, H2, vmfgt16_bf16) GEN_VEXT_CMP_VF(vmfgt_vf_h, uint16_t, H2, vmfgt16) GEN_VEXT_CMP_VF(vmfgt_vf_w, uint32_t, H4, vmfgt32) GEN_VEXT_CMP_VF(vmfgt_vf_d, uint64_t, H8, vmfgt64) =20 +static bool vmfge16_bf16(uint16_t a, uint16_t b, float_status *s) +{ + FloatRelation compare =3D bfloat16_compare(a, b, s); + return compare =3D=3D float_relation_greater || + compare =3D=3D float_relation_equal; +} + static bool vmfge16(uint16_t a, uint16_t b, float_status *s) { FloatRelation compare =3D float16_compare(a, b, s); @@ -4461,11 +4760,31 @@ static bool vmfge64(uint64_t a, uint64_t b, float_s= tatus *s) compare =3D=3D float_relation_equal; } =20 +GEN_VEXT_CMP_VF(vmfge_vf_h_bf16, uint16_t, H2, vmfge16_bf16) GEN_VEXT_CMP_VF(vmfge_vf_h, uint16_t, H2, vmfge16) GEN_VEXT_CMP_VF(vmfge_vf_w, uint32_t, H4, vmfge32) GEN_VEXT_CMP_VF(vmfge_vf_d, uint64_t, H8, vmfge64) =20 /* Vector Floating-Point Classify Instruction */ +target_ulong fclass_h_bf16(uint64_t frs1) +{ + bfloat16 f =3D frs1; + bool sign =3D bfloat16_is_neg(f); + + if (bfloat16_is_infinity(f)) { + return sign ? 1 << 0 : 1 << 7; + } else if (bfloat16_is_zero(f)) { + return sign ? 1 << 3 : 1 << 4; + } else if (bfloat16_is_zero_or_denormal(f)) { + return sign ? 1 << 2 : 1 << 5; + } else if (bfloat16_is_any_nan(f)) { + float_status s =3D { }; /* for snan_bit_is_one */ + return bfloat16_is_quiet_nan(f, &s) ? 1 << 9 : 1 << 8; + } else { + return sign ? 1 << 1 : 1 << 6; + } +} + target_ulong fclass_h(uint64_t frs1) { float16 f =3D frs1; @@ -4523,9 +4842,11 @@ target_ulong fclass_d(uint64_t frs1) } } =20 +RVVCALL(OPIVV1, vfclass_v_h_bf16, OP_UU_H, H2, H2, fclass_h_bf16) RVVCALL(OPIVV1, vfclass_v_h, OP_UU_H, H2, H2, fclass_h) RVVCALL(OPIVV1, vfclass_v_w, OP_UU_W, H4, H4, fclass_s) RVVCALL(OPIVV1, vfclass_v_d, OP_UU_D, H8, H8, fclass_d) +GEN_VEXT_V(vfclass_v_h_bf16, 2) GEN_VEXT_V(vfclass_v_h, 2) GEN_VEXT_V(vfclass_v_w, 4) GEN_VEXT_V(vfclass_v_d, 8) @@ -4616,17 +4937,21 @@ GEN_VEXT_V_ENV(vfwcvt_x_f_v_w, 8) * vfwcvt.f.xu.v vd, vs2, vm # Convert unsigned integer to double-width fl= oat. */ RVVCALL(OPFVV1, vfwcvt_f_xu_v_b, WOP_UU_B, H2, H1, uint8_to_float16) +RVVCALL(OPFVV1, vfwcvt_f_xu_v_b_bf16, WOP_UU_B, H2, H1, uint8_to_bfloat16) RVVCALL(OPFVV1, vfwcvt_f_xu_v_h, WOP_UU_H, H4, H2, uint16_to_float32) RVVCALL(OPFVV1, vfwcvt_f_xu_v_w, WOP_UU_W, H8, H4, uint32_to_float64) GEN_VEXT_V_ENV(vfwcvt_f_xu_v_b, 2) +GEN_VEXT_V_ENV(vfwcvt_f_xu_v_b_bf16, 2) GEN_VEXT_V_ENV(vfwcvt_f_xu_v_h, 4) GEN_VEXT_V_ENV(vfwcvt_f_xu_v_w, 8) =20 /* vfwcvt.f.x.v vd, vs2, vm # Convert integer to double-width float. */ RVVCALL(OPFVV1, vfwcvt_f_x_v_b, WOP_UU_B, H2, H1, int8_to_float16) +RVVCALL(OPFVV1, vfwcvt_f_x_v_b_bf16, WOP_UU_B, H2, H1, int8_to_bfloat16) RVVCALL(OPFVV1, vfwcvt_f_x_v_h, WOP_UU_H, H4, H2, int16_to_float32) RVVCALL(OPFVV1, vfwcvt_f_x_v_w, WOP_UU_W, H8, H4, int32_to_float64) GEN_VEXT_V_ENV(vfwcvt_f_x_v_b, 2) +GEN_VEXT_V_ENV(vfwcvt_f_x_v_b_bf16, 2) GEN_VEXT_V_ENV(vfwcvt_f_x_v_h, 4) GEN_VEXT_V_ENV(vfwcvt_f_x_v_w, 8) =20 @@ -4653,17 +4978,21 @@ GEN_VEXT_V_ENV(vfwcvtbf16_f_f_v, 4) #define NOP_UU_W uint32_t, uint64_t, uint64_t /* vfncvt.xu.f.v vd, vs2, vm # Convert float to unsigned integer. */ RVVCALL(OPFVV1, vfncvt_xu_f_w_b, NOP_UU_B, H1, H2, float16_to_uint8) +RVVCALL(OPFVV1, vfncvt_xu_f_w_b_bf16, NOP_UU_B, H1, H2, bfloat16_to_uint8) RVVCALL(OPFVV1, vfncvt_xu_f_w_h, NOP_UU_H, H2, H4, float32_to_uint16) RVVCALL(OPFVV1, vfncvt_xu_f_w_w, NOP_UU_W, H4, H8, float64_to_uint32) GEN_VEXT_V_ENV(vfncvt_xu_f_w_b, 1) +GEN_VEXT_V_ENV(vfncvt_xu_f_w_b_bf16, 1) GEN_VEXT_V_ENV(vfncvt_xu_f_w_h, 2) GEN_VEXT_V_ENV(vfncvt_xu_f_w_w, 4) =20 /* vfncvt.x.f.v vd, vs2, vm # Convert double-width float to signed integer= . */ RVVCALL(OPFVV1, vfncvt_x_f_w_b, NOP_UU_B, H1, H2, float16_to_int8) +RVVCALL(OPFVV1, vfncvt_x_f_w_b_bf16, NOP_UU_B, H1, H2, bfloat16_to_int8) RVVCALL(OPFVV1, vfncvt_x_f_w_h, NOP_UU_H, H2, H4, float32_to_int16) RVVCALL(OPFVV1, vfncvt_x_f_w_w, NOP_UU_W, H4, H8, float64_to_int32) GEN_VEXT_V_ENV(vfncvt_x_f_w_b, 1) +GEN_VEXT_V_ENV(vfncvt_x_f_w_b_bf16, 1) GEN_VEXT_V_ENV(vfncvt_x_f_w_h, 2) GEN_VEXT_V_ENV(vfncvt_x_f_w_w, 4) =20 diff --git a/target/riscv/insn_trans/trans_rvv.c.inc b/target/riscv/insn_tr= ans/trans_rvv.c.inc index 03ae85796a..5b72926b3c 100644 --- a/target/riscv/insn_trans/trans_rvv.c.inc +++ b/target/riscv/insn_trans/trans_rvv.c.inc @@ -40,6 +40,9 @@ static bool require_rvf(DisasContext *s) =20 switch (s->sew) { case MO_16: + if (s->altfmt) { + return s->cfg_ptr->ext_zvfbfa; + } return s->cfg_ptr->ext_zvfh; case MO_32: return s->cfg_ptr->ext_zve32f; @@ -58,6 +61,9 @@ static bool require_rvfmin(DisasContext *s) =20 switch (s->sew) { case MO_16: + if (s->altfmt) { + return s->cfg_ptr->ext_zvfbfa; + } return s->cfg_ptr->ext_zvfhmin; case MO_32: return s->cfg_ptr->ext_zve32f; @@ -74,6 +80,9 @@ static bool require_scale_rvf(DisasContext *s) =20 switch (s->sew) { case MO_8: + if (s->altfmt) { + return s->cfg_ptr->ext_zvfbfa; + } return s->cfg_ptr->ext_zvfh; case MO_16: return s->cfg_ptr->ext_zve32f; @@ -2334,25 +2343,39 @@ static void do_nanbox(DisasContext *s, TCGv_i64 out= , TCGv_i64 in) } } =20 +/* + * Check altfmt & sew combinations when Zvfbfa extension is enabled. + */ +static bool vext_check_altfmt(DisasContext *s, int8_t valid_vsew) +{ + if (s->cfg_ptr->ext_zvfbfa) { + if (s->altfmt && (valid_vsew =3D=3D -1 || s->sew !=3D valid_vsew))= { + return false; + } + } + return true; +} + /* Vector Single-Width Floating-Point Add/Subtract Instructions */ =20 /* * If the current SEW does not correspond to a supported IEEE floating-poi= nt * type, an illegal instruction exception is raised. */ -static bool opfvv_check(DisasContext *s, arg_rmrr *a) +static bool opfvv_check(DisasContext *s, arg_rmrr *a, int8_t valid_bfa_vse= w) { return require_rvv(s) && require_rvf(s) && vext_check_isa_ill(s) && - vext_check_sss(s, a->rd, a->rs1, a->rs2, a->vm); + vext_check_sss(s, a->rd, a->rs1, a->rs2, a->vm) && + vext_check_altfmt(s, valid_bfa_vsew); } =20 /* OPFVV without GVEC IR */ #define GEN_OPFVV_TRANS(NAME, CHECK) \ static bool trans_##NAME(DisasContext *s, arg_rmrr *a) \ { \ - if (CHECK(s, a)) { \ + if (CHECK(s, a, -1)) { \ uint32_t data =3D 0; \ static gen_helper_gvec_4_ptr * const fns[3] =3D { \ gen_helper_##NAME##_h, \ @@ -2378,8 +2401,41 @@ static bool trans_##NAME(DisasContext *s, arg_rmrr *= a) \ } \ return false; \ } -GEN_OPFVV_TRANS(vfadd_vv, opfvv_check) -GEN_OPFVV_TRANS(vfsub_vv, opfvv_check) + +#define GEN_OPFVV_BFA_TRANS(NAME, CHECK, BFA_HELPER) \ +static bool trans_##NAME(DisasContext *s, arg_rmrr *a) \ +{ \ + if (CHECK(s, a, MO_16)) { \ + uint32_t data =3D 0; \ + static gen_helper_gvec_4_ptr * const fns[3] =3D { \ + gen_helper_##NAME##_h, \ + gen_helper_##NAME##_w, \ + gen_helper_##NAME##_d \ + }; \ + gen_set_rm(s, RISCV_FRM_DYN); \ + \ + data =3D FIELD_DP32(data, VDATA, VM, a->vm); \ + data =3D FIELD_DP32(data, VDATA, LMUL, s->lmul); \ + data =3D FIELD_DP32(data, VDATA, VTA, s->vta); \ + data =3D FIELD_DP32(data, VDATA, VTA_ALL_1S, s->cfg_vta_all_1s); \ + data =3D FIELD_DP32(data, VDATA, VMA, s->vma); \ + tcg_gen_gvec_4_ptr(vreg_ofs(s, a->rd), vreg_ofs(s, 0), \ + vreg_ofs(s, a->rs1), \ + vreg_ofs(s, a->rs2), tcg_env, \ + s->cfg_ptr->vlenb, \ + s->cfg_ptr->vlenb, data, \ + (s->altfmt ? gen_helper_##BFA_HELPER : \ + fns[s->sew - 1])); \ + tcg_gen_movi_tl(cpu_vstart, 0); \ + finalize_rvv_inst(s); \ + \ + return true; \ + } \ + return false; \ +} + +GEN_OPFVV_BFA_TRANS(vfadd_vv, opfvv_check, vfadd_vv_h_bf16) +GEN_OPFVV_BFA_TRANS(vfsub_vv, opfvv_check, vfsub_vv_h_bf16) =20 typedef void gen_helper_opfvf(TCGv_ptr, TCGv_ptr, TCGv_i64, TCGv_ptr, TCGv_env, TCGv_i32); @@ -2415,244 +2471,316 @@ static bool opfvf_trans(uint32_t vd, uint32_t rs1= , uint32_t vs2, * If the current SEW does not correspond to a supported IEEE floating-poi= nt * type, an illegal instruction exception is raised */ -static bool opfvf_check(DisasContext *s, arg_rmrr *a) +static bool opfvf_check(DisasContext *s, arg_rmrr *a, int8_t valid_bfa_vse= w) { return require_rvv(s) && require_rvf(s) && vext_check_isa_ill(s) && - vext_check_ss(s, a->rd, a->rs2, a->vm); + vext_check_ss(s, a->rd, a->rs2, a->vm) && + vext_check_altfmt(s, valid_bfa_vsew); } =20 /* OPFVF without GVEC IR */ -#define GEN_OPFVF_TRANS(NAME, CHECK) \ -static bool trans_##NAME(DisasContext *s, arg_rmrr *a) \ -{ \ - if (CHECK(s, a)) { \ - uint32_t data =3D 0; \ - static gen_helper_opfvf *const fns[3] =3D { \ - gen_helper_##NAME##_h, \ - gen_helper_##NAME##_w, \ - gen_helper_##NAME##_d, \ - }; \ - gen_set_rm(s, RISCV_FRM_DYN); \ - data =3D FIELD_DP32(data, VDATA, VM, a->vm); \ - data =3D FIELD_DP32(data, VDATA, LMUL, s->lmul); \ - data =3D FIELD_DP32(data, VDATA, VTA, s->vta); \ - data =3D FIELD_DP32(data, VDATA, VTA_ALL_1S, \ - s->cfg_vta_all_1s); \ - data =3D FIELD_DP32(data, VDATA, VMA, s->vma); \ - return opfvf_trans(a->rd, a->rs1, a->rs2, data, \ - fns[s->sew - 1], s); \ - } \ - return false; \ -} - -GEN_OPFVF_TRANS(vfadd_vf, opfvf_check) -GEN_OPFVF_TRANS(vfsub_vf, opfvf_check) -GEN_OPFVF_TRANS(vfrsub_vf, opfvf_check) +#define GEN_OPFVF_TRANS(NAME, CHECK) \ +static bool trans_##NAME(DisasContext *s, arg_rmrr *a) \ +{ \ + if (CHECK(s, a, -1)) { \ + uint32_t data =3D 0; \ + static gen_helper_opfvf *const fns[3] =3D { \ + gen_helper_##NAME##_h, \ + gen_helper_##NAME##_w, \ + gen_helper_##NAME##_d, \ + }; \ + gen_set_rm(s, RISCV_FRM_DYN); \ + data =3D FIELD_DP32(data, VDATA, VM, a->vm); \ + data =3D FIELD_DP32(data, VDATA, LMUL, s->lmul); \ + data =3D FIELD_DP32(data, VDATA, VTA, s->vta); \ + data =3D FIELD_DP32(data, VDATA, VTA_ALL_1S, \ + s->cfg_vta_all_1s); \ + data =3D FIELD_DP32(data, VDATA, VMA, s->vma); \ + return opfvf_trans(a->rd, a->rs1, a->rs2, data, \ + fns[s->sew - 1], s); \ + } \ + return false; \ +} + +#define GEN_OPFVF_BFA_TRANS(NAME, CHECK, BFA_HELPER) \ +static bool trans_##NAME(DisasContext *s, arg_rmrr *a) \ +{ \ + if (CHECK(s, a, MO_16)) { \ + uint32_t data =3D 0; \ + static gen_helper_opfvf *const fns[3] =3D { \ + gen_helper_##NAME##_h, \ + gen_helper_##NAME##_w, \ + gen_helper_##NAME##_d, \ + }; \ + gen_set_rm(s, RISCV_FRM_DYN); \ + data =3D FIELD_DP32(data, VDATA, VM, a->vm); \ + data =3D FIELD_DP32(data, VDATA, LMUL, s->lmul); \ + data =3D FIELD_DP32(data, VDATA, VTA, s->vta); \ + data =3D FIELD_DP32(data, VDATA, VTA_ALL_1S, \ + s->cfg_vta_all_1s); \ + data =3D FIELD_DP32(data, VDATA, VMA, s->vma); \ + return opfvf_trans(a->rd, a->rs1, a->rs2, data, \ + (s->altfmt ? gen_helper_##BFA_HELPER : \ + fns[s->sew - 1]), \ + s); \ + } \ + return false; \ +} + +GEN_OPFVF_BFA_TRANS(vfadd_vf, opfvf_check, vfadd_vf_h_bf16) +GEN_OPFVF_BFA_TRANS(vfsub_vf, opfvf_check, vfsub_vf_h_bf16) +GEN_OPFVF_BFA_TRANS(vfrsub_vf, opfvf_check, vfrsub_vf_h_bf16) =20 /* Vector Widening Floating-Point Add/Subtract Instructions */ -static bool opfvv_widen_check(DisasContext *s, arg_rmrr *a) +static bool opfvv_widen_check(DisasContext *s, arg_rmrr *a, + int8_t valid_bfa_vsew) { return require_rvv(s) && require_rvf(s) && require_scale_rvf(s) && vext_check_isa_ill(s) && - vext_check_dss(s, a->rd, a->rs1, a->rs2, a->vm); + vext_check_dss(s, a->rd, a->rs1, a->rs2, a->vm) && + vext_check_altfmt(s, valid_bfa_vsew); } =20 -static bool opfvv_overwrite_widen_check(DisasContext *s, arg_rmrr *a) +static bool opfvv_overwrite_widen_check(DisasContext *s, arg_rmrr *a, + int8_t valid_bfa_vsew) { - return require_rvv(s) && - require_rvf(s) && - require_scale_rvf(s) && - vext_check_isa_ill(s) && - vext_check_dss(s, a->rd, a->rs1, a->rs2, a->vm) && + return opfvv_widen_check(s, a, valid_bfa_vsew) && vext_check_input_eew(s, a->rd, s->sew + 1, a->rs1, s->sew, a->v= m) && vext_check_input_eew(s, a->rd, s->sew + 1, a->rs2, s->sew, a->v= m); } =20 /* OPFVV with WIDEN */ -#define GEN_OPFVV_WIDEN_TRANS(NAME, CHECK) \ -static bool trans_##NAME(DisasContext *s, arg_rmrr *a) \ -{ \ - if (CHECK(s, a)) { \ - uint32_t data =3D 0; \ - static gen_helper_gvec_4_ptr * const fns[2] =3D { \ - gen_helper_##NAME##_h, gen_helper_##NAME##_w, \ - }; \ - gen_set_rm(s, RISCV_FRM_DYN); \ - \ - data =3D FIELD_DP32(data, VDATA, VM, a->vm); \ - data =3D FIELD_DP32(data, VDATA, LMUL, s->lmul); \ - data =3D FIELD_DP32(data, VDATA, VTA, s->vta); \ - data =3D FIELD_DP32(data, VDATA, VMA, s->vma); \ - tcg_gen_gvec_4_ptr(vreg_ofs(s, a->rd), vreg_ofs(s, 0), \ - vreg_ofs(s, a->rs1), \ - vreg_ofs(s, a->rs2), tcg_env, \ - s->cfg_ptr->vlenb, \ - s->cfg_ptr->vlenb, data, \ - fns[s->sew - 1]); \ - finalize_rvv_inst(s); \ - return true; \ - } \ - return false; \ -} - -GEN_OPFVV_WIDEN_TRANS(vfwadd_vv, opfvv_widen_check) -GEN_OPFVV_WIDEN_TRANS(vfwsub_vv, opfvv_widen_check) - -static bool opfvf_widen_check(DisasContext *s, arg_rmrr *a) +#define GEN_OPFVV_WIDEN_TRANS(NAME, CHECK) \ +static bool trans_##NAME(DisasContext *s, arg_rmrr *a) \ +{ \ + if (CHECK(s, a, -1)) { \ + uint32_t data =3D 0; \ + static gen_helper_gvec_4_ptr * const fns[2] =3D { \ + gen_helper_##NAME##_h, gen_helper_##NAME##_w, \ + }; \ + gen_set_rm(s, RISCV_FRM_DYN); \ + \ + data =3D FIELD_DP32(data, VDATA, VM, a->vm); \ + data =3D FIELD_DP32(data, VDATA, LMUL, s->lmul); \ + data =3D FIELD_DP32(data, VDATA, VTA, s->vta); \ + data =3D FIELD_DP32(data, VDATA, VMA, s->vma); \ + tcg_gen_gvec_4_ptr(vreg_ofs(s, a->rd), vreg_ofs(s, 0), \ + vreg_ofs(s, a->rs1), \ + vreg_ofs(s, a->rs2), tcg_env, \ + s->cfg_ptr->vlenb, \ + s->cfg_ptr->vlenb, data, \ + fns[s->sew - 1]); \ + finalize_rvv_inst(s); \ + return true; \ + } \ + return false; \ +} + +#define GEN_OPFVV_WIDEN_BFA_TRANS(NAME, CHECK, BFA_HELPER) \ +static bool trans_##NAME(DisasContext *s, arg_rmrr *a) \ +{ \ + if (CHECK(s, a, MO_16)) { \ + uint32_t data =3D 0; \ + static gen_helper_gvec_4_ptr * const fns[2] =3D { \ + gen_helper_##NAME##_h, \ + gen_helper_##NAME##_w \ + }; \ + gen_set_rm(s, RISCV_FRM_DYN); \ + \ + data =3D FIELD_DP32(data, VDATA, VM, a->vm); \ + data =3D FIELD_DP32(data, VDATA, LMUL, s->lmul); \ + data =3D FIELD_DP32(data, VDATA, VTA, s->vta); \ + data =3D FIELD_DP32(data, VDATA, VMA, s->vma); \ + tcg_gen_gvec_4_ptr(vreg_ofs(s, a->rd), vreg_ofs(s, 0), \ + vreg_ofs(s, a->rs1), \ + vreg_ofs(s, a->rs2), tcg_env, \ + s->cfg_ptr->vlenb, \ + s->cfg_ptr->vlenb, data, \ + (s->altfmt ? gen_helper_##BFA_HELPER : \ + fns[s->sew - 1])); \ + finalize_rvv_inst(s); \ + return true; \ + } \ + return false; \ +} + +GEN_OPFVV_WIDEN_BFA_TRANS(vfwadd_vv, opfvv_widen_check, vfwadd_vv_h_bf16) +GEN_OPFVV_WIDEN_BFA_TRANS(vfwsub_vv, opfvv_widen_check, vfwsub_vv_h_bf16) + +static bool opfvf_widen_check(DisasContext *s, arg_rmrr *a, + int8_t valid_bfa_vsew) { return require_rvv(s) && require_rvf(s) && require_scale_rvf(s) && vext_check_isa_ill(s) && - vext_check_ds(s, a->rd, a->rs2, a->vm); + vext_check_ds(s, a->rd, a->rs2, a->vm) && + vext_check_altfmt(s, valid_bfa_vsew); } =20 -static bool opfvf_overwrite_widen_check(DisasContext *s, arg_rmrr *a) +static bool opfvf_overwrite_widen_check(DisasContext *s, arg_rmrr *a, + int8_t valid_bfa_vsew) { - return require_rvv(s) && - require_rvf(s) && - require_scale_rvf(s) && - vext_check_isa_ill(s) && - vext_check_ds(s, a->rd, a->rs2, a->vm) && + return opfvf_widen_check(s, a, valid_bfa_vsew) && vext_check_input_eew(s, a->rd, s->sew + 1, a->rs2, s->sew, a->v= m); } =20 /* OPFVF with WIDEN */ -#define GEN_OPFVF_WIDEN_TRANS(NAME, CHECK) \ -static bool trans_##NAME(DisasContext *s, arg_rmrr *a) \ -{ \ - if (CHECK(s, a)) { \ - uint32_t data =3D 0; \ - static gen_helper_opfvf *const fns[2] =3D { \ - gen_helper_##NAME##_h, gen_helper_##NAME##_w, \ - }; \ - gen_set_rm(s, RISCV_FRM_DYN); \ - data =3D FIELD_DP32(data, VDATA, VM, a->vm); \ - data =3D FIELD_DP32(data, VDATA, LMUL, s->lmul); \ - data =3D FIELD_DP32(data, VDATA, VTA, s->vta); \ - data =3D FIELD_DP32(data, VDATA, VMA, s->vma); \ - return opfvf_trans(a->rd, a->rs1, a->rs2, data, \ - fns[s->sew - 1], s); \ - } \ - return false; \ -} - -GEN_OPFVF_WIDEN_TRANS(vfwadd_vf, opfvf_widen_check) -GEN_OPFVF_WIDEN_TRANS(vfwsub_vf, opfvf_widen_check) - -static bool opfwv_widen_check(DisasContext *s, arg_rmrr *a) +#define GEN_OPFVF_WIDEN_BFA_TRANS(NAME, CHECK, BFA_HELPER) \ +static bool trans_##NAME(DisasContext *s, arg_rmrr *a) \ +{ \ + if (CHECK(s, a, MO_16)) { \ + uint32_t data =3D 0; \ + static gen_helper_opfvf *const fns[2] =3D { \ + gen_helper_##NAME##_h, \ + gen_helper_##NAME##_w, \ + }; \ + gen_set_rm(s, RISCV_FRM_DYN); \ + data =3D FIELD_DP32(data, VDATA, VM, a->vm); \ + data =3D FIELD_DP32(data, VDATA, LMUL, s->lmul); \ + data =3D FIELD_DP32(data, VDATA, VTA, s->vta); \ + data =3D FIELD_DP32(data, VDATA, VMA, s->vma); \ + return opfvf_trans(a->rd, a->rs1, a->rs2, data, \ + (s->altfmt ? gen_helper_##BFA_HELPER : \ + fns[s->sew - 1]), \ + s); \ + } \ + return false; \ +} + +GEN_OPFVF_WIDEN_BFA_TRANS(vfwadd_vf, opfvf_widen_check, vfwadd_vf_h_bf16) +GEN_OPFVF_WIDEN_BFA_TRANS(vfwsub_vf, opfvf_widen_check, vfwsub_vf_h_bf16) + +static bool opfwv_widen_check(DisasContext *s, arg_rmrr *a, + int8_t valid_bfa_vsew) { return require_rvv(s) && require_rvf(s) && require_scale_rvf(s) && vext_check_isa_ill(s) && - vext_check_dds(s, a->rd, a->rs1, a->rs2, a->vm); + vext_check_dds(s, a->rd, a->rs1, a->rs2, a->vm) && + vext_check_altfmt(s, valid_bfa_vsew); } =20 /* WIDEN OPFVV with WIDEN */ -#define GEN_OPFWV_WIDEN_TRANS(NAME) \ -static bool trans_##NAME(DisasContext *s, arg_rmrr *a) \ -{ \ - if (opfwv_widen_check(s, a)) { \ - uint32_t data =3D 0; \ - static gen_helper_gvec_4_ptr * const fns[2] =3D { \ - gen_helper_##NAME##_h, gen_helper_##NAME##_w, \ - }; \ - gen_set_rm(s, RISCV_FRM_DYN); \ - \ - data =3D FIELD_DP32(data, VDATA, VM, a->vm); \ - data =3D FIELD_DP32(data, VDATA, LMUL, s->lmul); \ - data =3D FIELD_DP32(data, VDATA, VTA, s->vta); \ - data =3D FIELD_DP32(data, VDATA, VMA, s->vma); \ - tcg_gen_gvec_4_ptr(vreg_ofs(s, a->rd), vreg_ofs(s, 0), \ - vreg_ofs(s, a->rs1), \ - vreg_ofs(s, a->rs2), tcg_env, \ - s->cfg_ptr->vlenb, \ - s->cfg_ptr->vlenb, data, \ - fns[s->sew - 1]); \ - finalize_rvv_inst(s); \ - return true; \ - } \ - return false; \ +#define GEN_OPFWV_WIDEN_BFA_TRANS(NAME) \ +static bool trans_##NAME(DisasContext *s, arg_rmrr *a) \ +{ \ + if (opfwv_widen_check(s, a, MO_16)) { \ + uint32_t data =3D 0; \ + static gen_helper_gvec_4_ptr * const fns[2] =3D { \ + gen_helper_##NAME##_h, \ + gen_helper_##NAME##_w \ + }; \ + gen_set_rm(s, RISCV_FRM_DYN); \ + \ + data =3D FIELD_DP32(data, VDATA, VM, a->vm); \ + data =3D FIELD_DP32(data, VDATA, LMUL, s->lmul); \ + data =3D FIELD_DP32(data, VDATA, VTA, s->vta); \ + data =3D FIELD_DP32(data, VDATA, VMA, s->vma); \ + tcg_gen_gvec_4_ptr(vreg_ofs(s, a->rd), vreg_ofs(s, 0), \ + vreg_ofs(s, a->rs1), \ + vreg_ofs(s, a->rs2), tcg_env, \ + s->cfg_ptr->vlenb, \ + s->cfg_ptr->vlenb, data, \ + (s->altfmt ? gen_helper_##NAME##_h_bf16 : \ + fns[s->sew - 1])); \ + finalize_rvv_inst(s); \ + return true; \ + } \ + return false; \ } =20 -GEN_OPFWV_WIDEN_TRANS(vfwadd_wv) -GEN_OPFWV_WIDEN_TRANS(vfwsub_wv) +GEN_OPFWV_WIDEN_BFA_TRANS(vfwadd_wv) +GEN_OPFWV_WIDEN_BFA_TRANS(vfwsub_wv) =20 -static bool opfwf_widen_check(DisasContext *s, arg_rmrr *a) +static bool opfwf_widen_check(DisasContext *s, arg_rmrr *a, + int8_t valid_bfa_vsew) { return require_rvv(s) && require_rvf(s) && require_scale_rvf(s) && vext_check_isa_ill(s) && - vext_check_dd(s, a->rd, a->rs2, a->vm); + vext_check_dd(s, a->rd, a->rs2, a->vm) && + vext_check_altfmt(s, valid_bfa_vsew); } =20 /* WIDEN OPFVF with WIDEN */ -#define GEN_OPFWF_WIDEN_TRANS(NAME) \ -static bool trans_##NAME(DisasContext *s, arg_rmrr *a) \ -{ \ - if (opfwf_widen_check(s, a)) { \ - uint32_t data =3D 0; \ - static gen_helper_opfvf *const fns[2] =3D { \ - gen_helper_##NAME##_h, gen_helper_##NAME##_w, \ - }; \ - gen_set_rm(s, RISCV_FRM_DYN); \ - data =3D FIELD_DP32(data, VDATA, VM, a->vm); \ - data =3D FIELD_DP32(data, VDATA, LMUL, s->lmul); \ - data =3D FIELD_DP32(data, VDATA, VTA, s->vta); \ - data =3D FIELD_DP32(data, VDATA, VMA, s->vma); \ - return opfvf_trans(a->rd, a->rs1, a->rs2, data, \ - fns[s->sew - 1], s); \ - } \ - return false; \ -} - -GEN_OPFWF_WIDEN_TRANS(vfwadd_wf) -GEN_OPFWF_WIDEN_TRANS(vfwsub_wf) +#define GEN_OPFWF_WIDEN_BFA_TRANS(NAME) \ +static bool trans_##NAME(DisasContext *s, arg_rmrr *a) \ +{ \ + if (opfwf_widen_check(s, a, MO_16)) { \ + uint32_t data =3D 0; \ + static gen_helper_opfvf *const fns[2] =3D { \ + gen_helper_##NAME##_h, \ + gen_helper_##NAME##_w \ + }; \ + gen_set_rm(s, RISCV_FRM_DYN); \ + data =3D FIELD_DP32(data, VDATA, VM, a->vm); \ + data =3D FIELD_DP32(data, VDATA, LMUL, s->lmul); \ + data =3D FIELD_DP32(data, VDATA, VTA, s->vta); \ + data =3D FIELD_DP32(data, VDATA, VMA, s->vma); \ + return opfvf_trans(a->rd, a->rs1, a->rs2, data, \ + (s->altfmt ? gen_helper_##NAME##_h_bf16 : \ + fns[s->sew - 1]), \ + s); \ + } \ + return false; \ +} + +GEN_OPFWF_WIDEN_BFA_TRANS(vfwadd_wf) +GEN_OPFWF_WIDEN_BFA_TRANS(vfwsub_wf) =20 /* Vector Single-Width Floating-Point Multiply/Divide Instructions */ -GEN_OPFVV_TRANS(vfmul_vv, opfvv_check) +GEN_OPFVV_BFA_TRANS(vfmul_vv, opfvv_check, vfmul_vv_h_bf16) GEN_OPFVV_TRANS(vfdiv_vv, opfvv_check) -GEN_OPFVF_TRANS(vfmul_vf, opfvf_check) +GEN_OPFVF_BFA_TRANS(vfmul_vf, opfvf_check, vfmul_vf_h_bf16) GEN_OPFVF_TRANS(vfdiv_vf, opfvf_check) GEN_OPFVF_TRANS(vfrdiv_vf, opfvf_check) =20 /* Vector Widening Floating-Point Multiply */ -GEN_OPFVV_WIDEN_TRANS(vfwmul_vv, opfvv_widen_check) -GEN_OPFVF_WIDEN_TRANS(vfwmul_vf, opfvf_widen_check) +GEN_OPFVV_WIDEN_BFA_TRANS(vfwmul_vv, opfvv_widen_check, vfwmul_vv_h_bf16) +GEN_OPFVF_WIDEN_BFA_TRANS(vfwmul_vf, opfvf_widen_check, vfwmul_vf_h_bf16) =20 /* Vector Single-Width Floating-Point Fused Multiply-Add Instructions */ -GEN_OPFVV_TRANS(vfmacc_vv, opfvv_check) -GEN_OPFVV_TRANS(vfnmacc_vv, opfvv_check) -GEN_OPFVV_TRANS(vfmsac_vv, opfvv_check) -GEN_OPFVV_TRANS(vfnmsac_vv, opfvv_check) -GEN_OPFVV_TRANS(vfmadd_vv, opfvv_check) -GEN_OPFVV_TRANS(vfnmadd_vv, opfvv_check) -GEN_OPFVV_TRANS(vfmsub_vv, opfvv_check) -GEN_OPFVV_TRANS(vfnmsub_vv, opfvv_check) -GEN_OPFVF_TRANS(vfmacc_vf, opfvf_check) -GEN_OPFVF_TRANS(vfnmacc_vf, opfvf_check) -GEN_OPFVF_TRANS(vfmsac_vf, opfvf_check) -GEN_OPFVF_TRANS(vfnmsac_vf, opfvf_check) -GEN_OPFVF_TRANS(vfmadd_vf, opfvf_check) -GEN_OPFVF_TRANS(vfnmadd_vf, opfvf_check) -GEN_OPFVF_TRANS(vfmsub_vf, opfvf_check) -GEN_OPFVF_TRANS(vfnmsub_vf, opfvf_check) +GEN_OPFVV_BFA_TRANS(vfmacc_vv, opfvv_check, vfmacc_vv_h_bf16) +GEN_OPFVV_BFA_TRANS(vfnmacc_vv, opfvv_check, vfnmacc_vv_h_bf16) +GEN_OPFVV_BFA_TRANS(vfmsac_vv, opfvv_check, vfmsac_vv_h_bf16) +GEN_OPFVV_BFA_TRANS(vfnmsac_vv, opfvv_check, vfnmsac_vv_h_bf16) +GEN_OPFVV_BFA_TRANS(vfmadd_vv, opfvv_check, vfmadd_vv_h_bf16) +GEN_OPFVV_BFA_TRANS(vfnmadd_vv, opfvv_check, vfnmadd_vv_h_bf16) +GEN_OPFVV_BFA_TRANS(vfmsub_vv, opfvv_check, vfmsub_vv_h_bf16) +GEN_OPFVV_BFA_TRANS(vfnmsub_vv, opfvv_check, vfnmsub_vv_h_bf16) +GEN_OPFVF_BFA_TRANS(vfmacc_vf, opfvf_check, vfmacc_vf_h_bf16) +GEN_OPFVF_BFA_TRANS(vfnmacc_vf, opfvf_check, vfnmacc_vf_h_bf16) +GEN_OPFVF_BFA_TRANS(vfmsac_vf, opfvf_check, vfmsac_vf_h_bf16) +GEN_OPFVF_BFA_TRANS(vfnmsac_vf, opfvf_check, vfnmsac_vf_h_bf16) +GEN_OPFVF_BFA_TRANS(vfmadd_vf, opfvf_check, vfmadd_vf_h_bf16) +GEN_OPFVF_BFA_TRANS(vfnmadd_vf, opfvf_check, vfnmadd_vf_h_bf16) +GEN_OPFVF_BFA_TRANS(vfmsub_vf, opfvf_check, vfmsub_vf_h_bf16) +GEN_OPFVF_BFA_TRANS(vfnmsub_vf, opfvf_check, vfnmsub_vf_h_bf16) =20 /* Vector Widening Floating-Point Fused Multiply-Add Instructions */ -GEN_OPFVV_WIDEN_TRANS(vfwmacc_vv, opfvv_overwrite_widen_check) -GEN_OPFVV_WIDEN_TRANS(vfwnmacc_vv, opfvv_overwrite_widen_check) -GEN_OPFVV_WIDEN_TRANS(vfwmsac_vv, opfvv_overwrite_widen_check) -GEN_OPFVV_WIDEN_TRANS(vfwnmsac_vv, opfvv_overwrite_widen_check) -GEN_OPFVF_WIDEN_TRANS(vfwmacc_vf, opfvf_overwrite_widen_check) -GEN_OPFVF_WIDEN_TRANS(vfwnmacc_vf, opfvf_overwrite_widen_check) -GEN_OPFVF_WIDEN_TRANS(vfwmsac_vf, opfvf_overwrite_widen_check) -GEN_OPFVF_WIDEN_TRANS(vfwnmsac_vf, opfvf_overwrite_widen_check) +GEN_OPFVV_WIDEN_BFA_TRANS(vfwmacc_vv, opfvv_overwrite_widen_check, + vfwmaccbf16_vv) +GEN_OPFVV_WIDEN_BFA_TRANS(vfwnmacc_vv, opfvv_overwrite_widen_check, + vfwnmacc_vv_h_bf16) +GEN_OPFVV_WIDEN_BFA_TRANS(vfwmsac_vv, opfvv_overwrite_widen_check, + vfwmsac_vv_h_bf16) +GEN_OPFVV_WIDEN_BFA_TRANS(vfwnmsac_vv, opfvv_overwrite_widen_check, + vfwnmsac_vv_h_bf16) +GEN_OPFVF_WIDEN_BFA_TRANS(vfwmacc_vf, opfvf_overwrite_widen_check, + vfwmaccbf16_vf) +GEN_OPFVF_WIDEN_BFA_TRANS(vfwnmacc_vf, opfvf_overwrite_widen_check, + vfwnmacc_vf_h_bf16) +GEN_OPFVF_WIDEN_BFA_TRANS(vfwmsac_vf, opfvf_overwrite_widen_check, + vfwmsac_vf_h_bf16) +GEN_OPFVF_WIDEN_BFA_TRANS(vfwnmsac_vf, opfvf_overwrite_widen_check, + vfwnmsac_vf_h_bf16) =20 /* Vector Floating-Point Square-Root Instruction */ =20 @@ -2660,21 +2788,23 @@ GEN_OPFVF_WIDEN_TRANS(vfwnmsac_vf, opfvf_overwrite_= widen_check) * If the current SEW does not correspond to a supported IEEE floating-poi= nt * type, an illegal instruction exception is raised */ -static bool opfv_check(DisasContext *s, arg_rmr *a) +static bool opfv_check(DisasContext *s, arg_rmr *a, int8_t valid_bfa_vsew) { return require_rvv(s) && require_rvf(s) && vext_check_isa_ill(s) && /* OPFV instructions ignore vs1 check */ - vext_check_ss(s, a->rd, a->rs2, a->vm); + vext_check_ss(s, a->rd, a->rs2, a->vm) && + vext_check_altfmt(s, valid_bfa_vsew); } =20 static bool do_opfv(DisasContext *s, arg_rmr *a, gen_helper_gvec_3_ptr *fn, - bool (*checkfn)(DisasContext *, arg_rmr *), - int rm) + bool (*checkfn)(DisasContext *, arg_rmr *, int8_t), + int rm, + int8_t valid_bfa_vsew) { - if (checkfn(s, a)) { + if (checkfn(s, a, valid_bfa_vsew)) { uint32_t data =3D 0; gen_set_rm_chkfrm(s, rm); =20 @@ -2692,76 +2822,95 @@ static bool do_opfv(DisasContext *s, arg_rmr *a, return false; } =20 -#define GEN_OPFV_TRANS(NAME, CHECK, FRM) \ -static bool trans_##NAME(DisasContext *s, arg_rmr *a) \ -{ \ - static gen_helper_gvec_3_ptr * const fns[3] =3D { \ - gen_helper_##NAME##_h, \ - gen_helper_##NAME##_w, \ - gen_helper_##NAME##_d \ - }; \ - return do_opfv(s, a, fns[s->sew - 1], CHECK, FRM); \ +#define GEN_OPFV_TRANS(NAME, CHECK, FRM) \ +static bool trans_##NAME(DisasContext *s, arg_rmr *a) \ +{ \ + static gen_helper_gvec_3_ptr * const fns[3] =3D { \ + gen_helper_##NAME##_h, \ + gen_helper_##NAME##_w, \ + gen_helper_##NAME##_d \ + }; \ + return do_opfv(s, a, fns[s->sew - 1], CHECK, FRM, -1); \ +} + +#define GEN_OPFV_BFA_TRANS(NAME, CHECK, FRM) \ +static bool trans_##NAME(DisasContext *s, arg_rmr *a) \ +{ \ + static gen_helper_gvec_3_ptr * const fns[3] =3D { \ + gen_helper_##NAME##_h, \ + gen_helper_##NAME##_w, \ + gen_helper_##NAME##_d \ + }; \ + return do_opfv(s, a, \ + (s->altfmt ? gen_helper_##NAME##_h_bf16 : \ + fns[s->sew - 1]), \ + CHECK, FRM, MO_16); \ } =20 GEN_OPFV_TRANS(vfsqrt_v, opfv_check, RISCV_FRM_DYN) -GEN_OPFV_TRANS(vfrsqrt7_v, opfv_check, RISCV_FRM_DYN) -GEN_OPFV_TRANS(vfrec7_v, opfv_check, RISCV_FRM_DYN) +GEN_OPFV_BFA_TRANS(vfrsqrt7_v, opfv_check, RISCV_FRM_DYN) +GEN_OPFV_BFA_TRANS(vfrec7_v, opfv_check, RISCV_FRM_DYN) =20 /* Vector Floating-Point MIN/MAX Instructions */ -GEN_OPFVV_TRANS(vfmin_vv, opfvv_check) -GEN_OPFVV_TRANS(vfmax_vv, opfvv_check) -GEN_OPFVF_TRANS(vfmin_vf, opfvf_check) -GEN_OPFVF_TRANS(vfmax_vf, opfvf_check) +GEN_OPFVV_BFA_TRANS(vfmin_vv, opfvv_check, vfmin_vv_h_bf16) +GEN_OPFVV_BFA_TRANS(vfmax_vv, opfvv_check, vfmax_vv_h_bf16) +GEN_OPFVF_BFA_TRANS(vfmin_vf, opfvf_check, vfmin_vf_h_bf16) +GEN_OPFVF_BFA_TRANS(vfmax_vf, opfvf_check, vfmax_vf_h_bf16) =20 /* Vector Floating-Point Sign-Injection Instructions */ -GEN_OPFVV_TRANS(vfsgnj_vv, opfvv_check) -GEN_OPFVV_TRANS(vfsgnjn_vv, opfvv_check) -GEN_OPFVV_TRANS(vfsgnjx_vv, opfvv_check) -GEN_OPFVF_TRANS(vfsgnj_vf, opfvf_check) -GEN_OPFVF_TRANS(vfsgnjn_vf, opfvf_check) -GEN_OPFVF_TRANS(vfsgnjx_vf, opfvf_check) +GEN_OPFVV_BFA_TRANS(vfsgnj_vv, opfvv_check, vfsgnj_vv_h) +GEN_OPFVV_BFA_TRANS(vfsgnjn_vv, opfvv_check, vfsgnjn_vv_h) +GEN_OPFVV_BFA_TRANS(vfsgnjx_vv, opfvv_check, vfsgnjx_vv_h) +GEN_OPFVF_BFA_TRANS(vfsgnj_vf, opfvf_check, vfsgnj_vf_h) +GEN_OPFVF_BFA_TRANS(vfsgnjn_vf, opfvf_check, vfsgnjn_vf_h) +GEN_OPFVF_BFA_TRANS(vfsgnjx_vf, opfvf_check, vfsgnjx_vf_h) =20 /* Vector Floating-Point Compare Instructions */ -static bool opfvv_cmp_check(DisasContext *s, arg_rmrr *a) +static bool opfvv_cmp_check(DisasContext *s, arg_rmrr *a, + int8_t valid_bfa_vsew) { return require_rvv(s) && require_rvf(s) && vext_check_isa_ill(s) && - vext_check_mss(s, a->rd, a->rs1, a->rs2); + vext_check_mss(s, a->rd, a->rs1, a->rs2) && + vext_check_altfmt(s, valid_bfa_vsew); } =20 -GEN_OPFVV_TRANS(vmfeq_vv, opfvv_cmp_check) -GEN_OPFVV_TRANS(vmfne_vv, opfvv_cmp_check) -GEN_OPFVV_TRANS(vmflt_vv, opfvv_cmp_check) -GEN_OPFVV_TRANS(vmfle_vv, opfvv_cmp_check) +GEN_OPFVV_BFA_TRANS(vmfeq_vv, opfvv_cmp_check, vmfeq_vv_h_bf16) +GEN_OPFVV_BFA_TRANS(vmfne_vv, opfvv_cmp_check, vmfne_vv_h_bf16) +GEN_OPFVV_BFA_TRANS(vmflt_vv, opfvv_cmp_check, vmflt_vv_h_bf16) +GEN_OPFVV_BFA_TRANS(vmfle_vv, opfvv_cmp_check, vmfle_vv_h_bf16) =20 -static bool opfvf_cmp_check(DisasContext *s, arg_rmrr *a) +static bool opfvf_cmp_check(DisasContext *s, arg_rmrr *a, + int8_t valid_bfa_vsew) { return require_rvv(s) && require_rvf(s) && vext_check_isa_ill(s) && - vext_check_ms(s, a->rd, a->rs2); + vext_check_ms(s, a->rd, a->rs2) && + vext_check_altfmt(s, valid_bfa_vsew); } =20 -GEN_OPFVF_TRANS(vmfeq_vf, opfvf_cmp_check) -GEN_OPFVF_TRANS(vmfne_vf, opfvf_cmp_check) -GEN_OPFVF_TRANS(vmflt_vf, opfvf_cmp_check) -GEN_OPFVF_TRANS(vmfle_vf, opfvf_cmp_check) -GEN_OPFVF_TRANS(vmfgt_vf, opfvf_cmp_check) -GEN_OPFVF_TRANS(vmfge_vf, opfvf_cmp_check) +GEN_OPFVF_BFA_TRANS(vmfeq_vf, opfvf_cmp_check, vmfeq_vf_h_bf16) +GEN_OPFVF_BFA_TRANS(vmfne_vf, opfvf_cmp_check, vmfne_vf_h_bf16) +GEN_OPFVF_BFA_TRANS(vmflt_vf, opfvf_cmp_check, vmflt_vf_h_bf16) +GEN_OPFVF_BFA_TRANS(vmfle_vf, opfvf_cmp_check, vmfle_vf_h_bf16) +GEN_OPFVF_BFA_TRANS(vmfgt_vf, opfvf_cmp_check, vmfgt_vf_h_bf16) +GEN_OPFVF_BFA_TRANS(vmfge_vf, opfvf_cmp_check, vmfge_vf_h_bf16) =20 /* Vector Floating-Point Classify Instruction */ -GEN_OPFV_TRANS(vfclass_v, opfv_check, RISCV_FRM_DYN) +GEN_OPFV_BFA_TRANS(vfclass_v, opfv_check, RISCV_FRM_DYN) =20 /* Vector Floating-Point Merge Instruction */ -GEN_OPFVF_TRANS(vfmerge_vfm, opfvf_check) +GEN_OPFVF_BFA_TRANS(vfmerge_vfm, opfvf_check, vfmerge_vfm_h) =20 static bool trans_vfmv_v_f(DisasContext *s, arg_vfmv_v_f *a) { if (require_rvv(s) && require_rvf(s) && vext_check_isa_ill(s) && - require_align(a->rd, s->lmul)) { + require_align(a->rd, s->lmul) && + vext_check_altfmt(s, MO_16)) { gen_set_rm(s, RISCV_FRM_DYN); =20 TCGv_i64 t1; @@ -2782,7 +2931,7 @@ static bool trans_vfmv_v_f(DisasContext *s, arg_vfmv_= v_f *a) static gen_helper_vmv_vx * const fns[3] =3D { gen_helper_vmv_v_x_h, gen_helper_vmv_v_x_w, - gen_helper_vmv_v_x_d, + gen_helper_vmv_v_x_d }; =20 t1 =3D tcg_temp_new_i64(); @@ -2803,15 +2952,15 @@ static bool trans_vfmv_v_f(DisasContext *s, arg_vfm= v_v_f *a) } =20 /* Single-Width Floating-Point/Integer Type-Convert Instructions */ -#define GEN_OPFV_CVT_TRANS(NAME, HELPER, FRM) \ -static bool trans_##NAME(DisasContext *s, arg_rmr *a) \ -{ \ - static gen_helper_gvec_3_ptr * const fns[3] =3D { \ - gen_helper_##HELPER##_h, \ - gen_helper_##HELPER##_w, \ - gen_helper_##HELPER##_d \ - }; \ - return do_opfv(s, a, fns[s->sew - 1], opfv_check, FRM); \ +#define GEN_OPFV_CVT_TRANS(NAME, HELPER, FRM) \ +static bool trans_##NAME(DisasContext *s, arg_rmr *a) \ +{ \ + static gen_helper_gvec_3_ptr * const fns[3] =3D { \ + gen_helper_##HELPER##_h, \ + gen_helper_##HELPER##_w, \ + gen_helper_##HELPER##_d \ + }; \ + return do_opfv(s, a, fns[s->sew - 1], opfv_check, FRM, -1); \ } =20 GEN_OPFV_CVT_TRANS(vfcvt_xu_f_v, vfcvt_xu_f_v, RISCV_FRM_DYN) @@ -2835,95 +2984,129 @@ static bool opfv_widen_check(DisasContext *s, arg_= rmr *a) vext_check_ds(s, a->rd, a->rs2, a->vm); } =20 -static bool opxfv_widen_check(DisasContext *s, arg_rmr *a) +static bool opxfv_widen_check(DisasContext *s, arg_rmr *a, + int8_t valid_bfa_vsew) { return opfv_widen_check(s, a) && - require_rvf(s); + require_rvf(s) && + vext_check_altfmt(s, valid_bfa_vsew); } =20 -static bool opffv_widen_check(DisasContext *s, arg_rmr *a) +static bool opffv_widen_check(DisasContext *s, arg_rmr *a, + int8_t valid_bfa_vsew) { return opfv_widen_check(s, a) && require_rvfmin(s) && - require_scale_rvfmin(s); -} - -#define GEN_OPFV_WIDEN_TRANS(NAME, CHECK, HELPER, FRM) \ -static bool trans_##NAME(DisasContext *s, arg_rmr *a) \ -{ \ - if (CHECK(s, a)) { \ - uint32_t data =3D 0; \ - static gen_helper_gvec_3_ptr * const fns[2] =3D { \ - gen_helper_##HELPER##_h, \ - gen_helper_##HELPER##_w, \ - }; \ - gen_set_rm_chkfrm(s, FRM); \ - \ - data =3D FIELD_DP32(data, VDATA, VM, a->vm); \ - data =3D FIELD_DP32(data, VDATA, LMUL, s->lmul); \ - data =3D FIELD_DP32(data, VDATA, VTA, s->vta); \ - data =3D FIELD_DP32(data, VDATA, VMA, s->vma); \ - tcg_gen_gvec_3_ptr(vreg_ofs(s, a->rd), vreg_ofs(s, 0), \ - vreg_ofs(s, a->rs2), tcg_env, \ - s->cfg_ptr->vlenb, \ - s->cfg_ptr->vlenb, data, \ - fns[s->sew - 1]); \ - finalize_rvv_inst(s); \ - return true; \ - } \ - return false; \ + require_scale_rvfmin(s) && + vext_check_altfmt(s, valid_bfa_vsew); +} + +#define GEN_OPFV_WIDEN_TRANS(NAME, CHECK, HELPER, FRM) \ +static bool trans_##NAME(DisasContext *s, arg_rmr *a) \ +{ \ + if (CHECK(s, a, -1)) { \ + uint32_t data =3D 0; \ + static gen_helper_gvec_3_ptr * const fns[2] =3D { \ + gen_helper_##HELPER##_h, \ + gen_helper_##HELPER##_w, \ + }; \ + gen_set_rm_chkfrm(s, FRM); \ + \ + data =3D FIELD_DP32(data, VDATA, VM, a->vm); \ + data =3D FIELD_DP32(data, VDATA, LMUL, s->lmul); \ + data =3D FIELD_DP32(data, VDATA, VTA, s->vta); \ + data =3D FIELD_DP32(data, VDATA, VMA, s->vma); \ + tcg_gen_gvec_3_ptr(vreg_ofs(s, a->rd), vreg_ofs(s, 0), \ + vreg_ofs(s, a->rs2), tcg_env, \ + s->cfg_ptr->vlenb, \ + s->cfg_ptr->vlenb, data, \ + fns[s->sew - 1]); \ + finalize_rvv_inst(s); \ + return true; \ + } \ + return false; \ +} + +#define GEN_OPFV_WIDEN_BFA_TRANS(NAME, CHECK, HELPER, FRM, BFA_HELPER) \ +static bool trans_##NAME(DisasContext *s, arg_rmr *a) \ +{ \ + if (CHECK(s, a, MO_16)) { \ + uint32_t data =3D 0; \ + static gen_helper_gvec_3_ptr * const fns[2] =3D { \ + gen_helper_##HELPER##_h, \ + gen_helper_##HELPER##_w, \ + }; \ + gen_set_rm_chkfrm(s, FRM); \ + \ + data =3D FIELD_DP32(data, VDATA, VM, a->vm); \ + data =3D FIELD_DP32(data, VDATA, LMUL, s->lmul); \ + data =3D FIELD_DP32(data, VDATA, VTA, s->vta); \ + data =3D FIELD_DP32(data, VDATA, VMA, s->vma); \ + tcg_gen_gvec_3_ptr(vreg_ofs(s, a->rd), vreg_ofs(s, 0), \ + vreg_ofs(s, a->rs2), tcg_env, \ + s->cfg_ptr->vlenb, \ + s->cfg_ptr->vlenb, data, \ + (s->altfmt ? gen_helper_##BFA_HELPER : \ + fns[s->sew - 1])); \ + finalize_rvv_inst(s); \ + return true; \ + } \ + return false; \ } =20 GEN_OPFV_WIDEN_TRANS(vfwcvt_xu_f_v, opxfv_widen_check, vfwcvt_xu_f_v, RISCV_FRM_DYN) GEN_OPFV_WIDEN_TRANS(vfwcvt_x_f_v, opxfv_widen_check, vfwcvt_x_f_v, RISCV_FRM_DYN) -GEN_OPFV_WIDEN_TRANS(vfwcvt_f_f_v, opffv_widen_check, vfwcvt_f_f_v, - RISCV_FRM_DYN) +GEN_OPFV_WIDEN_BFA_TRANS(vfwcvt_f_f_v, opffv_widen_check, vfwcvt_f_f_v, + RISCV_FRM_DYN, vfwcvtbf16_f_f_v) /* Reuse the helper functions from vfwcvt.xu.f.v and vfwcvt.x.f.v */ GEN_OPFV_WIDEN_TRANS(vfwcvt_rtz_xu_f_v, opxfv_widen_check, vfwcvt_xu_f_v, RISCV_FRM_RTZ) GEN_OPFV_WIDEN_TRANS(vfwcvt_rtz_x_f_v, opxfv_widen_check, vfwcvt_x_f_v, RISCV_FRM_RTZ) =20 -static bool opfxv_widen_check(DisasContext *s, arg_rmr *a) +static bool opfxv_widen_check(DisasContext *s, arg_rmr *a, + int8_t valid_bfa_vsew) { return require_rvv(s) && require_scale_rvf(s) && vext_check_isa_ill(s) && /* OPFV widening instructions ignore vs1 check */ - vext_check_ds(s, a->rd, a->rs2, a->vm); + vext_check_ds(s, a->rd, a->rs2, a->vm) && + vext_check_altfmt(s, valid_bfa_vsew); } =20 -#define GEN_OPFXV_WIDEN_TRANS(NAME) \ -static bool trans_##NAME(DisasContext *s, arg_rmr *a) \ -{ \ - if (opfxv_widen_check(s, a)) { \ - uint32_t data =3D 0; \ - static gen_helper_gvec_3_ptr * const fns[3] =3D { \ - gen_helper_##NAME##_b, \ - gen_helper_##NAME##_h, \ - gen_helper_##NAME##_w, \ - }; \ - gen_set_rm(s, RISCV_FRM_DYN); \ - \ - data =3D FIELD_DP32(data, VDATA, VM, a->vm); \ - data =3D FIELD_DP32(data, VDATA, LMUL, s->lmul); \ - data =3D FIELD_DP32(data, VDATA, VTA, s->vta); \ - data =3D FIELD_DP32(data, VDATA, VMA, s->vma); \ - tcg_gen_gvec_3_ptr(vreg_ofs(s, a->rd), vreg_ofs(s, 0), \ - vreg_ofs(s, a->rs2), tcg_env, \ - s->cfg_ptr->vlenb, \ - s->cfg_ptr->vlenb, data, \ - fns[s->sew]); \ - finalize_rvv_inst(s); \ - return true; \ - } \ - return false; \ +#define GEN_OPFXV_WIDEN_BFA_TRANS(NAME) \ +static bool trans_##NAME(DisasContext *s, arg_rmr *a) \ +{ \ + if (opfxv_widen_check(s, a, MO_8)) { \ + uint32_t data =3D 0; \ + static gen_helper_gvec_3_ptr * const fns[3] =3D { \ + gen_helper_##NAME##_b, \ + gen_helper_##NAME##_h, \ + gen_helper_##NAME##_w \ + }; \ + gen_set_rm(s, RISCV_FRM_DYN); \ + \ + data =3D FIELD_DP32(data, VDATA, VM, a->vm); \ + data =3D FIELD_DP32(data, VDATA, LMUL, s->lmul); \ + data =3D FIELD_DP32(data, VDATA, VTA, s->vta); \ + data =3D FIELD_DP32(data, VDATA, VMA, s->vma); \ + tcg_gen_gvec_3_ptr(vreg_ofs(s, a->rd), vreg_ofs(s, 0), \ + vreg_ofs(s, a->rs2), tcg_env, \ + s->cfg_ptr->vlenb, \ + s->cfg_ptr->vlenb, data, \ + (s->altfmt ? gen_helper_##NAME##_b_bf16 : \ + fns[s->sew])); \ + finalize_rvv_inst(s); \ + return true; \ + } \ + return false; \ } =20 -GEN_OPFXV_WIDEN_TRANS(vfwcvt_f_xu_v) -GEN_OPFXV_WIDEN_TRANS(vfwcvt_f_x_v) +GEN_OPFXV_WIDEN_BFA_TRANS(vfwcvt_f_xu_v) +GEN_OPFXV_WIDEN_BFA_TRANS(vfwcvt_f_x_v) =20 /* Narrowing Floating-Point/Integer Type-Convert Instructions */ =20 @@ -2939,104 +3122,140 @@ static bool opfv_narrow_check(DisasContext *s, ar= g_rmr *a) vext_check_sd(s, a->rd, a->rs2, a->vm); } =20 -static bool opfxv_narrow_check(DisasContext *s, arg_rmr *a) +static bool opfxv_narrow_check(DisasContext *s, arg_rmr *a, + int8_t valid_bfa_vsew) { return opfv_narrow_check(s, a) && require_rvf(s) && - (s->sew !=3D MO_64); + (s->sew !=3D MO_64) && + vext_check_altfmt(s, valid_bfa_vsew); } =20 -static bool opffv_narrow_check(DisasContext *s, arg_rmr *a) +static bool opffv_narrow_check(DisasContext *s, arg_rmr *a, + int8_t valid_bfa_vsew) { return opfv_narrow_check(s, a) && require_rvfmin(s) && - require_scale_rvfmin(s); + require_scale_rvfmin(s) && + vext_check_altfmt(s, valid_bfa_vsew); } =20 -static bool opffv_rod_narrow_check(DisasContext *s, arg_rmr *a) +static bool opffv_rod_narrow_check(DisasContext *s, arg_rmr *a, + int8_t valid_bfa_vsew) { return opfv_narrow_check(s, a) && require_rvf(s) && - require_scale_rvf(s); -} - -#define GEN_OPFV_NARROW_TRANS(NAME, CHECK, HELPER, FRM) \ -static bool trans_##NAME(DisasContext *s, arg_rmr *a) \ -{ \ - if (CHECK(s, a)) { \ - uint32_t data =3D 0; \ - static gen_helper_gvec_3_ptr * const fns[2] =3D { \ - gen_helper_##HELPER##_h, \ - gen_helper_##HELPER##_w, \ - }; \ - gen_set_rm_chkfrm(s, FRM); \ - \ - data =3D FIELD_DP32(data, VDATA, VM, a->vm); \ - data =3D FIELD_DP32(data, VDATA, LMUL, s->lmul); \ - data =3D FIELD_DP32(data, VDATA, VTA, s->vta); \ - data =3D FIELD_DP32(data, VDATA, VMA, s->vma); \ - tcg_gen_gvec_3_ptr(vreg_ofs(s, a->rd), vreg_ofs(s, 0), \ - vreg_ofs(s, a->rs2), tcg_env, \ - s->cfg_ptr->vlenb, \ - s->cfg_ptr->vlenb, data, \ - fns[s->sew - 1]); \ - finalize_rvv_inst(s); \ - return true; \ - } \ - return false; \ + require_scale_rvf(s) && + vext_check_altfmt(s, valid_bfa_vsew); +} + +#define GEN_OPFV_NARROW_TRANS(NAME, CHECK, HELPER, FRM) \ +static bool trans_##NAME(DisasContext *s, arg_rmr *a) \ +{ \ + if (CHECK(s, a, -1)) { \ + uint32_t data =3D 0; \ + static gen_helper_gvec_3_ptr * const fns[2] =3D { \ + gen_helper_##HELPER##_h, \ + gen_helper_##HELPER##_w, \ + }; \ + gen_set_rm_chkfrm(s, FRM); \ + \ + data =3D FIELD_DP32(data, VDATA, VM, a->vm); \ + data =3D FIELD_DP32(data, VDATA, LMUL, s->lmul); \ + data =3D FIELD_DP32(data, VDATA, VTA, s->vta); \ + data =3D FIELD_DP32(data, VDATA, VMA, s->vma); \ + tcg_gen_gvec_3_ptr(vreg_ofs(s, a->rd), vreg_ofs(s, 0), \ + vreg_ofs(s, a->rs2), tcg_env, \ + s->cfg_ptr->vlenb, \ + s->cfg_ptr->vlenb, data, \ + fns[s->sew - 1]); \ + finalize_rvv_inst(s); \ + return true; \ + } \ + return false; \ +} + +#define GEN_OPFV_NARROW_BFA_TRANS(NAME, CHECK, HELPER, FRM, BFA_HELPER) \ +static bool trans_##NAME(DisasContext *s, arg_rmr *a) \ +{ \ + if (CHECK(s, a, MO_16)) { \ + uint32_t data =3D 0; \ + static gen_helper_gvec_3_ptr * const fns[2] =3D { \ + gen_helper_##HELPER##_h, \ + gen_helper_##HELPER##_w, \ + }; \ + gen_set_rm_chkfrm(s, FRM); \ + \ + data =3D FIELD_DP32(data, VDATA, VM, a->vm); \ + data =3D FIELD_DP32(data, VDATA, LMUL, s->lmul); \ + data =3D FIELD_DP32(data, VDATA, VTA, s->vta); \ + data =3D FIELD_DP32(data, VDATA, VMA, s->vma); \ + tcg_gen_gvec_3_ptr(vreg_ofs(s, a->rd), vreg_ofs(s, 0), \ + vreg_ofs(s, a->rs2), tcg_env, \ + s->cfg_ptr->vlenb, \ + s->cfg_ptr->vlenb, data, \ + (s->altfmt ? gen_helper_##BFA_HELPER : \ + fns[s->sew - 1])); \ + finalize_rvv_inst(s); \ + return true; \ + } \ + return false; \ } =20 GEN_OPFV_NARROW_TRANS(vfncvt_f_xu_w, opfxv_narrow_check, vfncvt_f_xu_w, RISCV_FRM_DYN) GEN_OPFV_NARROW_TRANS(vfncvt_f_x_w, opfxv_narrow_check, vfncvt_f_x_w, RISCV_FRM_DYN) -GEN_OPFV_NARROW_TRANS(vfncvt_f_f_w, opffv_narrow_check, vfncvt_f_f_w, - RISCV_FRM_DYN) +GEN_OPFV_NARROW_BFA_TRANS(vfncvt_f_f_w, opffv_narrow_check, vfncvt_f_f_w, + RISCV_FRM_DYN, vfncvtbf16_f_f_w) /* Reuse the helper function from vfncvt.f.f.w */ -GEN_OPFV_NARROW_TRANS(vfncvt_rod_f_f_w, opffv_rod_narrow_check, vfncvt_f_f= _w, - RISCV_FRM_ROD) +GEN_OPFV_NARROW_BFA_TRANS(vfncvt_rod_f_f_w, opffv_rod_narrow_check, + vfncvt_f_f_w, RISCV_FRM_ROD, vfncvtbf16_f_f_w) =20 -static bool opxfv_narrow_check(DisasContext *s, arg_rmr *a) +static bool opxfv_narrow_check(DisasContext *s, arg_rmr *a, + int8_t valid_bfa_vsew) { return require_rvv(s) && require_scale_rvf(s) && vext_check_isa_ill(s) && /* OPFV narrowing instructions ignore vs1 check */ - vext_check_sd(s, a->rd, a->rs2, a->vm); + vext_check_sd(s, a->rd, a->rs2, a->vm) && + vext_check_altfmt(s, valid_bfa_vsew); } =20 -#define GEN_OPXFV_NARROW_TRANS(NAME, HELPER, FRM) \ -static bool trans_##NAME(DisasContext *s, arg_rmr *a) \ -{ \ - if (opxfv_narrow_check(s, a)) { \ - uint32_t data =3D 0; \ - static gen_helper_gvec_3_ptr * const fns[3] =3D { \ - gen_helper_##HELPER##_b, \ - gen_helper_##HELPER##_h, \ - gen_helper_##HELPER##_w, \ - }; \ - gen_set_rm_chkfrm(s, FRM); \ - \ - data =3D FIELD_DP32(data, VDATA, VM, a->vm); \ - data =3D FIELD_DP32(data, VDATA, LMUL, s->lmul); \ - data =3D FIELD_DP32(data, VDATA, VTA, s->vta); \ - data =3D FIELD_DP32(data, VDATA, VMA, s->vma); \ - tcg_gen_gvec_3_ptr(vreg_ofs(s, a->rd), vreg_ofs(s, 0), \ - vreg_ofs(s, a->rs2), tcg_env, \ - s->cfg_ptr->vlenb, \ - s->cfg_ptr->vlenb, data, \ - fns[s->sew]); \ - finalize_rvv_inst(s); \ - return true; \ - } \ - return false; \ +#define GEN_OPXFV_NARROW_BFA_TRANS(NAME, HELPER, FRM) \ +static bool trans_##NAME(DisasContext *s, arg_rmr *a) \ +{ \ + if (opxfv_narrow_check(s, a, MO_8)) { \ + uint32_t data =3D 0; \ + static gen_helper_gvec_3_ptr * const fns[3] =3D { \ + gen_helper_##HELPER##_b, \ + gen_helper_##HELPER##_h, \ + gen_helper_##HELPER##_w \ + }; \ + gen_set_rm_chkfrm(s, FRM); \ + \ + data =3D FIELD_DP32(data, VDATA, VM, a->vm); \ + data =3D FIELD_DP32(data, VDATA, LMUL, s->lmul); \ + data =3D FIELD_DP32(data, VDATA, VTA, s->vta); \ + data =3D FIELD_DP32(data, VDATA, VMA, s->vma); \ + tcg_gen_gvec_3_ptr(vreg_ofs(s, a->rd), vreg_ofs(s, 0), \ + vreg_ofs(s, a->rs2), tcg_env, \ + s->cfg_ptr->vlenb, \ + s->cfg_ptr->vlenb, data, \ + (s->altfmt ? gen_helper_##HELPER##_b_bf16 : \ + fns[s->sew])); \ + finalize_rvv_inst(s); \ + return true; \ + } \ + return false; \ } =20 -GEN_OPXFV_NARROW_TRANS(vfncvt_xu_f_w, vfncvt_xu_f_w, RISCV_FRM_DYN) -GEN_OPXFV_NARROW_TRANS(vfncvt_x_f_w, vfncvt_x_f_w, RISCV_FRM_DYN) +GEN_OPXFV_NARROW_BFA_TRANS(vfncvt_xu_f_w, vfncvt_xu_f_w, RISCV_FRM_DYN) +GEN_OPXFV_NARROW_BFA_TRANS(vfncvt_x_f_w, vfncvt_x_f_w, RISCV_FRM_DYN) /* Reuse the helper functions from vfncvt.xu.f.w and vfncvt.x.f.w */ -GEN_OPXFV_NARROW_TRANS(vfncvt_rtz_xu_f_w, vfncvt_xu_f_w, RISCV_FRM_RTZ) -GEN_OPXFV_NARROW_TRANS(vfncvt_rtz_x_f_w, vfncvt_x_f_w, RISCV_FRM_RTZ) +GEN_OPXFV_NARROW_BFA_TRANS(vfncvt_rtz_xu_f_w, vfncvt_xu_f_w, RISCV_FRM_RTZ) +GEN_OPXFV_NARROW_BFA_TRANS(vfncvt_rtz_x_f_w, vfncvt_x_f_w, RISCV_FRM_RTZ) =20 /* *** Vector Reduction Operations @@ -3069,10 +3288,12 @@ GEN_OPIVV_WIDEN_TRANS(vwredsum_vs, reduction_widen_= check) GEN_OPIVV_WIDEN_TRANS(vwredsumu_vs, reduction_widen_check) =20 /* Vector Single-Width Floating-Point Reduction Instructions */ -static bool freduction_check(DisasContext *s, arg_rmrr *a) +static bool freduction_check(DisasContext *s, arg_rmrr *a, + int8_t valid_bfa_vsew) { return reduction_check(s, a) && - require_rvf(s); + require_rvf(s) && + vext_check_altfmt(s, valid_bfa_vsew); } =20 GEN_OPFVV_TRANS(vfredusum_vs, freduction_check) @@ -3081,11 +3302,13 @@ GEN_OPFVV_TRANS(vfredmax_vs, freduction_check) GEN_OPFVV_TRANS(vfredmin_vs, freduction_check) =20 /* Vector Widening Floating-Point Reduction Instructions */ -static bool freduction_widen_check(DisasContext *s, arg_rmrr *a) +static bool freduction_widen_check(DisasContext *s, arg_rmrr *a, + int8_t valid_bfa_vsew) { return reduction_widen_check(s, a) && require_rvf(s) && - require_scale_rvf(s); + require_scale_rvf(s) && + vext_check_altfmt(s, valid_bfa_vsew); } =20 GEN_OPFVV_WIDEN_TRANS(vfwredusum_vs, freduction_widen_check) @@ -3500,7 +3723,8 @@ static bool trans_vfmv_s_f(DisasContext *s, arg_vfmv_= s_f *a) { if (require_rvv(s) && require_rvf(s) && - vext_check_isa_ill(s)) { + vext_check_isa_ill(s) && + vext_check_altfmt(s, MO_16)) { gen_set_rm(s, RISCV_FRM_DYN); =20 /* The instructions ignore LMUL and vector register group. */ @@ -3594,20 +3818,24 @@ GEN_OPIVX_VSLIDE1_TRANS(vslide1up_vx, slideup_check) GEN_OPIVX_VSLIDE1_TRANS(vslide1down_vx, slidedown_check) =20 /* Vector Floating-Point Slide Instructions */ -static bool fslideup_check(DisasContext *s, arg_rmrr *a) +static bool fslideup_check(DisasContext *s, arg_rmrr *a, + int8_t valid_bfa_vsew) { return slideup_check(s, a) && - require_rvf(s); + require_rvf(s) && + vext_check_altfmt(s, valid_bfa_vsew); } =20 -static bool fslidedown_check(DisasContext *s, arg_rmrr *a) +static bool fslidedown_check(DisasContext *s, arg_rmrr *a, + int8_t valid_bfa_vsew) { return slidedown_check(s, a) && - require_rvf(s); + require_rvf(s) && + vext_check_altfmt(s, valid_bfa_vsew); } =20 -GEN_OPFVF_TRANS(vfslide1up_vf, fslideup_check) -GEN_OPFVF_TRANS(vfslide1down_vf, fslidedown_check) +GEN_OPFVF_BFA_TRANS(vfslide1up_vf, fslideup_check, vfslide1up_vf_h) +GEN_OPFVF_BFA_TRANS(vfslide1down_vf, fslidedown_check, vfslide1down_vf_h) =20 /* Vector Register Gather Instruction */ static bool vrgather_vv_check(DisasContext *s, arg_rmrr *a) --=20 2.53.0 From nobody Sat May 30 19:23:38 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1777438631; cv=none; d=zohomail.com; s=zohoarc; b=ZMTaK5DUB8BWVf+nqqK0fT7QuDE3PS30ZUijHu7HPaOlAkIZIlwTWQrvTBElC6raDDGjqT+wVr59iY+/sGUkFNAafNqQwYXQdwUCCBPLc9rIoWH1eR06I+VqiDGQ7oW5ZmczWw3w47eaE6T7MYVIrKhdOsU3MOgXaHO53VALPz8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777438631; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=P7NijtvIiB2ZasvjtDivO4iYHDUMYwjPUlmz4qY1Tio=; b=SlkA+Yz3ArZfmGs9WxlrjAGKRJ/Za3T/7Z61gqqLQUASY68DLQ79Lii0epeJgW+5sT/QejZu/jGvNnAYj6oQblUOf+rGksABxwq6z4EfGB5l74KNonHmVeD4dOy1LeQGvj9UvN+F6M5FK4+uhtUvRWljvJnRdROV1IPBXDdWQrw= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1777438631678285.2594197975161; Tue, 28 Apr 2026 21:57:11 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wHwtg-0008V5-Mq; Wed, 29 Apr 2026 00:51:40 -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 1wHwtC-0007Uc-QE for qemu-devel@nongnu.org; Wed, 29 Apr 2026 00:51:12 -0400 Received: from mail-pl1-x62c.google.com ([2607:f8b0:4864:20::62c]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wHwtA-0000sg-Gw for qemu-devel@nongnu.org; Wed, 29 Apr 2026 00:51:10 -0400 Received: by mail-pl1-x62c.google.com with SMTP id d9443c01a7336-2b299b3c739so56411445ad.3 for ; Tue, 28 Apr 2026 21:51:08 -0700 (PDT) Received: from toolbx.alistair23.me ([2403:581e:fdf9:0:6209:4521:6813:45b7]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2b988772ae8sm7756145ad.7.2026.04.28.21.51.02 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 28 Apr 2026 21:51:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1777438267; x=1778043067; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=P7NijtvIiB2ZasvjtDivO4iYHDUMYwjPUlmz4qY1Tio=; b=d7DQcC4DQH7/fulK3qAeNN9hbF0n3nXUOOQOJ1RXM/4/Q8RzvzErpcQtjzLqReyGdq Yl1D1RpZpRMmr5lq7isjjiQPFZIf8Dz0dvJPnYWbLfrGdi+4CaIH91B1VmZMZKgXA6xC 0ZS41MW5QyjTuwiC6d08fD7WzQZ5qFJVRpGLTiXarnPfVKi2NZ0X3VwD2mrbrCNz8Dyc AGf+uITAG5bmeSK7xBkRMgy4qLkaBsAM3vlYEVLEVdz7SLyE8hpAuM/YnuY/J3bQFTEK wcF8o/ZVCyOXK6HA+w0Ob9ca88vkIxuy3ZBVMW65tvG60UgV2P5It8SiBG3wnfKTsqpS v6vA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777438267; x=1778043067; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=P7NijtvIiB2ZasvjtDivO4iYHDUMYwjPUlmz4qY1Tio=; b=BtuFyzYif6kwNHZ0xpngtcGpYaIPAFMwm74ihGel0qdDWSgOgXLxiKnItUdCKMdRb1 4fSTDVK+iRMGuD9xakQs/HR0cAxoPDxUNKfTeVx/JvgzjWL4WbCx02+hSF1+u3nQFjY+ Y63VSlBfBoIQIMAkLL18ClOQNxqp+8QueWKZZtZ+jowAhygRzBPfUMWWtfFLI31KGMHy paxFDyADiKqwFDP1rKnR37rWT3RNXhQbvO9Jb1vveiOTtJ6uvW6SiuCOMy4gjG9AcHVX UU8gESklYHX3R5JI4DBYOhGh86FDnrN8MRiAZ/Pl1APF8Liq4ugKTfJFPSEENhSUsp/1 vsEQ== X-Forwarded-Encrypted: i=1; AFNElJ8w6cD68/2mRoqZq/6OeFTyF7qPcT6gSVYrGvRfGLzx75FadXNAEiJDWsRxt641FPQAGtRiD4vQS/4R@nongnu.org X-Gm-Message-State: AOJu0YwEf02/9pZTSRqZzavPaYgfB7TO8CqbIMnJ8/aJx4oyVF68gP0x qCRj/Um0yaEviR4BR3CyD2aqDXS3V7NP7/k9pC+XWV5Uj5GDezHx/k0P X-Gm-Gg: AeBDietcRWr3a9YbL3uJc7g8nybNTLRJwwm6+YUPS0EEf0xiYvbo/fT1xza7oNHAtdR 52Vz+BjXaK9jwll8sMSA3kqYr3LeOzYOOZA+sCec/lHDxNh1DVLIC8MF4YUc8RPrO7cFx5EXQpU t+VJDxm6K6f0dOnjCD9L3lcQCXHwxKnNQah+OAqviZhbOiod8TteQxan+lEQaEpFDpwZVo/gVYj FeYWjV0JEfuH32ofH0UMmAkv4QW2VBOcejZsmrV8h4qfwgD1+zoapsbf/uEUdsySIRDVYWbtYDT gIOUwLv43C27PQZ0ngtsSKDNUB4dUzhorG8Au9r9Qx4fog6OdlifyO8XkM2pQLsqCxTml3VTEjs WwHmpT+KVS0w15oCsHcA37Qzw74fvpyYurTVh+XefGa89TUGuMyGIxfE0A+LfZX7CfwxyQmqk+z ptDBrQAIWs0xe/FXKzAN4S3P7Zp7xwFXMOjfN6XYb9XeRFq58+9Bw4 X-Received: by 2002:a17:902:c2cf:b0:2b0:af2f:b27a with SMTP id d9443c01a7336-2b97c40059dmr41202745ad.11.1777438266921; Tue, 28 Apr 2026 21:51:06 -0700 (PDT) From: alistair23@gmail.com X-Google-Original-From: alistair.francis@wdc.com To: palmer@dabbelt.com, liwei1518@gmail.com, daniel.barboza@oss.qualcomm.com, zhiwei_liu@linux.alibaba.com, chao.liu.zevorn@gmail.com, qemu-riscv@nongnu.org, qemu-devel@nongnu.org Cc: alistair23@gmail.com, Max Chou , Alistair Francis Subject: [PULL 35/51] target/riscv: Expose Zvfbfa extension as a cpu property Date: Wed, 29 Apr 2026 14:47:36 +1000 Message-ID: <20260429044752.4176397-36-alistair.francis@wdc.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260429044752.4176397-1-alistair.francis@wdc.com> References: <20260429044752.4176397-1-alistair.francis@wdc.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::62c; envelope-from=alistair23@gmail.com; helo=mail-pl1-x62c.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.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, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1777438633259154100 Content-Type: text/plain; charset="utf-8" From: Max Chou Reviewed-by: Daniel Henrique Barboza Reviewed-by: Chao Liu Signed-off-by: Max Chou Message-ID: <20260402125234.1371897-10-max.chou@sifive.com> Signed-off-by: Alistair Francis --- target/riscv/cpu.c | 1 + 1 file changed, 1 insertion(+) diff --git a/target/riscv/cpu.c b/target/riscv/cpu.c index bbab96385b..38286b6b40 100644 --- a/target/riscv/cpu.c +++ b/target/riscv/cpu.c @@ -1266,6 +1266,7 @@ const RISCVCPUMultiExtConfig riscv_cpu_extensions[] = =3D { MULTI_EXT_CFG_BOOL("zve64f", ext_zve64f, false), MULTI_EXT_CFG_BOOL("zve64d", ext_zve64d, false), MULTI_EXT_CFG_BOOL("zve64x", ext_zve64x, false), + MULTI_EXT_CFG_BOOL("zvfbfa", ext_zvfbfa, false), MULTI_EXT_CFG_BOOL("zvfbfmin", ext_zvfbfmin, false), MULTI_EXT_CFG_BOOL("zvfbfwma", ext_zvfbfwma, false), MULTI_EXT_CFG_BOOL("zvfh", ext_zvfh, false), --=20 2.53.0 From nobody Sat May 30 19:23:38 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1777438472; cv=none; d=zohomail.com; s=zohoarc; b=X+od9WQAeEs5FPIEiib3dMfNUoRi/2PUyxzBPgQszT588qz/nU4hLbSuyJOqWNUTsC8yGI4y+3VGrMpK3JekTddwAoHm6+IueD5bbwGF2o4epa93/W85cR2ktXUT/CLwZI2CsJaCxcinsbDXpKwCyqCdMS++5O/yEO05QOuCF+Q= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777438472; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=Ef1rMVpVBp+rw2rikkviwoFRO0mK/WpG+jCM+MhO/3k=; b=gSH2DJnDmi3K8ICv+LnOQYbS1lASbrWMKXbokgBB6dB7TSL5RunoZ/sIAmJDdeOUu0VWdEAHNQliquiC9Gt/GThn/x4xPls8gnxsD6bBBzEht/3cXoeg8mnii+YyuEFk/hl1yPbF6HVg8UyXHRGJCq/ruaXCxH//QbzqTpC9TUw= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1777438472036761.1014430321825; Tue, 28 Apr 2026 21:54:32 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wHwte-0008CU-8e; Wed, 29 Apr 2026 00:51: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 1wHwtH-0007gG-Qz for qemu-devel@nongnu.org; Wed, 29 Apr 2026 00:51:16 -0400 Received: from mail-pg1-x535.google.com ([2607:f8b0:4864:20::535]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wHwtG-0000xE-5h for qemu-devel@nongnu.org; Wed, 29 Apr 2026 00:51:15 -0400 Received: by mail-pg1-x535.google.com with SMTP id 41be03b00d2f7-c76bde70ec9so4924084a12.2 for ; Tue, 28 Apr 2026 21:51:12 -0700 (PDT) Received: from toolbx.alistair23.me ([2403:581e:fdf9:0:6209:4521:6813:45b7]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2b988772ae8sm7756145ad.7.2026.04.28.21.51.07 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 28 Apr 2026 21:51:11 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1777438272; x=1778043072; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=Ef1rMVpVBp+rw2rikkviwoFRO0mK/WpG+jCM+MhO/3k=; b=GMV8BAXxmOD5D6NOpWOPDsBSqM72hDupdo83IettYBLw7d/fAcQSuo2yKZ4Z1kYtfz l91ov1knUQkD33Ngg6sPnYwLfJSxMkK96P9bt2j1qdFwuku3YcysIdAwDyJVr8l2TkTP inUEq0Hn7H0ppdzyj42xzqngxQB87JcQrBLFvy9xHRjhbYygrjE/JAOKVJdRMIv7MttY aPVh3f5TxlHAWb+hsQK2FHCiQ8KV9cyJ5lTF9WdYf3V38MQ6wwtc56EG2CkvAgu9bQeW e20fS6xsOj7ftCHi7NdftsM7KkGmDEjcDmjRO590ZvHDQq+89H8yWcHSv+gYNeeZNkmb WnRw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777438272; x=1778043072; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=Ef1rMVpVBp+rw2rikkviwoFRO0mK/WpG+jCM+MhO/3k=; b=YAmbOOwHmqQm6dQOrq6CTapId9tXlz8+P2B2bVlGWb3wy1yWSH1znNQEOTUj0eou51 Z0p3+cIZa1Yh9Lb4JTpSMRGhfSdlZHfGbOUJFsvBKtkbAe3ugmoVIne27WLEXisY1Ozl stwKUC8pItUoVr1dpl8W5RniS+0eyLOekTnlGupIpML0+diuKJ5iB4dMMJZR1+k4yvrW 9xD6E6PwmJ2tkYlUuPqK2LtGUrEkgpN1BReYYZ8plaKOTrsg2JgWhfVwjk2s47qolEHH 68vCWfrESGKqDoXS5WqYSYwronap5dw2G2KaOHf2nrq7CvmGXsy0D4K4OFaVzwu+HqKt SJvQ== X-Forwarded-Encrypted: i=1; AFNElJ//1s8fOiI03+IU2e0ewOypWmQ/nbhtLdsoC+LwVRMz8eSW+OB6y3O9UAwQawRwNQtw/nqfQP92jhFX@nongnu.org X-Gm-Message-State: AOJu0YxqGkPeoGzOoCf7JRwgkzWi4y7slPLym04nmjNsSgX0gR5Zv+l2 rm25jpLr6gENXnmy8+taxyzyT+86hd23j2f5xfsL5lN0gEjLn2lcs+7DRdQRQA== X-Gm-Gg: AeBDievYy4kG6VhcVyW7ibwwBIk8vwZ2P4FRv96c/Fmm1aSrTgIV7B+VlWkR0DcMlmD 1LFlIBHYxfxavjLo2HpcQo6oEOhoIz02TKz8CP+QaF1pC7eVyJABF4YiTrf2UUB4oa+gGJhlg1y SwS+hZan6AX3aJbw4wQ+dqX7GMytygw6gBoymIYIhHulCkRCJUneB8WCHIHOJXcvo4nlp4MsAg5 qbok5G9EluSisFNCnJRiZ8Ynq6MDHX2wLXI+naDjSHtAy8ere+eary9L9zzdWTr5vYhlvYyhj+9 /VB60A08cNNHcvaCD4pj2NoepcfxriPds11B26CAo/OlDb5n/4uIC/dFjpL0+ApzRipYUZZ/kFC 0BinjHJyXYxG8fwQqrn5aXz7LDkKc8bJZRvadaoiHjvgVcHJ8wJsfALkT6JoAMYFB5FhksT3C9B wdhLETkQ50PotGr4w7CxMYAsSAcqd2k5EW9mnKqAA3pAUL0KOkAHzQ X-Received: by 2002:a17:903:2ed0:b0:2ae:cb0e:fd59 with SMTP id d9443c01a7336-2b97c4120bdmr60186075ad.8.1777438271678; Tue, 28 Apr 2026 21:51:11 -0700 (PDT) From: alistair23@gmail.com X-Google-Original-From: alistair.francis@wdc.com To: palmer@dabbelt.com, liwei1518@gmail.com, daniel.barboza@oss.qualcomm.com, zhiwei_liu@linux.alibaba.com, chao.liu.zevorn@gmail.com, qemu-riscv@nongnu.org, qemu-devel@nongnu.org Cc: alistair23@gmail.com, Anton Blanchard , Alistair Francis Subject: [PULL 36/51] target/riscv: rvv: Allow fractional LMUL on vector SHA instructions Date: Wed, 29 Apr 2026 14:47:37 +1000 Message-ID: <20260429044752.4176397-37-alistair.francis@wdc.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260429044752.4176397-1-alistair.francis@wdc.com> References: <20260429044752.4176397-1-alistair.francis@wdc.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::535; envelope-from=alistair23@gmail.com; helo=mail-pg1-x535.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.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, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1777438474177158500 Content-Type: text/plain; charset="utf-8" From: Anton Blanchard Vector SHA instructions incorrectly raise an illegal instruction exception when LMUL < 1. The ISA only states that LMUL*VLEN >=3D EGW: For element-group instructions, LMUL*VLEN must always be at least as large as EGW, otherwise an illegal-instruction exception is raised, even if vl=3D0. There is already a check for this: MAXSZ(s) >=3D egw_bytes so just remove the check for a fractional LMUL. Signed-off-by: Anton Blanchard Reviewed-by: Daniel Henrique Barboza Message-ID: <20260104233724.192886-1-antonb@tenstorrent.com> Signed-off-by: Alistair Francis --- target/riscv/insn_trans/trans_rvvk.c.inc | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/target/riscv/insn_trans/trans_rvvk.c.inc b/target/riscv/insn_t= rans/trans_rvvk.c.inc index 27bf3f0b68..32255d3aa0 100644 --- a/target/riscv/insn_trans/trans_rvvk.c.inc +++ b/target/riscv/insn_trans/trans_rvvk.c.inc @@ -426,8 +426,7 @@ static bool vsha_check(DisasContext *s, arg_rmrr *a) vsha_check_sew(s) && MAXSZ(s) >=3D egw_bytes && !is_overlapped(a->rd, mult, a->rs1, mult) && - !is_overlapped(a->rd, mult, a->rs2, mult) && - s->lmul >=3D 0; + !is_overlapped(a->rd, mult, a->rs2, mult); } =20 GEN_VV_UNMASKED_TRANS(vsha2ms_vv, vsha_check, ZVKNH_EGS) --=20 2.53.0 From nobody Sat May 30 19:23:38 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1777438523; cv=none; d=zohomail.com; s=zohoarc; b=Y/dIqxNazmQufeQijTsW2Ser1IfJ9CeGpYck0a2JeLETe3vZVNESFSK10lcSUl4hCWch3t5Os9R4+li17n/EmSQ7mdDcEElmD/9B2hgM1bSqM4ktmSq88yHkgssLBdQ6UAe9OONduTwautq0SUftsy6kcI9uPW1UXhQDKdTqgdw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777438523; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=8NhJMkgzUcZIas6wdwAWbF8laZLoVF+8isiydmPP7fI=; b=c8pgHAa+s3unC6rjCwf5KDUByjJOU+WgkaAE5l86Y++P69XxDb4u04E0N3ZXQVNIMFhCGF+UyHsGsVvc4H5XAoHrHxvA5/3VT4NhzjNHsTiDco1FjXWERNq1ZUbP0AWu7i4m/Y0fAGVYt+eO6WaCKUVOT8/FAX5yYzOcwk0YIqw= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1777438523963429.09541113860234; Tue, 28 Apr 2026 21:55:23 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wHwtd-00082l-32; Wed, 29 Apr 2026 00:51:37 -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 1wHwtL-0007iq-NG for qemu-devel@nongnu.org; Wed, 29 Apr 2026 00:51:20 -0400 Received: from mail-pl1-x631.google.com ([2607:f8b0:4864:20::631]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wHwtK-0000y5-6q for qemu-devel@nongnu.org; Wed, 29 Apr 2026 00:51:19 -0400 Received: by mail-pl1-x631.google.com with SMTP id d9443c01a7336-2ab46931cf1so3131105ad.0 for ; Tue, 28 Apr 2026 21:51:17 -0700 (PDT) Received: from toolbx.alistair23.me ([2403:581e:fdf9:0:6209:4521:6813:45b7]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2b988772ae8sm7756145ad.7.2026.04.28.21.51.12 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 28 Apr 2026 21:51:16 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1777438277; x=1778043077; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=8NhJMkgzUcZIas6wdwAWbF8laZLoVF+8isiydmPP7fI=; b=eu0bVTnIesdbxr8uCRAnjNgTSu+7+78sb6TNvgHRVHmDdQKHdzmnP3GFQV7MmZzNJG F2GmTS/6rgk3tWtR8iX5WrNwX/DPhXn4J+iFU19sW1STP9fn2ApIoWK/wIRu3/yr1MGU /H98KCkutacO8IRXyAbON6ASuVK76dTQfFWJECRzzj57ouRivIKojYR4bQ0xlbjG3v8j 8xBSqWeKrmfNy3UPgR39CQcdy4Xs/UYYLbCOaP36BVz6xNZbTeVKGRGYymGUG5EjKZVY Ix4OrhMq3f9r76I4hyvMOGqVZiw5g9Bs27qmx9sL9TkIxCki7hasiWQOUM9wuy/tFelD 7saw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777438277; x=1778043077; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=8NhJMkgzUcZIas6wdwAWbF8laZLoVF+8isiydmPP7fI=; b=OY4uqIF3k2LsdHCZHAS2Tx2KULYltp8jmU/OXMXwjsRk4nQPO+kczuaSo8KeGH3Jcd k2bSdBNBe+3dS+3Zv1FCcvZoPyPA3MZSuqAktyOZDgLXPq4qpsiOVtAyrsYdOaiX8MrF gClCSr618qI74OjjVfonXD430GfoLkiLcgRyZGM7w0mkbibvzH3mDcn6wnmAf5oTVee6 +wbynVl1w1CIOAa/pHvpMJ8nZkzx+Si9yL5KV1W5PY36bsKfFBjjZbwkq/QwTuayfn9S Ht7G/HMKkcog1y6a6CdRI3sfZDlxr9M/46F0JZwnbCl3lQNeYi7uun451/NwmmyAPceM qpGw== X-Forwarded-Encrypted: i=1; AFNElJ+HAVnzt91XVj/4QZOksR2ARF2AwnB77wUZ1Bc4CN/fZVVkaUdU7ODuXMKAvpsMkXT9HV1NeMFnfZpY@nongnu.org X-Gm-Message-State: AOJu0YxCwVS5yBCd+jOewfiwTtLuF0WKpswd5O1WIzrG4gqkhKijwrPo OtOoOnUp6bY6FV5W6Ueee74w3BS5FhIMxh4CoD+JSuSw1IQ8DNLIzO2UkWoXsw== X-Gm-Gg: AeBDieu1pRMx4goyxWsdUF/F5j9+F3Qd2k+0VA1oEHrU+JZWVth/W2ufe0n0RCV4Jl6 6BOLCzs+2EoyC2iTWsf5XFk2NPV9iVmXAgszTmX4U0qQgmqpTtBgUT+Cs2UxL4rXdZ8MM6Bi4SH oLYGEOaoWeD51G7e4bCaCbRyHmHTWthAln1+PHHxzfZl1jGYFUhKulT4ZtOv4yDwMmWGizhPf/J NhE8a83UVsFoDmgltX3kYRftro4T1i/zlUqE1n/xcEl8WXEPbWSR/iwHi5soTguYpvdfTZmoYYG bqTRt+Prp2/imig5XcgHV+b+Y2giCuRkoAMANd8WnUgCg3f1S+OSopwgcVCPsF9nIvZ4S2Ql4aI lIEldKBxOuUq8KJhJoXgiHCBptAEX0YRIIxrlu4xwjo50hi5uD4O1ixxhBwzGwsmGB7iegK2NHn 8JcecUboQ0vm+VYLrghvQ7Fy+JeN6sd3f2xogudQAv415RG3iLRrre X-Received: by 2002:a17:903:1988:b0:2ae:5ab4:f4c0 with SMTP id d9443c01a7336-2b988433716mr12975595ad.13.1777438276785; Tue, 28 Apr 2026 21:51:16 -0700 (PDT) From: alistair23@gmail.com X-Google-Original-From: alistair.francis@wdc.com To: palmer@dabbelt.com, liwei1518@gmail.com, daniel.barboza@oss.qualcomm.com, zhiwei_liu@linux.alibaba.com, chao.liu.zevorn@gmail.com, qemu-riscv@nongnu.org, qemu-devel@nongnu.org Cc: alistair23@gmail.com, Joel Stanley , Michael Ellerman , Alistair Francis Subject: [PULL 37/51] target/riscv: tt-ascalon: Add Tenstorrent mvendorid Date: Wed, 29 Apr 2026 14:47:38 +1000 Message-ID: <20260429044752.4176397-38-alistair.francis@wdc.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260429044752.4176397-1-alistair.francis@wdc.com> References: <20260429044752.4176397-1-alistair.francis@wdc.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::631; envelope-from=alistair23@gmail.com; helo=mail-pl1-x631.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.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, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1777438524236158500 Content-Type: text/plain; charset="utf-8" From: Joel Stanley JEP106 has two vendor IDs for Tenstorrent. We will use Bank 16, company 33: ((16 - 1) << 7) | 33 =3D 0x7a1 As JEP106 requires registration to download, the number can confirmed by looking at the OpenOCD sources[1]. Alternatively, referring to the JEDEC document the hex IDs are listed with = the parity (MSB) bit added. Company 33 has hex 0xa1: ((16 - 1) << 7) | (0xa1 & ~0x80) =3D 0x7a1 Add it to the Ascalon CPU definition as the mvendorid CSR. [1] https://github.com/openocd-org/openocd/blob/1ebff3ab33c77e3f8fb4e1ddda2= 62b606b572af1/src/helper/jep106.inc#L1935 Signed-off-by: Joel Stanley Reviewed-by: Daniel Henrique Barboza Reviewed-by: Michael Ellerman Message-ID: <20260114020516.982305-1-joel@jms.id.au> Signed-off-by: Alistair Francis --- target/riscv/cpu_vendorid.h | 2 ++ target/riscv/cpu.c | 2 ++ 2 files changed, 4 insertions(+) diff --git a/target/riscv/cpu_vendorid.h b/target/riscv/cpu_vendorid.h index f1ffc66542..751a13aace 100644 --- a/target/riscv/cpu_vendorid.h +++ b/target/riscv/cpu_vendorid.h @@ -8,4 +8,6 @@ #define VEYRON_V1_MIMPID 0x111 #define VEYRON_V1_MVENDORID 0x61f =20 +#define TENSTORRENT_VENDOR_ID 0x7a1 + #endif /* TARGET_RISCV_CPU_VENDORID_H */ diff --git a/target/riscv/cpu.c b/target/riscv/cpu.c index 38286b6b40..72c6f4f0f1 100644 --- a/target/riscv/cpu.c +++ b/target/riscv/cpu.c @@ -3207,6 +3207,8 @@ static const TypeInfo riscv_cpu_type_infos[] =3D { .cfg.ext_svnapot =3D true, .cfg.ext_svpbmt =3D true, =20 + .cfg.mvendorid =3D TENSTORRENT_VENDOR_ID, + .cfg.max_satp_mode =3D VM_1_10_SV57, ), =20 --=20 2.53.0 From nobody Sat May 30 19:23:38 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1777438681; cv=none; d=zohomail.com; s=zohoarc; b=juXWY9Ne1R0k5TrMtAHIE6kCqovPdNUtuoY6O+QRDZBE/d0qi04obHKw0eg+HPSEI+TALnN+zNAW8OwchPoJyXR4HQV4xtLkyRhZSAst2BeJAmSK4jyI9Jcf+MtADnWYCvrnx9jOh4ypEN9HvHwcS/xGYtlae89elICpzATKT0s= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777438681; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=BVgwDWm2FZQ7Ipuxdrbl93wK7S5fAE7/3PcrEqAAO2o=; b=khy+QHBtazTFyDACJmkTduxiFDVPqtsoV0C3KTHRH3M65PrUtEdT/F3n/zjqxN1xOleedX1QvCyupP7355ba+EvW+7avCuPwK9UZNoBK6MqP+jLAKClt/hnI3G7nT7GGO6/F+ZICCvHw3JN0EIXJdFtJk2j/cGDbXvt0Z/GeVZ0= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1777438681690460.12426956067; Tue, 28 Apr 2026 21:58:01 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wHwtj-0000Ob-EP; Wed, 29 Apr 2026 00:51:43 -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 1wHwtR-0007lg-IG for qemu-devel@nongnu.org; Wed, 29 Apr 2026 00:51:29 -0400 Received: from mail-pj1-x102f.google.com ([2607:f8b0:4864:20::102f]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wHwtQ-0000yt-0Q for qemu-devel@nongnu.org; Wed, 29 Apr 2026 00:51:25 -0400 Received: by mail-pj1-x102f.google.com with SMTP id 98e67ed59e1d1-35d95017a68so8206827a91.3 for ; Tue, 28 Apr 2026 21:51:22 -0700 (PDT) Received: from toolbx.alistair23.me ([2403:581e:fdf9:0:6209:4521:6813:45b7]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2b988772ae8sm7756145ad.7.2026.04.28.21.51.17 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 28 Apr 2026 21:51:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1777438282; x=1778043082; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=BVgwDWm2FZQ7Ipuxdrbl93wK7S5fAE7/3PcrEqAAO2o=; b=QWs/jQ78Ywx/Kli2AA/3T1QYNVfeNAqivt+OsdP5XS2TTOoZjTK2PHE58Oe6kKMo6q YVClmw5/VH0E3KCJSaHfbv/LtVNfOh5bOyG249h9O4K7+gWTv6Jf4ooiQi380iIVFL/J scIvEUIlCg3sFfJOzoxQ8vxa9ZMu/rXXcfeu2bZB03E1UIGTEiNVSgrpuIDSsZoorqTB hRmbFaN0qH0YSgWZvtFdSgeveARY2ocWNjmjNnp9Vg09spdTlsk6dBqQsAMz775WzV4L 7shYSPegV3kR02Eq14BdC2PXn9xxuOrlXg0XU8pi9sQltG2qT+6aghXZjfsnroo3hlyu Ycew== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777438282; x=1778043082; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=BVgwDWm2FZQ7Ipuxdrbl93wK7S5fAE7/3PcrEqAAO2o=; b=RspWd9FjOQTk+JMcGbVPmobS1hObPeesxjIRZo5GvAWxUSudTGX/y0L+UBTEvx7luT 1LZ+gRPLUaSXDcd5JRDpBldCFvpYmIrFO5igledFd8L6DGCTV36Ri3GiZDIKzr4fYWVi lKt4+7nKEZJ545e6spG7HiwhPtZIV6YL5LRJ18nsfBp8+bBBm/deugsAHwMzVkiiXzVy 8hJOwfJXytaQ9C8C0f8OqiZedopBhJFDgO8n5GK1QARxjRB+mJApGEWr4QJUZpwtLKiK en73saxl8k139EKpF8FTB5yhzDFBgoG2vp4uL/eudBq2dkUMj6D++A9cWR5t36VCXOP0 UP+A== X-Forwarded-Encrypted: i=1; AFNElJ/g8UvlXPhLPikadyKYJakZ+bObZMIa/6BJoJu7cZKHHIxjXcWEDV94n10aGrrnGgG4vkr9kOndoR7h@nongnu.org X-Gm-Message-State: AOJu0Yw09XUugnPYHbUZ7xySMeMOhC7wTOrYsmqs2A8m5Zl+FOnaRv6t oXDzOz0pXS/wVG3FJ0Amzq/xcRViTfR70HxSmEcpCETyXayUKz+dWDj9 X-Gm-Gg: AeBDieuU6D14XYJfSNVzbBRf4tKckVTBftxbeRp8/YgMhD6dtQLEZC2EbPTMTbMz1E+ ElCZYfEnk06i4ruetV2Lh8HCOjgQK48q2n1idBQpqBKjcZ7ioieGFgc3iel6zl4auIYFz3SIhGq 4cLI2i0wz2qqiUzV5ZSw4IvqbmF4R1mL5P84xdMpBK4aXhfN9UWr7IJpsFiuI5Ef6ikkychZ9CQ 14SuBIFierRwEI3bLluBwY7UE2vD8aspC476QibVv607+o5yvMwhYRjPd5gWO7RMbTlDhXYKttN BCZzZeHTK4YoUtjhhJl+obvXj4wCciCe+vCZv3a0/EnrrOVjz5463M0EwMIy8P5qKLPnY3LkN9K wb6OjPeg54GXchBUZlBTxNU8HOj9iMZdD8zsR1/Uq5BI00cdsao/FlYTMeKSDet+65m77aE9S2H AN791QbC9U/HOgDuq/4V6h4xD9SSThvxY1QOkHzyRFxTdPaOGueG3L X-Received: by 2002:a17:90b:2885:b0:35e:5723:85e3 with SMTP id 98e67ed59e1d1-36491fb9afdmr6220062a91.9.1777438281806; Tue, 28 Apr 2026 21:51:21 -0700 (PDT) From: alistair23@gmail.com X-Google-Original-From: alistair.francis@wdc.com To: palmer@dabbelt.com, liwei1518@gmail.com, daniel.barboza@oss.qualcomm.com, zhiwei_liu@linux.alibaba.com, chao.liu.zevorn@gmail.com, qemu-riscv@nongnu.org, qemu-devel@nongnu.org Cc: alistair23@gmail.com, Nicholas Piggin , Joel Stanley , Alistair Francis Subject: [PULL 38/51] hw/riscv/boot: Warn if a ELF format file is loaded as a binary Date: Wed, 29 Apr 2026 14:47:39 +1000 Message-ID: <20260429044752.4176397-39-alistair.francis@wdc.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260429044752.4176397-1-alistair.francis@wdc.com> References: <20260429044752.4176397-1-alistair.francis@wdc.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::102f; envelope-from=alistair23@gmail.com; helo=mail-pj1-x102f.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.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, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1777438682812158500 Content-Type: text/plain; charset="utf-8" From: Nicholas Piggin It is possible that an ELF file can not be loaded, in that case the loader falls back to loading the file as a binary blob. Print a warning in this case because it is likely that it is not intended. Signed-off-by: Nicholas Piggin Reviewed-by: Daniel Henrique Barboza Signed-off-by: Joel Stanley Reviewed-by: Alistair Francis Message-ID: <20260415064838.652297-4-joel@jms.id.au> Signed-off-by: Alistair Francis --- hw/riscv/boot.c | 23 +++++++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/hw/riscv/boot.c b/hw/riscv/boot.c index e5490beda0..9086793b7a 100644 --- a/hw/riscv/boot.c +++ b/hw/riscv/boot.c @@ -163,13 +163,27 @@ hwaddr riscv_load_firmware(const char *firmware_filen= ame, =20 g_assert(firmware_filename !=3D NULL); =20 - if (load_elf_ram_sym(firmware_filename, NULL, NULL, NULL, - &firmware_entry, NULL, &firmware_end, NULL, - 0, EM_RISCV, 1, 0, NULL, true, sym_cb) > 0) { + firmware_size =3D load_elf_ram_sym(firmware_filename, NULL, NULL, NULL, + &firmware_entry, NULL, &firmware_end, + NULL, 0, EM_RISCV, 1, 0, NULL, false, + sym_cb); + if (firmware_size > 0) { *firmware_load_addr =3D firmware_entry; return firmware_end; } =20 + if (firmware_size !=3D ELF_LOAD_NOT_ELF) { + /* + * If the user specified an ELF format firmware that could not be + * loaded as an ELF, it's possible that loading it as a binary is + * not what was intended. + */ + warn_report("could not load ELF format firmware '%s' (%s). " + "Attempting to load as binary.", + firmware_filename, + load_elf_strerror(firmware_size)); + } + firmware_size =3D load_image_targphys_as(firmware_filename, *firmware_load_addr, current_machine->ram_size, NULL, @@ -179,7 +193,8 @@ hwaddr riscv_load_firmware(const char *firmware_filenam= e, return *firmware_load_addr + firmware_size; } =20 - error_report("could not load firmware '%s'", firmware_filename); + error_report("could not load firmware '%s': %s", firmware_filename, + load_elf_strerror(firmware_size)); exit(1); } =20 --=20 2.53.0 From nobody Sat May 30 19:23:38 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1777438335; cv=none; d=zohomail.com; s=zohoarc; b=evsR1wT4HTJlinBxfqWB62ALPFGOpLANwMO7ShfopK4KSc2z27Ir3NtqjrCzXA0nypQ/uNw/K1ZTz/t0b9jE6cUIGw9UMPvdfVOeTVOKrYr3oO0bnnxStePQtfB8bfnQFa8PQ9unAHpkl4702B1n+8m5DCSQbzSOWqXA5QTM8Uk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777438335; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=YPyTNiL1ojeRuEHyY4Guho9lr/cm4Zx8gYkYg9AMqhc=; b=K/Nmrb4xbLqfyPYYniOsqgUPvzQ3soA6U4lM1EwNdAdI0q1xcTuOhLZI4Wi5eMxeU115fS9NYiFvf+PuzeTEyg8FlRdMm8US5DUQeqySN17gq46hhEjqvmwJjkN8nboJG2bn5BPk51g588BxDieq1FCxq6bT99TzT6OBD6RKOBk= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1777438335461908.2167016005081; Tue, 28 Apr 2026 21:52:15 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wHwte-0008HE-Tk; Wed, 29 Apr 2026 00:51: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 1wHwtX-0007pF-SJ for qemu-devel@nongnu.org; Wed, 29 Apr 2026 00:51:35 -0400 Received: from mail-pl1-x62c.google.com ([2607:f8b0:4864:20::62c]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wHwtV-0000zY-Mp for qemu-devel@nongnu.org; Wed, 29 Apr 2026 00:51:31 -0400 Received: by mail-pl1-x62c.google.com with SMTP id d9443c01a7336-2ad9f316d68so53647335ad.2 for ; Tue, 28 Apr 2026 21:51:27 -0700 (PDT) Received: from toolbx.alistair23.me ([2403:581e:fdf9:0:6209:4521:6813:45b7]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2b988772ae8sm7756145ad.7.2026.04.28.21.51.22 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 28 Apr 2026 21:51:26 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1777438287; x=1778043087; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=YPyTNiL1ojeRuEHyY4Guho9lr/cm4Zx8gYkYg9AMqhc=; b=nWpBmHzEXyxAWOV8EgwOAx2LLyc7qmAQjoKM2r6AKxyN9In9udZ0zdO7tqOkzr1ric oKcDGt+4UE1ECQ4wcgNLf4GeW9DqEEPoJEd/tAIZqUyoRIWTABYpOBFmATtHGRQi1F7Q N1JQ89AU0IfJdP0SdWkh+7bsYDKQ2GbWMydifg74nWnmOsOn8RKwBFLgMb6d2Hxp5AWn 2DNlguFZcB9BsQgPVs1xu01P1BBu3I0L4o2HGeLiGaj41/IA+tFehmvRvV46txuu73+5 m7UI+WO9X8MdS50mHzCmx3TU0Ae5+0T6VPFvlee18OfMaSQYYwLF9ilqBT7c185goLv2 fXaQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777438287; x=1778043087; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=YPyTNiL1ojeRuEHyY4Guho9lr/cm4Zx8gYkYg9AMqhc=; b=MP8CK+25rhgh/WXfEjr81Ef9f3LdbERGZvhpCqUwEpABVut/jXI3nSEXi8GHa8rd0t scZfFp9AfzIrIjgAehl0sQgatM6nZN921iD7UFLK/KPf7u5syzq96COqsZa/t/0aE/2j aM3EU90EfibKU3l7L+BTYUR8xmkO3YtHA0YbTDqHOEAF1ZDvPyl5lD7ZyxnvfJKzEda3 +n3/AmHubmI9QLGvvj89+BXfFO+dswrnNu09c2P1BUxevHUI9/Dq5LPJt83dpc/GzC3N 5o+jj/bpC9m0/7S4DqaxtidQ14lNMNb8mFrtQIJyQv48mRHQbrGVf5wXv/E/L3fRVYmJ kx6Q== X-Forwarded-Encrypted: i=1; AFNElJ/nD493LjCiS9KI2V9iyH9kRPmFflr+14coAE2aSRpj0gUeRT85D7i0TS4GAfo7Got9tNC0fNJej+Qv@nongnu.org X-Gm-Message-State: AOJu0YwrnpPZZMpr6vwbzROq2yajVDNQTmWMuPp4cPzU2ZUrmNwx42pH uAk8t+waUk06brbPfPwwzRznU5rJOe5xoJJ26t3NmpJvTCaBE3CKXv9/ X-Gm-Gg: AeBDiesQcr9cvc875aLtCyLeAxP2Z0l29T2J1NNzo8DisaKZL9gDqfIwzdZSO3RYQml y1210U5Qed5TC8l2Vec9uAtV4Y9nNDtLwe4GV2Ep8DAMOxI+nWYfoII3OoJy+DyPZIDVxs4vQJm SHgLoTdsAUYd9v3WLMtNK+AcbANifsVMgvSVOlgT/cfVzyvkWcJX+Yy2qJwXRbjJIAv1gua8vE+ 2nzYSgyq8Jon8fe+R5hFNayovNsTkcnrEUwQPy47rkmRkbSPmwPZmEVxisgd6UInA64ZjlugIPH UytC8uW+IrqEVw0PakibWl07d6aCS0ipoErrMuVQbsgcbUId7hdh9FHXPGSo+JP2093AGkh6i6T w6RE8yqRR/meZ46Kq4MfMYsKOxjJau5cBOtWedxlBGXLHusovTPgGTDSGyjfkrJCqLqbTaB0KtS KJPnLAeC7MLr23M7BBSEosRaXu90vpk6MCfuEApjRGMoBtoHUXNJOZ X-Received: by 2002:a17:903:1a2b:b0:2b0:9101:1b77 with SMTP id d9443c01a7336-2b987391b1bmr23101075ad.17.1777438286621; Tue, 28 Apr 2026 21:51:26 -0700 (PDT) From: alistair23@gmail.com X-Google-Original-From: alistair.francis@wdc.com To: palmer@dabbelt.com, liwei1518@gmail.com, daniel.barboza@oss.qualcomm.com, zhiwei_liu@linux.alibaba.com, chao.liu.zevorn@gmail.com, qemu-riscv@nongnu.org, qemu-devel@nongnu.org Cc: alistair23@gmail.com, Bruno Sa , Alistair Francis Subject: [PULL 39/51] target/riscv: fix RV32 stateen CSR handling Date: Wed, 29 Apr 2026 14:47:40 +1000 Message-ID: <20260429044752.4176397-40-alistair.francis@wdc.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260429044752.4176397-1-alistair.francis@wdc.com> References: <20260429044752.4176397-1-alistair.francis@wdc.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::62c; envelope-from=alistair23@gmail.com; helo=mail-pl1-x62c.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.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, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1777438335709158500 Content-Type: text/plain; charset="utf-8" From: Bruno Sa The RV32 stateen CSRs are split between the low-half CSR and the corresponding xH CSR, but the current implementation still handles some upper-half bits through the low-half write paths and also accepts the xH CSRs on RV64. Fix this by: - rejecting mstateen*h and hstateen*h accesses on RV64 - keeping the RV64-only writable bits in the low-half write paths - handling the RV32 upper-half writable bits in write_mstateen0h() and write_hstateen0h() - dropping unsupported writable bits from write_sstateen0() Signed-off-by: Bruno Sa Message-ID: <20260410110928.1014170-1-bruno.vilaca.sa@gmail.com> Reviewed-by: Alistair Francis Signed-off-by: Alistair Francis --- target/riscv/csr.c | 117 ++++++++++++++++++++++++++++++++------------- 1 file changed, 83 insertions(+), 34 deletions(-) diff --git a/target/riscv/csr.c b/target/riscv/csr.c index cfd076b368..80727aa81e 100644 --- a/target/riscv/csr.c +++ b/target/riscv/csr.c @@ -502,6 +502,15 @@ static RISCVException mstateen(CPURISCVState *env, int= csrno) return any(env, csrno); } =20 +static RISCVException mstateen_32(CPURISCVState *env, int csrno) +{ + if (riscv_cpu_mxl(env) !=3D MXL_RV32) { + return RISCV_EXCP_ILLEGAL_INST; + } + + return mstateen(env, csrno); +} + static RISCVException hstateen_pred(CPURISCVState *env, int csrno, int bas= e) { if (!riscv_cpu_cfg(env)->ext_smstateen) { @@ -533,6 +542,10 @@ static RISCVException hstateen(CPURISCVState *env, int= csrno) =20 static RISCVException hstateenh(CPURISCVState *env, int csrno) { + if (riscv_cpu_mxl(env) !=3D MXL_RV32) { + return RISCV_EXCP_ILLEGAL_INST; + } + return hstateen_pred(env, csrno, CSR_HSTATEEN0H); } =20 @@ -3447,25 +3460,29 @@ static RISCVException write_mstateen0(CPURISCVState= *env, int csrno, wr_mask |=3D SMSTATEEN0_FCSR; } =20 - if (env->priv_ver >=3D PRIV_VERSION_1_13_0) { - wr_mask |=3D SMSTATEEN0_P1P13; - } + if (riscv_cpu_mxl(env) =3D=3D MXL_RV64) { + if (env->priv_ver >=3D PRIV_VERSION_1_13_0) { + wr_mask |=3D SMSTATEEN0_P1P13; + } =20 - if (riscv_cpu_cfg(env)->ext_smaia || riscv_cpu_cfg(env)->ext_smcsrind)= { - wr_mask |=3D SMSTATEEN0_SVSLCT; - } + if (riscv_cpu_cfg(env)->ext_smaia || + riscv_cpu_cfg(env)->ext_smcsrind) { + wr_mask |=3D SMSTATEEN0_SVSLCT; + } =20 - /* - * As per the AIA specification, SMSTATEEN0_IMSIC is valid only if IMS= IC is - * implemented. However, that information is with MachineState and we = can't - * figure that out in csr.c. Just enable if Smaia is available. - */ - if (riscv_cpu_cfg(env)->ext_smaia) { - wr_mask |=3D (SMSTATEEN0_AIA | SMSTATEEN0_IMSIC); - } + /* + * As per the AIA specification, SMSTATEEN0_IMSIC is valid + * only if IMSIC is implemented. However, that information is + * with MachineState and we can't figure that out in csr.c. + * Just enable if Smaia is available. + */ + if (riscv_cpu_cfg(env)->ext_smaia) { + wr_mask |=3D (SMSTATEEN0_AIA | SMSTATEEN0_IMSIC); + } =20 - if (riscv_cpu_cfg(env)->ext_ssctr) { - wr_mask |=3D SMSTATEEN0_CTR; + if (riscv_cpu_cfg(env)->ext_ssctr) { + wr_mask |=3D SMSTATEEN0_CTR; + } } =20 return write_mstateen(env, csrno, wr_mask, new_val); @@ -3507,6 +3524,20 @@ static RISCVException write_mstateen0h(CPURISCVState= *env, int csrno, wr_mask |=3D SMSTATEEN0_P1P13; } =20 + if (riscv_cpu_cfg(env)->ext_smaia || riscv_cpu_cfg(env)->ext_smcsrind)= { + wr_mask |=3D SMSTATEEN0_SVSLCT; + } + + /* + * As per the AIA specification, SMSTATEEN0_IMSIC is valid only if + * IMSIC is implemented. However, that information is with + * MachineState and we can't figure that out in csr.c. Just enable + * if Smaia is available. + */ + if (riscv_cpu_cfg(env)->ext_smaia) { + wr_mask |=3D (SMSTATEEN0_AIA | SMSTATEEN0_IMSIC); + } + if (riscv_cpu_cfg(env)->ext_ssctr) { wr_mask |=3D SMSTATEEN0_CTR; } @@ -3552,21 +3583,25 @@ static RISCVException write_hstateen0(CPURISCVState= *env, int csrno, wr_mask |=3D SMSTATEEN0_FCSR; } =20 - if (riscv_cpu_cfg(env)->ext_ssaia || riscv_cpu_cfg(env)->ext_sscsrind)= { - wr_mask |=3D SMSTATEEN0_SVSLCT; - } + if (riscv_cpu_mxl(env) =3D=3D MXL_RV64) { + if (riscv_cpu_cfg(env)->ext_ssaia || + riscv_cpu_cfg(env)->ext_sscsrind) { + wr_mask |=3D SMSTATEEN0_SVSLCT; + } =20 - /* - * As per the AIA specification, SMSTATEEN0_IMSIC is valid only if IMS= IC is - * implemented. However, that information is with MachineState and we = can't - * figure that out in csr.c. Just enable if Ssaia is available. - */ - if (riscv_cpu_cfg(env)->ext_ssaia) { - wr_mask |=3D (SMSTATEEN0_AIA | SMSTATEEN0_IMSIC); - } + /* + * As per the AIA specification, SMSTATEEN0_IMSIC is valid + * only if IMSIC is implemented. However, that information is + * with MachineState and we can't figure that out in csr.c. + * Just enable if Ssaia is available. + */ + if (riscv_cpu_cfg(env)->ext_ssaia) { + wr_mask |=3D (SMSTATEEN0_AIA | SMSTATEEN0_IMSIC); + } =20 - if (riscv_cpu_cfg(env)->ext_ssctr) { - wr_mask |=3D SMSTATEEN0_CTR; + if (riscv_cpu_cfg(env)->ext_ssctr) { + wr_mask |=3D SMSTATEEN0_CTR; + } } =20 return write_hstateen(env, csrno, wr_mask, new_val); @@ -3608,6 +3643,20 @@ static RISCVException write_hstateen0h(CPURISCVState= *env, int csrno, { uint64_t wr_mask =3D SMSTATEEN_STATEEN | SMSTATEEN0_HSENVCFG; =20 + if (riscv_cpu_cfg(env)->ext_ssaia || riscv_cpu_cfg(env)->ext_sscsrind)= { + wr_mask |=3D SMSTATEEN0_SVSLCT; + } + + /* + * As per the AIA specification, SMSTATEEN0_IMSIC is valid only if + * IMSIC is implemented. However, that information is with + * MachineState and we can't figure that out in csr.c. Just enable + * if Ssaia is available. + */ + if (riscv_cpu_cfg(env)->ext_ssaia) { + wr_mask |=3D (SMSTATEEN0_AIA | SMSTATEEN0_IMSIC); + } + if (riscv_cpu_cfg(env)->ext_ssctr) { wr_mask |=3D SMSTATEEN0_CTR; } @@ -3657,7 +3706,7 @@ static RISCVException write_sstateen(CPURISCVState *e= nv, int csrno, static RISCVException write_sstateen0(CPURISCVState *env, int csrno, target_ulong new_val, uintptr_t ra) { - uint64_t wr_mask =3D SMSTATEEN_STATEEN | SMSTATEEN0_HSENVCFG; + uint64_t wr_mask =3D 0; =20 if (!riscv_has_ext(env, RVF)) { wr_mask |=3D SMSTATEEN0_FCSR; @@ -5937,25 +5986,25 @@ riscv_csr_operations csr_ops[CSR_TABLE_SIZE] =3D { /* Smstateen extension CSRs */ [CSR_MSTATEEN0] =3D { "mstateen0", mstateen, read_mstateen, write_msta= teen0, .min_priv_ver =3D PRIV_VERSION_1_12_0 }, - [CSR_MSTATEEN0H] =3D { "mstateen0h", mstateen, read_mstateenh, + [CSR_MSTATEEN0H] =3D { "mstateen0h", mstateen_32, read_mstateenh, write_mstateen0h, .min_priv_ver =3D PRIV_VERSION_1_12_0 }, [CSR_MSTATEEN1] =3D { "mstateen1", mstateen, read_mstateen, write_mstateen_1_3, .min_priv_ver =3D PRIV_VERSION_1_12_0 }, - [CSR_MSTATEEN1H] =3D { "mstateen1h", mstateen, read_mstateenh, + [CSR_MSTATEEN1H] =3D { "mstateen1h", mstateen_32, read_mstateenh, write_mstateenh_1_3, .min_priv_ver =3D PRIV_VERSION_1_12_0 }, [CSR_MSTATEEN2] =3D { "mstateen2", mstateen, read_mstateen, write_mstateen_1_3, .min_priv_ver =3D PRIV_VERSION_1_12_0 }, - [CSR_MSTATEEN2H] =3D { "mstateen2h", mstateen, read_mstateenh, + [CSR_MSTATEEN2H] =3D { "mstateen2h", mstateen_32, read_mstateenh, write_mstateenh_1_3, .min_priv_ver =3D PRIV_VERSION_1_12_0 }, [CSR_MSTATEEN3] =3D { "mstateen3", mstateen, read_mstateen, write_mstateen_1_3, .min_priv_ver =3D PRIV_VERSION_1_12_0 }, - [CSR_MSTATEEN3H] =3D { "mstateen3h", mstateen, read_mstateenh, + [CSR_MSTATEEN3H] =3D { "mstateen3h", mstateen_32, read_mstateenh, write_mstateenh_1_3, .min_priv_ver =3D PRIV_VERSION_1_12_0 }, [CSR_HSTATEEN0] =3D { "hstateen0", hstateen, read_hstateen, write_hsta= teen0, --=20 2.53.0 From nobody Sat May 30 19:23:38 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1777438825; cv=none; d=zohomail.com; s=zohoarc; b=boIVsIkuj4RyySnOJPdMPVXwdN5PJK8fEwOviUnr2wzPzO8d+ZKurVuEWxJ9MnbtNSbVgftZQXllWkj1z5xfNubPpYCQHhPWe/f32KRyh2GNj6L8gOnLw6jLPChLjWYox/ffy6brVKHbUbZTGLMZD7k9luVeRQk77VOOGIYu6yU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777438825; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=KFx2dAGT4WMIbJyRWvsN+yaaSACktQl5+DAxcc8Afmg=; b=jf0bfIkesziuikUdEDsKJHZyGIOT9hb1KD8JOUQBXB9eZrxL+MlaOrBMHn0vTOBpQIwy08lqCsC5xRi3/nChaYf0od+CYY4otJhi657PaDw8jywlxOrtOJBu8i5JH199oRwRMH7OFNBfwjeIlW6omPw2WTncqiGA/vY/gkg8uBo= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1777438825044916.2205901979414; Tue, 28 Apr 2026 22:00:25 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wHwtu-0000h2-Jw; Wed, 29 Apr 2026 00:51:54 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wHwtf-0008O8-JO for qemu-devel@nongnu.org; Wed, 29 Apr 2026 00:51:39 -0400 Received: from mail-pl1-x629.google.com ([2607:f8b0:4864:20::629]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wHwtZ-00010G-LT for qemu-devel@nongnu.org; Wed, 29 Apr 2026 00:51:39 -0400 Received: by mail-pl1-x629.google.com with SMTP id d9443c01a7336-2aae146b604so81329175ad.3 for ; Tue, 28 Apr 2026 21:51:33 -0700 (PDT) Received: from toolbx.alistair23.me ([2403:581e:fdf9:0:6209:4521:6813:45b7]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2b988772ae8sm7756145ad.7.2026.04.28.21.51.27 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 28 Apr 2026 21:51:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1777438292; x=1778043092; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=KFx2dAGT4WMIbJyRWvsN+yaaSACktQl5+DAxcc8Afmg=; b=CTnpq7OMAHG2ehAFpzELGM2MPP7l4gV4m3HSSOmXMLhHx+borqZX1ICFhWMuxWg6Sp ri6Uuonp+tetIhM6jsQGakS2AbyDO+/i1EsmMrUQ/gQCTYbfBDsF1PB9+7tWkd7WGpuL q/Ylkvzy47+2xf6LepAUcRE4A/oG6j5VpFGz3+OaVZiv5aKf3vAFwBTxPXT4zW0m4qeE gu44bsc5oMyEEzL5cD8YD/6dcTUaRqIug2rotQp/+vhbrdFG41C8fUhNEIATDgLYPZYt hnf7ilQmirooWucP/TUf6/+x1rvipCnzKsfGLOnFC02FaKbt8GmsIY3EBJJa2eII74KA 4gMA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777438292; x=1778043092; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=KFx2dAGT4WMIbJyRWvsN+yaaSACktQl5+DAxcc8Afmg=; b=eTVFdKke3xEyzqvUeFvCRmIOUL8eHMHG2C5hzFI44hKmqv1zPa2UccKj0URXRU7aOZ xuTt6HeQZcYad/cOoxQpJyDUATx06m5fEt4fvqcx+4uZXiqy+wEbwKfvmhSgRrPZh8ez QZZ1EYullHXdvDWRz4YmXZwshV0zzsWuTa9t5oluYP7z4iqE8J3vhul6szD3wAGnjWjd 0U46NjnkXxw7hDeOaJdC1QOiCl8yzuWzFUS77rBy7fydp8mtK0jVG92VRsAQWh31isDU NgwUJWojQchXJ6TG9h8UD05L5JQva/RT9Qklct2L0JrQMFnw+k8TEgSDUJ3Kjwp03+xz J7Fg== X-Forwarded-Encrypted: i=1; AFNElJ+s69zxZ3JR4ZYckfVSzk8s+VXt6fQiRLV2/c9L3lBisOYOI2GpVDbUBpYe3erApNWaO44hUKiE86c6@nongnu.org X-Gm-Message-State: AOJu0YwSZOWOTQCE/ZkA0uYB0dmEURlgblbUqL3Q/ZpyGp85b0tDLbWX Z4ORFIzVVt4VOMhTs/QOPsT1tIQCkSLoxr/IO0qjtqPDLuVo6f3la/Sz X-Gm-Gg: AeBDiev0TAwmwWj6v47T7SBtc9oLHbXAzYt3AYF1AoKVfMgQfPzY1Um5dZ8B2GvNFpx wmPCQN13WZRC0VhzojNBO/Sm5OHj7wtCj9BWoi4PYbONWccyOAZ9RaaRACVqDC+ERuWsAnyEH8a q7buxjqaWYfdAkfemuh7Yrjd+MlhYi8lHKi54h+64RZDXZ0Qxd1PMZeOUt0IEqeIZX+qBs2/NYs O/FMZb+cCdD25Gpv5OfcJuM2d0t3Gc5hTJM1H4QjK5PdFDmfyHTEx/0zlf1uMhPN016i5+6C/Bh MmGQgEDbCqYFk1WWR0ABbDVfwRYyj/wFEZqQKhQuS2sbvn2IGJWtZfYmvGXvUrWWn8ZEL60fre7 mfbhjOEYsicdU0vGPQSIybnHQxD5sBCtDUevJzAyhOpV05zWkrPcEBJIRaCFSyXZmnOQLmqlxlW SxITbcHkF3L/3qj8CNtTqAyzv7hfMCu/7bk7wd2IX8+Rj1K5adU1p3 X-Received: by 2002:a17:902:ebca:b0:2b4:5931:bc4c with SMTP id d9443c01a7336-2b97c437ccdmr58540555ad.15.1777438292289; Tue, 28 Apr 2026 21:51:32 -0700 (PDT) From: alistair23@gmail.com X-Google-Original-From: alistair.francis@wdc.com To: palmer@dabbelt.com, liwei1518@gmail.com, daniel.barboza@oss.qualcomm.com, zhiwei_liu@linux.alibaba.com, chao.liu.zevorn@gmail.com, qemu-riscv@nongnu.org, qemu-devel@nongnu.org Cc: alistair23@gmail.com, Frank Chang , Max Chou , Nutty Liu , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Alistair Francis Subject: [PULL 40/51] target/riscv: Initialize riscv_excp_names[] and riscv_intr_names[] using designated initializer Date: Wed, 29 Apr 2026 14:47:41 +1000 Message-ID: <20260429044752.4176397-41-alistair.francis@wdc.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260429044752.4176397-1-alistair.francis@wdc.com> References: <20260429044752.4176397-1-alistair.francis@wdc.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::629; envelope-from=alistair23@gmail.com; helo=mail-pl1-x629.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.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, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable 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 @gmail.com) X-ZM-MESSAGEID: 1777438825590158500 From: Frank Chang Use designated initializers to initialize riscv_excp_names[] and riscv_intr_names[] so that we don't have to explicitly add "reserved" items. Also, add the missing trap names: sw_check, hw_error, virt_illegal_instruction, semihost, s_guest_external, and counter_overflow. Signed-off-by: Frank Chang Reviewed-by: Max Chou Reviewed-by: Daniel Henrique Barboza Reviewed-by: Nutty Liu Reviewed-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Alistair Francis Message-ID: <20260421071107.2848439-1-frank.chang@sifive.com> Signed-off-by: Alistair Francis --- target/riscv/cpu.c | 89 +++++++++++++++++++++++----------------------- 1 file changed, 45 insertions(+), 44 deletions(-) diff --git a/target/riscv/cpu.c b/target/riscv/cpu.c index 72c6f4f0f1..ce15a17c37 100644 --- a/target/riscv/cpu.c +++ b/target/riscv/cpu.c @@ -328,60 +328,61 @@ const char * const riscv_rvv_regnames[] =3D { }; =20 static const char * const riscv_excp_names[] =3D { - "misaligned_fetch", - "fault_fetch", - "illegal_instruction", - "breakpoint", - "misaligned_load", - "fault_load", - "misaligned_store", - "fault_store", - "user_ecall", - "supervisor_ecall", - "hypervisor_ecall", - "machine_ecall", - "exec_page_fault", - "load_page_fault", - "reserved", - "store_page_fault", - "double_trap", - "reserved", - "reserved", - "reserved", - "guest_exec_page_fault", - "guest_load_page_fault", - "reserved", - "guest_store_page_fault", + [RISCV_EXCP_INST_ADDR_MIS] =3D "misaligned_fetch", + [RISCV_EXCP_INST_ACCESS_FAULT] =3D "fault_fetch", + [RISCV_EXCP_ILLEGAL_INST] =3D "illegal_instruction", + [RISCV_EXCP_BREAKPOINT] =3D "breakpoint", + [RISCV_EXCP_LOAD_ADDR_MIS] =3D "misaligned_load", + [RISCV_EXCP_LOAD_ACCESS_FAULT] =3D "fault_load", + [RISCV_EXCP_STORE_AMO_ADDR_MIS] =3D "misaligned_store", + [RISCV_EXCP_STORE_AMO_ACCESS_FAULT] =3D "fault_store", + [RISCV_EXCP_U_ECALL] =3D "user_ecall", + [RISCV_EXCP_S_ECALL] =3D "supervisor_ecall", + [RISCV_EXCP_VS_ECALL] =3D "hypervisor_ecall", + [RISCV_EXCP_M_ECALL] =3D "machine_ecall", + [RISCV_EXCP_INST_PAGE_FAULT] =3D "exec_page_fault", + [RISCV_EXCP_LOAD_PAGE_FAULT] =3D "load_page_fault", + [RISCV_EXCP_STORE_PAGE_FAULT] =3D "store_page_fault", + [RISCV_EXCP_DOUBLE_TRAP] =3D "double_trap", + [RISCV_EXCP_SW_CHECK] =3D "sw_check", + [RISCV_EXCP_HW_ERR] =3D "hw_error", + [RISCV_EXCP_INST_GUEST_PAGE_FAULT] =3D "guest_exec_page_fault", + [RISCV_EXCP_LOAD_GUEST_ACCESS_FAULT] =3D "guest_load_page_fault", + [RISCV_EXCP_VIRT_INSTRUCTION_FAULT] =3D "virt_illegal_instruction", + [RISCV_EXCP_STORE_GUEST_AMO_ACCESS_FAULT] =3D "guest_store_page_fault", + [RISCV_EXCP_SEMIHOST] =3D "semihost", }; =20 static const char * const riscv_intr_names[] =3D { - "u_software", - "s_software", - "vs_software", - "m_software", - "u_timer", - "s_timer", - "vs_timer", - "m_timer", - "u_external", - "s_external", - "vs_external", - "m_external", - "reserved", - "reserved", - "reserved", - "reserved" + [IRQ_U_SOFT] =3D "u_software", + [IRQ_S_SOFT] =3D "s_software", + [IRQ_VS_SOFT] =3D "vs_software", + [IRQ_M_SOFT] =3D "m_software", + [IRQ_U_TIMER] =3D "u_timer", + [IRQ_S_TIMER] =3D "s_timer", + [IRQ_VS_TIMER] =3D "vs_timer", + [IRQ_M_TIMER] =3D "m_timer", + [IRQ_U_EXT] =3D "u_external", + [IRQ_S_EXT] =3D "s_external", + [IRQ_VS_EXT] =3D "vs_external", + [IRQ_M_EXT] =3D "m_external", + [IRQ_S_GEXT] =3D "s_guest_external", + [IRQ_PMU_OVF] =3D "counter_overflow", }; =20 const char *riscv_cpu_get_trap_name(target_ulong cause, bool async) { if (async) { - return (cause < ARRAY_SIZE(riscv_intr_names)) ? - riscv_intr_names[cause] : "(unknown)"; + if ((cause < ARRAY_SIZE(riscv_intr_names)) && riscv_intr_names[cau= se]) { + return riscv_intr_names[cause]; + } } else { - return (cause < ARRAY_SIZE(riscv_excp_names)) ? - riscv_excp_names[cause] : "(unknown)"; + if ((cause < ARRAY_SIZE(riscv_excp_names)) && riscv_excp_names[cau= se]) { + return riscv_excp_names[cause]; + } } + + return "(unknown)"; } =20 void riscv_cpu_set_misa_ext(CPURISCVState *env, uint32_t ext) --=20 2.53.0 From nobody Sat May 30 19:23:38 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1777438792; cv=none; d=zohomail.com; s=zohoarc; b=i9HWEXPLEf2XhMQqCE/ThBMcFTxH+ep9Gmg4QeN5wQisMfgyPzGueGq/O2u3f4tQXb2hG+SFix4IxmIQ6L/dOIqXPw3eLwd43NsLYhD+ZT24uxgB3GdVvjcWtM7QWKZqT09RaKNTiI6vVLhEeMZkepf4m+JyGSD5p4hea+Z+fmQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777438792; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=Ius4D9M7tl+j4IAM5LwiK6lcQnEKNl9qLPhtJSpOtD0=; b=ZlCSGnC3FNFoDx2V19RyGVgQUstHDvm8OFGUg4auRioG74WTHVXDbiprok4/c6uGmqY3+B3aqCaD/toxb1mlxhH5PQYUWsQtgRRJWMLsNQQVnp1244Nj4Jf9bBUQjjyCgLpb6/ufNd6UiRIJvYeVC6GrwcxqJk6eNVsLc41FjPg= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1777438792142745.0486699365601; Tue, 28 Apr 2026 21:59:52 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wHwto-0000YX-A4; Wed, 29 Apr 2026 00:51:48 -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 1wHwtg-00005S-Om for qemu-devel@nongnu.org; Wed, 29 Apr 2026 00:51:40 -0400 Received: from mail-pj1-x102b.google.com ([2607:f8b0:4864:20::102b]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wHwte-00012W-HE for qemu-devel@nongnu.org; Wed, 29 Apr 2026 00:51:40 -0400 Received: by mail-pj1-x102b.google.com with SMTP id 98e67ed59e1d1-35691a231a7so8097351a91.3 for ; Tue, 28 Apr 2026 21:51:38 -0700 (PDT) Received: from toolbx.alistair23.me ([2403:581e:fdf9:0:6209:4521:6813:45b7]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2b988772ae8sm7756145ad.7.2026.04.28.21.51.32 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 28 Apr 2026 21:51:36 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1777438297; x=1778043097; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=Ius4D9M7tl+j4IAM5LwiK6lcQnEKNl9qLPhtJSpOtD0=; b=V1zW6E/9mnM1MTSMJnWNxPa/86oQfwP7CQjaWkJIrX8d8mfHCTMhl1j1zNDCTMvoUq cOxLXifOkGarDC8SrvNhcx5kNTUD5I9mpQXLkK9aT9vxNsIw6zNcgGzXqroXsQaAWU/o mTgn22NcJVjXJlrWbi7Rj3oXfrZ2Kbk4E6YZOy4OulRDVMSMqRTsXQDdqdHsVeR3bN8/ /8ZmT8G9U+tp03m0aK8aJfulaV7mZfD24Z5ji2EkxKlbmBIIsoReIirXeLgkRLxf92st hahUJ9pjngQwn9NtnZl+JJ4jL027aLmo/BvZuaqvNsj1tHhA6Wq8H7KfH4KUoVauiLe8 06fg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777438297; x=1778043097; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=Ius4D9M7tl+j4IAM5LwiK6lcQnEKNl9qLPhtJSpOtD0=; b=iCJ83auexpczMpd8BhKdL2l/4tNUTBT84TexqLeKDHXYcJwQplFKF3MXC4kb5nhTLt wD/MXwm7AOyVmSBxzNVXAHUKRFmQ7Zt/JcojIyRjtFYqWqLKwXCMj1PDt0wKH9KeMPey LgLjnSwKl9kRixR23+OV5QigiazvgzfZe1DJn3qeITxdu4dxe04vkpKeStN8H0t+Fr2l 0MpLB2WK+TujpJcGHQXs9EWY3a7A1/3zKU4aLwu1KEsZZsd6lCXwLUTHNVNlG+iAMyH3 DJsEY3/v43ZMAZtvuopa1QYVj2w+JgYcAkHvgIl95USzYGsMzpTGLCTkjJl1V/bflbtn tieQ== X-Forwarded-Encrypted: i=1; AFNElJ/TgxvNIclvoTTY+YpaVx4YzCEPBc7ChDq3gkBM4W0V8DwBq1/LvBWu6IC9uV+BfKhiTpkq0vCGqwaO@nongnu.org X-Gm-Message-State: AOJu0YzJhVTg5QpzBEh8GAb2ufvxwjd2Gu31JVc6a54szd5ohK38asPe jF1laR3GAQVT1hUiZXRpgoB+IKBrk59tzo2DG2d3ljFwWEwyGwSAwW7n X-Gm-Gg: AeBDiev2Wt9dcCaMDo1Q1AM4T30pirIPYYCSoB6cLXpyiGn1htvI169v981w4AendRr MX5F+9WwyuFMqnaAc+72CksVbjS/GRO/x3I1LP/jUfFtnGDwVBIWU6v6NcXKCzMaOU4GhORLggO cwLA+4bUvEsNn5G2KKjtFmgmEGPdV2X9mfVogZEcAZtUxDfP3bqx4eX7+OKJBS2+i88MoysQvIC 96TP3VvBuQQWZGdncJTVy+x8GERBh5uDCnWXYo482tFHJMbgOfUdTpJn8zPpMQno9VNWEa+FObZ H+FjHQBaQtS65U/GB59jcLE8QnCS12iQabRgKr7q5po07emG+U8Ze4y47z5FJpoqHao0vYrcvkv B9uYWb9ZfHMQvD0JGNWMIKbfVx0HG9/p7feW+jXvVnaq35nJFJIPoy4wh+lbHJTNhvtWOWXcwhB 3gtwVrkSf/liM+HyWiM18bcv080GtUiyRShcLXD/h6s1e8bsrwFwXdRwjrCfsFfBs= X-Received: by 2002:a17:903:3c48:b0:2b2:4611:5dca with SMTP id d9443c01a7336-2b987407ddemr20967845ad.24.1777438297017; Tue, 28 Apr 2026 21:51:37 -0700 (PDT) From: alistair23@gmail.com X-Google-Original-From: alistair.francis@wdc.com To: palmer@dabbelt.com, liwei1518@gmail.com, daniel.barboza@oss.qualcomm.com, zhiwei_liu@linux.alibaba.com, chao.liu.zevorn@gmail.com, qemu-riscv@nongnu.org, qemu-devel@nongnu.org Cc: alistair23@gmail.com, Frank Chang , Alistair Francis Subject: [PULL 41/51] target/riscv: Mask xepc[0] only when Zc* extension is enabled Date: Wed, 29 Apr 2026 14:47:42 +1000 Message-ID: <20260429044752.4176397-42-alistair.francis@wdc.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260429044752.4176397-1-alistair.francis@wdc.com> References: <20260429044752.4176397-1-alistair.francis@wdc.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::102b; envelope-from=alistair23@gmail.com; helo=mail-pj1-x102b.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.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, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable 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 @gmail.com) X-ZM-MESSAGEID: 1777438793356158500 Content-Type: text/plain; charset="utf-8" From: Frank Chang IALIGN is 16 when the CPU supports the Zc* extension. Only xepc[0] should be masked when the Zc* extension is enabled. Signed-off-by: Frank Chang Reviewed-by: Alistair Francis Message-ID: <20260421074940.2916287-1-frank.chang@sifive.com> Signed-off-by: Alistair Francis --- target/riscv/internals.h | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/target/riscv/internals.h b/target/riscv/internals.h index b001cbc080..ab8dea45c9 100644 --- a/target/riscv/internals.h +++ b/target/riscv/internals.h @@ -173,9 +173,15 @@ static inline float16 check_nanbox_bf16(CPURISCVState = *env, uint64_t f) =20 static inline target_ulong get_xepc_mask(CPURISCVState *env) { - /* When IALIGN=3D32, both low bits must be zero. - * When IALIGN=3D16 (has C extension), only bit 0 must be zero. */ - if (riscv_has_ext(env, RVC)) { + RISCVCPU *cpu =3D env_archcpu(env); + + /* + * When IALIGN=3D32, both low bits must be zero. + * When IALIGN=3D16 (has C or Zc* extensions), only bit 0 must be zero. + */ + if (riscv_has_ext(env, RVC) || cpu->cfg.ext_zca || + cpu->cfg.ext_zcb || cpu->cfg.ext_zcd || cpu->cfg.ext_zce || + cpu->cfg.ext_zcf || cpu->cfg.ext_zcmp || cpu->cfg.ext_zcmt) { return ~(target_ulong)1; } else { return ~(target_ulong)3; --=20 2.53.0 From nobody Sat May 30 19:23:38 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1777438545; cv=none; d=zohomail.com; s=zohoarc; b=fl0Gvlnf9CYJ253iZ0ug5C+6UBtB6SZ9WeLhACqTd5q4Eo8Rfj2GAtgvOVZ93rDT8C0huv8cPNi01jrO/ERoRB+gCCnMuFNt/XOLWVXbnkutW5cS5z7VbXAou3R2GfLzNTK3n5JqtiAI9fldcGnVo+ruiUCba4VzUdZ8jNWtnW0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777438545; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=t12dkHELQlr7kmEBDjQiQOrmEP65Un9QTjXYostGZcQ=; b=XQD3RY1RaJxoZinshulrJ1gSBJPNHRZx5WekiYaWXLidhHVu7bfnaLjOYRU/bcTtg198g6UBUmvc0gta9VhTKma4ci+sgJgH9KpbSzQT43i3Upjs8yp/3xAGNueFeJ042tofoNUDLwE5K+cknacKUtQ9VqcYRLm6fBvXjptlMLo= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1777438545253456.2299918332636; Tue, 28 Apr 2026 21:55:45 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wHwtv-0000ni-WB; Wed, 29 Apr 2026 00:51: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 1wHwtn-0000ai-03 for qemu-devel@nongnu.org; Wed, 29 Apr 2026 00:51:48 -0400 Received: from mail-pl1-x631.google.com ([2607:f8b0:4864:20::631]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wHwtj-00013J-2j for qemu-devel@nongnu.org; Wed, 29 Apr 2026 00:51:44 -0400 Received: by mail-pl1-x631.google.com with SMTP id d9443c01a7336-2b7adb38d65so58114575ad.2 for ; Tue, 28 Apr 2026 21:51:42 -0700 (PDT) Received: from toolbx.alistair23.me ([2403:581e:fdf9:0:6209:4521:6813:45b7]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2b988772ae8sm7756145ad.7.2026.04.28.21.51.37 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 28 Apr 2026 21:51:41 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1777438302; x=1778043102; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=t12dkHELQlr7kmEBDjQiQOrmEP65Un9QTjXYostGZcQ=; b=r0lupXtsK94Q0fM9XsfSoKidk60KqJoWYUxPnK5UPQjgDjE+NcR8tp2iHPZB9WYbbW WuUcobr+w/2bDKO9DNa4yGGN9F1B/mfTEdoeGqy1f5OzxrLGjlXif29YFxlMctbxT8mQ +sv5PkWNM0cq45pveGuuTILrbbNq1hBaQ0/EEmuLGG4UM1bU+/brVo/ldPK6MxokxQlo j0t+EBA+eyuIA7cHD9DZrRilc5qS4+Su7G86CLATSwt9D0YGx2xKKPx6ZE08/ROVxfZh tvfp7YYVkKk9ChlsbuOZl/INsPE6a81bI90f3CPDeuUIQuYB0pGuAHMgRiDS+I8zX45g PWPQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777438302; x=1778043102; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=t12dkHELQlr7kmEBDjQiQOrmEP65Un9QTjXYostGZcQ=; b=NkP/V3ELxy5lQXqAYZYhDba7//PMCyKqex6mk4FpIEI6UUHfUoSbIs9pMKFmbedWjz VnaSwEwKIIrsUQWdxDz9G2YnPzTeHc7Sb1gWfYDKaYQP8xxIeR/vV4Waotp/qwCIkhRS ifPE2VbpI/DrHon8XmyFVg46m/I7nGTTE/tu7LV8qgNoSRRrsAWlGRxXN0PXgrHVFisc NrQoBhbd8yNdbJ76rCmnu2UCp/jdweqs4ytY2ox9jKEE02wkeWaIVGayT+0/EhcbZ1XP XuJQd1RYEWDy1booPk8jCVNVOUGK7nx+Quf9bTu7fRHwzq6AiKVbqSSAhMj6+GMwbxpu UELw== X-Forwarded-Encrypted: i=1; AFNElJ+CQ0OxoJ/lEYlhzx0uwqgBwhNPsSPtRlVsHPZcVFOoDFrKIWnGLpkwvEwSC797yAJdNCun3+Qd8GcI@nongnu.org X-Gm-Message-State: AOJu0YxuhFzgU0G8ovnbyVt1yp9c1J5G8LSOGIAuze10MJogS9tUmIxF WTXa7j+K8Tw/QGuv/YHoq/grZQY/DAElW1wI2hEyFGdkO+yBoRpWfOUQ X-Gm-Gg: AeBDiet+cUnwUcdYDMsDo3qToX6K4CchqsrGarbS+wDiTYAVD4ykUTUhgvH+6+nlgol ZyaNMyXPupCC3sNSNUJyqy+q3muTosUPfpNivlH3stGIFmCRZTdMT3sSpTv2qi16L9O2LdIk2df At4mfh10YjqjPcj1qIwVdKhYc5pkDQWHKbi6AypHrGmoesA+9J/vMxnW4ZiDiTal4v5BO8eotUs miSR9U4k5KjcBGrzVmO+aOStZeMqzPblDnqr58mro8TR4liZdSJBT8vhXMxoUg6nmxOQKqOgmnx lE4hnlNxtErMLkRvbSM3Dwm4nrUE6QlPd975qie9lEhVMn1cd6OXoK8mNgGFEP0HNk/uPTBRQIn hsP841PmzPG/VZH5MBJgAzm8niDAAXm7k9nhRq7NNQh2sbMeMiG9ymuvnu5uMOlOpPcU/fd4qqB Smr/lrJ9Q5Gw/L9JMS8DH9H5/vLZmbUB+ywiW3oSkiscTX6PZXmUje X-Received: by 2002:a17:903:1cd:b0:2b4:6529:7b9f with SMTP id d9443c01a7336-2b97c46d112mr58193335ad.26.1777438301763; Tue, 28 Apr 2026 21:51:41 -0700 (PDT) From: alistair23@gmail.com X-Google-Original-From: alistair.francis@wdc.com To: palmer@dabbelt.com, liwei1518@gmail.com, daniel.barboza@oss.qualcomm.com, zhiwei_liu@linux.alibaba.com, chao.liu.zevorn@gmail.com, qemu-riscv@nongnu.org, qemu-devel@nongnu.org Cc: alistair23@gmail.com, Alistair Francis , qemu-stable@nongnu.org Subject: [PULL 42/51] target/riscv: Generate access fault if sc comparison fails Date: Wed, 29 Apr 2026 14:47:43 +1000 Message-ID: <20260429044752.4176397-43-alistair.francis@wdc.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260429044752.4176397-1-alistair.francis@wdc.com> References: <20260429044752.4176397-1-alistair.francis@wdc.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::631; envelope-from=alistair23@gmail.com; helo=mail-pl1-x631.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.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, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1777438546317158500 Content-Type: text/plain; charset="utf-8" From: Alistair Francis The RISC-V spec states: "For the purposes of memory protection, a failed SC.W may be treated like a store." So if the comparison in sc.w fails we should still check for alignment and do a probe access to check permissions. Cc: qemu-stable@nongnu.org Resolves: https://gitlab.com/qemu-project/qemu/-/work_items/3323 Resolves: https://gitlab.com/qemu-project/qemu/-/work_items/3136 Signed-off-by: Alistair Francis Reviewed-by: Daniel Henrique Barboza Reviewed-by: Chao Liu Message-ID: <20260415233740.3027321-2-alistair.francis@wdc.com> Signed-off-by: Alistair Francis --- target/riscv/helper.h | 3 +++ target/riscv/op_helper.c | 14 ++++++++++++++ target/riscv/insn_trans/trans_rva.c.inc | 6 ++++++ 3 files changed, 23 insertions(+) diff --git a/target/riscv/helper.h b/target/riscv/helper.h index 54d2331966..36cdacfb0e 100644 --- a/target/riscv/helper.h +++ b/target/riscv/helper.h @@ -1351,3 +1351,6 @@ DEF_HELPER_4(vsm4r_vs, void, ptr, ptr, env, i32) #ifndef CONFIG_USER_ONLY DEF_HELPER_1(ssamoswap_disabled, void, env) #endif + +/* Zalrsc SC write probe */ +DEF_HELPER_FLAGS_3(sc_probe_write, TCG_CALL_NO_WG, void, env, tl, tl) diff --git a/target/riscv/op_helper.c b/target/riscv/op_helper.c index dde40a5549..81873014cb 100644 --- a/target/riscv/op_helper.c +++ b/target/riscv/op_helper.c @@ -267,6 +267,20 @@ void helper_cbo_inval(CPURISCVState *env, target_ulong= address) /* We don't emulate the cache-hierarchy, so we're done. */ } =20 +void helper_sc_probe_write(CPURISCVState *env, target_ulong addr, + target_ulong size) +{ + uintptr_t ra =3D GETPC(); + int mmu_idx =3D riscv_env_mmu_index(env, false); + + if (addr & (size - 1)) { + env->badaddr =3D addr; + riscv_raise_exception(env, RISCV_EXCP_STORE_AMO_ADDR_MIS, ra); + } + + probe_write(env, addr, size, mmu_idx, ra); +} + #ifndef CONFIG_USER_ONLY =20 target_ulong helper_sret(CPURISCVState *env) diff --git a/target/riscv/insn_trans/trans_rva.c.inc b/target/riscv/insn_tr= ans/trans_rva.c.inc index a7a3278d24..62c0fe673d 100644 --- a/target/riscv/insn_trans/trans_rva.c.inc +++ b/target/riscv/insn_trans/trans_rva.c.inc @@ -90,6 +90,12 @@ static bool gen_sc(DisasContext *ctx, arg_atomic *a, Mem= Op mop) */ TCGBar bar_strl =3D (ctx->ztso || a->rl) ? TCG_BAR_STRL : 0; tcg_gen_mb(TCG_MO_ALL + a->aq * TCG_BAR_LDAQ + bar_strl); + /* + * "For the purposes of memory protection, a failed SC.W may be treated + * like a store." so let's check the write access permissions + */ + gen_helper_sc_probe_write(tcg_env, src1, + tcg_constant_tl(memop_size(mop))); gen_set_gpr(ctx, a->rd, tcg_constant_tl(1)); =20 gen_set_label(l2); --=20 2.53.0 From nobody Sat May 30 19:23:38 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1777438338; cv=none; d=zohomail.com; s=zohoarc; b=kLiQLwg9WYp0laNQed/lQ1AW7D0IgOLFwifT2b0fcCSchSpparQeppZFbpt4j0O3/hD1WPauoBgq5ndmYTD9hkNRVMyrHwkn6opJUMgoHMUZxNk5/a1i4Fb91Q6NCC4QoelPHz7E8vFL5fZGD++y2b6srUcnxTed/GJGWkWeuTc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777438338; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=ji1NoMhMP6oxBXvm+pUAsoPg0oAMp1mJbkRgT3H2pso=; b=D4g17jf8+Aew7VcqXzg6wpSsT9Uk7T2jStJUiQtFr2EW7BA7trX01SZnyexk3N6lYl8yUx6xNfmHSGNLNGFbrxJ0Djg8qOBiSDilojbWub1D6sXbY4DZf4Zzy1XstxTlFKwmTYHuUS0ZfBQy/IN6PUCA+PPkvC9p1AGAhSpkLDU= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1777438338972908.6019815234705; Tue, 28 Apr 2026 21:52:18 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wHwtx-0000pK-2G; Wed, 29 Apr 2026 00:51:57 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wHwtu-0000iI-MI for qemu-devel@nongnu.org; Wed, 29 Apr 2026 00:51:54 -0400 Received: from mail-pl1-x631.google.com ([2607:f8b0:4864:20::631]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wHwto-00014K-45 for qemu-devel@nongnu.org; Wed, 29 Apr 2026 00:51:49 -0400 Received: by mail-pl1-x631.google.com with SMTP id d9443c01a7336-2b25cf1b5f0so66525025ad.3 for ; Tue, 28 Apr 2026 21:51:47 -0700 (PDT) Received: from toolbx.alistair23.me ([2403:581e:fdf9:0:6209:4521:6813:45b7]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2b988772ae8sm7756145ad.7.2026.04.28.21.51.42 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 28 Apr 2026 21:51:46 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1777438307; x=1778043107; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=ji1NoMhMP6oxBXvm+pUAsoPg0oAMp1mJbkRgT3H2pso=; b=PwOtenrh2mBLd6oAqy58nW63YbskqEjsLweyjkt7CZtPCgqAN1xMLjK2WxYJsXOIl3 Q7mRuW7OAc+eTDOhqhYB75WCDmFx9Hjlg4kDq7fFafeu3HRT0WkqpYRI3U93gcpkCsVI gY979ptFNlLxUrQyvJ0MLA+QXLDzNnqbkJ1YttJm3dgKAeUoqi2C8vZvyYBUNUOkpGho mzo1KoDyMBeTuruTx6WbazCwjeJvXRLhVQiopX8meweyhexyc/YeHL7g0Ru2yf2hTjKV uitxGosP/rYoXjaBFLEb7+VM10wFQeMiONMi5kS9OhEjUw0HnOpSYy9MjQxe98IyFbiV BTWg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777438307; x=1778043107; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=ji1NoMhMP6oxBXvm+pUAsoPg0oAMp1mJbkRgT3H2pso=; b=ZIvSN2A8BEWJs2baJslz12e4gh5fZmc9hKX/9Lkkb+HIynM+EdwWBhESCHc7/h2maS QboFgusF9kYf1e9WbgVMJHRxKC4j54bYxmZkSXgHKznKTrRD6zSkpwg94yLSPfIdhv4u xMvHWMZ2Y0AMOfWapfKfXNo6Vr1UiZvRR83i/iowDyacH2rUy1V3iZIP9Txb1YiyP/gQ jTL5BfdR4x0dCbLORKpoRezqVfv77sQUNVXLVGlXdTq4doaj8NaR+ZL/vc6mM4ZPZwt5 O7eLB9Myvb7QlWKsvVtyPP2aD9tcw3GkAlrYumOqN3wUVlfdwIdcMWbJRHX08W2+kUhi QGSA== X-Forwarded-Encrypted: i=1; AFNElJ/tHEahyG3/Zf4xvsgix2fXcpyEAwwVwg0aXwiIAZbPLFchjmKZ9OQi0MUtPdM081B3kn5xCUp8BbQv@nongnu.org X-Gm-Message-State: AOJu0YxapD4I5sDxb6fzxKYRjaG3bGiu225ekdcsezpy2CAK0m8tYQkS hGcwYKJ00z1/DnQ2aMLdCHZvC5QKk5/+WPLu90cntrU48MxGvda1il4j X-Gm-Gg: AeBDieupJytETNQAwb5zwXrIu5Dpp0V+YbFRmcXrPFcDVtf4T/41Qkzs7GGeOlUjQDS rLSOMfta6gpTYDLBKpjCdRdSl1Po0Yi9tnROoMlPakmb6DudLUVH69QQG9aOKZBPphV3a4qvtQM WK4EoBbubHypsd/Qude4xEOsccCuDrdvJB/pKiXwN8Ci2MUgq2AdSMMFy7X1cclYrAdgU0nKUcq QYO2cV5pVpQF6pKqErqfDvfOX3chF+fbmRu4wIsPPcy9HibdcboBa+zT3jl5RxLs63ROX+2BO/S n5md2SxOaGUb+Zw16ayytu/7AoLGCAU7aSh93XS5UCDg1I44BpzxRZ3TzedH0zrwNVw9cp9YAFw 6uTLipMNU4WRrB++HqT8+Ui6boHvxsKY9nFRvTGAQgPQeOtdyW6Pl8Egh1PNDp95DwcRaT/ORWW WvXFhutbVlWWR2OMohLZ7MfRMGtAVj0/CCL5TVRNo8Dyg2TCMmZG6g X-Received: by 2002:a17:902:e78f:b0:2b0:5795:9ead with SMTP id d9443c01a7336-2b98720063fmr20969775ad.0.1777438306816; Tue, 28 Apr 2026 21:51:46 -0700 (PDT) From: alistair23@gmail.com X-Google-Original-From: alistair.francis@wdc.com To: palmer@dabbelt.com, liwei1518@gmail.com, daniel.barboza@oss.qualcomm.com, zhiwei_liu@linux.alibaba.com, chao.liu.zevorn@gmail.com, qemu-riscv@nongnu.org, qemu-devel@nongnu.org Cc: alistair23@gmail.com, Alistair Francis , qemu-stable@nongnu.org, Nutty Liu Subject: [PULL 43/51] target/riscv: Don't OR mip.SEIP when mvien is one Date: Wed, 29 Apr 2026 14:47:44 +1000 Message-ID: <20260429044752.4176397-44-alistair.francis@wdc.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260429044752.4176397-1-alistair.francis@wdc.com> References: <20260429044752.4176397-1-alistair.francis@wdc.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::631; envelope-from=alistair23@gmail.com; helo=mail-pl1-x631.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.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, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1777438339637158500 From: Alistair Francis The RISC-V spec states that """ But when bit 9 of mvien is one, bit SEIP in mip is read-only and does not include the value of bit 9 of mvip. Rather, the value of mip.SEIP is simply the supervisor external interrupt signal from the hart=E2=80=99s external interrupt controller (APLIC or IMSIC). """ As such let's mark the mip.SEIP in rmw_mip64(). Cc: qemu-stable@nongnu.org Resolves: https://gitlab.com/qemu-project/qemu/-/work_items/2828 Signed-off-by: Alistair Francis Reviewed-by: Chao Liu Reviewed-by: Nutty Liu Message-ID: <20260415233740.3027321-4-alistair.francis@wdc.com> Signed-off-by: Alistair Francis --- target/riscv/csr.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/target/riscv/csr.c b/target/riscv/csr.c index 80727aa81e..da366cf562 100644 --- a/target/riscv/csr.c +++ b/target/riscv/csr.c @@ -3728,6 +3728,14 @@ static RISCVException rmw_mip64(CPURISCVState *env, = int csrno, uint64_t old_mip, mask =3D wr_mask & delegable_ints; uint32_t gin; =20 + /* + * When mvien[9]=3D1, mip.SEIP is read-only and reflects only + * the external interrupt signal from the interrupt controller. + */ + if (env->mvien & MIP_SEIP) { + mask &=3D ~MIP_SEIP; + } + if (mask & MIP_SEIP) { env->software_seip =3D new_val & MIP_SEIP; new_val |=3D env->external_seip * MIP_SEIP; --=20 2.53.0 From nobody Sat May 30 19:23:38 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1777438634; cv=none; d=zohomail.com; s=zohoarc; b=W8p0+TmxhWqsCFkznDXz/z+qq8WXWSKmBt2bRHhK96JQeNlZII3Dc+WY27bqw29Hajjxkr2N1uouyUtAc7V/iaOvfNvj4LL4Mc5KHa7H3TKN2kZXUQI0fhW9hJ9kWvos+ABpr04F/hJUjgPYq2cTTTSdN6z2CZuH4DlRN9frhTo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777438634; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=hCn+ToTOdAoAqsdxgqAQs8i2tRaruwvkYVx+22xQbrs=; b=DGRmZi0oNe5v+I0Zce5zIX4klsYfU2svCAEQzWV25wrbKMoCHQms3hOj91tNPH0fAeSMcTbdM2jcSEwAUDnYqvqLMMfdzKy9R1/wQ39wE/LOvu09OthNVIOX/EowjqM/Hknxl5lr533yNlvGQ3oS8BmccCepfk1DhHSgUn3GAtM= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1777438634616131.629063242337; Tue, 28 Apr 2026 21:57:14 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wHwuD-0001FA-C8; Wed, 29 Apr 2026 00:52: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 1wHwtx-0000rD-BG for qemu-devel@nongnu.org; Wed, 29 Apr 2026 00:51:57 -0400 Received: from mail-pg1-x531.google.com ([2607:f8b0:4864:20::531]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wHwtu-00015D-Df for qemu-devel@nongnu.org; Wed, 29 Apr 2026 00:51:57 -0400 Received: by mail-pg1-x531.google.com with SMTP id 41be03b00d2f7-c79467f124dso4537957a12.2 for ; Tue, 28 Apr 2026 21:51:52 -0700 (PDT) Received: from toolbx.alistair23.me ([2403:581e:fdf9:0:6209:4521:6813:45b7]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2b988772ae8sm7756145ad.7.2026.04.28.21.51.47 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 28 Apr 2026 21:51:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1777438312; x=1778043112; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=hCn+ToTOdAoAqsdxgqAQs8i2tRaruwvkYVx+22xQbrs=; b=iGecLGdirPNV97WzxUlj4NEpY6HuPagA9ZsflScUIQycr5Dvm5Z1dcCbmw+oYytT+H lKIVV/S2HxThjKvd6DUWkoUGECnZhkI8oQd6J+Wb6y6iRufG22RZSYDx7urG9QiGBO+B VpDBU1OfmVj87KApr2XWMSeMgW5OJwTL0D89tjyuQZ1oIVS7wnxrPNcOIY/OSiUwoDxi +mUnqGm2jvsRxzqYWNo3r+Ej2PnTNc6NaJ5/PVXapZnwlTjat/1oe487MKGkVoGRpsFD z0wL5ODov9ZJS5fBNoHFRivNUGJkbu7QXG5Pvp+hFesTeekCZlEtyfnAWQvPZi1t7TBO PAEA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777438312; x=1778043112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=hCn+ToTOdAoAqsdxgqAQs8i2tRaruwvkYVx+22xQbrs=; b=TR8AbfU+ZaqxYRSNOw+uaSAP6oEYz5TG9dY6yeX4De4TF8azVnc8jS/ESTbSRY18U8 Eyyd4fw4QbG19Yg8fVFWAmF7z9JSSEWG946tIpNiNoWky7ozXsWMnEIq35Xvj1Z7WRV6 +PPGumLwKiwe5/TAYBnfqzY8ZxGl0PoZuWJ3GQW92++ZuZakvehdhE05PLRTQJRa6pxZ PscAUNw4jTgNFqMKPIljuL8PPEiKf0pcreToVRTrRvvwVWu2eNTOzIL1apYsbyAjZQQS RGxBDKAQRlX/7vfxx2nitGYtskzjAd87KFCp7O2XxgWQpXWQeFJ4C2gz22qyVZHwmBWY dyZA== X-Forwarded-Encrypted: i=1; AFNElJ8Y/9REC3bR+Yn9ed/RrzlbZ8lYDth+EeTroB6bAby08v+E7H6B35S+FRJhZ6OumFHv0zM2M8NZ/aO4@nongnu.org X-Gm-Message-State: AOJu0YytJX6UnXrw6ngFRwi8wt1qcUw+0xybFmTgs9NK/p28S0vQBdXI iQDhEd3KRCB2Rm7OtAFlW1EeaikaVy+ruObNwUOjFF/fgquanTjRm00H X-Gm-Gg: AeBDietakipNRp4fLRnKEPzwR2PgPCjHs+JyH8YihaQhyGJW9h8RZXZBo9pf3WLJ1NH 8MXmPvEUFRDh1YpI++FvTW8EjGlHTrHM56vaL0HP2Skp7+nGVH5WKZtUZOlFPK0hJ9J7ycTnwQR KAjJDWr6Bk1H5QWKblVa0I71SPn+3FjsQFsWNghL9pfI2cwOTWwETi3UnosdcoSWWxF2MFEmUrC aQXAdFJylKmUr9k/tWBjFQs78PPcAkKiKPX0NChE8f9hQt+M7fk0M6qugdUr/5OS6IO1REut8Gr MJwz7bEFxy6idrCeBJoj+3yO2fWf7XQhASnDTMR9g5TLhTh4SMHe/JslHxX3ZyEdxxHKXYjMBFF B+Wq5t8A1X+pEPIHMamjK/ynzt5D7uRJhrRlwOU8sQjjPuYviqiE1HC3tFRvz3x6+L7NxhW3jsk OulpN2wIgGZBrUaze0KPfu9TkW0bh1+hCA2jRTPjb0Ezfg8xZ8FWw7 X-Received: by 2002:a17:902:e34a:b0:2b0:4579:ae6 with SMTP id d9443c01a7336-2b97c4cb993mr45089105ad.38.1777438311922; Tue, 28 Apr 2026 21:51:51 -0700 (PDT) From: alistair23@gmail.com X-Google-Original-From: alistair.francis@wdc.com To: palmer@dabbelt.com, liwei1518@gmail.com, daniel.barboza@oss.qualcomm.com, zhiwei_liu@linux.alibaba.com, chao.liu.zevorn@gmail.com, qemu-riscv@nongnu.org, qemu-devel@nongnu.org Cc: alistair23@gmail.com, Alistair Francis , qemu-stable@nongnu.org, Max Chou Subject: [PULL 44/51] target/riscv: Use ELEN for Fractional LMUL check Date: Wed, 29 Apr 2026 14:47:45 +1000 Message-ID: <20260429044752.4176397-45-alistair.francis@wdc.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260429044752.4176397-1-alistair.francis@wdc.com> References: <20260429044752.4176397-1-alistair.francis@wdc.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::531; envelope-from=alistair23@gmail.com; helo=mail-pg1-x531.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.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, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable 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 @gmail.com) X-ZM-MESSAGEID: 1777438636657158500 Content-Type: text/plain; charset="utf-8" From: Alistair Francis The RISC-V spec states that """ For a given supported fractional LMUL setting, implementations must support SEW settings between SEWMIN and LMUL * ELEN, inclusive. """ We were previously checking VLEN, instead of ELEN, so let's update to check ELEN instead of VLEN for fractional scaling. Cc: qemu-stable@nongnu.org Resolves: https://gitlab.com/qemu-project/qemu/-/work_items/3196 Signed-off-by: Alistair Francis Reviewed-by: Daniel Henrique Barboza Reviewed-by: LIU Zhiwei Reviewed-by: Chao Liu Reviewed-by: Max Chou Message-ID: <20260415233740.3027321-5-alistair.francis@wdc.com> Signed-off-by: Alistair Francis --- target/riscv/vector_helper.c | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/target/riscv/vector_helper.c b/target/riscv/vector_helper.c index 538168efc9..5a3554dd71 100644 --- a/target/riscv/vector_helper.c +++ b/target/riscv/vector_helper.c @@ -70,18 +70,17 @@ target_ulong HELPER(vsetvl)(CPURISCVState *env, target_= ulong s1, bool ill_altfmt =3D true; int xlen =3D riscv_cpu_xlen(env); bool vill =3D (s2 >> (xlen - 1)) & 0x1; - uint16_t vlen =3D cpu->cfg.vlenb << 3; int8_t lmul; =20 if (vlmul & 4) { /* * Fractional LMUL, check: * - * VLEN * LMUL >=3D SEW - * VLEN >> (8 - lmul) >=3D sew - * (vlenb << 3) >> (8 - lmul) >=3D sew + * ELEN * LMUL >=3D SEW + * ELEN >> (8 - vlmul) >=3D sew */ - if (vlmul =3D=3D 4 || (vlen >> (8 - vlmul)) < sew) { + if (vlmul =3D=3D 4 || + (cpu->cfg.elen >> (8 - vlmul)) < sew) { vill =3D true; } } --=20 2.53.0 From nobody Sat May 30 19:23:38 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1777438358; cv=none; d=zohomail.com; s=zohoarc; b=I5c1+NULbxaoxhDBodLjzz5m2yqY2ZiIbjYfRpaZCnmBLtRCCr3Y32Z1ipaodFffRhqMP8Z440FT9Psc3TCz5BiXhkAhK2VweWvoGr8c60T9gG9pVQg2al8N6E5RdWviTgVAL8EADQ2QI19FGWqn3WBGAIQVeTK3Ov16+F0Ow5s= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777438358; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=g9DymTxIeXo8zUEFCFX6E1SMqxSkLlASH4pmiq50A40=; b=YeqLoxCqSvMS1bn2To7C6BFVwPsfHFScG8R/SnJrwd1CXWeTTi6HC9pJZ1Wb3oPDcDGVxeUajVR94uiNgptfzJb0jvcx/rvRZmxU5T39OyBOlhQ/oOFynOH+MAeDGAGAGVL42dBSrpEUON+/av6jaZwYzpfNCs1u9B+dxl3NQmo= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1777438358013353.28594252410585; Tue, 28 Apr 2026 21:52:38 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wHwuF-0001UG-0r; Wed, 29 Apr 2026 00:52:15 -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 1wHwu1-0000x9-42 for qemu-devel@nongnu.org; Wed, 29 Apr 2026 00:52:01 -0400 Received: from mail-pl1-x62e.google.com ([2607:f8b0:4864:20::62e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wHwty-000179-9Y for qemu-devel@nongnu.org; Wed, 29 Apr 2026 00:52:00 -0400 Received: by mail-pl1-x62e.google.com with SMTP id d9443c01a7336-2b24fede2acso80046105ad.3 for ; Tue, 28 Apr 2026 21:51:57 -0700 (PDT) Received: from toolbx.alistair23.me ([2403:581e:fdf9:0:6209:4521:6813:45b7]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2b988772ae8sm7756145ad.7.2026.04.28.21.51.52 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 28 Apr 2026 21:51:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1777438317; x=1778043117; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=g9DymTxIeXo8zUEFCFX6E1SMqxSkLlASH4pmiq50A40=; b=ZQ/3elzkLpBwGGPVg2mtfBivIO8rKD8BYfSMG0VhupoAyytuWTugRsJRAniTTbw20G TjrlN6lqVsbd38Z3R+izwQ/WY3N8mlzeQt3mJ+ppxWewcZizzJy+V9lyeN01Tjdq1gAq 76Uqy0RVAby1oIb7PymI6Q/YFGeXXhI8fNnW29xMEGt5IRIktjUVvQLX7C6QB9vL+yLA ca477ITAFYIAR/GE74mlpA03g9R/Nun/CxHEAY/XSj7mPGhahy0Thg5xW5vQ3Ds5fUe9 IEoguA8FwBdPXOU35UjXHTqfF+koE1AxYDq8iIERiF0UeEgA3jE2zdOdfyY/u7LeVhgB 7N3w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777438317; x=1778043117; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=g9DymTxIeXo8zUEFCFX6E1SMqxSkLlASH4pmiq50A40=; b=AGOj5CFGiop3LxVLYC1KsxI7BDc9BVbHud2cHuXiQGHETly6BGB1Cgs5wszUkHygVE buQe7/aBSBoKfVl6qjHM0tuXXbKxNj8KoFzag4dpkiKTDwWtBKpyL8ttUULm5iVkODpZ sADdZ6P3XSErLiJ7VwEanbSokEK++Ui6p/v/FtuWq5ue738hCZav0X7ql8Lo0scOFthu isa8uAf6+GWISSNISqm3TsHBXeS+v1Nrfhsf9T7L4t2XoT6LuRrhxqwmpfEdlLXElZPx 4mCYlGyP+uBrOa42S2jw/Fx7yqxgoMpWjgvJWWic9/ppnaAaF/EeB2hZJFDkLzuH6asN c6LA== X-Forwarded-Encrypted: i=1; AFNElJ8QsJ18+2KtRY6w5qC6vXwDzvljeeNnb45QXGfbuQbbNZtQMsTFTXwuhi1W2tq6uQ6EVqTPNmSIK+sT@nongnu.org X-Gm-Message-State: AOJu0YwsoMduptaPSEOrjE2vqN6cxZL4cXCz8p4PuHzZpS2MpbveCOA/ gV+pZ+3Mhyi/MajjR4dHXl+Edkm2R1QhuXYxoAJ2Xt3TmiOIKe8k4gtR X-Gm-Gg: AeBDievz4a+tLWQ4b5zZnwnSPgVZsEu8+U1OgS8YACZdVHH03wEeBWU5QUFrCTHZvJ7 spNuIMWh2bQgAc0gtNosBO8oHL5GjhR2rlpHafxq4y2h9ax7nnrl0sOc2yHygjCDpLW8UZ0A1QC 3Ujk4DBbAcVqK4S+U+M5ZaZ8GQkm/wa1mO9IWHVbykpbkdgvTJNAbycXVsEs4vrWUISSoARV3kk ds6SYQRlgqKOWsRZgbA0TgGmzXtMsufwlOfFnC8eVDM7aMs4b162+uXr161g8VQ8yLo5D1dLU3s 5ZlV5f216NhAnJA1X0UxGIal2gRFR7pAVX5vwLi2Or2/sx7oi6cP1XkIvC3RIWQT4HthH8cdSdu HZdgV7VFTf//Qqr3GVae4GRAviDjqekC851A+Pz2EeaA9WoUjZl2b6lbSTnemfB2u3itTX0eTKX a07fwHHFJS5Y87ll5MFkpbZJY42uOHDKXZOJunBJRZX2BpHAKRUm7h X-Received: by 2002:a17:903:1b2e:b0:2b0:445a:8c7b with SMTP id d9443c01a7336-2b98733d3e1mr19772065ad.15.1777438317009; Tue, 28 Apr 2026 21:51:57 -0700 (PDT) From: alistair23@gmail.com X-Google-Original-From: alistair.francis@wdc.com To: palmer@dabbelt.com, liwei1518@gmail.com, daniel.barboza@oss.qualcomm.com, zhiwei_liu@linux.alibaba.com, chao.liu.zevorn@gmail.com, qemu-riscv@nongnu.org, qemu-devel@nongnu.org Cc: alistair23@gmail.com, Yong-Xuan Wang , Daniel Henrique Barboza , Alistair Francis Subject: [PULL 45/51] target/riscv: fix address masking Date: Wed, 29 Apr 2026 14:47:46 +1000 Message-ID: <20260429044752.4176397-46-alistair.francis@wdc.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260429044752.4176397-1-alistair.francis@wdc.com> References: <20260429044752.4176397-1-alistair.francis@wdc.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::62e; envelope-from=alistair23@gmail.com; helo=mail-pl1-x62e.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.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, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1777438359456154100 Content-Type: text/plain; charset="utf-8" From: Yong-Xuan Wang The pmlen should get the corresponding value before shifting address. Signed-off-by: Yong-Xuan Wang Reviewed-by: Daniel Henrique Barboza Reviewed-by: Alistair Francis Message-ID: <20260421093715.2995067-2-frank.chang@sifive.com> Signed-off-by: Alistair Francis --- target/riscv/internals.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/target/riscv/internals.h b/target/riscv/internals.h index ab8dea45c9..d090db2641 100644 --- a/target/riscv/internals.h +++ b/target/riscv/internals.h @@ -222,8 +222,8 @@ static inline target_ulong adjust_addr_body(CPURISCVSta= te *env, if (!is_virt_addr) { signext =3D riscv_cpu_virt_mem_enabled(env); } - addr =3D addr << pmlen; pmlen =3D riscv_pm_get_pmlen(pmm); + addr =3D addr << pmlen; =20 /* sign/zero extend masked address by N-1 bit */ if (signext) { --=20 2.53.0 From nobody Sat May 30 19:23:38 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1777438516; cv=none; d=zohomail.com; s=zohoarc; b=DT8TMDFROx7BAlX0dxdSHsMtt78ubf5UxQBjGK7N4zrup/5GZ201Hmlnxc3N1h1tZBD0dCSqVPd5+WbTsDeCNw6DcLQFeT64mE4yj8mWzQiXgCj6UvA1s7EsDZso9N8vLoCETercEgG416YJGF7uGsPa+HUlduKSZEr5Src7Afw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777438516; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=iIgLzoAd3/xxTcwu4RMkibZOlgzaUFKfwoSJXOcjJsk=; b=n9kNtflUCvBhB8VG7etFDOUrWPpTTDF9a6yfW/2p83uEbJteeoq4SjGAu/CwQQk1QO98I/nf/9s0x4ffcibfgnkkfQsmI+lpgtKz4b/ci2oN+wQhlhxxWG69hE48XC2nxmYJ9rXNg06Q/Si6p4kOfYpga1M2d6zcw/qT1NkFyp8= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1777438516020884.2706744749521; Tue, 28 Apr 2026 21:55:16 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wHwuF-0001YG-NR; Wed, 29 Apr 2026 00:52:15 -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 1wHwu4-00016n-Kg for qemu-devel@nongnu.org; Wed, 29 Apr 2026 00:52:05 -0400 Received: from mail-pl1-x62d.google.com ([2607:f8b0:4864:20::62d]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wHwu3-0001CU-1R for qemu-devel@nongnu.org; Wed, 29 Apr 2026 00:52:04 -0400 Received: by mail-pl1-x62d.google.com with SMTP id d9443c01a7336-2a871daa98fso79539085ad.1 for ; Tue, 28 Apr 2026 21:52:02 -0700 (PDT) Received: from toolbx.alistair23.me ([2403:581e:fdf9:0:6209:4521:6813:45b7]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2b988772ae8sm7756145ad.7.2026.04.28.21.51.57 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 28 Apr 2026 21:52:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1777438322; x=1778043122; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=iIgLzoAd3/xxTcwu4RMkibZOlgzaUFKfwoSJXOcjJsk=; b=Jnmftx9sTADB6QU4EkxM2DEAUum3J3+yZulHXNSwi8tVa/DxKUm2/a0gfAvF3I4YWU 6X4iQqcyEubPV85BWXNSUT1b3JAh3lQQ4CHVaqfqvLi8lgN3oTpyRmCRAEPQTdijSic1 MoTz6il+hG+dplHvUvLQlPLRONXgYxbd/FRpYKdfndYO1ZDaJZDTQH2edNJnYlhu8pKp IuYiB/q0Hwadul87GR3lrCU64BLWGmIbIWgdGIkXu8+g1kkDTcD+abKbAUKoY6dgCZxH EutiJeRZUNqEtNcmjsj12Qj7HPIVVkQajIJe3fKhnKqa7lhyr/tLepUNXxTfoUdmGjit RNtw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777438322; x=1778043122; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=iIgLzoAd3/xxTcwu4RMkibZOlgzaUFKfwoSJXOcjJsk=; b=IT6Hs6veUNlXauJcRoiF++hkAPvVJpVn0hdvda5UcAJApk+QvCmiO78NXuezbW44uf rG7AooAmyWa1HynuxSCHDsF7u7yBN1+qajUF/2xYd3554YGfINLxFZjAPPM/OZTptuzy ayuJrRnVkRm3ECjWSVxhHETQkRaVd9oPddOtXn9oUdOMO/Pnx3bP4Ue/o7eo+J8ArTnS r07byfAWFbKtQsXA47TCbChJwPi/NObdCg0xWFpR/l4EC16X2aZOI1YmNgdFk/g+BqFf 1vE+LRju1nSEQdW1dbXuD5mf/OOcQrqD1I+0Xp5GpPdcMTU0H6dBqvG6kosZG7fud9Pd 47OA== X-Forwarded-Encrypted: i=1; AFNElJ/2tgZaZjUIijkeFmRCoTs7gHMFBAcMWDWekrqWU9aFcArcMDMVIe7VEfMmzh+fkgGlJnbvdRuQTdAL@nongnu.org X-Gm-Message-State: AOJu0YxlekQ9rxM4RsPZ9FbkMsu1ySd0G4wLop7yF2ZCVZZXHi4bdIEL ogHT4MO67ZMKU6K0FwjcGGpacSuX9b9LwLQ99TGF8cbN65t8PonnCdJC X-Gm-Gg: AeBDieu7vWQjD4TTJviQG5Iph07ENI+Pd28Th53jJcbwteBSq+R0rBq2avf26zknbZA qvePrJjzF3aZz2VNc/Q4dTR9Lmvam6z2WQ++mfJOdXdMpHBDyQzyeGRPEuZYrPZOexX4Xp86hoq f6ZI1jeOd6+KR3Cz+NoYxlkkUcDmMq8AFbsK6+vg8mMmhjbDaX4GckaEeP05fjcabeJHKMpbqyd MPyqcg2H7X6yV6it9oPS6CGoqCPIVWimTBMFAhQkmXm2iES3ajtBYQn/wx7Ff08kBFNtMd+Nf66 iB+SgRS8pjKzQk1IPhHxPmOg/fbVx+/6nTjmpMZN8+9n3gCgz2u2cyXloA7hfbYSqf1mUeB3sW+ eVXZTPnbY3pyxN2osZ7GwAyiEV3L3hyk4GbSnAa7wjgN1WZFppSR13FdOt3Kt/9slG6zmEM/Xwu /xB5BMkf4/gQGHII3DUEPV8EzX+xcbkfObcyDN3yRbQbd3NlgHtFIM X-Received: by 2002:a17:902:f550:b0:2b2:5491:e32b with SMTP id d9443c01a7336-2b97c462246mr61989645ad.23.1777438321757; Tue, 28 Apr 2026 21:52:01 -0700 (PDT) From: alistair23@gmail.com X-Google-Original-From: alistair.francis@wdc.com To: palmer@dabbelt.com, liwei1518@gmail.com, daniel.barboza@oss.qualcomm.com, zhiwei_liu@linux.alibaba.com, chao.liu.zevorn@gmail.com, qemu-riscv@nongnu.org, qemu-devel@nongnu.org Cc: alistair23@gmail.com, Frank Chang , Alistair Francis Subject: [PULL 46/51] target/riscv: Add a helper to return the current effective priv mode Date: Wed, 29 Apr 2026 14:47:47 +1000 Message-ID: <20260429044752.4176397-47-alistair.francis@wdc.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260429044752.4176397-1-alistair.francis@wdc.com> References: <20260429044752.4176397-1-alistair.francis@wdc.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::62d; envelope-from=alistair23@gmail.com; helo=mail-pl1-x62d.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.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, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1777438516254158500 Content-Type: text/plain; charset="utf-8" From: Frank Chang This helper returns the current effective privilege mode. Signed-off-by: Frank Chang Reviewed-by: Alistair Francis Message-ID: <20260421093715.2995067-3-frank.chang@sifive.com> Signed-off-by: Alistair Francis --- target/riscv/cpu.h | 37 +++++++++++++++++++++++++++++++++++++ target/riscv/cpu_helper.c | 15 +++++---------- 2 files changed, 42 insertions(+), 10 deletions(-) diff --git a/target/riscv/cpu.h b/target/riscv/cpu.h index 4c0676ed53..672f0dab0f 100644 --- a/target/riscv/cpu.h +++ b/target/riscv/cpu.h @@ -806,6 +806,43 @@ static inline RISCVMXL riscv_cpu_sxl(CPURISCVState *en= v) } #endif =20 +/* + * Returns the current effective privilege mode. + * + * @env: CPURISCVState + * @priv: The returned effective privilege mode. + * @virt: The returned effective virtualization mode. + * + * Returns true if the effective privilege mode is modified. + */ +static inline QEMU_ALWAYS_INLINE +bool riscv_cpu_eff_priv(CPURISCVState *env, int *priv, bool *virt) +{ + int mode =3D env->priv; + bool virt_enabled =3D false; + bool mode_modified =3D false; + +#ifndef CONFIG_USER_ONLY + if (mode =3D=3D PRV_M && get_field(env->mstatus, MSTATUS_MPRV)) { + mode =3D get_field(env->mstatus, MSTATUS_MPP); + virt_enabled =3D get_field(env->mstatus, MSTATUS_MPV) && (mode != =3D PRV_M); + mode_modified =3D true; + } else { + virt_enabled =3D env->virt_enabled; + } +#endif + + if (priv) { + *priv =3D mode; + } + + if (virt) { + *virt =3D virt_enabled; + } + + return mode_modified; +} + static inline bool riscv_cpu_allow_16bit_insn(const RISCVCPUConfig *cfg, target_long priv_ver, uint32_t misa_ext) diff --git a/target/riscv/cpu_helper.c b/target/riscv/cpu_helper.c index 659150c646..513bad21af 100644 --- a/target/riscv/cpu_helper.c +++ b/target/riscv/cpu_helper.c @@ -45,19 +45,14 @@ int riscv_env_mmu_index(CPURISCVState *env, bool ifetch) #else bool virt =3D env->virt_enabled; int mode =3D env->priv; + bool mode_modified =3D false; =20 /* All priv -> mmu_idx mapping are here */ if (!ifetch) { - uint64_t status =3D env->mstatus; - - if (mode =3D=3D PRV_M && get_field(status, MSTATUS_MPRV)) { - mode =3D get_field(env->mstatus, MSTATUS_MPP); - virt =3D get_field(env->mstatus, MSTATUS_MPV) && - (mode !=3D PRV_M); - if (virt) { - status =3D env->vsstatus; - } - } + mode_modified =3D riscv_cpu_eff_priv(env, &mode, &virt); + uint64_t status =3D (mode_modified && virt) ? env->vsstatus : + env->mstatus; + if (mode =3D=3D PRV_S && get_field(status, MSTATUS_SUM)) { mode =3D MMUIdx_S_SUM; } --=20 2.53.0 From nobody Sat May 30 19:23:38 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1777438496; cv=none; d=zohomail.com; s=zohoarc; b=Ht6jyzbVvEdcmPY+7DEmtyj7/dW4olaamR5OuMjcG7QNbx47dmrwONLH+2qdpe+OlNj+MLEhPga8PSoSIdMZswMLaD1lxUgfri94A+OJVQ6DcbuJqti36V6nnWIvKwusCg3GtyO8ZW4/amEnAujGGHOcs+ivVnrCymY8juje0NM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777438496; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=wbnW6wTvh9OcnGh3ZD0GUb5Ta4KXummfd+m0+FH/rJQ=; b=K46kWRoMdGPW8osD13M3oqNclisI+KhLJManbFjJJyE3SldgJGpPNaG7R5lkQaYt6cZZE03e1JnNpxJdz4BDilhnXT4Uzp89gad1CqbXLgt3BUaO3/dxP4xieFIZXGLRfCG3auHMkwmnjuSLA6QgAVSfulEMm4kC5JglJkDOa+U= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 17774384960417.151669767100202; Tue, 28 Apr 2026 21:54:56 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wHwuG-0001bU-Ba; Wed, 29 Apr 2026 00:52:16 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wHwuA-0001Ep-Ur for qemu-devel@nongnu.org; Wed, 29 Apr 2026 00:52:12 -0400 Received: from mail-pl1-x634.google.com ([2607:f8b0:4864:20::634]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wHwu8-0001Fp-TY for qemu-devel@nongnu.org; Wed, 29 Apr 2026 00:52:10 -0400 Received: by mail-pl1-x634.google.com with SMTP id d9443c01a7336-2b461310af5so2197905ad.1 for ; Tue, 28 Apr 2026 21:52:07 -0700 (PDT) Received: from toolbx.alistair23.me ([2403:581e:fdf9:0:6209:4521:6813:45b7]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2b988772ae8sm7756145ad.7.2026.04.28.21.52.02 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 28 Apr 2026 21:52:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1777438327; x=1778043127; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=wbnW6wTvh9OcnGh3ZD0GUb5Ta4KXummfd+m0+FH/rJQ=; b=opzBG8Z+gn0+tH0rcRACI/AeOxj9YohvdZE0C6OICtUXFz4nWFcn/8TI0KgHCFNW6d /t5da7hq1gWDkky08XdOVBM9eiFiwfqhe/yfB5jU2QXOZN43+zPL+wYXT1O4PKaxTSdn +xAKaN1GGPf1g5w0eIBxkAbBu3G1g6/bTiITsWGWjoqLJHKkfKe/eldHA2mkk36v6LZ7 fzYM2Qdq3bfRmzjdD2Ut+4LIKE8Tfv/frt4ZqYJulTTE7rwlQB8iaqTp1nQOpOD2B6aF 1DP7URJ5186M+urvqji5On+bTO8odDLqGr3/537I6yVyshhc3FMzh0f+BkzLGQgXeaAr e7dw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777438327; x=1778043127; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=wbnW6wTvh9OcnGh3ZD0GUb5Ta4KXummfd+m0+FH/rJQ=; b=k9M+9he26gOcKTbmzAI8C9TQJjbVigAgDtRS1i+z+spAaejiCMOSEJWFmSBK2RtHeA iyCjYNGNx0XabkDowDFiqRSS9Ehj1mXK6shoUnOdDdnFWG7uvY6nXUxOx1+m9L/yl9eo OEDUvHSthZuC1MpQ079O2WXGEbyl+3g4vQ/w7wdSti2jYYxZksOgWu4oMsY9zM14xhvG o83PGvrwekPFbsKXgyVJDizVce23HseHB7cErSBb2KRf9LahEGa0vBD9BmFi+80kewhd f9w693eQkZh7Ovy8oD/CzlLWKHCxuhFXvLzrxWwr4bH2aoBM7FqyyJF4k11VtbchH0CZ zOFg== X-Forwarded-Encrypted: i=1; AFNElJ+J1K0BwEu/BcLx+k4t/NmXAwtpqd6LhqFKv9CVbNYPk8MDd3KBeXZXDAH/WG5QUXYUbRUtXEFr9oNY@nongnu.org X-Gm-Message-State: AOJu0Yz3rMvOFbY3w72Qo/RGsis9A8WWs8q/K7Jrk9GM9FTdFpdI9r4S UdjZBeKEsg+d6UmIwz0uUgOah5dWyvPVDcEele1KY8idG1i+IqcUOPqA X-Gm-Gg: AeBDies7OZB3Oih3AAIjYgbElE58jYRGCTH5kz5ub4j7LEB3bi0tvtPEPsEh1h0V5wB rZnkswt+xdenEPQueE1wO1X6kpJ8KHg23hcddpaPOw911Nu5QdVBOJO0ZS6pFP3FAfGydjF2rpn XvdqDMCUMf1d4q33bUoFmvNHEe7w8NoICWmEZomfshq7gPdxaEhYbi012GTBk47qzDya+q904NY 0KsBz/F5VQBrvHY1X2BwykCp4QGzS+zm/tHUw4TuaYh5ppftQqGZO3Rb+IDWKbP61GtuCicZE6i KjbeKf7BzS0qPMHheXgxB2ibzSJ4PraUMIlc0im01EGva/NyZopey+jG2TpdG7TnU3/JQEvokfV Ab1DVYx+gPKwL+TUQl7AS6F73/hgZXh+tIAYgKTBm2/vJjumrUCqQ+tO1e+OhXQ5EBwP1zuHStL naIcKMntOnG7/CteFhVSlfQj9Xhrq3VCf02dK5XIPnX6GFJfy3HR90 X-Received: by 2002:a17:903:1a68:b0:2b9:66ab:85b9 with SMTP id d9443c01a7336-2b98823b5bcmr13974165ad.19.1777438326816; Tue, 28 Apr 2026 21:52:06 -0700 (PDT) From: alistair23@gmail.com X-Google-Original-From: alistair.francis@wdc.com To: palmer@dabbelt.com, liwei1518@gmail.com, daniel.barboza@oss.qualcomm.com, zhiwei_liu@linux.alibaba.com, chao.liu.zevorn@gmail.com, qemu-riscv@nongnu.org, qemu-devel@nongnu.org Cc: alistair23@gmail.com, Frank Chang , Daniel Henrique Barboza , Alistair Francis Subject: [PULL 47/51] target/riscv: Fix pointer masking PMM field selection logic Date: Wed, 29 Apr 2026 14:47:48 +1000 Message-ID: <20260429044752.4176397-48-alistair.francis@wdc.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260429044752.4176397-1-alistair.francis@wdc.com> References: <20260429044752.4176397-1-alistair.francis@wdc.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::634; envelope-from=alistair23@gmail.com; helo=mail-pl1-x634.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.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, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1777438498166158500 Content-Type: text/plain; charset="utf-8" From: Frank Chang mstatus.MPV only records the previous virtualization state, and does not affect pointer masking according to the Zjpm specification. This patch rewrites riscv_pm_get_pmm() to follow the architectural definition of Smmpm, Smnpm, and Ssnpm. The resulting PMM selection logic for each mode is summarized below: * mstatus.MXR =3D 1: pointer masking disabled * Smmpm + Smnpm + Ssnpm: M-mode: mseccfg.PMM S-mode: menvcfg.PMM U-mode: senvcfg.PMM VS-mode: henvcfg.PMM VU-mode: senvcfg.PMM * Smmpm + Smnpm (RVS implemented): M-mode: mseccfg.PMM S-mode: menvcfg.PMM U/VS/VU: disabled (Ssnpm not present) * Smmpm + Smnpm (RVS not implemented): M-mode: mseccfg.PMM U-mode: menvcfg.PMM S/VS/VU: disabled (no S-mode) * Smmpm only: M-mode: mseccfg.PMM Other existing modes: pointer masking disabled Signed-off-by: Frank Chang Reviewed-by: Daniel Henrique Barboza Reviewed-by: Alistair Francis Message-ID: <20260421093715.2995067-4-frank.chang@sifive.com> Signed-off-by: Alistair Francis --- target/riscv/cpu_helper.c | 51 +++++++++++++++++++++++++++++++++------ 1 file changed, 44 insertions(+), 7 deletions(-) diff --git a/target/riscv/cpu_helper.c b/target/riscv/cpu_helper.c index 513bad21af..bab4153e53 100644 --- a/target/riscv/cpu_helper.c +++ b/target/riscv/cpu_helper.c @@ -131,13 +131,47 @@ bool riscv_env_smode_dbltrp_enabled(CPURISCVState *en= v, bool virt) #endif } =20 +/* + * Returns the effective PMM field. + * + * @env: CPURISCVState + * + * The PMM field selection logic for each effective privilege mode + * is as follows: + * + * - mstatus.MXR =3D 1: disabled + * + * - Smmpm + Smnpm + Ssnpm: + * M-mode: mseccfg.PMM + * S-mode: menvcfg.PMM + * U-mode: senvcfg.PMM + * VS-mode: henvcfg.PMM + * VU-mode: senvcfg.PMM + * + * - Smmpm + Smnpm (RVS implemented): + * M-mode: mseccfg.PMM + * S-mode: menvcfg.PMM + * U/VS/VU: disabled (Ssnpm not present) + * + * - Smmpm + Smnpm (RVS not implemented): + * M-mode: mseccfg.PMM + * U-mode: menvcfg.PMM + * S/VS/VU: disabled (no S-mode) + * + * - Smmpm only: + * M-mode: mseccfg.PMM + * Other existing modes: disabled + */ RISCVPmPmm riscv_pm_get_pmm(CPURISCVState *env) { #ifndef CONFIG_USER_ONLY - int priv_mode =3D cpu_address_mode(env); + int priv_mode; + bool virt; + + riscv_cpu_eff_priv(env, &priv_mode, &virt); =20 - if (get_field(env->mstatus, MSTATUS_MPRV) && - get_field(env->mstatus, MSTATUS_MXR)) { + if ((priv_mode !=3D PRV_M && get_field(env->mstatus, MSTATUS_MXR)) || + (virt && get_field(env->vsstatus, MSTATUS_MXR))) { return PMM_FIELD_DISABLED; } =20 @@ -149,12 +183,14 @@ RISCVPmPmm riscv_pm_get_pmm(CPURISCVState *env) } break; case PRV_S: - if (riscv_cpu_cfg(env)->ext_smnpm) { - if (get_field(env->mstatus, MSTATUS_MPV)) { - return get_field(env->henvcfg, HENVCFG_PMM); - } else { + if (!virt) { + if (riscv_cpu_cfg(env)->ext_smnpm) { return get_field(env->menvcfg, MENVCFG_PMM); } + } else { + if (riscv_cpu_cfg(env)->ext_ssnpm) { + return get_field(env->henvcfg, HENVCFG_PMM); + } } break; case PRV_U: @@ -171,6 +207,7 @@ RISCVPmPmm riscv_pm_get_pmm(CPURISCVState *env) default: g_assert_not_reached(); } + return PMM_FIELD_DISABLED; #else return PMM_FIELD_DISABLED; --=20 2.53.0 From nobody Sat May 30 19:23:38 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1777438767; cv=none; d=zohomail.com; s=zohoarc; b=BVzHQBxyCDaaOLjCA4PmSPhS0JNulwGBZ6XNmnll8+zWDHu8af8aWStQrANlfjojRwi78w+dPnGZzZix3N/elKJy7LE43RKzRtogXtsLauhdAc5VfXu4h1oUQmynSkNBK9TwyuL8guQlBPTFaS7uywnslO0Tzdal4jEXk/102GI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777438767; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=CFjIveUuOnrhIzHJ+Ozf2SIcBbSrIZOaJvuBTb2IHEQ=; b=mknqlwyi+XLM5fcFZyylqeHs9t+7fJqRc3zlwSdPZZqiKJpehH5ykwIFRjasvrMR5K1GbQVp9t48ddYyg3cBzxuGYeu3k+65TlRkNKStavX+BjBDMCNAoGYbnP0Vvo9sBw8APHbXYs/4Ndk0NLxk/i9DIb4s/8ZLtZ4bAFiBKRk= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1777438767715948.1496332793008; Tue, 28 Apr 2026 21:59:27 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wHwuH-0001iE-Nv; Wed, 29 Apr 2026 00:52: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 1wHwuF-0001Uv-0T for qemu-devel@nongnu.org; Wed, 29 Apr 2026 00:52:15 -0400 Received: from mail-pl1-x633.google.com ([2607:f8b0:4864:20::633]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wHwuD-0001JD-8q for qemu-devel@nongnu.org; Wed, 29 Apr 2026 00:52:14 -0400 Received: by mail-pl1-x633.google.com with SMTP id d9443c01a7336-2aaed195901so52981455ad.0 for ; Tue, 28 Apr 2026 21:52:12 -0700 (PDT) Received: from toolbx.alistair23.me ([2403:581e:fdf9:0:6209:4521:6813:45b7]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2b988772ae8sm7756145ad.7.2026.04.28.21.52.07 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 28 Apr 2026 21:52:11 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1777438331; x=1778043131; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=CFjIveUuOnrhIzHJ+Ozf2SIcBbSrIZOaJvuBTb2IHEQ=; b=oitsMGP5GZF2/C6WEcpnBGGXLsmoTC3fz79eXCrj5HdnkxEseO+g+ZFqRDOkc3xrRP CRCSVdjTJtquESFmGiFU35clg34mB8bdc/YbitGVOPPSKWRoBTvSgqcOCPzN4IBck0px vLgxDGltsrVwhMXQTdexAXPuqXTll/ZWOZWYa+JI2JD69RqLmPPysaAhbSVW5+bZxDwa Xmyw6kukSQ3syZtdrtXUclqy0oL7/MhR/gRDb95G10zpAkzdJfMRvK5QZIbt5ei+XoXC coPCxvQ2AP8lN4SE63cCvdPfR14EsJvmR8JuBTZZj/eQmofmiinWDOP9Qlt4wxrnFuiD pzQQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777438331; x=1778043131; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=CFjIveUuOnrhIzHJ+Ozf2SIcBbSrIZOaJvuBTb2IHEQ=; b=tJmxtwEHlLep9SNOSgYo32SIIbV27bN/dcFbKLeypkDGr29Vrx3hDZYLe2v8bAC/su 3LRiVmU5FJXZAGFDizHcqFZ1GvmwEJV9XCoHWLXXNVauOY4PMKPAV7Xhl95yv8bseK26 Wvl3i+bU0zo7X6y2tNM3WQNWt+22WbI6c1IrMQRam2h+KbyRjfghUKSRsgexDFbD+aj7 ghIUF6MYUlXvSzhfuqjYXnhaSwPK6fK6lrFHFPj3JwhOgX0tp42H2REH5P1xZYAnNlz4 We8VLyXrUF/cCiRl9Ab9z/Ueed7KNoleJ64cC3tb7UcROuVrPllsK9GKviPuwe8Z1I2g J7Nw== X-Forwarded-Encrypted: i=1; AFNElJ+0Nn0eEWPTSKOnrHoOKZL566fcDKRezmIarG6JniDDVP01Y3LvSRH8GuB7LMfNWKqnfppoVT/pKWxI@nongnu.org X-Gm-Message-State: AOJu0YxZMsTYlqfezswSj5lohYUnnEr9ZL007Cm7EGGwwFdow8R0ltZe 6d/anRgZzeDuB00FjwlguMijRv3QN89EWKgaLk3M6RkgV3zJQc5I0QAW2pebiw== X-Gm-Gg: AeBDievnXZw+cKv9GxaBbUI/BTSIOecOP9kerHswSxQtm0klNhL00tuq0QzTaQrazSS rS8fnU6dPEK4O6tPXdeJnUWifmw3AwRAs5O2p9Ixlxs55sM7aNfex5pr4uuMGD868wM/2qJC5Df 6LM5lHIfYk4vdhsDkfpwIgrTtEMuNnHukeERrx3itR89rC1vrAYcIb/I4MM70vqSTIr2l6YO2ZE qgPn3XnLBcVGJ+10wM3lllN2Jmxj75tJAvGTuBntH6+GcO0xpz8EbZmEsfEfd72gfNRiHFPn6cC T5W7ANh26Xn1dR0/pl/7io5gEjeFw67LBQxj8hVGxifEVYzwpMoOuQYFo6xY8fu3OSzPKz2iX/H Z/zarSznR+PVZ/zDkPIPUHUGYQvIQXFC4RTh2Un/OwhSz3XSQXLVxaEHlEOVCt4ZPbQ4Ma7Xa81 vyu+joBzlS8guWTmpg152gsqB6IWF7FqbHnqdv0F0nAjc1Ehi40xeg X-Received: by 2002:a17:903:1a8d:b0:2b4:689a:e420 with SMTP id d9443c01a7336-2b97c3e3166mr60768775ad.8.1777438331591; Tue, 28 Apr 2026 21:52:11 -0700 (PDT) From: alistair23@gmail.com X-Google-Original-From: alistair.francis@wdc.com To: palmer@dabbelt.com, liwei1518@gmail.com, daniel.barboza@oss.qualcomm.com, zhiwei_liu@linux.alibaba.com, chao.liu.zevorn@gmail.com, qemu-riscv@nongnu.org, qemu-devel@nongnu.org Cc: alistair23@gmail.com, Frank Chang , Alistair Francis Subject: [PULL 48/51] target/riscv: Fix pointer masking for virtual-machine load/store insns Date: Wed, 29 Apr 2026 14:47:49 +1000 Message-ID: <20260429044752.4176397-49-alistair.francis@wdc.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260429044752.4176397-1-alistair.francis@wdc.com> References: <20260429044752.4176397-1-alistair.francis@wdc.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::633; envelope-from=alistair23@gmail.com; helo=mail-pl1-x633.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.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, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1777438769326158500 Content-Type: text/plain; charset="utf-8" From: Frank Chang The effective privilege of explicit memory accesses made by virtual-machine load/store instructions (HLV.* and HSV.*) is controlled by hstatus.SPVP. mstatus.MPRV does not affect these virtual-machine load/store instructions. Signed-off-by: Frank Chang Reviewed-by: Alistair Francis Message-ID: <20260421093715.2995067-5-frank.chang@sifive.com> Signed-off-by: Alistair Francis --- target/riscv/cpu_helper.c | 23 +++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/target/riscv/cpu_helper.c b/target/riscv/cpu_helper.c index bab4153e53..2b3fea81d5 100644 --- a/target/riscv/cpu_helper.c +++ b/target/riscv/cpu_helper.c @@ -217,16 +217,23 @@ RISCVPmPmm riscv_pm_get_pmm(CPURISCVState *env) RISCVPmPmm riscv_pm_get_virt_pmm(CPURISCVState *env) { #ifndef CONFIG_USER_ONLY - int priv_mode =3D cpu_address_mode(env); + int priv_mode; + + if (!riscv_cpu_cfg(env)->ext_ssnpm || + get_field(env->mstatus, MSTATUS_MXR) || + get_field(env->vsstatus, MSTATUS_MXR)) { + return PMM_FIELD_DISABLED; + } + + priv_mode =3D get_field(env->hstatus, HSTATUS_SPVP); =20 - if (priv_mode =3D=3D PRV_U) { - return get_field(env->hstatus, HSTATUS_HUPMM); + if (priv_mode =3D=3D PRV_S) { + /* Effective privilege mode: VS */ + return get_field(env->henvcfg, HENVCFG_PMM); } else { - if (get_field(env->hstatus, HSTATUS_SPVP)) { - return get_field(env->henvcfg, HENVCFG_PMM); - } else { - return get_field(env->senvcfg, SENVCFG_PMM); - } + /* Effective privilege mode: VU */ + return (env->priv =3D=3D PRV_U) ? get_field(env->hstatus, HSTATUS_= HUPMM) : + get_field(env->senvcfg, SENVCFG_PMM); } #else return PMM_FIELD_DISABLED; --=20 2.53.0 From nobody Sat May 30 19:23:38 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1777438647; cv=none; d=zohomail.com; s=zohoarc; b=DQdzXo/5WXMEs4CkSo0SmqGALXJ9IbTN+SWrtC5guAhY87i/HpU3iy3gbuHcaCAW+lvozr1nHJyOIIZFnrUTSChqz3ANFDkWTxdbYqrxOMe2Myi5w1oWhpUSvwESvcN9YH4KLkt3pT8k4aAbVzC3qAwhaCpbUg3DCdHMFDrRutM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777438647; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=227Q35fZE6+M79xkJxQPFRbAqP+g1VEBQ9gOOBT2sro=; b=knvPfcEL/4XFyC3flJ0v4Als3Kp4ouZhPYy286NmXq4oHHl4+ActCEkiQc9bQ2lczPlh85xN2mEvNlHhLnWPdoFnRHucvUktmjyGzRR4Lizud+JZMoCSllAJB+LgX8fNR6dvPeIq/84u+8XB4By917Hv1oqoHRYOhHkZuWWoMto= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1777438647474501.9888551601772; Tue, 28 Apr 2026 21:57:27 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wHwuM-0001qR-LZ; Wed, 29 Apr 2026 00:52:28 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wHwuK-0001pA-0U for qemu-devel@nongnu.org; Wed, 29 Apr 2026 00:52:20 -0400 Received: from mail-pl1-x62b.google.com ([2607:f8b0:4864:20::62b]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wHwuI-0001Kn-9S for qemu-devel@nongnu.org; Wed, 29 Apr 2026 00:52:19 -0400 Received: by mail-pl1-x62b.google.com with SMTP id d9443c01a7336-2b2589c26e3so112409555ad.1 for ; Tue, 28 Apr 2026 21:52:17 -0700 (PDT) Received: from toolbx.alistair23.me ([2403:581e:fdf9:0:6209:4521:6813:45b7]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2b988772ae8sm7756145ad.7.2026.04.28.21.52.12 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 28 Apr 2026 21:52:16 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1777438337; x=1778043137; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=227Q35fZE6+M79xkJxQPFRbAqP+g1VEBQ9gOOBT2sro=; b=RPBR9/2KBG05ahmpYzjpJAcuGGQuWU/HkNwT2VeqEQpySKPF2EHRMf0P6CnoyiiyL3 9sa8wEIl4WNQAsQOTfDMdDJuqrCX1R09pDS7TT2i2iQ7f3RZ0PDBL/UlwFbYn/bYujTH Fa90fankYSZ5WkNcQfW0QL+C/rqG3BxP2BW8sO+WVsJJIelDZfGK9ATSpsTPJ3SO5WGt J5qMPeJsUBodFo6QRjay42kDBF4ac4CuR6ihxPOsda1v3QRtHshG2YAM189s8bqcXAPr 3RMj0Hw26MlOhd6yWgkiweD8FrVxJHEuc46+UJymFrpIdY2EEBjo3aBTQia6/G1YOHec eSpw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777438337; x=1778043137; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=227Q35fZE6+M79xkJxQPFRbAqP+g1VEBQ9gOOBT2sro=; b=FtNoeJMwF8ZhNbmPIDcMAVlF1x4Ip4n8qdh/i+c09rHHvJVZwjh54aEbYxeKSEcHx5 GSCWxK42Z9sVA1H3Mrf8whRiFy2RsTZPcqZNPX8Hzp5n4LtkXfu2DDg+XnE/SRYhRlZL tzyljOX+7+h9Hc1o+93Y0d5Id0zLRdrNkOKO5teR/pyziYiFoh6pSg/61+21f3qMb+xz 40FL679Punf0gAR4A1iQw70L/1qolvKS8H8llnp6PLEnIxb/3xLBPL2L2qLss8Fy/mgH MCISalRqc8JSWPuLCzpNHNSUSe1TuYJ23w+fPgDqOdk0oFnSbD+kRHpRD43NGcL37Yx4 z28A== X-Forwarded-Encrypted: i=1; AFNElJ8qwC3b7opr2ynzEM+NzXVUHTji2hxGfuoIxoYiKKYBr4ZTAkrIYHCIMpG+cYhT2riLYVTu83JJyRI4@nongnu.org X-Gm-Message-State: AOJu0YxL7BbqSxlDpa2DwVI2lkcZ/J9uueaTUKfZPmabMS4m6t4JKxC/ rzVD0qoSxKZugxgEqobVRWpnUShRkvbAZSZoiHiZ7sV/74mRMN5UEHZR X-Gm-Gg: AeBDietU+9Pyvu7DIRCtbj2BRgybOJ1lL67rLylXTzJ13b+sfQmy+mXvg4jZH/EAz4x 26KTgq2dzdW85oHoJQf+Khy+ltSR83VYmq/NJEqL1EvfKG3f03ERnn7CVROzeI2ebOsf3LZEsx0 N4VrotXcbPtELBDBCRSryQpr5yuoNRW4xDu4xXmIf1PpaR/gYrBCai8n9TJOuBJSvMAnWcMjPJI UOQV2dTDgX5p2U4kiYJCQqZ5/kFGCjH8T4CJsmj1lV6Rw9jRM1oLDdhmNfHraz1wvQ1wx21jECt l34B+6tm7Doz5hwH6yML3s3RdVWtizZWCfVMCCE2SvJtvzWIX3zutWJeI6r7ULxdmAowDfjS/L+ 0qPHh+ywKJptwIIQKFGFVFWwjqHo6K61tCuEOEvbG2FherIWbEqtpp29B8k1Miyyu3Ye87t1bfm 17GRjUzixBpgogtJXn7VP6vU9g0Ldb+pycRia8waSogQSNamncl240 X-Received: by 2002:a17:903:1aad:b0:2b4:5ed3:415f with SMTP id d9443c01a7336-2b9873fc3afmr21588985ad.18.1777438336684; Tue, 28 Apr 2026 21:52:16 -0700 (PDT) From: alistair23@gmail.com X-Google-Original-From: alistair.francis@wdc.com To: palmer@dabbelt.com, liwei1518@gmail.com, daniel.barboza@oss.qualcomm.com, zhiwei_liu@linux.alibaba.com, chao.liu.zevorn@gmail.com, qemu-riscv@nongnu.org, qemu-devel@nongnu.org Cc: alistair23@gmail.com, Frank Chang , Daniel Henrique Barboza , Alistair Francis Subject: [PULL 49/51] target/riscv: Rename riscv_pm_get_virt_pmm() to riscv_pm_get_vm_ldst_pmm() Date: Wed, 29 Apr 2026 14:47:50 +1000 Message-ID: <20260429044752.4176397-50-alistair.francis@wdc.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260429044752.4176397-1-alistair.francis@wdc.com> References: <20260429044752.4176397-1-alistair.francis@wdc.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::62b; envelope-from=alistair23@gmail.com; helo=mail-pl1-x62b.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.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, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable 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 @gmail.com) X-ZM-MESSAGEID: 1777438648638158500 Content-Type: text/plain; charset="utf-8" From: Frank Chang Rename riscv_pm_get_virt_pmm() to riscv_pm_get_vm_ldst_pmm() to better reflect its actual usage. This function is used when checking the PMM field for virtual-machine load/store instructions (HLV.* and HSV.*), rather than for VS/VU modes. Signed-off-by: Frank Chang Reviewed-by: Daniel Henrique Barboza Reviewed-by: Alistair Francis Message-ID: <20260421093715.2995067-6-frank.chang@sifive.com> Signed-off-by: Alistair Francis --- target/riscv/cpu.h | 2 +- target/riscv/internals.h | 2 +- target/riscv/cpu_helper.c | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/target/riscv/cpu.h b/target/riscv/cpu.h index 672f0dab0f..138183e017 100644 --- a/target/riscv/cpu.h +++ b/target/riscv/cpu.h @@ -890,7 +890,7 @@ bool riscv_cpu_is_32bit(RISCVCPU *cpu); =20 bool riscv_cpu_virt_mem_enabled(CPURISCVState *env); RISCVPmPmm riscv_pm_get_pmm(CPURISCVState *env); -RISCVPmPmm riscv_pm_get_virt_pmm(CPURISCVState *env); +RISCVPmPmm riscv_pm_get_vm_ldst_pmm(CPURISCVState *env); uint32_t riscv_pm_get_pmlen(RISCVPmPmm pmm); =20 RISCVException riscv_csrr(CPURISCVState *env, int csrno, diff --git a/target/riscv/internals.h b/target/riscv/internals.h index d090db2641..7eb6edbe90 100644 --- a/target/riscv/internals.h +++ b/target/riscv/internals.h @@ -209,7 +209,7 @@ static inline target_ulong adjust_addr_body(CPURISCVSta= te *env, =20 /* get pmm field depending on whether addr is */ if (is_virt_addr) { - pmm =3D riscv_pm_get_virt_pmm(env); + pmm =3D riscv_pm_get_vm_ldst_pmm(env); } else { pmm =3D riscv_pm_get_pmm(env); } diff --git a/target/riscv/cpu_helper.c b/target/riscv/cpu_helper.c index 2b3fea81d5..ef1ff7cb0b 100644 --- a/target/riscv/cpu_helper.c +++ b/target/riscv/cpu_helper.c @@ -214,7 +214,7 @@ RISCVPmPmm riscv_pm_get_pmm(CPURISCVState *env) #endif } =20 -RISCVPmPmm riscv_pm_get_virt_pmm(CPURISCVState *env) +RISCVPmPmm riscv_pm_get_vm_ldst_pmm(CPURISCVState *env) { #ifndef CONFIG_USER_ONLY int priv_mode; --=20 2.53.0 From nobody Sat May 30 19:23:38 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1777438683; cv=none; d=zohomail.com; s=zohoarc; b=YpH/kSiXnWiizA3y8vnGwtf9kUGMv5xuPO/eGTjkSyR/n2EbLO+T5lPUULQxPfK4cV1zr5Y8emqzVSFldLbl8Qb/DtUlf5orFj6dc4/YKNt6s8alqJAbXHOBaTehQBQAODRYesASaMlY1tSglbZ4/94HefAPBMI6KbldCdJ3ZEw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777438683; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=VGrPe6UgMgduI1+nKODNfEq2uoIm27MS/m9SYo0Xj0U=; b=VG4kzr/85iwWFDcFDweH+jjNub4e7CA4GG6huRsdvRnXFpGJ/1MSlv7D6VT7p7hSsCxnde32Ra7kR5FuI7Y7YRUMJQQCfUPWq1gkah2lBO4qbObUUiQrRzYvevPicphT9VDSVbyEyXWZW2Gr+911q0SQx6/JUL9BDI4QwSIAQ0Y= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1777438683794603.7862595481242; Tue, 28 Apr 2026 21:58:03 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wHwua-0001uP-Vi; Wed, 29 Apr 2026 00:52:37 -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 1wHwuY-0001sC-Iz for qemu-devel@nongnu.org; Wed, 29 Apr 2026 00:52:34 -0400 Received: from mail-pl1-x635.google.com ([2607:f8b0:4864:20::635]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wHwuW-0001PO-Mg for qemu-devel@nongnu.org; Wed, 29 Apr 2026 00:52:34 -0400 Received: by mail-pl1-x635.google.com with SMTP id d9443c01a7336-2b2429f98d0so72273195ad.2 for ; Tue, 28 Apr 2026 21:52:22 -0700 (PDT) Received: from toolbx.alistair23.me ([2403:581e:fdf9:0:6209:4521:6813:45b7]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2b988772ae8sm7756145ad.7.2026.04.28.21.52.17 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 28 Apr 2026 21:52:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1777438342; x=1778043142; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=VGrPe6UgMgduI1+nKODNfEq2uoIm27MS/m9SYo0Xj0U=; b=c56JDI28joQ3Ff2VyE35UThTMpcALQkt1ntXyCyizd7yTvBv2P1kP7BUNpeFDMp0N4 e/24/+aY4lTOIjdjfVlz5GhmYjQ/l9hazpgYM7OJvs29KzvYC87d7WlaKWFkwx297dLl UixmvsVKi7HEFWADVfZBT1ysXgTbiqaIfnogF2gnhk1UwkdMeANGaAzodg4xckZceyXc xGcfCuu5UtdE2SYf0k0NDOxozpKdgIHOxKik9SIeJtoWTqEDjF6Uom/JtpR/5C61E8AC MiAGhDSHN7/m2bjH4NXRCcNleOAhnGGk/DTXhaspwLKaaqeXNjbrz3Rrm2233PrZGgOY FMzQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777438342; x=1778043142; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=VGrPe6UgMgduI1+nKODNfEq2uoIm27MS/m9SYo0Xj0U=; b=SNgVGRkCDkNCNQXQlcXvzHbnmYsfdB89yHCNx85rEFBE19WhUZnxFB0acxgcYVWG/7 g00KM1AzRs6qfkc3gXBg5H3b6bgkskZff+IptK9osvOHNjaFgRKFU70xy4p6T7aJOMkJ 7uxJvvRDEEb5SKM0xxxM9eamARxzmvHIYVrZBQiftJEcFp4G7PIkEx+a5eF+6jC8Nhox bYagLzJzYnt3vyyEtNDNZeOq96mh7lzLvHQ1nakaR8wVsHm79ixtpXyHphnfAT8r/sCY +LXgBHReg4sJtFFIBMkpGkGlboE5FWscjMfl1q3X+mOg2ehWPY/FgJpOcYUfiGL1Zh3F 0Xvg== X-Forwarded-Encrypted: i=1; AFNElJ9gACmaeHNybWfaSyme0baOFrDTO/4UW8MOWpLHgWjatZRF7bfI+5tD27n4hBt0Ez9tsC48/CdPYZRr@nongnu.org X-Gm-Message-State: AOJu0YzK4Uh3nEuDcFp0i3+Kdh89CX2a0AftXNuszRGf+J7Z9RxRCxyL TvV6TGsLqNvnl/Cx/grg6jn9jXvRYM0mUhCE/Lv6CVGUXOaEgwLPaG/W X-Gm-Gg: AeBDies9sjJO+RDi4Rk9bklozbsfBCDgVH/0sKRMvyjFuSviUP3LivUb1zycv/1W+J8 nqhWuI2AvVjxtNRXGv/uJKDbaQlatm0LyakaxDfQ2Kew1IeRDDzcAxEoupxSiHaKojGnWVF1n0L TDOamM315oAlxYF6h02qIyUAmQMdD59wVD8KMPslK7E5YN8hmaJdw+QMs61H61lAA+LKr9aGtvZ wq3A15zFnvoE3Ot96XHuWXD5RPYpl7zUAJ8J/u38TmqKlkp4F920atUxLAz2Ge9STArCmu41zEj 3kqIAw72p8EMaw9iAcHYLTnlkYjcy7SYc0HIQ4fySOD3YMNWXYCEOLCs++ExETuU3L21psy6Era 4Bp1AYwwNmnoe26eG4XTP5QCc/PfZtODS/mSlh1J73Stpg8EBWyJlEJljGafO8HzAAkfoUu+X7n CJ95D3xuBrdzbISUf5IixJdXCLVPFIch8I231i/urKgdcZXZyaBCd7 X-Received: by 2002:a17:903:166e:b0:2b4:678c:5f1f with SMTP id d9443c01a7336-2b97c1534d6mr61747295ad.0.1777438341690; Tue, 28 Apr 2026 21:52:21 -0700 (PDT) From: alistair23@gmail.com X-Google-Original-From: alistair.francis@wdc.com To: palmer@dabbelt.com, liwei1518@gmail.com, daniel.barboza@oss.qualcomm.com, zhiwei_liu@linux.alibaba.com, chao.liu.zevorn@gmail.com, qemu-riscv@nongnu.org, qemu-devel@nongnu.org Cc: alistair23@gmail.com, Frank Chang , =?UTF-8?q?Radim=20Kr=C4=8Dm=C3=A1=C5=99?= , Alistair Francis Subject: [PULL 50/51] target/riscv: Fix pointer masking translation mode check bug Date: Wed, 29 Apr 2026 14:47:51 +1000 Message-ID: <20260429044752.4176397-51-alistair.francis@wdc.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260429044752.4176397-1-alistair.francis@wdc.com> References: <20260429044752.4176397-1-alistair.francis@wdc.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::635; envelope-from=alistair23@gmail.com; helo=mail-pl1-x635.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.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, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1777438684815158500 From: Frank Chang When running with virtualization in VS/VU mode, or when executing the virtual-machine load/store instructions (HLV.* and HSV.*), the type of address that determines which pointer masking rules apply should be checked against vsatp rather than satp. As a result, sign extension also applies to the virtual-machine load/store instructions. Signed-off-by: Frank Chang Reviewed-by: Radim Kr=C4=8Dm=C3=A1=C5=99 Reviewed-by: Alistair Francis Message-ID: <20260421093715.2995067-7-frank.chang@sifive.com> Signed-off-by: Alistair Francis --- target/riscv/cpu.h | 2 +- target/riscv/internals.h | 4 +--- target/riscv/cpu_helper.c | 19 +++++++++++++++---- target/riscv/tcg/tcg-cpu.c | 4 ++-- 4 files changed, 19 insertions(+), 10 deletions(-) diff --git a/target/riscv/cpu.h b/target/riscv/cpu.h index 138183e017..81c41e3429 100644 --- a/target/riscv/cpu.h +++ b/target/riscv/cpu.h @@ -888,7 +888,7 @@ static inline uint32_t vext_get_vlmax(uint32_t vlenb, u= int32_t vsew, =20 bool riscv_cpu_is_32bit(RISCVCPU *cpu); =20 -bool riscv_cpu_virt_mem_enabled(CPURISCVState *env); +bool riscv_cpu_virt_mem_enabled(CPURISCVState *env, bool is_vm_ldst); RISCVPmPmm riscv_pm_get_pmm(CPURISCVState *env); RISCVPmPmm riscv_pm_get_vm_ldst_pmm(CPURISCVState *env); uint32_t riscv_pm_get_pmlen(RISCVPmPmm pmm); diff --git a/target/riscv/internals.h b/target/riscv/internals.h index 7eb6edbe90..bac6c8032a 100644 --- a/target/riscv/internals.h +++ b/target/riscv/internals.h @@ -219,9 +219,7 @@ static inline target_ulong adjust_addr_body(CPURISCVSta= te *env, return addr; } =20 - if (!is_virt_addr) { - signext =3D riscv_cpu_virt_mem_enabled(env); - } + signext =3D riscv_cpu_virt_mem_enabled(env, is_virt_addr); pmlen =3D riscv_pm_get_pmlen(pmm); addr =3D addr << pmlen; =20 diff --git a/target/riscv/cpu_helper.c b/target/riscv/cpu_helper.c index ef1ff7cb0b..39c3486ae0 100644 --- a/target/riscv/cpu_helper.c +++ b/target/riscv/cpu_helper.c @@ -240,16 +240,27 @@ RISCVPmPmm riscv_pm_get_vm_ldst_pmm(CPURISCVState *en= v) #endif } =20 -bool riscv_cpu_virt_mem_enabled(CPURISCVState *env) +bool riscv_cpu_virt_mem_enabled(CPURISCVState *env, bool is_vm_ldst) { #ifndef CONFIG_USER_ONLY int satp_mode =3D 0; - int priv_mode =3D cpu_address_mode(env); + uint64_t satp; + int priv_mode; + bool virt =3D false; + + if (!is_vm_ldst) { + riscv_cpu_eff_priv(env, &priv_mode, &virt); + } else { + priv_mode =3D get_field(env->hstatus, HSTATUS_SPVP); + virt =3D true; + } + + satp =3D virt ? env->vsatp : env->satp; =20 if (riscv_cpu_mxl(env) =3D=3D MXL_RV32) { - satp_mode =3D get_field(env->satp, SATP32_MODE); + satp_mode =3D get_field(satp, SATP32_MODE); } else { - satp_mode =3D get_field(env->satp, SATP64_MODE); + satp_mode =3D get_field(satp, SATP64_MODE); } =20 return ((satp_mode !=3D VM_1_10_MBARE) && (priv_mode !=3D PRV_M)); diff --git a/target/riscv/tcg/tcg-cpu.c b/target/riscv/tcg/tcg-cpu.c index f3f7808895..02c98cc2db 100644 --- a/target/riscv/tcg/tcg-cpu.c +++ b/target/riscv/tcg/tcg-cpu.c @@ -105,7 +105,7 @@ static TCGTBCPUState riscv_get_tb_cpu_state(CPUState *c= s) RISCVExtStatus fs, vs; uint32_t flags =3D 0; uint64_t ext_flags =3D 0; - bool pm_signext =3D riscv_cpu_virt_mem_enabled(env); + bool pm_signext =3D riscv_cpu_virt_mem_enabled(env, false); =20 if (cpu->cfg.ext_zve32x) { /* @@ -260,7 +260,7 @@ static vaddr riscv_pointer_wrap(CPUState *cs, int mmu_i= dx, return result; } =20 - pm_signext =3D riscv_cpu_virt_mem_enabled(env); + pm_signext =3D riscv_cpu_virt_mem_enabled(env, false); if (pm_signext) { return sextract64(result, 0, 64 - pm_len); } --=20 2.53.0 From nobody Sat May 30 19:23:38 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1777438660; cv=none; d=zohomail.com; s=zohoarc; b=Zti8tNCWCFY0IA3CIV5svdPPpDe7ZwiCET9FxbvcrUA4bzwqDCppeOx1kc/2mC8OBqYL4heMg1NmJ05b/mfUv7Y6jn0M3bsYKziRySw0cabkFC0xZRQGbpTKrxT6UiRH1jIDTGjAjd5xLVHTPJQViF7ZmbnVkgTsU01mpzwQtc4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777438660; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=OjLJBh/2sBoiBZVwNSZgEPrK8yCfqynQ2ATHihNmoyY=; b=alKhOEZ02neXfDICHwnf1hN928niqs05ZtczNcEzk+XKGLEi2JwlGK/Bb8E0rg42mVvfrkU8lWCuchrcEdAMKeyh5dTj8bqlOkygDR5lUYvNWfmzfG5gF4wrJZdgitkBrk151CRDUke4L6yUqCYvKAAd88llr3oExONkpsSEpHM= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 177743866048156.690232747565574; Tue, 28 Apr 2026 21:57:40 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wHwua-0001sp-Ii; Wed, 29 Apr 2026 00:52:36 -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 1wHwuY-0001s2-4w for qemu-devel@nongnu.org; Wed, 29 Apr 2026 00:52:34 -0400 Received: from mail-pl1-x631.google.com ([2607:f8b0:4864:20::631]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wHwuW-0001Q9-Mi for qemu-devel@nongnu.org; Wed, 29 Apr 2026 00:52:33 -0400 Received: by mail-pl1-x631.google.com with SMTP id d9443c01a7336-2ad9a9be502so75844985ad.0 for ; Tue, 28 Apr 2026 21:52:27 -0700 (PDT) Received: from toolbx.alistair23.me ([2403:581e:fdf9:0:6209:4521:6813:45b7]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2b988772ae8sm7756145ad.7.2026.04.28.21.52.22 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 28 Apr 2026 21:52:25 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1777438346; x=1778043146; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=OjLJBh/2sBoiBZVwNSZgEPrK8yCfqynQ2ATHihNmoyY=; b=R7aG7bGtYlMtfeWQQWfQmMhCwTtvaVgOri3Tos1C9ueSbWneZUbLe9Q40LzK0/vLs8 R2gDPfOIGF2+V3ovDDI5LOgkBOKXfO1e6k0oTAphGD4ovNOidSqQWOjjZYVNLnJBTAmI rtUC4Mctzlzg/SV+poVs5gTrz0mXqqLy88denXsDh9zcWr19d7TTgvEgg/5gynTrMUIw OF19yZuXQuNqSWEKbY9lfo0+nW7wA1D6BJPKKeOKt8V2UFFEmO0QYAOpNQFFdwoGplmY e3g55VIDMp5Arzkf9gM9JYZXT9CY9Sx8yhGIQKGhtPN2sqFmpG4YhBlYl9aUKSW0r/Lb eG7Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777438346; x=1778043146; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=OjLJBh/2sBoiBZVwNSZgEPrK8yCfqynQ2ATHihNmoyY=; b=eGl1pVtXjZquyfOMI3ULSquaXxEcNbtJOsJZ/Dsn5E9mzNH5udIS8UiPkxSYgU+m/I 0ix/QFkyuTsLO7nmq3hiM2iiP6+BSCnyCRMPlUpNqWAE66RWAIdtvyiBzk/LD5PYs5yV hViWUx6siK1AO3IGIyljjH8tfF0kpnjOvTjRigPplg41e4si5Qz7VV6P3ArnC55kfsl+ t6VnmyX1aVnJr3RdlxOUFwrSdOG7NsaCEbgYu7oP3yaLDq4qxYfj6KSNKaMcY1MHj+YY a7bEYLJCqkkNytGrs2QZY25o5LTeU30AYNLv+jhmEmTWmVNWA0Iq9Vwt7YPCaS5vDuYS 72qA== X-Forwarded-Encrypted: i=1; AFNElJ8snbiW0mwZAn9iKTNZOTjNKttwVxMW5mEMiEErkpSN0pZB2xVOb00OaXylo9LgGhvD+Z3gga9cLSnw@nongnu.org X-Gm-Message-State: AOJu0YyEE0UpCuKLB+t5D9DhhoRYDOBXqcwyZEoryy7qcbi6vqJRFOf3 JDh7KGAfDyu4wbjTfDy1tzmL5NfiPiJSLm9o/pwS2gyxcqVaDEF6F5M1 X-Gm-Gg: AeBDietbiIiJimtHpMWeE1acGmtWHiBpijO45QDgW5cu6MBCRsOr5iWxiNx5pu+HaBm jd6foL7UkoNK5rms0HqOyEH15UheUyBfXVdkvc5WuNThRSlHMdbuTACtXrph1ZX61UZMVxSMQ/v QJYpysUV2DuR68wQXLAyeAVcpNu+BdoXwBYUi0F+u+Q402HAHXqdhJWFkf+jiGzBnsFKtdL9cL7 y14mjnouuvX2qT8dl7YIyWnENtiUfW83s8Y9rrIFOVCB4nJMn6BLFBnGdL0AfWqfi68a/xrBd5W tEDH6X61M86cw0yDlA1KEFsHYH0unl8art2U05dKVDPW8efioaq0NZUCkjMFaw5PKTXIIUc1Qgz YnB5w2XOWdD/mIRhAgWwD/AbgWi2eVKWv0EtABWPvgkVCR0wYGyB2fFIEO2aATP4ztF/fjQb+5K RsVzFZMR02edw6HVztXW0dZGqC8Tsi245jGRP/Kb1oaHDhD6EtB0yo X-Received: by 2002:a17:902:db0a:b0:2b0:6e60:9586 with SMTP id d9443c01a7336-2b97c41380amr62436105ad.17.1777438346439; Tue, 28 Apr 2026 21:52:26 -0700 (PDT) From: alistair23@gmail.com X-Google-Original-From: alistair.francis@wdc.com To: palmer@dabbelt.com, liwei1518@gmail.com, daniel.barboza@oss.qualcomm.com, zhiwei_liu@linux.alibaba.com, chao.liu.zevorn@gmail.com, qemu-riscv@nongnu.org, qemu-devel@nongnu.org Cc: alistair23@gmail.com, Anton Blanchard , Alistair Francis Subject: [PULL 51/51] target/riscv: rvv: Handle mask/source overlap of vector reduction instructions Date: Wed, 29 Apr 2026 14:47:52 +1000 Message-ID: <20260429044752.4176397-52-alistair.francis@wdc.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260429044752.4176397-1-alistair.francis@wdc.com> References: <20260429044752.4176397-1-alistair.francis@wdc.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::631; envelope-from=alistair23@gmail.com; helo=mail-pl1-x631.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.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, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1777438660667158500 Content-Type: text/plain; charset="utf-8" From: Anton Blanchard Masked vector reduction instructions must not use v0 as a source register. Check rs1 and rs2 against the mask register when vm=3D0. Signed-off-by: Anton Blanchard Reviewed-by: Daniel Henrique Barboza Message-ID: <20260417120626.77415-1-antonb@tenstorrent.com> Signed-off-by: Alistair Francis --- target/riscv/insn_trans/trans_rvv.c.inc | 2 ++ 1 file changed, 2 insertions(+) diff --git a/target/riscv/insn_trans/trans_rvv.c.inc b/target/riscv/insn_tr= ans/trans_rvv.c.inc index 5b72926b3c..e65356eb7c 100644 --- a/target/riscv/insn_trans/trans_rvv.c.inc +++ b/target/riscv/insn_trans/trans_rvv.c.inc @@ -3265,6 +3265,8 @@ static bool reduction_check(DisasContext *s, arg_rmrr= *a) { return require_rvv(s) && vext_check_isa_ill(s) && + require_vm(a->vm, a->rs1) && + require_vm(a->vm, a->rs2) && vext_check_reduction(s, a->rs2); } =20 --=20 2.53.0