r600g/sb: fix scheduling of PRED_SET instructions
authorVadim Girlin <vadimgirlin@gmail.com>
Sun, 26 May 2013 21:39:54 +0000 (01:39 +0400)
committerVadim Girlin <vadimgirlin@gmail.com>
Sun, 26 May 2013 21:45:07 +0000 (01:45 +0400)
commitff2a6116992a6592747105fb167cab18603361c0
treed5acba597f983392c04a757a90dd422bc675a73d
parent44a117ab9ac7e18ffddf4d59ae35fe2c266efc1d
r600g/sb: fix scheduling of PRED_SET instructions

PRED_SET instructions that update exec mask should be scheduled immediately
prior to the "if-then-else" block, because any instruction that is
inserted after alu clause with PRED_SET and before conditional block is
also conditionally executed by hw (exec mask is already updated at that
moment).

Propbably it's better to make PRED_SET a part of conditional
"if-then-else" block in the IR to handle this more cleanly,
but for now this temporary solution should prevent the problem.

Signed-off-by: Vadim Girlin <vadimgirlin@gmail.com>
src/gallium/drivers/r600/sb/sb_gcm.cpp
src/gallium/drivers/r600/sb/sb_pass.h