Add qemu 2.4.0
[kvmfornfv.git] / qemu / tests / tcg / mips / mips64-dsp / mulsaq_s_l_pw.c
1 #include "io.h"
2
3 int main(void)
4 {
5     long long rs, rt, dsp;
6     long long achi, acli;
7     long long acho, aclo;
8     long long resl, resh;
9
10     achi = 0x4;
11     acli = 0x4;
12
13     rs = 0x1234567887654321;
14     rt = 0x8765432112345678;
15
16     resh = 0x4;
17     resl = 0x4;
18     __asm
19         ("mthi %2, $ac1\n\t"
20          "mtlo %3, $ac1\n\t"
21          "mulsaq_s.l.pw $ac1, %4, %5\n\t"
22          "mfhi %0, $ac1\n\t"
23          "mflo %1, $ac1\n\t"
24          : "=r"(acho), "=r"(aclo)
25          : "r"(achi), "r"(acli), "r"(rs), "r"(rt)
26         );
27
28     if ((acho != resh) || (aclo != resl)) {
29         printf("1 mulsaq_s.l.pw wrong\n");
30
31         return -1;
32     }
33
34     achi = 0x4;
35     acli = 0x4;
36
37     rs = 0x8000000087654321;
38     rt = 0x8000000012345678;
39
40     resh = 0x4;
41     resl = 0x1e8ee513;
42     __asm
43         ("mthi %3, $ac1\n\t"
44          "mtlo %4, $ac1\n\t"
45          "mulsaq_s.l.pw $ac1, %5, %6\n\t"
46          "mfhi %0, $ac1\n\t"
47          "mflo %1, $ac1\n\t"
48          "rddsp %2\n\t"
49          : "=r"(acho), "=r"(aclo), "=r"(dsp)
50          : "r"(achi), "r"(acli), "r"(rs), "r"(rt)
51         );
52     dsp = (dsp >> 17) & 0x1;
53     if ((dsp != 0x1) || (acho != resh) || (aclo != resl)) {
54         printf("2 mulsaq_s.l.pw wrong\n");
55
56         return -1;
57     }
58     return 0;
59 }