blob: 72f19a4d274f7139cf6eca201eb46b6b2136160c [file] [log] [blame]
Eli Friedman981a0102011-09-07 02:23:42 +00001; RUN: llc < %s -mtriple=armv7-apple-ios -verify-machineinstrs | FileCheck %s -check-prefix=ARM
Eli Friedman4136d232011-09-02 22:33:24 +00002; RUN: llc < %s -mtriple=armv7-apple-ios -O0 | FileCheck %s -check-prefix=ARM
Eli Friedman069e2ed2011-08-26 02:59:24 +00003; RUN: llc < %s -mtriple=thumbv7-apple-ios | FileCheck %s -check-prefix=THUMBTWO
4; RUN: llc < %s -mtriple=thumbv6-apple-ios | FileCheck %s -check-prefix=THUMBONE
5
6define void @test1(i32* %ptr, i32 %val1) {
7; ARM: test1
8; ARM: dmb ish
9; ARM-NEXT: str
10; ARM-NEXT: dmb ish
11; THUMBONE: test1
12; THUMBONE: __sync_lock_test_and_set_4
13; THUMBTWO: test1
14; THUMBTWO: dmb ish
15; THUMBTWO-NEXT: str
16; THUMBTWO-NEXT: dmb ish
17 store atomic i32 %val1, i32* %ptr seq_cst, align 4
18 ret void
19}
20
21define i32 @test2(i32* %ptr) {
22; ARM: test2
23; ARM: ldr
24; ARM-NEXT: dmb ish
25; THUMBONE: test2
26; THUMBONE: __sync_val_compare_and_swap_4
27; THUMBTWO: test2
28; THUMBTWO: ldr
29; THUMBTWO-NEXT: dmb ish
30 %val = load atomic i32* %ptr seq_cst, align 4
31 ret i32 %val
32}
Eli Friedman331120b2011-09-15 21:20:49 +000033
34define void @test3(i8* %ptr1, i8* %ptr2) {
35; ARM: test3
36; ARM: ldrb
37; ARM: strb
38 %val = load atomic i8* %ptr1 unordered, align 1
39 store atomic i8 %val, i8* %ptr2 unordered, align 1
40 ret void
41}