summaryrefslogtreecommitdiff
path: root/gcc/regs.h
diff options
context:
space:
mode:
authorrsandifo <rsandifo@138bc75d-0d04-0410-961f-82ee72b054a4>2010-07-12 18:55:57 +0000
committerrsandifo <rsandifo@138bc75d-0d04-0410-961f-82ee72b054a4>2010-07-12 18:55:57 +0000
commitdb5ca0ab8525bed4ea0fdad098072bc339cf7b43 (patch)
treefd2adeb46c2c6f2a504690bad110fdee802e14f9 /gcc/regs.h
parentd0f03375468f173a33fe2f655e260c0ff6209e25 (diff)
downloadgcc-db5ca0ab8525bed4ea0fdad098072bc339cf7b43.tar.gz
gcc/
* regs.h (target_regs): Add x_direct_load, x_direct_store and x_float_extend_from_mem. (direct_load, direct_store, float_extend_from_mem): New macros. * expr.c (direct_load, direct_store, float_extend_from_mem): Delete. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@162100 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/regs.h')
-rw-r--r--gcc/regs.h15
1 files changed, 15 insertions, 0 deletions
diff --git a/gcc/regs.h b/gcc/regs.h
index ac23ae62fc9..9e8ea814570 100644
--- a/gcc/regs.h
+++ b/gcc/regs.h
@@ -280,6 +280,15 @@ struct target_regs {
/* Keep track of the last mode we initialized move costs for. */
int x_last_mode_for_init_move_cost;
+
+ /* Record for each mode whether we can move a register directly to or
+ from an object of that mode in memory. If we can't, we won't try
+ to use that mode directly when accessing a field of that mode. */
+ char x_direct_load[NUM_MACHINE_MODES];
+ char x_direct_store[NUM_MACHINE_MODES];
+
+ /* Record for each mode whether we can float-extend from memory. */
+ bool x_float_extend_from_mem[NUM_MACHINE_MODES][NUM_MACHINE_MODES];
};
extern struct target_regs default_target_regs;
@@ -303,6 +312,12 @@ extern struct target_regs *this_target_regs;
(this_target_regs->x_may_move_in_cost)
#define may_move_out_cost \
(this_target_regs->x_may_move_out_cost)
+#define direct_load \
+ (this_target_regs->x_direct_load)
+#define direct_store \
+ (this_target_regs->x_direct_store)
+#define float_extend_from_mem \
+ (this_target_regs->x_float_extend_from_mem)
/* Return an exclusive upper bound on the registers occupied by hard
register (reg:MODE REGNO). */