[llvm] 4f8187c - [TSan] Regenerate test checks (NFC)
Nikita Popov via llvm-commits
llvm-commits at lists.llvm.org
Fri Jun 13 05:54:32 PDT 2025
Author: Nikita Popov
Date: 2025-06-13T14:54:24+02:00
New Revision: 4f8187c0dc6e7a818ebf3272a0c022203f901e96
URL: https://github.com/llvm/llvm-project/commit/4f8187c0dc6e7a818ebf3272a0c022203f901e96
DIFF: https://github.com/llvm/llvm-project/commit/4f8187c0dc6e7a818ebf3272a0c022203f901e96.diff
LOG: [TSan] Regenerate test checks (NFC)
Added:
Modified:
llvm/test/Instrumentation/ThreadSanitizer/atomic-non-integer.ll
Removed:
################################################################################
diff --git a/llvm/test/Instrumentation/ThreadSanitizer/atomic-non-integer.ll b/llvm/test/Instrumentation/ThreadSanitizer/atomic-non-integer.ll
index 40c4bef3bff9b..8bcabaecf0fdc 100644
--- a/llvm/test/Instrumentation/ThreadSanitizer/atomic-non-integer.ll
+++ b/llvm/test/Instrumentation/ThreadSanitizer/atomic-non-integer.ll
@@ -1,51 +1,91 @@
+; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 5
; RUN: opt < %s -passes=tsan -S | FileCheck %s
; Check that atomic memory operations on floating-point types are converted to calls into ThreadSanitizer runtime.
target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64-S128"
define float @load_float(ptr %fptr) {
+; CHECK-LABEL: define float @load_float(
+; CHECK-SAME: ptr [[FPTR:%.*]]) {
+; CHECK-NEXT: [[TMP1:%.*]] = call ptr @llvm.returnaddress(i32 0)
+; CHECK-NEXT: call void @__tsan_func_entry(ptr [[TMP1]])
+; CHECK-NEXT: [[TMP2:%.*]] = call i32 @__tsan_atomic32_load(ptr [[FPTR]], i32 0)
+; CHECK-NEXT: [[TMP3:%.*]] = bitcast i32 [[TMP2]] to float
+; CHECK-NEXT: [[V:%.*]] = load atomic float, ptr [[FPTR]] unordered, align 4
+; CHECK-NEXT: call void @__tsan_func_exit()
+; CHECK-NEXT: ret float [[TMP3]]
+;
%v = load atomic float, ptr %fptr unordered, align 4
ret float %v
- ; CHECK-LABEL: load_float
- ; CHECK: call i32 @__tsan_atomic32_load(ptr %{{.+}}, i32 0)
- ; CHECK: bitcast i32 {{.+}} to float
}
define double @load_double(ptr %fptr) {
+; CHECK-LABEL: define double @load_double(
+; CHECK-SAME: ptr [[FPTR:%.*]]) {
+; CHECK-NEXT: [[TMP1:%.*]] = call ptr @llvm.returnaddress(i32 0)
+; CHECK-NEXT: call void @__tsan_func_entry(ptr [[TMP1]])
+; CHECK-NEXT: [[TMP2:%.*]] = call i64 @__tsan_atomic64_load(ptr [[FPTR]], i32 0)
+; CHECK-NEXT: [[TMP3:%.*]] = bitcast i64 [[TMP2]] to double
+; CHECK-NEXT: [[V:%.*]] = load atomic double, ptr [[FPTR]] unordered, align 8
+; CHECK-NEXT: call void @__tsan_func_exit()
+; CHECK-NEXT: ret double [[TMP3]]
+;
%v = load atomic double, ptr %fptr unordered, align 8
ret double %v
- ; CHECK-LABEL: load_double
- ; CHECK: call i64 @__tsan_atomic64_load(ptr %{{.+}}, i32 0)
- ; CHECK: bitcast i64 {{.+}} to double
}
define fp128 @load_fp128(ptr %fptr) {
+; CHECK-LABEL: define fp128 @load_fp128(
+; CHECK-SAME: ptr [[FPTR:%.*]]) {
+; CHECK-NEXT: [[TMP1:%.*]] = call ptr @llvm.returnaddress(i32 0)
+; CHECK-NEXT: call void @__tsan_func_entry(ptr [[TMP1]])
+; CHECK-NEXT: [[TMP2:%.*]] = call i128 @__tsan_atomic128_load(ptr [[FPTR]], i32 0)
+; CHECK-NEXT: [[TMP3:%.*]] = bitcast i128 [[TMP2]] to fp128
+; CHECK-NEXT: [[V:%.*]] = load atomic fp128, ptr [[FPTR]] unordered, align 16
+; CHECK-NEXT: call void @__tsan_func_exit()
+; CHECK-NEXT: ret fp128 [[TMP3]]
+;
%v = load atomic fp128, ptr %fptr unordered, align 16
ret fp128 %v
- ; CHECK-LABEL: load_fp128
- ; CHECK: call i128 @__tsan_atomic128_load(ptr %{{.+}}, i32 0)
- ; CHECK: bitcast i128 {{.+}} to fp128
}
define void @store_float(ptr %fptr, float %v) {
+; CHECK-LABEL: define void @store_float(
+; CHECK-SAME: ptr [[FPTR:%.*]], float [[V:%.*]]) {
+; CHECK-NEXT: [[TMP1:%.*]] = call ptr @llvm.returnaddress(i32 0)
+; CHECK-NEXT: call void @__tsan_func_entry(ptr [[TMP1]])
+; CHECK-NEXT: [[TMP2:%.*]] = bitcast float [[V]] to i32
+; CHECK-NEXT: call void @__tsan_atomic32_store(ptr [[FPTR]], i32 [[TMP2]], i32 0)
+; CHECK-NEXT: call void @__tsan_func_exit()
+; CHECK-NEXT: ret void
+;
store atomic float %v, ptr %fptr unordered, align 4
ret void
- ; CHECK-LABEL: store_float
- ; CHECK: bitcast float %v to i32
- ; CHECK: call void @__tsan_atomic32_store(ptr %{{.+}}, i32 %{{.+}}, i32 0)
}
define void @store_double(ptr %fptr, double %v) {
+; CHECK-LABEL: define void @store_double(
+; CHECK-SAME: ptr [[FPTR:%.*]], double [[V:%.*]]) {
+; CHECK-NEXT: [[TMP1:%.*]] = call ptr @llvm.returnaddress(i32 0)
+; CHECK-NEXT: call void @__tsan_func_entry(ptr [[TMP1]])
+; CHECK-NEXT: [[TMP2:%.*]] = bitcast double [[V]] to i64
+; CHECK-NEXT: call void @__tsan_atomic64_store(ptr [[FPTR]], i64 [[TMP2]], i32 0)
+; CHECK-NEXT: call void @__tsan_func_exit()
+; CHECK-NEXT: ret void
+;
store atomic double %v, ptr %fptr unordered, align 8
ret void
- ; CHECK-LABEL: store_double
- ; CHECK: bitcast double %v to i64
- ; CHECK: call void @__tsan_atomic64_store(ptr %{{.+}}, i64 %{{.+}}, i32 0)
}
define void @store_fp128(ptr %fptr, fp128 %v) {
+; CHECK-LABEL: define void @store_fp128(
+; CHECK-SAME: ptr [[FPTR:%.*]], fp128 [[V:%.*]]) {
+; CHECK-NEXT: [[TMP1:%.*]] = call ptr @llvm.returnaddress(i32 0)
+; CHECK-NEXT: call void @__tsan_func_entry(ptr [[TMP1]])
+; CHECK-NEXT: [[TMP2:%.*]] = bitcast fp128 [[V]] to i128
+; CHECK-NEXT: call void @__tsan_atomic128_store(ptr [[FPTR]], i128 [[TMP2]], i32 0)
+; CHECK-NEXT: call void @__tsan_func_exit()
+; CHECK-NEXT: ret void
+;
store atomic fp128 %v, ptr %fptr unordered, align 16
ret void
- ; CHECK-LABEL: store_fp128
- ; CHECK: bitcast fp128 %v to i128
- ; CHECK: call void @__tsan_atomic128_store(ptr %{{.+}}, i128 %{{.+}}, i32 0)
}
More information about the llvm-commits
mailing list