1/* Definitions for option handling for IA-32.
2   Copyright (C) 1988-2015 Free Software Foundation, Inc.
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{
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
42};
43
44/* Available call abi.  */
45enum calling_abi
46{
47  SYSV_ABI = 0,
48  MS_ABI = 1
49};
50
51enum fpmath_unit
52{
53  FPMATH_387 = 1,
54  FPMATH_SSE = 2
55};
56
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
75enum pmode {
76  PMODE_SI,	/* Pmode == SImode. */
77  PMODE_DI 	/* Pmode == DImode. */
78};
79
80enum ix86_align_data {
81  ix86_align_data_type_compat,
82  ix86_align_data_type_abi,
83  ix86_align_data_type_cacheline
84};
85
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
97enum stack_protector_guard {
98  SSP_TLS,      /* per-thread canary in TLS block */
99  SSP_GLOBAL    /* global canary */
100};
101
102#endif
103