aboutsummaryrefslogtreecommitdiffstats
path: root/src/freedreno/ir3/ir3.h
diff options
context:
space:
mode:
authorRob Clark <[email protected]>2020-05-15 15:48:06 -0700
committerMarge Bot <[email protected]>2020-05-19 16:06:17 +0000
commitb24b6a83653f1b53237288215cbff94ffeb2dc56 (patch)
tree9d3045c453aae89f49ca217700bef255f1d169a9 /src/freedreno/ir3/ir3.h
parentfcfe5eff63358371b10f1cb75964e3f930d4c858 (diff)
freedreno/ir3/group: fix for half-regs
If we're inserting a mov to resolve a conflict between meta:collect's (ie. for .zyx type swizzles, etc), we should use the correct precision. Signed-off-by: Rob Clark <[email protected]> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5048>
Diffstat (limited to 'src/freedreno/ir3/ir3.h')
-rw-r--r--src/freedreno/ir3/ir3.h4
1 files changed, 3 insertions, 1 deletions
diff --git a/src/freedreno/ir3/ir3.h b/src/freedreno/ir3/ir3.h
index 79a40a12293..d039a4191a8 100644
--- a/src/freedreno/ir3/ir3.h
+++ b/src/freedreno/ir3/ir3.h
@@ -1345,7 +1345,9 @@ static inline struct ir3_instruction *
ir3_MOV(struct ir3_block *block, struct ir3_instruction *src, type_t type)
{
struct ir3_instruction *instr = ir3_instr_create(block, OPC_MOV);
- __ssa_dst(instr);
+ unsigned flags = (type_size(type) < 32) ? IR3_REG_HALF : 0;
+
+ __ssa_dst(instr)->flags |= flags;
if (src->regs[0]->flags & IR3_REG_ARRAY) {
struct ir3_register *src_reg = __ssa_src(instr, src, IR3_REG_ARRAY);
src_reg->array = src->regs[0]->array;