Browse Source

ac: fix ac_get_i1_sgpr_mask for Wave32

Reviewed-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3095>
master
Marek Olšák 6 years ago
parent
commit
e5e3ffa6b9
1 changed files with 11 additions and 2 deletions
  1. 11
    2
      src/amd/llvm/ac_llvm_build.c

+ 11
- 2
src/amd/llvm/ac_llvm_build.c View File

@@ -505,14 +505,23 @@ ac_build_ballot(struct ac_llvm_context *ctx,
LLVMValueRef ac_get_i1_sgpr_mask(struct ac_llvm_context *ctx,
LLVMValueRef value)
{
const char *name = LLVM_VERSION_MAJOR >= 9 ? "llvm.amdgcn.icmp.i64.i1" : "llvm.amdgcn.icmp.i1";
const char *name;

if (LLVM_VERSION_MAJOR >= 9) {
if (ctx->wave_size == 64)
name = "llvm.amdgcn.icmp.i64.i1";
else
name = "llvm.amdgcn.icmp.i32.i1";
} else {
name = "llvm.amdgcn.icmp.i1";
}
LLVMValueRef args[3] = {
value,
ctx->i1false,
LLVMConstInt(ctx->i32, LLVMIntNE, 0),
};

return ac_build_intrinsic(ctx, name, ctx->i64, args, 3,
return ac_build_intrinsic(ctx, name, ctx->iN_wavemask, args, 3,
AC_FUNC_ATTR_NOUNWIND |
AC_FUNC_ATTR_READNONE |
AC_FUNC_ATTR_CONVERGENT);

Loading…
Cancel
Save