gcc/ChangeLog: * config/loongarch/loongarch.cc (loongarch_builtin_vectorization_cost): --- gcc/config/loongarch/loongarch.cc | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-)
diff --git a/gcc/config/loongarch/loongarch.cc b/gcc/config/loongarch/loongarch.cc index 845fad5a8e8..d24fc30570d 100644 --- a/gcc/config/loongarch/loongarch.cc +++ b/gcc/config/loongarch/loongarch.cc @@ -3860,17 +3860,18 @@ loongarch_builtin_vectorization_cost (enum vect_cost_for_stmt type_of_cost, switch (type_of_cost) { case scalar_stmt: - case scalar_load: case vector_stmt: - case vector_load: case vec_to_scalar: case scalar_to_vec: - case cond_branch_not_taken: case vec_promote_demote: case scalar_store: - case vector_store: + case scalar_load: return 1; + case vector_store: + case vector_load: + return 2; + case vec_perm: return LASX_SUPPORTED_MODE_P (mode) && !LSX_SUPPORTED_MODE_P (mode) ? 2 : 1; @@ -3881,14 +3882,20 @@ loongarch_builtin_vectorization_cost (enum vect_cost_for_stmt type_of_cost, case unaligned_store: case vector_scatter_store: - return 10; + return 5; case cond_branch_taken: - return 3; + return 4; + + case cond_branch_not_taken: + return 2; case vec_construct: elements = TYPE_VECTOR_SUBPARTS (vectype); - return elements / 2 + 1; + if (ISA_HAS_LASX) + return elements + 1; + else + return elements; default: gcc_unreachable (); -- 2.31.1