diff options
author | Samuel Pitoiset <[email protected]> | 2019-03-26 11:34:46 +0100 |
---|---|---|
committer | Samuel Pitoiset <[email protected]> | 2019-04-01 09:51:56 +0200 |
commit | 4d5fce29c353666473266864b7e0569cd4d38bdc (patch) | |
tree | c4022b43bd49ba78051fad37b6d295c4bbbfccba | |
parent | 7a088d1ac8f10fa42c81e9ce7d5eaac1cc9e8faa (diff) |
ac: fix ac_build_umsb() for 16-bit integer type
Signed-off-by: Samuel Pitoiset <[email protected]>
Reviewed-by: Bas Nieuwenhuizen <[email protected]>
-rw-r--r-- | src/amd/common/ac_llvm_build.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/src/amd/common/ac_llvm_build.c b/src/amd/common/ac_llvm_build.c index 20c722e332e..fe280b31368 100644 --- a/src/amd/common/ac_llvm_build.c +++ b/src/amd/common/ac_llvm_build.c @@ -1970,7 +1970,12 @@ ac_build_umsb(struct ac_llvm_context *ctx, /* The HW returns the last bit index from MSB, but TGSI/NIR wants * the index from LSB. Invert it by doing "31 - msb". */ msb = LLVMBuildSub(ctx->builder, highest_bit, msb, ""); - msb = LLVMBuildTruncOrBitCast(ctx->builder, msb, ctx->i32, ""); + + if (bitsize == 64) { + msb = LLVMBuildTrunc(ctx->builder, msb, ctx->i32, ""); + } else if (bitsize == 16) { + msb = LLVMBuildSExt(ctx->builder, msb, ctx->i32, ""); + } /* check for zero */ return LLVMBuildSelect(ctx->builder, |