STG.E.64: the register pair [value, value+1] to [address + offset]. The
descriptor word differs from the 32-bit store only in the size code (byte
25 -> 27; the 128-bit store is 29), the same three codes the wide-memory
descriptors carry. An mma.m16n8k16 fp32 accumulator fragment hands each
thread PAIRS of adjacent columns, so a row-major epilogue needs exactly this
width: a 128-bit store there overlaps the neighbouring thread and lands on an
8-byte-aligned address, which the SM faults instead of executing.
1723def sm86EncodeStoreGlobal64 =
1724 (lambda unrestricted guard : (family SM86InstructionGuard) .
1725 (lambda unrestricted address : (family SM86Register) .
1726 (lambda unrestricted value : (family SM86Register) .
1727 (lambda unrestricted offset : (family SM86Unsigned32) .
1728 (lambda unrestricted control : (family SM86Control) .
1729 (sm86EncodeInstructionFields
1730 sm86OpcodeStoreGlobal
1731 guard
1732 control
1733 (sm86InstructionPrependField
1734 sm86InstructionNaturalTwentyFour
1735 sm86InstructionNaturalEight
1736 (sm86RegisterNatural address)
1737 (sm86InstructionPrependField
1738 sm86InstructionNaturalThirtyTwo
1739 sm86InstructionNaturalEight
1740 (sm86RegisterNatural value)
1741 (sm86InstructionPrependField
1742 sm86InstructionNaturalForty
1743 sm86GlobalOffsetFieldBits
1744 (sm86Unsigned32Natural offset)
1745 (sm86InstructionOneWord32Field
1746 sm86InstructionNaturalSixtyFour
1747 (constructor
1748 SM86Unsigned32
1749 SM86Unsigned32Value
1750 (byte 4)
1751 (byte 27)
1752 (byte 16)
1753 (byte 12))))))))))))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.