https://gcc.gnu.org/bugzilla/show_bug.cgi?id=126196
--- Comment #5 from GCC Commits <cvs-commit at gcc dot gnu.org> --- The releases/gcc-15 branch has been updated by Jeff Law <[email protected]>: https://gcc.gnu.org/g:a22a702e7cc494b56a6a82f6a1b667f5a7a82fa0 commit r15-11557-ga22a702e7cc494b56a6a82f6a1b667f5a7a82fa0 Author: Jin Ma <[email protected]> Date: Sat Sep 5 10:07:33 2026 -0600 [PATCH v2] RISC-V: Fix overlapping vd/vs2 allocation for vector crypto [PR126196] The RISC-V Vector Crypto specification reserves encodings where the vd register group overlaps vs2 for vsm3me.vv, vsm3c.vi, vaes*.vs and vsm4r.vs. It also reserves encodings where vd overlaps either vs1 or vs2 for vsha2ms.vv, vsha2ch.vv and vsha2cl.vv. Use early-clobber destination constraints for the affected patterns. Select those constraints by UNSPEC where patterns are shared, keeping legal overlap for vghsh.vv, vaeskf2.vi, vgmul.vv and the .vv forms of AES and SM4. PR target/126196 gcc/ChangeLog: * config/riscv/vector-crypto.md (vv_ins_con): New int attribute. (vv_ins1_con): Likewise. (vi_ins1_con): Likewise. (@pred_v<vv_ins1_name><mode>): Use vv_ins1_con. (@pred_crypto_vv<vv_ins_name><ins_type><mode>): Use vv_ins_con. (@pred_vi<vi_ins1_name><mode>_nomaskedoff_scalar): Use vi_ins1_con. (@pred_vsm3me<mode>): Mark the destination as early-clobber. gcc/testsuite/ChangeLog: * gcc.target/riscv/pr126196-1.c: New test. * gcc.target/riscv/pr126196-2.c: New test. * gcc.target/riscv/pr126196-3.c: New test. * gcc.target/riscv/pr126196-4.c: New test. (cherry picked from commit 7e88b4e76418b131268802ccba5f74cf1835fc66)
