From: Dave Airlie Date: Wed, 10 Jan 2018 06:08:48 +0000 (+0000) Subject: r600/sb: add lds related peepholes. X-Git-Tag: upstream/18.1.0~2561 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=44a27cdceca0b835d964ca16db68721816ae868f;p=platform%2Fupstream%2Fmesa.git r600/sb: add lds related peepholes. if no destination: a) convert _RET instructions to non _RET variants if no dst b) set src0 to undefined if it's a READ, this should get DCE then. Acked-By: Roland Scheidegger Signed-off-by: Dave Airlie --- diff --git a/src/gallium/drivers/r600/sb/sb_peephole.cpp b/src/gallium/drivers/r600/sb/sb_peephole.cpp index 49a6965..4390a8f 100644 --- a/src/gallium/drivers/r600/sb/sb_peephole.cpp +++ b/src/gallium/drivers/r600/sb/sb_peephole.cpp @@ -68,7 +68,14 @@ void peephole::run_on(container_node* c) { if (n->is_alu_inst()) { alu_node *a = static_cast(n); - if (a->bc.op_ptr->flags & + if (a->bc.op_ptr->flags & AF_LDS) { + if (!a->dst[0]) { + if (a->bc.op >= LDS_OP2_LDS_ADD_RET && a->bc.op <= LDS_OP3_LDS_MSKOR_RET) + a->bc.set_op(a->bc.op - LDS_OP2_LDS_ADD_RET + LDS_OP2_LDS_ADD); + if (a->bc.op == LDS_OP1_LDS_READ_RET) + a->src[0] = sh.get_undef_value(); + } + } else if (a->bc.op_ptr->flags & (AF_PRED | AF_SET | AF_CMOV | AF_KILL)) { optimize_cc_op(a); } else if (a->bc.op == ALU_OP1_FLT_TO_INT) {