diff options
author | Connor Abbott <cwabbott0@gmail.com> | 2021-11-16 15:32:58 +0100 |
---|---|---|
committer | Dylan Baker <dylan.c.baker@intel.com> | 2021-11-24 15:47:19 -0800 |
commit | b3afa6e7ef33edd7388031ea3b685af3b377fcff (patch) | |
tree | 3b7432ee4fb177f61a4f4969e8cc10711efad04b | |
parent | 281f3d3e53ffe0b80e79087d5e6344dc61f91cf9 (diff) |
ir3/lower_pcopy: Fix shr.b illegal copy lowering
The immediate shouldn't be half-reg because the other source isn't.
Fixes an assertion failure with
dEQP-VK.ssbo.phys.layout.random.16bit.scalar.35.
Fixes: 0ffcb19b9d9 ("ir3: Rewrite register allocation")
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/13818>
(cherry picked from commit 65da866ad96bbe5a1683c98191331827ea3bd580)
-rw-r--r-- | .pick_status.json | 2 | ||||
-rw-r--r-- | src/freedreno/ir3/ir3_lower_parallelcopy.c | 4 |
2 files changed, 3 insertions, 3 deletions
diff --git a/.pick_status.json b/.pick_status.json index 5774cb8b6d5..27330018652 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -1102,7 +1102,7 @@ "description": "ir3/lower_pcopy: Fix shr.b illegal copy lowering", "nominated": true, "nomination_type": 1, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": "0ffcb19b9d9fbe902224542047c389a661fbf816" }, diff --git a/src/freedreno/ir3/ir3_lower_parallelcopy.c b/src/freedreno/ir3/ir3_lower_parallelcopy.c index 8807dd2d157..80a841662a4 100644 --- a/src/freedreno/ir3/ir3_lower_parallelcopy.c +++ b/src/freedreno/ir3/ir3_lower_parallelcopy.c @@ -223,12 +223,12 @@ do_copy(struct ir3_compiler *compiler, struct ir3_instruction *instr, cov->cat1.src_type = TYPE_U32; ir3_instr_move_before(cov, instr); } else { - /* shr.b dst, src, h(16) */ + /* shr.b dst, src, (16) */ struct ir3_instruction *shr = ir3_instr_create(instr->block, OPC_SHR_B, 1, 2); ir3_dst_create(shr, dst_num, entry->flags); ir3_src_create(shr, src_num, entry->flags & ~IR3_REG_HALF); - ir3_src_create(shr, 0, entry->flags | IR3_REG_IMMED)->uim_val = 16; + ir3_src_create(shr, 0, IR3_REG_IMMED)->uim_val = 16; ir3_instr_move_before(shr, instr); } return; |