Add qemu 2.4.0
[kvmfornfv.git] / qemu / tests / tcg / mips / mips64-dsp / absq_s_ob.c
1 #include "io.h"
2
3 int main(void)
4 {
5     long long rd, rt, result, dspcontrol;
6     rt = 0x7F7F7F7F7F7F7F7F;
7     result = 0x7F7F7F7F7F7F7F7F;
8
9
10     __asm
11         (".set mips64\n\t"
12          "absq_s.ob %0 %1\n\t"
13          : "=r"(rd)
14          : "r"(rt)
15         );
16
17     if (result != rd) {
18         printf("absq_s.ob test 1 error\n");
19
20         return -1;
21     }
22
23     __asm
24         ("rddsp %0\n\t"
25          : "=r"(rd)
26         );
27     rd >> 20;
28     rd = rd & 0x1;
29     if (rd != 0) {
30         printf("absq_s.ob test 1 dspcontrol overflow flag error\n");
31
32         return -1;
33     }
34
35     rt = 0x80FFFFFFFFFFFFFF;
36     result = 0x7F01010101010101;
37
38     __asm
39         ("absq_s.ob %0, %1\n\t"
40          : "=r"(rd)
41          : "r"(rt)
42         );
43     if (result != rd) {
44         printf("absq_s.ob test 2 error\n");
45
46         return -1;
47     }
48
49     __asm
50         ("rddsp %0\n\t"
51          : "=r"(rd)
52         );
53     rd = rd >> 20;
54     rd = rd & 0x1;
55     if (rd != 1) {
56         printf("absq_s.ob test 2 dspcontrol overflow flag error\n");
57
58         return -1;
59     }
60
61     return 0;
62 }
63