1 | /* Copyright (C) 1988-2024 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, bool = false); |
48 | rtx gen_pushfl (void); |
49 | rtx gen_pop (rtx arg, bool = false); |
50 | rtx gen_popfl (void); |
51 | rtx ix86_expand_builtin (tree exp, rtx target, rtx subtarget, |
52 | machine_mode mode, int ignore); |
53 | bool ix86_vectorize_vec_perm_const (machine_mode vmode, machine_mode op_mode, |
54 | rtx target, rtx op0, rtx op1, |
55 | const vec_perm_indices &sel); |
56 | bool ix86_notrack_prefixed_insn_p (rtx_insn *); |
57 | machine_mode ix86_split_reduction (machine_mode mode); |
58 | void ix86_expand_divmod_libfunc (rtx libfunc, machine_mode mode, rtx op0, |
59 | rtx op1, rtx *quot_p, rtx *rem_p); |
60 | rtx ix86_convert_const_wide_int_to_broadcast (machine_mode mode, rtx op); |
61 | |
62 | #endif /* GCC_I386_EXPAND_H */ |
63 | |