/* Generated automatically by the program `genopinit' from the machine description file `md'. */ #ifndef GCC_INSN_OPINIT_H #define GCC_INSN_OPINIT_H 1 enum optab_tag { unknown_optab, sext_optab, trunc_optab, zext_optab, sfix_optab, ufix_optab, sfloat_optab, ufloat_optab, lrint_optab, lround_optab, lfloor_optab, lceil_optab, fract_optab, fractuns_optab, satfract_optab, satfractuns_optab, sfixtrunc_optab, ufixtrunc_optab, smul_widen_optab, umul_widen_optab, usmul_widen_optab, smadd_widen_optab, umadd_widen_optab, ssmadd_widen_optab, usmadd_widen_optab, smsub_widen_optab, umsub_widen_optab, ssmsub_widen_optab, usmsub_widen_optab, vec_load_lanes_optab, vec_store_lanes_optab, vec_mask_load_lanes_optab, vec_mask_store_lanes_optab, vec_mask_len_load_lanes_optab, vec_mask_len_store_lanes_optab, vcond_optab, vcondu_optab, vcondeq_optab, vcond_mask_optab, vec_cmp_optab, vec_cmpu_optab, vec_cmpeq_optab, maskload_optab, maskstore_optab, mask_len_load_optab, mask_len_store_optab, gather_load_optab, mask_gather_load_optab, mask_len_gather_load_optab, scatter_store_optab, mask_scatter_store_optab, mask_len_scatter_store_optab, vec_extract_optab, vec_init_optab, while_ult_optab, add_optab, addv_optab, ssadd_optab, usadd_optab, sub_optab, subv_optab, sssub_optab, ussub_optab, smul_optab, smulv_optab, ssmul_optab, usmul_optab, sdiv_optab, sdivv_optab, ssdiv_optab, udiv_optab, usdiv_optab, sdivmod_optab, udivmod_optab, smod_optab, umod_optab, ftrunc_optab, and_optab, ior_optab, xor_optab, ashl_optab, ssashl_optab, usashl_optab, ashr_optab, lshr_optab, rotl_optab, rotr_optab, vashl_optab, vashr_optab, vlshr_optab, vrotl_optab, vrotr_optab, smin_optab, smax_optab, umin_optab, umax_optab, neg_optab, negv_optab, ssneg_optab, usneg_optab, abs_optab, absv_optab, one_cmpl_optab, bswap_optab, ffs_optab, clz_optab, ctz_optab, clrsb_optab, popcount_optab, parity_optab, cmp_optab, ucmp_optab, eq_optab, ne_optab, gt_optab, ge_optab, lt_optab, le_optab, unord_optab, powi_optab, sqrt_optab, sync_old_add_optab, sync_old_sub_optab, sync_old_ior_optab, sync_old_and_optab, sync_old_xor_optab, sync_old_nand_optab, sync_new_add_optab, sync_new_sub_optab, sync_new_ior_optab, sync_new_and_optab, sync_new_xor_optab, sync_new_nand_optab, sync_compare_and_swap_optab, sync_lock_test_and_set_optab, mov_optab, movstrict_optab, movmisalign_optab, storent_optab, insv_optab, extv_optab, extzv_optab, insvmisalign_optab, extvmisalign_optab, extzvmisalign_optab, push_optab, reload_in_optab, reload_out_optab, cbranch_optab, tbranch_eq_optab, tbranch_ne_optab, addcc_optab, negcc_optab, notcc_optab, movcc_optab, cond_add_optab, cond_sub_optab, cond_smul_optab, cond_sdiv_optab, cond_smod_optab, cond_udiv_optab, cond_umod_optab, cond_and_optab, cond_ior_optab, cond_xor_optab, cond_ashl_optab, cond_ashr_optab, cond_lshr_optab, cond_smin_optab, cond_smax_optab, cond_umin_optab, cond_umax_optab, cond_copysign_optab, cond_fmin_optab, cond_fmax_optab, cond_fma_optab, cond_fms_optab, cond_fnma_optab, cond_fnms_optab, cond_neg_optab, cond_one_cmpl_optab, cond_len_add_optab, cond_len_sub_optab, cond_len_smul_optab, cond_len_sdiv_optab, cond_len_smod_optab, cond_len_udiv_optab, cond_len_umod_optab, cond_len_and_optab, cond_len_ior_optab, cond_len_xor_optab, cond_len_ashl_optab, cond_len_ashr_optab, cond_len_lshr_optab, cond_len_smin_optab, cond_len_smax_optab, cond_len_umin_optab, cond_len_umax_optab, cond_len_copysign_optab, cond_len_fmin_optab, cond_len_fmax_optab, cond_len_fma_optab, cond_len_fms_optab, cond_len_fnma_optab, cond_len_fnms_optab, cond_len_neg_optab, cond_len_one_cmpl_optab, vcond_mask_len_optab, cmov_optab, cstore_optab, ctrap_optab, addv4_optab, subv4_optab, mulv4_optab, uaddv4_optab, usubv4_optab, umulv4_optab, negv3_optab, uaddc5_optab, usubc5_optab, addptr3_optab, spaceship_optab, smul_highpart_optab, umul_highpart_optab, cmpmem_optab, cmpstr_optab, cmpstrn_optab, cpymem_optab, movmem_optab, setmem_optab, strlen_optab, rawmemchr_optab, fma_optab, fms_optab, fnma_optab, fnms_optab, rint_optab, round_optab, roundeven_optab, floor_optab, ceil_optab, btrunc_optab, nearbyint_optab, acos_optab, acosh_optab, asin_optab, asinh_optab, atan2_optab, atan_optab, atanh_optab, copysign_optab, xorsign_optab, cadd90_optab, cadd270_optab, cmul_optab, cmul_conj_optab, cmla_optab, cmla_conj_optab, cmls_optab, cmls_conj_optab, cos_optab, cosh_optab, exp10_optab, exp2_optab, exp_optab, expm1_optab, fmod_optab, hypot_optab, ilogb_optab, isinf_optab, issignaling_optab, ldexp_optab, log10_optab, log1p_optab, log2_optab, log_optab, logb_optab, pow_optab, remainder_optab, rsqrt_optab, scalb_optab, signbit_optab, significand_optab, sin_optab, sincos_optab, sinh_optab, tan_optab, tanh_optab, fegetround_optab, feclearexcept_optab, feraiseexcept_optab, fmax_optab, fmin_optab, reduc_fmax_scal_optab, reduc_fmin_scal_optab, reduc_smax_scal_optab, reduc_smin_scal_optab, reduc_plus_scal_optab, reduc_umax_scal_optab, reduc_umin_scal_optab, reduc_and_scal_optab, reduc_ior_scal_optab, reduc_xor_scal_optab, fold_left_plus_optab, mask_fold_left_plus_optab, mask_len_fold_left_plus_optab, extract_last_optab, fold_extract_last_optab, len_fold_extract_last_optab, uabd_optab, sabd_optab, savg_floor_optab, uavg_floor_optab, savg_ceil_optab, uavg_ceil_optab, sdot_prod_optab, ssum_widen_optab, udot_prod_optab, usdot_prod_optab, usum_widen_optab, usad_optab, ssad_optab, smulhs_optab, smulhrs_optab, umulhs_optab, umulhrs_optab, sdiv_pow2_optab, vec_pack_sfix_trunc_optab, vec_pack_ssat_optab, vec_pack_trunc_optab, vec_pack_ufix_trunc_optab, vec_pack_sbool_trunc_optab, vec_pack_usat_optab, vec_packs_float_optab, vec_packu_float_optab, vec_perm_optab, vec_realign_load_optab, vec_set_optab, vec_shl_optab, vec_shr_optab, vec_unpack_sfix_trunc_hi_optab, vec_unpack_sfix_trunc_lo_optab, vec_unpack_ufix_trunc_hi_optab, vec_unpack_ufix_trunc_lo_optab, vec_unpacks_float_hi_optab, vec_unpacks_float_lo_optab, vec_unpacks_hi_optab, vec_unpacks_lo_optab, vec_unpacks_sbool_hi_optab, vec_unpacks_sbool_lo_optab, vec_unpacku_float_hi_optab, vec_unpacku_float_lo_optab, vec_unpacku_hi_optab, vec_unpacku_lo_optab, vec_widen_smult_even_optab, vec_widen_smult_hi_optab, vec_widen_smult_lo_optab, vec_widen_smult_odd_optab, vec_widen_ssub_optab, vec_widen_ssub_hi_optab, vec_widen_ssub_lo_optab, vec_widen_ssub_odd_optab, vec_widen_ssub_even_optab, vec_widen_sadd_optab, vec_widen_sadd_hi_optab, vec_widen_sadd_lo_optab, vec_widen_sadd_odd_optab, vec_widen_sadd_even_optab, vec_widen_sabd_optab, vec_widen_sabd_hi_optab, vec_widen_sabd_lo_optab, vec_widen_sabd_odd_optab, vec_widen_sabd_even_optab, vec_widen_sshiftl_hi_optab, vec_widen_sshiftl_lo_optab, vec_widen_umult_even_optab, vec_widen_umult_hi_optab, vec_widen_umult_lo_optab, vec_widen_umult_odd_optab, vec_widen_ushiftl_hi_optab, vec_widen_ushiftl_lo_optab, vec_widen_usub_optab, vec_widen_usub_hi_optab, vec_widen_usub_lo_optab, vec_widen_usub_odd_optab, vec_widen_usub_even_optab, vec_widen_uadd_optab, vec_widen_uadd_hi_optab, vec_widen_uadd_lo_optab, vec_widen_uadd_odd_optab, vec_widen_uadd_even_optab, vec_widen_uabd_optab, vec_widen_uabd_hi_optab, vec_widen_uabd_lo_optab, vec_widen_uabd_odd_optab, vec_widen_uabd_even_optab, vec_addsub_optab, vec_fmaddsub_optab, vec_fmsubadd_optab, sync_add_optab, sync_and_optab, sync_ior_optab, sync_lock_release_optab, sync_nand_optab, sync_sub_optab, sync_xor_optab, atomic_add_fetch_optab, atomic_add_optab, atomic_and_fetch_optab, atomic_and_optab, atomic_bit_test_and_set_optab, atomic_bit_test_and_complement_optab, atomic_bit_test_and_reset_optab, atomic_compare_and_swap_optab, atomic_exchange_optab, atomic_fetch_add_optab, atomic_fetch_and_optab, atomic_fetch_nand_optab, atomic_fetch_or_optab, atomic_fetch_sub_optab, atomic_fetch_xor_optab, atomic_load_optab, atomic_nand_fetch_optab, atomic_nand_optab, atomic_or_fetch_optab, atomic_or_optab, atomic_store_optab, atomic_sub_fetch_optab, atomic_sub_optab, atomic_xor_fetch_optab, atomic_xor_optab, atomic_add_fetch_cmp_0_optab, atomic_sub_fetch_cmp_0_optab, atomic_and_fetch_cmp_0_optab, atomic_or_fetch_cmp_0_optab, atomic_xor_fetch_cmp_0_optab, get_thread_pointer_optab, set_thread_pointer_optab, check_raw_ptrs_optab, check_war_ptrs_optab, vec_duplicate_optab, vec_series_optab, vec_shl_insert_optab, len_load_optab, len_store_optab, select_vl_optab, FIRST_CONV_OPTAB = sext_optab, LAST_CONVLIB_OPTAB = satfractuns_optab, LAST_CONV_OPTAB = while_ult_optab, FIRST_NORM_OPTAB = add_optab, LAST_NORMLIB_OPTAB = sync_lock_test_and_set_optab, LAST_NORM_OPTAB = select_vl_optab }; #define NUM_OPTABS 446 #define NUM_CONVLIB_OPTABS 15 #define NUM_NORMLIB_OPTABS 80 #define NUM_OPTAB_PATTERNS 2653 typedef enum optab_tag optab; typedef enum optab_tag convert_optab; typedef enum optab_tag direct_optab; struct optab_libcall_d { char libcall_suffix; const char *libcall_basename; void (*libcall_gen) (optab, const char *name, char suffix, machine_mode); }; struct convert_optab_libcall_d { const char *libcall_basename; void (*libcall_gen) (convert_optab, const char *name, machine_mode, machine_mode); }; /* Given an enum insn_code, access the function to construct the body of that kind of insn. */ #define GEN_FCN(CODE) (insn_data[CODE].genfun) #ifdef NUM_RTX_CODE /* Contains the optab used for each rtx code, and vice-versa. */ extern const optab code_to_optab_[NUM_RTX_CODE]; extern const enum rtx_code optab_to_code_[NUM_OPTABS]; static inline optab code_to_optab (enum rtx_code code) { return code_to_optab_[code]; } static inline enum rtx_code optab_to_code (optab op) { return optab_to_code_[op]; } extern insn_code maybe_code_for_cmp_1 (machine_mode); inline insn_code code_for_cmp_1 (machine_mode arg0) { insn_code code = maybe_code_for_cmp_1 (arg0); gcc_assert (code != CODE_FOR_nothing); return code; } extern rtx maybe_gen_cmp_1 (machine_mode, rtx, rtx); inline rtx gen_cmp_1 (machine_mode arg0, rtx x0, rtx x1) { rtx res = maybe_gen_cmp_1 (arg0, x0, x1); gcc_assert (res); return res; } extern insn_code maybe_code_for_pushfl2 (machine_mode); inline insn_code code_for_pushfl2 (machine_mode arg0) { insn_code code = maybe_code_for_pushfl2 (arg0); gcc_assert (code != CODE_FOR_nothing); return code; } extern rtx maybe_gen_pushfl2 (machine_mode, rtx, rtx); inline rtx gen_pushfl2 (machine_mode arg0, rtx x0, rtx x1) { rtx res = maybe_gen_pushfl2 (arg0, x0, x1); gcc_assert (res); return res; } extern insn_code maybe_code_for_popfl1 (machine_mode); inline insn_code code_for_popfl1 (machine_mode arg0) { insn_code code = maybe_code_for_popfl1 (arg0); gcc_assert (code != CODE_FOR_nothing); return code; } extern rtx maybe_gen_popfl1 (machine_mode, rtx, rtx); inline rtx gen_popfl1 (machine_mode arg0, rtx x0, rtx x1) { rtx res = maybe_gen_popfl1 (arg0, x0, x1); gcc_assert (res); return res; } extern insn_code maybe_code_for_insv_1 (machine_mode); inline insn_code code_for_insv_1 (machine_mode arg0) { insn_code code = maybe_code_for_insv_1 (arg0); gcc_assert (code != CODE_FOR_nothing); return code; } extern rtx maybe_gen_insv_1 (machine_mode, rtx, rtx); inline rtx gen_insv_1 (machine_mode arg0, rtx x0, rtx x1) { rtx res = maybe_gen_insv_1 (arg0, x0, x1); gcc_assert (res); return res; } extern insn_code maybe_code_for_add3_carry (machine_mode); inline insn_code code_for_add3_carry (machine_mode arg0) { insn_code code = maybe_code_for_add3_carry (arg0); gcc_assert (code != CODE_FOR_nothing); return code; } extern rtx maybe_gen_add3_carry (machine_mode, rtx, rtx, rtx, rtx, rtx); inline rtx gen_add3_carry (machine_mode arg0, rtx x0, rtx x1, rtx x2, rtx x3, rtx x4) { rtx res = maybe_gen_add3_carry (arg0, x0, x1, x2, x3, x4); gcc_assert (res); return res; } extern insn_code maybe_code_for_sub3_carry (machine_mode); inline insn_code code_for_sub3_carry (machine_mode arg0) { insn_code code = maybe_code_for_sub3_carry (arg0); gcc_assert (code != CODE_FOR_nothing); return code; } extern rtx maybe_gen_sub3_carry (machine_mode, rtx, rtx, rtx, rtx, rtx); inline rtx gen_sub3_carry (machine_mode arg0, rtx x0, rtx x1, rtx x2, rtx x3, rtx x4) { rtx res = maybe_gen_sub3_carry (arg0, x0, x1, x2, x3, x4); gcc_assert (res); return res; } extern insn_code maybe_code_for_sub3_carry_ccc (machine_mode); inline insn_code code_for_sub3_carry_ccc (machine_mode arg0) { insn_code code = maybe_code_for_sub3_carry_ccc (arg0); gcc_assert (code != CODE_FOR_nothing); return code; } extern rtx maybe_gen_sub3_carry_ccc (machine_mode, rtx, rtx, rtx); inline rtx gen_sub3_carry_ccc (machine_mode arg0, rtx x0, rtx x1, rtx x2) { rtx res = maybe_gen_sub3_carry_ccc (arg0, x0, x1, x2); gcc_assert (res); return res; } extern insn_code maybe_code_for_sub3_carry_ccgz (machine_mode); inline insn_code code_for_sub3_carry_ccgz (machine_mode arg0) { insn_code code = maybe_code_for_sub3_carry_ccgz (arg0); gcc_assert (code != CODE_FOR_nothing); return code; } extern rtx maybe_gen_sub3_carry_ccgz (machine_mode, rtx, rtx, rtx); inline rtx gen_sub3_carry_ccgz (machine_mode arg0, rtx x0, rtx x1, rtx x2) { rtx res = maybe_gen_sub3_carry_ccgz (arg0, x0, x1, x2); gcc_assert (res); return res; } extern insn_code maybe_code_for_add3_cc_overflow_1 (machine_mode); inline insn_code code_for_add3_cc_overflow_1 (machine_mode arg0) { insn_code code = maybe_code_for_add3_cc_overflow_1 (arg0); gcc_assert (code != CODE_FOR_nothing); return code; } extern rtx maybe_gen_add3_cc_overflow_1 (machine_mode, rtx, rtx, rtx); inline rtx gen_add3_cc_overflow_1 (machine_mode arg0, rtx x0, rtx x1, rtx x2) { rtx res = maybe_gen_add3_cc_overflow_1 (arg0, x0, x1, x2); gcc_assert (res); return res; } extern insn_code maybe_code_for_test_ccno_1 (machine_mode); inline insn_code code_for_test_ccno_1 (machine_mode arg0) { insn_code code = maybe_code_for_test_ccno_1 (arg0); gcc_assert (code != CODE_FOR_nothing); return code; } extern rtx maybe_gen_test_ccno_1 (machine_mode, rtx, rtx); inline rtx gen_test_ccno_1 (machine_mode arg0, rtx x0, rtx x1) { rtx res = maybe_gen_test_ccno_1 (arg0, x0, x1); gcc_assert (res); return res; } extern insn_code maybe_code_for_x86_shift_adj_1 (machine_mode); inline insn_code code_for_x86_shift_adj_1 (machine_mode arg0) { insn_code code = maybe_code_for_x86_shift_adj_1 (arg0); gcc_assert (code != CODE_FOR_nothing); return code; } extern rtx maybe_gen_x86_shift_adj_1 (machine_mode, rtx, rtx, rtx, rtx); inline rtx gen_x86_shift_adj_1 (machine_mode arg0, rtx x0, rtx x1, rtx x2, rtx x3) { rtx res = maybe_gen_x86_shift_adj_1 (arg0, x0, x1, x2, x3); gcc_assert (res); return res; } extern insn_code maybe_code_for_x86_shift_adj_2 (machine_mode); inline insn_code code_for_x86_shift_adj_2 (machine_mode arg0) { insn_code code = maybe_code_for_x86_shift_adj_2 (arg0); gcc_assert (code != CODE_FOR_nothing); return code; } extern rtx maybe_gen_x86_shift_adj_2 (machine_mode, rtx, rtx, rtx); inline rtx gen_x86_shift_adj_2 (machine_mode arg0, rtx x0, rtx x1, rtx x2) { rtx res = maybe_gen_x86_shift_adj_2 (arg0, x0, x1, x2); gcc_assert (res); return res; } extern insn_code maybe_code_for_x86_shift_adj_3 (machine_mode); inline insn_code code_for_x86_shift_adj_3 (machine_mode arg0) { insn_code code = maybe_code_for_x86_shift_adj_3 (arg0); gcc_assert (code != CODE_FOR_nothing); return code; } extern rtx maybe_gen_x86_shift_adj_3 (machine_mode, rtx, rtx, rtx); inline rtx gen_x86_shift_adj_3 (machine_mode arg0, rtx x0, rtx x1, rtx x2) { rtx res = maybe_gen_x86_shift_adj_3 (arg0, x0, x1, x2); gcc_assert (res); return res; } extern insn_code maybe_code_for_leave (machine_mode); inline insn_code code_for_leave (machine_mode arg0) { insn_code code = maybe_code_for_leave (arg0); gcc_assert (code != CODE_FOR_nothing); return code; } extern rtx maybe_gen_leave (machine_mode); inline rtx gen_leave (machine_mode arg0) { rtx res = maybe_gen_leave (arg0); gcc_assert (res); return res; } extern insn_code maybe_code_for_tbm_bextri (machine_mode); inline insn_code code_for_tbm_bextri (machine_mode arg0) { insn_code code = maybe_code_for_tbm_bextri (arg0); gcc_assert (code != CODE_FOR_nothing); return code; } extern rtx maybe_gen_tbm_bextri (machine_mode, rtx, rtx, rtx, rtx); inline rtx gen_tbm_bextri (machine_mode arg0, rtx x0, rtx x1, rtx x2, rtx x3) { rtx res = maybe_gen_tbm_bextri (arg0, x0, x1, x2, x3); gcc_assert (res); return res; } extern insn_code maybe_code_for_tls_global_dynamic_64 (machine_mode); inline insn_code code_for_tls_global_dynamic_64 (machine_mode arg0) { insn_code code = maybe_code_for_tls_global_dynamic_64 (arg0); gcc_assert (code != CODE_FOR_nothing); return code; } extern rtx maybe_gen_tls_global_dynamic_64 (machine_mode, rtx, rtx, rtx); inline rtx gen_tls_global_dynamic_64 (machine_mode arg0, rtx x0, rtx x1, rtx x2) { rtx res = maybe_gen_tls_global_dynamic_64 (arg0, x0, x1, x2); gcc_assert (res); return res; } extern insn_code maybe_code_for_tls_local_dynamic_base_64 (machine_mode); inline insn_code code_for_tls_local_dynamic_base_64 (machine_mode arg0) { insn_code code = maybe_code_for_tls_local_dynamic_base_64 (arg0); gcc_assert (code != CODE_FOR_nothing); return code; } extern rtx maybe_gen_tls_local_dynamic_base_64 (machine_mode, rtx, rtx); inline rtx gen_tls_local_dynamic_base_64 (machine_mode arg0, rtx x0, rtx x1) { rtx res = maybe_gen_tls_local_dynamic_base_64 (arg0, x0, x1); gcc_assert (res); return res; } extern insn_code maybe_code_for_tls_dynamic_gnu2_64 (machine_mode); inline insn_code code_for_tls_dynamic_gnu2_64 (machine_mode arg0) { insn_code code = maybe_code_for_tls_dynamic_gnu2_64 (arg0); gcc_assert (code != CODE_FOR_nothing); return code; } extern rtx maybe_gen_tls_dynamic_gnu2_64 (machine_mode, rtx, rtx); inline rtx gen_tls_dynamic_gnu2_64 (machine_mode arg0, rtx x0, rtx x1) { rtx res = maybe_gen_tls_dynamic_gnu2_64 (arg0, x0, x1); gcc_assert (res); return res; } extern insn_code maybe_code_for_pro_epilogue_adjust_stack_add (machine_mode); inline insn_code code_for_pro_epilogue_adjust_stack_add (machine_mode arg0) { insn_code code = maybe_code_for_pro_epilogue_adjust_stack_add (arg0); gcc_assert (code != CODE_FOR_nothing); return code; } extern rtx maybe_gen_pro_epilogue_adjust_stack_add (machine_mode, rtx, rtx, rtx); inline rtx gen_pro_epilogue_adjust_stack_add (machine_mode arg0, rtx x0, rtx x1, rtx x2) { rtx res = maybe_gen_pro_epilogue_adjust_stack_add (arg0, x0, x1, x2); gcc_assert (res); return res; } extern insn_code maybe_code_for_pro_epilogue_adjust_stack_sub (machine_mode); inline insn_code code_for_pro_epilogue_adjust_stack_sub (machine_mode arg0) { insn_code code = maybe_code_for_pro_epilogue_adjust_stack_sub (arg0); gcc_assert (code != CODE_FOR_nothing); return code; } extern rtx maybe_gen_pro_epilogue_adjust_stack_sub (machine_mode, rtx, rtx, rtx); inline rtx gen_pro_epilogue_adjust_stack_sub (machine_mode arg0, rtx x0, rtx x1, rtx x2) { rtx res = maybe_gen_pro_epilogue_adjust_stack_sub (arg0, x0, x1, x2); gcc_assert (res); return res; } extern insn_code maybe_code_for_allocate_stack_worker_probe (machine_mode); inline insn_code code_for_allocate_stack_worker_probe (machine_mode arg0) { insn_code code = maybe_code_for_allocate_stack_worker_probe (arg0); gcc_assert (code != CODE_FOR_nothing); return code; } extern rtx maybe_gen_allocate_stack_worker_probe (machine_mode, rtx, rtx); inline rtx gen_allocate_stack_worker_probe (machine_mode arg0, rtx x0, rtx x1) { rtx res = maybe_gen_allocate_stack_worker_probe (arg0, x0, x1); gcc_assert (res); return res; } extern insn_code maybe_code_for_probe_stack_1 (machine_mode); inline insn_code code_for_probe_stack_1 (machine_mode arg0) { insn_code code = maybe_code_for_probe_stack_1 (arg0); gcc_assert (code != CODE_FOR_nothing); return code; } extern rtx maybe_gen_probe_stack_1 (machine_mode, rtx, rtx); inline rtx gen_probe_stack_1 (machine_mode arg0, rtx x0, rtx x1) { rtx res = maybe_gen_probe_stack_1 (arg0, x0, x1); gcc_assert (res); return res; } extern insn_code maybe_code_for_adjust_stack_and_probe (machine_mode); inline insn_code code_for_adjust_stack_and_probe (machine_mode arg0) { insn_code code = maybe_code_for_adjust_stack_and_probe (arg0); gcc_assert (code != CODE_FOR_nothing); return code; } extern rtx maybe_gen_adjust_stack_and_probe (machine_mode, rtx, rtx, rtx); inline rtx gen_adjust_stack_and_probe (machine_mode arg0, rtx x0, rtx x1, rtx x2) { rtx res = maybe_gen_adjust_stack_and_probe (arg0, x0, x1, x2); gcc_assert (res); return res; } extern insn_code maybe_code_for_probe_stack_range (machine_mode); inline insn_code code_for_probe_stack_range (machine_mode arg0) { insn_code code = maybe_code_for_probe_stack_range (arg0); gcc_assert (code != CODE_FOR_nothing); return code; } extern rtx maybe_gen_probe_stack_range (machine_mode, rtx, rtx, rtx); inline rtx gen_probe_stack_range (machine_mode arg0, rtx x0, rtx x1, rtx x2) { rtx res = maybe_gen_probe_stack_range (arg0, x0, x1, x2); gcc_assert (res); return res; } extern insn_code maybe_code_for_stack_protect_set_1 (machine_mode, machine_mode); inline insn_code code_for_stack_protect_set_1 (machine_mode arg0, machine_mode arg1) { insn_code code = maybe_code_for_stack_protect_set_1 (arg0, arg1); gcc_assert (code != CODE_FOR_nothing); return code; } extern rtx maybe_gen_stack_protect_set_1 (machine_mode, machine_mode, rtx, rtx, rtx); inline rtx gen_stack_protect_set_1 (machine_mode arg0, machine_mode arg1, rtx x0, rtx x1, rtx x2) { rtx res = maybe_gen_stack_protect_set_1 (arg0, arg1, x0, x1, x2); gcc_assert (res); return res; } extern insn_code maybe_code_for_stack_protect_test_1 (machine_mode); inline insn_code code_for_stack_protect_test_1 (machine_mode arg0) { insn_code code = maybe_code_for_stack_protect_test_1 (arg0); gcc_assert (code != CODE_FOR_nothing); return code; } extern rtx maybe_gen_stack_protect_test_1 (machine_mode, rtx, rtx, rtx); inline rtx gen_stack_protect_test_1 (machine_mode arg0, rtx x0, rtx x1, rtx x2) { rtx res = maybe_gen_stack_protect_test_1 (arg0, x0, x1, x2); gcc_assert (res); return res; } extern insn_code maybe_code_for_lwp_llwpcb (machine_mode); inline insn_code code_for_lwp_llwpcb (machine_mode arg0) { insn_code code = maybe_code_for_lwp_llwpcb (arg0); gcc_assert (code != CODE_FOR_nothing); return code; } extern rtx maybe_gen_lwp_llwpcb (machine_mode, rtx); inline rtx gen_lwp_llwpcb (machine_mode arg0, rtx x0) { rtx res = maybe_gen_lwp_llwpcb (arg0, x0); gcc_assert (res); return res; } extern insn_code maybe_code_for_lwp_slwpcb (machine_mode); inline insn_code code_for_lwp_slwpcb (machine_mode arg0) { insn_code code = maybe_code_for_lwp_slwpcb (arg0); gcc_assert (code != CODE_FOR_nothing); return code; } extern rtx maybe_gen_lwp_slwpcb (machine_mode, rtx); inline rtx gen_lwp_slwpcb (machine_mode arg0, rtx x0) { rtx res = maybe_gen_lwp_slwpcb (arg0, x0); gcc_assert (res); return res; } extern insn_code maybe_code_for_lwp_lwpval (machine_mode); inline insn_code code_for_lwp_lwpval (machine_mode arg0) { insn_code code = maybe_code_for_lwp_lwpval (arg0); gcc_assert (code != CODE_FOR_nothing); return code; } extern rtx maybe_gen_lwp_lwpval (machine_mode, rtx, rtx, rtx); inline rtx gen_lwp_lwpval (machine_mode arg0, rtx x0, rtx x1, rtx x2) { rtx res = maybe_gen_lwp_lwpval (arg0, x0, x1, x2); gcc_assert (res); return res; } extern insn_code maybe_code_for_lwp_lwpins (machine_mode); inline insn_code code_for_lwp_lwpins (machine_mode arg0) { insn_code code = maybe_code_for_lwp_lwpins (arg0); gcc_assert (code != CODE_FOR_nothing); return code; } extern rtx maybe_gen_lwp_lwpins (machine_mode, rtx, rtx, rtx); inline rtx gen_lwp_lwpins (machine_mode arg0, rtx x0, rtx x1, rtx x2) { rtx res = maybe_gen_lwp_lwpins (arg0, x0, x1, x2); gcc_assert (res); return res; } extern insn_code maybe_code_for_rdrand (machine_mode); inline insn_code code_for_rdrand (machine_mode arg0) { insn_code code = maybe_code_for_rdrand (arg0); gcc_assert (code != CODE_FOR_nothing); return code; } extern rtx maybe_gen_rdrand (machine_mode, rtx); inline rtx gen_rdrand (machine_mode arg0, rtx x0) { rtx res = maybe_gen_rdrand (arg0, x0); gcc_assert (res); return res; } extern insn_code maybe_code_for_rdseed (machine_mode); inline insn_code code_for_rdseed (machine_mode arg0) { insn_code code = maybe_code_for_rdseed (arg0); gcc_assert (code != CODE_FOR_nothing); return code; } extern rtx maybe_gen_rdseed (machine_mode, rtx); inline rtx gen_rdseed (machine_mode arg0, rtx x0) { rtx res = maybe_gen_rdseed (arg0, x0); gcc_assert (res); return res; } extern insn_code maybe_code_for_rdssp (machine_mode); inline insn_code code_for_rdssp (machine_mode arg0) { insn_code code = maybe_code_for_rdssp (arg0); gcc_assert (code != CODE_FOR_nothing); return code; } extern rtx maybe_gen_rdssp (machine_mode, rtx, rtx); inline rtx gen_rdssp (machine_mode arg0, rtx x0, rtx x1) { rtx res = maybe_gen_rdssp (arg0, x0, x1); gcc_assert (res); return res; } extern insn_code maybe_code_for_incssp (machine_mode); inline insn_code code_for_incssp (machine_mode arg0) { insn_code code = maybe_code_for_incssp (arg0); gcc_assert (code != CODE_FOR_nothing); return code; } extern rtx maybe_gen_incssp (machine_mode, rtx); inline rtx gen_incssp (machine_mode arg0, rtx x0) { rtx res = maybe_gen_incssp (arg0, x0); gcc_assert (res); return res; } extern insn_code maybe_code_for_wrss (machine_mode); inline insn_code code_for_wrss (machine_mode arg0) { insn_code code = maybe_code_for_wrss (arg0); gcc_assert (code != CODE_FOR_nothing); return code; } extern rtx maybe_gen_wrss (machine_mode, rtx, rtx); inline rtx gen_wrss (machine_mode arg0, rtx x0, rtx x1) { rtx res = maybe_gen_wrss (arg0, x0, x1); gcc_assert (res); return res; } extern insn_code maybe_code_for_wruss (machine_mode); inline insn_code code_for_wruss (machine_mode arg0) { insn_code code = maybe_code_for_wruss (arg0); gcc_assert (code != CODE_FOR_nothing); return code; } extern rtx maybe_gen_wruss (machine_mode, rtx, rtx); inline rtx gen_wruss (machine_mode arg0, rtx x0, rtx x1) { rtx res = maybe_gen_wruss (arg0, x0, x1); gcc_assert (res); return res; } extern insn_code maybe_code_for_monitorx (machine_mode); inline insn_code code_for_monitorx (machine_mode arg0) { insn_code code = maybe_code_for_monitorx (arg0); gcc_assert (code != CODE_FOR_nothing); return code; } extern rtx maybe_gen_monitorx (machine_mode, rtx, rtx, rtx); inline rtx gen_monitorx (machine_mode arg0, rtx x0, rtx x1, rtx x2) { rtx res = maybe_gen_monitorx (arg0, x0, x1, x2); gcc_assert (res); return res; } extern insn_code maybe_code_for_clzero (machine_mode); inline insn_code code_for_clzero (machine_mode arg0) { insn_code code = maybe_code_for_clzero (arg0); gcc_assert (code != CODE_FOR_nothing); return code; } extern rtx maybe_gen_clzero (machine_mode, rtx); inline rtx gen_clzero (machine_mode arg0, rtx x0) { rtx res = maybe_gen_clzero (arg0, x0); gcc_assert (res); return res; } extern insn_code maybe_code_for_movdir64b (machine_mode); inline insn_code code_for_movdir64b (machine_mode arg0) { insn_code code = maybe_code_for_movdir64b (arg0); gcc_assert (code != CODE_FOR_nothing); return code; } extern rtx maybe_gen_movdir64b (machine_mode, rtx, rtx); inline rtx gen_movdir64b (machine_mode arg0, rtx x0, rtx x1) { rtx res = maybe_gen_movdir64b (arg0, x0, x1); gcc_assert (res); return res; } extern insn_code maybe_code_for_enqcmd (int, machine_mode); inline insn_code code_for_enqcmd (int arg0, machine_mode arg1) { insn_code code = maybe_code_for_enqcmd (arg0, arg1); gcc_assert (code != CODE_FOR_nothing); return code; } extern rtx maybe_gen_enqcmd (int, machine_mode, rtx, rtx); inline rtx gen_enqcmd (int arg0, machine_mode arg1, rtx x0, rtx x1) { rtx res = maybe_gen_enqcmd (arg0, arg1, x0, x1); gcc_assert (res); return res; } extern insn_code maybe_code_for_umonitor (machine_mode); inline insn_code code_for_umonitor (machine_mode arg0) { insn_code code = maybe_code_for_umonitor (arg0); gcc_assert (code != CODE_FOR_nothing); return code; } extern rtx maybe_gen_umonitor (machine_mode, rtx); inline rtx gen_umonitor (machine_mode arg0, rtx x0) { rtx res = maybe_gen_umonitor (arg0, x0); gcc_assert (res); return res; } extern insn_code maybe_code_for_sse4_1_insertps (machine_mode); inline insn_code code_for_sse4_1_insertps (machine_mode arg0) { insn_code code = maybe_code_for_sse4_1_insertps (arg0); gcc_assert (code != CODE_FOR_nothing); return code; } extern rtx maybe_gen_sse4_1_insertps (machine_mode, rtx, rtx, rtx, rtx); inline rtx gen_sse4_1_insertps (machine_mode arg0, rtx x0, rtx x1, rtx x2, rtx x3) { rtx res = maybe_gen_sse4_1_insertps (arg0, x0, x1, x2, x3); gcc_assert (res); return res; } extern insn_code maybe_code_for_vec_set_0 (machine_mode); inline insn_code code_for_vec_set_0 (machine_mode arg0) { insn_code code = maybe_code_for_vec_set_0 (arg0); gcc_assert (code != CODE_FOR_nothing); return code; } extern rtx maybe_gen_vec_set_0 (machine_mode, rtx, rtx, rtx); inline rtx gen_vec_set_0 (machine_mode arg0, rtx x0, rtx x1, rtx x2) { rtx res = maybe_gen_vec_set_0 (arg0, x0, x1, x2); gcc_assert (res); return res; } extern insn_code maybe_code_for_vec_extract_lo (machine_mode); inline insn_code code_for_vec_extract_lo (machine_mode arg0) { insn_code code = maybe_code_for_vec_extract_lo (arg0); gcc_assert (code != CODE_FOR_nothing); return code; } extern rtx maybe_gen_vec_extract_lo (machine_mode, rtx, rtx); inline rtx gen_vec_extract_lo (machine_mode arg0, rtx x0, rtx x1) { rtx res = maybe_gen_vec_extract_lo (arg0, x0, x1); gcc_assert (res); return res; } extern insn_code maybe_code_for_vec_extract_hi (machine_mode); inline insn_code code_for_vec_extract_hi (machine_mode arg0) { insn_code code = maybe_code_for_vec_extract_hi (arg0); gcc_assert (code != CODE_FOR_nothing); return code; } extern rtx maybe_gen_vec_extract_hi (machine_mode, rtx, rtx); inline rtx gen_vec_extract_hi (machine_mode arg0, rtx x0, rtx x1) { rtx res = maybe_gen_vec_extract_hi (arg0, x0, x1); gcc_assert (res); return res; } extern insn_code maybe_code_for_vec_interleave_high (machine_mode, int); inline insn_code code_for_vec_interleave_high (machine_mode arg0, int arg1) { insn_code code = maybe_code_for_vec_interleave_high (arg0, arg1); gcc_assert (code != CODE_FOR_nothing); return code; } extern rtx maybe_gen_vec_interleave_high (machine_mode, int, rtx, rtx, rtx, rtx, rtx); inline rtx gen_vec_interleave_high (machine_mode arg0, int arg1, rtx x0, rtx x1, rtx x2, rtx x3, rtx x4) { rtx res = maybe_gen_vec_interleave_high (arg0, arg1, x0, x1, x2, x3, x4); gcc_assert (res); return res; } extern rtx maybe_gen_vec_interleave_high (machine_mode, int, rtx, rtx, rtx); inline rtx gen_vec_interleave_high (machine_mode arg0, int arg1, rtx x0, rtx x1, rtx x2) { rtx res = maybe_gen_vec_interleave_high (arg0, arg1, x0, x1, x2); gcc_assert (res); return res; } extern insn_code maybe_code_for_vec_interleave_low (machine_mode, int); inline insn_code code_for_vec_interleave_low (machine_mode arg0, int arg1) { insn_code code = maybe_code_for_vec_interleave_low (arg0, arg1); gcc_assert (code != CODE_FOR_nothing); return code; } extern rtx maybe_gen_vec_interleave_low (machine_mode, int, rtx, rtx, rtx, rtx, rtx); inline rtx gen_vec_interleave_low (machine_mode arg0, int arg1, rtx x0, rtx x1, rtx x2, rtx x3, rtx x4) { rtx res = maybe_gen_vec_interleave_low (arg0, arg1, x0, x1, x2, x3, x4); gcc_assert (res); return res; } extern rtx maybe_gen_vec_interleave_low (machine_mode, int, rtx, rtx, rtx); inline rtx gen_vec_interleave_low (machine_mode arg0, int arg1, rtx x0, rtx x1, rtx x2) { rtx res = maybe_gen_vec_interleave_low (arg0, arg1, x0, x1, x2); gcc_assert (res); return res; } extern insn_code maybe_code_for_sse3_monitor (machine_mode); inline insn_code code_for_sse3_monitor (machine_mode arg0) { insn_code code = maybe_code_for_sse3_monitor (arg0); gcc_assert (code != CODE_FOR_nothing); return code; } extern rtx maybe_gen_sse3_monitor (machine_mode, rtx, rtx, rtx); inline rtx gen_sse3_monitor (machine_mode arg0, rtx x0, rtx x1, rtx x2) { rtx res = maybe_gen_sse3_monitor (arg0, x0, x1, x2); gcc_assert (res); return res; } #endif extern const struct convert_optab_libcall_d convlib_def[NUM_CONVLIB_OPTABS]; extern const struct optab_libcall_d normlib_def[NUM_NORMLIB_OPTABS]; /* Returns the active icode for the given (encoded) optab. */ extern enum insn_code raw_optab_handler (unsigned); extern bool swap_optab_enable (optab, machine_mode, bool); /* Target-dependent globals. */ struct target_optabs { /* Patterns that are used by optabs that are enabled for this target. */ bool pat_enable[NUM_OPTAB_PATTERNS]; /* Index VOIDmode caches if the target supports vec_gather_load for any vector mode. Every other index X caches specifically for mode X. 1 means yes, -1 means no. */ signed char supports_vec_gather_load[NUM_MACHINE_MODES]; signed char supports_vec_scatter_store[NUM_MACHINE_MODES]; }; extern void init_all_optabs (struct target_optabs *); extern bool partial_vectors_supported_p (void); extern struct target_optabs default_target_optabs; extern struct target_optabs *this_fn_optabs; #if SWITCHABLE_TARGET extern struct target_optabs *this_target_optabs; #else #define this_target_optabs (&default_target_optabs) #endif #endif