5.1.6.2 Kernel Function Parameter Attributes . . . . . . . . . . . . . . . . . . . . . . . . . . 34
5.1.6.3 Kernel Parameter Attribute: .ptr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
5.1.6.4 Device Function Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
5.1.7 Shared State Space . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
5.1.8 Texture State Space (deprecated) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
5.2 Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
5.2.1 Fundamental Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
5.2.2 Restricted Use of Sub-Word Sizes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
5.2.3 Alternate Floating-Point Data Formats . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
5.2.4 Packed Data Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
5.2.4.1 Packed Floating Point Data Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
5.2.4.2 Packed Integer Data Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
5.3 Texture Sampler and Surface Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
5.3.1 Texture and Surface Properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
5.3.2 Sampler Properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
5.3.3 Channel Data Type and Channel Order Fields . . . . . . . . . . . . . . . . . . . . . . . . . 42
5.4 Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
5.4.1 Variable Declarations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
5.4.2 Vectors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
5.4.3 Array Declarations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
5.4.4 Initializers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
5.4.5 Alignment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
5.4.6 Parameterized Variable Names . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
5.4.7 Variable Attributes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
5.4.8 Variable and Function Attribute Directive: .attribute . . . . . . . . . . . . . . . . . . . . 47
5.5 Tensors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
5.5.1 Tensor Dimension, size and format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
5.5.2 Tensor Access Modes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
5.5.3 Tiled Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
5.5.3.1 Bounding Box . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
5.5.3.2 Traversal-Stride . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
5.5.3.3 Out of Boundary Access . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
5.5.4 Im2col mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
5.5.4.1 Bounding Box . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
5.5.4.2 Traversal Stride . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
5.5.4.3 Out of Boundary Access . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
5.5.5 Interleave layout . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
5.5.6 Swizzling Modes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
5.5.7 Tensor-map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
6 Instruction Operands 69
6.1 Operand Type Information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
6.2 Source Operands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
6.3 Destination Operands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
6.4 Using Addresses, Arrays, and Vectors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
6.4.1 Addresses as Operands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
6.4.1.1 Generic Addressing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
6.4.2 Arrays as Operands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
6.4.3 Vectors as Operands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
6.4.4 Labels and Function Names as Operands . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
6.5 Type Conversion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
6.5.1 Scalar Conversions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
6.5.2 Rounding Modiers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
6.6 Operand Costs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
ii