20#ifndef GCC_INTERNAL_FN_H
21#define GCC_INTERNAL_FN_H
23#include "insn-codes.h"
24#include "insn-opinit.h"
43#define IFN_UNIQUE_CODES \
45 DEF(OACC_FORK), DEF(OACC_JOIN), \
46 DEF(OACC_HEAD_MARK), DEF(OACC_TAIL_MARK), \
50#define DEF(X) IFN_UNIQUE_##X
72#define IFN_GOACC_LOOP_CODES \
73 DEF(CHUNKS), DEF(STEP), DEF(OFFSET), DEF(BOUND)
75#define DEF(X) IFN_GOACC_LOOP_##X
95#define IFN_GOACC_REDUCTION_CODES \
96 DEF(SETUP), DEF(INIT), DEF(FINI), DEF(TEARDOWN)
98#define DEF(X) IFN_GOACC_REDUCTION_##X
256#define MASK_LOAD_ELSE_ZERO -1
257#define MASK_LOAD_ELSE_M1 -2
258#define MASK_LOAD_ELSE_UNDEFINED -3
263#define VECT_PARTIAL_BIAS_UNSUPPORTED 127
269 bool,
bool,
bool,
bool,
tree *);
std::pair< tree, tree > tree_pair
Definition coretypes.h:380
const union tree_node * const_tree
Definition coretypes.h:98
#define GTY(x)
Definition coretypes.h:41
union tree_node * tree
Definition coretypes.h:97
optimization_type
Definition coretypes.h:289
internal_fn
Definition genmatch.cc:1024
tree_code
Definition genmatch.cc:1011
int first_commutative_argument(code_helper code, tree type)
Definition gimple-match-exports.cc:1335
internal_fn get_conditional_internal_fn(code_helper code, tree type)
Definition gimple-match-exports.cc:1409
bool set_edom_supported_p(void)
Definition internal-fn.cc:4753
bool commutative_binary_fn_p(internal_fn fn)
Definition internal-fn.cc:4584
bool supported_else_val_p(enum insn_code icode, unsigned else_index, int else_val)
Definition internal-fn.cc:5454
signed char internal_len_load_store_bias(internal_fn ifn, machine_mode mode)
Definition internal-fn.cc:5549
bool internal_check_ptrs_fn_supported_p(internal_fn ifn, tree type, poly_uint64 length, unsigned int align)
Definition internal-fn.cc:5529
void expand_DIVMODBITINT(internal_fn, gcall *stmt)
Definition internal-fn.cc:5709
internal_fn get_conditional_len_internal_fn(tree_code code)
Definition internal-fn.cc:4881
internal_fn get_unconditional_internal_fn(internal_fn ifn)
Definition internal-fn.cc:4971
bool vectorized_internal_fn_supported_p(internal_fn ifn, tree type)
Definition internal-fn.cc:5609
bool internal_load_fn_p(internal_fn fn)
Definition internal-fn.cc:5072
void expand_BITINTTOFLOAT(internal_fn, gcall *stmt)
Definition internal-fn.cc:5732
void expand_FLOATTOBITINT(internal_fn, gcall *stmt)
Definition internal-fn.cc:5720
bool widening_evenodd_fn_p(code_helper code)
Definition internal-fn.cc:4728
bool internal_gather_scatter_fn_supported_p(internal_fn ifn, tree vector_type, tree memory_element_type, tree offset_vector_type, int scale, vec< int > *elsvals)
Definition internal-fn.cc:5477
void expand_internal_call(internal_fn fn, gcall *stmt)
Definition internal-fn.cc:5590
internal_fn lookup_internal_fn(const char *name)
Definition internal-fn.cc:82
void expand_PARITY(internal_fn fn, gcall *stmt)
Definition internal-fn.cc:5794
void expand_MULBITINT(internal_fn, gcall *stmt)
Definition internal-fn.cc:5698
const direct_internal_fn_info direct_internal_fn_array[IFN_LAST+1]
Definition internal-fn.cc:200
bool commutative_ternary_fn_p(internal_fn fn)
Definition internal-fn.cc:4618
void init_internal_fns()
Definition internal-fn.cc:148
void get_supported_else_vals(enum insn_code icode, unsigned else_index, vec< int > &else_vals)
Definition internal-fn.cc:5425
const_tree internal_fn_fnspec_array[IFN_LAST+1]
Definition internal-fn.cc:145
void expand_POPCOUNT(internal_fn fn, gcall *stmt)
Definition internal-fn.cc:5801
void expand_CLZ(internal_fn fn, gcall *stmt)
Definition internal-fn.cc:5773
int internal_fn_len_index(internal_fn fn)
Definition internal-fn.cc:5139
int internal_fn_offset_index(internal_fn fn)
Definition internal-fn.cc:5376
tree_pair direct_internal_fn_types(internal_fn fn, tree return_type, tree *args)
Definition internal-fn.cc:4333
const char *const internal_fn_name_array[]
Definition internal-fn.cc:65
bool internal_store_fn_p(internal_fn fn)
Definition internal-fn.cc:5095
void expand_SHUFFLEVECTOR(internal_fn, gcall *)
Definition internal-fn.cc:5641
void expand_CLRSB(internal_fn fn, gcall *stmt)
Definition internal-fn.cc:5766
const int internal_fn_flags_array[]
Definition internal-fn.cc:72
int internal_fn_mask_index(internal_fn fn)
Definition internal-fn.cc:5285
bool widening_fn_p(code_helper code)
Definition internal-fn.cc:4698
optab direct_internal_fn_optab(internal_fn fn, tree_pair types)
Definition internal-fn.cc:4440
int internal_fn_stored_value_index(internal_fn fn)
Definition internal-fn.cc:5323
void expand_BITREVERSE(internal_fn fn, gcall *stmt)
Definition internal-fn.cc:5901
void expand_PHI(internal_fn, gcall *)
Definition internal-fn.cc:5647
void lookup_hilo_internal_fn(internal_fn ifn, internal_fn *lo, internal_fn *hi)
Definition internal-fn.cc:102
bool associative_binary_fn_p(internal_fn fn)
Definition internal-fn.cc:4637
int internal_fn_scale_index(internal_fn fn)
Definition internal-fn.cc:5400
internal_fn get_len_internal_fn(internal_fn fn)
Definition internal-fn.cc:4939
void expand_MASK_CALL(internal_fn, gcall *)
Definition internal-fn.cc:5684
void expand_FFS(internal_fn fn, gcall *stmt)
Definition internal-fn.cc:5787
bool direct_internal_fn_supported_p(internal_fn fn, tree_pair types, optimization_type opt_type)
Definition internal-fn.cc:4525
bool can_interpret_as_conditional_op_p(gimple *stmt, tree *cond_out, tree_code *code_out, tree(&ops)[3], tree *else_out, tree *len, tree *bias)
Definition internal-fn.cc:5018
void expand_CTZ(internal_fn fn, gcall *stmt)
Definition internal-fn.cc:5780
bool internal_gather_scatter_fn_p(internal_fn fn)
Definition internal-fn.cc:5118
void expand_BSWAP(internal_fn fn, gcall *stmt)
Definition internal-fn.cc:5894
void lookup_evenodd_internal_fn(internal_fn ifn, internal_fn *even, internal_fn *odd)
Definition internal-fn.cc:124
void expand_VARYING(internal_fn, gcall *)
Definition internal-fn.cc:5691
void expand_addsub_overflow(location_t loc, tree_code code, tree lhs, tree arg0, tree arg1, bool unsr_p, bool uns0_p, bool uns1_p, bool is_ubsan, tree *datap)
Definition internal-fn.cc:1177
void expand_SPACESHIP(internal_fn, gcall *stmt)
Definition internal-fn.cc:5653
bool internal_strided_fn_supported_p(internal_fn ifn, tree vector_type, vec< int > *elsvals)
Definition internal-fn.cc:5509
int internal_fn_alias_ptr_index(internal_fn fn)
Definition internal-fn.cc:5353
void expand_ASSUME(internal_fn, gcall *)
Definition internal-fn.cc:5679
tree_code conditional_internal_fn_code(internal_fn ifn)
Definition internal-fn.cc:4844
int internal_fn_else_index(internal_fn fn)
Definition internal-fn.cc:5200
bool vectorizable_internal_fn_p(internal_fn fn)
Definition internal-fn.h:181
const direct_internal_fn_info & direct_internal_fn(internal_fn fn)
Definition internal-fn.h:190
bool direct_internal_fn_p(internal_fn fn)
Definition internal-fn.h:170
#define IFN_GOACC_REDUCTION_CODES
Definition internal-fn.h:95
@ ATOMIC_OP_FETCH_CMP_0_EQ
Definition internal-fn.h:295
@ ATOMIC_OP_FETCH_CMP_0_GT
Definition internal-fn.h:299
@ ATOMIC_OP_FETCH_CMP_0_LE
Definition internal-fn.h:298
@ ATOMIC_OP_FETCH_CMP_0_LT
Definition internal-fn.h:297
@ ATOMIC_OP_FETCH_CMP_0_GE
Definition internal-fn.h:300
@ ATOMIC_OP_FETCH_CMP_0_NE
Definition internal-fn.h:296
const_tree internal_fn_fnspec(enum internal_fn fn)
Definition internal-fn.h:139
int internal_fn_flags(enum internal_fn fn)
Definition internal-fn.h:129
const char * internal_fn_name(enum internal_fn fn)
Definition internal-fn.h:113
#define IFN_GOACC_LOOP_CODES
Definition internal-fn.h:72
ifn_unique_kind
Definition internal-fn.h:49
ifn_goacc_loop_kind
Definition internal-fn.h:74
void expand_TRAP(internal_fn, gcall *)
#define IFN_UNIQUE_CODES
Definition internal-fn.h:43
ifn_goacc_reduction_kind
Definition internal-fn.h:97
poly_int< NUM_POLY_INT_COEFFS, unsigned HOST_WIDE_INT > poly_uint64
Definition poly-int-types.h:25
Definition internal-fn.h:146
signed int type1
Definition internal-fn.h:154
signed int type0
Definition internal-fn.h:153
unsigned int vectorizable
Definition internal-fn.h:162
#define gcc_checking_assert(EXPR)
Definition system.h:826