mn10300.c (print_operand): Handle 'S'.
authorJeffrey A Law <law@cygnus.com>
Tue, 21 Oct 1997 19:10:24 +0000 (19:10 +0000)
committerJeff Law <law@gcc.gnu.org>
Tue, 21 Oct 1997 19:10:24 +0000 (13:10 -0600)
        * mn10300.c (print_operand): Handle 'S'.
        * mn10300.md (ashlsi3, lshrsi3, ashrsi3): Use %S for
        shift amount in last alternative

From-SVN: r16134

gcc/ChangeLog
gcc/config/mn10300/mn10300.c
gcc/config/mn10300/mn10300.md

index c349ff9..93351b8 100644 (file)
@@ -1,5 +1,9 @@
 Tue Oct 21 10:06:40 1997  Jeffrey A Law  (law@cygnus.com)
 
+       * mn10300.c (print_operand): Handle 'S'.
+       * mn10300.md (ashlsi3, lshrsi3, ashrsi3): Use %S for
+       shift amount in last alternative
+
        * mn10300.c (expand_epilogue): Rework to handle register restores
        in "ret" and "retf" instructions correctly.
 
index 7706061..e555921 100644 (file)
@@ -254,6 +254,18 @@ print_operand (file, x, code)
        output_address (GEN_INT ((~INTVAL (x)) & 0xff));
        break;
 
+      /* For shift counts.  The hardware ignores the upper bits of
+        any immediate, but the assembler will flag an out of range
+        shift count as an error.  So we mask off the high bits
+        of the immediate here.  */
+      case 'S':
+       if (GET_CODE (x) == CONST_INT)
+         {
+           fprintf (file, "%d", INTVAL (x) & 0x1f);
+           break;
+         }
+       /* FALL THROUGH */
+
       default:
        switch (GET_CODE (x))
          {
index f821e49..c835043 100644 (file)
   asl2 %0
   asl2 %0\;add %0,%0
   asl2 %0\;asl2 %0
-  asl %2,%0"
+  asl %S2,%0"
   [(set_attr "cc" "set_zn")])
 
 (define_insn "lshrsi3"
         (match_operand:SI 1 "register_operand" "0")
         (match_operand:QI 2 "nonmemory_operand" "di")))]
   ""
-  "lsr %2,%0"
+  "lsr %S2,%0"
   [(set_attr "cc" "set_zn")])
 
 (define_insn "ashrsi3"
         (match_operand:SI 1 "register_operand" "0")
         (match_operand:QI 2 "nonmemory_operand" "di")))]
   ""
-  "asr %2,%0"
+  "asr %S2,%0"
   [(set_attr "cc" "set_zn")])
 
 ;; ----------------------------------------------------------------------