diff options
author | Richard Sandiford <rdsandiford@googlemail.com> | 2010-07-12 18:55:57 +0000 |
---|---|---|
committer | Richard Sandiford <rsandifo@gcc.gnu.org> | 2010-07-12 18:55:57 +0000 |
commit | 9d86796b627350ba83fcdf4e101805ae4edf08a6 (patch) | |
tree | fd2adeb46c2c6f2a504690bad110fdee802e14f9 /gcc/regs.h | |
parent | 3e9c326a88c289e25d58d2e9efb8517ef272410d (diff) | |
download | gcc-9d86796b627350ba83fcdf4e101805ae4edf08a6.zip gcc-9d86796b627350ba83fcdf4e101805ae4edf08a6.tar.gz gcc-9d86796b627350ba83fcdf4e101805ae4edf08a6.tar.bz2 |
regs.h (target_regs): Add x_direct_load, x_direct_store and x_float_extend_from_mem.
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.
From-SVN: r162100
Diffstat (limited to 'gcc/regs.h')
-rw-r--r-- | gcc/regs.h | 15 |
1 files changed, 15 insertions, 0 deletions
@@ -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). */ |