1 #include<stdio.h>
2 #include<assert.h>
3
main()4 int main()
5 {
6 int rd, rs, rt, dsp;
7 int result, resultdsp;
8
9 rs = 0x12345678;
10 rt = 0x87654321;
11 result = 0x7FFF1357;
12 resultdsp = 0x01;
13
14 __asm
15 ("wrdsp $0\n\t"
16 "subq_s.ph %0, %2, %3\n\t"
17 "rddsp %1\n\t"
18 : "=r"(rd), "=r"(dsp)
19 : "r"(rs), "r"(rt)
20 );
21 dsp = (dsp >> 20) & 0x01;
22 assert(dsp == resultdsp);
23 assert(rd == result);
24
25 rs = 0x12348000;
26 rt = 0x87657000;
27 result = 0x7FFF8000;
28 resultdsp = 0x01;
29
30 __asm
31 ("wrdsp $0\n\t"
32 "subq_s.ph %0, %2, %3\n\t"
33 "rddsp %1\n\t"
34 : "=r"(rd), "=r"(dsp)
35 : "r"(rs), "r"(rt)
36 );
37 dsp = (dsp >> 20) & 0x01;
38 assert(dsp == resultdsp);
39 assert(rd == result);
40
41 rs = 0x12340000;
42 rt = 0x87658000;
43 result = 0x7FFF7FFF;
44 resultdsp = 0x01;
45
46 __asm
47 ("wrdsp $0\n\t"
48 "subq_s.ph %0, %2, %3\n\t"
49 "rddsp %1\n\t"
50 : "=r"(rd), "=r"(dsp)
51 : "r"(rs), "r"(rt)
52 );
53 dsp = (dsp >> 20) & 0x01;
54 assert(dsp == resultdsp);
55 assert(rd == result);
56
57 return 0;
58 }
59