Complementing software pipelining with software thread integration