diff options
| author | Tim Northover <tnorthover@apple.com> | 2014-03-11 10:48:52 +0000 |
|---|---|---|
| committer | Tim Northover <tnorthover@apple.com> | 2014-03-11 10:48:52 +0000 |
| commit | e94a518a22db4b21f4a4a9e34173a11e9dfc5fcc (patch) | |
| tree | 054bf7c2cdd888931fdabadb91d82dbb78b05f2b /llvm/test/CodeGen/SystemZ/cmpxchg-04.ll | |
| parent | aab3cfe023752c32da984afb281d322d631ad298 (diff) | |
| download | bcm5719-llvm-e94a518a22db4b21f4a4a9e34173a11e9dfc5fcc.tar.gz bcm5719-llvm-e94a518a22db4b21f4a4a9e34173a11e9dfc5fcc.zip | |
IR: add a second ordering operand to cmpxhg for failure
The syntax for "cmpxchg" should now look something like:
cmpxchg i32* %addr, i32 42, i32 3 acquire monotonic
where the second ordering argument gives the required semantics in the case
that no exchange takes place. It should be no stronger than the first ordering
constraint and cannot be either "release" or "acq_rel" (since no store will
have taken place).
rdar://problem/15996804
llvm-svn: 203559
Diffstat (limited to 'llvm/test/CodeGen/SystemZ/cmpxchg-04.ll')
| -rw-r--r-- | llvm/test/CodeGen/SystemZ/cmpxchg-04.ll | 18 |
1 files changed, 9 insertions, 9 deletions
diff --git a/llvm/test/CodeGen/SystemZ/cmpxchg-04.ll b/llvm/test/CodeGen/SystemZ/cmpxchg-04.ll index f58868f04f2..069bad65144 100644 --- a/llvm/test/CodeGen/SystemZ/cmpxchg-04.ll +++ b/llvm/test/CodeGen/SystemZ/cmpxchg-04.ll @@ -7,7 +7,7 @@ define i64 @f1(i64 %cmp, i64 %swap, i64 *%src) { ; CHECK-LABEL: f1: ; CHECK: csg %r2, %r3, 0(%r4) ; CHECK: br %r14 - %val = cmpxchg i64 *%src, i64 %cmp, i64 %swap seq_cst + %val = cmpxchg i64 *%src, i64 %cmp, i64 %swap seq_cst seq_cst ret i64 %val } @@ -17,7 +17,7 @@ define i64 @f2(i64 %cmp, i64 %swap, i64 *%src) { ; CHECK: csg %r2, %r3, 524280(%r4) ; CHECK: br %r14 %ptr = getelementptr i64 *%src, i64 65535 - %val = cmpxchg i64 *%ptr, i64 %cmp, i64 %swap seq_cst + %val = cmpxchg i64 *%ptr, i64 %cmp, i64 %swap seq_cst seq_cst ret i64 %val } @@ -29,7 +29,7 @@ define i64 @f3(i64 %cmp, i64 %swap, i64 *%src) { ; CHECK: csg %r2, %r3, 0(%r4) ; CHECK: br %r14 %ptr = getelementptr i64 *%src, i64 65536 - %val = cmpxchg i64 *%ptr, i64 %cmp, i64 %swap seq_cst + %val = cmpxchg i64 *%ptr, i64 %cmp, i64 %swap seq_cst seq_cst ret i64 %val } @@ -39,7 +39,7 @@ define i64 @f4(i64 %cmp, i64 %swap, i64 *%src) { ; CHECK: csg %r2, %r3, -8(%r4) ; CHECK: br %r14 %ptr = getelementptr i64 *%src, i64 -1 - %val = cmpxchg i64 *%ptr, i64 %cmp, i64 %swap seq_cst + %val = cmpxchg i64 *%ptr, i64 %cmp, i64 %swap seq_cst seq_cst ret i64 %val } @@ -49,7 +49,7 @@ define i64 @f5(i64 %cmp, i64 %swap, i64 *%src) { ; CHECK: csg %r2, %r3, -524288(%r4) ; CHECK: br %r14 %ptr = getelementptr i64 *%src, i64 -65536 - %val = cmpxchg i64 *%ptr, i64 %cmp, i64 %swap seq_cst + %val = cmpxchg i64 *%ptr, i64 %cmp, i64 %swap seq_cst seq_cst ret i64 %val } @@ -61,7 +61,7 @@ define i64 @f6(i64 %cmp, i64 %swap, i64 *%src) { ; CHECK: csg %r2, %r3, 0(%r4) ; CHECK: br %r14 %ptr = getelementptr i64 *%src, i64 -65537 - %val = cmpxchg i64 *%ptr, i64 %cmp, i64 %swap seq_cst + %val = cmpxchg i64 *%ptr, i64 %cmp, i64 %swap seq_cst seq_cst ret i64 %val } @@ -73,7 +73,7 @@ define i64 @f7(i64 %cmp, i64 %swap, i64 %src, i64 %index) { ; CHECK: br %r14 %add1 = add i64 %src, %index %ptr = inttoptr i64 %add1 to i64 * - %val = cmpxchg i64 *%ptr, i64 %cmp, i64 %swap seq_cst + %val = cmpxchg i64 *%ptr, i64 %cmp, i64 %swap seq_cst seq_cst ret i64 %val } @@ -83,7 +83,7 @@ define i64 @f8(i64 %dummy, i64 %swap, i64 *%ptr) { ; CHECK: lghi %r2, 1001 ; CHECK: csg %r2, %r3, 0(%r4) ; CHECK: br %r14 - %val = cmpxchg i64 *%ptr, i64 1001, i64 %swap seq_cst + %val = cmpxchg i64 *%ptr, i64 1001, i64 %swap seq_cst seq_cst ret i64 %val } @@ -93,6 +93,6 @@ define i64 @f9(i64 %cmp, i64 *%ptr) { ; CHECK: lghi [[SWAP:%r[0-9]+]], 1002 ; CHECK: csg %r2, [[SWAP]], 0(%r3) ; CHECK: br %r14 - %val = cmpxchg i64 *%ptr, i64 %cmp, i64 1002 seq_cst + %val = cmpxchg i64 *%ptr, i64 %cmp, i64 1002 seq_cst seq_cst ret i64 %val } |

