diff options
author | rsandifo <rsandifo@138bc75d-0d04-0410-961f-82ee72b054a4> | 2010-07-12 18:55:57 +0000 |
---|---|---|
committer | rsandifo <rsandifo@138bc75d-0d04-0410-961f-82ee72b054a4> | 2010-07-12 18:55:57 +0000 |
commit | db5ca0ab8525bed4ea0fdad098072bc339cf7b43 (patch) | |
tree | fd2adeb46c2c6f2a504690bad110fdee802e14f9 /gcc/regs.h | |
parent | d0f03375468f173a33fe2f655e260c0ff6209e25 (diff) | |
download | gcc-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.h | 15 |
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). */ |