Add qemu 2.4.0
[kvmfornfv.git] / qemu / tests / tcg / mips / mips64-dspr2 / dpsqx_sa_w_ph.c
1 #include"io.h"
2 int main()
3 {
4     long long rs, rt, dsp;
5     long long ach = 5, acl = 5;
6     long long resulth, resultl, resultdsp;
7
8     rs = 0xBC0123AD;
9     rt = 0x01643721;
10     resulth = 0x00;
11     resultl = 0x7FFFFFFF;
12     resultdsp = 0x01;
13     __asm
14         ("mthi  %0, $ac1\n\t"
15          "mtlo  %1, $ac1\n\t"
16          "dpsqx_sa.w.ph $ac1, %3, %4\n\t"
17          "mfhi  %0, $ac1\n\t"
18          "mflo  %1, $ac1\n\t"
19          "rddsp %2\n\t"
20          : "+r"(ach), "+r"(acl), "=r"(dsp)
21          : "r"(rs), "r"(rt)
22         );
23     dsp = (dsp >> 17) & 0x01;
24     if (dsp != resultdsp || ach != resulth || acl != resultl) {
25         printf("dpsqx_sa.w.ph error\n");
26         return -1;
27     }
28
29     ach = 0x8c0b354A;
30     acl = 0xbbc02249;
31     rs      = 0x800023AD;
32     rt      = 0x01648000;
33     resulth = 0xffffffffffffffff;
34     resultl = 0xffffffff80000000;
35     resultdsp = 0x01;
36     __asm
37         ("mthi  %0, $ac1\n\t"
38          "mtlo  %1, $ac1\n\t"
39          "dpsqx_sa.w.ph $ac1, %3, %4\n\t"
40          "mfhi  %0, $ac1\n\t"
41          "mflo  %1, $ac1\n\t"
42          "rddsp %2\n\t"
43          : "+r"(ach), "+r"(acl), "=r"(dsp)
44          : "r"(rs), "r"(rt)
45         );
46     dsp = (dsp >> 17) & 0x01;
47     if (dsp != resultdsp || ach != resulth || acl != resultl) {
48         printf("dpsqx_sa.w.ph error\n");
49         return -1;
50     }
51
52     return 0;
53 }