tgsi: Add ureg_DECL_loop().

This commit is contained in:
Michal Krol 2009-11-24 09:02:29 +01:00
parent 5ee0d9f632
commit 59a70c364d
2 changed files with 25 additions and 0 deletions

View File

@ -72,6 +72,7 @@ struct ureg_tokens {
#define UREG_MAX_IMMEDIATE 32
#define UREG_MAX_TEMP 256
#define UREG_MAX_ADDR 2
#define UREG_MAX_LOOP 1
#define UREG_MAX_PRED 1
#define DOMAIN_DECL 0
@ -117,6 +118,7 @@ struct ureg_program
unsigned nr_addrs;
unsigned nr_preds;
unsigned nr_loops;
unsigned nr_instructions;
struct ureg_tokens domain[2];
@ -417,6 +419,19 @@ struct ureg_dst ureg_DECL_address( struct ureg_program *ureg )
return ureg_dst_register( TGSI_FILE_ADDRESS, 0 );
}
/* Allocate a new loop register.
*/
struct ureg_dst
ureg_DECL_loop(struct ureg_program *ureg)
{
if (ureg->nr_loops < UREG_MAX_LOOP) {
return ureg_dst_register(TGSI_FILE_LOOP, ureg->nr_loops++);
}
assert(0);
return ureg_dst_register(TGSI_FILE_LOOP, 0);
}
/* Allocate a new predicate register.
*/
struct ureg_dst
@ -1015,6 +1030,13 @@ static void emit_decls( struct ureg_program *ureg )
0, ureg->nr_addrs );
}
if (ureg->nr_loops) {
emit_decl_range(ureg,
TGSI_FILE_LOOP,
0,
ureg->nr_loops);
}
if (ureg->nr_preds) {
emit_decl_range(ureg,
TGSI_FILE_PREDICATE,

View File

@ -157,6 +157,9 @@ ureg_release_temporary( struct ureg_program *ureg,
struct ureg_dst
ureg_DECL_address( struct ureg_program * );
struct ureg_dst
ureg_DECL_loop( struct ureg_program * );
struct ureg_dst
ureg_DECL_predicate(struct ureg_program *);