rs6000.h (CLASS_MAX_NREGS): DF goes in 1 register on e500v2.
authorAldy Hernandez <aldyh@redhat.com>
Fri, 14 Jan 2005 21:22:14 +0000 (21:22 +0000)
committerAldy Hernandez <aldyh@gcc.gnu.org>
Fri, 14 Jan 2005 21:22:14 +0000 (21:22 +0000)
commit54b695e729623a329250bf68894cbd7ae25020ac
tree44ec03ace9a33d611bf37e4c25c9c7ffad7a7728
parentfd3395a50bf61702cce7c573f02caebbfd536fc2
rs6000.h (CLASS_MAX_NREGS): DF goes in 1 register on e500v2.

* config/rs6000/rs6000.h (CLASS_MAX_NREGS): DF goes in 1 register
on e500v2.
(CANNOT_CHANGE_MODE_CLASS): Restrict DI mode changes on e500v2.
(PREDICATE_CODES): Add rs6k_nonimmediate_operand.

* config/rs6000/rs6000.c (invalid_e500_subreg): New.
(rs6k_nonimmediate_operand): New.
(rs6000_legitimate_offset_address_p): Handle DI modes on e500v2
correctly.
(legitimate_lo_sum_address_p): Same.
(rs6000_legitimize_address): Same.
(rs6000_legitimize_reload_address): Same.
(rs6000_legitimate_address): Same.
(spe_build_register_parallel): Pass DF and DC modes in a DI
register.

* config/rs6000/rs6000.md ("*movsi_internal1"): Change predicate
to rs6k_nonimmediate_operand.

* config/rs6000/spe.md ("*frob_df_di"): New.
("*frob_di_df"): New.
("*frob_di_df_2"): New.
("*mov_sidf_e500_subreg0"): New.
("*mov_sidf_e500_subreg4"): New.
("*movdf_e500_double"): Change predicate to
rs6k_nonimmediate_operand.

From-SVN: r93665
gcc/ChangeLog
gcc/config/rs6000/rs6000.c
gcc/config/rs6000/rs6000.h
gcc/config/rs6000/rs6000.md
gcc/config/rs6000/spe.md