diff options
author | Philip Reames <listmail@philipreames.com> | 2016-04-21 17:59:40 +0000 |
---|---|---|
committer | Philip Reames <listmail@philipreames.com> | 2016-04-21 17:59:40 +0000 |
commit | a98c7ead306647142fd954f64cc9d5184a17fd28 (patch) | |
tree | 7208b37e63022d288cc4002929c649b1ee4c33da /llvm/test | |
parent | f0f279291c7ca1a0b2c125f53cd08deafcc9e44f (diff) | |
download | bcm5719-llvm-a98c7ead306647142fd954f64cc9d5184a17fd28.tar.gz bcm5719-llvm-a98c7ead306647142fd954f64cc9d5184a17fd28.zip |
[instcombine][unordered] Extend load(select) transform to handle unordered loads
llvm-svn: 267023
Diffstat (limited to 'llvm/test')
-rw-r--r-- | llvm/test/Transforms/InstCombine/atomic.ll | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/llvm/test/Transforms/InstCombine/atomic.ll b/llvm/test/Transforms/InstCombine/atomic.ll index 1d24248e73e..ac698c8425e 100644 --- a/llvm/test/Transforms/InstCombine/atomic.ll +++ b/llvm/test/Transforms/InstCombine/atomic.ll @@ -143,4 +143,32 @@ define i32 @test14() { ret i32 0 } +@a = external global i32 +@b = external global i32 + +define i32 @test15(i1 %cnd) { +; CHECK-LABEL: define i32 @test15( +; CHECK: load atomic i32, i32* @a unordered, align 4 +; CHECK: load atomic i32, i32* @b unordered, align 4 + %addr = select i1 %cnd, i32* @a, i32* @b + %x = load atomic i32, i32* %addr unordered, align 4 + ret i32 %x +} +; FIXME: This would be legal to transform +define i32 @test16(i1 %cnd) { +; CHECK-LABEL: define i32 @test16( +; CHECK: load atomic i32, i32* %addr monotonic, align 4 + %addr = select i1 %cnd, i32* @a, i32* @b + %x = load atomic i32, i32* %addr monotonic, align 4 + ret i32 %x +} + +; FIXME: This would be legal to transform +define i32 @test17(i1 %cnd) { +; CHECK-LABEL: define i32 @test17( +; CHECK: load atomic i32, i32* %addr seq_cst, align 4 + %addr = select i1 %cnd, i32* @a, i32* @b + %x = load atomic i32, i32* %addr seq_cst, align 4 + ret i32 %x +} |