diff options
author | Jakub Kuderski <jakub@nod-labs.com> | 2023-11-24 15:24:45 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-11-24 15:24:45 -0500 |
commit | d625ea12c71813db0da4c2e5867e907da22e22f2 (patch) | |
tree | 7989c1aa5a3479d38bd3e8bb02e869c9fddf6234 /llvm/lib/Transforms/Utils/InlineFunction.cpp | |
parent | ddc6ef46418cc419041d0bd85de40d0eb9396848 (diff) | |
download | llvm-d625ea12c71813db0da4c2e5867e907da22e22f2.zip llvm-d625ea12c71813db0da4c2e5867e907da22e22f2.tar.gz llvm-d625ea12c71813db0da4c2e5867e907da22e22f2.tar.bz2 |
[mlir][spirv] Split codegen for float min/max reductions and others v2. [NFC] (#73363)
This is https://github.com/llvm/llvm-project/pull/69023 but with
cleanups.
Reduced complexity by avoiding CRTP and preprocessor defines in favor of
free functions
Original description by @unterumarmung:
---
This patch is part of a larger initiative aimed at fixing floating-point
`max` and `min` operations in MLIR:
https://discourse.llvm.org/t/rfc-fix-floating-point-max-and-min-operations-in-mlir/72671.
There are two types of min/max operations for floating-point numbers:
`minf`/`maxf` and `minimumf`/`maximumf`. The code generation for these
operations should differ from that of other vector reduction kinds. This
difference arises because CL and GL operations for floating-point min
and max do not have the same semantics when handling NaNs. Therefore, we
must enforce the desired semantics with additional ops.
~~However, since the code generation for floating-point min/max
operations shares the same functionality as extracting values for the
vector, we have decided to refactor the existing code using the CRTP
pattern.~~ This change does not alter the actual behavior of the code
and is necessary for future fixes to the codegen for floating-point
min/max operations.
---------
Co-authored-by: Daniil Dudkin <unterumarmung@yandex.ru>
Diffstat (limited to 'llvm/lib/Transforms/Utils/InlineFunction.cpp')
0 files changed, 0 insertions, 0 deletions