bfi (sm5 – asm)

Dado um intervalo de bits do LSB de um número, coloque esse número de bits em outro número em qualquer deslocamento.

bfi dest[.mask], src0[.swizzle], src1[.swizzle], src2[.swizzle], src3[.swizzle]
Item Descrição
Dest
[in] O endereço dos resultados.
src0
[in] A largura do campo de bits a ser tomada de src2.
src1
[in] O deslocamento de campo de bits para substituir bits em src3.
src2
[in] O número do qual os bits são obtidos.
src3
[in] O número com bits a serem substituídos.

Comentários

Os 5 bits LSB de src0 fornecem a largura do campo de bits (0-31) para tirar do src2.

Os 5 bits LSB de src1 fornecem o deslocamento de campo de bits (0-31) para começar a substituir bits no número lido do src3.

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

Esta instrução é usada para empacotar inteiros ou sinalizadores.

Esta instrução se aplica aos seguintes estágios de sombreador:

Vértice Casco Domínio Geometry Pixel Computação
X X X X X X

Modelo de sombreador mínimo

Esta instrução tem suporte nos seguintes modelos de sombreador:

Modelo de Sombreador Com suporte
Modelo de sombreador 5 sim
Modelo de sombreador 4.1 não
Modelo de sombreador 4 não
Modelo de Sombreador 3 (DirectX HLSL) não
Modelo de Sombreador 2 (DirectX HLSL) não
Modelo de Sombreador 1 (DirectX HLSL) não

Assembly do Modelo de Sombreador 5 (DirectX HLSL)