From 8cb81753ef6a152040f98464643f9fa5f5eff924 Mon Sep 17 00:00:00 2001 From: Kaushik Phatak Date: Fri, 16 Apr 2010 18:19:50 +0000 Subject: [PATCH] h8300.md (movqi_h8sx, [...]): Emit instructions in #xx:3 and #xx:4 mode. * config/h8300/h8300.md (movqi_h8sx, movhi_h8sx, movsi_h8sx, cmphi_h8300hs_znvc, cmpsi, addhi3_h8sx) : Emit instructions in #xx:3 and #xx:4 mode. From-SVN: r158439 --- gcc/ChangeLog | 4 ++++ gcc/config/h8300/h8300.md | 44 ++++++++++++++++++++++++++++++++++++-------- 2 files changed, 40 insertions(+), 8 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index cbf1340..b5ed79c 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -20,6 +20,10 @@ 2010-04-12 Kaushik Phatak + * config/h8300/h8300.md (movqi_h8sx, movhi_h8sx, movsi_h8sx, + cmphi_h8300hs_znvc, cmpsi, addhi3_h8sx) : Emit instructions in + #xx:3 and #xx:4 mode. + * config/h8300/h8300.md (inverted load with HImode dest): Add support for H8300SX. diff --git a/gcc/config/h8300/h8300.md b/gcc/config/h8300/h8300.md index c35f2bb..289c339 100644 --- a/gcc/config/h8300/h8300.md +++ b/gcc/config/h8300/h8300.md @@ -222,7 +222,7 @@ (match_operand:QI 1 "general_operand_src" "P4>X,rQi"))] "TARGET_H8300SX" "@ - mov.b %X1,%X0 + mov.b %X1:4,%X0 mov.b %X1,%X0" [(set_attr "length_table" "mov_imm4,movb") (set_attr "cc" "set_znv")]) @@ -300,8 +300,8 @@ "TARGET_H8300SX" "@ sub.w %T0,%T0 - mov.w %T1,%T0 - mov.w %T1,%T0 + mov.w %T1:3,%T0 + mov.w %T1:4,%T0 mov.w %T1,%T0 mov.w %T1,%T0" [(set_attr "length_table" "*,*,mov_imm4,short_immediate,movw") @@ -511,7 +511,7 @@ "TARGET_H8300SX" "@ sub.l %S0,%S0 - mov.l %S1,%S0 + mov.l %S1:3,%S0 mov.l %S1,%S0 mov.l %S1,%S0 clrmac @@ -1143,7 +1143,21 @@ (compare (match_operand:HI 0 "h8300_dst_operand" "rU,rQ") (match_operand:HI 1 "h8300_src_operand" "P3>X,rQi")))] "TARGET_H8300H || TARGET_H8300S" - "cmp.w %T1,%T0" + "* +{ + switch (which_alternative) + { + case 0: + if (!TARGET_H8300SX) + return \"cmp.w %T1,%T0\"; + else + return \"cmp.w %T1:3,%T0\"; + case 1: + return \"cmp.w %T1,%T0\"; + default: + gcc_unreachable (); + } +}" [(set_attr "length_table" "short_immediate,addw") (set_attr "cc" "compare,compare")]) @@ -1152,7 +1166,21 @@ (compare (match_operand:SI 0 "h8300_dst_operand" "r,rQ") (match_operand:SI 1 "h8300_src_operand" "P3>X,rQi")))] "TARGET_H8300H || TARGET_H8300S" - "cmp.l %S1,%S0" + "* +{ + switch (which_alternative) + { + case 0: + if (!TARGET_H8300SX) + return \"cmp.l %S1,%S0\"; + else + return \"cmp.l %S1:3,%S0\"; + case 1: + return \"cmp.l %S1,%S0\"; + default: + gcc_unreachable (); + } +}" [(set_attr "length" "2,*") (set_attr "length_table" "*,addl") (set_attr "cc" "compare,compare")]) @@ -1259,8 +1287,8 @@ (match_operand:HI 2 "h8300_src_operand" "P3>X,P3