Source/Packages

Accelerator.SM121.Lowering

packages/hardware/architectures/nvidia-sm121/src/Accelerator/SM121/Lowering.alpha

2,621 lines365 declarations134.1 KiBSHA-256 b7b3bbc05e9c

def · lines 1783–1817

sm121LowerDelay

Full file
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.