No, vld/vst can't guaranteed to be atomic in this condition. Seems we
can't implement this on LoongArch for now.
On 2023/7/5 20:57, Xi Ruoyao wrote:
A question: is vld/vst guaranteed to be atomic if the accessed address
is aligned? If true we can use them to implement lock-free 128-bit
atomic load and store. See https://gcc.gnu.org/bugzilla/PR104688 for
the background, and some people really hate using a lock for atomics.
On Fri, 2023-06-30 at 10:16 +0800, Chenghui Pan wrote:
These patches add the Loongson SX/ASX instruction support to the
LoongArch
target, and can be utilized by using the new "-mlsx" and
"-mlasx" option.
Patches are bootstrapped and tested on loongarch64-linux-gnu target.
Lulu Cheng (6):
LoongArch: Added Loongson SX vector directive compilation framework.
LoongArch: Added Loongson SX base instruction support.
LoongArch: Added Loongson SX directive builtin function support.
LoongArch: Added Loongson ASX vector directive compilation
framework.
LoongArch: Added Loongson ASX base instruction support.
LoongArch: Added Loongson ASX directive builtin function support.
gcc/config.gcc | 2 +-
gcc/config/loongarch/constraints.md | 128 +-
.../loongarch/genopts/loongarch-strings | 4 +
gcc/config/loongarch/genopts/loongarch.opt.in | 16 +-
gcc/config/loongarch/lasx.md | 5147 ++++++++++++++++
gcc/config/loongarch/lasxintrin.h | 5342
+++++++++++++++++
gcc/config/loongarch/loongarch-builtins.cc | 2686 ++++++++-
gcc/config/loongarch/loongarch-c.cc | 18 +
gcc/config/loongarch/loongarch-def.c | 6 +
gcc/config/loongarch/loongarch-def.h | 9 +-
gcc/config/loongarch/loongarch-driver.cc | 10 +
gcc/config/loongarch/loongarch-driver.h | 2 +
gcc/config/loongarch/loongarch-ftypes.def | 666 +-
gcc/config/loongarch/loongarch-modes.def | 39 +
gcc/config/loongarch/loongarch-opts.cc | 89 +-
gcc/config/loongarch/loongarch-opts.h | 3 +
gcc/config/loongarch/loongarch-protos.h | 35 +
gcc/config/loongarch/loongarch-str.h | 3 +
gcc/config/loongarch/loongarch.cc | 4615 +++++++++++++-
gcc/config/loongarch/loongarch.h | 117 +-
gcc/config/loongarch/loongarch.md | 56 +-
gcc/config/loongarch/loongarch.opt | 16 +-
gcc/config/loongarch/lsx.md | 4490 ++++++++++++++
gcc/config/loongarch/lsxintrin.h | 5181 ++++++++++++++++
gcc/config/loongarch/predicates.md | 333 +-
25 files changed, 28723 insertions(+), 290 deletions(-)
create mode 100644 gcc/config/loongarch/lasx.md
create mode 100644 gcc/config/loongarch/lasxintrin.h
create mode 100644 gcc/config/loongarch/lsx.md
create mode 100644 gcc/config/loongarch/lsxintrin.h