From 5526a557eeddaec7c92101ffd0e39761dd1e68f1 Mon Sep 17 00:00:00 2001 From: Rhys Perry Date: Sat, 21 Sep 2019 11:48:27 +0100 Subject: [PATCH] aco: readfirstlane vgpr pointers in convert_pointer_to_64_bit() MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit This can happen when bcsel is used between the results of two vulkan_resource_index. It's also probably needed for non-uniform descriptor indexing Fixes dEQP-VK.spirv_assembly.instruction.compute.variable_pointers.compute.reads_opselect_two_buffers Signed-off-by: Rhys Perry Reviewed-by: Daniel Schürmann --- src/amd/compiler/aco_instruction_selection.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/amd/compiler/aco_instruction_selection.cpp b/src/amd/compiler/aco_instruction_selection.cpp index 6d31cb7cf6b..c5f840361cc 100644 --- a/src/amd/compiler/aco_instruction_selection.cpp +++ b/src/amd/compiler/aco_instruction_selection.cpp @@ -369,6 +369,8 @@ Temp convert_pointer_to_64_bit(isel_context *ctx, Temp ptr) if (ptr.size() == 2) return ptr; Builder bld(ctx->program, ctx->block); + if (ptr.type() == RegType::vgpr) + ptr = bld.vop1(aco_opcode::v_readfirstlane_b32, bld.def(s1), ptr); return bld.pseudo(aco_opcode::p_create_vector, bld.def(s2), ptr, Operand((unsigned)ctx->options->address32_hi)); } -- 2.30.2