[flang] Fix length handling in character kind implicit conversion (#74586)
[llvm-project.git] / lldb / test / Shell / Register / Inputs / x86-64-gp-write.cpp
blobfd579c031a3e8e13a6c0d9b3563dd95bf57b54b9
1 #include <cinttypes>
2 #include <cstdint>
3 #include <cstdio>
5 int main() {
6 constexpr uint64_t fill = 0x0F0F0F0F0F0F0F0F;
8 uint64_t rax, rbx, rcx, rdx, rsp, rbp, rsi, rdi;
10 asm volatile(
11 // save rsp & rbp
12 "movq %%rsp, %4\n\t"
13 "movq %%rbp, %5\n\t"
14 "\n\t"
15 "movq %8, %%rax\n\t"
16 "movq %8, %%rbx\n\t"
17 "movq %8, %%rcx\n\t"
18 "movq %8, %%rdx\n\t"
19 "movq %8, %%rsp\n\t"
20 "movq %8, %%rbp\n\t"
21 "movq %8, %%rsi\n\t"
22 "movq %8, %%rdi\n\t"
23 "\n\t"
24 "int3\n\t"
25 "\n\t"
26 // swap saved & current rsp & rbp
27 "xchgq %%rsp, %4\n\t"
28 "xchgq %%rbp, %5\n\t"
29 : "=a"(rax), "=b"(rbx), "=c"(rcx), "=d"(rdx), "=r"(rsp), "=r"(rbp),
30 "=S"(rsi), "=D"(rdi)
31 : "g"(fill)
35 printf("rax = 0x%016" PRIx64 "\n", rax);
36 printf("rbx = 0x%016" PRIx64 "\n", rbx);
37 printf("rcx = 0x%016" PRIx64 "\n", rcx);
38 printf("rdx = 0x%016" PRIx64 "\n", rdx);
39 printf("rsp = 0x%016" PRIx64 "\n", rsp);
40 printf("rbp = 0x%016" PRIx64 "\n", rbp);
41 printf("rsi = 0x%016" PRIx64 "\n", rsi);
42 printf("rdi = 0x%016" PRIx64 "\n", rdi);
44 return 0;