1- ; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
1+ ; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --check-globals
22; RUN: opt -codegen-opt-level=1 -S -mtriple=aarch64-- -passes=atomic-expand %s | FileCheck %s
33; RUN: opt -codegen-opt-level=1 -S -mtriple=aarch64-- -mattr=+outline-atomics -passes=atomic-expand %s | FileCheck %s --check-prefix=OUTLINE-ATOMICS
44
5- define void @atomic_swap_f16 (ptr %ptr , half %val ) nounwind {
5+ define void @atomic_swap_f16 (ptr %ptr , half %val ) !prof !0 {
66; CHECK-LABEL: @atomic_swap_f16(
77; CHECK-NEXT: [[TMP1:%.*]] = bitcast half [[VAL:%.*]] to i16
88; CHECK-NEXT: br label [[ATOMICRMW_START:%.*]]
@@ -12,7 +12,7 @@ define void @atomic_swap_f16(ptr %ptr, half %val) nounwind {
1212; CHECK-NEXT: [[TMP4:%.*]] = zext i16 [[TMP1]] to i64
1313; CHECK-NEXT: [[TMP5:%.*]] = call i32 @llvm.aarch64.stxr.p0(i64 [[TMP4]], ptr elementtype(i16) [[PTR]])
1414; CHECK-NEXT: [[TRYAGAIN:%.*]] = icmp ne i32 [[TMP5]], 0
15- ; CHECK-NEXT: br i1 [[TRYAGAIN]], label [[ATOMICRMW_START]], label [[ATOMICRMW_END:%.*]]
15+ ; CHECK-NEXT: br i1 [[TRYAGAIN]], label [[ATOMICRMW_START]], label [[ATOMICRMW_END:%.*]], !prof [[PROF1:![0-9]+]]
1616; CHECK: atomicrmw.end:
1717; CHECK-NEXT: [[TMP6:%.*]] = bitcast i16 [[TMP3]] to half
1818; CHECK-NEXT: ret void
@@ -27,7 +27,7 @@ define void @atomic_swap_f16(ptr %ptr, half %val) nounwind {
2727 ret void
2828}
2929
30- define void @atomic_swap_f32 (ptr %ptr , float %val ) nounwind {
30+ define void @atomic_swap_f32 (ptr %ptr , float %val ) nounwind !prof !0 {
3131; CHECK-LABEL: @atomic_swap_f32(
3232; CHECK-NEXT: [[TMP1:%.*]] = bitcast float [[VAL:%.*]] to i32
3333; CHECK-NEXT: br label [[ATOMICRMW_START:%.*]]
@@ -37,7 +37,7 @@ define void @atomic_swap_f32(ptr %ptr, float %val) nounwind {
3737; CHECK-NEXT: [[TMP4:%.*]] = zext i32 [[TMP1]] to i64
3838; CHECK-NEXT: [[TMP5:%.*]] = call i32 @llvm.aarch64.stxr.p0(i64 [[TMP4]], ptr elementtype(i32) [[PTR]])
3939; CHECK-NEXT: [[TRYAGAIN:%.*]] = icmp ne i32 [[TMP5]], 0
40- ; CHECK-NEXT: br i1 [[TRYAGAIN]], label [[ATOMICRMW_START]], label [[ATOMICRMW_END:%.*]]
40+ ; CHECK-NEXT: br i1 [[TRYAGAIN]], label [[ATOMICRMW_START]], label [[ATOMICRMW_END:%.*]], !prof [[PROF1]]
4141; CHECK: atomicrmw.end:
4242; CHECK-NEXT: [[TMP6:%.*]] = bitcast i32 [[TMP3]] to float
4343; CHECK-NEXT: ret void
@@ -52,15 +52,15 @@ define void @atomic_swap_f32(ptr %ptr, float %val) nounwind {
5252 ret void
5353}
5454
55- define void @atomic_swap_f64 (ptr %ptr , double %val ) nounwind {
55+ define void @atomic_swap_f64 (ptr %ptr , double %val ) nounwind !prof !0 {
5656; CHECK-LABEL: @atomic_swap_f64(
5757; CHECK-NEXT: [[TMP1:%.*]] = bitcast double [[VAL:%.*]] to i64
5858; CHECK-NEXT: br label [[ATOMICRMW_START:%.*]]
5959; CHECK: atomicrmw.start:
6060; CHECK-NEXT: [[TMP2:%.*]] = call i64 @llvm.aarch64.ldaxr.p0(ptr elementtype(i64) [[PTR:%.*]])
6161; CHECK-NEXT: [[TMP3:%.*]] = call i32 @llvm.aarch64.stxr.p0(i64 [[TMP1]], ptr elementtype(i64) [[PTR]])
6262; CHECK-NEXT: [[TRYAGAIN:%.*]] = icmp ne i32 [[TMP3]], 0
63- ; CHECK-NEXT: br i1 [[TRYAGAIN]], label [[ATOMICRMW_START]], label [[ATOMICRMW_END:%.*]]
63+ ; CHECK-NEXT: br i1 [[TRYAGAIN]], label [[ATOMICRMW_START]], label [[ATOMICRMW_END:%.*]], !prof [[PROF1]]
6464; CHECK: atomicrmw.end:
6565; CHECK-NEXT: [[TMP4:%.*]] = bitcast i64 [[TMP2]] to double
6666; CHECK-NEXT: ret void
@@ -74,3 +74,17 @@ define void @atomic_swap_f64(ptr %ptr, double %val) nounwind {
7474 %t1 = atomicrmw xchg ptr %ptr , double %val acquire
7575 ret void
7676}
77+
78+ !0 = !{!"function_entry_count" , i64 1000 }
79+ ;.
80+ ; CHECK: attributes #[[ATTR0:[0-9]+]] = { nounwind }
81+ ; CHECK: attributes #[[ATTR1:[0-9]+]] = { nofree nounwind willreturn }
82+ ;.
83+ ; OUTLINE-ATOMICS: attributes #[[ATTR0:[0-9]+]] = { "target-features"="+outline-atomics" }
84+ ; OUTLINE-ATOMICS: attributes #[[ATTR1:[0-9]+]] = { nounwind "target-features"="+outline-atomics" }
85+ ;.
86+ ; CHECK: [[META0:![0-9]+]] = !{!"function_entry_count", i64 1000}
87+ ; CHECK: [[PROF1]] = !{!"unknown", !"atomic-expand"}
88+ ;.
89+ ; OUTLINE-ATOMICS: [[META0:![0-9]+]] = !{!"function_entry_count", i64 1000}
90+ ;.
0 commit comments