OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-dev/] [or1k-gcc/] [gcc/] [config/] [rs6000/] [rs6000-opts.h] - Blame information for rev 709

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 709 jeremybenn
/* Definitions of target machine needed for option handling for GNU compiler,
2
   for IBM RS/6000.
3
   Copyright (C) 2010, 2011
4
   Free Software Foundation, Inc.
5
   Contributed by Michael Meissner (meissner@linux.vnet.ibm.com)
6
 
7
   This file is part of GCC.
8
 
9
   GCC is free software; you can redistribute it and/or modify it
10
   under the terms of the GNU General Public License as published
11
   by the Free Software Foundation; either version 3, or (at your
12
   option) any later version.
13
 
14
   GCC is distributed in the hope that it will be useful, but WITHOUT
15
   ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
16
   or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public
17
   License for more details.
18
 
19
   Under Section 7 of GPL version 3, you are granted additional
20
   permissions described in the GCC Runtime Library Exception, version
21
   3.1, as published by the Free Software Foundation.
22
 
23
   You should have received a copy of the GNU General Public License and
24
   a copy of the GCC Runtime Library Exception along with this program;
25
   see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
26
   <http://www.gnu.org/licenses/>.  */
27
 
28
#ifndef RS6000_OPTS_H
29
#define RS6000_OPTS_H
30
 
31
/* Processor type.  Order must match cpu attribute in MD file.  */
32
enum processor_type
33
 {
34
   PROCESSOR_RIOS1,
35
   PROCESSOR_RIOS2,
36
   PROCESSOR_RS64A,
37
   PROCESSOR_MPCCORE,
38
   PROCESSOR_PPC403,
39
   PROCESSOR_PPC405,
40
   PROCESSOR_PPC440,
41
   PROCESSOR_PPC476,
42
   PROCESSOR_PPC601,
43
   PROCESSOR_PPC603,
44
   PROCESSOR_PPC604,
45
   PROCESSOR_PPC604e,
46
   PROCESSOR_PPC620,
47
   PROCESSOR_PPC630,
48
   PROCESSOR_PPC750,
49
   PROCESSOR_PPC7400,
50
   PROCESSOR_PPC7450,
51
   PROCESSOR_PPC8540,
52
   PROCESSOR_PPCE300C2,
53
   PROCESSOR_PPCE300C3,
54
   PROCESSOR_PPCE500MC,
55
   PROCESSOR_PPCE500MC64,
56
   PROCESSOR_POWER4,
57
   PROCESSOR_POWER5,
58
   PROCESSOR_POWER6,
59
   PROCESSOR_POWER7,
60
   PROCESSOR_CELL,
61
   PROCESSOR_PPCA2,
62
   PROCESSOR_TITAN
63
};
64
 
65
/* FP processor type.  */
66
enum fpu_type_t
67
{
68
  FPU_NONE,                     /* No FPU */
69
  FPU_SF_LITE,                  /* Limited Single Precision FPU */
70
  FPU_DF_LITE,                  /* Limited Double Precision FPU */
71
  FPU_SF_FULL,                  /* Full Single Precision FPU */
72
  FPU_DF_FULL                   /* Full Double Single Precision FPU */
73
};
74
 
75
/* Types of costly dependences.  */
76
enum rs6000_dependence_cost
77
{
78
  max_dep_latency = 1000,
79
  no_dep_costly,
80
  all_deps_costly,
81
  true_store_to_load_dep_costly,
82
  store_to_load_dep_costly
83
};
84
 
85
/* Types of nop insertion schemes in sched target hook sched_finish.  */
86
enum rs6000_nop_insertion
87
{
88
  sched_finish_regroup_exact = 1000,
89
  sched_finish_pad_groups,
90
  sched_finish_none
91
};
92
 
93
/* Dispatch group termination caused by an insn.  */
94
enum group_termination
95
{
96
  current_group,
97
  previous_group
98
};
99
 
100
/* Enumeration to give which calling sequence to use.  */
101
enum rs6000_abi {
102
  ABI_NONE,
103
  ABI_AIX,                      /* IBM's AIX */
104
  ABI_V4,                       /* System V.4/eabi */
105
  ABI_DARWIN                    /* Apple's Darwin (OS X kernel) */
106
};
107
 
108
/* Small data support types.  */
109
enum rs6000_sdata_type {
110
  SDATA_NONE,                   /* No small data support.  */
111
  SDATA_DATA,                   /* Just put data in .sbss/.sdata, don't use relocs.  */
112
  SDATA_SYSV,                   /* Use r13 to point to .sdata/.sbss.  */
113
  SDATA_EABI                    /* Use r13 like above, r2 points to .sdata2/.sbss2.  */
114
};
115
 
116
/* Type of traceback to use.  */
117
enum  rs6000_traceback_type {
118
  traceback_default = 0,
119
  traceback_none,
120
  traceback_part,
121
  traceback_full
122
};
123
 
124
/* Code model for 64-bit linux.
125
   small: 16-bit toc offsets.
126
   medium: 32-bit toc offsets, static data and code within 2G of TOC pointer.
127
   large: 32-bit toc offsets, no limit on static data and code.  */
128
enum rs6000_cmodel {
129
  CMODEL_SMALL,
130
  CMODEL_MEDIUM,
131
  CMODEL_LARGE
132
};
133
 
134
/* Describe which vector unit to use for a given machine mode.  */
135
enum rs6000_vector {
136
  VECTOR_NONE,                  /* Type is not  a vector or not supported */
137
  VECTOR_ALTIVEC,               /* Use altivec for vector processing */
138
  VECTOR_VSX,                   /* Use VSX for vector processing */
139
  VECTOR_PAIRED,                /* Use paired floating point for vectors */
140
  VECTOR_SPE,                   /* Use SPE for vector processing */
141
  VECTOR_OTHER                  /* Some other vector unit */
142
};
143
 
144
/* No enumeration is defined to index the -mcpu= values (entries in
145
   processor_target_table), with the type int being used instead, but
146
   we need to distinguish the special "native" value.  */
147
#define RS6000_CPU_OPTION_NATIVE -1
148
 
149
#endif

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.