> diff --git a/gcc/config/riscv/riscv-ext.def b/gcc/config/riscv/riscv-ext.def
> index b9ef0c5ea05..ef8d0400f5d 100644
> --- a/gcc/config/riscv/riscv-ext.def
> +++ b/gcc/config/riscv/riscv-ext.def
> @@ -220,6 +220,19 @@ DEFINE_RISCV_EXT(
>    /* BITMASK_BIT_POSITION*/ 7,
>    /* EXTRA_EXTENSION_FLAGS */ 0)
>
> +DEFINE_RISCV_EXT(
> +  /* NAME */ zibi,
> +  /* UPPERCASE_NAME */ ZIBI,
> +  /* FULL_NAME */ "Branch with immediate",
> +  /* DESC */ "",
> +  /* URL */ ,
> +  /* DEP_EXTS */ ({}),
> +  /* SUPPORTED_VERSIONS */ ({{1, 0}}),

It's 0.6 on the repo?

> diff --git a/gcc/config/riscv/riscv.md b/gcc/config/riscv/riscv.md
> index 2055e5c4a9d..38fd5d9e9ac 100644
> --- a/gcc/config/riscv/riscv.md
> +++ b/gcc/config/riscv/riscv.md
> @@ -3435,6 +3435,32 @@
>    [(set_attr "type" "branch")
>     (set_attr "mode" "none")])
>
> +(define_insn "*branch_zibi<mode>"

I incline this merge with *branch<mode> pattern and then split that
into eqne and others
(e.g. *branch<mode>_eqne *branch<mode>_relational_comparison)
and control the zibi by `ext` attribute

> +  [(set (pc)
> +       (if_then_else
> +        (match_operator 1 "equality_operator"
> +                        [(match_operand:X 2 "register_operand" "r")
> +                         (match_operand:X 3 "zibi_cimm_operand" "zibi")])
> +        (label_ref (match_operand 0 "" ""))
> +        (pc)))]

Reply via email to