[llvm] [SPIRV] Preserve FP types in atomic load/store instead of casting to integer (PR #194583)
Viktoria Maximova via llvm-commits
llvm-commits at lists.llvm.org
Tue Apr 28 07:27:06 PDT 2026
================
@@ -685,3 +685,18 @@ SPIRVTargetLowering::shouldCastAtomicRMWIInIR(AtomicRMWInst *RMWI) const {
// SPIR-V only supports atomic exchange for integer and floating-point types.
return AtomicExpansionKind::None;
}
+
+TargetLowering::AtomicExpansionKind
+SPIRVTargetLowering::shouldCastAtomicLoadInIR(LoadInst *LI) const {
+ // TODO: pointer load should return CastToInteger, but
+ // convertAtomicLoadToIntegerType uses BitCast which asserts on pointer types.
+ return AtomicExpansionKind::None;
+}
+
+TargetLowering::AtomicExpansionKind
+SPIRVTargetLowering::shouldCastAtomicStoreInIR(StoreInst *SI) const {
+ // TODO: pointer store should return CastToInteger, but
+ // convertAtomicStoreToIntegerType uses BitCast which asserts on pointer
+ // types.
+ return AtomicExpansionKind::None;
+}
----------------
vmaksimo wrote:
Without overloads we get unneeded cast to integer, while SPIR-V supports atomic load/store directly on float types.
The changes in transcoding tests show this better I think
https://github.com/llvm/llvm-project/pull/194583
More information about the llvm-commits
mailing list