272c6793a0
gcc/ * doc/md.texi (vec_load_lanes, vec_store_lanes): Document. * optabs.h (COI_vec_load_lanes, COI_vec_store_lanes): New convert_optab_index values. (vec_load_lanes_optab, vec_store_lanes_optab): New convert optabs. * genopinit.c (optabs): Initialize the new optabs. * internal-fn.def (LOAD_LANES, STORE_LANES): New internal functions. * internal-fn.c (get_multi_vector_move, expand_LOAD_LANES) (expand_STORE_LANES): New functions. * tree.h (build_array_type_nelts): Declare. * tree.c (build_array_type_nelts): New function. * tree-vectorizer.h (vect_model_store_cost): Add a bool argument. (vect_model_load_cost): Likewise. (vect_store_lanes_supported, vect_load_lanes_supported) (vect_record_strided_load_vectors): Declare. * tree-vect-data-refs.c (vect_lanes_optab_supported_p) (vect_store_lanes_supported, vect_load_lanes_supported): New functions. (vect_transform_strided_load): Split out statement recording into... (vect_record_strided_load_vectors): ...this new function. * tree-vect-stmts.c (create_vector_array, read_vector_array) (write_vector_array, create_array_ref): New functions. (vect_model_store_cost): Add store_lanes_p argument. (vect_model_load_cost): Add load_lanes_p argument. (vectorizable_store): Try to use store-lanes functions for interleaved stores. (vectorizable_load): Likewise load-lanes and loads. * tree-vect-slp.c (vect_get_and_check_slp_defs): Update call to vect_model_store_cost. (vect_build_slp_tree): Likewise vect_model_load_cost. From-SVN: r173291
43 lines
1.5 KiB
Modula-2
43 lines
1.5 KiB
Modula-2
/* Internal functions.
|
|
Copyright (C) 2011 Free Software Foundation, Inc.
|
|
|
|
This file is part of GCC.
|
|
|
|
GCC is free software; you can redistribute it and/or modify it under
|
|
the terms of the GNU General Public License as published by the Free
|
|
Software Foundation; either version 3, or (at your option) any later
|
|
version.
|
|
|
|
GCC is distributed in the hope that it will be useful, but WITHOUT ANY
|
|
WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
|
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
|
for more details.
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
along with GCC; see the file COPYING3. If not see
|
|
<http://www.gnu.org/licenses/>. */
|
|
|
|
/* This file specifies a list of internal "functions". These functions
|
|
differ from built-in functions in that they have no linkage and cannot
|
|
be called directly by the user. They represent operations that are only
|
|
synthesised by GCC itself.
|
|
|
|
Internal functions are used instead of tree codes if the operation
|
|
and its operands are more naturally represented as a GIMPLE_CALL
|
|
than a GIMPLE_ASSIGN.
|
|
|
|
Each entry in this file has the form:
|
|
|
|
DEF_INTERNAL_FN (NAME, FLAGS)
|
|
|
|
where NAME is the name of the function and FLAGS is a set of
|
|
ECF_* flags. Each entry must have a corresponding expander
|
|
of the form:
|
|
|
|
void expand_NAME (gimple stmt)
|
|
|
|
where STMT is the statement that performs the call. */
|
|
|
|
DEF_INTERNAL_FN (LOAD_LANES, ECF_CONST | ECF_LEAF)
|
|
DEF_INTERNAL_FN (STORE_LANES, ECF_CONST | ECF_LEAF)
|