[all-commits] [llvm/llvm-project] a4b8a5: Implement operand bundles for floating-point opera...
Serge Pavlov via All-commits
all-commits at lists.llvm.org
Sun Dec 1 21:36:10 PST 2024
Branch: refs/heads/users/spavloff/floating-point-operator-bundles
Home: https://github.com/llvm/llvm-project
Commit: a4b8a547130b843c60c7af73160b4e949f4861e8
https://github.com/llvm/llvm-project/commit/a4b8a547130b843c60c7af73160b4e949f4861e8
Author: Serge Pavlov <sepavloff at gmail.com>
Date: 2024-12-02 (Mon, 02 Dec 2024)
Changed paths:
M clang/test/CodeGen/X86/strictfp_builtins.c
M clang/test/CodeGen/strictfp_builtins.c
M clang/test/CodeGenOpenCL/cl20-device-side-enqueue-attributes.cl
M llvm/docs/LangRef.rst
M llvm/include/llvm/ADT/FloatingPointMode.h
M llvm/include/llvm/IR/AutoUpgrade.h
M llvm/include/llvm/IR/FPEnv.h
M llvm/include/llvm/IR/IRBuilder.h
M llvm/include/llvm/IR/InstrTypes.h
M llvm/include/llvm/IR/IntrinsicInst.h
M llvm/include/llvm/IR/LLVMContext.h
M llvm/lib/AsmParser/LLParser.cpp
M llvm/lib/IR/AutoUpgrade.cpp
M llvm/lib/IR/IRBuilder.cpp
M llvm/lib/IR/Instructions.cpp
M llvm/lib/IR/IntrinsicInst.cpp
M llvm/lib/IR/LLVMContext.cpp
M llvm/lib/IR/Verifier.cpp
M llvm/lib/Transforms/Scalar/TailRecursionElimination.cpp
M llvm/lib/Transforms/Utils/CloneFunction.cpp
M llvm/test/Bitcode/operand-bundles-bc-analyzer.ll
M llvm/test/CodeGen/AMDGPU/amdgpu-simplify-libcall-pown.ll
Log Message:
-----------
Implement operand bundles for floating-point operations
Currently floating-point operations in general form (beyond the default
mode) are always represented by calls to constrained intrinsics. In
addition to the side effect, they carry additional information in the
form of metadata arguments. This scheme is not efficient in the case of
intrinsic function calls, as was noted in
https://discourse.llvm.org/t/thought-on-strictfp-support/71453, because
it requires defining a separate intrinsic for the same operation but
used in non-default FP environment. The solution proposed in the
discussion was "to move the complexity about the environment tracking
from the intrinsics themselves to the call instruction".
The way implemented in this change is to use operand bundles
(https://llvm.org/docs/LangRef.html#operand-bundles). This way was tried
previously (https://reviews.llvm.org/D93455), but was not finished.
This change does not add any new functionality, it only adds the new way
of keeping FP related information in LLVM IR. Metadata arguments of
constrained functions are preserved, but they are not used in the
queries like `getRoundingMode` or `getExceptionBehavior`.
Commit: 2b2af2bde63a38759bc714aff9cf306f72d09fb7
https://github.com/llvm/llvm-project/commit/2b2af2bde63a38759bc714aff9cf306f72d09fb7
Author: Serge Pavlov <sepavloff at gmail.com>
Date: 2024-12-02 (Mon, 02 Dec 2024)
Changed paths:
M clang/test/CodeGen/strictfp_builtins.c
M clang/test/CodeGenOpenCL/cl20-device-side-enqueue-attributes.cl
M llvm/docs/LangRef.rst
M llvm/include/llvm/ADT/FloatingPointMode.h
M llvm/include/llvm/AsmParser/LLParser.h
M llvm/include/llvm/IR/FPEnv.h
M llvm/include/llvm/IR/IRBuilder.h
M llvm/include/llvm/IR/InstrTypes.h
M llvm/include/llvm/IR/IntrinsicInst.h
M llvm/include/llvm/IR/LLVMContext.h
M llvm/lib/AsmParser/LLParser.cpp
M llvm/lib/Bitcode/Reader/BitcodeReader.cpp
M llvm/lib/IR/AutoUpgrade.cpp
M llvm/lib/IR/FPEnv.cpp
M llvm/lib/IR/IRBuilder.cpp
M llvm/lib/IR/Instructions.cpp
M llvm/lib/IR/IntrinsicInst.cpp
M llvm/lib/IR/LLVMContext.cpp
M llvm/lib/IR/Verifier.cpp
M llvm/lib/Transforms/Scalar/TailRecursionElimination.cpp
M llvm/lib/Transforms/Utils/CloneFunction.cpp
A llvm/test/Bitcode/auto-upgrade-constrained.ll
A llvm/test/Bitcode/auto-upgrade-constrained.ll.bc
M llvm/test/CodeGen/AMDGPU/amdgpu-simplify-libcall-pown.ll
M llvm/test/Transforms/Attributor/nofpclass.ll
M llvm/test/Transforms/Inline/inline-strictfp.ll
M llvm/test/Verifier/fp-intrinsics.ll
Log Message:
-----------
Use metadata for bundle values
Commit: da73eadf9bda8f8d34d28feea9d910b769e63f67
https://github.com/llvm/llvm-project/commit/da73eadf9bda8f8d34d28feea9d910b769e63f67
Author: Serge Pavlov <sepavloff at gmail.com>
Date: 2024-12-02 (Mon, 02 Dec 2024)
Changed paths:
M llvm/test/Transforms/EarlyCSE/defaultfp-strictfp.ll
M llvm/test/Transforms/EarlyCSE/ebstrict-strictfp.ll
M llvm/test/Transforms/EarlyCSE/mixed-strictfp.ll
M llvm/test/Transforms/EarlyCSE/nonmixed-strictfp.ll
M llvm/test/Transforms/EarlyCSE/round-dyn-strictfp.ll
M llvm/test/Transforms/EarlyCSE/tfpropagation.ll
Log Message:
-----------
Update tests in Transforms/EarlyCSE
Commit: 868660b970ac1a6af74e418e75097e05759350e2
https://github.com/llvm/llvm-project/commit/868660b970ac1a6af74e418e75097e05759350e2
Author: Serge Pavlov <sepavloff at gmail.com>
Date: 2024-12-02 (Mon, 02 Dec 2024)
Changed paths:
M llvm/docs/LangRef.rst
M llvm/include/llvm/IR/AutoUpgrade.h
M llvm/lib/IR/AutoUpgrade.cpp
M llvm/lib/Transforms/Utils/CloneFunction.cpp
Log Message:
-----------
Small changes: docs, clang-format, revievers' notes
- Fix Doxygen error,
- Fix clang-format error,
- remove unused function declaration,
- remove setting MD_fpmath, it is made by copyMetadata.
Compare: https://github.com/llvm/llvm-project/compare/a4b8a547130b%5E...868660b970ac
To unsubscribe from these emails, change your notification settings at https://github.com/llvm/llvm-project/settings/notifications
More information about the All-commits
mailing list