* mn10300.c (print_operand): Handle 'S'.
* mn10300.md (ashlsi3, lshrsi3, ashrsi3): Use %S for
shift amount in last alternative
From-SVN: r16134
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.
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))
{
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")])
;; ----------------------------------------------------------------------