GCC Middle and Back End API Reference
Main Page
Namespaces
Data Structures
Files
File List
Globals
lower-subreg.h
Go to the documentation of this file.
1
/* Target-dependent costs for lower-subreg.c.
2
Copyright (C) 2012-2013 Free Software Foundation, Inc.
3
4
This file is part of GCC.
5
6
GCC is free software; you can redistribute it and/or modify it under
7
the terms of the GNU General Public License as published by the Free
8
Software Foundation; either version 3, or (at your option; any later
9
version.
10
11
GCC is distributed in the hope that it will be useful, but WITHOUT ANY
12
WARRANTY; without even the implied warranty of MERCHANTABILITY or
13
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
14
for more details.
15
16
You should have received a copy of the GNU General Public License
17
along with GCC; see the file COPYING3. If not see
18
<http://www.gnu.org/licenses/>. */
19
20
#ifndef LOWER_SUBREG_H
21
#define LOWER_SUBREG_H 1
22
23
/* Information about whether, and where, lower-subreg should be applied. */
24
struct
lower_subreg_choices
{
25
/* A boolean vector for move splitting that is indexed by mode and is
26
true for each mode that is to have its copies split. */
27
bool
move_modes_to_split
[MAX_MACHINE_MODE];
28
29
/* True if zero-extensions from word_mode to twice_word_mode should
30
be split. */
31
bool
splitting_zext
;
32
33
/* Index X is true if twice_word_mode shifts by X + BITS_PER_WORD
34
should be split. */
35
bool
splitting_ashift
[
MAX_BITS_PER_WORD
];
36
bool
splitting_lshiftrt
[
MAX_BITS_PER_WORD
];
37
bool
splitting_ashiftrt
[
MAX_BITS_PER_WORD
];
38
39
/* True if there is at least one mode that is worth splitting. */
40
bool
something_to_do
;
41
};
42
43
/* Target-specific information for the subreg lowering pass. */
44
struct
target_lower_subreg
{
45
/* An integer mode that is twice as wide as word_mode. */
46
enum
machine_mode
x_twice_word_mode
;
47
48
/* What we have decided to do when optimizing for size (index 0)
49
and speed (index 1). */
50
struct
lower_subreg_choices
x_choices
[2];
51
};
52
53
extern
struct
target_lower_subreg
default_target_lower_subreg
;
54
#if SWITCHABLE_TARGET
55
extern
struct
target_lower_subreg
*
this_target_lower_subreg
;
56
#else
57
#define this_target_lower_subreg (&default_target_lower_subreg)
58
#endif
59
60
#endif
gcc
lower-subreg.h
Generated by
1.8.1.1