[Mesa-dev] [PATCH 3/5] gallivm/tgsi: fix up breakc

sroland at vmware.com sroland at vmware.com
Thu Apr 18 19:13:56 PDT 2013


From: Roland Scheidegger <sroland at vmware.com>

It seems there was a typo in gallivm breakc handling (I am actually still
not sure it is really needed but otherwise that statement really should go
away). Also fix the wrong src argument type, even though they weren't really
used.
---
 src/gallium/auxiliary/gallivm/lp_bld_tgsi_soa.c |    2 +-
 src/gallium/auxiliary/tgsi/tgsi_exec.c          |    3 ++-
 src/gallium/auxiliary/tgsi/tgsi_info.c          |    3 +++
 3 files changed, 6 insertions(+), 2 deletions(-)

diff --git a/src/gallium/auxiliary/gallivm/lp_bld_tgsi_soa.c b/src/gallium/auxiliary/gallivm/lp_bld_tgsi_soa.c
index af1b8aa..af8abb1 100644
--- a/src/gallium/auxiliary/gallivm/lp_bld_tgsi_soa.c
+++ b/src/gallium/auxiliary/gallivm/lp_bld_tgsi_soa.c
@@ -221,7 +221,7 @@ static void lp_exec_break_condition(struct lp_exec_mask *mask,
    LLVMValueRef cond_mask = LLVMBuildAnd(builder,
                                          mask->exec_mask,
                                          cond, "cond_mask");
-   cond_mask = LLVMBuildNot(builder, cond, "break_cond");
+   cond_mask = LLVMBuildNot(builder, cond_mask, "break_cond");
 
    mask->break_mask = LLVMBuildAnd(builder,
                                    mask->break_mask,
diff --git a/src/gallium/auxiliary/tgsi/tgsi_exec.c b/src/gallium/auxiliary/tgsi/tgsi_exec.c
index 8b46785..75b0663 100644
--- a/src/gallium/auxiliary/tgsi/tgsi_exec.c
+++ b/src/gallium/auxiliary/tgsi/tgsi_exec.c
@@ -3239,6 +3239,7 @@ exec_case(struct tgsi_exec_machine *mach,
    UPDATE_EXEC_MASK(mach);
 }
 
+/* FIXME: this will only work if default is last */
 static void
 exec_default(struct tgsi_exec_machine *mach)
 {
@@ -4200,7 +4201,7 @@ exec_instruction(
       break;
 
    case TGSI_OPCODE_BREAKC:
-      FETCH(&r[0], 0, TGSI_CHAN_X);
+      IFETCH(&r[0], 0, TGSI_CHAN_X);
       /* update CondMask */
       if (r[0].u[0] && (mach->ExecMask & 0x1)) {
          mach->LoopMask &= ~0x1;
diff --git a/src/gallium/auxiliary/tgsi/tgsi_info.c b/src/gallium/auxiliary/tgsi/tgsi_info.c
index aee2d30..d5db6b9 100644
--- a/src/gallium/auxiliary/tgsi/tgsi_info.c
+++ b/src/gallium/auxiliary/tgsi/tgsi_info.c
@@ -298,6 +298,9 @@ tgsi_opcode_infer_src_type( uint opcode )
    case TGSI_OPCODE_SAMPLE_I:
    case TGSI_OPCODE_SAMPLE_I_MS:
    case TGSI_OPCODE_UIF:
+   case TGSI_OPCODE_CASE:
+   case TGSI_OPCODE_SWITCH:
+   case TGSI_OPCODE_BREAKC:
       return TGSI_TYPE_UNSIGNED;
    case TGSI_OPCODE_MOD:
    case TGSI_OPCODE_I2F:
-- 
1.7.9.5


More information about the mesa-dev mailing list