Index: lldb/test/Shell/Register/Inputs/aarch64-gp-read.cpp =================================================================== --- lldb/test/Shell/Register/Inputs/aarch64-gp-read.cpp +++ lldb/test/Shell/Register/Inputs/aarch64-gp-read.cpp @@ -5,42 +5,88 @@ }; int main() { - constexpr uint64_t gprs[] = { - 0x0001020304050607, - 0x1011121314151617, - 0x2021222324252627, - 0x3031323334353637, - 0x4041424344454647, - 0x5051525354555657, - 0x6061626364656667, - 0x7071727374757677, - }; - constexpr vec_t vecs[] = { - { 0x0F0E0D0C0B0A0908, 0x1716151413121110, }, - { 0x100F0E0D0C0B0A09, 0x1817161514131211, }, - { 0x11100F0E0D0C0B0A, 0x1918171615141312, }, - { 0x1211100F0E0D0C0B, 0x1A19181716151413, }, - { 0x131211100F0E0D0C, 0x1B1A191817161514, }, - { 0x14131211100F0E0D, 0x1C1B1A1918171615, }, - { 0x1514131211100F0E, 0x1D1C1B1A19181716, }, - { 0x161514131211100F, 0x1E1D1C1B1A191817, }, + { 0x08090A0B0C0D0E0F, 0x0001020304050607 }, + { 0x090A0B0C0D0E0F10, 0x0102030405060708 }, + { 0x0A0B0C0D0E0F1011, 0x0203040506070809 }, + { 0x0B0C0D0E0F101112, 0x030405060708090A }, + { 0x0C0D0E0F10111213, 0x0405060708090A0B }, + { 0x0D0E0F1011121314, 0x05060708090A0B0C }, + { 0x0E0F101112131415, 0x060708090A0B0C0D }, + { 0x0F10111213141516, 0x0708090A0B0C0D0E }, + { 0x1011121314151617, 0x08090A0B0C0D0E0F }, + { 0x1112131415161718, 0x090A0B0C0D0E0F10 }, + { 0x1213141516171819, 0x0A0B0C0D0E0F1011 }, + { 0x131415161718191A, 0x0B0C0D0E0F101112 }, + { 0x1415161718191A1B, 0x0C0D0E0F10111213 }, + { 0x15161718191A1B1C, 0x0D0E0F1011121314 }, + { 0x161718191A1B1C1D, 0x0E0F101112131415 }, + { 0x1718191A1B1C1D1E, 0x0F10111213141516 }, + { 0x18191A1B1C1D1E1F, 0x1011121314151617 }, + { 0x191A1B1C1D1E1F20, 0x1112131415161718 }, + { 0x1A1B1C1D1E1F2021, 0x1213141516171819 }, + { 0x1B1C1D1E1F202122, 0x131415161718191A }, + { 0x1C1D1E1F20212223, 0x1415161718191A1B }, + { 0x1D1E1F2021222324, 0x15161718191A1B1C }, + { 0x1E1F202122232425, 0x161718191A1B1C1D }, + { 0x1F20212223242526, 0x1718191A1B1C1D1E }, + { 0x2021222324252627, 0x18191A1B1C1D1E1F }, + { 0x2122232425262728, 0x191A1B1C1D1E1F20 }, + { 0x2223242526272829, 0x1A1B1C1D1E1F2021 }, + { 0x232425262728292A, 0x1B1C1D1E1F202122 }, + { 0x2425262728292A2B, 0x1C1D1E1F20212223 }, + { 0x25262728292A2B2C, 0x1D1E1F2021222324 }, + { 0x262728292A2B2C2D, 0x1E1F202122232425 }, + { 0x2728292A2B2C2D2E, 0x1F20212223242526 }, }; asm volatile( + "ld1 {v0.2d, v1.2d, v2.2d, v3.2d}, [%0], #64\n\t" + "ld1 {v4.2d, v5.2d, v6.2d, v7.2d}, [%0], #64\n\t" + "ld1 {v8.2d, v9.2d, v10.2d, v11.2d}, [%0], #64\n\t" + "ld1 {v12.2d, v13.2d, v14.2d, v15.2d}, [%0], #64\n\t" + "ld1 {v16.2d, v17.2d, v18.2d, v19.2d}, [%0], #64\n\t" + "ld1 {v20.2d, v21.2d, v22.2d, v23.2d}, [%0], #64\n\t" + "ld1 {v24.2d, v25.2d, v26.2d, v27.2d}, [%0], #64\n\t" + "ld1 {v28.2d, v29.2d, v30.2d, v31.2d}, [%0], #64\n\t" + "sub %0, %0, #512\n\t" + "\n\t" + // we can't easily overwrite sp, so put the value on stack instead, + // and back x29 up while at it + "ldr x0, [%0, #248]\n\t" + "stp x29, x0, [sp, #-16]\n\t" + "\n\t" "ldp x0, x1, [%0]\n\t" "ldp x2, x3, [%0, #16]\n\t" "ldp x4, x5, [%0, #32]\n\t" "ldp x6, x7, [%0, #48]\n\t" - "\n\t" - "ld1 {v0.2d, v1.2d, v2.2d, v3.2d}, [%1], #64\n\t" - "ld1 {v4.2d, v5.2d, v6.2d, v7.2d}, [%1], #64\n\t" + "ldp x10, x11, [%0, #80]\n\t" + "ldp x12, x13, [%0, #96]\n\t" + "ldp x14, x15, [%0, #112]\n\t" + "ldp x16, x17, [%0, #128]\n\t" + "ldp x18, x19, [%0, #144]\n\t" + "ldp x20, x21, [%0, #160]\n\t" + "ldp x22, x23, [%0, #176]\n\t" + "ldp x24, x25, [%0, #192]\n\t" + "ldp x26, x27, [%0, #208]\n\t" + "ldp x28, x29, [%0, #224]\n\t" + "ldr x30, [%0, #240]\n\t" + "ldp x8, x9, [%0, #64]\n\t" "\n\t" "brk #0\n\t" + "\n\t" + // restore x29, discard the other value + "ldp x29, xzr, [sp, #-16]\n\t" : - : "r"(gprs), "r"(vecs) + : "r"(vecs) : "x0", "x1", "x2", "x3", "x4", "x5", "x6", "x7", - "v0", "v1", "v2", "v3", "v4", "v5", "v6", "v7" + "x9", "x10", "x11", "x12", "x13", "x14", "x15", + "x16", "x17", "x18", "x19", "x20", "x21", "x22", + "x23", "x24", "x25", "x26", "x27", "x28", "x30", + "v0", "v1", "v2", "v3", "v4", "v5", "v6", "v7", + "v8", "v9", "v10", "v11", "v12", "v13", "v14", "v15", + "v16", "v17", "v18", "v19", "v20", "v21", "v22", "v23", + "v24", "v25", "v26", "v27", "v28", "v29", "v30", "v31" ); return 0; Index: lldb/test/Shell/Register/aarch64-gp-read.test =================================================================== --- lldb/test/Shell/Register/aarch64-gp-read.test +++ lldb/test/Shell/Register/aarch64-gp-read.test @@ -4,21 +4,102 @@ process launch register read --all -# CHECK-DAG: x0 = 0x0001020304050607 -# CHECK-DAG: x1 = 0x1011121314151617 -# CHECK-DAG: x2 = 0x2021222324252627 -# CHECK-DAG: x3 = 0x3031323334353637 -# CHECK-DAG: x4 = 0x4041424344454647 -# CHECK-DAG: x5 = 0x5051525354555657 -# CHECK-DAG: x6 = 0x6061626364656667 -# CHECK-DAG: x7 = 0x7071727374757677 -# CHECK-DAG: w0 = 0x04050607 +# CHECK-DAG: x0 = 0x08090a0b0c0d0e0f +# CHECK-DAG: x1 = 0x0001020304050607 +# CHECK-DAG: x2 = 0x090a0b0c0d0e0f10 +# CHECK-DAG: x3 = 0x0102030405060708 +# CHECK-DAG: x4 = 0x0a0b0c0d0e0f1011 +# CHECK-DAG: x5 = 0x0203040506070809 +# CHECK-DAG: x6 = 0x0b0c0d0e0f101112 +# CHECK-DAG: x7 = 0x030405060708090a +# CHECK-DAG: x8 = 0x0c0d0e0f10111213 +# CHECK-DAG: x9 = 0x0405060708090a0b +# CHECK-DAG: x10 = 0x0d0e0f1011121314 +# CHECK-DAG: x11 = 0x05060708090a0b0c +# CHECK-DAG: x12 = 0x0e0f101112131415 +# CHECK-DAG: x13 = 0x060708090a0b0c0d +# CHECK-DAG: x14 = 0x0f10111213141516 +# CHECK-DAG: x15 = 0x0708090a0b0c0d0e +# CHECK-DAG: x16 = 0x1011121314151617 +# CHECK-DAG: x17 = 0x08090a0b0c0d0e0f +# CHECK-DAG: x18 = 0x1112131415161718 +# CHECK-DAG: x19 = 0x090a0b0c0d0e0f10 +# CHECK-DAG: x20 = 0x1213141516171819 +# CHECK-DAG: x21 = 0x0a0b0c0d0e0f1011 +# CHECK-DAG: x22 = 0x131415161718191a +# CHECK-DAG: x23 = 0x0b0c0d0e0f101112 +# CHECK-DAG: x24 = 0x1415161718191a1b +# CHECK-DAG: x25 = 0x0c0d0e0f10111213 +# CHECK-DAG: x26 = 0x15161718191a1b1c +# CHECK-DAG: x27 = 0x0d0e0f1011121314 +# CHECK-DAG: x28 = 0x161718191a1b1c1d +# CHECK-DAG: fp = 0x0e0f101112131415 +# CHECK-DAG: lr = 0x1718191a1b1c1d1e -# CHECK-DAG: v0 = {0x08 0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f 0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17} -# CHECK-DAG: v1 = {0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f 0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18} -# CHECK-DAG: v2 = {0x0a 0x0b 0x0c 0x0d 0x0e 0x0f 0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19} -# CHECK-DAG: v3 = {0x0b 0x0c 0x0d 0x0e 0x0f 0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a} -# CHECK-DAG: v4 = {0x0c 0x0d 0x0e 0x0f 0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b} -# CHECK-DAG: v5 = {0x0d 0x0e 0x0f 0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c} -# CHECK-DAG: v6 = {0x0e 0x0f 0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d} -# CHECK-DAG: v7 = {0x0f 0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e} +# CHECK-DAG: pc = 0x{{[0-9a-f]+}} aarch64-gp-read.test.tmp`main + +# CHECK-DAG: w0 = 0x0c0d0e0f +# CHECK-DAG: w1 = 0x04050607 +# CHECK-DAG: w2 = 0x0d0e0f10 +# CHECK-DAG: w3 = 0x05060708 +# CHECK-DAG: w4 = 0x0e0f1011 +# CHECK-DAG: w5 = 0x06070809 +# CHECK-DAG: w6 = 0x0f101112 +# CHECK-DAG: w7 = 0x0708090a +# CHECK-DAG: w8 = 0x10111213 +# CHECK-DAG: w9 = 0x08090a0b +# CHECK-DAG: w10 = 0x11121314 +# CHECK-DAG: w11 = 0x090a0b0c +# CHECK-DAG: w12 = 0x12131415 +# CHECK-DAG: w13 = 0x0a0b0c0d +# CHECK-DAG: w14 = 0x13141516 +# CHECK-DAG: w15 = 0x0b0c0d0e +# CHECK-DAG: w16 = 0x14151617 +# CHECK-DAG: w17 = 0x0c0d0e0f +# CHECK-DAG: w18 = 0x15161718 +# CHECK-DAG: w19 = 0x0d0e0f10 +# CHECK-DAG: w20 = 0x16171819 +# CHECK-DAG: w21 = 0x0e0f1011 +# CHECK-DAG: w22 = 0x1718191a +# CHECK-DAG: w23 = 0x0f101112 +# CHECK-DAG: w24 = 0x18191a1b +# CHECK-DAG: w25 = 0x10111213 +# CHECK-DAG: w26 = 0x191a1b1c +# CHECK-DAG: w27 = 0x11121314 +# CHECK-DAG: w28 = 0x1a1b1c1d +# +# CHECK-DAG: v0 = {0x0f 0x0e 0x0d 0x0c 0x0b 0x0a 0x09 0x08 0x07 0x06 0x05 0x04 0x03 0x02 0x01 0x00} +# CHECK-DAG: v1 = {0x10 0x0f 0x0e 0x0d 0x0c 0x0b 0x0a 0x09 0x08 0x07 0x06 0x05 0x04 0x03 0x02 0x01} +# CHECK-DAG: v2 = {0x11 0x10 0x0f 0x0e 0x0d 0x0c 0x0b 0x0a 0x09 0x08 0x07 0x06 0x05 0x04 0x03 0x02} +# CHECK-DAG: v3 = {0x12 0x11 0x10 0x0f 0x0e 0x0d 0x0c 0x0b 0x0a 0x09 0x08 0x07 0x06 0x05 0x04 0x03} +# CHECK-DAG: v4 = {0x13 0x12 0x11 0x10 0x0f 0x0e 0x0d 0x0c 0x0b 0x0a 0x09 0x08 0x07 0x06 0x05 0x04} +# CHECK-DAG: v5 = {0x14 0x13 0x12 0x11 0x10 0x0f 0x0e 0x0d 0x0c 0x0b 0x0a 0x09 0x08 0x07 0x06 0x05} +# CHECK-DAG: v6 = {0x15 0x14 0x13 0x12 0x11 0x10 0x0f 0x0e 0x0d 0x0c 0x0b 0x0a 0x09 0x08 0x07 0x06} +# CHECK-DAG: v7 = {0x16 0x15 0x14 0x13 0x12 0x11 0x10 0x0f 0x0e 0x0d 0x0c 0x0b 0x0a 0x09 0x08 0x07} +# CHECK-DAG: v8 = {0x17 0x16 0x15 0x14 0x13 0x12 0x11 0x10 0x0f 0x0e 0x0d 0x0c 0x0b 0x0a 0x09 0x08} +# CHECK-DAG: v9 = {0x18 0x17 0x16 0x15 0x14 0x13 0x12 0x11 0x10 0x0f 0x0e 0x0d 0x0c 0x0b 0x0a 0x09} +# CHECK-DAG: v10 = {0x19 0x18 0x17 0x16 0x15 0x14 0x13 0x12 0x11 0x10 0x0f 0x0e 0x0d 0x0c 0x0b 0x0a} +# CHECK-DAG: v11 = {0x1a 0x19 0x18 0x17 0x16 0x15 0x14 0x13 0x12 0x11 0x10 0x0f 0x0e 0x0d 0x0c 0x0b} +# CHECK-DAG: v12 = {0x1b 0x1a 0x19 0x18 0x17 0x16 0x15 0x14 0x13 0x12 0x11 0x10 0x0f 0x0e 0x0d 0x0c} +# CHECK-DAG: v13 = {0x1c 0x1b 0x1a 0x19 0x18 0x17 0x16 0x15 0x14 0x13 0x12 0x11 0x10 0x0f 0x0e 0x0d} +# CHECK-DAG: v14 = {0x1d 0x1c 0x1b 0x1a 0x19 0x18 0x17 0x16 0x15 0x14 0x13 0x12 0x11 0x10 0x0f 0x0e} +# CHECK-DAG: v15 = {0x1e 0x1d 0x1c 0x1b 0x1a 0x19 0x18 0x17 0x16 0x15 0x14 0x13 0x12 0x11 0x10 0x0f} +# CHECK-DAG: v16 = {0x1f 0x1e 0x1d 0x1c 0x1b 0x1a 0x19 0x18 0x17 0x16 0x15 0x14 0x13 0x12 0x11 0x10} +# CHECK-DAG: v17 = {0x20 0x1f 0x1e 0x1d 0x1c 0x1b 0x1a 0x19 0x18 0x17 0x16 0x15 0x14 0x13 0x12 0x11} +# CHECK-DAG: v18 = {0x21 0x20 0x1f 0x1e 0x1d 0x1c 0x1b 0x1a 0x19 0x18 0x17 0x16 0x15 0x14 0x13 0x12} +# CHECK-DAG: v19 = {0x22 0x21 0x20 0x1f 0x1e 0x1d 0x1c 0x1b 0x1a 0x19 0x18 0x17 0x16 0x15 0x14 0x13} +# CHECK-DAG: v20 = {0x23 0x22 0x21 0x20 0x1f 0x1e 0x1d 0x1c 0x1b 0x1a 0x19 0x18 0x17 0x16 0x15 0x14} +# CHECK-DAG: v21 = {0x24 0x23 0x22 0x21 0x20 0x1f 0x1e 0x1d 0x1c 0x1b 0x1a 0x19 0x18 0x17 0x16 0x15} +# CHECK-DAG: v22 = {0x25 0x24 0x23 0x22 0x21 0x20 0x1f 0x1e 0x1d 0x1c 0x1b 0x1a 0x19 0x18 0x17 0x16} +# CHECK-DAG: v23 = {0x26 0x25 0x24 0x23 0x22 0x21 0x20 0x1f 0x1e 0x1d 0x1c 0x1b 0x1a 0x19 0x18 0x17} +# CHECK-DAG: v24 = {0x27 0x26 0x25 0x24 0x23 0x22 0x21 0x20 0x1f 0x1e 0x1d 0x1c 0x1b 0x1a 0x19 0x18} +# CHECK-DAG: v25 = {0x28 0x27 0x26 0x25 0x24 0x23 0x22 0x21 0x20 0x1f 0x1e 0x1d 0x1c 0x1b 0x1a 0x19} +# CHECK-DAG: v26 = {0x29 0x28 0x27 0x26 0x25 0x24 0x23 0x22 0x21 0x20 0x1f 0x1e 0x1d 0x1c 0x1b 0x1a} +# CHECK-DAG: v27 = {0x2a 0x29 0x28 0x27 0x26 0x25 0x24 0x23 0x22 0x21 0x20 0x1f 0x1e 0x1d 0x1c 0x1b} +# CHECK-DAG: v28 = {0x2b 0x2a 0x29 0x28 0x27 0x26 0x25 0x24 0x23 0x22 0x21 0x20 0x1f 0x1e 0x1d 0x1c} +# CHECK-DAG: v29 = {0x2c 0x2b 0x2a 0x29 0x28 0x27 0x26 0x25 0x24 0x23 0x22 0x21 0x20 0x1f 0x1e 0x1d} +# CHECK-DAG: v30 = {0x2d 0x2c 0x2b 0x2a 0x29 0x28 0x27 0x26 0x25 0x24 0x23 0x22 0x21 0x20 0x1f 0x1e} +# CHECK-DAG: v31 = {0x2e 0x2d 0x2c 0x2b 0x2a 0x29 0x28 0x27 0x26 0x25 0x24 0x23 0x22 0x21 0x20 0x1f} + +expression -f hex -- *(uint64_t*)($sp-8) +# CHECK: (uint64_t) $0 = 0x0f10111213141516