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.
1569def sm86EncodeStoreGlobal64 =
1570 (lambda unrestricted guard : (family SM86InstructionGuard) .
1571 (lambda unrestricted address : (family SM86Register) .
1572 (lambda unrestricted value : (family SM86Register) .
1573 (lambda unrestricted offset : (family SM86Unsigned32) .
1574 (lambda unrestricted control : (family SM86Control) .
1575 (sm86EncodeInstructionFields
1576 sm86OpcodeStoreGlobal
1577 guard
1578 control
1579 (sm86InstructionPrependField
1580 sm86InstructionNaturalTwentyFour
1581 sm86InstructionNaturalEight
1582 (sm86RegisterNatural address)
1583 (sm86InstructionPrependField
1584 sm86InstructionNaturalThirtyTwo
1585 sm86InstructionNaturalEight
1586 (sm86RegisterNatural value)
1587 (sm86InstructionPrependField
1588 sm86InstructionNaturalForty
1589 sm86InstructionNaturalTwentyFour
1590 (sm86Unsigned32Natural offset)
1591 (sm86InstructionOneWord32Field
1592 sm86InstructionNaturalSixtyFour
1593 (constructor
1594 SM86Unsigned32
1595 SM86Unsigned32Value
1596 (byte 4)
1597 (byte 27)
1598 (byte 16)
1599 (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.