diff options
author | Vincent Lejeune <[email protected]> | 2012-07-14 20:33:23 +0200 |
---|---|---|
committer | Tom Stellard <[email protected]> | 2012-07-23 15:04:36 +0000 |
commit | bc4b4c605cc04138e5209782fa5939bfd71930bd (patch) | |
tree | 007f98840b5688599d36789edb49f8b9af282945 /src/gallium/drivers/r600/r600_shader.c | |
parent | 044de40cb0c6af54d99252f55145972780362afa (diff) |
radeon/llvm: Fix a bug with IF LOGICALNZ with int operand
Signed-off-by: Tom Stellard <[email protected]>
Diffstat (limited to 'src/gallium/drivers/r600/r600_shader.c')
-rw-r--r-- | src/gallium/drivers/r600/r600_shader.c | 20 |
1 files changed, 12 insertions, 8 deletions
diff --git a/src/gallium/drivers/r600/r600_shader.c b/src/gallium/drivers/r600/r600_shader.c index cf912c1267d..1fa519db54f 100644 --- a/src/gallium/drivers/r600/r600_shader.c +++ b/src/gallium/drivers/r600/r600_shader.c @@ -372,26 +372,30 @@ static unsigned r600_fc_from_byte_stream(struct r600_shader_ctx *ctx, CTX_INST(V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_PRED_SETNE)); break; case 1: - tgsi_else(ctx); + llvm_if(ctx, &alu, + CTX_INST(V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_PRED_SETNE_INT)); break; case 2: - tgsi_endif(ctx); + tgsi_else(ctx); break; case 3: - tgsi_bgnloop(ctx); + tgsi_endif(ctx); break; case 4: - tgsi_endloop(ctx); + tgsi_bgnloop(ctx); break; case 5: - r600_break_from_byte_stream(ctx, &alu, - CTX_INST(V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_PRED_SETE)); + tgsi_endloop(ctx); break; case 6: r600_break_from_byte_stream(ctx, &alu, - CTX_INST(V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_PRED_SETNE_INT)); + CTX_INST(V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_PRED_SETE_INT)); break; case 7: + r600_break_from_byte_stream(ctx, &alu, + CTX_INST(V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_PRED_SETNE)); + break; + case 8: { unsigned opcode = TGSI_OPCODE_CONT; if (ctx->bc->chip_class == CAYMAN) { @@ -407,7 +411,7 @@ static unsigned r600_fc_from_byte_stream(struct r600_shader_ctx *ctx, tgsi_loop_brk_cont(ctx); } break; - case 8: + case 9: r600_break_from_byte_stream(ctx, &alu, CTX_INST(V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_PRED_SETE_INT)); break; |