Page Menu
Home
c4science
Search
Configure Global Search
Log In
Files
F61156767
state_assembly_test.cc
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Subscribers
None
File Metadata
Details
File Info
Storage
Attached
Created
Sat, May 4, 21:44
Size
1 KB
Mime Type
text/x-c
Expires
Mon, May 6, 21:44 (2 d)
Engine
blob
Format
Raw Data
Handle
17473456
Attached To
R12667 gbench-stream
state_assembly_test.cc
View Options
#include <benchmark/benchmark.h>
#ifdef __clang__
#pragma clang diagnostic ignored "-Wreturn-type"
#endif
// clang-format off
extern
"C"
{
extern
int
ExternInt
;
benchmark
::
State
&
GetState
();
void
Fn
();
}
// clang-format on
using
benchmark
::
State
;
// CHECK-LABEL: test_for_auto_loop:
extern
"C"
int
test_for_auto_loop
()
{
State
&
S
=
GetState
();
int
x
=
42
;
// CHECK: [[CALL:call(q)*]] _ZN9benchmark5State16StartKeepRunningEv
// CHECK-NEXT: testq %rbx, %rbx
// CHECK-NEXT: je [[LOOP_END:.*]]
for
(
auto
_
:
S
)
{
// CHECK: .L[[LOOP_HEAD:[a-zA-Z0-9_]+]]:
// CHECK-GNU-NEXT: subq $1, %rbx
// CHECK-CLANG-NEXT: {{(addq \$1, %rax|incq %rax|addq \$-1, %rbx)}}
// CHECK-NEXT: jne .L[[LOOP_HEAD]]
benchmark
::
DoNotOptimize
(
x
);
}
// CHECK: [[LOOP_END]]:
// CHECK: [[CALL]] _ZN9benchmark5State17FinishKeepRunningEv
// CHECK: movl $101, %eax
// CHECK: ret
return
101
;
}
// CHECK-LABEL: test_while_loop:
extern
"C"
int
test_while_loop
()
{
State
&
S
=
GetState
();
int
x
=
42
;
// CHECK: j{{(e|mp)}} .L[[LOOP_HEADER:[a-zA-Z0-9_]+]]
// CHECK-NEXT: .L[[LOOP_BODY:[a-zA-Z0-9_]+]]:
while
(
S
.
KeepRunning
())
{
// CHECK-GNU-NEXT: subq $1, %[[IREG:[a-z]+]]
// CHECK-CLANG-NEXT: {{(addq \$-1,|decq)}} %[[IREG:[a-z]+]]
// CHECK: movq %[[IREG]], [[DEST:.*]]
benchmark
::
DoNotOptimize
(
x
);
}
// CHECK-DAG: movq [[DEST]], %[[IREG]]
// CHECK-DAG: testq %[[IREG]], %[[IREG]]
// CHECK-DAG: jne .L[[LOOP_BODY]]
// CHECK-DAG: .L[[LOOP_HEADER]]:
// CHECK: cmpb $0
// CHECK-NEXT: jne .L[[LOOP_END:[a-zA-Z0-9_]+]]
// CHECK: [[CALL:call(q)*]] _ZN9benchmark5State16StartKeepRunningEv
// CHECK: .L[[LOOP_END]]:
// CHECK: [[CALL]] _ZN9benchmark5State17FinishKeepRunningEv
// CHECK: movl $101, %eax
// CHECK: ret
return
101
;
}
Event Timeline
Log In to Comment