@@ -12,6 +12,7 @@ target triple = "sparcv9-unknown-unknown"
1212define i8 @test_cmpxchg_i8 (ptr %arg , i8 %old , i8 %new ) {
1313; CHECK-LABEL: @test_cmpxchg_i8(
1414; CHECK-NEXT: entry:
15+ ; CHECK-NEXT: fence release
1516; CHECK-NEXT: [[ALIGNEDADDR:%.*]] = call ptr @llvm.ptrmask.p0.i64(ptr [[ARG:%.*]], i64 -4)
1617; CHECK-NEXT: [[TMP0:%.*]] = ptrtoint ptr [[ARG]] to i64
1718; CHECK-NEXT: [[PTRLSB:%.*]] = and i64 [[TMP0]], 3
@@ -44,6 +45,7 @@ define i8 @test_cmpxchg_i8(ptr %arg, i8 %old, i8 %new) {
4445; CHECK-NEXT: [[EXTRACTED:%.*]] = trunc i32 [[SHIFTED]] to i8
4546; CHECK-NEXT: [[TMP17:%.*]] = insertvalue { i8, i1 } poison, i8 [[EXTRACTED]], 0
4647; CHECK-NEXT: [[TMP18:%.*]] = insertvalue { i8, i1 } [[TMP17]], i1 [[TMP14]], 1
48+ ; CHECK-NEXT: fence acquire
4749; CHECK-NEXT: [[RET:%.*]] = extractvalue { i8, i1 } [[TMP18]], 0
4850; CHECK-NEXT: ret i8 [[RET]]
4951;
5658define i16 @test_cmpxchg_i16 (ptr %arg , i16 %old , i16 %new ) {
5759; CHECK-LABEL: @test_cmpxchg_i16(
5860; CHECK-NEXT: entry:
61+ ; CHECK-NEXT: fence release
5962; CHECK-NEXT: [[ALIGNEDADDR:%.*]] = call ptr @llvm.ptrmask.p0.i64(ptr [[ARG:%.*]], i64 -4)
6063; CHECK-NEXT: [[TMP0:%.*]] = ptrtoint ptr [[ARG]] to i64
6164; CHECK-NEXT: [[PTRLSB:%.*]] = and i64 [[TMP0]], 3
@@ -88,6 +91,7 @@ define i16 @test_cmpxchg_i16(ptr %arg, i16 %old, i16 %new) {
8891; CHECK-NEXT: [[EXTRACTED:%.*]] = trunc i32 [[SHIFTED]] to i16
8992; CHECK-NEXT: [[TMP17:%.*]] = insertvalue { i16, i1 } poison, i16 [[EXTRACTED]], 0
9093; CHECK-NEXT: [[TMP18:%.*]] = insertvalue { i16, i1 } [[TMP17]], i1 [[TMP14]], 1
94+ ; CHECK-NEXT: fence acquire
9195; CHECK-NEXT: [[RET:%.*]] = extractvalue { i16, i1 } [[TMP18]], 0
9296; CHECK-NEXT: ret i16 [[RET]]
9397;
0 commit comments