hwreg¶
Bits d’un registre matériel auquel on est en train d’accéder.
Les bits de cet opérande signifient :
Bits
Description
Plage de valeurs
5:0
ID du registre.
0..63
10:6
Premier bit de décalage.
0..31
15:11
Taille en bits.
1..32
Cet opérande peut prendre plusieurs formes :
Un nombre entier ou une expression absolue. La valeur doit être comprise entre 0 et 0xFFFF.
Une valeur hwreg décrite ci-dessous.
Syntaxe des valeurs hwreg
Description
hwreg({0..63})
Tous les bits du registre associé à l”ID.
hwreg(<nom>)
Tous les bits du registre associé au nom.
hwreg({0..63}, {0..31}, {1..32})
Bits du registre associé à l”ID, le premier bit de décalage et la taille.
hwreg(<nom>, {0..31}, {1..32})
Bits du registre associé au nom, le premier bit de décalage et la taille.
Les valeurs numériques peuvent être renseignées sous la forme de nombre entiers positifs ou d”expressions absolues.
Les noms de registre prédéfinis comprennent :
Nom
Description
HW_REG_MODE
Bits en mode écriture du nuanceur (shader).
HW_REG_STATUS
Statut en lecture seule du nuanceur (shader).
HW_REG_TRAPSTS
Statut du piège.
HW_REG_HW_ID
ID de la vague, simd, unité de calcul, etc.
HW_REG_GPR_ALLOC
Allocation du SPGR et VGPR par vague.
HW_REG_LDS_ALLOC
Allocation LDS par vague.
HW_REG_IB_STS
Compteurs du nombre d’instructions en cours.
Exemples :
reg = 1
offset = 2
size = 4
hwreg_enc = reg | (offset << 6) | ((size - 1) << 11)
s_getreg_b32 s2, 0x1881
s_getreg_b32 s2, hwreg_enc // the same as above
s_getreg_b32 s2, hwreg(1, 2, 4) // the same as above
s_getreg_b32 s2, hwreg(reg, offset, size) // the same as above
s_getreg_b32 s2, hwreg(15)
s_getreg_b32 s2, hwreg(51, 1, 31)
s_getreg_b32 s2, hwreg(HW_REG_LDS_ALLOC, 0, 1)
