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_OPTIONS_H
20 #define GCC_I386_OPTIONS_H
21 
22 extern int ix86_omp_device_kind_arch_isa (enum omp_device_kind_arch_isa trait,
23 					  const char *name);
24 
25 char *ix86_target_string (HOST_WIDE_INT isa, HOST_WIDE_INT isa2,
26 			  int flags, int flags2,
27 			  const char *arch, const char *tune,
28 			  enum fpmath_unit fpmath,
29 			  enum prefer_vector_width pvw, bool add_nl_p,
30 			  bool add_abi_p);
31 
32 extern enum attr_cpu ix86_schedule;
33 
34 extern enum processor_type ix86_tune;
35 extern enum processor_type ix86_arch;
36 extern unsigned char x86_prefetch_sse;
37 extern const struct processor_costs *ix86_tune_cost;
38 
39 extern int ix86_tune_defaulted;
40 extern int ix86_arch_specified;
41 
42 extern unsigned int ix86_default_incoming_stack_boundary;
43 extern HOST_WIDE_INT deferred_isa_values;
44 extern HOST_WIDE_INT deferred_isa_values2;
45 
46 extern unsigned int ix86_preferred_stack_boundary;
47 extern unsigned int ix86_user_incoming_stack_boundary;
48 extern unsigned int ix86_default_incoming_stack_boundary;
49 extern unsigned int ix86_incoming_stack_boundary;
50 
51 extern char *ix86_offload_options (void);
52 extern void ix86_option_override (void);
53 extern void ix86_override_options_after_change (void);
54 void ix86_set_current_function (tree fndecl);
55 bool ix86_function_naked (const_tree fn);
56 void ix86_simd_clone_adjust (struct cgraph_node *node);
57 
58 extern tree (*ix86_veclib_handler) (combined_fn, tree, tree);
59 extern tree ix86_veclibabi_svml (combined_fn, tree, tree);
60 extern tree ix86_veclibabi_acml (combined_fn, tree, tree);
61 
62 enum ix86_function_specific_strings
63 {
64   IX86_FUNCTION_SPECIFIC_ARCH,
65   IX86_FUNCTION_SPECIFIC_TUNE,
66   IX86_FUNCTION_SPECIFIC_MAX
67 };
68 
69 extern const char *stringop_alg_names[];
70 
71 void ix86_add_new_builtins (HOST_WIDE_INT isa, HOST_WIDE_INT isa2);
72 void ix86_function_specific_save (struct cl_target_option *,
73 				  struct gcc_options *opts);
74 void ix86_function_specific_restore (struct gcc_options *opts,
75 				     struct cl_target_option *);
76 void ix86_function_specific_post_stream_in (struct cl_target_option *);
77 void ix86_function_specific_print (FILE *, int,
78 				   struct cl_target_option *);
79 bool ix86_valid_target_attribute_p (tree, tree, tree, int);
80 
81 extern const struct attribute_spec ix86_attribute_table[];
82 
83 
84 #endif  /* GCC_I386_OPTIONS_H */
85