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