diff options
author | Rob Clark <[email protected]> | 2019-10-15 16:08:26 -0700 |
---|---|---|
committer | Rob Clark <[email protected]> | 2019-10-24 13:08:56 -0700 |
commit | 3ac328875e8f8b150ef0d4f21bd5cfae3156d329 (patch) | |
tree | e6a38dfdd50aeb625276758f57324fd914483a80 | |
parent | 9e211b57b85903d4444880b753f22206da86221c (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]>
-rw-r--r-- | src/freedreno/ir3/ir3.h | 8 |
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; |