s390-ccw.img: replace while loop with a disabled wait on s390 bios
[qemu/agraf.git] / tests / tcg / mips / mips32-dsp / extrv_s_h.c
blobfeac3e2e334ad10668278c8cee995d70eecfb58c
1 #include<stdio.h>
2 #include<assert.h>
4 int main()
6 int rt, rs, ach, acl, dsp;
7 int result;
9 ach = 0x05;
10 acl = 0xB4CB;
11 dsp = 0x07;
12 rs = 0x03;
13 result = 0x00007FFF;
15 __asm
16 ("wrdsp %1, 0x01\n\t"
17 "mthi %3, $ac1\n\t"
18 "mtlo %4, $ac1\n\t"
19 "extrv_s.h %0, $ac1, %2\n\t"
20 "rddsp %1\n\t"
21 : "=r"(rt), "+r"(dsp)
22 : "r"(rs), "r"(ach), "r"(acl)
24 dsp = (dsp >> 23) & 0x01;
25 assert(dsp == 1);
26 assert(result == rt);
28 rs = 0x08;
29 ach = 0xffffffff;
30 acl = 0x12344321;
31 result = 0xFFFF8000;
32 __asm
33 ("wrdsp %1, 0x01\n\t"
34 "mthi %3, $ac1\n\t"
35 "mtlo %4, $ac1\n\t"
36 "extrv_s.h %0, $ac1, %2\n\t"
37 "rddsp %1\n\t"
38 : "=r"(rt), "+r"(dsp)
39 : "r"(rs), "r"(ach), "r"(acl)
41 dsp = (dsp >> 23) & 0x01;
42 assert(dsp == 1);
43 assert(result == rt);
45 /* Clear dsp */
46 dsp = 0;
47 __asm
48 ("wrdsp %0\n\t"
50 : "r"(dsp)
53 rs = 0x04;
54 ach = 0x00;
55 acl = 0x4321;
56 result = 0x432;
57 __asm
58 ("wrdsp %1, 0x01\n\t"
59 "mthi %3, $ac1\n\t"
60 "mtlo %4, $ac1\n\t"
61 "extrv_s.h %0, $ac1, %2\n\t"
62 "rddsp %1\n\t"
63 : "=r"(rt), "+r"(dsp)
64 : "r"(rs), "r"(ach), "r"(acl)
66 dsp = (dsp >> 23) & 0x01;
67 assert(dsp == 0);
68 assert(result == rt);
70 rs = 0x1C;
71 ach = 0x123;
72 acl = 0x87654321;
73 result = 0x1238;
74 __asm
75 ("wrdsp %1, 0x01\n\t"
76 "mthi %3, $ac1\n\t"
77 "mtlo %4, $ac1\n\t"
78 "extrv_s.h %0, $ac1, %2\n\t"
79 "rddsp %1\n\t"
80 : "=r"(rt), "+r"(dsp)
81 : "r"(rs), "r"(ach), "r"(acl)
83 dsp = (dsp >> 23) & 0x01;
84 assert(dsp == 0);
85 assert(result == rt);
87 return 0;