/[qemu]/qemu/tests/test-i386.c
ViewVC logotype

Diff of /qemu/tests/test-i386.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.43 by bellard, Wed Jan 12 22:33:30 2005 UTC revision 1.44 by bellard, Sun Jan 16 01:09:01 2005 UTC
# Line 1733  static uint64_t __attribute__((aligned(1 Line 1733  static uint64_t __attribute__((aligned(1
1733      SSE_OP2(op);\      SSE_OP2(op);\
1734  }  }
1735    
1736    #define SHUF_OP(op, ib)\
1737    {\
1738        int i;\
1739        a.q[0] = test_values[0][0];\
1740        a.q[1] = test_values[0][1];\
1741        b.q[0] = test_values[1][0];\
1742        b.q[1] = test_values[1][1];\
1743        asm volatile (#op " $" #ib ", %2, %0" : "=x" (r.dq) : "0" (a.dq), "x" (b.dq));\
1744        printf("%-9s: a=%016llx%016llx b=%016llx%016llx ib=%02x r=%016llx%016llx\n",\
1745               #op,\
1746               a.q[1], a.q[0],\
1747               b.q[1], b.q[0],\
1748               ib,\
1749               r.q[1], r.q[0]);\
1750    }
1751    
1752  #define PSHUF_OP(op, ib)\  #define PSHUF_OP(op, ib)\
1753  {\  {\
1754      int i;\      int i;\
# Line 2009  void test_sse(void) Line 2025  void test_sse(void)
2025      asm volatile ("pmovmskb %1, %0" : "=r" (r.l[0]) : "x" (a.dq));      asm volatile ("pmovmskb %1, %0" : "=r" (r.l[0]) : "x" (a.dq));
2026      printf("%-9s: r=%08x\n", "pmovmskb", r.l[0]);      printf("%-9s: r=%08x\n", "pmovmskb", r.l[0]);
2027    
2028        {
2029            r.q[0] = -1;
2030            r.q[1] = -1;
2031    
2032            a.q[0] = test_values[0][0];
2033            a.q[1] = test_values[0][1];
2034            b.q[0] = test_values[1][0];
2035            b.q[1] = test_values[1][1];
2036            asm volatile("maskmovq %1, %0" :
2037                         : "y" (a.q[0]), "y" (b.q[0]), "D" (&r)
2038                         : "memory");
2039            printf("%-9s: r=%016llx a=%016llx b=%016llx\n",
2040                   "maskmov",
2041                   r.q[0],
2042                   a.q[0],
2043                   b.q[0]);
2044            asm volatile("maskmovdqu %1, %0" :
2045                         : "x" (a.dq), "x" (b.dq), "D" (&r)
2046                         : "memory");
2047            printf("%-9s: r=%016llx%016llx a=%016llx%016llx b=%016llx%016llx\n",
2048                   "maskmov",
2049                   r.q[1], r.q[0],
2050                   a.q[1], a.q[0],
2051                   b.q[1], b.q[0]);
2052        }
2053    
2054      asm volatile ("emms");      asm volatile ("emms");
2055    
2056      SSE_OP2(punpcklqdq);      SSE_OP2(punpcklqdq);
# Line 2027  void test_sse(void) Line 2069  void test_sse(void)
2069      SSE_OP2(unpckhps);      SSE_OP2(unpckhps);
2070      SSE_OP2(unpckhpd);      SSE_OP2(unpckhpd);
2071    
2072      PSHUF_OP(shufps, 0x78);      SHUF_OP(shufps, 0x78);
2073      PSHUF_OP(shufpd, 0x02);      SHUF_OP(shufpd, 0x02);
2074    
2075      PSHUF_OP(pshufd, 0x78);      PSHUF_OP(pshufd, 0x78);
2076      PSHUF_OP(pshuflw, 0x78);      PSHUF_OP(pshuflw, 0x78);

Legend:
Removed from v.1.43  
changed lines
  Added in v.1.44

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26