1 /* Copyright (C) 1988-2020 Free Software Foundation, Inc. 2 3 This file is part of GCC. 4 5 GCC is free software; you can redistribute it and/or modify 6 it under the terms of the GNU General Public License as published by 7 the Free Software Foundation; either version 3, or (at your option) 8 any later version. 9 10 GCC is distributed in the hope that it will be useful, 11 but WITHOUT ANY WARRANTY; without even the implied warranty of 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 GNU General Public License for more details. 14 15 You should have received a copy of the GNU General Public License 16 along with GCC; see the file COPYING3. If not see 17 <http://www.gnu.org/licenses/>. */ 18 19 #ifndef GCC_I386_EXPAND_H 20 #define GCC_I386_EXPAND_H 21 22 /* AVX512F does support 64-byte integer vector operations, 23 thus the longest vector we are faced with is V64QImode. */ 24 #define MAX_VECT_LEN 64 25 26 struct expand_vec_perm_d 27 { 28 rtx target, op0, op1; 29 unsigned char perm[MAX_VECT_LEN]; 30 machine_mode vmode; 31 unsigned char nelt; 32 bool one_operand_p; 33 bool testing_p; 34 }; 35 36 rtx legitimize_tls_address (rtx x, enum tls_model model, bool for_mov); 37 alias_set_type ix86_GOT_alias_set (void); 38 rtx legitimize_pic_address (rtx orig, rtx reg); 39 rtx legitimize_pe_coff_symbol (rtx addr, bool inreg); 40 41 bool insn_defines_reg (unsigned int regno1, unsigned int regno2, 42 rtx_insn *insn); 43 void ix86_emit_binop (enum rtx_code code, machine_mode mode, rtx dst, rtx src); 44 enum calling_abi ix86_function_abi (const_tree fndecl); 45 bool ix86_function_ms_hook_prologue (const_tree fn); 46 void warn_once_call_ms2sysv_xlogues (const char *feature); 47 rtx gen_push (rtx arg); 48 rtx gen_pop (rtx arg); 49 rtx ix86_expand_builtin (tree exp, rtx target, rtx subtarget, 50 machine_mode mode, int ignore); 51 bool ix86_vectorize_vec_perm_const (machine_mode vmode, rtx target, rtx op0, 52 rtx op1, const vec_perm_indices &sel); 53 bool ix86_notrack_prefixed_insn_p (rtx_insn *); 54 machine_mode ix86_split_reduction (machine_mode mode); 55 void ix86_expand_divmod_libfunc (rtx libfunc, machine_mode mode, rtx op0, 56 rtx op1, rtx *quot_p, rtx *rem_p); 57 58 #endif /* GCC_I386_EXPAND_H */ 59