[SPIR] Set MaxAtomicInlineWidth minimum size to 32 for spir32 and 64 for spir64 (#148997)
Set MaxAtomicInlineWidth the same way as SPIR-V targets in 3cfd0c0d3697. This PR fixes build warning in scoped atomic built-in in #146814: `warning: large atomic operation may incur significant performance penalty; ; the access size (2 bytes) exceeds the max lock-free size (0 bytes) [-Watomic-alignment]`
This commit is contained in:
parent
0692572e04
commit
b41398294c
@ -264,6 +264,9 @@ public:
|
||||
PointerWidth = PointerAlign = 32;
|
||||
SizeType = TargetInfo::UnsignedInt;
|
||||
PtrDiffType = IntPtrType = TargetInfo::SignedInt;
|
||||
// SPIR32 has support for atomic ops if atomic extension is enabled.
|
||||
// Take the maximum because it's possible the Host supports wider types.
|
||||
MaxAtomicInlineWidth = std::max<unsigned char>(MaxAtomicInlineWidth, 32);
|
||||
resetDataLayout("e-p:32:32-i64:64-v16:16-v24:32-v32:32-v48:64-"
|
||||
"v96:128-v192:256-v256:256-v512:512-v1024:1024-G1");
|
||||
}
|
||||
@ -281,6 +284,9 @@ public:
|
||||
PointerWidth = PointerAlign = 64;
|
||||
SizeType = TargetInfo::UnsignedLong;
|
||||
PtrDiffType = IntPtrType = TargetInfo::SignedLong;
|
||||
// SPIR64 has support for atomic ops if atomic extension is enabled.
|
||||
// Take the maximum because it's possible the Host supports wider types.
|
||||
MaxAtomicInlineWidth = std::max<unsigned char>(MaxAtomicInlineWidth, 64);
|
||||
resetDataLayout("e-i64:64-v16:16-v24:32-v32:32-v48:64-"
|
||||
"v96:128-v192:256-v256:256-v512:512-v1024:1024-G1");
|
||||
}
|
||||
|
||||
18
clang/test/CodeGenOpenCL/scoped-atomic.cl
Normal file
18
clang/test/CodeGenOpenCL/scoped-atomic.cl
Normal file
@ -0,0 +1,18 @@
|
||||
// RUN: %clang_cc1 %s -cl-std=CL2.0 -emit-llvm -o - -triple spir-unknown-unknown -verify
|
||||
// RUN: %clang_cc1 %s -cl-std=CL2.0 -emit-llvm -o - -triple spir64-unknown-unknown -verify
|
||||
|
||||
// expected-no-diagnostics
|
||||
|
||||
int fi1a(int *i) {
|
||||
int v;
|
||||
__scoped_atomic_load(i, &v, __ATOMIC_RELAXED, __MEMORY_SCOPE_DEVICE);
|
||||
return v;
|
||||
}
|
||||
|
||||
#ifdef __SPIR64__
|
||||
long fl1a(long *i) {
|
||||
long v;
|
||||
__scoped_atomic_load(i, &v, __ATOMIC_RELAXED, __MEMORY_SCOPE_DEVICE);
|
||||
return v;
|
||||
}
|
||||
#endif
|
||||
Loading…
x
Reference in New Issue
Block a user