gallium: Refactor the instruction predicate TGSI token.

Rename it to tgsi_instruction_predicate -- it's no longer an extended
token. Its presence is indicated by a new flag in tgsi_instruction that
indicates whether an instruction is predicated.

Also, change predicate index representation to match the other
tokens that specify register indices.
This commit is contained in:
Michal Krol
2009-11-24 08:55:40 +01:00
parent 2176b3ed9a
commit 57221c5438

View File

@@ -293,6 +293,8 @@ union tgsi_immediate_data
* respectively. For a given operation code, those numbers are fixed and are * respectively. For a given operation code, those numbers are fixed and are
* present here only for convenience. * present here only for convenience.
* *
* If Predicate is TRUE, tgsi_instruction_predicate token immediately follows.
*
* If Extended is TRUE, it is now executed. * If Extended is TRUE, it is now executed.
* *
* Saturate controls how are final results in destination registers modified. * Saturate controls how are final results in destination registers modified.
@@ -306,7 +308,8 @@ struct tgsi_instruction
unsigned Saturate : 2; /* TGSI_SAT_ */ unsigned Saturate : 2; /* TGSI_SAT_ */
unsigned NumDstRegs : 2; /* UINT */ unsigned NumDstRegs : 2; /* UINT */
unsigned NumSrcRegs : 4; /* UINT */ unsigned NumSrcRegs : 4; /* UINT */
unsigned Padding : 3; unsigned Predicate : 1; /* BOOL */
unsigned Padding : 2;
unsigned Extended : 1; /* BOOL */ unsigned Extended : 1; /* BOOL */
}; };
@@ -323,7 +326,6 @@ struct tgsi_instruction
#define TGSI_INSTRUCTION_EXT_TYPE_LABEL 1 #define TGSI_INSTRUCTION_EXT_TYPE_LABEL 1
#define TGSI_INSTRUCTION_EXT_TYPE_TEXTURE 2 #define TGSI_INSTRUCTION_EXT_TYPE_TEXTURE 2
#define TGSI_INSTRUCTION_EXT_TYPE_PREDICATE 3
struct tgsi_instruction_ext struct tgsi_instruction_ext
{ {
@@ -339,9 +341,6 @@ struct tgsi_instruction_ext
* If tgsi_instruction_ext::Type is TGSI_INSTRUCTION_EXT_TYPE_TEXTURE, it * If tgsi_instruction_ext::Type is TGSI_INSTRUCTION_EXT_TYPE_TEXTURE, it
* should be cast to tgsi_instruction_ext_texture. * should be cast to tgsi_instruction_ext_texture.
* *
* If tgsi_instruction_ext::Type is TGSI_INSTRUCTION_EXT_TYPE_PREDICATE, it
* should be cast to tgsi_instruction_ext_predicate.
*
* If tgsi_instruction_ext::Extended is TRUE, another tgsi_instruction_ext * If tgsi_instruction_ext::Extended is TRUE, another tgsi_instruction_ext
* follows. * follows.
*/ */
@@ -382,17 +381,15 @@ struct tgsi_instruction_ext_texture
* For SM3, the following constraint applies. * For SM3, the following constraint applies.
* - Swizzle is either set to identity or replicate. * - Swizzle is either set to identity or replicate.
*/ */
struct tgsi_instruction_ext_predicate struct tgsi_instruction_predicate
{ {
unsigned Type : 4; /* TGSI_INSTRUCTION_EXT_TYPE_PREDICATE */ int Index : 16; /* SINT */
unsigned SwizzleX : 2; /* TGSI_SWIZZLE_x */ unsigned SwizzleX : 2; /* TGSI_SWIZZLE_x */
unsigned SwizzleY : 2; /* TGSI_SWIZZLE_x */ unsigned SwizzleY : 2; /* TGSI_SWIZZLE_x */
unsigned SwizzleZ : 2; /* TGSI_SWIZZLE_x */ unsigned SwizzleZ : 2; /* TGSI_SWIZZLE_x */
unsigned SwizzleW : 2; /* TGSI_SWIZZLE_x */ unsigned SwizzleW : 2; /* TGSI_SWIZZLE_x */
unsigned Negate : 1; /* BOOL */ unsigned Negate : 1; /* BOOL */
unsigned SrcIndex : 8; /* UINT */ unsigned Padding : 7;
unsigned Padding : 10;
unsigned Extended : 1; /* BOOL */
}; };
/** /**