diff options
author | hariharans <hariharans@138bc75d-0d04-0410-961f-82ee72b054a4> | 2010-04-30 09:40:21 +0000 |
---|---|---|
committer | hariharans <hariharans@138bc75d-0d04-0410-961f-82ee72b054a4> | 2010-04-30 09:40:21 +0000 |
commit | 1b7aefdbfa2539b169c00647ac09f0fab39af677 (patch) | |
tree | 4d431d1801fd8cfcc9e1bf12e77b84f78e83e81a /gcc/config/picochip/picochip.md | |
parent | b7e3aeb1d14c179214a5509ae0b031dd725c377d (diff) | |
download | gcc-1b7aefdbfa2539b169c00647ac09f0fab39af677.tar.gz |
* config/picochip/picochip.c (picochip_legitimize_address): Define.
Use this function to do machine-specific conversion.
(picochip_legitimize_reload_address): Likewise.
(picochip_legitimate_address_p): Check valid base register only if
strict.
(picochip_check_conditional_copy): Check for modw only if opnd is
register.
* config/picochip/picochip.h (LEGITIMIZE_RELOAD_ADDRESS): Use this
to call the function in c.
* config/picochip/picochip-protos.h
(picochip_legitimize_reload_address): Define.
* config/picochip/picochip.md (supported_compare1): Define.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@158927 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/config/picochip/picochip.md')
-rw-r--r-- | gcc/config/picochip/picochip.md | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/gcc/config/picochip/picochip.md b/gcc/config/picochip/picochip.md index 02f0f14850d..62103506123 100644 --- a/gcc/config/picochip/picochip.md +++ b/gcc/config/picochip/picochip.md @@ -590,6 +590,23 @@ (set_attr "length" "2,2,4") ]) +;; This pattern was added to match the previous pattern. When doing if-convert +;; the pattern generated using movhicc does not have a eq:CC but only a eq for +;; operator. If this pattern were not to be there, Gcc decides not to use +;; movhicc at all. Whereas, in Gcc 4.4, it seems to be cleverer. +(define_insn "*supported_compare1" + [(set (reg:CC CC_REGNUM) + (match_operator 0 "picochip_supported_comparison_operator" + [(match_operand:HI 1 "register_operand" "r,r,r") + (match_operand:HI 2 "picochip_comparison_operand" "r,J,i")]))] + "" + "* return picochip_output_compare(operands);" + [; Must be picoAlu because it sets the condition flags. + (set_attr "type" "picoAlu,picoAlu,picoAlu") + (set_attr "longConstant" "false,false,true") + (set_attr "length" "2,2,4") + ]) + (define_insn "*compare" [(set (reg:CC CC_REGNUM) (match_operator:CC 0 "comparison_operator" |