if (sm4 - asm)
Branch based on logical OR result.
if{_z|_nz} src0.select_component |
---|
Item | Description |
---|---|
src0 |
[in] Contains the component on which to test the condition. |
Remarks
The token format contains the offset of the corresponding endif instruction in the Shader as a convenience.
The following example shows how to use this instruction.
if_z r0.x // if all bits in r0.x are zero
...
else // (optional)
...
endif
if_nz r1.x // if any bit in r0.x is nonzero
...
else // (optional)
...
endif
Restrictions
- The source operands (if 4 component vectors) must use a single component selector.
- The 32-bit register supplied by src0 is tested at a bit level. If any bit is nonzero, if_z will be true. If all bits are zero, if_nz will be true.
- 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.
This instruction applies to the following shader stages:
Vertex Shader | Geometry Shader | Pixel Shader |
---|---|---|
x | x | x |
Minimum Shader Model
This function is supported in the following shader models.
Shader Model | Supported |
---|---|
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 |