diff options
author | Jeff Law <law@redhat.com> | 2008-08-26 10:12:20 -0600 |
---|---|---|
committer | Jeff Law <law@gcc.gnu.org> | 2008-08-26 10:12:20 -0600 |
commit | 5d2b84f840a7f6a1f57b9cde09693ce2cd91d3d3 (patch) | |
tree | b6f96ed48d634b1b76fca22437176607b9217e1d | |
parent | 3f4d9b988110a36b70844ad894e80d0fdb37ea39 (diff) | |
download | gcc-5d2b84f840a7f6a1f57b9cde09693ce2cd91d3d3.zip gcc-5d2b84f840a7f6a1f57b9cde09693ce2cd91d3d3.tar.gz gcc-5d2b84f840a7f6a1f57b9cde09693ce2cd91d3d3.tar.bz2 |
mn10300.md (movqi, movhi): Split i->d*a case into two cases to avoid the possibility of getting...
* mn10300.md (movqi, movhi): Split i->d*a case into two cases to
avoid the possibility of getting DATA_OR_ADDRESS_REGS as the
preferred class when copying a constant into a partial word register.
From-SVN: r139600
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/config/mn10300/mn10300.md | 24 |
2 files changed, 20 insertions, 10 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 68763ec..8768053 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2008-08-26 Jeff Law <law@redhat.com> + + * mn10300.md (movqi, movhi): Split i->d*a case into two cases to + avoid the possibility of getting DATA_OR_ADDRESS_REGS as the + preferred class when copying a constant into a partial word register. + 2008-08-26 Ben Elliston <bje@au.ibm.com> * rtlanal.c: Fix uses of "it's" with "its" where appropriate. diff --git a/gcc/config/mn10300/mn10300.md b/gcc/config/mn10300/mn10300.md index 73043e9..8fbbdc8 100644 --- a/gcc/config/mn10300/mn10300.md +++ b/gcc/config/mn10300/mn10300.md @@ -115,8 +115,8 @@ [(set_attr "cc" "none,clobber,none_0hit,none_0hit,none_0hit,none_0hit,none_0hit")]) (define_insn "" - [(set (match_operand:QI 0 "nonimmediate_operand" "=d*a,d,d*a,d,m") - (match_operand:QI 1 "general_operand" "0,I,dai,m,d"))] + [(set (match_operand:QI 0 "nonimmediate_operand" "=d*a,d,d,!*a,d*a,d,m") + (match_operand:QI 1 "general_operand" "0,I,i,i,da,m,d"))] "register_operand (operands[0], QImode) || register_operand (operands[1], QImode)" "* @@ -128,6 +128,8 @@ case 1: return \"clr %0\"; case 2: + case 3: + case 4: if (GET_CODE (operands[1]) == CONST_DOUBLE) { rtx xoperands[2]; @@ -138,14 +140,14 @@ } return \"mov %1,%0\"; - case 3: - case 4: + case 5: + case 6: return \"movbu %1,%0\"; default: gcc_unreachable (); } }" - [(set_attr "cc" "none,clobber,none_0hit,none_0hit,none_0hit")]) + [(set_attr "cc" "none,clobber,none_0hit,none_0hit,none_0hit,none_0hit,none_0hit")]) ;; movhi @@ -208,8 +210,8 @@ [(set_attr "cc" "none,clobber,none_0hit,none_0hit,none_0hit,none_0hit,none_0hit")]) (define_insn "" - [(set (match_operand:HI 0 "nonimmediate_operand" "=d*a,d,d*a,d,m") - (match_operand:HI 1 "general_operand" "0,I,dai,m,d"))] + [(set (match_operand:HI 0 "nonimmediate_operand" "=d*a,d,d,!*a,d*a,d,m") + (match_operand:HI 1 "general_operand" "0,I,i,i,da,m,d"))] "register_operand (operands[0], HImode) || register_operand (operands[1], HImode)" "* @@ -221,6 +223,8 @@ case 1: return \"clr %0\"; case 2: + case 3: + case 4: if (GET_CODE (operands[1]) == CONST_DOUBLE) { rtx xoperands[2]; @@ -230,14 +234,14 @@ return \"\"; } return \"mov %1,%0\"; - case 3: - case 4: + case 5: + case 6: return \"movhu %1,%0\"; default: gcc_unreachable (); } }" - [(set_attr "cc" "none,clobber,none_0hit,none_0hit,none_0hit")]) + [(set_attr "cc" "none,clobber,none_0hit,none_0hit,none_0hit,none_0hit,none_0hit")]) ;; movsi and helpers |