{"d", "f"},
{"f", "zicsr"},
{"d", "zicsr"},
+
+ {"zdinx", "zfinx"},
+ {"zfinx", "zicsr"},
+ {"zdinx", "zicsr"},
+
{"zk", "zkn"},
{"zk", "zkr"},
{"zk", "zkt"},
{"zfh", "zfhmin"},
{"zfhmin", "f"},
+
+ {"zhinx", "zhinxmin"},
+ {"zhinxmin", "zfinx"},
{NULL, NULL}
};
{"zbc", ISA_SPEC_CLASS_NONE, 1, 0},
{"zbs", ISA_SPEC_CLASS_NONE, 1, 0},
+ {"zfinx", ISA_SPEC_CLASS_NONE, 1, 0},
+ {"zdinx", ISA_SPEC_CLASS_NONE, 1, 0},
+ {"zhinx", ISA_SPEC_CLASS_NONE, 1, 0},
+ {"zhinxmin", ISA_SPEC_CLASS_NONE, 1, 0},
+
{"zbkb", ISA_SPEC_CLASS_NONE, 1, 0},
{"zbkc", ISA_SPEC_CLASS_NONE, 1, 0},
{"zbkx", ISA_SPEC_CLASS_NONE, 1, 0},
{"zbc", &gcc_options::x_riscv_zb_subext, MASK_ZBC},
{"zbs", &gcc_options::x_riscv_zb_subext, MASK_ZBS},
+ {"zfinx", &gcc_options::x_riscv_zinx_subext, MASK_ZFINX},
+ {"zdinx", &gcc_options::x_riscv_zinx_subext, MASK_ZDINX},
+ {"zhinx", &gcc_options::x_riscv_zinx_subext, MASK_ZHINX},
+ {"zhinxmin", &gcc_options::x_riscv_zinx_subext, MASK_ZHINXMIN},
+
{"zbkb", &gcc_options::x_riscv_zk_subext, MASK_ZBKB},
{"zbkc", &gcc_options::x_riscv_zk_subext, MASK_ZBKC},
{"zbkx", &gcc_options::x_riscv_zk_subext, MASK_ZBKX},
IMPLIED_EXT = {
"d" : ["f", "zicsr"],
"f" : ["zicsr"],
+ "zdinx" : ["zfinx", "zicsr"],
+ "zfinx" : ["zicsr"],
+ "zhinx" : ["zhinxmin", "zfinx", "zicsr"],
+ "zhinxmin" : ["zfinx", "zicsr"],
+
"zk" : ["zkn", "zkr", "zkt"],
"zkn" : ["zbkb", "zbkc", "zbkx", "zkne", "zknd", "zknh"],
"zks" : ["zbkb", "zbkc", "zbkx", "zksed", "zksh"],
#define TARGET_ZBC ((riscv_zb_subext & MASK_ZBC) != 0)
#define TARGET_ZBS ((riscv_zb_subext & MASK_ZBS) != 0)
+#define MASK_ZFINX (1 << 0)
+#define MASK_ZDINX (1 << 1)
+#define MASK_ZHINX (1 << 2)
+#define MASK_ZHINXMIN (1 << 3)
+
+#define TARGET_ZFINX ((riscv_zinx_subext & MASK_ZFINX) != 0)
+#define TARGET_ZDINX ((riscv_zinx_subext & MASK_ZDINX) != 0)
+#define TARGET_ZHINX ((riscv_zinx_subext & MASK_ZHINX) != 0)
+#define TARGET_ZHINXMIN ((riscv_zinx_subext & MASK_ZHINXMIN) != 0)
+
#define MASK_ZBKB (1 << 0)
#define MASK_ZBKC (1 << 1)
#define MASK_ZBKX (1 << 2)