Skip to content

Commit 19376eb

Browse files
committed
[lldb] [lit] Add tests for reading new x86_64 registers
Add tests covering read operations for the general-purpose and XMM registers added in x86_64 (r8-r15 and xmm8-xmm15). Differential Revision: https://reviews.llvm.org/D61072 llvm-svn: 359210
1 parent ec3f09f commit 19376eb

File tree

2 files changed

+103
-0
lines changed

2 files changed

+103
-0
lines changed
Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
#include <cstdint>
2+
3+
struct alignas(16) xmm_t {
4+
uint64_t a, b;
5+
};
6+
7+
int main() {
8+
uint64_t r8 = 0x0102030405060708;
9+
uint64_t r9 = 0x1112131415161718;
10+
uint64_t r10 = 0x2122232425262728;
11+
uint64_t r11 = 0x3132333435363738;
12+
uint64_t r12 = 0x4142434445464748;
13+
uint64_t r13 = 0x5152535455565758;
14+
uint64_t r14 = 0x6162636465666768;
15+
uint64_t r15 = 0x7172737475767778;
16+
17+
xmm_t xmm8 = { 0x020406080A0C0E01, 0x030507090B0D0F00 };
18+
xmm_t xmm9 = { 0x121416181A1C1E11, 0x131517191B1D1F10 };
19+
xmm_t xmm10 = { 0x222426282A2C2E21, 0x232527292B2D2F20 };
20+
xmm_t xmm11 = { 0x323436383A3C3E31, 0x333537393B3D3F30 };
21+
xmm_t xmm12 = { 0x424446484A4C4E41, 0x434547494B4D4F40 };
22+
xmm_t xmm13 = { 0x525456585A5C5E51, 0x535557595B5D5F50 };
23+
xmm_t xmm14 = { 0x626466686A6C6E61, 0x636567696B6D6F60 };
24+
xmm_t xmm15 = { 0x727476787A7C7E71, 0x737577797B7D7F70 };
25+
26+
asm volatile(
27+
"movq %0, %%r8\n\t"
28+
"movq %1, %%r9\n\t"
29+
"movq %2, %%r10\n\t"
30+
"movq %3, %%r11\n\t"
31+
"movq %4, %%r12\n\t"
32+
"movq %5, %%r13\n\t"
33+
"movq %6, %%r14\n\t"
34+
"movq %7, %%r15\n\t"
35+
"\n\t"
36+
"movaps %8, %%xmm8\n\t"
37+
"movaps %9, %%xmm9\n\t"
38+
"movaps %10, %%xmm10\n\t"
39+
"movaps %11, %%xmm11\n\t"
40+
"movaps %12, %%xmm12\n\t"
41+
"movaps %13, %%xmm13\n\t"
42+
"movaps %14, %%xmm14\n\t"
43+
"movaps %15, %%xmm15\n\t"
44+
"\n\t"
45+
"int3"
46+
:
47+
: "g"(r8), "g"(r9), "g"(r10), "g"(r11), "g"(r12), "g"(r13), "g"(r14),
48+
"g"(r15), "m"(xmm8), "m"(xmm9), "m"(xmm10), "m"(xmm11), "m"(xmm12),
49+
"m"(xmm13), "m"(xmm14), "m"(xmm15)
50+
: "%r8", "%r9", "%r10", "%r11", "%r12", "%r13", "%r14", "%r15", "%xmm8",
51+
"%xmm9", "%xmm10", "%xmm11", "%xmm12", "%xmm13", "%xmm14", "%xmm15"
52+
);
53+
54+
return 0;
55+
}

lldb/lit/Register/x86-64-read.test

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
# XFAIL: system-darwin
2+
# XFAIL: system-windows
3+
# REQUIRES: native && target-x86_64
4+
# RUN: %clangxx %p/Inputs/x86-64-read.cpp -o %t
5+
# RUN: %lldb -b -s %s %t | FileCheck %s
6+
process launch
7+
8+
register read --all
9+
# CHECK-DAG: r8 = 0x0102030405060708
10+
# CHECK-DAG: r9 = 0x1112131415161718
11+
# CHECK-DAG: r10 = 0x2122232425262728
12+
# CHECK-DAG: r11 = 0x3132333435363738
13+
# CHECK-DAG: r12 = 0x4142434445464748
14+
# CHECK-DAG: r13 = 0x5152535455565758
15+
# CHECK-DAG: r14 = 0x6162636465666768
16+
# CHECK-DAG: r15 = 0x7172737475767778
17+
# CHECK-DAG: r8d = 0x05060708
18+
# CHECK-DAG: r9d = 0x15161718
19+
# CHECK-DAG: r10d = 0x25262728
20+
# CHECK-DAG: r11d = 0x35363738
21+
# CHECK-DAG: r12d = 0x45464748
22+
# CHECK-DAG: r13d = 0x55565758
23+
# CHECK-DAG: r14d = 0x65666768
24+
# CHECK-DAG: r15d = 0x75767778
25+
# CHECK-DAG: r8w = 0x0708
26+
# CHECK-DAG: r9w = 0x1718
27+
# CHECK-DAG: r10w = 0x2728
28+
# CHECK-DAG: r11w = 0x3738
29+
# CHECK-DAG: r12w = 0x4748
30+
# CHECK-DAG: r13w = 0x5758
31+
# CHECK-DAG: r14w = 0x6768
32+
# CHECK-DAG: r15w = 0x7778
33+
# CHECK-DAG: r8l = 0x08
34+
# CHECK-DAG: r9l = 0x18
35+
# CHECK-DAG: r10l = 0x28
36+
# CHECK-DAG: r11l = 0x38
37+
# CHECK-DAG: r12l = 0x48
38+
# CHECK-DAG: r13l = 0x58
39+
# CHECK-DAG: r14l = 0x68
40+
# CHECK-DAG: r15l = 0x78
41+
# CHECK-DAG: xmm8 = {0x01 0x0e 0x0c 0x0a 0x08 0x06 0x04 0x02 0x00 0x0f 0x0d 0x0b 0x09 0x07 0x05 0x03}
42+
# CHECK-DAG: xmm9 = {0x11 0x1e 0x1c 0x1a 0x18 0x16 0x14 0x12 0x10 0x1f 0x1d 0x1b 0x19 0x17 0x15 0x13}
43+
# CHECK-DAG: xmm10 = {0x21 0x2e 0x2c 0x2a 0x28 0x26 0x24 0x22 0x20 0x2f 0x2d 0x2b 0x29 0x27 0x25 0x23}
44+
# CHECK-DAG: xmm11 = {0x31 0x3e 0x3c 0x3a 0x38 0x36 0x34 0x32 0x30 0x3f 0x3d 0x3b 0x39 0x37 0x35 0x33}
45+
# CHECK-DAG: xmm12 = {0x41 0x4e 0x4c 0x4a 0x48 0x46 0x44 0x42 0x40 0x4f 0x4d 0x4b 0x49 0x47 0x45 0x43}
46+
# CHECK-DAG: xmm13 = {0x51 0x5e 0x5c 0x5a 0x58 0x56 0x54 0x52 0x50 0x5f 0x5d 0x5b 0x59 0x57 0x55 0x53}
47+
# CHECK-DAG: xmm14 = {0x61 0x6e 0x6c 0x6a 0x68 0x66 0x64 0x62 0x60 0x6f 0x6d 0x6b 0x69 0x67 0x65 0x63}
48+
# CHECK-DAG: xmm15 = {0x71 0x7e 0x7c 0x7a 0x78 0x76 0x74 0x72 0x70 0x7f 0x7d 0x7b 0x79 0x77 0x75 0x73}

0 commit comments

Comments
 (0)