diff options
author | Nicolai Hähnle <nicolai.haehnle@amd.com> | 2017-06-25 17:56:37 +0200 |
---|---|---|
committer | Nicolai Hähnle <nicolai.haehnle@amd.com> | 2017-07-05 12:33:59 +0200 |
commit | 1a5d0e8581e212b479980bb4b4e5fa7283f390ca (patch) | |
tree | 55036017738d5b38350db410dc376ae213f5e18d | |
parent | e11e0827ea39b6db73420923ce94cf9add4698bc (diff) |
radeonsi: use new function ac_build_umin for edgeflag clamping
-rw-r--r-- | src/amd/common/ac_llvm_build.c | 7 | ||||
-rw-r--r-- | src/amd/common/ac_llvm_build.h | 1 | ||||
-rw-r--r-- | src/gallium/drivers/radeonsi/si_shader.c | 2 |
3 files changed, 9 insertions, 1 deletions
diff --git a/src/amd/common/ac_llvm_build.c b/src/amd/common/ac_llvm_build.c index 2dddf44ff8..9b939c148e 100644 --- a/src/amd/common/ac_llvm_build.c +++ b/src/amd/common/ac_llvm_build.c @@ -908,6 +908,13 @@ ac_build_umsb(struct ac_llvm_context *ctx, LLVMConstInt(ctx->i32, -1, true), msb, ""); } +LLVMValueRef ac_build_umin(struct ac_llvm_context *ctx, LLVMValueRef a, + LLVMValueRef b) +{ + LLVMValueRef cmp = LLVMBuildICmp(ctx->builder, LLVMIntULE, a, b, ""); + return LLVMBuildSelect(ctx->builder, cmp, a, b, ""); +} + LLVMValueRef ac_build_clamp(struct ac_llvm_context *ctx, LLVMValueRef value) { if (HAVE_LLVM >= 0x0500) { diff --git a/src/amd/common/ac_llvm_build.h b/src/amd/common/ac_llvm_build.h index f25af8b76a..09fd585706 100644 --- a/src/amd/common/ac_llvm_build.h +++ b/src/amd/common/ac_llvm_build.h @@ -197,6 +197,7 @@ LLVMValueRef ac_build_umsb(struct ac_llvm_context *ctx, LLVMValueRef arg, LLVMTypeRef dst_type); +LLVMValueRef ac_build_umin(struct ac_llvm_context *ctx, LLVMValueRef a, LLVMValueRef b); LLVMValueRef ac_build_clamp(struct ac_llvm_context *ctx, LLVMValueRef value); struct ac_export_args { diff --git a/src/gallium/drivers/radeonsi/si_shader.c b/src/gallium/drivers/radeonsi/si_shader.c index 96fce0eef4..71e559fe7c 100644 --- a/src/gallium/drivers/radeonsi/si_shader.c +++ b/src/gallium/drivers/radeonsi/si_shader.c @@ -2509,7 +2509,7 @@ handle_semantic: edgeflag_value = LLVMBuildFPToUI(ctx->gallivm.builder, edgeflag_value, ctx->i32, ""); - edgeflag_value = lp_build_min(&bld_base->int_bld, + edgeflag_value = ac_build_umin(&ctx->ac, edgeflag_value, ctx->i32_1); |