1 diff -Naurp gcc/config/avr/avr.md gcc/config/avr/avr.md
2 --- gcc/config/avr/avr.md 2012-04-13 11:19:25.000000000 +0530
3 +++ gcc/config/avr/avr.md 2012-04-13 13:21:49.000000000 +0530
5 (UNSPECV_DELAY_CYCLES_1 101)
6 (UNSPECV_DELAY_CYCLES_2 102)
7 (UNSPECV_DELAY_CYCLES_3 103)
8 - (UNSPECV_DELAY_CYCLES_4 104)])
9 + (UNSPECV_DELAY_CYCLES_4 104)
10 + (UNSPECV_DELAY_CYCLES_2_TINY 105)])
12 (include "predicates.md")
13 (include "constraints.md")
14 @@ -3370,7 +3371,12 @@
15 if (loop_count > 0xFFFF)
17 unsigned int cycles_used = (((loop_count - 1) * 4) + 5);
18 - emit_insn (gen_delay_cycles_2 (gen_int_mode (loop_count, HImode)));
20 + emit_insn (gen_delay_cycles_2_tiny (gen_int_mode (loop_count, HImode)));
23 + emit_insn (gen_delay_cycles_2 (gen_int_mode (loop_count, HImode)));
25 cycles -= cycles_used;
27 if (IN_RANGE(cycles, 6, 767))
28 @@ -3418,6 +3424,19 @@
29 [(set_attr "length" "4")
30 (set_attr "cc" "clobber")])
32 +(define_insn "delay_cycles_2_tiny"
33 + [(unspec_volatile [(const_int 0)] UNSPECV_DELAY_CYCLES_2_TINY)
34 + (match_operand:HI 0 "immediate_operand" "")
35 + (clobber (match_scratch:HI 1 "=&d"))]
42 + [(set_attr "length" "5")
43 + (set_attr "cc" "clobber")])
45 (define_insn "delay_cycles_3"
46 [(unspec_volatile [(const_int 0)] UNSPECV_DELAY_CYCLES_3)
47 (match_operand:SI 0 "immediate_operand" "")