diff options
author | Richard Sandiford <richard@codesourcery.com> | 2007-01-19 13:30:35 +0000 |
---|---|---|
committer | Richard Sandiford <rsandifo@gcc.gnu.org> | 2007-01-19 13:30:35 +0000 |
commit | f233b84c1759b8b3f5392c1b195a7866418a8590 (patch) | |
tree | b4ddc49f2fb66bd0e7dbad119a6a088795bbc092 /gcc | |
parent | bda2a57174547f0bfbf82c6722225aab7143665b (diff) | |
download | gcc-f233b84c1759b8b3f5392c1b195a7866418a8590.zip gcc-f233b84c1759b8b3f5392c1b195a7866418a8590.tar.gz gcc-f233b84c1759b8b3f5392c1b195a7866418a8590.tar.bz2 |
200x-xx-xx Richard Sandiford <richard@codesourcery.com> Julian Brown <julian@codesourcery.com>
gcc/
200x-xx-xx Richard Sandiford <richard@codesourcery.com>
Julian Brown <julian@codesourcery.com>
* config/m68k/m68k.h (CONST_OK_FOR_LETTER_P): Add an 'R' case.
* config/m68k/m68k.md (*movsi_cfv4): Fold into...
(*movsi_cf): ...here. Remove unnecessary 'R' from 'Rg'.
Add commentary.
Co-Authored-By: Julian Brown <julian@codesourcery.com>
From-SVN: r120958
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 8 | ||||
-rw-r--r-- | gcc/config/m68k/m68k.h | 6 | ||||
-rw-r--r-- | gcc/config/m68k/m68k.md | 11 |
3 files changed, 15 insertions, 10 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 47177ba..014c268 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,4 +1,12 @@ 2007-01-19 Richard Sandiford <richard@codesourcery.com> + Julian Brown <julian@codesourcery.com> + + * config/m68k/m68k.h (CONST_OK_FOR_LETTER_P): Add an 'R' case. + * config/m68k/m68k.md (*movsi_cfv4): Fold into... + (*movsi_cf): ...here. Remove unnecessary 'R' from 'Rg'. + Add commentary. + +2007-01-19 Richard Sandiford <richard@codesourcery.com> * config/m68k/m68k-protos.h (valid_mov3q_const): Take a HOST_WIDE_INT and return a bool. diff --git a/gcc/config/m68k/m68k.h b/gcc/config/m68k/m68k.h index 5f0808d..d373be7 100644 --- a/gcc/config/m68k/m68k.h +++ b/gcc/config/m68k/m68k.h @@ -493,7 +493,8 @@ extern enum reg_class regno_reg_class[]; `M' is for numbers that moveq+notb can't handle. 'N' is for range 24 to 31, rotatert:SI 8 to 1 expressed as rotate. 'O' is for 16 (for rotate using swap). - 'P' is for range 8 to 15, rotatert:HI 8 to 1 expressed as rotate. */ + 'P' is for range 8 to 15, rotatert:HI 8 to 1 expressed as rotate. + 'R' is for numbers that mov3q can handle. */ #define CONST_OK_FOR_LETTER_P(VALUE, C) \ ((C) == 'I' ? (VALUE) > 0 && (VALUE) <= 8 : \ (C) == 'J' ? (VALUE) >= -0x8000 && (VALUE) <= 0x7FFF : \ @@ -502,7 +503,8 @@ extern enum reg_class regno_reg_class[]; (C) == 'M' ? (VALUE) < -0x100 || (VALUE) >= 0x100 : \ (C) == 'N' ? (VALUE) >= 24 && (VALUE) <= 31 : \ (C) == 'O' ? (VALUE) == 16 : \ - (C) == 'P' ? (VALUE) >= 8 && (VALUE) <= 15 : 0) + (C) == 'P' ? (VALUE) >= 8 && (VALUE) <= 15 : \ + (C) == 'R' ? valid_mov3q_const (VALUE) : 0) /* "G" defines all of the floating constants that are *NOT* 68881 constants. This is so 68881 constants get reloaded and the diff --git a/gcc/config/m68k/m68k.md b/gcc/config/m68k/m68k.md index 0768b5a..c953ec2 100644 --- a/gcc/config/m68k/m68k.md +++ b/gcc/config/m68k/m68k.md @@ -667,16 +667,11 @@ return output_move_simode (operands); }) +;; ColdFire move instructions can have at most one operand of mode >= 6. (define_insn "*movsi_cf" [(set (match_operand:SI 0 "nonimmediate_operand" "=r<Q>,g,U") - (match_operand:SI 1 "general_operand" "g,r<Q>,U"))] - "TARGET_COLDFIRE && !TARGET_ISAB" - "* return output_move_simode (operands);") - -(define_insn "*movsi_cfv4" - [(set (match_operand:SI 0 "nonimmediate_operand" "=r<Q>,g,U") - (match_operand:SI 1 "general_operand" "Rg,Rr<Q>,U"))] - "TARGET_ISAB" + (match_operand:SI 1 "general_operand" "g,Rr<Q>,U"))] + "TARGET_COLDFIRE" "* return output_move_simode (operands);") ;; Special case of fullword move, where we need to get a non-GOT PIC |