1842def sqProjectionEpilogue = (lambda unrestricted seq : Nat . (lambda unrestricted width : Nat .
1843 (lambda unrestricted tail : (family SM86Program) .
1844 (saMovConst (sqTmp 4) (saArgument 10)
1845 (saFor 32 (lambda unrestricted i : Nat .
1846 (saFmul (naturalAdd 68 i) (naturalAdd 68 i) (sqTmp 4) (naturalSelect (naturalIsZero i) saWait3 saWaitNone)))
1847 (saShr sqrElement saScratch 2
1848 (saMovImm sqrColumn 63
1849 (saAnd sqrColumn sqrElement sqrColumn
1850 (saShr sqrRow sqrElement 6
1851 (saMovImm sqrPosition (naturalSaturatingSubtract seq 1)
1852 (saAnd sqrPosition sqrRow sqrPosition
1853 (saShr sqrHead sqrRow (sqrLog2 seq)
1854 -- the element: position width + 64 head + column
1855 (saImad sqrOutput sqrPosition width sqrColumn
1856 (saImad sqrOutput sqrHead saHeadWidth sqrOutput
1857 (saMovImm sqrFour 4
1858 (saWide sqrPointer sqrOutput sqrFour (saArgument 7)
1859 (saMovImm sqrFour saHalfBytes
1860 (saWide sqpHalfPointer sqrOutput sqrFour (saArgument streamingAttentionQueryProjectionHalfArgument)
1861 (saFor 16 (lambda unrestricted i : Nat .
1862 (let unrestricted nt = (naturalDivideUnchecked i 2) in (let unrestricted h = (naturalModuloUnchecked i 2) in
1863 (lambda unrestricted after : (family SM86Program) .
1864 (saOp (sbStore64 sqrPointer (saElem (saO nt) h 0)
1865 (naturalAdd (naturalMultiply nt 32) (naturalMultiply h (naturalMultiply 8 (naturalMultiply width 4))))
1866 saWaitNone)
1867 (saOp (constructor SM86InstructionBody SM86FloatPairToPackedHalfPair
1868 (saR (sqrOut i)) (saR (saElem (saO nt) h 1)) (saR (saElem (saO nt) h 0)) saPlain)
1869 (saOp (saStore sqpHalfPointer (sqrOut i)
1870 (naturalAdd (naturalMultiply nt 16) (naturalMultiply h (naturalMultiply 8 (naturalMultiply width saHalfBytes))))
1871 saWaitNone)
1872 after)))))))
1873 tail)))))))))))))))))))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.