From: Rob Clark Date: Tue, 15 Oct 2019 23:08:26 +0000 (-0700) Subject: freedreno/ir3: treat high vs low reg as conversion X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=3ac328875e8f8b150ef0d4f21bd5cfae3156d329;p=mesa.git 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 Reviewed-by: Kristian H. Kristensen --- 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;