diff options
author | ameerj <52414509+ameerj@users.noreply.github.com> | 2021-05-30 00:08:19 +0200 |
---|---|---|
committer | ameerj <52414509+ameerj@users.noreply.github.com> | 2021-07-23 03:51:36 +0200 |
commit | 3047eb66889a9782fadfbe479c33e6a8bfc5bf53 (patch) | |
tree | 9491643b07576e354844b39d5dffb321491aadf9 /src/shader_recompiler/backend/glsl/reg_alloc.cpp | |
parent | glsl: TLD4 implementation (diff) | |
download | yuzu-3047eb66889a9782fadfbe479c33e6a8bfc5bf53.tar yuzu-3047eb66889a9782fadfbe479c33e6a8bfc5bf53.tar.gz yuzu-3047eb66889a9782fadfbe479c33e6a8bfc5bf53.tar.bz2 yuzu-3047eb66889a9782fadfbe479c33e6a8bfc5bf53.tar.lz yuzu-3047eb66889a9782fadfbe479c33e6a8bfc5bf53.tar.xz yuzu-3047eb66889a9782fadfbe479c33e6a8bfc5bf53.tar.zst yuzu-3047eb66889a9782fadfbe479c33e6a8bfc5bf53.zip |
Diffstat (limited to 'src/shader_recompiler/backend/glsl/reg_alloc.cpp')
-rw-r--r-- | src/shader_recompiler/backend/glsl/reg_alloc.cpp | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/src/shader_recompiler/backend/glsl/reg_alloc.cpp b/src/shader_recompiler/backend/glsl/reg_alloc.cpp index ecb550095..b1de022d4 100644 --- a/src/shader_recompiler/backend/glsl/reg_alloc.cpp +++ b/src/shader_recompiler/backend/glsl/reg_alloc.cpp @@ -37,9 +37,14 @@ std::string FormatFloat(std::string_view value, IR::Type type) { return "uintBitsToFloat(0xff800000)"; } } - const bool needs_dot = value.find_first_of('.') == std::string_view::npos; - const bool needs_suffix = !value.ends_with('f'); - const auto suffix = type == IR::Type::F32 ? "f" : "lf"; + if (value.find_first_of('e') != std::string_view::npos) { + // scientific notation + const auto cast{type == IR::Type::F32 ? "float" : "double"}; + return fmt::format("{}({})", cast, value); + } + const bool needs_dot{value.find_first_of('.') == std::string_view::npos}; + const bool needs_suffix{!value.ends_with('f')}; + const auto suffix{type == IR::Type::F32 ? "f" : "lf"}; return fmt::format("{}{}{}", value, needs_dot ? "." : "", needs_suffix ? suffix : ""); } |