comparison gcc/config/i386/i386-protos.h @ 131:84e7813d76e9

gcc-8.2
author mir3636
date Thu, 25 Oct 2018 07:37:49 +0900
parents 04ced10e8804
children 1830386684a0
comparison
equal deleted inserted replaced
111:04ced10e8804 131:84e7813d76e9
1 /* Definitions of target machine for GCC for IA-32. 1 /* Definitions of target machine for GCC for IA-32.
2 Copyright (C) 1988-2017 Free Software Foundation, Inc. 2 Copyright (C) 1988-2018 Free Software Foundation, Inc.
3 3
4 This file is part of GCC. 4 This file is part of GCC.
5 5
6 GCC is free software; you can redistribute it and/or modify 6 GCC is free software; you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by 7 it under the terms of the GNU General Public License as published by
50 #ifdef RTX_CODE 50 #ifdef RTX_CODE
51 extern int standard_80387_constant_p (rtx); 51 extern int standard_80387_constant_p (rtx);
52 extern const char *standard_80387_constant_opcode (rtx); 52 extern const char *standard_80387_constant_opcode (rtx);
53 extern rtx standard_80387_constant_rtx (int); 53 extern rtx standard_80387_constant_rtx (int);
54 extern int standard_sse_constant_p (rtx, machine_mode); 54 extern int standard_sse_constant_p (rtx, machine_mode);
55 extern const char *standard_sse_constant_opcode (rtx_insn *, rtx); 55 extern const char *standard_sse_constant_opcode (rtx_insn *, rtx *);
56 extern bool ix86_standard_x87sse_constant_load_p (const rtx_insn *, rtx); 56 extern bool ix86_standard_x87sse_constant_load_p (const rtx_insn *, rtx);
57 extern bool symbolic_reference_mentioned_p (rtx); 57 extern bool symbolic_reference_mentioned_p (rtx);
58 extern bool extended_reg_mentioned_p (rtx); 58 extern bool extended_reg_mentioned_p (rtx);
59 extern bool x86_extended_QIreg_mentioned_p (rtx_insn *); 59 extern bool x86_extended_QIreg_mentioned_p (rtx_insn *);
60 extern bool x86_extended_reg_mentioned_p (rtx); 60 extern bool x86_extended_reg_mentioned_p (rtx);
131 extern bool ix86_expand_int_movcc (rtx[]); 131 extern bool ix86_expand_int_movcc (rtx[]);
132 extern bool ix86_expand_fp_movcc (rtx[]); 132 extern bool ix86_expand_fp_movcc (rtx[]);
133 extern bool ix86_expand_fp_vcond (rtx[]); 133 extern bool ix86_expand_fp_vcond (rtx[]);
134 extern bool ix86_expand_int_vcond (rtx[]); 134 extern bool ix86_expand_int_vcond (rtx[]);
135 extern void ix86_expand_vec_perm (rtx[]); 135 extern void ix86_expand_vec_perm (rtx[]);
136 extern bool ix86_expand_vec_perm_const (rtx[]);
137 extern bool ix86_expand_mask_vec_cmp (rtx[]); 136 extern bool ix86_expand_mask_vec_cmp (rtx[]);
138 extern bool ix86_expand_int_vec_cmp (rtx[]); 137 extern bool ix86_expand_int_vec_cmp (rtx[]);
139 extern bool ix86_expand_fp_vec_cmp (rtx[]); 138 extern bool ix86_expand_fp_vec_cmp (rtx[]);
140 extern void ix86_expand_sse_movcc (rtx, rtx, rtx, rtx); 139 extern void ix86_expand_sse_movcc (rtx, rtx, rtx, rtx);
141 extern void ix86_expand_sse_unpack (rtx, rtx, bool, bool); 140 extern void ix86_expand_sse_unpack (rtx, rtx, bool, bool);
142 extern bool ix86_expand_int_addcc (rtx[]); 141 extern bool ix86_expand_int_addcc (rtx[]);
143 extern rtx ix86_expand_call (rtx, rtx, rtx, rtx, rtx, bool); 142 extern rtx_insn *ix86_expand_call (rtx, rtx, rtx, rtx, rtx, bool);
144 extern void ix86_split_call_vzeroupper (rtx, rtx); 143 extern void ix86_split_call_vzeroupper (rtx, rtx);
145 extern void x86_initialize_trampoline (rtx, rtx, rtx); 144 extern void x86_initialize_trampoline (rtx, rtx, rtx);
146 extern rtx ix86_zero_extend_to_Pmode (rtx); 145 extern rtx ix86_zero_extend_to_Pmode (rtx);
147 extern void ix86_split_long_move (rtx[]); 146 extern void ix86_split_long_move (rtx[]);
148 extern void ix86_split_ashl (rtx *, rtx, machine_mode); 147 extern void ix86_split_ashl (rtx *, rtx, machine_mode);
155 154
156 extern rtx assign_386_stack_local (machine_mode, enum ix86_stack_slot); 155 extern rtx assign_386_stack_local (machine_mode, enum ix86_stack_slot);
157 extern int ix86_attr_length_immediate_default (rtx_insn *, bool); 156 extern int ix86_attr_length_immediate_default (rtx_insn *, bool);
158 extern int ix86_attr_length_address_default (rtx_insn *); 157 extern int ix86_attr_length_address_default (rtx_insn *);
159 extern int ix86_attr_length_vex_default (rtx_insn *, bool, bool); 158 extern int ix86_attr_length_vex_default (rtx_insn *, bool, bool);
160
161 extern machine_mode ix86_fp_compare_mode (enum rtx_code);
162 159
163 extern rtx ix86_libcall_value (machine_mode); 160 extern rtx ix86_libcall_value (machine_mode);
164 extern bool ix86_function_arg_regno_p (int); 161 extern bool ix86_function_arg_regno_p (int);
165 extern void ix86_asm_output_function_label (FILE *, const char *, tree); 162 extern void ix86_asm_output_function_label (FILE *, const char *, tree);
166 extern void ix86_call_abi_override (const_tree); 163 extern void ix86_call_abi_override (const_tree);
232 extern void ix86_expand_mul_widen_evenodd (rtx, rtx, rtx, bool, bool); 229 extern void ix86_expand_mul_widen_evenodd (rtx, rtx, rtx, bool, bool);
233 extern void ix86_expand_mul_widen_hilo (rtx, rtx, rtx, bool, bool); 230 extern void ix86_expand_mul_widen_hilo (rtx, rtx, rtx, bool, bool);
234 extern void ix86_expand_sse2_mulv4si3 (rtx, rtx, rtx); 231 extern void ix86_expand_sse2_mulv4si3 (rtx, rtx, rtx);
235 extern void ix86_expand_sse2_mulvxdi3 (rtx, rtx, rtx); 232 extern void ix86_expand_sse2_mulvxdi3 (rtx, rtx, rtx);
236 extern void ix86_expand_sse2_abs (rtx, rtx); 233 extern void ix86_expand_sse2_abs (rtx, rtx);
237
238 extern bool ix86_bnd_prefixed_insn_p (rtx);
239 234
240 /* In i386-c.c */ 235 /* In i386-c.c */
241 extern void ix86_target_macros (void); 236 extern void ix86_target_macros (void);
242 extern void ix86_register_pragmas (void); 237 extern void ix86_register_pragmas (void);
243 238
255 extern void i386_pe_asm_output_aligned_decl_common (FILE *, tree, 250 extern void i386_pe_asm_output_aligned_decl_common (FILE *, tree,
256 const char *, 251 const char *,
257 HOST_WIDE_INT, 252 HOST_WIDE_INT,
258 HOST_WIDE_INT); 253 HOST_WIDE_INT);
259 extern void i386_pe_file_end (void); 254 extern void i386_pe_file_end (void);
255 extern void i386_pe_asm_lto_start (void);
256 extern void i386_pe_asm_lto_end (void);
260 extern void i386_pe_start_function (FILE *, const char *, tree); 257 extern void i386_pe_start_function (FILE *, const char *, tree);
261 extern void i386_pe_end_function (FILE *, const char *, tree); 258 extern void i386_pe_end_function (FILE *, const char *, tree);
259 extern void i386_pe_end_cold_function (FILE *, const char *, tree);
262 extern void i386_pe_assemble_visibility (tree, int); 260 extern void i386_pe_assemble_visibility (tree, int);
263 extern tree i386_pe_mangle_decl_assembler_name (tree, tree); 261 extern tree i386_pe_mangle_decl_assembler_name (tree, tree);
264 extern tree i386_pe_mangle_assembler_name (const char *); 262 extern tree i386_pe_mangle_assembler_name (const char *);
265 extern void i386_pe_record_stub (const char *); 263 extern void i386_pe_record_stub (const char *);
266 264
267 extern void i386_pe_seh_init (FILE *); 265 extern void i386_pe_seh_init (FILE *);
268 extern void i386_pe_seh_end_prologue (FILE *); 266 extern void i386_pe_seh_end_prologue (FILE *);
267 extern void i386_pe_seh_cold_init (FILE *, const char *);
269 extern void i386_pe_seh_unwind_emit (FILE *, rtx_insn *); 268 extern void i386_pe_seh_unwind_emit (FILE *, rtx_insn *);
270 extern void i386_pe_seh_emit_except_personality (rtx); 269 extern void i386_pe_seh_emit_except_personality (rtx);
271 extern void i386_pe_seh_init_sections (void); 270 extern void i386_pe_seh_init_sections (void);
272 271
273 /* In winnt-cxx.c and winnt-stubs.c */ 272 /* In winnt-cxx.c and winnt-stubs.c */
274 extern void i386_pe_adjust_class_at_definition (tree); 273 extern void i386_pe_adjust_class_at_definition (tree);
275 extern bool i386_pe_type_dllimport_p (tree); 274 extern bool i386_pe_type_dllimport_p (tree);
276 extern bool i386_pe_type_dllexport_p (tree); 275 extern bool i386_pe_type_dllexport_p (tree);
277 276
278 extern int i386_pe_reloc_rw_mask (void); 277 extern int i386_pe_reloc_rw_mask (void);
279
280 extern rtx maybe_get_pool_constant (rtx);
281 278
282 extern char internal_label_prefix[16]; 279 extern char internal_label_prefix[16];
283 extern int internal_label_prefix_len; 280 extern int internal_label_prefix_len;
284 281
285 extern bool ix86_epilogue_uses (int); 282 extern bool ix86_epilogue_uses (int);
308 #ifdef HAVE_ATTR_cpu 305 #ifdef HAVE_ATTR_cpu
309 extern enum attr_cpu ix86_schedule; 306 extern enum attr_cpu ix86_schedule;
310 #endif 307 #endif
311 308
312 extern const char * ix86_output_call_insn (rtx_insn *insn, rtx call_op); 309 extern const char * ix86_output_call_insn (rtx_insn *insn, rtx call_op);
310 extern const char * ix86_output_indirect_jmp (rtx call_op);
311 extern const char * ix86_output_function_return (bool long_p);
312 extern const char * ix86_output_indirect_function_return (rtx ret_op);
313 extern void ix86_split_simple_return_pop_internal (rtx);
313 extern bool ix86_operands_ok_for_move_multiple (rtx *operands, bool load, 314 extern bool ix86_operands_ok_for_move_multiple (rtx *operands, bool load,
314 machine_mode mode); 315 machine_mode mode);
315 extern int ix86_min_insn_size (rtx_insn *); 316 extern int ix86_min_insn_size (rtx_insn *);
316 317
317 extern int ix86_issue_rate (void); 318 extern int ix86_issue_rate (void);
325 extern void ix86_bd_do_dispatch (rtx_insn *insn, int mode); 326 extern void ix86_bd_do_dispatch (rtx_insn *insn, int mode);
326 327
327 extern void ix86_core2i7_init_hooks (void); 328 extern void ix86_core2i7_init_hooks (void);
328 329
329 extern int ix86_atom_sched_reorder (FILE *, int, rtx_insn **, int *, int); 330 extern int ix86_atom_sched_reorder (FILE *, int, rtx_insn **, int *, int);
331
332 extern poly_int64 ix86_push_rounding (poly_int64);
330 333
331 #ifdef RTX_CODE 334 #ifdef RTX_CODE
332 /* Target data for multipass lookahead scheduling. 335 /* Target data for multipass lookahead scheduling.
333 Currently used for Core 2/i7 tuning. */ 336 Currently used for Core 2/i7 tuning. */
334 struct ix86_first_cycle_multipass_data_ 337 struct ix86_first_cycle_multipass_data_