 mov    %g0, %l2

  cmp    %l0, %l1
  bge,a  END_LOOP       ! Annul branch to execute if branch is taken
  mov    %l2, %o0       ! Instruction at target

LOOP:
  mov    %l0, %o0
  call   .mul
  mov    %l1, %o1       ! Fill delay slot with second argument
  add    %l2, %o0, %l2
  inc    %l0

  cmp    %l0, %l1
  bl     LOOP
  nop

  mov    %l2, %o0       ! Move the instruction to above the target

END_LOOP:
  call   .mul           ! Fill delay sot with second argument
  mov    %l1, %o1

  mov    %o0, %l3

============================================================

  mov    %g0, %l2

  cmp    %l0, %l1
  bge,a  END_LOOP
  mov    %l2, %o0

  mov    %l0, %o0       ! 3. Move the instruction formerly after the loop
                        ! above the label
LOOP:
  [ mov    %l0, %o0 ]   ! Instruction was here

  call   .mul
  mov    %l1, %o1
  add    %l2, %o0, %l2
  inc    %l0

  cmp    %l0, %l1
  bl,a   LOOP           ! 1. Go to the target and copy that instruction into
                        ! they delay slot.
                        ! 2. Annul the branch
  mov    %l0, %o0       ! Instruction formerly after LOOP:

  mov    %l2, %o0

END_LOOP:
  call   .mul
  mov    %l1, %o1

  mov    %o0, %l3

===============================

   s1
   s2
   cmp
   Bcc L
   nop
   s3
   s4

L: s10
   s11


-------------

   s1
   s2   
   cmp
   Bcc L
   s10          ----> nop
   s3
   s4

   s10
L: [s10]
   s11


================================================
              s9  s10 s11 s1 s2  cmp Bcc  nop  s10 s11 ...
   s9 
L: s10
   s11

   s1
   s2   
   cmp
   Bcc L
   nop
   s3
   s4

              s9  s10 s11 s1 s2 cmp Bcc s10 s11
   s9
   s10
L: [s10]
   s11

   s1
   s2   
   cmp
   Bcc L
   s10      ----> nop

   s3
   s4

1. replace nop by target instruction
2. change Bcc to Bcc,a
3. move target label down 1 instruction.


