1 2013-10-30 Aldy Hernandez <aldyh@redhat.com>
3 * tree-vect-stmts.c: Include cgraph.h.
4 (vectorizable_call): Allow > 3 arguments when a SIMD clone may be
6 (vectorizable_function): Use SIMD clone if available.
7 * ipa-cp.c (determine_versionability): Nodes with SIMD clones are
9 * ggc.h (ggc_alloc_cleared_simd_clone_stat): New.
10 * cgraph.h (enum linear_stride_type): New.
11 (struct simd_clone_arg): New.
12 (struct simd_clone): New.
13 (struct cgraph_node): Add simdclone and simdclone_of fields.
14 (get_simd_clone): Protoize.
15 * cgraph.c (get_simd_clone): New.
16 Add `has_simd_clones' field.
17 * ipa-cp.c (determine_versionability): Disallow functions with
19 * ipa-prop.h (ipa_sra_modify_function_body): Protoize.
20 (sra_ipa_modify_expr): Same.
21 (struct ipa_parm_adjustment): Add new_arg_prefix and new_param
22 fields. Document their use.
23 * ipa-prop.c (ipa_modify_formal_parameters): Handle creating brand
24 new parameters and minor cleanups.
25 * omp-low.c: Add new pass_omp_simd_clone support code.
26 (make_pass_omp_simd_clone): New.
27 (pass_data_omp_simd_clone): Declare.
28 (class pass_omp_simd_clone): Declare.
29 (vecsize_mangle): New.
30 (ipa_omp_simd_clone): New.
31 (simd_clone_clauses_extract): New.
32 (simd_clone_compute_base_data_type): New.
33 (simd_clone_compute_vecsize_and_simdlen): New.
34 (simd_clone_create): New.
35 (simd_clone_adjust_return_type): New.
36 (simd_clone_adjust_return_types): New.
37 (simd_clone_adjust): New.
38 (simd_clone_init_simd_arrays): New.
39 (ipa_simd_modify_function_body): New.
40 (simd_clone_mangle): New.
41 (simd_clone_struct_alloc): New.
42 (simd_clone_struct_copy): New.
43 (class argno_map): New.
44 (argno_map::argno_map(tree)): New.
45 (argno_map::~argno_map): New.
46 (argno_map::operator []): New.
47 (argno_map::length): New.
48 (expand_simd_clones): New.
49 (create_tmp_simd_array): New.
50 * tree.h (OMP_CLAUSE_LINEAR_VARIABLE_STRIDE): New.
51 * tree-core.h (OMP_CLAUSE_LINEAR_VARIABLE_STRIDE): Document.
52 * tree-pass.h (make_pass_omp_simd_clone): New.
53 * passes.def (pass_omp_simd_clone): New.
54 * target.def: Define new hook prefix "TARGET_CILKPLUS_".
55 (default_vecsize_mangle): New.
56 (vecsize_for_mangle): New.
57 * doc/tm.texi.in: Add placeholder for
58 TARGET_CILKPLUS_DEFAULT_VECSIZE_MANGLE and
59 TARGET_CILKPLUS_VECSIZE_FOR_MANGLE.
60 * tree-sra.c (sra_ipa_modify_expr): Remove static modifier.
61 (ipa_sra_modify_function_body): Same.
62 * tree.h (OMP_CLAUSE_LINEAR_VARIABLE_STRIDE): Define.
63 * doc/tm.texi: Regenerate.
64 * config/i386/i386.c (ix86_cilkplus_default_vecsize_mangle): New.
65 (ix86_cilkplus_vecsize_for_mangle): New.
66 (TARGET_CILKPLUS_DEFAULT_VECSIZE_MANGLE): New.
67 (TARGET_CILKPLUS_VECSIZE_FOR_MANGLE): New.