diff options
author | green <green@138bc75d-0d04-0410-961f-82ee72b054a4> | 2009-09-09 22:29:13 +0000 |
---|---|---|
committer | green <green@138bc75d-0d04-0410-961f-82ee72b054a4> | 2009-09-09 22:29:13 +0000 |
commit | 96e0c169a3620cb26f8e004de9ca2e4f529919a1 (patch) | |
tree | 5f16b40af434e212bc207a1bdcfc091cc5834b6d /gcc/config/moxie/moxie.md | |
parent | 3f42074170dca61b37007d84a6d251dc1f2d0cc9 (diff) | |
download | gcc-96e0c169a3620cb26f8e004de9ca2e4f529919a1.tar.gz |
* config/moxie/moxie.md (*movsi, *movhi, *movqi): Use xor to load
the constant 0 when appropriate.
* config/moxie/constraints.md: Add constraint O.
* config/moxie/moxie.c (moxie_setup_incoming_varargs): Adjust
to pass up to 6 32-bit argument values in registers.
(moxie_function_arg): Ditto.
(moxie_arg_partial_bytes): Ditto.
* config/moxie/moxie.h (FUNCTION_ARG_ADVANCE): Ditto.
(REG_PARM_STACK_SPACE): Ditto.
(FUNCTION_ARG_REGNO_P): Ditto.
* config/moxie/moxie.c (moxie_expand_prologue): Use dec
instruction to allocate stack space.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@151579 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/config/moxie/moxie.md')
-rw-r--r-- | gcc/config/moxie/moxie.md | 21 |
1 files changed, 12 insertions, 9 deletions
diff --git a/gcc/config/moxie/moxie.md b/gcc/config/moxie/moxie.md index 02072f48388..a8e68872e3f 100644 --- a/gcc/config/moxie/moxie.md +++ b/gcc/config/moxie/moxie.md @@ -223,11 +223,12 @@ }") (define_insn "*movsi" - [(set (match_operand:SI 0 "general_operand" "=r,r,W,A,r,r,B,r") - (match_operand:SI 1 "moxie_general_movsrc_operand" "r,i,r,r,W,A,r,B"))] + [(set (match_operand:SI 0 "general_operand" "=r,r,r,W,A,r,r,B,r") + (match_operand:SI 1 "moxie_general_movsrc_operand" "O,r,i,r,r,W,A,r,B"))] "register_operand (operands[0], SImode) || register_operand (operands[1], SImode)" "@ + xor %0, %0 mov %0, %1 ldi.l %0, %1 st.l %0, %1 @@ -236,7 +237,7 @@ lda.l %0, %1 sto.l %0, %1 ldo.l %0, %1" - [(set_attr "length" "2,6,2,6,2,6,6,6")]) + [(set_attr "length" "2,2,6,2,6,2,6,6,6")]) (define_expand "movqi" [(set (match_operand:QI 0 "general_operand" "") @@ -250,11 +251,12 @@ }") (define_insn "*movqi" - [(set (match_operand:QI 0 "general_operand" "=r,r,W,A,r,r,B,r") - (match_operand:QI 1 "moxie_general_movsrc_operand" "r,i,r,r,W,A,r,B"))] + [(set (match_operand:QI 0 "general_operand" "=r,r,r,W,A,r,r,B,r") + (match_operand:QI 1 "moxie_general_movsrc_operand" "O,r,i,r,r,W,A,r,B"))] "register_operand (operands[0], QImode) || register_operand (operands[1], QImode)" "@ + xor %0, %0 mov %0, %1 ldi.b %0, %1 st.b %0, %1 @@ -263,7 +265,7 @@ lda.b %0, %1 sto.b %0, %1 ldo.b %0, %1" - [(set_attr "length" "2,6,2,6,2,6,6,6")]) + [(set_attr "length" "2,2,6,2,6,2,6,6,6")]) (define_expand "movhi" [(set (match_operand:HI 0 "general_operand" "") @@ -277,11 +279,12 @@ }") (define_insn "*movhi" - [(set (match_operand:HI 0 "general_operand" "=r,r,W,A,r,r,B,r") - (match_operand:HI 1 "moxie_general_movsrc_operand" "r,i,r,r,W,A,r,B"))] + [(set (match_operand:HI 0 "general_operand" "=r,r,r,W,A,r,r,B,r") + (match_operand:HI 1 "moxie_general_movsrc_operand" "O,r,i,r,r,W,A,r,B"))] "(register_operand (operands[0], HImode) || register_operand (operands[1], HImode))" "@ + xor %0, %0 mov %0, %1 ldi.s %0, %1 st.s %0, %1 @@ -290,7 +293,7 @@ lda.s %0, %1 sto.s %0, %1 ldo.s %0, %1" - [(set_attr "length" "2,6,2,6,2,6,6,6")]) + [(set_attr "length" "2,2,6,2,6,2,6,6,6")]) ;; ------------------------------------------------------------------------- ;; Compare instructions |