Module: Mesa
Branch: master
Commit: 39b098dafb76c842d9220bfc10c23c2c91e655db
URL:    
http://cgit.freedesktop.org/mesa/mesa/commit/?id=39b098dafb76c842d9220bfc10c23c2c91e655db

Author: Marek Olšák <[email protected]>
Date:   Thu Nov  9 23:25:34 2017 +0100

radeonsi: do 64-bit LDS loads recursively

Reviewed-by: Nicolai Hähnle <[email protected]>

---

 src/gallium/drivers/radeonsi/si_shader.c | 16 +++++++++-------
 1 file changed, 9 insertions(+), 7 deletions(-)

diff --git a/src/gallium/drivers/radeonsi/si_shader.c 
b/src/gallium/drivers/radeonsi/si_shader.c
index e6b14f9205..d7c130a706 100644
--- a/src/gallium/drivers/radeonsi/si_shader.c
+++ b/src/gallium/drivers/radeonsi/si_shader.c
@@ -1090,17 +1090,19 @@ static LLVMValueRef lds_load(struct 
lp_build_tgsi_context *bld_base,
                                              TGSI_NUM_CHANNELS);
        }
 
+       /* Split 64-bit loads. */
+       if (tgsi_type_is_64bit(type)) {
+               LLVMValueRef lo, hi;
+
+               lo = lds_load(bld_base, TGSI_TYPE_UNSIGNED, swizzle, dw_addr);
+               hi = lds_load(bld_base, TGSI_TYPE_UNSIGNED, swizzle + 1, 
dw_addr);
+               return si_llvm_emit_fetch_64bit(bld_base, type, lo, hi);
+       }
+
        dw_addr = lp_build_add(&bld_base->uint_bld, dw_addr,
                            LLVMConstInt(ctx->i32, swizzle, 0));
 
        value = ac_lds_load(&ctx->ac, dw_addr);
-       if (tgsi_type_is_64bit(type)) {
-               LLVMValueRef value2;
-               dw_addr = lp_build_add(&bld_base->uint_bld, dw_addr,
-                                      ctx->i32_1);
-               value2 = ac_lds_load(&ctx->ac, dw_addr);
-               return si_llvm_emit_fetch_64bit(bld_base, type, value, value2);
-       }
 
        return bitcast(bld_base, type, value);
 }

_______________________________________________
mesa-commit mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/mesa-commit

Reply via email to