+2016-01-28 Wilco Dijkstra <wdijkstr@arm.com>
+
+ * config/aarch64/aarch64.c (generic_vector_cost):
+ Set vec_permute_cost.
+ (cortexa57_vector_cost): Likewise.
+ (exynosm1_vector_cost): Likewise.
+ (xgene1_vector_cost): Likewise.
+ (aarch64_builtin_vectorization_cost): Use vec_permute_cost.
+ * config/aarch64/aarch64-protos.h (cpu_vector_cost):
+ Add vec_permute_cost entry.
+
2016-01-28 Wilco Dijkstra <wdijkstr@arm.com>
* config/aarch64/aarch64.md (ccmp<mode>): Disassemble
const int scalar_load_cost; /* Cost of scalar load. */
const int scalar_store_cost; /* Cost of scalar store. */
const int vec_stmt_cost; /* Cost of any vector operation,
- excluding load, store,
+ excluding load, store, permute,
vector-to-scalar and
scalar-to-vector operation. */
+ const int vec_permute_cost; /* Cost of permute operation. */
const int vec_to_scalar_cost; /* Cost of vec-to-scalar operation. */
const int scalar_to_vec_cost; /* Cost of scalar-to-vector
operation. */
1, /* scalar_load_cost */
1, /* scalar_store_cost */
1, /* vec_stmt_cost */
+ 2, /* vec_permute_cost */
1, /* vec_to_scalar_cost */
1, /* scalar_to_vec_cost */
1, /* vec_align_load_cost */
4, /* scalar_load_cost */
1, /* scalar_store_cost */
3, /* vec_stmt_cost */
+ 3, /* vec_permute_cost */
8, /* vec_to_scalar_cost */
8, /* scalar_to_vec_cost */
5, /* vec_align_load_cost */
5, /* scalar_load_cost */
1, /* scalar_store_cost */
3, /* vec_stmt_cost */
+ 3, /* vec_permute_cost */
3, /* vec_to_scalar_cost */
3, /* scalar_to_vec_cost */
5, /* vec_align_load_cost */
5, /* scalar_load_cost */
1, /* scalar_store_cost */
2, /* vec_stmt_cost */
+ 2, /* vec_permute_cost */
4, /* vec_to_scalar_cost */
4, /* scalar_to_vec_cost */
10, /* vec_align_load_cost */
return aarch64_tune_params.vec_costs->cond_not_taken_branch_cost;
case vec_perm:
+ return aarch64_tune_params.vec_costs->vec_permute_cost;
+
case vec_promote_demote:
return aarch64_tune_params.vec_costs->vec_stmt_cost;