aboutsummaryrefslogtreecommitdiffstats
path: root/src/freedreno
diff options
context:
space:
mode:
authorRob Clark <[email protected]>2019-10-15 16:08:26 -0700
committerRob Clark <[email protected]>2019-10-24 13:08:56 -0700
commit3ac328875e8f8b150ef0d4f21bd5cfae3156d329 (patch)
treee6a38dfdd50aeb625276758f57324fd914483a80 /src/freedreno
parent9e211b57b85903d4444880b753f22206da86221c (diff)
freedreno/ir3: treat high vs low reg as conversion
This avoids copy-propagating a high register into an instruction which cannot consume it. Signed-off-by: Rob Clark <[email protected]> Reviewed-by: Kristian H. Kristensen <[email protected]>
Diffstat (limited to 'src/freedreno')
-rw-r--r--src/freedreno/ir3/ir3.h8
1 files changed, 7 insertions, 1 deletions
diff --git a/src/freedreno/ir3/ir3.h b/src/freedreno/ir3/ir3.h
index 4fc65a90c92..7eeb8b44336 100644
--- a/src/freedreno/ir3/ir3.h
+++ b/src/freedreno/ir3/ir3.h
@@ -646,13 +646,19 @@ static inline bool is_same_type_mov(struct ir3_instruction *instr)
case OPC_MOV:
if (instr->cat1.src_type != instr->cat1.dst_type)
return false;
+ /* If the type of dest reg and src reg are different,
+ * it shouldn't be considered as same type mov
+ */
+ if (!is_same_type_reg(instr->regs[0], instr->regs[1]))
+ return false;
break;
case OPC_ABSNEG_F:
case OPC_ABSNEG_S:
if (instr->flags & IR3_INSTR_SAT)
return false;
/* If the type of dest reg and src reg are different,
- * it shouldn't be considered as same type mov */
+ * it shouldn't be considered as same type mov
+ */
if (!is_same_type_reg(instr->regs[0], instr->regs[1]))
return false;
break;