diff options
author | Jonathan Thackray <jonathan.thackray@arm.com> | 2025-04-28 15:31:44 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2025-04-28 15:31:44 +0100 |
commit | ba420d8122239592a1fb7ad6efd2c186aecfdef5 (patch) | |
tree | 63d284fce5e13f56135319bc06581d4ceced82d7 /llvm/lib/Bitcode/Writer/BitcodeWriter.cpp | |
parent | 064f9d03f23597495953f080d9aee415b0aab2e7 (diff) | |
download | llvm-ba420d8122239592a1fb7ad6efd2c186aecfdef5.zip llvm-ba420d8122239592a1fb7ad6efd2c186aecfdef5.tar.gz llvm-ba420d8122239592a1fb7ad6efd2c186aecfdef5.tar.bz2 |
[llvm] Add support for llvm IR atomicrmw fminimum/fmaximum instructions (#136759)
This patch adds support for LLVM IR atomicrmw `fmaximum` and `fminimum`
instructions.
These mirror the `llvm.maximum.*` and `llvm.minimum.*` instructions, but
are atomic and use IEEE754 2019 handling for NaNs, which is different to
`fmax` and `fmin`. See:
https://llvm.org/docs/LangRef.html#llvm-minimum-intrinsic
for more details.
Future changes will allow this LLVM IR to be lowered to specialised
assembler instructions on suitable targets, such as AArch64.
Diffstat (limited to 'llvm/lib/Bitcode/Writer/BitcodeWriter.cpp')
-rw-r--r-- | llvm/lib/Bitcode/Writer/BitcodeWriter.cpp | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/llvm/lib/Bitcode/Writer/BitcodeWriter.cpp b/llvm/lib/Bitcode/Writer/BitcodeWriter.cpp index 73bed85c..0893cf7 100644 --- a/llvm/lib/Bitcode/Writer/BitcodeWriter.cpp +++ b/llvm/lib/Bitcode/Writer/BitcodeWriter.cpp @@ -678,6 +678,10 @@ static unsigned getEncodedRMWOperation(AtomicRMWInst::BinOp Op) { case AtomicRMWInst::FSub: return bitc::RMW_FSUB; case AtomicRMWInst::FMax: return bitc::RMW_FMAX; case AtomicRMWInst::FMin: return bitc::RMW_FMIN; + case AtomicRMWInst::FMaximum: + return bitc::RMW_FMAXIMUM; + case AtomicRMWInst::FMinimum: + return bitc::RMW_FMINIMUM; case AtomicRMWInst::UIncWrap: return bitc::RMW_UINC_WRAP; case AtomicRMWInst::UDecWrap: |