swapc (sm5 - asm)
Выполняет условное переключение значений между двумя входными регистрами на уровне компонентов.
swapc dst0[.mask], dst1[.mask], src0[.swizzle], src1[.swizzle], src2[.swizzle] |
---|
Элемент | Описание |
---|---|
dst0 |
[in] Зарегистрируйтесь с произвольными масками непустой записи. Должен отличаться от dst1. |
dst1 |
[in] Зарегистрируйтесь с произвольными масками непустой записи. Должен отличаться от dst0. |
src0 |
[in] Предоставляет 4 условия. Ненулевое целочисленное значение означает true. |
src1 |
[in] Одно из значений для переключения. |
src2 |
[in] Одно из значений для переключения. |
Комментарии
Кодирование этой инструкции пытается компактно выразить несколько параллельных условных переключений скаляров в двух 4-компонентных регистрах с незначительной гибкостью в расположении пар чисел, участвующих в переключении.
Выбор регистра и значения для src0, src1 и src2 не ограничен, например movc.
Семантику этой инструкции можно описать эквивалентными операциями с инструкцией movc . В следующем примере показан наихудший случай, при этом регистры назначения не обновляются до конца.
swapc dst0[.mask],
dst1[.mask],
src0[.swizzle],
src1[.swizzle],
src2[.swizzle]
expands to:
movc temp[dst0 s mask],
src0[.swizzle],
src2[.swizzle], src1[.swizzle]
movc dst1[.mask],
src0[.swizzle],
src1[.swizzle], src2[.swizzle]
mov dst0.mask, temp
Вы можете выбрать способ решения задачи, если не напрямую. Например, такой же эффект может быть достигнут с помощью последовательности до 4 простых скалярных условных переключений или, как описано выше, двух векторных инструкций movc , а также любых дополнительных затрат, чтобы убедиться, что исходные значения не загромождаться более ранними операциями в разгар расширения.
Используйте эту инструкцию для сортировки.
Эта инструкция применяется к следующим этапам шейдера:
Вершина | Корпуса | Домен | Geometry | Пиксель | Вычисления |
---|---|---|---|---|---|
X | X | X | X | X | X |
Минимальная модель шейдера
Эта инструкция поддерживается в следующих моделях шейдеров:
Модель шейдера | Поддерживается |
---|---|
Модель шейдера 5 | да |
Модель шейдера 4.1 | нет |
Модель шейдера 4 | нет |
Модель шейдера 3 (DirectX HLSL) | нет |
Модель шейдера 2 (DirectX HLSL) | нет |
Модель шейдера 1 (DirectX HLSL) | нет |