Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

ISel Operand-Descriptor Kind Enum (1-16)

Addresses apply to ptxas v13.0.88 (CUDA 13.0). VA base 0x400000 (non-PIE).

The instruction-selection operand-descriptor kind enum. Layout and provenance:

  • Descriptor record. Each operand descriptor is a 32-byte record (array base at operand_list+32, stride 32): byte[0] = kind tag, +4 = value/id, +20 = secondary id; descriptor count at operand_list+92; accessor sub_B28F30(list, i) = *(list+32) + 32*i.
  • Predicate helpers. Each kind has a dedicated one-line predicate helper bool f(char tag){ return tag == K; } in the bank 0xB28E00-0xB28EF0. This is distinct from the 3-bit packed operand kind (bits 28-30) carried in each inline operand word.
  • Confidence. Only kinds 1, 2, and 6 are firmly anchored; kinds 3-5/7-11/13-16 are confirmed by helper VA but their operand-class meanings are medium confidence. Kinds 0 and 12 have no helper in the bank; sub_B28E00 is the identity/dispatch root.
kindhelper_vahelpermeaning (inferred)confidence
10xB28E20sub_B28E20registerhigh (cross-checked: >>28==1 register path)
20xB28E10sub_B28E10predicate registerhigh
30xB28E80sub_B28E80(operand class 3)med
40xB28E70sub_B28E70(operand class 4)med
50xB28E60sub_B28E60(operand class 5)med
60xB28E30sub_B28E30guard predicate (last operand)high (sub_7E0650:29 last-op ==6)
70xB28ED0sub_B28ED0(operand class 7)med
80xB28EF0sub_B28EF0(operand class 8)med
90xB28E50sub_B28E50(operand class 9)med
100xB28E40sub_B28E40(operand class 10)med
110xB28EE0sub_B28EE0(operand class 11)med
130xB28EA0sub_B28EA0(operand class 13)med
140xB28EB0sub_B28EB0(operand class 14)med
150xB28E90sub_B28E90(operand class 15)med
160xB28EC0sub_B28EC0(operand class 16)med