bfi (sm5 - asm)

Учитывая диапазон битов от LSB числа, поместите это число битов в другое число с любым смещением.

bfi dest[.mask], src0[.swizzle], src1[.swizzle], src2[.swizzle], src3[.swizzle]
Элемент Описание
Dest
[in] Адрес результатов.
src0
[in] Ширина битового поля, принимаемая из src2.
src1
[in] Смещение битового поля для замены битов в src3.
src2
[in] Число битов, из которых взяты биты.
src3
[in] Число с битами, которые необходимо заменить.

Комментарии

5 битов LSB src0 обеспечивают ширину битового поля (0–31), который нужно взять из src2.

5 битов LSB src1 обеспечивают смещение битового поля (0–31), чтобы начать замену битов в число, считываемом из src3.

Given width, offset:
                bitmask = (((1 << width)-1) << offset) & 0xffffffff
                dest = ((src2 << offset) & bitmask) | (src3 & ~bitmask)

Эта инструкция используется для упаковки целых чисел или флагов.

Эта инструкция применяется к следующим этапам шейдера:

Вершина Корпуса Домен Geometry Пиксель Вычисления
X X X X X X

Минимальная модель шейдера

Эта инструкция поддерживается в следующих моделях шейдеров:

Модель шейдера Поддерживается
Модель шейдера 5 да
Модель шейдера 4.1 нет
Модель шейдера 4 нет
Модель шейдера 3 (DirectX HLSL) нет
Модель шейдера 2 (DirectX HLSL) нет
Модель шейдера 1 (DirectX HLSL) нет

Сборка модели шейдера 5 (DirectX HLSL)