[{"id":3674886,"web_url":"http://patchwork.ozlabs.org/comment/3674886/","msgid":"<adXCiogvUgiaiU3u@ZEVORN-PC.localdomain>","list_archive_url":null,"date":"2026-04-08T02:51:06","subject":"Re: [PATCH 5/5] target/riscv: Use ELEN for Fractional LMUL check","submitter":{"id":92265,"url":"http://patchwork.ozlabs.org/api/people/92265/","name":"Chao Liu","email":"chao.liu.zevorn@gmail.com"},"content":"On Tue, Apr 07, 2026 at 02:36:14PM +1000, alistair23@gmail.com wrote:\n> From: Alistair Francis <alistair.francis@wdc.com>\n> \n> The RISC-V spec states that\n> \n> \"\"\"\n> For a given supported fractional LMUL setting, implementations\n> must support SEW settings between SEWMIN and LMUL * ELEN, inclusive.\n> \"\"\"\n> \n> We were previously checking VLEN, instead of ELEN, so let's update to\n> check ELEN instead of VLEN for fractional scaling.\n> \n> Resolves: https://gitlab.com/qemu-project/qemu/-/work_items/3196\n> Signed-off-by: Alistair Francis <alistair.francis@wdc.com>\nReviewed-by: Chao Liu <chao.liu.zevorn@gmail.com>\n\nThanks,\nChao\n> ---\n>  target/riscv/vector_helper.c | 9 ++++-----\n>  1 file changed, 4 insertions(+), 5 deletions(-)\n> \n> diff --git a/target/riscv/vector_helper.c b/target/riscv/vector_helper.c\n> index 83dd26314d..b4fc791eb7 100644\n> --- a/target/riscv/vector_helper.c\n> +++ b/target/riscv/vector_helper.c\n> @@ -47,18 +47,17 @@ target_ulong HELPER(vsetvl)(CPURISCVState *env, target_ulong s1,\n>      target_ulong reserved = s2 &\n>                              MAKE_64BIT_MASK(R_VTYPE_RESERVED_SHIFT,\n>                                              xlen - 1 - R_VTYPE_RESERVED_SHIFT);\n> -    uint16_t vlen = cpu->cfg.vlenb << 3;\n>      int8_t lmul;\n>  \n>      if (vlmul & 4) {\n>          /*\n>           * Fractional LMUL, check:\n>           *\n> -         * VLEN * LMUL >= SEW\n> -         * VLEN >> (8 - lmul) >= sew\n> -         * (vlenb << 3) >> (8 - lmul) >= sew\n> +         * ELEN * LMUL >= SEW\n> +         * ELEN >> (8 - vlmul) >= sew\n>           */\n> -        if (vlmul == 4 || (vlen >> (8 - vlmul)) < sew) {\n> +        if (vlmul == 4 ||\n> +            (cpu->cfg.elen >> (8 - vlmul)) < sew) {\n>              vill = true;\n>          }\n>      }\n> -- \n> 2.53.0\n>","headers":{"Return-Path":"<qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>","X-Original-To":"incoming@patchwork.ozlabs.org","Delivered-To":"patchwork-incoming@legolas.ozlabs.org","Authentication-Results":["legolas.ozlabs.org;\n\tdkim=pass (2048-bit key;\n unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256\n header.s=20251104 header.b=IjQSpnic;\n\tdkim-atps=neutral","legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org\n (client-ip=209.51.188.17; helo=lists.gnu.org;\n envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org;\n receiver=patchwork.ozlabs.org)"],"Received":["from lists.gnu.org (unknown [209.51.188.17])\n\t(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4frWtY2mYFz1xy1\n\tfor <incoming@patchwork.ozlabs.org>; Thu, 09 Apr 2026 04:34:13 +1000 (AEST)","from localhost ([::1] helo=lists1p.gnu.org)\n\tby lists.gnu.org with esmtp (Exim 4.90_1)\n\t(envelope-from <qemu-devel-bounces@nongnu.org>)\n\tid 1wAXiL-000329-Nq; Wed, 08 Apr 2026 14:33:21 -0400","from eggs.gnu.org ([2001:470:142:3::10])\n by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)\n (Exim 4.90_1) (envelope-from <chao.liu.zevorn@gmail.com>)\n id 1wAXht-0002ib-6P\n for qemu-devel@nongnu.org; Wed, 08 Apr 2026 14:32:53 -0400","from mail-qv1-xf43.google.com ([2607:f8b0:4864:20::f43])\n by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)\n (Exim 4.90_1) (envelope-from <chao.liu.zevorn@gmail.com>)\n id 1wAJ0n-0003VA-Hg\n for qemu-devel@nongnu.org; Tue, 07 Apr 2026 22:51:26 -0400","by mail-qv1-xf43.google.com with SMTP id\n 6a1803df08f44-89cc71f4311so73990026d6.3\n for <qemu-devel@nongnu.org>; Tue, 07 Apr 2026 19:51:23 -0700 (PDT)","from ZEVORN-PC.localdomain ([162.244.208.119])\n by smtp.gmail.com with ESMTPSA id\n 6a1803df08f44-8a596e03dc6sm187903536d6.34.2026.04.07.19.51.19\n (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);\n Tue, 07 Apr 2026 19:51:22 -0700 (PDT)"],"DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=gmail.com; s=20251104; t=1775616683; x=1776221483; darn=nongnu.org;\n h=in-reply-to:content-disposition:mime-version:references:message-id\n :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to;\n bh=fHNe/TNtih06CWCEWQPow8KVmvHg+7utpP+3mT+EKAU=;\n b=IjQSpnichy6118OmX2kUIiBIv+W+MUamOQ0ch+b2nKcrw9Uutnrk+u+GyugtH4Hf5u\n 5INVeKsEUlpcdWAlSamxp1IMgYPfDXHsfWpsqeAxVZnpZzF3lDyY+bkjIOO5xx01WZJR\n SuPezRDaASYApGaFZ3gmCWi3uQk6Sf8prIzBrx5TjBoB865NBdSt9p4jzFriyqRljyGg\n oODN8/NP+bsHJzYo1yBhajuT+i5ogM0gYj+/RXxTe0o7Z5RPxmb74pmC3LEQXnI19ZqV\n lZXJUBjuk/OkgGKEBHwCMurNvMwIqnfh/0JsZzULUeD/Xgjoc0unf6Xz2G1VJwRjVlrf\n i+yw==","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=1e100.net; s=20251104; t=1775616683; x=1776221483;\n h=in-reply-to:content-disposition:mime-version:references:message-id\n :subject:cc:to:from:date:x-gm-gg:x-gm-message-state:from:to:cc\n :subject:date:message-id:reply-to;\n bh=fHNe/TNtih06CWCEWQPow8KVmvHg+7utpP+3mT+EKAU=;\n b=AX/QQBuxWNnlAHtDF0kBKy3iYB43ntCwMq78XbfmLHjJhZKnJfip6PwEymk7qtxinA\n cfZr877qObghIXothnQ/tkXZensyYU823vbj8CKbx+vBwgomde6p5osKL4qNXKkFs0w0\n CxlUbeI28XTsEFJD2+YxpkfMGvZhgQ38d+A3reO48gXga7o/GMT/CbdnE9NXPbmsxT3d\n HrfQLh2X9SVw8wC7vvk6iW9uXVYAmvZ+o4+avC4eAL8+TVcBrl7ZxaUc2WmgOugcMz2G\n GMCmi8v9YnKMRpOwoqr8lbeDZMeJZU7EHOwXKqxm3if+y2g/kZ2oFiU3IdWts4oPfPxO\n YsgQ==","X-Forwarded-Encrypted":"i=1;\n AJvYcCV6Du/gGH2YFbHbL8Gwp7kGvqya4PotlWeR5SrWfmXQlypGNsgHIOlkuHETrSHhQK8n2MA/KUSKTOG8@nongnu.org","X-Gm-Message-State":"AOJu0YzHL4joaQ3N5+ykn0P8UDmW6kYnk/xUoa5kh/Sr5qp19KPWHwdj\n Hslwcm913Rkdbhfn1y+CCkvBx7VJg2Ki+ob4Se2elnDWsCeU9Da0u6Y6qIE0DTOFqSc=","X-Gm-Gg":"AeBDiet09mReyP6BPIIfSW7Vfeqx/KpyLosfbbmDncjVsjzLFToQfkCYJzLVvtZILH/\n BECkQ7NXq8b1LiyiTszZD6m07Za0p5NElm7DunUl4Fu99GzVoIwe1YAVnEfGMuqjVv4oF+9DBxH\n wg5QSjdLx61g1hb1tldgiRgoAjHFamZ/SmFFs5iml04LWU3acq/cNfKNOXKCXjhI/pX2uByo1VO\n ZDmZSXaXluDPbZdSx9zB1/2AsXIZtf/ER0WIqG4bNoDrkmU1OPZU4jVeV+EHAegKwecH9kMxdrL\n FsjTx6cdXQJtf1Zs564w056WQ3WbrBf0fsp+JGzNqyH/W/5Wb3b6UuYq47ejeQBI8qGf3kdbzNb\n Pm6hhkh4rXyILGtWp4TtyKq1ehMypoLbxRMSpRE0itmUWiNNq4sb1mKGlBY45ujFp+wieWeWz3Q\n 2eQVQU45XEAxUagvQphAJlW+NjmcQmuZW+hhsEIV2KiwkE5+Yyv5KeRYVg9uugTfBkiJ/HAuO5","X-Received":"by 2002:a05:6214:4e1b:b0:899:f0b1:7332 with SMTP id\n 6a1803df08f44-8a7041fd54emr293737336d6.32.1775616683227;\n Tue, 07 Apr 2026 19:51:23 -0700 (PDT)","Date":"Wed, 8 Apr 2026 10:51:06 +0800","From":"Chao Liu <chao.liu.zevorn@gmail.com>","To":"alistair23@gmail.com","Cc":"palmer@dabbelt.com, liwei1518@gmail.com,\n daniel.barboza@oss.qualcomm.com, zhiwei_liu@linux.alibaba.com,\n qemu-riscv@nongnu.org,\n qemu-devel@nongnu.org, Alistair Francis <alistair.francis@wdc.com>","Subject":"Re: [PATCH 5/5] target/riscv: Use ELEN for Fractional LMUL check","Message-ID":"<adXCiogvUgiaiU3u@ZEVORN-PC.localdomain>","References":"<20260407043614.372871-1-alistair.francis@wdc.com>\n <20260407043614.372871-6-alistair.francis@wdc.com>","MIME-Version":"1.0","Content-Type":"text/plain; charset=us-ascii","Content-Disposition":"inline","In-Reply-To":"<20260407043614.372871-6-alistair.francis@wdc.com>","Received-SPF":"pass client-ip=2607:f8b0:4864:20::f43;\n envelope-from=chao.liu.zevorn@gmail.com; helo=mail-qv1-xf43.google.com","X-Spam_score_int":"-20","X-Spam_score":"-2.1","X-Spam_bar":"--","X-Spam_report":"(-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1,\n DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001,\n RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001,\n 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 <qemu-devel.nongnu.org>","List-Unsubscribe":"<https://lists.nongnu.org/mailman/options/qemu-devel>,\n <mailto:qemu-devel-request@nongnu.org?subject=unsubscribe>","List-Archive":"<https://lists.nongnu.org/archive/html/qemu-devel>","List-Post":"<mailto:qemu-devel@nongnu.org>","List-Help":"<mailto:qemu-devel-request@nongnu.org?subject=help>","List-Subscribe":"<https://lists.nongnu.org/mailman/listinfo/qemu-devel>,\n <mailto:qemu-devel-request@nongnu.org?subject=subscribe>","Errors-To":"qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org","Sender":"qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org"}},{"id":3675082,"web_url":"http://patchwork.ozlabs.org/comment/3675082/","msgid":"<CAKmqyKPcK4_o06geCsganH8h8yV80TfxPSzsuDY=nOsU7a2B6g@mail.gmail.com>","list_archive_url":null,"date":"2026-04-09T05:32:44","subject":"Re: [PATCH 5/5] target/riscv: Use ELEN for Fractional LMUL check","submitter":{"id":64571,"url":"http://patchwork.ozlabs.org/api/people/64571/","name":"Alistair Francis","email":"alistair23@gmail.com"},"content":"On Tue, Apr 7, 2026 at 10:13 PM LIU Zhiwei <zhiwei_liu@linux.alibaba.com> wrote:\n>\n> Hi Alistair,\n>\n> On 4/7/26 12:36 PM, alistair23@gmail.com wrote:\n>\n> From: Alistair Francis <alistair.francis@wdc.com>\n>\n> The RISC-V spec states that\n>\n> \"\"\"\n> For a given supported fractional LMUL setting, implementations\n> must support SEW settings between SEWMIN and LMUL * ELEN, inclusive.\n> \"\"\"\n>\n> I think the meaning  of \"must support\"  in specification is \"must at least support\" instead of \"must only support\".\n\nGood point, I didn't really think about that.\n\n>\n> Sail or Spike have the same check as this patch to prevent user program can run on them, but\n> can't run on RTLs, as RTLs implementation may support SEW besides the  SEWMIN and LMUL * ELEN range.\n>\n> We can refer to discussion here: https://github.com/riscv-software-src/riscv-isa-sim/pull/620\n\nI think this is still the right fix, as it seems like it's unlikely\nthere will be implementations that expect outside that minimum support\nto work, see https://github.com/riscv/riscv-isa-manual/issues/2359#issuecomment-3458627615\nfor example.\n\n>\n> In my opinion, we had better add a option such as \"frac_sew_check\" to make user set right value for their RTL implementation.\n\nIn future if there are implementations that want extra support that we\ncan add a property. Right now I suspect there isn't any software that\nexpects it to work, so it probably isn't an issue and will help catch\nfaulty implementations.\n\nAlistair\n\n>\n> Otherwise,\n> Reviewed-by: LIU Zhiwei <zhiwei_liu@linux.alibaba.com>\n>\n> Thanks,\n> Zhiwei\n>\n> We were previously checking VLEN, instead of ELEN, so let's update to\n> check ELEN instead of VLEN for fractional scaling.\n>\n> Resolves: https://gitlab.com/qemu-project/qemu/-/work_items/3196\n> Signed-off-by: Alistair Francis <alistair.francis@wdc.com>\n> ---\n>  target/riscv/vector_helper.c | 9 ++++-----\n>  1 file changed, 4 insertions(+), 5 deletions(-)\n>\n> diff --git a/target/riscv/vector_helper.c b/target/riscv/vector_helper.c\n> index 83dd26314d..b4fc791eb7 100644\n> --- a/target/riscv/vector_helper.c\n> +++ b/target/riscv/vector_helper.c\n> @@ -47,18 +47,17 @@ target_ulong HELPER(vsetvl)(CPURISCVState *env, target_ulong s1,\n>      target_ulong reserved = s2 &\n>                              MAKE_64BIT_MASK(R_VTYPE_RESERVED_SHIFT,\n>                                              xlen - 1 - R_VTYPE_RESERVED_SHIFT);\n> -    uint16_t vlen = cpu->cfg.vlenb << 3;\n>      int8_t lmul;\n>\n>      if (vlmul & 4) {\n>          /*\n>           * Fractional LMUL, check:\n>           *\n> -         * VLEN * LMUL >= SEW\n> -         * VLEN >> (8 - lmul) >= sew\n> -         * (vlenb << 3) >> (8 - lmul) >= sew\n> +         * ELEN * LMUL >= SEW\n> +         * ELEN >> (8 - vlmul) >= sew\n>           */\n> -        if (vlmul == 4 || (vlen >> (8 - vlmul)) < sew) {\n> +        if (vlmul == 4 ||\n> +            (cpu->cfg.elen >> (8 - vlmul)) < sew) {\n>              vill = true;\n>          }\n>      }","headers":{"Return-Path":"<qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>","X-Original-To":"incoming@patchwork.ozlabs.org","Delivered-To":"patchwork-incoming@legolas.ozlabs.org","Authentication-Results":["legolas.ozlabs.org;\n\tdkim=pass (2048-bit key;\n unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256\n header.s=20251104 header.b=da80+o7N;\n\tdkim-atps=neutral","legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org\n (client-ip=209.51.188.17; helo=lists.gnu.org;\n envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org;\n receiver=patchwork.ozlabs.org)"],"Received":["from lists.gnu.org (lists1p.gnu.org [209.51.188.17])\n\t(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4frpXC285Gz1xtJ\n\tfor <incoming@patchwork.ozlabs.org>; Thu, 09 Apr 2026 15:34:17 +1000 (AEST)","from localhost ([::1] helo=lists1p.gnu.org)\n\tby lists.gnu.org with esmtp (Exim 4.90_1)\n\t(envelope-from <qemu-devel-bounces@nongnu.org>)\n\tid 1wAi0y-0003jN-8A; Thu, 09 Apr 2026 01:33:16 -0400","from eggs.gnu.org ([2001:470:142:3::10])\n by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)\n (Exim 4.90_1) (envelope-from <alistair23@gmail.com>)\n id 1wAi0w-0003io-NQ\n for qemu-devel@nongnu.org; Thu, 09 Apr 2026 01:33:14 -0400","from mail-ej1-x632.google.com ([2a00:1450:4864:20::632])\n by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)\n (Exim 4.90_1) (envelope-from <alistair23@gmail.com>)\n id 1wAi0v-00029F-3l\n for qemu-devel@nongnu.org; Thu, 09 Apr 2026 01:33:14 -0400","by mail-ej1-x632.google.com with SMTP id\n a640c23a62f3a-b9c603ec2dfso60491466b.1\n for <qemu-devel@nongnu.org>; Wed, 08 Apr 2026 22:33:12 -0700 (PDT)"],"ARC-Seal":"i=1; a=rsa-sha256; t=1775712791; cv=none;\n d=google.com; s=arc-20240605;\n b=Cr9QwmowHAsJCBFrP6tJQgEx1QuL5m1tixDD0uMRdDsT/5z5KFXOnCNMRWY/bw+NOc\n kX9feug4XK9RAhPzS2QI3q4BSsCGxJ1OYLTkUUS4LS1KollMzveRg9BKzErJyOCuO2Wc\n OwEmGBdDoU6ksJpDgtAgXwkuzGeC6da/I97I0GIEJ0+gLMwzAn3DJS797I38i3tSO2tS\n UrErx8X8lJ6NXFaCwgF5bIL7aRcuDrobfRhbkodaOAe96A3eGNS1qlJZEQQDTCpn4675\n k/GuxN91Ba0d2GCB7vOKo8FLyTMqqCAXuef/JGop08Kw31ed9ELUJBrdXTeuyWNqc+Xi\n Fedg==","ARC-Message-Signature":"i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com;\n s=arc-20240605;\n h=content-transfer-encoding:cc:to:subject:message-id:date:from\n :in-reply-to:references:mime-version:dkim-signature;\n bh=q7W5EgfYBUCh5Ur7tFbXwCFQlDAeWMpzxE/KfTvgmUc=;\n fh=Kc/dcn40HBQvYOJiosZxh95/A3tD5pu37BAko49UkXA=;\n b=bfQ0eUL+Gst3ZCOc8XEfehzSUVM3l7bWCK+VjbFqexM/WH0yAhqz3V42N4Caz80q9G\n av8wqttfJwb5/Ie8bZf2L8cmTE9Jx3l04YnRvwqVBK5ShjDJots6XbGViyIrqckYqGbJ\n OWfJt7NHdMkpJIEFfJVz1eqSMEe37EUaPsNRvF1BZQ8gVqGV24YlhSeMYBVq8kcHiWJZ\n p8EApsS97SD6LeOjUyV/jX6LLSWiM8JeKEUm8Gx2xqE4e+qryL0ZqLB/5WpuCgWqqsMQ\n GkklMxAlUO9U9AcxuKbGghhfaKVyc8fyCb5kkj+KUKbIDdnVkhDSjl+Gxv996NHcNPyn\n q4tg==; darn=nongnu.org","ARC-Authentication-Results":"i=1; mx.google.com; arc=none","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=gmail.com; s=20251104; t=1775712791; x=1776317591; darn=nongnu.org;\n h=content-transfer-encoding:cc:to:subject:message-id:date:from\n :in-reply-to:references:mime-version:from:to:cc:subject:date\n :message-id:reply-to;\n bh=q7W5EgfYBUCh5Ur7tFbXwCFQlDAeWMpzxE/KfTvgmUc=;\n b=da80+o7NQ3XfZ40/LXo2mmo2tgnIMhVkjRrmA7tL8muClOCdZ8oDAdctbpqai0FZHT\n KkANT1Sb/1oKLaPhRPJvRZAB6y2XxZSDnzx2nMtpY4jn8nFGObHDiPi0Sp27SAToiKT5\n 4xUqGfqIo/9jHV8ZKueSxMG0BliJHH/RZ83crdc6FdXGTYegvz1e6TksMn35T81ZbfXG\n MJ41AiT6orMDdpCFG5yhz4XXv2Mds3xsDd93NiCJ78fDOFsH9H7I/xNCawtok3VOtegr\n Sret0WCErVmr/+h649C2/8i1uPYBtkCBW0g/d2vOtm0VmLm66hg5XKAOatLSHnT6PzYU\n F3ow==","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=1e100.net; s=20251104; t=1775712791; x=1776317591;\n h=content-transfer-encoding:cc:to:subject:message-id:date:from\n :in-reply-to:references:mime-version:x-gm-gg:x-gm-message-state:from\n :to:cc:subject:date:message-id:reply-to;\n bh=q7W5EgfYBUCh5Ur7tFbXwCFQlDAeWMpzxE/KfTvgmUc=;\n b=AvlmnO3L6qdM8cxyjRrt0OZ4e9/R/57E4yGzrWHqN13mddXOhtNGqWEhoV8RitroBE\n 14rX5JGvqqzXgJMS6ylqLVH/vss0IUZfGC8/BXdByK3OSGfJ6O4VzYIM8iQzWwy2JoYM\n X9CoQcyyEF2U29wELgHDt6t0dsjmVwPrKNwXR+aJ0km/sO6siteSEAWHnZ0R7HdiiR0w\n pFzGVJsAT13dp/1i6G5UTNAlJBQOnp8VNokh1QUPImUaxAVF67+VZYS9Tjln0scL/BY7\n HeiqVd/CIp427rtM5ccg/a7ZC7Rj0+WgvGZP1dNlAp14jWqsJ1r4kTON1qTLq4R3iqba\n WBRg==","X-Forwarded-Encrypted":"i=1;\n AJvYcCXScGWF3AIpBBEuxvqLFI1F2LOZkCuTGAELQYzGbuwAWsFcCzn0fOVgklTTFEjtizBE22uAM/Hv04kC@nongnu.org","X-Gm-Message-State":"AOJu0YwLh5WUZwRUan44ZQIC1SuuKGDfN7JdM2vIsneOzWsWIhtrryNs\n yWKgMxmD+N3x06wWOfbOUEiI4/MCMYYalxQGal8yWRN74vpSEwOAcL3dESyABv5EMefieKMhiws\n Ts7WpVBebo+6R3XidpDw1KRLYDXNyOMU=","X-Gm-Gg":"AeBDietV7Ym4vb54NN9fd8e9+5iQyQ0SXRAqd05T/IaVhikhfyZ+r9Zb1ED4mrwFgHZ\n 4/3WHfZGw02krZWBeqGVtXf3FM1rwlrgOLfEJwGBAYVe1fB3Eq05nERc7PKb8UZPy6JYynaBIXO\n aj6T5sPZdFDgX0QqFCPH7r8/KaMJMTjUGG1EEmr0w8CeIKVyOJyG9CnZ9mjdoJ2MDDjsGUfJP7h\n lwt4fFOE3A8kiHeflIlK0RT/3PVN7S8XPRO1d+HGAaDrjy5aE3tqim+dX7LjkCruMDIlX9NQ287\n h5WylTsMRLIzeanAnIRmuc0VTlWI3h6B64S77g==","X-Received":"by 2002:a17:907:6d0e:b0:b9c:a70c:d30b with SMTP id\n a640c23a62f3a-b9ca70cd589mr945268466b.19.1775712790776; Wed, 08 Apr 2026\n 22:33:10 -0700 (PDT)","MIME-Version":"1.0","References":"<20260407043614.372871-1-alistair.francis@wdc.com>\n <20260407043614.372871-6-alistair.francis@wdc.com>\n <ce3cde01-d4cf-4e01-befb-e9631dcf7757@linux.alibaba.com>","In-Reply-To":"<ce3cde01-d4cf-4e01-befb-e9631dcf7757@linux.alibaba.com>","From":"Alistair Francis <alistair23@gmail.com>","Date":"Thu, 9 Apr 2026 15:32:44 +1000","X-Gm-Features":"AQROBzA4ld6oI-3VJgKwhPQdeKKqUMkyO45kO2U3Vfm8inbv8J-vwxdXmuMKgoI","Message-ID":"\n <CAKmqyKPcK4_o06geCsganH8h8yV80TfxPSzsuDY=nOsU7a2B6g@mail.gmail.com>","Subject":"Re: [PATCH 5/5] target/riscv: Use ELEN for Fractional LMUL check","To":"LIU Zhiwei <zhiwei_liu@linux.alibaba.com>","Cc":"palmer@dabbelt.com, liwei1518@gmail.com, daniel.barboza@oss.qualcomm.com,\n chao.liu.zevorn@gmail.com, qemu-riscv@nongnu.org, qemu-devel@nongnu.org,\n Alistair Francis <alistair.francis@wdc.com>","Content-Type":"text/plain; charset=\"UTF-8\"","Content-Transfer-Encoding":"quoted-printable","Received-SPF":"pass client-ip=2a00:1450:4864:20::632;\n envelope-from=alistair23@gmail.com; helo=mail-ej1-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,\n DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1,\n FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001,\n RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001,\n 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 <qemu-devel.nongnu.org>","List-Unsubscribe":"<https://lists.nongnu.org/mailman/options/qemu-devel>,\n <mailto:qemu-devel-request@nongnu.org?subject=unsubscribe>","List-Archive":"<https://lists.nongnu.org/archive/html/qemu-devel>","List-Post":"<mailto:qemu-devel@nongnu.org>","List-Help":"<mailto:qemu-devel-request@nongnu.org?subject=help>","List-Subscribe":"<https://lists.nongnu.org/mailman/listinfo/qemu-devel>,\n <mailto:qemu-devel-request@nongnu.org?subject=subscribe>","Errors-To":"qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org","Sender":"qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org"}},{"id":3675089,"web_url":"http://patchwork.ozlabs.org/comment/3675089/","msgid":"<0fc9dde4-16a3-425f-9e51-38e892c34008@linux.alibaba.com>","list_archive_url":null,"date":"2026-04-09T06:05:36","subject":"Re: [PATCH 5/5] target/riscv: Use ELEN for Fractional LMUL check","submitter":{"id":84720,"url":"http://patchwork.ozlabs.org/api/people/84720/","name":"LIU Zhiwei","email":"zhiwei_liu@linux.alibaba.com"},"content":"On 4/9/26 1:32 PM, Alistair Francis wrote:\n> On Tue, Apr 7, 2026 at 10:13 PM LIU Zhiwei <zhiwei_liu@linux.alibaba.com> wrote:\n>> Hi Alistair,\n>>\n>> On 4/7/26 12:36 PM, alistair23@gmail.com wrote:\n>>\n>> From: Alistair Francis <alistair.francis@wdc.com>\n>>\n>> The RISC-V spec states that\n>>\n>> \"\"\"\n>> For a given supported fractional LMUL setting, implementations\n>> must support SEW settings between SEWMIN and LMUL * ELEN, inclusive.\n>> \"\"\"\n>>\n>> I think the meaning  of \"must support\"  in specification is \"must at least support\" instead of \"must only support\".\n> Good point, I didn't really think about that.\n>\n>> Sail or Spike have the same check as this patch to prevent user program can run on them, but\n>> can't run on RTLs, as RTLs implementation may support SEW besides the  SEWMIN and LMUL * ELEN range.\n>>\n>> We can refer to discussion here: https://github.com/riscv-software-src/riscv-isa-sim/pull/620\n> I think this is still the right fix, as it seems like it's unlikely\n> there will be implementations that expect outside that minimum support\n> to work, see https://github.com/riscv/riscv-isa-manual/issues/2359#issuecomment-3458627615\n> for example.\nMake sense.\n>\n>> In my opinion, we had better add a option such as \"frac_sew_check\" to make user set right value for their RTL implementation.\n> In future if there are implementations that want extra support that we\n> can add a property.\nAgree.\n> Right now I suspect there isn't any software that\n> expects it to work, so it probably isn't an issue and will help catch\n> faulty implementations.\n\nSome RTLs can issue more vector instructions one cycle when lmul = 1/2 \nthan lmul = 1. It is useful for some workloads, such as H264, which \ntypical calculation unit is 128 bit.\nIf vlen is 256bit, software can set lmul to 1/2 (64bit sew is allowed by \nspecification, but forbidden by this patch) to issue more vector \ninstructions one cycle for this type workload.\n\nStandard software should use this feature by vsetvl and vill detection.  \nSo it should also work with this patch.\n\nThanks,\nZhiwei\n\n>\n> Alistair\n>\n>> Otherwise,\n>> Reviewed-by: LIU Zhiwei <zhiwei_liu@linux.alibaba.com>\n>>\n>> Thanks,\n>> Zhiwei\n>>\n>> We were previously checking VLEN, instead of ELEN, so let's update to\n>> check ELEN instead of VLEN for fractional scaling.\n>>\n>> Resolves: https://gitlab.com/qemu-project/qemu/-/work_items/3196\n>> Signed-off-by: Alistair Francis <alistair.francis@wdc.com>\n>> ---\n>>   target/riscv/vector_helper.c | 9 ++++-----\n>>   1 file changed, 4 insertions(+), 5 deletions(-)\n>>\n>> diff --git a/target/riscv/vector_helper.c b/target/riscv/vector_helper.c\n>> index 83dd26314d..b4fc791eb7 100644\n>> --- a/target/riscv/vector_helper.c\n>> +++ b/target/riscv/vector_helper.c\n>> @@ -47,18 +47,17 @@ target_ulong HELPER(vsetvl)(CPURISCVState *env, target_ulong s1,\n>>       target_ulong reserved = s2 &\n>>                               MAKE_64BIT_MASK(R_VTYPE_RESERVED_SHIFT,\n>>                                               xlen - 1 - R_VTYPE_RESERVED_SHIFT);\n>> -    uint16_t vlen = cpu->cfg.vlenb << 3;\n>>       int8_t lmul;\n>>\n>>       if (vlmul & 4) {\n>>           /*\n>>            * Fractional LMUL, check:\n>>            *\n>> -         * VLEN * LMUL >= SEW\n>> -         * VLEN >> (8 - lmul) >= sew\n>> -         * (vlenb << 3) >> (8 - lmul) >= sew\n>> +         * ELEN * LMUL >= SEW\n>> +         * ELEN >> (8 - vlmul) >= sew\n>>            */\n>> -        if (vlmul == 4 || (vlen >> (8 - vlmul)) < sew) {\n>> +        if (vlmul == 4 ||\n>> +            (cpu->cfg.elen >> (8 - vlmul)) < sew) {\n>>               vill = true;\n>>           }\n>>       }","headers":{"Return-Path":"<qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>","X-Original-To":"incoming@patchwork.ozlabs.org","Delivered-To":"patchwork-incoming@legolas.ozlabs.org","Authentication-Results":["legolas.ozlabs.org;\n\tdkim=pass (1024-bit key;\n unprotected) header.d=linux.alibaba.com header.i=@linux.alibaba.com\n header.a=rsa-sha256 header.s=default header.b=n9NaPVp1;\n\tdkim-atps=neutral","legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org\n (client-ip=209.51.188.17; helo=lists.gnu.org;\n envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org;\n receiver=patchwork.ozlabs.org)"],"Received":["from lists.gnu.org (lists1p.gnu.org [209.51.188.17])\n\t(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4frqFd47fZz1yCv\n\tfor <incoming@patchwork.ozlabs.org>; Thu, 09 Apr 2026 16:06:43 +1000 (AEST)","from localhost ([::1] helo=lists1p.gnu.org)\n\tby lists.gnu.org with esmtp (Exim 4.90_1)\n\t(envelope-from <qemu-devel-bounces@nongnu.org>)\n\tid 1wAiWY-0006uP-6E; Thu, 09 Apr 2026 02:05:54 -0400","from eggs.gnu.org ([2001:470:142:3::10])\n by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)\n (Exim 4.90_1) (envelope-from <zhiwei_liu@linux.alibaba.com>)\n id 1wAiWW-0006u5-9P; Thu, 09 Apr 2026 02:05:52 -0400","from out30-98.freemail.mail.aliyun.com ([115.124.30.98])\n by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)\n (Exim 4.90_1) (envelope-from <zhiwei_liu@linux.alibaba.com>)\n id 1wAiWS-0007mV-KE; Thu, 09 Apr 2026 02:05:51 -0400","from 30.166.65.22(mailfrom:zhiwei_liu@linux.alibaba.com\n fp:SMTPD_---0X0hKfDa_1775714736 cluster:ay36) by smtp.aliyun-inc.com;\n Thu, 09 Apr 2026 14:05:37 +0800"],"DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=linux.alibaba.com; s=default;\n t=1775714738; h=Message-ID:Date:MIME-Version:Subject:To:From:Content-Type;\n bh=+2eRMK0bbolQD6BTn0BD1C/2iHm2dNdRtiel+Rp75ug=;\n b=n9NaPVp1zYBBJrI3iIMHjnb1xpIyGWU0Ak2Jm6jHe0wzJrUwZDAZwQ1vl+5W2v3RiQqvbkPDnftPzRgBWBiGT6dsgToSw6u5zP/IRQUszCDWKBlege4pRHh7q/CuV4XG1+5fArlcHaTnYEB/ACdKlI7SMBKBaqswRi0FGWoax0M=","X-Alimail-AntiSpam":"AC=PASS; BC=-1|-1; BR=01201311R131e4; CH=green;\n DM=||false|;\n DS=||; FP=0|-1|-1|-1|0|-1|-1|-1; HT=maildocker-contentspam033032089153;\n MF=zhiwei_liu@linux.alibaba.com; NM=1; PH=DS; RN=8; SR=0;\n TI=SMTPD_---0X0hKfDa_1775714736;","Message-ID":"<0fc9dde4-16a3-425f-9e51-38e892c34008@linux.alibaba.com>","Date":"Thu, 9 Apr 2026 14:05:36 +0800","MIME-Version":"1.0","User-Agent":"Mozilla Thunderbird","Subject":"Re: [PATCH 5/5] target/riscv: Use ELEN for Fractional LMUL check","To":"Alistair Francis <alistair23@gmail.com>","Cc":"palmer@dabbelt.com, liwei1518@gmail.com, daniel.barboza@oss.qualcomm.com,\n chao.liu.zevorn@gmail.com, qemu-riscv@nongnu.org, qemu-devel@nongnu.org,\n Alistair Francis <alistair.francis@wdc.com>","References":"<20260407043614.372871-1-alistair.francis@wdc.com>\n <20260407043614.372871-6-alistair.francis@wdc.com>\n <ce3cde01-d4cf-4e01-befb-e9631dcf7757@linux.alibaba.com>\n <CAKmqyKPcK4_o06geCsganH8h8yV80TfxPSzsuDY=nOsU7a2B6g@mail.gmail.com>","Content-Language":"en-US","From":"LIU Zhiwei <zhiwei_liu@linux.alibaba.com>","In-Reply-To":"\n <CAKmqyKPcK4_o06geCsganH8h8yV80TfxPSzsuDY=nOsU7a2B6g@mail.gmail.com>","Content-Type":"text/plain; charset=UTF-8; format=flowed","Content-Transfer-Encoding":"8bit","Received-SPF":"pass client-ip=115.124.30.98;\n envelope-from=zhiwei_liu@linux.alibaba.com;\n helo=out30-98.freemail.mail.aliyun.com","X-Spam_score_int":"-174","X-Spam_score":"-17.5","X-Spam_bar":"-----------------","X-Spam_report":"(-17.5 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1,\n DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, ENV_AND_HDR_SPF_MATCH=-0.5,\n RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001,\n RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001,\n UNPARSEABLE_RELAY=0.001, USER_IN_DEF_DKIM_WL=-7.5,\n USER_IN_DEF_SPF_WL=-7.5 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 <qemu-devel.nongnu.org>","List-Unsubscribe":"<https://lists.nongnu.org/mailman/options/qemu-devel>,\n <mailto:qemu-devel-request@nongnu.org?subject=unsubscribe>","List-Archive":"<https://lists.nongnu.org/archive/html/qemu-devel>","List-Post":"<mailto:qemu-devel@nongnu.org>","List-Help":"<mailto:qemu-devel-request@nongnu.org?subject=help>","List-Subscribe":"<https://lists.nongnu.org/mailman/listinfo/qemu-devel>,\n <mailto:qemu-devel-request@nongnu.org?subject=subscribe>","Errors-To":"qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org","Sender":"qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org"}}]