[Lldb-commits] [lldb] r359682 - [lldb] [lit] Add write tests for r8-r15 & xmm8-xmm15 registers

Michal Gorny via lldb-commits lldb-commits at lists.llvm.org
Wed May 1 06:55:23 PDT 2019


Author: mgorny
Date: Wed May  1 06:55:23 2019
New Revision: 359682

URL: http://llvm.org/viewvc/llvm-project?rev=359682&view=rev
Log:
[lldb] [lit] Add write tests for r8-r15 & xmm8-xmm15 registers

Differential Revision: https://reviews.llvm.org/D61303

Added:
    lldb/trunk/lit/Register/Inputs/x86-64-write.cpp
    lldb/trunk/lit/Register/x86-64-write.test

Added: lldb/trunk/lit/Register/Inputs/x86-64-write.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/Register/Inputs/x86-64-write.cpp?rev=359682&view=auto
==============================================================================
--- lldb/trunk/lit/Register/Inputs/x86-64-write.cpp (added)
+++ lldb/trunk/lit/Register/Inputs/x86-64-write.cpp Wed May  1 06:55:23 2019
@@ -0,0 +1,67 @@
+#include <cinttypes>
+#include <cstdint>
+#include <cstdio>
+
+struct alignas(16) xmm_t {
+  uint64_t a, b;
+};
+
+int main() {
+  constexpr xmm_t xmm_fill = { 0x0F0F0F0F0F0F0F0F, 0x0F0F0F0F0F0F0F0F };
+
+  uint64_t r64[8];
+  xmm_t xmm[8];
+
+  asm volatile(
+    "movq    %2, %%r8\n\t"
+    "movq    %2, %%r9\n\t"
+    "movq    %2, %%r10\n\t"
+    "movq    %2, %%r11\n\t"
+    "movq    %2, %%r12\n\t"
+    "movq    %2, %%r13\n\t"
+    "movq    %2, %%r14\n\t"
+    "movq    %2, %%r15\n\t"
+    "\n\t"
+    "movaps  %2, %%xmm8\n\t"
+    "movaps  %2, %%xmm9\n\t"
+    "movaps  %2, %%xmm10\n\t"
+    "movaps  %2, %%xmm11\n\t"
+    "movaps  %2, %%xmm12\n\t"
+    "movaps  %2, %%xmm13\n\t"
+    "movaps  %2, %%xmm14\n\t"
+    "movaps  %2, %%xmm15\n\t"
+    "\n\t"
+    "int3\n\t"
+    "\n\t"
+    "lea     %0, %%rbx\n\t"
+    "movq    %%r8, 0x00(%%rbx)\n\t"
+    "movq    %%r9, 0x08(%%rbx)\n\t"
+    "movq    %%r10, 0x10(%%rbx)\n\t"
+    "movq    %%r11, 0x18(%%rbx)\n\t"
+    "movq    %%r12, 0x20(%%rbx)\n\t"
+    "movq    %%r13, 0x28(%%rbx)\n\t"
+    "movq    %%r14, 0x30(%%rbx)\n\t"
+    "movq    %%r15, 0x38(%%rbx)\n\t"
+    "\n\t"
+    "lea     %1, %%rbx\n\t"
+    "movaps  %%xmm8, 0x00(%%rbx)\n\t"
+    "movaps  %%xmm9, 0x10(%%rbx)\n\t"
+    "movaps  %%xmm10, 0x20(%%rbx)\n\t"
+    "movaps  %%xmm11, 0x30(%%rbx)\n\t"
+    "movaps  %%xmm12, 0x40(%%rbx)\n\t"
+    "movaps  %%xmm13, 0x50(%%rbx)\n\t"
+    "movaps  %%xmm14, 0x60(%%rbx)\n\t"
+    "movaps  %%xmm15, 0x70(%%rbx)\n\t"
+    : "=m"(r64), "=m"(xmm)
+    : "m"(xmm_fill)
+    : "%rbx", "%mm0", "%mm1", "%mm2", "%mm3", "%mm4", "%mm5", "%mm6", "%mm7",
+      "%xmm0", "%xmm1", "%xmm2", "%xmm3", "%xmm4", "%xmm5", "%xmm6", "%xmm7"
+  );
+
+  for (int i = 0; i < 8; ++i)
+    printf("r%d = 0x%016" PRIx64 "\n", i+8, r64[i]);
+  for (int i = 0; i < 8; ++i)
+    printf("xmm%d = 0x%016" PRIx64 "%016" PRIx64 "\n", i+8, xmm[i].b, xmm[i].a);
+
+  return 0;
+}

Added: lldb/trunk/lit/Register/x86-64-write.test
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/Register/x86-64-write.test?rev=359682&view=auto
==============================================================================
--- lldb/trunk/lit/Register/x86-64-write.test (added)
+++ lldb/trunk/lit/Register/x86-64-write.test Wed May  1 06:55:23 2019
@@ -0,0 +1,47 @@
+# XFAIL: system-darwin
+# XFAIL: system-windows
+# REQUIRES: native && (target-x86 || target-x86_64) && native-cpu-sse
+# RUN: %clangxx %p/Inputs/x86-64-write.cpp -o %t
+# RUN: %lldb -b -s %s %t | FileCheck %s
+process launch
+
+register write r8 0x0102030405060708
+register write r9 0x1112131415161718
+register write r10 0x2122232425262728
+register write r11 0x3132333435363738
+register write r12 0x4142434445464748
+register write r13 0x5152535455565758
+register write r14 0x6162636465666768
+register write r15 0x7172737475767778
+
+register write xmm8 "{0x01 0x0e 0x0c 0x0a 0x08 0x06 0x04 0x02 0x00 0x0f 0x0d 0x0b 0x09 0x07 0x05 0x03}"
+register write xmm9 "{0x11 0x1e 0x1c 0x1a 0x18 0x16 0x14 0x12 0x10 0x1f 0x1d 0x1b 0x19 0x17 0x15 0x13}"
+register write xmm10 "{0x21 0x2e 0x2c 0x2a 0x28 0x26 0x24 0x22 0x20 0x2f 0x2d 0x2b 0x29 0x27 0x25 0x23}"
+register write xmm11 "{0x31 0x3e 0x3c 0x3a 0x38 0x36 0x34 0x32 0x30 0x3f 0x3d 0x3b 0x39 0x37 0x35 0x33}"
+register write xmm12 "{0x41 0x4e 0x4c 0x4a 0x48 0x46 0x44 0x42 0x40 0x4f 0x4d 0x4b 0x49 0x47 0x45 0x43}"
+register write xmm13 "{0x51 0x5e 0x5c 0x5a 0x58 0x56 0x54 0x52 0x50 0x5f 0x5d 0x5b 0x59 0x57 0x55 0x53}"
+register write xmm14 "{0x61 0x6e 0x6c 0x6a 0x68 0x66 0x64 0x62 0x60 0x6f 0x6d 0x6b 0x69 0x67 0x65 0x63}"
+register write xmm15 "{0x71 0x7e 0x7c 0x7a 0x78 0x76 0x74 0x72 0x70 0x7f 0x7d 0x7b 0x79 0x77 0x75 0x73}"
+
+process continue
+# CHECK: process continue
+
+# CHECK-DAG: r8 = 0x0102030405060708
+# CHECK-DAG: r9 = 0x1112131415161718
+# CHECK-DAG: r10 = 0x2122232425262728
+# CHECK-DAG: r11 = 0x3132333435363738
+# CHECK-DAG: r12 = 0x4142434445464748
+# CHECK-DAG: r13 = 0x5152535455565758
+# CHECK-DAG: r14 = 0x6162636465666768
+# CHECK-DAG: r15 = 0x7172737475767778
+
+# CHECK-DAG: xmm8 = 0x030507090b0d0f00020406080a0c0e01
+# CHECK-DAG: xmm9 = 0x131517191b1d1f10121416181a1c1e11
+# CHECK-DAG: xmm10 = 0x232527292b2d2f20222426282a2c2e21
+# CHECK-DAG: xmm11 = 0x333537393b3d3f30323436383a3c3e31
+# CHECK-DAG: xmm12 = 0x434547494b4d4f40424446484a4c4e41
+# CHECK-DAG: xmm13 = 0x535557595b5d5f50525456585a5c5e51
+# CHECK-DAG: xmm14 = 0x636567696b6d6f60626466686a6c6e61
+# CHECK-DAG: xmm15 = 0x737577797b7d7f70727476787a7c7e71
+
+# CHECK: Process {{[0-9]+}} exited with status = 0




More information about the lldb-commits mailing list