1 #include<stdio.h>
2 #include<assert.h>
3
main()4 int main()
5 {
6 int rd, rs, rt;
7 int dsp;
8 int result;
9
10 rs = 0xFFFFFFFF;
11 rt = 0x10101010;
12 result = 0x100F100F;
13 __asm
14 ("addq_s.ph %0, %1, %2\n\t"
15 : "=r"(rd)
16 : "r"(rs), "r"(rt)
17 );
18 assert(result == rd);
19
20 rs = 0x3712847D;
21 rt = 0x0031AF2D;
22 result = 0x37438000;
23 __asm
24 ("addq_s.ph %0, %1, %2\n\t"
25 : "=r"(rd)
26 : "r"(rs), "r"(rt)
27 );
28 assert(result == rd);
29
30 __asm
31 ("rddsp %0\n\t"
32 : "=r"(dsp)
33 );
34 assert(((dsp >> 20) & 0x01) == 1);
35
36 rs = 0x7fff847D;
37 rt = 0x0031AF2D;
38 result = 0x7fff8000;
39 __asm
40 ("addq_s.ph %0, %1, %2\n\t"
41 : "=r"(rd)
42 : "r"(rs), "r"(rt)
43 );
44 assert(result == rd);
45
46 __asm
47 ("rddsp %0\n\t"
48 : "=r"(dsp)
49 );
50 assert(((dsp >> 20) & 0x01) == 1);
51
52 rs = 0x8030847D;
53 rt = 0x8a00AF2D;
54 result = 0x80008000;
55 __asm
56 ("addq_s.ph %0, %1, %2\n\t"
57 : "=r"(rd)
58 : "r"(rs), "r"(rt)
59 );
60 assert(result == rd);
61
62 __asm
63 ("rddsp %0\n\t"
64 : "=r"(dsp)
65 );
66 assert(((dsp >> 20) & 0x01) == 1);
67
68 return 0;
69 }
70