@@ -1239,6 +1239,7 @@ static struct riscv_implicit_subset riscv_implicit_subsets[] =
12391239
12401240 {"zicfilp" , "+zicsr" , check_implicit_always },
12411241 {"zicfiss" , "+zimop,+zicsr" , check_implicit_always },
1242+ {"zclsd" , "+zca,+zilsd" , check_implicit_always },
12421243
12431244 {"sha" , "+h,+ssstateen,+shcounterenw,+shvstvala,+shtvala,+shvstvecd,+shvsatpa,+shgatpa" , check_implicit_always },
12441245
@@ -1382,6 +1383,7 @@ static struct riscv_supported_ext riscv_supported_std_z_ext[] =
13821383 {"zimop" , ISA_SPEC_CLASS_DRAFT , 1 , 0 , 0 },
13831384 {"zicfiss" , ISA_SPEC_CLASS_DRAFT , 1 , 0 , 0 },
13841385 {"zicfilp" , ISA_SPEC_CLASS_DRAFT , 1 , 0 , 0 },
1386+ {"zilsd" , ISA_SPEC_CLASS_DRAFT , 1 , 0 , 0 },
13851387 {"zmmul" , ISA_SPEC_CLASS_DRAFT , 1 , 0 , 0 },
13861388 {"za64rs" , ISA_SPEC_CLASS_DRAFT , 1 , 0 , 0 },
13871389 {"za128rs" , ISA_SPEC_CLASS_DRAFT , 1 , 0 , 0 },
@@ -1462,6 +1464,7 @@ static struct riscv_supported_ext riscv_supported_std_z_ext[] =
14621464 {"zcmop" , ISA_SPEC_CLASS_DRAFT , 1 , 0 , 0 },
14631465 {"zcmp" , ISA_SPEC_CLASS_DRAFT , 1 , 0 , 0 },
14641466 {"zcmt" , ISA_SPEC_CLASS_DRAFT , 1 , 0 , 0 },
1467+ {"zclsd" , ISA_SPEC_CLASS_DRAFT , 1 , 0 , 0 },
14651468 {NULL , 0 , 0 , 0 , 0 }
14661469};
14671470
@@ -2158,6 +2161,15 @@ riscv_parse_check_conflicts (riscv_parse_subset_t *rps)
21582161 (_ ("`xtheadvector' is conflict with the `v' extension" ));
21592162 no_conflict = false;
21602163 }
2164+ if (riscv_lookup_subset (rps -> subset_list , "zclsd" , & subset )
2165+ && ((riscv_lookup_subset (rps -> subset_list , "c" , & subset )
2166+ && riscv_lookup_subset (rps -> subset_list , "f" , & subset ))
2167+ || riscv_lookup_subset (rps -> subset_list , "zcf" , & subset )))
2168+ {
2169+ rps -> error_handler
2170+ (_ ("`zclsd' is conflict with the `c+f'/ `zcf' extension" ));
2171+ no_conflict = false;
2172+ }
21612173 if (riscv_lookup_subset (rps -> subset_list , "ssnpm" , & subset ) && xlen != 64 )
21622174 {
21632175 rps -> error_handler (_ ("rv%d does not support the `ssnpm' extension" ),
@@ -2826,6 +2838,10 @@ riscv_multi_subset_supports (riscv_parse_subset_t *rps,
28262838 case INSN_CLASS_SMCTR_OR_SSCTR :
28272839 return (riscv_subset_supports (rps , "smctr" )
28282840 || riscv_subset_supports (rps , "ssctr" ));
2841+ case INSN_CLASS_ZILSD :
2842+ return riscv_subset_supports (rps , "zilsd" );
2843+ case INSN_CLASS_ZCLSD :
2844+ return riscv_subset_supports (rps , "zclsd" );
28292845 case INSN_CLASS_SMRNMI :
28302846 return riscv_subset_supports (rps , "smrnmi" );
28312847 case INSN_CLASS_SVINVAL :
@@ -3143,6 +3159,10 @@ riscv_multi_subset_supports_ext (riscv_parse_subset_t *rps,
31433159 return "zcmt" ;
31443160 case INSN_CLASS_SMCTR_OR_SSCTR :
31453161 return _ ("smctr' or `ssctr" );
3162+ case INSN_CLASS_ZILSD :
3163+ return "zilsd" ;
3164+ case INSN_CLASS_ZCLSD :
3165+ return "zclsd" ;
31463166 case INSN_CLASS_SMRNMI :
31473167 return "smrnmi" ;
31483168 case INSN_CLASS_SVINVAL :
0 commit comments