On Tue, Dec 1, 2020 at 6:26 AM Krunal Bauskar <krunalbauskar@gmail.com> wrote: > On Tue, 1 Dec 2020 at 02:31, Alexander Korotkov <aekorotkov@gmail.com> wrote: >> BTW, how do you get that required gcc version is 9.4? I've managed to >> use LSE with gcc 9.3. > > Did they backported it to 9.3? > I am just looking at the gcc guide. > https://gcc.gnu.org/gcc-9/changes.html > > GCC 9.4 > > Target Specific Changes > > AArch64 > > The option -moutline-atomics has been added to aid deployment of the Large System Extensions (LSE)
No, you've misread this release notes item. This item relates to a new option for LSE support. See the rest of the description.
Some confusion here.
What I meant was outline-atomics support was added in GCC-9.4 and was made default in gcc-10.
LSE support is present for quite some time.
In one of my up-thread reply I mentioned about the outline atomic that would help us enable lse if underline architecture support it.
<snippet from reply>
2. As you pointed out LSE is enabled starting only with arm-v8.1 but not all aarch64 tag machines are arm-v8.1 compatible.
This means we would need a separate package or a more optimal way would be to compile pgsql with gcc-9.4 (or gcc-10.x (default)) with
-moutline-atomics that would emit both traditional and lse code and flow would dynamically select depending on the target machine
Problem with this approach is it would need gcc-9.4+ (I also ready gcc-9.3.1 would do) or gcc10.x but most of the distro doesn't support it so user using old compiler especially
default one shipped with OS would not be able to take advantage of this.
"When the option is specified code is emitted to detect the presence of LSE instructions at runtime and use them for standard atomic operations. For more information please refer to the documentation."
LSE support itself was introduced in gcc 6. https://gcc.gnu.org/gcc-6/changes.html * The ARMv8.1-A architecture and the Large System Extensions are now supported. They can be used by specifying the -march=armv8.1-a option. Additionally, the +lse option extension can be used in a similar fashion to other option extensions. The Large System Extensions introduce new instructions that are used in the implementation of atomic operations.
But, -moutline-atomics looks very interesting itself. I think we should add this option to our arm64 packages if we haven't already.