ibfe (sm5 - asm)
Verschieben Sie bei einem Bereich von Bits in einer Zahl diese Bits auf den LSB, und erweitern Sie das MSB des Bereichs.
| ibfe dest [ .mask ] , src0 [ .swizzle ] , src1 [ .swizzle ] , src2 [ .swizzle] |
|---|
| Element | BESCHREIBUNG |
|---|---|
| Dest |
[in ] Die Adresse der Ergebnisse des Vorgangs. |
| src0 |
[in ] Die Bitfeldbreite. |
| src1 |
[in ] Der Bitfeldoffset. |
| src2 |
[in ] Der zu verschiebende Wert. |
Bemerkungen
Die LSB-5 Bits von src0 stellen die Bitfeldbreite (0-31) bereit.
Die LSB 5 Bits von src1 stellen den Bitfeldoffset (0-31) bereit.
Im folgenden Beispiel wird die Verwendung dieser Anweisung veranschaulicht.
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
}
Verwenden Sie diese Anweisung, um ganze Zahlen oder Flags mit Vorzeichen zu entpacken.
Diese Anweisung gilt für die folgenden Shaderstufen:
| Scheitelpunkt | Rumpf | Domain | Geometrie | Pixel | Compute |
|---|---|---|---|---|---|
| X | X | X | X | X | X |
Shader-Mindestmodell
Diese Anweisung wird in den folgenden Shadermodellen unterstützt:
| Shadermodell | Unterstützt |
|---|---|
| Shadermodell 5 | ja |
| Shadermodell 4.1 | nein |
| Shadermodell 4 | nein |
| Shadermodell 3 (DirectX HLSL) | nein |
| Shadermodell 2 (DirectX HLSL) | nein |
| Shadermodell 1 (DirectX HLSL) | nein |