OSDN Git Service

* config/h8300/h8300.md (movqi_h8sx, movhi_h8sx, movsi_h8sx,
authorlaw <law@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 16 Apr 2010 18:19:50 +0000 (18:19 +0000)
committerlaw <law@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 16 Apr 2010 18:19:50 +0000 (18:19 +0000)
cmphi_h8300hs_znvc, cmpsi, addhi3_h8sx) : Emit instructions in #xx:3
and #xx:4 mode.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@158439 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/config/h8300/h8300.md

index cbf1340..b5ed79c 100644 (file)
 
 2010-04-12  Kaushik Phatak  <kaushik.phatak@kpitcummins.com>
 
+       * 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.
 
index c35f2bb..289c339 100644 (file)
        (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")])
   "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")
   "TARGET_H8300SX"
   "@
    sub.l       %S0,%S0
-   mov.l       %S1,%S0
+   mov.l       %S1:3,%S0
    mov.l       %S1,%S0
    mov.l       %S1,%S0
    clrmac
        (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")])
 
        (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")])
                 (match_operand:HI 2 "h8300_src_operand" "P3>X,P3<X,J,rQi")))]
   "TARGET_H8300SX && h8300_operands_match_p (operands)"
   "@
-   add.w       %T2,%T0
-   sub.w       %G2,%T0
+   add.w       %T2:3,%T0
+   sub.w       %G2:3,%T0
    add.b       %t2,%t0
    add.w       %T2,%T0"
   [(set_attr "length_table" "short_immediate,short_immediate,*,addw")