GCC Middle and Back End API Reference
|
#include "config.h"
#include "system.h"
#include "coretypes.h"
#include "backend.h"
#include "rtl.h"
#include "tree.h"
#include "gimple.h"
#include "tree-pass.h"
#include "ssa.h"
#include "expmed.h"
#include "optabs-tree.h"
#include "diagnostic.h"
#include "fold-const.h"
#include "stor-layout.h"
#include "langhooks.h"
#include "tree-eh.h"
#include "gimple-iterator.h"
#include "gimplify-me.h"
#include "gimplify.h"
#include "tree-cfg.h"
#include "tree-vector-builder.h"
#include "vec-perm-indices.h"
#include "insn-config.h"
#include "tree-ssa-dce.h"
#include "gimple-fold.h"
#include "gimple-match.h"
#include "recog.h"
#include "optabs-libfuncs.h"
#include "cfgloop.h"
#include "tree-vectorizer.h"
#include "gt-tree-vect-generic.h"
Macros | |
#define | INCLUDE_MEMORY |
Typedefs | |
typedef tree(* | elem_op_func) (gimple_stmt_iterator *, tree, tree, tree, tree, tree, enum tree_code, tree) |
Variables | |
static tree | vector_inner_type |
static tree | vector_last_type |
static int | vector_last_nunits |
#define INCLUDE_MEMORY |
Lower vector operations to scalar operations. Copyright (C) 2004-2024 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/>.
typedef tree(* elem_op_func) (gimple_stmt_iterator *, tree, tree, tree, tree, tree, enum tree_code, tree) |
|
static |
Helper function of expand_vector_divmod. Gimplify a RSHIFT_EXPR in type of OP0 with shift counts in SHIFTCNTS array and return the temporary holding the result if successful, otherwise return NULL_TREE.
References build_int_cst(), gimplify_build2(), i, NULL_TREE, nunits_for_known_piecewise_op(), optab_for_tree_code(), optab_handler(), optab_scalar, optab_vector, TREE_TYPE, TYPE_MODE, and unknown_optab.
Referenced by expand_vector_divmod().
|
static |
Return a suitable vector types made of SUBPARTS units each of mode "word_mode" (the global variable).
References build_vector_type(), gcc_assert, if(), TREE_CODE, lang_hooks_for_types::type_for_mode, lang_hooks::types, vector_inner_type, vector_last_nunits, vector_last_type, and word_mode.
Referenced by expand_vector_parallel().
|
static |
References a, b, gimplify_build2(), TREE_TYPE, tree_vec_extract(), and VECTOR_TYPE_P.
Referenced by expand_vector_operation(), loc_list_from_tree_1(), and mem_loc_descriptor().
|
static |
Construct expression (A[BITPOS] code B[BITPOS]) ? -1 : 0 INNER_TYPE is the type of A and B elements returned expression is of signed integer type with the size equal to the size of INNER_TYPE.
References a, b, boolean_type_node, build2(), build_all_ones_cst(), build_zero_cst(), gimplify_build3(), TREE_TYPE, and tree_vec_extract().
Referenced by expand_vector_comparison().
|
static |
References a, b, gimple_assign_rhs1(), gimplify_build3(), gsi_stmt(), TREE_TYPE, tree_vec_extract(), unshare_expr(), and VECTOR_TYPE_P.
Referenced by expand_vector_scalar_condition().
|
static |
References b, build_replicated_int_cst(), GET_MODE_MASK, gimplify_build1(), gimplify_build2(), TREE_TYPE, tree_vec_extract(), TYPE_MODE, and vector_element_bits().
Referenced by expand_vector_operation().
|
static |
Expand vector addition to scalars. This does bit twiddling in order to increase parallelism: a + b = (((int) a & 0x7f7f7f7f) + ((int) b & 0x7f7f7f7f)) ^ (a ^ b) & 0x80808080 a - b = (((int) a | 0x80808080) - ((int) b & 0x7f7f7f7f)) ^ (a ^ ~b) & 0x80808080 -b = (0x80808080 - ((int) b & 0x7f7f7f7f)) ^ (~b & 0x80808080) This optimization should be done only if 4 vector items or more fit into a word.
References a, b, build_replicated_int_cst(), GET_MODE_MASK, gimplify_build1(), gimplify_build2(), TREE_TYPE, tree_vec_extract(), TYPE_MODE, and vector_element_bits().
Referenced by expand_vector_operation().
|
static |
References a, gimplify_build1(), and tree_vec_extract().
Referenced by expand_vector_operation(), loc_list_from_tree_1(), and mem_loc_descriptor().
|
static |
Callback for expand_vector_piecewise to do VEC_CONVERT ifn call lowering. If INNER_TYPE is not a vector type, this is a scalar fallback.
References a, build_vector_type(), g, gimple_build_call(), gimple_call_set_lhs(), gimplify_build1(), gsi_insert_before(), GSI_SAME_STMT, make_ssa_name(), TREE_TYPE, tree_vec_extract(), TYPE_VECTOR_SUBPARTS(), and VECTOR_TYPE_P.
Referenced by expand_vector_conversion().
|
static |
Similarly, but for narrowing conversion.
References a, b, build_vector_type(), gimplify_build2(), int_const_binop(), TREE_TYPE, tree_vec_extract(), TYPE_SIZE, and TYPE_VECTOR_SUBPARTS().
Referenced by expand_vector_conversion().
|
static |
Expand a vector operation to scalars; for integer types we can use special bit twiddling tricks to do the sums a word at a time, using function F_PARALLEL instead of F. These tricks are done only if they can process at least four items, that is, only if the vector holds at least four items and if a word can hold four items.
References a, b, BITS_PER_WORD, expand_vector_parallel(), expand_vector_piecewise(), INTEGRAL_TYPE_P, nunits_for_known_piecewise_op(), TREE_TYPE, and vector_element_bits().
Referenced by expand_vector_operation().
|
static |
Try to expand vector comparison expression OP0 CODE OP1 by querying optab if the following expression: VEC_COND_EXPR< OP0 CODE OP1, {-1,...}, {0,...}> can be expanded.
References a, b, bitsize_int, boolean_type_node, build_nonstandard_integer_type(), build_zero_cst(), do_compare(), expand_vec_cmp_expr_p(), expand_vector_condition(), expand_vector_piecewise(), FOR_EACH_IMM_USE_FAST, GET_MODE_BITSIZE(), GET_MODE_PRECISION(), gimple_assign_lhs(), gimple_assign_rhs1(), gimple_assign_rhs2(), gimple_assign_rhs3(), gimple_assign_rhs_code(), gimple_location(), gimplify_build1(), gimplify_build2(), gimplify_build3(), gsi_for_stmt(), gsi_stmt(), i, int_const_binop(), is_gimple_assign(), is_gimple_debug(), known_lt, NULL_TREE, nunits_for_known_piecewise_op(), SCALAR_INT_MODE_P, SCALAR_TYPE_MODE, TREE_TYPE, tree_vec_extract(), TYPE_MODE, TYPE_PRECISION, TYPE_VECTOR_SUBPARTS(), USE_STMT, VECTOR_BOOLEAN_TYPE_P, vector_element_bits_tree(), warning_at(), and warning_suppressed_p().
Referenced by expand_vector_operation().
|
static |
Expand a vector condition to scalars, by using many conditions on the vector's elements.
References a, as_a(), b, bitmap_set_bit, bitsize_int, boolean_type_node, build_constructor(), build_nonstandard_integer_type(), build_vector_from_ctor(), build_zero_cst(), CONSTANT_CLASS_P, dyn_cast(), expand_vec_cmp_expr_p(), expand_vec_cond_expr_p(), gcc_assert, GET_MODE_BITSIZE(), GET_MODE_PRECISION(), gimple_assign_lhs(), gimple_assign_rhs1(), gimple_assign_rhs2(), gimple_assign_rhs3(), gimple_assign_rhs_code(), gimple_assign_set_rhs_from_tree(), gimple_location(), gimplify_build1(), gimplify_build2(), gimplify_build3(), gsi_stmt(), i, int_const_binop(), integer_all_onesp(), integer_zerop(), known_lt, NULL, NULL_TREE, nunits_for_known_piecewise_op(), SCALAR_INT_MODE_P, SCALAR_TYPE_MODE, wi::set_bit_in_zero(), SSA_NAME_DEF_STMT, SSA_NAME_VERSION, tcc_comparison, TREE_CODE, TREE_CODE_CLASS, TREE_TYPE, tree_vec_extract(), TYPE_MODE, TYPE_PRECISION, TYPE_VECTOR_SUBPARTS(), update_stmt(), useless_type_conversion_p(), vec_alloc(), VECTOR_BOOLEAN_TYPE_P, vector_element_bits_tree(), warning_at(), warning_suppressed_p(), and wide_int_to_tree().
Referenced by expand_vector_comparison(), and expand_vector_operations_1().
|
static |
Expand VEC_CONVERT ifn call.
References a, arg_type, bitsize_int, build_constructor(), build_vector_from_ctor(), build_vector_type(), build_zero_cst(), CASE_CONVERT, CONSTANT_CLASS_P, do_vec_conversion(), do_vec_narrow_conversion(), expand_vector_piecewise(), g, gcc_checking_assert, gcc_unreachable, get_compute_type(), gimple_build_assign(), gimple_build_nop(), gimple_call_arg(), gimple_call_lhs(), gimple_location(), gimplify_build1(), gimplify_build2(), gsi_insert_before(), gsi_replace(), GSI_SAME_STMT, gsi_stmt(), i, insn_data, int_const_binop(), INTEGRAL_TYPE_P, make_ssa_name(), NULL_TREE, nunits_for_known_piecewise_op(), optab_default, optab_for_tree_code(), optab_handler(), SCALAR_FLOAT_TYPE_P, supportable_convert_operation(), supportable_indirect_convert_operation(), tree_to_uhwi(), TREE_TYPE, tree_vec_extract(), type_for_widest_vector_mode(), TYPE_MAIN_VARIANT, TYPE_MODE, TYPE_SIZE, TYPE_VECTOR_SUBPARTS(), unknown_optab, constructor_elt::value, vec_alloc(), vector_element_bits(), VECTOR_MODE_P, VECTOR_TYPE_P, warning_at(), and warning_suppressed_p().
Referenced by expand_vector_operations_1().
|
static |
Try to expand integer vector division by constant using widening multiply, shifts and additions.
References add_rshift(), tree_vector_builder::build(), build_int_cst(), build_nonstandard_integer_type(), build_vector_type(), build_zero_cst(), can_mult_highpart_p(), choose_multiplier(), const_unop(), count, ctz_or_zero(), d2, vector_builder< T, Shape, Derived >::encoded_nelts(), expand_vec_cond_expr_p(), floor_log2(), gcc_assert, gcc_unreachable, GET_MODE_MASK, gimple_build_assign(), gimplify_build1(), gimplify_build2(), gsi_insert_before(), GSI_SAME_STMT, HOST_BITS_PER_WIDE_INT, HOST_WIDE_INT_1U, HOST_WIDE_INT_M1U, i, integer_pow2p(), integer_zerop(), make_ssa_name(), vector_builder< T, Shape, Derived >::new_unary_operation(), NULL_TREE, nunits_for_known_piecewise_op(), optab_default, optab_for_tree_code(), optab_handler(), optab_vector, SIGNED, TREE_CODE, tree_fits_uhwi_p(), TREE_INT_CST_LOW, tree_int_cst_sgn(), tree_log2(), tree_to_uhwi(), TREE_TYPE, truth_type_for(), TYPE_MODE, TYPE_PRECISION, TYPE_SIGN, TYPE_UNSIGNED, unknown_optab, UNSIGNED, and VECTOR_CST_ELT.
Referenced by expand_vector_operation().
|
static |
References ANY_INTEGRAL_TYPE_P, do_binop(), do_negate(), do_plus_minus(), do_unop(), expand_vector_addition(), expand_vector_comparison(), expand_vector_divmod(), expand_vector_parallel(), expand_vector_piecewise(), gimple_assign_rhs1(), gimple_assign_rhs2(), NULL_TREE, tcc_unary, TREE_CODE, TREE_CODE_CLASS, TYPE_MODE, TYPE_OVERFLOW_TRAPS, VECTOR_INTEGER_TYPE_P, and VECTOR_MODE_P.
Referenced by expand_vector_operations_1().
|
static |
Use this to lower vector operations introduced by the vectorizer, if it may need the bit-twiddling tricks implemented in this file.
References boolean_false_node, cfg_changed, cfun, expand_vector_operations_1(), fold_loop_internal_call(), FOR_EACH_BB_FN, gimple_call_internal_p(), gimple_purge_dead_eh_edges(), gsi_end_p(), gsi_next(), gsi_start_bb(), gsi_stmt(), maybe_clean_eh_stmt(), simple_dce_from_worklist(), and TODO_cleanup_cfg.
|
static |
Process one statement. If we identify a vector operation, expand it.
References build_vector_from_val(), CONVERT_EXPR_CODE_P, dyn_cast(), expand_vector_condition(), expand_vector_conversion(), expand_vector_operation(), expand_vector_scalar_condition(), get_compute_type(), get_gimple_rhs_class(), gimple_assign_lhs(), gimple_assign_rhs1(), gimple_assign_rhs2(), gimple_assign_rhs_code(), gimple_assign_set_rhs2(), gimple_assign_set_rhs_from_tree(), GIMPLE_BINARY_RHS, gimple_call_internal_p(), gimple_clobber_p(), GIMPLE_UNARY_RHS, gimplify_build1(), gimplify_build2(), gsi_stmt(), INTEGRAL_TYPE_P, lower_vec_perm(), NULL, NULL_TREE, optab_default, optab_for_tree_code(), optab_handler(), optab_scalar, optab_vector, optimize_vector_constructor(), ssa_uniform_vector_p(), subparts_gt(), tcc_comparison, TREE_CODE, TREE_CODE_CLASS, TREE_TYPE, type(), TYPE_MODE, unknown_optab, update_stmt(), useless_type_conversion_p(), VECTOR_BOOLEAN_TYPE_P, VECTOR_INTEGER_TYPE_P, VECTOR_MODE_P, and VECTOR_TYPE_P.
Referenced by expand_vector_operations().
|
static |
Expand a vector operation to scalars with the freedom to use a scalar integer type, or to use a different size for the items in the vector type.
References a, b, bitsize_zero_node, build_word_mode_vector_type(), expand_vector_piecewise(), force_gimple_operand_gsi(), gimple_location(), GSI_SAME_STMT, gsi_stmt(), int_mode_for_size(), NULL, opt_mode< T >::require(), tree_to_uhwi(), TREE_TYPE, lang_hooks_for_types::type_for_mode, TYPE_MODE, TYPE_SIZE, TYPE_SIZE_UNIT, lang_hooks::types, warning_at(), warning_suppressed_p(), and word_mode.
Referenced by expand_vector_addition(), expand_vector_operation(), and expand_vector_scalar_condition().
|
static |
Expand a vector operation to scalars, by using many operations whose type is the vector type's inner type.
References a, b, bitsize_int, build_constructor(), build_vector_from_ctor(), CONSTANT_CLASS_P, gimple_location(), gsi_stmt(), i, int_const_binop(), NULL_TREE, nunits_for_known_piecewise_op(), tree_to_uhwi(), type(), TYPE_SIZE, vec_alloc(), vector_element_bits(), warning_at(), and warning_suppressed_p().
Referenced by expand_vector_addition(), expand_vector_comparison(), expand_vector_conversion(), expand_vector_operation(), expand_vector_parallel(), and expand_vector_scalar_condition().
|
static |
Expand a vector COND_EXPR to scalars, piecewise.
References as_a(), do_cond(), expand_vector_parallel(), expand_vector_piecewise(), gcc_assert, get_compute_type(), gimple_assign_lhs(), gimple_assign_rhs2(), gimple_assign_rhs3(), gimple_assign_set_rhs_from_tree(), gimplify_build1(), gsi_stmt(), TREE_TYPE, TYPE_MODE, update_stmt(), useless_type_conversion_p(), and VECTOR_MODE_P.
Referenced by expand_vector_operations_1().
Return type in which CODE operation with optab OP can be computed.
References can_mult_highpart_p(), NULL_TREE, optab_handler(), optab_libfunc(), TREE_TYPE, type(), type_for_widest_vector_mode(), TYPE_MODE, TYPE_UNSIGNED, TYPE_VECTOR_SUBPARTS(), and VECTOR_MODE_P.
Referenced by expand_vector_conversion(), expand_vector_operations_1(), and expand_vector_scalar_condition().
|
static |
Build a unary operation and gimplify it. Emit code before GSI. Return the gimple_val holding the result.
References a, gimple_build(), gimple_location(), GSI_SAME_STMT, and gsi_stmt().
Referenced by do_negate(), do_plus_minus(), do_unop(), do_vec_conversion(), expand_vector_comparison(), expand_vector_condition(), expand_vector_conversion(), expand_vector_divmod(), expand_vector_operations_1(), and expand_vector_scalar_condition().
|
static |
Build a binary operation and gimplify it. Emit code before GSI. Return the gimple_val holding the result.
References a, b, gimple_build(), gimple_location(), GSI_SAME_STMT, and gsi_stmt().
Referenced by add_rshift(), do_binop(), do_negate(), do_plus_minus(), do_vec_narrow_conversion(), expand_vector_comparison(), expand_vector_condition(), expand_vector_conversion(), expand_vector_divmod(), and expand_vector_operations_1().
|
static |
Build a ternary operation and gimplify it. Emit code before GSI. Return the gimple_val holding the result.
References a, b, gimple_build(), gimple_location(), GSI_SAME_STMT, and gsi_stmt().
Referenced by do_compare(), do_cond(), expand_vector_comparison(), and expand_vector_condition().
|
static |
Check if VEC_PERM_EXPR within the given setting is supported by hardware, or lower it piecewise. When VEC_PERM_EXPR has the same first and second operands: VEC_PERM_EXPR <v0, v0, mask> the lowered version would be {v0[mask[0]], v0[mask[1]], ...} MASK and V0 must have the same number of elements. Otherwise VEC_PERM_EXPR <v0, v1, mask> is lowered to {mask[0] < len(v0) ? v0[mask[0]] : v1[mask[0]], ...} V0 and V1 must have the same type. MASK, V0, V1 must have the same number of arguments.
References as_a(), boolean_type_node, build_constructor(), build_int_cst(), build_vector_from_ctor(), build_zero_cst(), can_vec_perm_const_p(), can_vec_perm_var_p(), CONSTANT_CLASS_P, CONSTRUCTOR_APPEND_ELT, fold_build2, fold_build3, force_gimple_operand_gsi(), gimple_assign_lhs(), gimple_assign_rhs1(), gimple_assign_rhs2(), gimple_assign_rhs3(), gimple_assign_rhs_code(), gimple_assign_set_rhs3(), gimple_assign_set_rhs_from_tree(), gimple_location(), GSI_SAME_STMT, gsi_stmt(), i, initializer_zerop(), is_gimple_assign(), known_eq, known_lt, maybe_ge, NULL_TREE, operand_equal_p(), optab_handler(), si, size_int, SSA_NAME_DEF_STMT, TREE_CODE, tree_fits_uhwi_p(), TREE_INT_CST_LOW, tree_to_vec_perm_builder(), TREE_TYPE, TYPE_MODE, TYPE_VECTOR_SUBPARTS(), update_stmt(), vec_alloc(), vector_element(), warning_at(), and warning_suppressed_p().
Referenced by expand_vector_operations_1().
gimple_opt_pass * make_pass_lower_vector | ( | gcc::context * | ctxt | ) |
gimple_opt_pass * make_pass_lower_vector_ssa | ( | gcc::context * | ctxt | ) |
|
static |
Return the number of elements in a vector type TYPE that we have already decided needs to be expanded piecewise. We don't support this kind of expansion for variable-length vectors, since we should always check for target support before introducing uses of those.
References poly_int< N, C >::to_constant(), and TYPE_VECTOR_SUBPARTS().
Referenced by add_rshift(), expand_vector_addition(), expand_vector_comparison(), expand_vector_condition(), expand_vector_conversion(), expand_vector_divmod(), expand_vector_piecewise(), and vector_element().
|
static |
Try to optimize a_5 = { b_7, b_7 + 3, b_7 + 6, b_7 + 9 }; style stmts into: _9 = { b_7, b_7, b_7, b_7 }; a_5 = _9 + { 0, 3, 6, 9 }; because vector splat operation is usually more efficient than piecewise initialization of the vector.
References as_a(), tree_vector_builder::build(), build_zero_cst(), CONSTRUCTOR_ELT, CONSTRUCTOR_ELTS, CONSTRUCTOR_NELTS, fold_binary, FOR_EACH_VEC_SAFE_ELT, g, gimple_assign_lhs(), gimple_assign_rhs1(), gimple_assign_rhs2(), gimple_assign_rhs_code(), gimple_build_assign(), gsi_insert_before(), gsi_replace(), GSI_SAME_STMT, gsi_stmt(), i, is_gimple_assign(), make_ssa_name(), NULL_TREE, optab_default, optab_for_tree_code(), optab_handler(), SSA_NAME_DEF_STMT, SSA_NAME_OCCURS_IN_ABNORMAL_PHI, TREE_CODE, TREE_OVERFLOW, TREE_TYPE, TYPE_MODE, TYPE_VECTOR_SUBPARTS(), unknown_optab, and constructor_elt::value.
Referenced by expand_vector_operations_1().
If OP is a uniform vector return the element it is a splat from.
References gimple_assign_rhs1(), gimple_assign_single_p(), NULL_TREE, SSA_NAME_DEF_STMT, TREE_CODE, and uniform_vector_p().
Referenced by expand_vector_operations_1().
Return true if TYPE1 has more elements than TYPE2, where either type may be a vector or a scalar.
References known_gt, TYPE_VECTOR_SUBPARTS(), and VECTOR_TYPE_P.
Referenced by expand_vector_operations_1().
Extract the vector element of type TYPE at BITPOS with BITSIZE from T and return it.
References build3(), follow_all_ssa_edges(), g, gimple_build_assign(), gsi_insert_before(), gsi_insert_seq_before(), GSI_SAME_STMT, make_ssa_name(), maybe_push_res_to_seq(), NULL, gimple_match_op::resimplify(), and gimple_match_op::set_op().
Referenced by do_binop(), do_compare(), do_cond(), do_negate(), do_plus_minus(), do_unop(), do_vec_conversion(), do_vec_narrow_conversion(), expand_vector_comparison(), expand_vector_condition(), and expand_vector_conversion().
Return a type for the widest vector mode with the same element type as type ORIGINAL_VECTOR_TYPE, with at most the same number of elements as type ORIGINAL_VECTOR_TYPE and that is supported by the target for an operation with optab OP, or return NULL_TREE if none is found.
References build_vector_type_for_mode(), FOR_EACH_MODE_FROM, gcc_assert, GET_MODE_INNER, GET_MODE_NUNITS(), known_le, maybe_gt, NULL_TREE, optab_handler(), SCALAR_ACCUM_MODE_P, SCALAR_FLOAT_MODE_P, SCALAR_FRACT_MODE_P, SCALAR_UACCUM_MODE_P, SCALAR_UFRACT_MODE_P, TREE_TYPE, TYPE_MODE, TYPE_VECTOR_SUBPARTS(), and VECTOR_TYPE_P.
Referenced by expand_vector_conversion(), and get_compute_type().
|
static |
Build a reference to the element of the vector VECT. Function returns either the element itself, either BIT_FIELD_REF, or an ARRAY_REF expression. GSI is required to insert temporary variables while building a refernece to the element of the vector VECT. PTMPVEC is a pointer to the temporary variable for caching purposes. In case when PTMPVEC is NULL new temporary variable will be created.
References bitsize_int, bitsizetype, build1(), build4(), build_array_type_nelts(), build_int_cst(), build_zero_cst(), CONSTRUCTOR_ELT, CONSTRUCTOR_NELTS, create_tmp_var, fold_build2, fold_build3, gimple_assign_rhs1(), gimple_assign_rhs_code(), gimple_build_assign(), gsi_insert_before(), GSI_SAME_STMT, is_gimple_assign(), NULL_TREE, nunits_for_known_piecewise_op(), SSA_NAME_DEF_STMT, TREE_ADDRESSABLE, TREE_CODE, tree_fits_uhwi_p(), TREE_INT_CST_LOW, TREE_TYPE, VECTOR_CST_ELT, and vector_element_bits_tree().
Referenced by lower_vec_perm().
|
static |
Referenced by build_word_mode_vector_type().
|
static |
Referenced by build_word_mode_vector_type().
|
static |
Referenced by build_word_mode_vector_type().