summaryrefslogtreecommitdiff
path: root/gcc/config/picochip/picochip.md
diff options
context:
space:
mode:
authorhariharans <hariharans@138bc75d-0d04-0410-961f-82ee72b054a4>2010-04-30 09:40:21 +0000
committerhariharans <hariharans@138bc75d-0d04-0410-961f-82ee72b054a4>2010-04-30 09:40:21 +0000
commit1b7aefdbfa2539b169c00647ac09f0fab39af677 (patch)
tree4d431d1801fd8cfcc9e1bf12e77b84f78e83e81a /gcc/config/picochip/picochip.md
parentb7e3aeb1d14c179214a5509ae0b031dd725c377d (diff)
downloadgcc-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.md17
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"