Delay the next instruction by `deficit` cycles: the last one placed stalls
longer, up to fifteen cycles, and NOPs carry the rest.
1783def sm121LowerDelay =
1784 (lambda unrestricted deficit : Nat .
1785 (lambda unrestricted placed : (family SM121LowerOps) .
1786 (eliminate
1787 SM121LowerOps
1788 (lambda unrestricted current : (family SM121LowerOps) . (family SM121LowerOps))
1789 placed
1790 (branch SM121LowerOpsEnd . placed)
1791 (branch SM121LowerOpsNext last earlier induction .
1792 (let unrestricted stall = (sm121LowerStall (sm121LowerHighOf last)) in
1793 (let unrestricted grown = (sm121LowerMinimum sm121LowerStallLongest (nat-add stall deficit)) in
1794 (let unrestricted remaining = (nat-subtract deficit (nat-subtract grown stall)) in
1795 (let unrestricted previous =
1796 (sm121LowerPush
1797 (sm121LowerWithHigh
1798 (lambda unrestricted high : Nat .
1799 (naturalSelect
1800 (nat-less-than zero remaining)
1801 (sm121LowerWithoutReuse (sm121LowerWithStall grown high))
1802 (sm121LowerWithStall grown high)))
1803 last)
1804 earlier) in
1805 (nat-eliminate
1806 (lambda unrestricted current : Nat . (family SM121LowerOps))
1807 previous
1808 (lambda unrestricted index : Nat .
1809 (lambda unrestricted induction : (family SM121LowerOps) .
1810 (sm121LowerPush
1811 (sm121LowerNoOperation
1812 (sm121LowerMinimum sm121LowerStallLongest
1813 (nat-subtract remaining (nat-multiply index sm121LowerStallLongest))))
1814 induction)))
1815 (nat-divide
1816 (nat-add remaining (nat-subtract sm121LowerStallLongest 1))
1817 sm121LowerStallLongest))))))))))The compiler supplied declaration spans and resolved links from this source snapshot. This page does not assert that this file belongs to a checked closure.