]> git.proxmox.com Git - ceph.git/blob - ceph/src/jaegertracing/opentelemetry-cpp/third_party/benchmark/test/clobber_memory_assembly_test.cc
update ceph source to reef 18.1.2
[ceph.git] / ceph / src / jaegertracing / opentelemetry-cpp / third_party / benchmark / test / clobber_memory_assembly_test.cc
1 #include <benchmark/benchmark.h>
2
3 #ifdef __clang__
4 #pragma clang diagnostic ignored "-Wreturn-type"
5 #endif
6
7 extern "C" {
8
9 extern int ExternInt;
10 extern int ExternInt2;
11 extern int ExternInt3;
12
13 }
14
15 // CHECK-LABEL: test_basic:
16 extern "C" void test_basic() {
17 int x;
18 benchmark::DoNotOptimize(&x);
19 x = 101;
20 benchmark::ClobberMemory();
21 // CHECK: leaq [[DEST:[^,]+]], %rax
22 // CHECK: movl $101, [[DEST]]
23 // CHECK: ret
24 }
25
26 // CHECK-LABEL: test_redundant_store:
27 extern "C" void test_redundant_store() {
28 ExternInt = 3;
29 benchmark::ClobberMemory();
30 ExternInt = 51;
31 // CHECK-DAG: ExternInt
32 // CHECK-DAG: movl $3
33 // CHECK: movl $51
34 }
35
36 // CHECK-LABEL: test_redundant_read:
37 extern "C" void test_redundant_read() {
38 int x;
39 benchmark::DoNotOptimize(&x);
40 x = ExternInt;
41 benchmark::ClobberMemory();
42 x = ExternInt2;
43 // CHECK: leaq [[DEST:[^,]+]], %rax
44 // CHECK: ExternInt(%rip)
45 // CHECK: movl %eax, [[DEST]]
46 // CHECK-NOT: ExternInt2
47 // CHECK: ret
48 }
49
50 // CHECK-LABEL: test_redundant_read2:
51 extern "C" void test_redundant_read2() {
52 int x;
53 benchmark::DoNotOptimize(&x);
54 x = ExternInt;
55 benchmark::ClobberMemory();
56 x = ExternInt2;
57 benchmark::ClobberMemory();
58 // CHECK: leaq [[DEST:[^,]+]], %rax
59 // CHECK: ExternInt(%rip)
60 // CHECK: movl %eax, [[DEST]]
61 // CHECK: ExternInt2(%rip)
62 // CHECK: movl %eax, [[DEST]]
63 // CHECK: ret
64 }