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.
1643def sm86EncodeStoreGlobal64 =
1644 (lambda unrestricted guard : (family SM86InstructionGuard) .
1645 (lambda unrestricted address : (family SM86Register) .
1646 (lambda unrestricted value : (family SM86Register) .
1647 (lambda unrestricted offset : (family SM86Unsigned32) .
1648 (lambda unrestricted control : (family SM86Control) .
1649 (sm86EncodeInstructionFields
1650 sm86OpcodeStoreGlobal
1651 guard
1652 control
1653 (sm86InstructionPrependField
1654 sm86InstructionNaturalTwentyFour
1655 sm86InstructionNaturalEight
1656 (sm86RegisterNatural address)
1657 (sm86InstructionPrependField
1658 sm86InstructionNaturalThirtyTwo
1659 sm86InstructionNaturalEight
1660 (sm86RegisterNatural value)
1661 (sm86InstructionPrependField
1662 sm86InstructionNaturalForty
1663 sm86GlobalOffsetFieldBits
1664 (sm86Unsigned32Natural offset)
1665 (sm86InstructionOneWord32Field
1666 sm86InstructionNaturalSixtyFour
1667 (constructor
1668 SM86Unsigned32
1669 SM86Unsigned32Value
1670 (byte 4)
1671 (byte 27)
1672 (byte 16)
1673 (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.