- User Since
- Feb 6 2020, 9:58 AM (54 w, 6 d)
Mon, Feb 8
@tambre , as a fallback, is it possible to disable building LSE atomics via a cmake option? I tried COMPILER_RT_HAS_ASM_LSE=OFF, but it didn't work.
There is no such option, as clang outline atomics (enabled by default for Linux so far with intend to extend it for other targets) are rely on compiler-rt support as well.
I would recommend to backport this workaround if statement separator for MSVC takes long.
Fri, Feb 5
LGTM, thank you for quick fix!
Fri, Jan 29
Tests for "-m[no]outline-atomics" options added.
Thu, Jan 28
Yes, I missed it, thanks for fix!
Wed, Jan 27
Clang driver tests for outline atomics were added.
Jan 25 2021
@t.p.northover sorry for pinging you, do you have any concerns about latest patch? It enables outline atomics by default on Aarch64/Linux/Clang with libraries check. I am hoping to get this in before LLVM 12 branch.
Jan 20 2021
Jan 13 2021
Jan 9 2021
RT library detection and check for outline atomics support added to the driver.
Jan 6 2021
You said Android is planning to adopt this. Do you know how? I thought they had their own libc; does it also implement getauxval, or do they have a separate compiler-rt, or something entirely different?
Android uses compiler-rt and has getauxval support: https://android.googlesource.com/platform/bionic/+/master/libc/bionic/getauxval.cpp
There would need to be more checks in the CompilerRT case because most platforms won't benefit. There's already Clang logic to discover GCC installations (search for GCCInstallationDetector); I hope you'll be able to use that instead of trying to redo it.
Thanks for the tip, I'll try to utilize it.
Dec 22 2020
I think this ought to be a Clang patch that detects which platform and libgcc it's targeting before adding the attribute.
Do you mean implementing in Clang Driver something like
Dec 20 2020
Outline atomics were added with gcc 9.3.1 and turned on by default in gcc 10.1. Consequently most of distributions had libgcc with outline atomics already.
Besides Linux, Android will utilize them as well. Don't know about iOs and MacOs, I guess they are compiling with LSE enabled, so outline atomics should not affect them.
As for benchmarks, I rely on investigations completed during gcc outline atomics enablement work.
Choice of solution ../gcc/libgcc/config/aarch64/lse.S:
Dec 19 2020
Dec 16 2020
Thanks for fixing this.
Dec 15 2020
lse.S syntax fixed, compiler-rt with outline atomics should be built fine. If there are no any other issues can we abandon this patch?
Dec 14 2020
It'd be great if you could figure out a way to have the macro expand in a way that doesn't hit the assembly parser bug.
Newline for .cfi_startproc https://reviews.llvm.org/D93236
I guess because of patch https://reviews.llvm.org/D92836 removing outline atomics for Apple.
Anyway it would be great to have Apple syntax fix landed, thank you for help.
Dec 13 2020
Thanks for fix, creating symlinks is more elegant and firm solution indeed.
Dec 8 2020
lse.S syntax could be fixed: https://reviews.llvm.org/D92530
The question is, should outline atomics be in compiler-rt for iOS and ARM-based macOS?
Dec 6 2020
Dec 5 2020
Dec 3 2020
Dec 2 2020
Nov 26 2020
Thank you, does anyone have any more concerns? Could you accept revision?
Nov 25 2020
Correct getauxval check.
Nov 23 2020
Comments were taken into account.
Nov 20 2020
Nov 19 2020
LCALL4 removed in TargetLoweringBase.
Have you got any further comments?
Nov 17 2020
Nov 11 2020
Work on comments has been done.
Need to resolve license issue first.
Nov 10 2020
Jul 16 2020
The patch landed b9a6fb64281b6836e565ee39fb0d543bf184fd88
Jul 15 2020
vbit/vbif encoding tests added.
Jul 14 2020
Jul 13 2020
Apr 27 2020
Apr 23 2020
Apr 22 2020
Patterns corrected to comply with encoding 4eca1c06a4a9183fcf7bb230d894617caf3cf3be
Apr 21 2020
v2f32 pattern removed, test added.
Apr 20 2020
Patterns corrected, vector_extract tests added.
Apr 18 2020
Apr 17 2020
More patterns added.
Apr 15 2020
Feb 15 2020
Fixed in dc0b8159890134a59fdf34b20e8b2052d9456441. All AArch64 expensive check tests passed.
Feb 14 2020
Obsolete patterns removed, schedulers patched.
Feb 13 2020
Feb 12 2020
Diff amended in accordance with comments.
Feb 7 2020
More diff context added