Signed-off-by: Samuel Pitoiset <samuel.pitoi...@gmail.com>
---
 src/amd/common/ac_llvm_build.c | 18 ++++++++++++++++--
 1 file changed, 16 insertions(+), 2 deletions(-)

diff --git a/src/amd/common/ac_llvm_build.c b/src/amd/common/ac_llvm_build.c
index 71723d5e91..905146c9f2 100644
--- a/src/amd/common/ac_llvm_build.c
+++ b/src/amd/common/ac_llvm_build.c
@@ -1393,17 +1393,31 @@ ac_build_umsb(struct ac_llvm_context *ctx,
        LLVMTypeRef type;
        LLVMValueRef highest_bit;
        LLVMValueRef zero;
+       unsigned bitsize;
 
-       if (ac_get_elem_bits(ctx, LLVMTypeOf(arg)) == 64) {
+       bitsize = ac_get_elem_bits(ctx, LLVMTypeOf(arg));
+       switch (bitsize) {
+       case 64:
                intrin_name = "llvm.ctlz.i64";
                type = ctx->i64;
                highest_bit = LLVMConstInt(ctx->i64, 63, false);
                zero = ctx->i64_0;
-       } else {
+               break;
+       case 32:
                intrin_name = "llvm.ctlz.i32";
                type = ctx->i32;
                highest_bit = LLVMConstInt(ctx->i32, 31, false);
                zero = ctx->i32_0;
+               break;
+       case 16:
+               intrin_name = "llvm.ctlz.i16";
+               type = ctx->i16;
+               highest_bit = LLVMConstInt(ctx->i16, 15, false);
+               zero = ctx->i16_0;
+               break;
+       default:
+               unreachable(!"invalid bitsize");
+               break;
        }
 
        LLVMValueRef params[2] = {
-- 
2.19.0

_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to