loop (sm4 - asm)

Specifies a loop which iterates until a break instruction is encountered.




loop can iterate indefinitely, although overall execution of the Shader may be forced to terminate after some number of instructions are executed.

Flow control blocks can nest up to 64 deep per subroutine and main. The HLSL compiler will not generate subroutines that exceed this limit. Behavior of control flow instructions beyond 64 levels deep per subroutine is undefined.

The token format contains the offset of the corresponding endloop instruction in the Shader as a convenience.

The following example shows how to use the loop instruction.

                    // example of termination condition
                    if_nz r0.x

This instruction applies to the following shader stages:

Vertex ShaderGeometry ShaderPixel Shader


Minimum Shader Model

This function is supported in the following shader models.

Shader ModelSupported
Shader Model 5 yes
Shader Model 4.1 yes
Shader Model 4 yes
Shader Model 3 (DirectX HLSL) no
Shader Model 2 (DirectX HLSL) no
Shader Model 1 (DirectX HLSL) no


Related topics

Shader Model 4 Assembly (DirectX HLSL)