[PATCH 1/3] RISC-V: Add mininal support for Zicbo[mzp]
From: yulong-plct This commit adds minimal support for 'Zicbom','Zicboz' and 'Zicbop' extensions. gcc/ChangeLog: * common/config/riscv/riscv-common.cc: Add zicbom, zicboz, zicbop extensions. * config/riscv/riscv-opts.h (MASK_ZICBOZ): New. (MASK_ZICBOM): New. (MASK_ZICBOP): New. (TARGET_ZICBOZ): New. (TARGET_ZICBOM): New. (TARGET_ZICBOP): New. * config/riscv/riscv.opt: New. --- gcc/common/config/riscv/riscv-common.cc | 6 ++ gcc/config/riscv/riscv-opts.h | 9 + gcc/config/riscv/riscv.opt | 3 +++ 3 files changed, 18 insertions(+) diff --git a/gcc/common/config/riscv/riscv-common.cc b/gcc/common/config/riscv/riscv-common.cc index 1501242e296..52c6ac3b1c8 100644 --- a/gcc/common/config/riscv/riscv-common.cc +++ b/gcc/common/config/riscv/riscv-common.cc @@ -164,6 +164,9 @@ static const struct riscv_ext_version riscv_ext_version_table[] = {"zksed", ISA_SPEC_CLASS_NONE, 1, 0}, {"zksh", ISA_SPEC_CLASS_NONE, 1, 0}, {"zkt", ISA_SPEC_CLASS_NONE, 1, 0}, + {"zicboz",ISA_SPEC_CLASS_NONE, 1, 0}, + {"zicbom",ISA_SPEC_CLASS_NONE, 1, 0}, + {"zicbop",ISA_SPEC_CLASS_NONE, 1, 0}, {"zk",ISA_SPEC_CLASS_NONE, 1, 0}, {"zkn", ISA_SPEC_CLASS_NONE, 1, 0}, @@ -1109,6 +1112,9 @@ static const riscv_ext_flag_table_t riscv_ext_flag_table[] = {"zksed", _options::x_riscv_zk_subext, MASK_ZKSED}, {"zksh", _options::x_riscv_zk_subext, MASK_ZKSH}, {"zkt",_options::x_riscv_zk_subext, MASK_ZKT}, + {"zicboz", _options::x_riscv_zicmo_subext, MASK_ZICBOZ}, + {"zicbom", _options::x_riscv_zicmo_subext, MASK_ZICBOM}, + {"zicbop", _options::x_riscv_zicmo_subext, MASK_ZICBOP}, {"zve32x", _options::x_target_flags, MASK_VECTOR}, {"zve32f", _options::x_target_flags, MASK_VECTOR}, diff --git a/gcc/config/riscv/riscv-opts.h b/gcc/config/riscv/riscv-opts.h index 15bb5e76854..42a7ff698e7 100644 --- a/gcc/config/riscv/riscv-opts.h +++ b/gcc/config/riscv/riscv-opts.h @@ -83,6 +83,15 @@ enum stack_protector_guard { #define TARGET_ZBC((riscv_zb_subext & MASK_ZBC) != 0) #define TARGET_ZBS((riscv_zb_subext & MASK_ZBS) != 0) +#define MASK_ZICBOZ (1 << 0) +#define MASK_ZICBOM (1 << 1) +#define MASK_ZICBOP (1 << 2) + + +#define TARGET_ZICBOZ ((riscv_zicmo_subext & MASK_ZICBOZ) != 0) +#define TARGET_ZICBOM ((riscv_zicmo_subext & MASK_ZICBOM) != 0) +#define TARGET_ZICBOP ((riscv_zicmo_subext & MASK_ZICBOP) != 0) + #define MASK_ZBKB (1 << 0) #define MASK_ZBKC (1 << 1) #define MASK_ZBKX (1 << 2) diff --git a/gcc/config/riscv/riscv.opt b/gcc/config/riscv/riscv.opt index 492aad12324..a0722613fcc 100644 --- a/gcc/config/riscv/riscv.opt +++ b/gcc/config/riscv/riscv.opt @@ -200,6 +200,9 @@ int riscv_zi_subext TargetVariable int riscv_zb_subext +TargetVariable +int riscv_zicmo_subext + TargetVariable int riscv_zk_subext -- 2.17.1
[PATCH 1/3] RISC-V: Add mininal support for Zicbo[mzp]
From: yulong-plct This commit adds minimal support for 'Zicbom','Zicboz' and 'Zicbop' extensions. 7 8 gcc/ChangeLog: 9 10 * common/config/riscv/riscv-common.cc: Add zicbom, zicboz, zicbop extensions. 11 * config/riscv/riscv-opts.h (MASK_ZICBOZ): New. 12 (MASK_ZICBOM): New. 13 (MASK_ZICBOP): New. 14 (TARGET_ZICBOZ): New. 15 (TARGET_ZICBOM): New. 16 (TARGET_ZICBOP): New. 17 * config/riscv/riscv.opt: New. --- gcc/common/config/riscv/riscv-common.cc | 6 ++ gcc/config/riscv/riscv-opts.h | 9 + gcc/config/riscv/riscv.opt | 3 +++ 3 files changed, 18 insertions(+) diff --git a/gcc/common/config/riscv/riscv-common.cc b/gcc/common/config/riscv/riscv-common.cc index a904893b9ed..3ba8f240977 100644 --- a/gcc/common/config/riscv/riscv-common.cc +++ b/gcc/common/config/riscv/riscv-common.cc @@ -164,6 +164,9 @@ static const struct riscv_ext_version riscv_ext_version_table[] = {"zksed", ISA_SPEC_CLASS_NONE, 1, 0}, {"zksh", ISA_SPEC_CLASS_NONE, 1, 0}, {"zkt", ISA_SPEC_CLASS_NONE, 1, 0}, + {"zicboz",ISA_SPEC_CLASS_NONE, 1, 0}, + {"zicbom",ISA_SPEC_CLASS_NONE, 1, 0}, + {"zicbop",ISA_SPEC_CLASS_NONE, 1, 0}, {"zve32x", ISA_SPEC_CLASS_NONE, 1, 0}, {"zve32f", ISA_SPEC_CLASS_NONE, 1, 0}, @@ -1049,6 +1052,9 @@ static const riscv_ext_flag_table_t riscv_ext_flag_table[] = {"zksed", _options::x_riscv_zk_subext, MASK_ZKSED}, {"zksh", _options::x_riscv_zk_subext, MASK_ZKSH}, {"zkt",_options::x_riscv_zk_subext, MASK_ZKT}, + {"zicboz", _options::x_riscv_zicmo_subext, MASK_ZICBOZ}, + {"zicbom", _options::x_riscv_zicmo_subext, MASK_ZICBOM}, + {"zicbop", _options::x_riscv_zicmo_subext, MASK_ZICBOP}, {"zve32x", _options::x_target_flags, MASK_VECTOR}, {"zve32f", _options::x_target_flags, MASK_VECTOR}, diff --git a/gcc/config/riscv/riscv-opts.h b/gcc/config/riscv/riscv-opts.h index 929e4e3a7c5..d17cf6ea18a 100644 --- a/gcc/config/riscv/riscv-opts.h +++ b/gcc/config/riscv/riscv-opts.h @@ -83,6 +83,15 @@ enum stack_protector_guard { #define TARGET_ZBC((riscv_zb_subext & MASK_ZBC) != 0) #define TARGET_ZBS((riscv_zb_subext & MASK_ZBS) != 0) +#define MASK_ZICBOZ (1 << 0) +#define MASK_ZICBOM (1 << 1) +#define MASK_ZICBOP (1 << 2) + + +#define TARGET_ZICBOZ ((riscv_zicmo_subext & MASK_ZICBOZ) != 0) +#define TARGET_ZICBOM ((riscv_zicmo_subext & MASK_ZICBOM) != 0) +#define TARGET_ZICBOP ((riscv_zicmo_subext & MASK_ZICBOP) != 0) + #define MASK_ZBKB (1 << 0) #define MASK_ZBKC (1 << 1) #define MASK_ZBKX (1 << 2) diff --git a/gcc/config/riscv/riscv.opt b/gcc/config/riscv/riscv.opt index 9fffc08220d..2058a874d31 100644 --- a/gcc/config/riscv/riscv.opt +++ b/gcc/config/riscv/riscv.opt @@ -200,6 +200,9 @@ int riscv_zi_subext TargetVariable int riscv_zb_subext +TargetVariable +int riscv_zicmo_subext + TargetVariable int riscv_zk_subext -- 2.17.1