dmovc (sm5 - asm)
Условное перемещение на уровне компонентов.
dmovc[_sat] dest[.mask], src0[.swizzle], [-]src1[_abs][.swizzle], [-]src2[_abs][.swizzle], |
---|
Элемент | Описание |
---|---|
Dest |
[in] Назначение перемещения. Если src0, то dest = src1 else dest = src2. |
src0 |
[in] Компоненты для проверки условия. |
src1 |
[in] Компоненты, которые необходимо переместить, если условие равно true. |
src2 |
[in] Компоненты для перемещения, если условие имеет значение 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.
Допустимые swizzles для src0 являются чем угодно. Первые два компонента после swizzle используются для отступа двух 32-разрядных значений условий.
Допустимые swizzles для src1 и src2 , содержащие двойники: .xyzw, .xyxy, .zwxy, .zwzw. имеют значение .xy, .zw и .xyzw.
Ниже приведены следующие сопоставления src :
- dest — это двойной vec2 поперечный (x 32LSB, y 32MSB) и (z 32LSB, w 32MSB).
- src0 — это 32-разрядный/компонентный vec2 в x и y (zw игнорируется).
- src1 — это двойной vec2 поперечный (x 32LSB, y 32MSB) и (z 32LSB, w 32MSB).
- src2 — это двойной vec2 поперечный (x 32LSB, y 32MSB) и (z 32LSB, w 32MSB).
Модификаторы в src1 и src2, кроме swizzle, предполагают, что данные двойные. Отсутствие модификаторов перемещает данные без изменения битов.
Эта инструкция применяется к следующим этапам шейдера:
Вершина | Корпуса | Домен | Geometry | Пиксель | Вычисления |
---|---|---|---|---|---|
X | X | X | X | X | X |
Минимальная модель шейдера
Эта инструкция поддерживается в следующих моделях шейдеров:
Модель шейдера | Поддерживается |
---|---|
Модель шейдера 5 | да |
Модель шейдера 4.1 | нет |
Модель шейдера 4 | нет |
Модель шейдера 3 (DirectX HLSL) | нет |
Модель шейдера 2 (DirectX HLSL) | нет |
Модель шейдера 1 (DirectX HLSL) | нет |