]> git.ipfire.org Git - thirdparty/gcc.git/blame - gcc/config/i386/i386-opts.h
Update copyright years.
[thirdparty/gcc.git] / gcc / config / i386 / i386-opts.h
CommitLineData
7eb68c06 1/* Definitions for option handling for IA-32.
8d9254fc 2 Copyright (C) 1988-2020 Free Software Foundation, Inc.
7eb68c06
JM
3
4This file is part of GCC.
5
6GCC is free software; you can redistribute it and/or modify
7it under the terms of the GNU General Public License as published by
8the Free Software Foundation; either version 3, or (at your option)
9any later version.
10
11GCC is distributed in the hope that it will be useful,
12but WITHOUT ANY WARRANTY; without even the implied warranty of
13MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14GNU General Public License for more details.
15
16Under Section 7 of GPL version 3, you are granted additional
17permissions described in the GCC Runtime Library Exception, version
183.1, as published by the Free Software Foundation.
19
20You should have received a copy of the GNU General Public License and
21a copy of the GCC Runtime Library Exception along with this program;
22see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
23<http://www.gnu.org/licenses/>. */
24
25#ifndef I386_OPTS_H
26#define I386_OPTS_H
27
28/* Algorithm to expand string function with. */
29enum stringop_alg
30{
ad83025e
XDL
31#undef DEF_ENUM
32#define DEF_ENUM
33
34#undef DEF_ALG
35#define DEF_ALG(alg, name) alg,
36
37#include "stringop.def"
38last_alg
39
40#undef DEF_ENUM
41#undef DEF_ALG
7eb68c06
JM
42};
43
44/* Available call abi. */
45enum calling_abi
46{
47 SYSV_ABI = 0,
48 MS_ABI = 1
49};
50
8023568e
JM
51enum fpmath_unit
52{
53 FPMATH_387 = 1,
54 FPMATH_SSE = 2
55};
56
7eb68c06
JM
57enum tls_dialect
58{
59 TLS_DIALECT_GNU,
60 TLS_DIALECT_GNU2,
61 TLS_DIALECT_SUN
62};
63
64enum cmodel {
65 CM_32, /* The traditional 32-bit ABI. */
66 CM_SMALL, /* Assumes all code and data fits in the low 31 bits. */
67 CM_KERNEL, /* Assumes all code and data fits in the high 31 bits. */
68 CM_MEDIUM, /* Assumes code fits in the low 31 bits; data unlimited. */
69 CM_LARGE, /* No assumptions. */
70 CM_SMALL_PIC, /* Assumes code+data+got/plt fits in a 31 bit region. */
71 CM_MEDIUM_PIC,/* Assumes code+got/plt fits in a 31 bit region. */
72 CM_LARGE_PIC /* No assumptions. */
73};
74
28968d91
L
75enum pmode {
76 PMODE_SI, /* Pmode == SImode. */
77 PMODE_DI /* Pmode == DImode. */
78};
79
239711f6
L
80enum ix86_align_data {
81 ix86_align_data_type_compat,
82 ix86_align_data_type_abi,
83 ix86_align_data_type_cacheline
84};
85
7eb68c06
JM
86enum asm_dialect {
87 ASM_ATT,
88 ASM_INTEL
89};
90
91enum ix86_veclibabi {
92 ix86_veclibabi_type_none,
93 ix86_veclibabi_type_svml,
94 ix86_veclibabi_type_acml
95};
96
e0ea8797
AH
97enum stack_protector_guard {
98 SSP_TLS, /* per-thread canary in TLS block */
99 SSP_GLOBAL /* global canary */
100};
101
ab2c4ec8
SS
102enum prefer_vector_width {
103 PVW_NONE,
104 PVW_AVX128,
105 PVW_AVX256,
106 PVW_AVX512
107};
108
da99fd4a
L
109/* This is used to mitigate variant #2 of the speculative execution
110 vulnerabilities on x86 processors identified by CVE-2017-5715, aka
111 Spectre. They convert indirect branches and function returns to
112 call and return thunks to avoid speculative execution via indirect
113 call, jmp and ret. */
114enum indirect_branch {
115 indirect_branch_unset = 0,
116 indirect_branch_keep,
117 indirect_branch_thunk,
118 indirect_branch_thunk_inline,
119 indirect_branch_thunk_extern
120};
121
3b31afe1
AK
122enum instrument_return {
123 instrument_return_none = 0,
124 instrument_return_call,
125 instrument_return_nop5
126};
127
7eb68c06 128#endif