Add qemu 2.4.0
[kvmfornfv.git] / qemu / tests / tcg / mips / mips32-dspr2 / dpaqx_sa_w_ph.c
1 #include<stdio.h>
2 #include<assert.h>
3
4 int main()
5 {
6     int rs, rt, dsp;
7     int ach, acl;
8     int resulth, resultl, resultdsp;
9
10     ach = 0x00000005;
11     acl = 0x00000005;
12     rs     = 0x00FF00FF;
13     rt     = 0x00010002;
14     resulth = 0x00;
15     resultl = 0x7FFFFFFF;
16     resultdsp = 0x01;
17     dsp = 0;
18     __asm
19         ("wrdsp %2\n\t"
20          "mthi  %0, $ac1\n\t"
21          "mtlo  %1, $ac1\n\t"
22          "dpaqx_sa.w.ph $ac1, %3, %4\n\t"
23          "mfhi  %0, $ac1\n\t"
24          "mflo  %1, $ac1\n\t"
25          "rddsp %2\n\t"
26          : "+r"(ach), "+r"(acl), "+r"(dsp)
27          : "r"(rs), "r"(rt)
28         );
29     assert(dsp >> (16 + 1) == resultdsp);
30     assert(ach == resulth);
31     assert(acl == resultl);
32
33     ach = 0x00000009;
34     acl = 0x0000000B;
35     rs     = 0x800000FF;
36     rt     = 0x00018000;
37     resulth = 0x00;
38     resultl = 0x7FFFFFFF;
39     resultdsp = 0x01;
40     dsp = 0;
41     __asm
42         ("wrdsp %2\n\t"
43          "mthi  %0, $ac1\n\t"
44          "mtlo  %1, $ac1\n\t"
45          "dpaqx_sa.w.ph $ac1, %3, %4\n\t"
46          "mfhi  %0, $ac1\n\t"
47          "mflo  %1, $ac1\n\t"
48          "rddsp %2\n\t"
49          : "+r"(ach), "+r"(acl), "+r"(dsp)
50          : "r"(rs), "r"(rt)
51         );
52     assert(dsp >> (16 + 1) == resultdsp);
53     assert(ach == resulth);
54     assert(acl == resultl);
55
56     return 0;
57 }