llvm/llvm/test/tools/llvm-exegesis/X86/latency/subprocess-address-annotation.s

# REQUIRES: exegesis-can-measure-latency, x86_64-linux

# RUN: llvm-exegesis -mtriple=x86_64-unknown-unknown -mode=latency -snippets-file=%s -execution-mode=subprocess | FileCheck %s

# Check that the code is loaded in at the expected address.

# LLVM-EXEGESIS-SNIPPET-ADDRESS 20000
# LLVM-EXEGESIS-DEFREG RAX 0
# LLVM-EXEGESIS-DEFREG R14 127
# LLVM-EXEGESIS-DEFREG R15 0
# LLVM-EXEGESIS-DEFREG RDI 0

# Load the instruction pointer and round down to the nearest page as there
# will be some setup code loaded in before this part begins to execute.
lea 0(%rip), %rax
shrq $12, %rax
shlq $12, %rax

cmpq $0x20000, %rax
cmovneq %r14, %r15

movq $60, %rax
movq %r15, %rdi
syscall

# CHECK-NOT: error:           'Child benchmarking process exited with non-zero exit code: Child process returned with unknown exit code'