- User Since
- Feb 6 2020, 9:58 AM (131 w, 13 m)
Thu, Jul 14
Jun 20 2022
Commited in af6d2a0b6825e71965f3e2701a63c239fa0ad70f
Jun 18 2022
Addressing comments, stylistic corrections.
Jun 15 2022
Thank you for fair concern, "target_clones" for AArch64 has different format, semantic, e.g. "default" is not required. Therefore it diverges with X86 in these parts. "target" attribute has been already used and supported on AArch64 in a different sense, like target("arm"), target("dotprod"), target("branch-protection=bti"). The intention of creating new "target_version" attribute is not to overlap with that. It also has different format, mangling and semantic, e.g. treating function without attribute as "default", and option to disable attribute droping function multi versions. Do these explanations dispel your concern?
Jun 14 2022
May 17 2022
I think it looks reasonable to define 5th memory model, add barriers __sync_* builtins and to outline-atomics calls as well.
Apr 19 2021
Apr 13 2021
Just a friendly ping. Jessica @paquette, do you have any further suggestions?
Mar 24 2021
Doxygen & comments update.
Mar 17 2021
Work on comments.
Mar 15 2021
Mar 12 2021
Mar 1 2021
Tim, thank you for review, noticed typos and overall support to outline atomics patches!
Notes pushed rG98f06b16a313ece593f5711778d7da9037f3a2ef
Feb 25 2021
Feb 8 2021
@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.
Feb 5 2021
LGTM, thank you for quick fix!
Jan 29 2021
Tests for "-m[no]outline-atomics" options added.
Jan 28 2021
Yes, I missed it, thanks for fix!
Jan 27 2021
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