dmovc (sm5 - asm)
コンポーネントごとの条件付き移動。
dmovc[_sat] dest[.mask], src0[.swizzle], [-]src1[_abs][.swizzle], [-]src2[_abs][.swizzle], |
---|
Item | 説明 |
---|---|
Dest |
[入力]移動先。 src0 の場合は、dest = src1 else dest = src2。 |
src0 |
[入力]条件をテストする対象のコンポーネント。 |
src1 |
[入力]条件が true の場合に移動するコンポーネント。 |
src2 |
[入力]条件が false の場合に移動するコンポーネント。 |
解説
次の例は、この命令の使用方法を示しています。
if(the dest mask contains .xy)
{
if(the first 32-bit component of src0, post-swizzle,
has any bit set)
{
copy the first double from src1 (post swizzle)
into dest.xy
}
else
{
copy the first double from src2 (post swizzle)
into dest.xy
}
}
if(the dest mask contains .zw)
{
if(the second 32-bit component of src0, post-swizzle,
has any bit set)
{
copy the second double from src1 (post swizzle)
into dest.zw
}
else
{
copy the second double from src2 (post swizzle)
into dest.zw
}
}
dest の有効なマスクは、.xy、.zw、.xyzw です。
src0 の有効なスウィズルは何でもです。 スウィズル後の最初の 2 つのコンポーネントは、2 つの 32 ビット条件値をインデントするために使用されます。
doubles を含む src1 と src2 の有効な swizzle は、.xyzw、.xyxy、.zwxy、.zwzw です。 は、.xy、.zw、および .xyzw です。
次の src マッピングは、スウィズル後です。
- dest は、(x 32LSB、y 32MSB) と (z 32LSB、w 32MSB) 全体の二重 vec2 です。
- src0 は、x と y の 32 ビット/コンポーネント vec2 です (zw は無視されます)。
- src1 は、(x 32LSB、y 32MSB) と (z 32LSB、w 32MSB) 全体の二重 vec2 です。
- src2 は、(x 32LSB、y 32MSB) と (z 32LSB、w 32MSB) 全体の二重 vec2 です。
swizzle 以外の src1 と src2 の修飾子は、データが double であると仮定します。 修飾子がない場合は、ビットを変更せずにデータを移動します。
この命令は、次のシェーダー ステージに適用されます。
Vertex | Hull | Domain | ジオメトリ | ピクセル | Compute |
---|---|---|---|---|---|
X | X | X | X | X | X |
最小シェーダー モデル
この命令は、次のシェーダー モデルでサポートされています。
シェーダー モデル | サポートされています |
---|---|
シェーダー モデル 5 | はい |
シェーダー モデル 4.1 | no |
シェーダー モデル 4 | no |
シェーダー モデル 3 (DirectX HLSL) | no |
シェーダー モデル 2 (DirectX HLSL) | no |
シェーダー モデル 1 (DirectX HLSL) | no |