summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBas Nieuwenhuizen <bas@basnieuwenhuizen.nl>2017-01-08 01:36:30 +0100
committerBas Nieuwenhuizen <bas@basnieuwenhuizen.nl>2017-02-01 01:09:29 +0100
commitbb1ce630026a6e15b1aaa911d64543341f485a15 (patch)
treec66e138e80ed3bef61451ffe2c618e711e341220
parent03724af2629e6f67eb684fabb93f086298aeee6f (diff)
radv/ac: Implement Float64 UBO loads.
Signed-off-by: Bas Nieuwenhuizen <basni@google.com> Reviewed-by: Dave Airlie <airlied@redhat.com>
-rw-r--r--src/amd/common/ac_nir_to_llvm.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/src/amd/common/ac_nir_to_llvm.c b/src/amd/common/ac_nir_to_llvm.c
index 4367cd1bb6b..c50292e765f 100644
--- a/src/amd/common/ac_nir_to_llvm.c
+++ b/src/amd/common/ac_nir_to_llvm.c
@@ -2185,13 +2185,17 @@ static LLVMValueRef visit_load_buffer(struct nir_to_llvm_context *ctx,
static LLVMValueRef visit_load_ubo_buffer(struct nir_to_llvm_context *ctx,
nir_intrinsic_instr *instr)
{
- LLVMValueRef results[4], ret;
+ LLVMValueRef results[8], ret;
LLVMValueRef rsrc = get_src(ctx, instr->src[0]);
LLVMValueRef offset = get_src(ctx, instr->src[1]);
+ int num_components = instr->num_components;
rsrc = LLVMBuildBitCast(ctx->builder, rsrc, LLVMVectorType(ctx->i8, 16), "");
- for (unsigned i = 0; i < instr->num_components; ++i) {
+ if (instr->dest.ssa.bit_size == 64)
+ num_components *= 2;
+
+ for (unsigned i = 0; i < num_components; ++i) {
LLVMValueRef params[] = {
rsrc,
LLVMBuildAdd(ctx->builder, LLVMConstInt(ctx->i32, 4 * i, 0),