summaryrefslogtreecommitdiffstats
path: root/src/gallium/drivers/freedreno/a2xx
diff options
context:
space:
mode:
authorJonathan Marek <[email protected]>2019-09-05 11:19:21 -0400
committerJonathan Marek <[email protected]>2019-09-06 02:24:29 +0000
commit19e62fec608a0864e8fabd8dc46011dc56d24c88 (patch)
tree3893b65a8cd883e250f0ad9a2280884b5775fbe2 /src/gallium/drivers/freedreno/a2xx
parentc5e6961a584f71bd861c9203ccfd798bcd72a1c1 (diff)
freedreno/a2xx: ir2: fix saturate in cp
Signed-off-by: Jonathan Marek <[email protected]> Reviewed-by: Rob Clark <[email protected]> Reviewed-by: Eric Anholt <[email protected]>
Diffstat (limited to 'src/gallium/drivers/freedreno/a2xx')
-rw-r--r--src/gallium/drivers/freedreno/a2xx/ir2_cp.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/src/gallium/drivers/freedreno/a2xx/ir2_cp.c b/src/gallium/drivers/freedreno/a2xx/ir2_cp.c
index fa155887f80..0e16bdaa4c1 100644
--- a/src/gallium/drivers/freedreno/a2xx/ir2_cp.c
+++ b/src/gallium/drivers/freedreno/a2xx/ir2_cp.c
@@ -68,6 +68,9 @@ void cp_src(struct ir2_context *ctx)
if (!is_mov(p))
break;
+ if (p->alu.saturate)
+ break;
+
/* cant apply abs to const src, const src only for alu */
if (p->src[0].type == IR2_SRC_CONST &&
(src->abs || instr->type != IR2_ALU))
@@ -200,6 +203,7 @@ void cp_export(struct ir2_context *ctx)
p->is_ssa = true;
p->ssa.ncomp = 0;
memset(p->ssa.comp, 0, sizeof(p->ssa.comp));
+ p->alu.saturate |= instr->alu.saturate;
switch (instr->alu.vector_opc) {
case PRED_SETE_PUSHv ... PRED_SETGTE_PUSHv: