llvm-6502/test
Robin Morisset 2b1874cbd4 [Power] Improve the expansion of atomic loads/stores
Summary:
Atomic loads and store of up to the native size (32 bits, or 64 for PPC64)
can be lowered to a simple load or store instruction (as the synchronization
is already handled by AtomicExpand, and the atomicity is guaranteed thanks to
the alignment requirements of atomic accesses). This is exactly what this patch
does. Previously, these were implemented by complex
load-linked/store-conditional loops.. an obvious performance problem.

For example, this patch turns
```
define void @store_i8_unordered(i8* %mem) {
  store atomic i8 42, i8* %mem unordered, align 1
  ret void
}
```
from
```
_store_i8_unordered:                    ; @store_i8_unordered
; BB#0:
    rlwinm r2, r3, 3, 27, 28
    li r4, 42
    xori r5, r2, 24
    rlwinm r2, r3, 0, 0, 29
    li r3, 255
    slw r4, r4, r5
    slw r3, r3, r5
    and r4, r4, r3
LBB4_1:                                 ; =>This Inner Loop Header: Depth=1
    lwarx r5, 0, r2
    andc r5, r5, r3
    or r5, r4, r5
    stwcx. r5, 0, r2
    bne cr0, LBB4_1
; BB#2:
    blr
```
into
```
_store_i8_unordered:                    ; @store_i8_unordered
; BB#0:
    li r2, 42
    stb r2, 0(r3)
    blr

```
which looks like a pretty clear win to me.

Test Plan:
fixed the tests + new test for indexed accesses + make check-all

Reviewers: jfb, wschmidt, hfinkel

Subscribers: llvm-commits

Differential Revision: http://reviews.llvm.org/D5587

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@218922 91177308-0d34-0410-b5e6-96231b3b80d8
2014-10-02 22:27:07 +00:00
..
Analysis Move the complex address expression out of DIVariable and into an extra 2014-10-01 18:55:02 +00:00
Assembler Revert "DI: Fold constant arguments into a single MDString" 2014-10-02 22:15:31 +00:00
Bindings Revert "DI: Fold constant arguments into a single MDString" 2014-10-02 22:15:31 +00:00
Bitcode Revert "DI: Fold constant arguments into a single MDString" 2014-10-02 22:15:31 +00:00
BugPoint Revert "DI: Fold constant arguments into a single MDString" 2014-10-02 22:15:31 +00:00
CodeGen [Power] Improve the expansion of atomic loads/stores 2014-10-02 22:27:07 +00:00
DebugInfo Revert "DI: Fold constant arguments into a single MDString" 2014-10-02 22:15:31 +00:00
ExecutionEngine
Feature Revert "DI: Fold constant arguments into a single MDString" 2014-10-02 22:15:31 +00:00
FileCheck
Instrumentation Revert "DI: Fold constant arguments into a single MDString" 2014-10-02 22:15:31 +00:00
Integer
JitListener Revert "DI: Fold constant arguments into a single MDString" 2014-10-02 22:15:31 +00:00
Linker Revert "DI: Fold constant arguments into a single MDString" 2014-10-02 22:15:31 +00:00
LTO LTO: Add missing target triple from r218784 2014-10-01 18:49:58 +00:00
MC Revert "DI: Fold constant arguments into a single MDString" 2014-10-02 22:15:31 +00:00
Object
Other
TableGen [AVX512] Added intrinsics for VPCMPEQB and VPCMPEQW. 2014-09-30 11:32:22 +00:00
tools llvm-readobj: print COFF imported symbols 2014-10-02 22:05:29 +00:00
Transforms Revert "DI: Fold constant arguments into a single MDString" 2014-10-02 22:15:31 +00:00
Unit
Verifier
YAMLParser
.clang-format
CMakeLists.txt
lit.cfg pass environment when invoking llvm-config from lit.cfg 2014-09-24 18:37:48 +00:00
lit.site.cfg.in
Makefile
Makefile.tests
TestRunner.sh