Added offset bits of MOVA/Sz assembly instruction for memory access
authorSandeep Kumar Singh <Sandeep.Singh2@kpitcummins.com>
Thu, 14 Jun 2012 08:47:28 +0000 (08:47 +0000)
committerJayant Sonar <jayants@gcc.gnu.org>
Thu, 14 Jun 2012 08:47:28 +0000 (08:47 +0000)
From-SVN: r188600

gcc/config/h8300/genmova.sh
gcc/config/h8300/h8300.c
gcc/config/h8300/mova.md

index 59f0b4629c6a205d52d2af11809f5cb1be779e68..dab1865f1a07ce8e3b802d959f32d43d9d814129 100644 (file)
@@ -70,7 +70,7 @@ for s in QI HI; do
        (plus:$d (zero_extend:$d $operand)
                 (match_operand:$d 2 "immediate_operand" "i,i")))]
   "TARGET_H8300SX"
-  "mova/b.l @(%o2,$src),%S0"
+  "mova/b.l @(%o2%C2,$src),%S0"
   [(set_attr "length_table" "mova")
    (set_attr "cc" "none")])
 
@@ -114,7 +114,7 @@ EOF
                           (const_int $amount))
                 (match_operand:$d 2 "immediate_operand" "i,i")))]
   "TARGET_H8300SX"
-  "mova/$opsize.l @(%o2,$src),%S0"
+  "mova/$opsize.l @(%o2%C2,$src),%S0"
   [(set_attr "length_table" "mova")
    (set_attr "cc" "none")])
 
@@ -143,7 +143,7 @@ EOF
                           (const_int $amount))
                 (match_operand:$d 2 "immediate_operand" "i,i")))]
   "TARGET_H8300SX"
-  "mova/$opsize.l @(%o2,$src),%S0"
+  "mova/$opsize.l @(%o2%C2,$src),%S0"
   [(set_attr "length_table" "mova")
    (set_attr "cc" "none")])
 
@@ -184,7 +184,7 @@ EOF
                         (const_int $mask))
                 (match_operand:$d 2 "immediate_operand" "i")))]
   "TARGET_H8300SX"
-  "mova/$opsize.l @(%o2,$src),%S0"
+  "mova/$opsize.l @(%o2%C2,$src),%S0"
   [(set_attr "length_table" "mova")
    (set_attr "cc" "none")])
 
index f165fdf66f6290c1604095e9e40c67f22ae2fbfa..e0784a52c0d4edda4e6f7ed43bc4afe910ff9778 100644 (file)
@@ -1446,6 +1446,12 @@ h8300_print_operand (FILE *file, rtx x, int code)
 
   switch (code)
     {
+    case 'C':
+      if (h8300_constant_length (x) == 2)
+       fprintf (file, ":16");
+      else
+       fprintf (file, ":32");
+      return;
     case 'E':
       switch (GET_CODE (x))
        {
index f6348f3d3cc03b67740cf11bb874668142178217..73b6e36bb267b958ede5bef01231e06f2d9e48ca 100644 (file)
@@ -23,7 +23,7 @@
                           (const_int 2))
                 (match_operand:QI 2 "immediate_operand" "i,i")))]
   "TARGET_H8300SX"
-  "mova/w.l @(%o2,%X1.b),%S0"
+  "mova/w.l @(%o2%C2,%X1.b),%S0"
   [(set_attr "length_table" "mova")
    (set_attr "cc" "none")])
 
@@ -33,7 +33,7 @@
                           (const_int 1))
                 (match_operand:QI 2 "immediate_operand" "i,i")))]
   "TARGET_H8300SX"
-  "mova/w.l @(%o2,%X1.b),%S0"
+  "mova/w.l @(%o2%C2,%X1.b),%S0"
   [(set_attr "length_table" "mova")
    (set_attr "cc" "none")])
 
@@ -43,7 +43,7 @@
                           (const_int 4))
                 (match_operand:QI 2 "immediate_operand" "i,i")))]
   "TARGET_H8300SX"
-  "mova/l.l @(%o2,%X1.b),%S0"
+  "mova/l.l @(%o2%C2,%X1.b),%S0"
   [(set_attr "length_table" "mova")
    (set_attr "cc" "none")])
 
@@ -53,7 +53,7 @@
                           (const_int 2))
                 (match_operand:QI 2 "immediate_operand" "i,i")))]
   "TARGET_H8300SX"
-  "mova/l.l @(%o2,%X1.b),%S0"
+  "mova/l.l @(%o2%C2,%X1.b),%S0"
   [(set_attr "length_table" "mova")
    (set_attr "cc" "none")])
 
@@ -62,7 +62,7 @@
        (plus:HI (zero_extend:HI (match_operand:QI 1 "h8300_dst_operand" "0,rQ"))
                 (match_operand:HI 2 "immediate_operand" "i,i")))]
   "TARGET_H8300SX"
-  "mova/b.l @(%o2,%X1.b),%S0"
+  "mova/b.l @(%o2%C2,%X1.b),%S0"
   [(set_attr "length_table" "mova")
    (set_attr "cc" "none")])
 
@@ -81,7 +81,7 @@
                           (const_int 2))
                 (match_operand:HI 2 "immediate_operand" "i,i")))]
   "TARGET_H8300SX"
-  "mova/w.l @(%o2,%X1.b),%S0"
+  "mova/w.l @(%o2%C2,%X1.b),%S0"
   [(set_attr "length_table" "mova")
    (set_attr "cc" "none")])
 
                         (const_int 510))
                 (match_operand:HI 2 "immediate_operand" "i")))]
   "TARGET_H8300SX"
-  "mova/w.l @(%o2,%X1.b),%S0"
+  "mova/w.l @(%o2%C2,%X1.b),%S0"
   [(set_attr "length_table" "mova")
    (set_attr "cc" "none")])
 
                         (const_int 510))
                 (match_operand:HI 2 "immediate_operand" "i")))]
   "TARGET_H8300SX"
-  "mova/w.l @(%o2,%X1.b),%S0"
+  "mova/w.l @(%o2%C2,%X1.b),%S0"
   [(set_attr "length_table" "mova")
    (set_attr "cc" "none")])
 
                           (const_int 1))
                 (match_operand:HI 2 "immediate_operand" "i,i")))]
   "TARGET_H8300SX"
-  "mova/w.l @(%o2,%X1.b),%S0"
+  "mova/w.l @(%o2%C2,%X1.b),%S0"
   [(set_attr "length_table" "mova")
    (set_attr "cc" "none")])
 
                         (const_int 510))
                 (match_operand:HI 2 "immediate_operand" "i")))]
   "TARGET_H8300SX"
-  "mova/w.l @(%o2,%X1.b),%S0"
+  "mova/w.l @(%o2%C2,%X1.b),%S0"
   [(set_attr "length_table" "mova")
    (set_attr "cc" "none")])
 
                         (const_int 510))
                 (match_operand:HI 2 "immediate_operand" "i")))]
   "TARGET_H8300SX"
-  "mova/w.l @(%o2,%X1.b),%S0"
+  "mova/w.l @(%o2%C2,%X1.b),%S0"
   [(set_attr "length_table" "mova")
    (set_attr "cc" "none")])
 
                           (const_int 4))
                 (match_operand:HI 2 "immediate_operand" "i,i")))]
   "TARGET_H8300SX"
-  "mova/l.l @(%o2,%X1.b),%S0"
+  "mova/l.l @(%o2%C2,%X1.b),%S0"
   [(set_attr "length_table" "mova")
    (set_attr "cc" "none")])
 
                         (const_int 1020))
                 (match_operand:HI 2 "immediate_operand" "i")))]
   "TARGET_H8300SX"
-  "mova/l.l @(%o2,%X1.b),%S0"
+  "mova/l.l @(%o2%C2,%X1.b),%S0"
   [(set_attr "length_table" "mova")
    (set_attr "cc" "none")])
 
                         (const_int 1020))
                 (match_operand:HI 2 "immediate_operand" "i")))]
   "TARGET_H8300SX"
-  "mova/l.l @(%o2,%X1.b),%S0"
+  "mova/l.l @(%o2%C2,%X1.b),%S0"
   [(set_attr "length_table" "mova")
    (set_attr "cc" "none")])
 
                           (const_int 2))
                 (match_operand:HI 2 "immediate_operand" "i,i")))]
   "TARGET_H8300SX"
-  "mova/l.l @(%o2,%X1.b),%S0"
+  "mova/l.l @(%o2%C2,%X1.b),%S0"
   [(set_attr "length_table" "mova")
    (set_attr "cc" "none")])
 
                         (const_int 1020))
                 (match_operand:HI 2 "immediate_operand" "i")))]
   "TARGET_H8300SX"
-  "mova/l.l @(%o2,%X1.b),%S0"
+  "mova/l.l @(%o2%C2,%X1.b),%S0"
   [(set_attr "length_table" "mova")
    (set_attr "cc" "none")])
 
                         (const_int 1020))
                 (match_operand:HI 2 "immediate_operand" "i")))]
   "TARGET_H8300SX"
-  "mova/l.l @(%o2,%X1.b),%S0"
+  "mova/l.l @(%o2%C2,%X1.b),%S0"
   [(set_attr "length_table" "mova")
    (set_attr "cc" "none")])
 
        (plus:SI (zero_extend:SI (match_operand:QI 1 "h8300_dst_operand" "0,rQ"))
                 (match_operand:SI 2 "immediate_operand" "i,i")))]
   "TARGET_H8300SX"
-  "mova/b.l @(%o2,%X1.b),%S0"
+  "mova/b.l @(%o2%C2,%X1.b),%S0"
   [(set_attr "length_table" "mova")
    (set_attr "cc" "none")])
 
                           (const_int 2))
                 (match_operand:SI 2 "immediate_operand" "i,i")))]
   "TARGET_H8300SX"
-  "mova/w.l @(%o2,%X1.b),%S0"
+  "mova/w.l @(%o2%C2,%X1.b),%S0"
   [(set_attr "length_table" "mova")
    (set_attr "cc" "none")])
 
                         (const_int 510))
                 (match_operand:SI 2 "immediate_operand" "i")))]
   "TARGET_H8300SX"
-  "mova/w.l @(%o2,%X1.b),%S0"
+  "mova/w.l @(%o2%C2,%X1.b),%S0"
   [(set_attr "length_table" "mova")
    (set_attr "cc" "none")])
 
                         (const_int 510))
                 (match_operand:SI 2 "immediate_operand" "i")))]
   "TARGET_H8300SX"
-  "mova/w.l @(%o2,%X1.b),%S0"
+  "mova/w.l @(%o2%C2,%X1.b),%S0"
   [(set_attr "length_table" "mova")
    (set_attr "cc" "none")])
 
                           (const_int 1))
                 (match_operand:SI 2 "immediate_operand" "i,i")))]
   "TARGET_H8300SX"
-  "mova/w.l @(%o2,%X1.b),%S0"
+  "mova/w.l @(%o2%C2,%X1.b),%S0"
   [(set_attr "length_table" "mova")
    (set_attr "cc" "none")])
 
                         (const_int 510))
                 (match_operand:SI 2 "immediate_operand" "i")))]
   "TARGET_H8300SX"
-  "mova/w.l @(%o2,%X1.b),%S0"
+  "mova/w.l @(%o2%C2,%X1.b),%S0"
   [(set_attr "length_table" "mova")
    (set_attr "cc" "none")])
 
                         (const_int 510))
                 (match_operand:SI 2 "immediate_operand" "i")))]
   "TARGET_H8300SX"
-  "mova/w.l @(%o2,%X1.b),%S0"
+  "mova/w.l @(%o2%C2,%X1.b),%S0"
   [(set_attr "length_table" "mova")
    (set_attr "cc" "none")])
 
                           (const_int 4))
                 (match_operand:SI 2 "immediate_operand" "i,i")))]
   "TARGET_H8300SX"
-  "mova/l.l @(%o2,%X1.b),%S0"
+  "mova/l.l @(%o2%C2,%X1.b),%S0"
   [(set_attr "length_table" "mova")
    (set_attr "cc" "none")])
 
                         (const_int 1020))
                 (match_operand:SI 2 "immediate_operand" "i")))]
   "TARGET_H8300SX"
-  "mova/l.l @(%o2,%X1.b),%S0"
+  "mova/l.l @(%o2%C2,%X1.b),%S0"
   [(set_attr "length_table" "mova")
    (set_attr "cc" "none")])
 
                         (const_int 1020))
                 (match_operand:SI 2 "immediate_operand" "i")))]
   "TARGET_H8300SX"
-  "mova/l.l @(%o2,%X1.b),%S0"
+  "mova/l.l @(%o2%C2,%X1.b),%S0"
   [(set_attr "length_table" "mova")
    (set_attr "cc" "none")])
 
                           (const_int 2))
                 (match_operand:SI 2 "immediate_operand" "i,i")))]
   "TARGET_H8300SX"
-  "mova/l.l @(%o2,%X1.b),%S0"
+  "mova/l.l @(%o2%C2,%X1.b),%S0"
   [(set_attr "length_table" "mova")
    (set_attr "cc" "none")])
 
                         (const_int 1020))
                 (match_operand:SI 2 "immediate_operand" "i")))]
   "TARGET_H8300SX"
-  "mova/l.l @(%o2,%X1.b),%S0"
+  "mova/l.l @(%o2%C2,%X1.b),%S0"
   [(set_attr "length_table" "mova")
    (set_attr "cc" "none")])
 
                         (const_int 1020))
                 (match_operand:SI 2 "immediate_operand" "i")))]
   "TARGET_H8300SX"
-  "mova/l.l @(%o2,%X1.b),%S0"
+  "mova/l.l @(%o2%C2,%X1.b),%S0"
   [(set_attr "length_table" "mova")
    (set_attr "cc" "none")])
 
                           (const_int 2))
                 (match_operand:HI 2 "immediate_operand" "i,i")))]
   "TARGET_H8300SX"
-  "mova/w.l @(%o2,%T1.w),%S0"
+  "mova/w.l @(%o2%C2,%T1.w),%S0"
   [(set_attr "length_table" "mova")
    (set_attr "cc" "none")])
 
                           (const_int 1))
                 (match_operand:HI 2 "immediate_operand" "i,i")))]
   "TARGET_H8300SX"
-  "mova/w.l @(%o2,%T1.w),%S0"
+  "mova/w.l @(%o2%C2,%T1.w),%S0"
   [(set_attr "length_table" "mova")
    (set_attr "cc" "none")])
 
                           (const_int 4))
                 (match_operand:HI 2 "immediate_operand" "i,i")))]
   "TARGET_H8300SX"
-  "mova/l.l @(%o2,%T1.w),%S0"
+  "mova/l.l @(%o2%C2,%T1.w),%S0"
   [(set_attr "length_table" "mova")
    (set_attr "cc" "none")])
 
                           (const_int 2))
                 (match_operand:HI 2 "immediate_operand" "i,i")))]
   "TARGET_H8300SX"
-  "mova/l.l @(%o2,%T1.w),%S0"
+  "mova/l.l @(%o2%C2,%T1.w),%S0"
   [(set_attr "length_table" "mova")
    (set_attr "cc" "none")])
 
        (plus:SI (zero_extend:SI (match_operand:HI 1 "h8300_dst_operand" "0,rQ"))
                 (match_operand:SI 2 "immediate_operand" "i,i")))]
   "TARGET_H8300SX"
-  "mova/b.l @(%o2,%T1.w),%S0"
+  "mova/b.l @(%o2%C2,%T1.w),%S0"
   [(set_attr "length_table" "mova")
    (set_attr "cc" "none")])
 
                           (const_int 2))
                 (match_operand:SI 2 "immediate_operand" "i,i")))]
   "TARGET_H8300SX"
-  "mova/w.l @(%o2,%T1.w),%S0"
+  "mova/w.l @(%o2%C2,%T1.w),%S0"
   [(set_attr "length_table" "mova")
    (set_attr "cc" "none")])
 
                         (const_int 131070))
                 (match_operand:SI 2 "immediate_operand" "i")))]
   "TARGET_H8300SX"
-  "mova/w.l @(%o2,%T1.w),%S0"
+  "mova/w.l @(%o2%C2,%T1.w),%S0"
   [(set_attr "length_table" "mova")
    (set_attr "cc" "none")])
 
                         (const_int 131070))
                 (match_operand:SI 2 "immediate_operand" "i")))]
   "TARGET_H8300SX"
-  "mova/w.l @(%o2,%T1.w),%S0"
+  "mova/w.l @(%o2%C2,%T1.w),%S0"
   [(set_attr "length_table" "mova")
    (set_attr "cc" "none")])
 
                           (const_int 1))
                 (match_operand:SI 2 "immediate_operand" "i,i")))]
   "TARGET_H8300SX"
-  "mova/w.l @(%o2,%T1.w),%S0"
+  "mova/w.l @(%o2%C2,%T1.w),%S0"
   [(set_attr "length_table" "mova")
    (set_attr "cc" "none")])
 
                         (const_int 131070))
                 (match_operand:SI 2 "immediate_operand" "i")))]
   "TARGET_H8300SX"
-  "mova/w.l @(%o2,%T1.w),%S0"
+  "mova/w.l @(%o2%C2,%T1.w),%S0"
   [(set_attr "length_table" "mova")
    (set_attr "cc" "none")])
 
                         (const_int 131070))
                 (match_operand:SI 2 "immediate_operand" "i")))]
   "TARGET_H8300SX"
-  "mova/w.l @(%o2,%T1.w),%S0"
+  "mova/w.l @(%o2%C2,%T1.w),%S0"
   [(set_attr "length_table" "mova")
    (set_attr "cc" "none")])
 
                           (const_int 4))
                 (match_operand:SI 2 "immediate_operand" "i,i")))]
   "TARGET_H8300SX"
-  "mova/l.l @(%o2,%T1.w),%S0"
+  "mova/l.l @(%o2%C2,%T1.w),%S0"
   [(set_attr "length_table" "mova")
    (set_attr "cc" "none")])
 
                         (const_int 262140))
                 (match_operand:SI 2 "immediate_operand" "i")))]
   "TARGET_H8300SX"
-  "mova/l.l @(%o2,%T1.w),%S0"
+  "mova/l.l @(%o2%C2,%T1.w),%S0"
   [(set_attr "length_table" "mova")
    (set_attr "cc" "none")])
 
                         (const_int 262140))
                 (match_operand:SI 2 "immediate_operand" "i")))]
   "TARGET_H8300SX"
-  "mova/l.l @(%o2,%T1.w),%S0"
+  "mova/l.l @(%o2%C2,%T1.w),%S0"
   [(set_attr "length_table" "mova")
    (set_attr "cc" "none")])
 
                           (const_int 2))
                 (match_operand:SI 2 "immediate_operand" "i,i")))]
   "TARGET_H8300SX"
-  "mova/l.l @(%o2,%T1.w),%S0"
+  "mova/l.l @(%o2%C2,%T1.w),%S0"
   [(set_attr "length_table" "mova")
    (set_attr "cc" "none")])
 
                         (const_int 262140))
                 (match_operand:SI 2 "immediate_operand" "i")))]
   "TARGET_H8300SX"
-  "mova/l.l @(%o2,%T1.w),%S0"
+  "mova/l.l @(%o2%C2,%T1.w),%S0"
   [(set_attr "length_table" "mova")
    (set_attr "cc" "none")])
 
                         (const_int 262140))
                 (match_operand:SI 2 "immediate_operand" "i")))]
   "TARGET_H8300SX"
-  "mova/l.l @(%o2,%T1.w),%S0"
+  "mova/l.l @(%o2%C2,%T1.w),%S0"
   [(set_attr "length_table" "mova")
    (set_attr "cc" "none")])