blob: 81c828485e611a4e1adc49de0b0687d5b01d24c4 [file] [log] [blame]
Eli Friedman069e2ed2011-08-26 02:59:24 +00001; RUN: llc < %s -mtriple=armv7-apple-ios | 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}