[binutils-gdb] bfd/RISC-V: Zv{b,k}* imply Zve32x
Jan Beulich via Binutils-cvs <[email protected]> Fri, 31 Jul 2026 09:00:09 +0000 (GMT)
| Newsgroups | gmane.comp.gnu.binutils.cvs |
|---|---|
| Message-ID | <[email protected]> |
https://sourceware.org/git/gitweb.cgi?p=3Dbinutils-gdb.git;h=3D0d25304ad9be= 210280636df65a4e18788ec657f5 commit 0d25304ad9be210280636df65a4e18788ec657f5 Author: Jan Beulich <[email protected]> Date: Fri Jul 31 10:56:13 2026 +0200 bfd/RISC-V: Zv{b,k}* imply Zve32x =20 The specification is quite explicit about this. Since only forward references are permitted within the table, the pre-existing Zv{b,k} blo= ck needs moving up. Diff: --- bfd/elfxx-riscv.c | 27 ++++++++++++++++++++------- gas/testsuite/gas/riscv/imply.d | 14 +++++++------- 2 files changed, 27 insertions(+), 14 deletions(-) diff --git a/bfd/elfxx-riscv.c b/bfd/elfxx-riscv.c index 4f13976bb7e..b4ec19b9038 100644 --- a/bfd/elfxx-riscv.c +++ b/bfd/elfxx-riscv.c @@ -1244,15 +1244,35 @@ static const struct riscv_implicit_subset riscv_imp= licit_subsets[] =3D {"zvfqwdota8f", "+zve32f", check_implicit_always}, {"zvfwbdota16bf", "+zve32f", check_implicit_always}, {"zvfwdota16bf", "+zve32f", check_implicit_always}, + + {"zvbb", "+zvkb", check_implicit_always}, + {"zvkng", "+zvkn,+zvkg", check_implicit_always}, + {"zvknc", "+zvkn,+zvbc", check_implicit_always}, + {"zvkn", "+zvkned,+zvknhb,+zvkb,+zvkt", check_implicit_always}, + {"zvksg", "+zvks,+zvkg", check_implicit_always}, + {"zvksc", "+zvks,+zvbc", check_implicit_always}, + {"zvks", "+zvksed,+zvksh,+zvkb,+zvkt", check_implicit_always}, + + {"zvbc", "+zve32x", check_implicit_always}, + {"zvkb", "+zve32x", check_implicit_always}, + {"zvkg", "+zve32x", check_implicit_always}, + {"zvkned", "+zve32x", check_implicit_always}, + {"zvknha", "+zve32x", check_implicit_always}, + {"zvknhb", "+zve32x", check_implicit_always}, + {"zvksed", "+zve32x", check_implicit_always}, + {"zvksh", "+zve32x", check_implicit_always}, + {"zvqwbdota8i", "+zve32x", check_implicit_always}, {"zvqwbdota16i", "+zve64x", check_implicit_always}, {"zvqwdota8i", "+zve32x", check_implicit_always}, {"zvqwdota16i", "+zve64x", check_implicit_always}, + {"zve64d", "+d,+zve64f", check_implicit_always}, {"zve64f", "+zve32f,+zve64x,+zvl64b", check_implicit_always}, {"zve32f", "+f,+zve32x,+zvl32b", check_implicit_always}, {"zve64x", "+zve32x,+zvl64b", check_implicit_always}, {"zve32x", "+zvl32b,+zicsr", check_implicit_always}, + {"zvl65536b", "+zvl32768b", check_implicit_always}, {"zvl32768b", "+zvl16384b", check_implicit_always}, {"zvl16384b", "+zvl8192b", check_implicit_always}, @@ -1312,13 +1332,6 @@ static const struct riscv_implicit_subset riscv_impl= icit_subsets[] =3D {"zk", "+zkn,+zkr,+zkt", check_implicit_always}, {"zkn", "+zbkb,+zbkc,+zbkx,+zkne,+zknd,+zknh", check_implicit_always}, {"zks", "+zbkb,+zbkc,+zbkx,+zksed,+zksh", check_implicit_always}, - {"zvbb", "+zvkb", check_implicit_always}, - {"zvkng", "+zvkn,+zvkg", check_implicit_always}, - {"zvknc", "+zvkn,+zvbc", check_implicit_always}, - {"zvkn", "+zvkned,+zvknhb,+zvkb,+zvkt", check_implicit_always}, - {"zvksg", "+zvks,+zvkg", check_implicit_always}, - {"zvksc", "+zvks,+zvbc", check_implicit_always}, - {"zvks", "+zvksed,+zvksh,+zvkb,+zvkt", check_implicit_always}, =20 {"sdtrig", "+zicsr", check_implicit_always}, =20 diff --git a/gas/testsuite/gas/riscv/imply.d b/gas/testsuite/gas/riscv/impl= y.d index 2de5f249600..e64ff21e1de 100644 --- a/gas/testsuite/gas/riscv/imply.d +++ b/gas/testsuite/gas/riscv/imply.d @@ -87,13 +87,13 @@ SYMBOL TABLE: [0-9a-f]+ l .text 0+000 \$xrv32i2p1_zbkb1p0_zbkc1p0_zbkx1p0_zk1p0_zk= n1p0_zknd1p0_zkne1p0_zknh1p0_zkr1p0_zkt1p0 [0-9a-f]+ l .text 0+000 \$xrv32i2p1_zbkb1p0_zbkc1p0_zbkx1p0_zkn1p0_z= knd1p0_zkne1p0_zknh1p0 [0-9a-f]+ l .text 0+000 \$xrv32i2p1_zbkb1p0_zbkc1p0_zbkx1p0_zks1p0_z= ksed1p0_zksh1p0 -[0-9a-f]+ l .text 0+000 \$xrv32i2p1_zvbb1p0_zvkb1p0 -[0-9a-f]+ l .text 0+000 \$xrv32i2p1_zvkb1p0_zvkg1p0_zvkn1p0_zvkned1p= 0_zvkng1p0_zvknhb1p0_zvkt1p0 -[0-9a-f]+ l .text 0+000 \$xrv32i2p1_zvbc1p0_zvkb1p0_zvkn1p0_zvknc1p0= _zvkned1p0_zvknhb1p0_zvkt1p0 -[0-9a-f]+ l .text 0+000 \$xrv32i2p1_zvkb1p0_zvkn1p0_zvkned1p0_zvknhb= 1p0_zvkt1p0 -[0-9a-f]+ l .text 0+000 \$xrv32i2p1_zvkb1p0_zvkg1p0_zvks1p0_zvksed1p= 0_zvksg1p0_zvksh1p0_zvkt1p0 -[0-9a-f]+ l .text 0+000 \$xrv32i2p1_zvbc1p0_zvkb1p0_zvks1p0_zvksc1p0= _zvksed1p0_zvksh1p0_zvkt1p0 -[0-9a-f]+ l .text 0+000 \$xrv32i2p1_zvkb1p0_zvks1p0_zvksed1p0_zvksh1= p0_zvkt1p0 +[0-9a-f]+ l .text 0+000 \$xrv32i2p1_zicsr2p0_zvbb1p0_zve32x1p0_zvkb1= p0_zvl32b1p0 +[0-9a-f]+ l .text 0+000 \$xrv32i2p1_zicsr2p0_zve32x1p0_zvkb1p0_zvkg1= p0_zvkn1p0_zvkned1p0_zvkng1p0_zvknhb1p0_zvkt1p0_zvl32b1p0 +[0-9a-f]+ l .text 0+000 \$xrv32i2p1_zicsr2p0_zvbc1p0_zve32x1p0_zvkb1= p0_zvkn1p0_zvknc1p0_zvkned1p0_zvknhb1p0_zvkt1p0_zvl32b1p0 +[0-9a-f]+ l .text 0+000 \$xrv32i2p1_zicsr2p0_zve32x1p0_zvkb1p0_zvkn1= p0_zvkned1p0_zvknhb1p0_zvkt1p0_zvl32b1p0 +[0-9a-f]+ l .text 0+000 \$xrv32i2p1_zicsr2p0_zve32x1p0_zvkb1p0_zvkg1= p0_zvks1p0_zvksed1p0_zvksg1p0_zvksh1p0_zvkt1p0_zvl32b1p0 +[0-9a-f]+ l .text 0+000 \$xrv32i2p1_zicsr2p0_zvbc1p0_zve32x1p0_zvkb1= p0_zvks1p0_zvksc1p0_zvksed1p0_zvksh1p0_zvkt1p0_zvl32b1p0 +[0-9a-f]+ l .text 0+000 \$xrv32i2p1_zicsr2p0_zve32x1p0_zvkb1p0_zvks1= p0_zvksed1p0_zvksh1p0_zvkt1p0_zvl32b1p0 [0-9a-f]+ l .text 0+000 \$xrv32i2p1_zicsr2p0_sdtrig1p0 [0-9a-f]+ l .text 0+000 \$xrv32i2p1_zicsr2p0_smaia1p0_ssaia1p0 [0-9a-f]+ l .text 0+000 \$xrv32i2p1_zicsr2p0_smcdeleg1p0_ssccfg1p0_s= scsrind1p0