Partager via


ibfe (sm5 - asm)

Compte tenu d’une plage de bits dans un nombre, déplacez ces bits vers le LSB et signez étendre le MSB de la plage.

ibfe dest[.mask], src0[.swizzle], src1[.swizzle], src2[.swizzle]
Élément Description
Dest
[in] Adresse des résultats de l’opération.
src0
[in] Largeur du champ de bits.
src1
[in] Décalage du champ de bits.
src2
[in] Valeur à déplacer.

Notes

Le LSB 5 bits de src0 fournit la largeur du champ de bits (0-31).

Les 5 bits LSB de src1 fournissent le décalage de champ de bits (0-31).

L’exemple suivant montre comment utiliser cette instruction.

        Given width, offset:
                if( width == 0 )
                {
                    dest = 0
                }
                else if( width + offset < 32 )
                {
                    shl dest, src2, 32-(width+offset)
                    ishr dest, dest, 32-width
                }
                else
                {
                    ishr dest, src2, offset
                }

Utilisez cette instruction pour décompresser des entiers signés ou des indicateurs.

Cette instruction s’applique aux étapes de nuanceur suivantes :

Sommet Coque Domain Géométrie Pixel Compute
X X X X X X

Modèle de nuanceur minimal

Cette instruction est prise en charge dans les modèles de nuanceur suivants :

Modèle de nuanceur Prise en charge
Modèle de nuanceur 5 Oui
Modèle de nuanceur 4.1 non
Modèle de nuanceur 4 non
Nuanceur modèle 3 (DirectX HLSL) non
Nuanceur modèle 2 (DirectX HLSL) non
Nuanceur Modèle 1 (DirectX HLSL) non

Assembly de modèle de nuanceur 5 (DirectX HLSL)