<div dir="auto">r-b</div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Tue, Mar 26, 2019, 10:13 AM Samuel Pitoiset <<a href="mailto:samuel.pitoiset@gmail.com">samuel.pitoiset@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">27670 shaders in 14347 tests<br>
Totals:<br>
SGPRS: 1231173 -> 1236757 (0.45 %)<br>
VGPRS: 866056 -> 867488 (0.17 %)<br>
Spilled SGPRs: 24201 -> 24169 (-0.13 %)<br>
Code Size: 46134836 -> 46115944 (-0.04 %) bytes<br>
Max Waves: 232287 -> 232070 (-0.09 %)<br>
<br>
Totals from affected shaders:<br>
SGPRS: 247624 -> 253208 (2.26 %)<br>
VGPRS: 214952 -> 216384 (0.67 %)<br>
Spilled SGPRs: 63 -> 31 (-50.79 %)<br>
Code Size: 7633772 -> 7614880 (-0.25 %) bytes<br>
Max Waves: 62065 -> 61848 (-0.35 %)<br>
<br>
This changes requires LLVM r356755.<br>
<br>
v2: - fix llvm 8<br>
<br>
Signed-off-by: Samuel Pitoiset <<a href="mailto:samuel.pitoiset@gmail.com" target="_blank" rel="noreferrer">samuel.pitoiset@gmail.com</a>><br>
---<br>
 src/amd/common/ac_llvm_build.c | 33 +++++++++++++++++++++++----------<br>
 src/amd/common/ac_llvm_build.h |  1 +<br>
 2 files changed, 24 insertions(+), 10 deletions(-)<br>
<br>
diff --git a/src/amd/common/ac_llvm_build.c b/src/amd/common/ac_llvm_build.c<br>
index 1123dce2cc8..a816327ce95 100644<br>
--- a/src/amd/common/ac_llvm_build.c<br>
+++ b/src/amd/common/ac_llvm_build.c<br>
@@ -83,6 +83,7 @@ ac_llvm_context_init(struct ac_llvm_context *ctx,<br>
        ctx->v2i32 = LLVMVectorType(ctx->i32, 2);<br>
        ctx->v3i32 = LLVMVectorType(ctx->i32, 3);<br>
        ctx->v4i32 = LLVMVectorType(ctx->i32, 4);<br>
+       ctx->v3f32 = LLVMVectorType(ctx->f32, 3);<br>
        ctx->v2f32 = LLVMVectorType(ctx->f32, 2);<br>
        ctx->v4f32 = LLVMVectorType(ctx->f32, 4);<br>
        ctx->v8i32 = LLVMVectorType(ctx->i32, 8);<br>
@@ -1150,9 +1151,12 @@ ac_build_llvm8_buffer_store_common(struct ac_llvm_context *ctx,<br>
        args[idx++] = voffset ? voffset : ctx->i32_0;<br>
        args[idx++] = soffset ? soffset : ctx->i32_0;<br>
        args[idx++] = LLVMConstInt(ctx->i32, (glc ? 1 : 0) + (slc ? 2 : 0), 0);<br>
-       unsigned func = CLAMP(num_channels, 1, 3) - 1;<br>
+       unsigned func = CLAMP(num_channels, 1, 4) - 1;<br>
<br>
-       const char *type_names[] = {"f32", "v2f32", "v4f32"};<br>
+       if (HAVE_LLVM == 0x800 && func == 2)<br>
+               func = 3; /* Only LLVM 9+ supports vec3 */<br>
+<br>
+       const char *type_names[] = {"f32", "v2f32", "v3f32", "v4f32"};<br>
        const char *indexing_kind = structurized ? "struct" : "raw";<br>
        char name[256];<br>
<br>
@@ -1334,10 +1338,13 @@ ac_build_llvm8_buffer_load_common(struct ac_llvm_context *ctx,<br>
        args[idx++] = voffset ? voffset : ctx->i32_0;<br>
        args[idx++] = soffset ? soffset : ctx->i32_0;<br>
        args[idx++] = LLVMConstInt(ctx->i32, (glc ? 1 : 0) + (slc ? 2 : 0), 0);<br>
-       unsigned func = CLAMP(num_channels, 1, 3) - 1;<br>
+       unsigned func = CLAMP(num_channels, 1, 4) - 1;<br>
<br>
-       LLVMTypeRef types[] = {ctx->f32, ctx->v2f32, ctx->v4f32};<br>
-       const char *type_names[] = {"f32", "v2f32", "v4f32"};<br>
+       if (HAVE_LLVM == 0x800 && func == 2)<br>
+               func = 3; /* Only LLVM 9+ supports vec3 */<br>
+<br>
+       LLVMTypeRef types[] = {ctx->f32, ctx->v2f32, ctx->v3f32, ctx->v4f32};<br>
+       const char *type_names[] = {"f32", "v2f32", "v3f32", "v4f32"};<br>
        const char *indexing_kind = structurized ? "struct" : "raw";<br>
        char name[256];<br>
<br>
@@ -1490,10 +1497,13 @@ ac_build_llvm8_tbuffer_load(struct ac_llvm_context *ctx,<br>
        args[idx++] = soffset ? soffset : ctx->i32_0;<br>
        args[idx++] = LLVMConstInt(ctx->i32, dfmt | (nfmt << 4), 0);<br>
        args[idx++] = LLVMConstInt(ctx->i32, (glc ? 1 : 0) + (slc ? 2 : 0), 0);<br>
-       unsigned func = CLAMP(num_channels, 1, 3) - 1;<br>
+       unsigned func = CLAMP(num_channels, 1, 4) - 1;<br>
<br>
-       LLVMTypeRef types[] = {ctx->i32, ctx->v2i32, ctx->v4i32};<br>
-       const char *type_names[] = {"i32", "v2i32", "v4i32"};<br>
+       if (HAVE_LLVM == 0x800 && func == 2)<br>
+               func = 3; /* Only LLVM 9+ supports vec3 */<br>
+<br>
+       LLVMTypeRef types[] = {ctx->i32, ctx->v2i32, ctx->v3i32, ctx->v4i32};<br>
+       const char *type_names[] = {"i32", "v2i32", "v3i32", "v4i32"};<br>
        const char *indexing_kind = structurized ? "struct" : "raw";<br>
        char name[256];<br>
<br>
@@ -1651,9 +1661,12 @@ ac_build_llvm8_tbuffer_store(struct ac_llvm_context *ctx,<br>
        args[idx++] = soffset ? soffset : ctx->i32_0;<br>
        args[idx++] = LLVMConstInt(ctx->i32, dfmt | (nfmt << 4), 0);<br>
        args[idx++] = LLVMConstInt(ctx->i32, (glc ? 1 : 0) + (slc ? 2 : 0), 0);<br>
-       unsigned func = CLAMP(num_channels, 1, 3) - 1;<br>
+       unsigned func = CLAMP(num_channels, 1, 4) - 1;<br>
<br>
-       const char *type_names[] = {"i32", "v2i32", "v4i32"};<br>
+       if (HAVE_LLVM == 0x800 && func == 2)<br>
+               func = 3; /* Only LLVM 9+ supports vec3 */<br>
+<br>
+       const char *type_names[] = {"i32", "v2i32", "v3i32", "v4i32"};<br>
        const char *indexing_kind = structurized ? "struct" : "raw";<br>
        char name[256];<br>
<br>
diff --git a/src/amd/common/ac_llvm_build.h b/src/amd/common/ac_llvm_build.h<br>
index 9151c743bed..d2f8cd5e08b 100644<br>
--- a/src/amd/common/ac_llvm_build.h<br>
+++ b/src/amd/common/ac_llvm_build.h<br>
@@ -71,6 +71,7 @@ struct ac_llvm_context {<br>
        LLVMTypeRef v3i32;<br>
        LLVMTypeRef v4i32;<br>
        LLVMTypeRef v2f32;<br>
+       LLVMTypeRef v3f32;<br>
        LLVMTypeRef v4f32;<br>
        LLVMTypeRef v8i32;<br>
<br>
-- <br>
2.21.0<br>
<br>
_______________________________________________<br>
mesa-dev mailing list<br>
<a href="mailto:mesa-dev@lists.freedesktop.org" target="_blank" rel="noreferrer">mesa-dev@lists.freedesktop.org</a><br>
<a href="https://lists.freedesktop.org/mailman/listinfo/mesa-dev" rel="noreferrer noreferrer" target="_blank">https://lists.freedesktop.org/mailman/listinfo/mesa-dev</a></blockquote></div>