r600g: Add ar_chan member to struct r600_bytecode

r600_bytecode::ar_chan stores the register channel for the value that
will be loaded into the AR register.

At the moment, this field is only used by the LLVM backend.  The default
backend always sets ar_chan = 0.
This commit is contained in:
Tom Stellard 2013-01-22 21:22:11 +01:00
parent 0ba0926861
commit 33dc412b89
3 changed files with 4 additions and 0 deletions

View File

@ -1421,6 +1421,7 @@ static int load_ar_r6xx(struct r600_bytecode *bc)
memset(&alu, 0, sizeof(alu));
alu.inst = V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_MOVA_GPR_INT;
alu.src[0].sel = bc->ar_reg;
alu.src[0].chan = bc->ar_chan;
alu.last = 1;
alu.index_mode = INDEX_MODE_LOOP;
r = r600_bytecode_add_alu(bc, &alu);
@ -1451,6 +1452,7 @@ static int load_ar(struct r600_bytecode *bc)
memset(&alu, 0, sizeof(alu));
alu.inst = BC_INST(bc, V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_MOVA_INT);
alu.src[0].sel = bc->ar_reg;
alu.src[0].chan = bc->ar_chan;
alu.last = 1;
r = r600_bytecode_add_alu(bc, &alu);
if (r)

View File

@ -213,6 +213,7 @@ struct r600_bytecode {
struct r600_cf_callstack callstack[SQ_MAX_CALL_DEPTH];
unsigned ar_loaded;
unsigned ar_reg;
unsigned ar_chan;
unsigned ar_handling;
unsigned r6xx_nop_after_rel_dst;
};

View File

@ -377,6 +377,7 @@ static unsigned r600_alu_from_byte_stream(struct r600_shader_ctx *ctx,
if (alu.inst == CTX_INST(V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_MOVA_INT)) {
ctx->bc->ar_reg = alu.src[0].sel;
ctx->bc->ar_chan = alu.src[0].chan;
ctx->bc->ar_loaded = 0;
return bytes_read;
}