@@ -2142,15 +2142,6 @@ riscv_const_insns (rtx x, bool allow_new_pseudos)
...etc. */
if (riscv_v_ext_mode_p (GET_MODE (x)))
{
- /* const series vector. */
- rtx base, step;
- if (const_vec_series_p (x, &base, &step))
- {
- /* This is not accurate, we will need to adapt the COST
- * accurately according to BASE && STEP. */
- return 1;
- }
-
rtx elt;
if (const_vec_duplicate_p (x, &elt))
{
@@ -2184,6 +2175,15 @@ riscv_const_insns (rtx x, bool allow_new_pseudos)
return 1 + 4; /*vmv.v.x + memory access. */
}
}
+
+ /* const series vector. */
+ rtx base, step;
+ if (const_vec_series_p (x, &base, &step))
+ {
+ /* This cost is not accurate, we will need to adapt the COST
+ accurately according to BASE && STEP. */
+ return 1;
+ }
}
/* TODO: We may support more const vector in the future. */
The corresponding expander (riscv-v.cc:expand_const_vector) matches const_vec_duplicate_p before const_vec_series_p. Reorder to match this behavior when calculating costs. gcc/ChangeLog: * config/riscv/riscv.cc (riscv_const_insns): Relocate. Signed-off-by: Patrick O'Neill <patrick@rivosinc.com> --- gcc/config/riscv/riscv.cc | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-)