Do you know how to build a ISA string with following extension? - g - c - zba - zbs - svnapot - zve64d - zvl128b
Don't trial and error with your gcc and don't read RISC-V ISA spec! OK, I believe it's impossible for most people, even I work for RISC-V so many years, I remember most of the rule of the the canonical order, it's still hard to order that right in short time... So I think it's time to relax that for the -march string inputs, since we have so many extension today, but we still keep the canonicalization within the compiler, because we need that to handle multi-lib and also it's easier to compare different ISA string. This patch break into serveral part: 1) Small refactor patch 2) Change the way of parsing ISA string. 3) Remove unused functions 4) Update test cases 5) Update document