5858
5959static const RiscvInfo kEmptyRiscvInfo ;
6060
61- static void HandleRiscVIsaLine (StringView line , RiscvFeatures * const features ) {
62- for (size_t i = 0 ; i < RISCV_LAST_ ; ++ i ) {
61+ static void HandleRiscVIsaLineOrdered (StringView line ,
62+ RiscvFeatures * const features ) {
63+ for (size_t i = 0 ; i < RISCV_FIRST_UNORDERED_ ; ++ i ) {
6364 StringView flag = str (kCpuInfoFlags [i ]);
6465 int index_of_flag = CpuFeatures_StringView_IndexOf (line , flag );
6566 bool is_set = index_of_flag != -1 ;
@@ -69,6 +70,22 @@ static void HandleRiscVIsaLine(StringView line, RiscvFeatures* const features) {
6970 }
7071}
7172
73+ static void HandleRiscVIsaLineUnordered (StringView line ,
74+ RiscvFeatures * const features ) {
75+ for (size_t i = RISCV_FIRST_UNORDERED_ ; i < RISCV_LAST_ ; ++ i ) {
76+ bool is_set = CpuFeatures_StringView_HasWord (line , kCpuInfoFlags [i ], '_' );
77+ kSetters [i ](features , is_set );
78+ }
79+ }
80+
81+ static void HandleRiscVIsaLine (StringView line , RiscvFeatures * const features ) {
82+ int idx_underscore = CpuFeatures_StringView_IndexOfChar (line , '_' );
83+ StringView ordered = CpuFeatures_StringView_PopBack (line , idx_underscore );
84+ StringView unordered = CpuFeatures_StringView_PopFront (line , idx_underscore );
85+ HandleRiscVIsaLineOrdered (ordered , features );
86+ HandleRiscVIsaLineUnordered (unordered , features );
87+ }
88+
7289static bool HandleRiscVLine (const LineResult result , RiscvInfo * const info ) {
7390 StringView line = result .line ;
7491 StringView key , value ;
0 commit comments