diff --git a/riscv_config/constants.py b/riscv_config/constants.py index 2913757..4b9c583 100644 --- a/riscv_config/constants.py +++ b/riscv_config/constants.py @@ -21,10 +21,10 @@ ] + Zvef_extensions + Zved_extensions Z_extensions = [ - "Zicbom", "Zicbop", "Zicboz", "Zicntr", "Zicsr", "Zicond", "Zicfilp", "Zicfiss", "Zifencei", "Zihintpause", "Zihpm", "Zimop", + "Zicbom", "Zicbop", "Zicboz", "Zicntr", "Zicsr", "Zicond", "Zicfilp", "Zicfiss", "Zifencei", "Zihintpause", "Zihpm", "Zilsd", "Zimop", "Zmmul", "Zam", "Zabha", "Zacas", - "Zca", "Zcb", "Zcf", "Zcd" , "Zcmp", "Zcmt", "Zcmop", + "Zca", "Zcb", "Zcf", "Zcd" , "Zcmp", "Zcmt", "Zcmop", "Zcmlsd", "Zfh", "Zfa", "Zfinx", "Zdinx", "Zhinx", "Zhinxmin", "Ztso", diff --git a/riscv_config/isa_validator.py b/riscv_config/isa_validator.py index 94f7412..c71ad89 100644 --- a/riscv_config/isa_validator.py +++ b/riscv_config/isa_validator.py @@ -82,6 +82,12 @@ def get_extension_list(isa): if 'S' in extension_list and not 'U' in extension_list: err_list.append( "S cannot exist without U.") err = True + if 'Zcmlsd' in extension_list and 'Zcf' in extension_list: + err_list.append( "Zcmlsd encodings are mutually exclusive with Zcf.") + err = True + if 'Zcmlsd' in extension_list and 'Zilsd' not in extension_list: + err_list.append( "Zcmlsd cannot exist without Zilsd.") + err = True if 'Zkn' in extension_list and ( set(['Zbkb', 'Zbkc', 'Zbkx', 'Zkne', 'Zknd', 'Zknh']) & set(extension_list)): err_list.append( "Zkn is a superset of Zbkb, Zbkc, Zbkx, Zkne, Zknd, Zknh. In presence of Zkn the subsets must be ignored in the ISA string.") err = True