bfi (sm5 - asm)

Dato un intervallo di bit dall'LSB di un numero, posizionare tale numero di bit in un altro numero in qualsiasi offset.

bfi dest[.mask], src0[.swizzle], src1[.swizzle], src2[.swizzle], src3[.swizzle]
Elemento Descrizione
Dest
[in] Indirizzo dei risultati.
src0
[in] Larghezza del campo di bit da prendere da src2.
src1
[in] Offset del campo di bit per la sostituzione dei bit in src3.
src2
[in] Numero da cui vengono ricavati i bit.
src3
[in] Numero con bit da sostituire.

Commenti

I bit LSB 5 di src0 forniscono la larghezza del campo di bit (0-31) da prendere da src2.

I bit LSB 5 di src1 forniscono l'offset del campo di bit (0-31) per iniziare a sostituire i bit nel numero letto da src3.

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

Questa istruzione viene utilizzata per la compressione di numeri interi o flag.

Questa istruzione si applica alle fasi dello shader seguenti:

Vertice Scafo Dominio Geometria Pixel Calcolo
X X X X X X

Modello minimo shader

Questa istruzione è supportata nei modelli di shader seguenti:

Modello di shader Supportato
Modello shader 5
Modello shader 4.1 no
Modello shader 4 no
Modello shader 3 (DirectX HLSL) no
Modello shader 2 (DirectX HLSL) no
Modello shader 1 (DirectX HLSL) no

Assembly modello shader 5 (DirectX HLSL)