Mesa (master): ac: update and document fast math flags used by radeonsi
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Mon Apr 27 11:31:23 UTC 2020
Module: Mesa
Branch: master
Commit: f2c2a28073dd4ea0d104f284e874d136880a91a5
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=f2c2a28073dd4ea0d104f284e874d136880a91a5
Author: Marek Olšák <marek.olsak at amd.com>
Date: Wed Apr 22 22:38:14 2020 -0400
ac: update and document fast math flags used by radeonsi
This should have no effect, because we never use FP division, but
it's safer for the future.
Reviewed-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer at amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4696>
---
src/amd/llvm/ac_llvm_helper.cpp | 14 ++++++++++++--
src/amd/llvm/ac_llvm_util.h | 2 +-
src/gallium/drivers/radeonsi/si_shader_llvm.c | 2 +-
3 files changed, 14 insertions(+), 4 deletions(-)
diff --git a/src/amd/llvm/ac_llvm_helper.cpp b/src/amd/llvm/ac_llvm_helper.cpp
index 6b4610597ed..578521a6f2d 100644
--- a/src/amd/llvm/ac_llvm_helper.cpp
+++ b/src/amd/llvm/ac_llvm_helper.cpp
@@ -84,8 +84,18 @@ LLVMBuilderRef ac_create_builder(LLVMContextRef ctx,
case AC_FLOAT_MODE_DEFAULT:
case AC_FLOAT_MODE_DENORM_FLUSH_TO_ZERO:
break;
- case AC_FLOAT_MODE_NO_SIGNED_ZEROS_FP_MATH:
- flags.setNoSignedZeros();
+
+ case AC_FLOAT_MODE_DEFAULT_OPENGL:
+ /* Allow optimizations to treat the sign of a zero argument or
+ * result as insignificant.
+ */
+ flags.setNoSignedZeros(); /* nsz */
+
+ /* Allow optimizations to use the reciprocal of an argument
+ * rather than perform division.
+ */
+ flags.setAllowReciprocal(); /* arcp */
+
llvm::unwrap(builder)->setFastMathFlags(flags);
break;
}
diff --git a/src/amd/llvm/ac_llvm_util.h b/src/amd/llvm/ac_llvm_util.h
index 00372476d8e..4cfb3b55388 100644
--- a/src/amd/llvm/ac_llvm_util.h
+++ b/src/amd/llvm/ac_llvm_util.h
@@ -70,7 +70,7 @@ enum ac_target_machine_options {
enum ac_float_mode {
AC_FLOAT_MODE_DEFAULT,
- AC_FLOAT_MODE_NO_SIGNED_ZEROS_FP_MATH,
+ AC_FLOAT_MODE_DEFAULT_OPENGL,
AC_FLOAT_MODE_DENORM_FLUSH_TO_ZERO,
};
diff --git a/src/gallium/drivers/radeonsi/si_shader_llvm.c b/src/gallium/drivers/radeonsi/si_shader_llvm.c
index d8bcb4ad55c..63c9c033ab4 100644
--- a/src/gallium/drivers/radeonsi/si_shader_llvm.c
+++ b/src/gallium/drivers/radeonsi/si_shader_llvm.c
@@ -134,7 +134,7 @@ void si_llvm_context_init(struct si_shader_context *ctx, struct si_screen *sscre
ctx->compiler = compiler;
ac_llvm_context_init(&ctx->ac, compiler, sscreen->info.chip_class, sscreen->info.family,
- AC_FLOAT_MODE_NO_SIGNED_ZEROS_FP_MATH, wave_size, 64);
+ AC_FLOAT_MODE_DEFAULT_OPENGL, wave_size, 64);
}
void si_llvm_create_func(struct si_shader_context *ctx, const char *name, LLVMTypeRef *return_types,
More information about the mesa-commit
mailing list