tgsi: Add ureg_DECL_loop().
This commit is contained in:
parent
5ee0d9f632
commit
59a70c364d
|
@ -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,
|
||||
|
|
|
@ -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 *);
|
||||
|
||||
|
|
Loading…
Reference in New Issue