[Mesa-dev] [PATCH 3/3] st/glsl_to_tgsi: the second destination doesn't support relative addressing
Nicolai Hähnle
nhaehnle at gmail.com
Tue Oct 10 12:11:15 UTC 2017
From: Nicolai Hähnle <nicolai.haehnle at amd.com>
It's not used -- DFRACEXP gets array indexes of its exponent out-parameter
lowered earlier -- and it wouldn't have worked correctly anyway when both
dst and dst1 use relative addressing.
---
src/mesa/state_tracker/st_glsl_to_tgsi.cpp | 7 ++-----
1 file changed, 2 insertions(+), 5 deletions(-)
diff --git a/src/mesa/state_tracker/st_glsl_to_tgsi.cpp b/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
index 235690510b9..394d39ade63 100644
--- a/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
+++ b/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
@@ -382,42 +382,39 @@ glsl_to_tgsi_visitor::emit_asm(ir_instruction *ir, unsigned op,
int num_reladdr = 0, i, j;
bool dst_is_64bit[2];
op = get_opcode(op, dst, src0, src1);
/* If we have to do relative addressing, we want to load the ARL
* reg directly for one of the regs, and preload the other reladdr
* sources into temps.
*/
num_reladdr += dst.reladdr != NULL || dst.reladdr2;
- num_reladdr += dst1.reladdr != NULL || dst1.reladdr2;
+ assert(!dst1.reladdr); /* should be lowered in earlier passes */
num_reladdr += src0.reladdr != NULL || src0.reladdr2 != NULL;
num_reladdr += src1.reladdr != NULL || src1.reladdr2 != NULL;
num_reladdr += src2.reladdr != NULL || src2.reladdr2 != NULL;
num_reladdr += src3.reladdr != NULL || src3.reladdr2 != NULL;
reladdr_to_temp(ir, &src3, &num_reladdr);
reladdr_to_temp(ir, &src2, &num_reladdr);
reladdr_to_temp(ir, &src1, &num_reladdr);
reladdr_to_temp(ir, &src0, &num_reladdr);
if (dst.reladdr || dst.reladdr2) {
if (dst.reladdr)
emit_arl(ir, address_reg, *dst.reladdr);
if (dst.reladdr2)
emit_arl(ir, address_reg2, *dst.reladdr2);
num_reladdr--;
}
- if (dst1.reladdr) {
- emit_arl(ir, address_reg, *dst1.reladdr);
- num_reladdr--;
- }
+
assert(num_reladdr == 0);
/* inst->op has only 8 bits. */
STATIC_ASSERT(TGSI_OPCODE_LAST <= 255);
inst->op = op;
inst->precise = this->precise;
inst->info = tgsi_get_opcode_info(op);
inst->dst[0] = dst;
inst->dst[1] = dst1;
--
2.11.0
More information about the mesa-dev
mailing list