summaryrefslogtreecommitdiffstats
path: root/src/gallium
diff options
context:
space:
mode:
authorRoland Scheidegger <[email protected]>2013-04-19 03:26:20 +0200
committerRoland Scheidegger <[email protected]>2013-04-20 02:27:53 +0200
commit107550e71a762bf1999220a81b61107384eca065 (patch)
treed51466822d2855808624845409cd0ac3ed428984 /src/gallium
parente8d1b26a8275822cbaa6fe241657c766c8df4169 (diff)
gallivm/tgsi: fix up breakc
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. Reviewed-by: Jose Fonseca <[email protected]>
Diffstat (limited to 'src/gallium')
-rw-r--r--src/gallium/auxiliary/gallivm/lp_bld_tgsi_soa.c2
-rw-r--r--src/gallium/auxiliary/tgsi/tgsi_exec.c3
-rw-r--r--src/gallium/auxiliary/tgsi/tgsi_info.c3
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 af1b8aa76ae..af8abb1fcd6 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 8b46785d66c..75b06632b41 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 aee2d3081b2..d5db6b953ec 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: