On Oct 19, 2023, at 17:35, Clément Léger <cleger@xxxxxxxxxxxx> wrote: > On 18/10/2023 19:26, Evan Green wrote: >> On Wed, Oct 18, 2023 at 5:53 AM Clément Léger <cleger@xxxxxxxxxxxx> wrote: >>> >>> On 18/10/2023 03:45, Jerry Shih wrote: >>>> >>>> The `Zvkb` is the subset of `Zvbb`[1]. So, the `Zvkb` should be bundled with `Zvbb`. >>> >>> Hi Jerry, >>> >>> Thanks for catching this, I think some other extensions will fall in >>> this category as well then (Zvknha/Zvknhb). I will verify that. >> >> The bundling mechanism works well when an extension is a pure lasso >> around other extensions. We'd have to tweak that code if we wanted to >> support cases like this, where the extension is a superset of others, >> but also contains loose change not present anywhere else (and >> therefore also needs to stand as a separate bit). > > For Zvbb and Zvknhb, I used the following code: > > static const unsigned int riscv_zvbb_bundled_exts[] = { > RISCV_ISA_EXT_ZVKB, > RISCV_ISA_EXT_ZVBB > }; > > static const unsigned int riscv_zvknhb_bundled_exts[] = { > RISCV_ISA_EXT_ZVKNHA, > RISCV_ISA_EXT_ZVKNHB > }; > > Which correctly results in both extension (superset + base set) being > enabled when only one is set. Is there something that I'm missing ? We should not bundle zvknha and zvknhb together. They are exclusive. Please check: https://github.com/riscv/riscv-crypto/issues/364#issuecomment-1726782096 -Jerry