Jia Liu | d70080c | 2012-10-24 22:17:13 +0800 | [diff] [blame] | 1 | #include<stdio.h> |
2 | #include<assert.h> | ||||
3 | |||||
4 | int main() | ||||
5 | { | ||||
6 | int rd, rs, rt; | ||||
7 | int dsp; | ||||
8 | int result; | ||||
9 | |||||
10 | rs = 0x00FE00FE; | ||||
11 | rt = 0x00020001; | ||||
12 | result = 0x010000FF; | ||||
13 | __asm | ||||
14 | ("addu_s.ph %0, %1, %2\n\t" | ||||
15 | : "=r"(rd) | ||||
16 | : "r"(rs), "r"(rt) | ||||
17 | ); | ||||
18 | assert(rd == result); | ||||
19 | |||||
20 | rs = 0xFFFF1111; | ||||
21 | rt = 0x00020001; | ||||
22 | result = 0xFFFF1112; | ||||
23 | __asm | ||||
24 | ("addu_s.ph %0, %2, %3\n\t" | ||||
25 | "rddsp %1\n\t" | ||||
26 | : "=r"(rd), "=r"(dsp) | ||||
27 | : "r"(rs), "r"(rt) | ||||
28 | ); | ||||
29 | assert(rd == result); | ||||
30 | assert(((dsp >> 20) & 0x01) == 1); | ||||
31 | |||||
32 | return 0; | ||||
33 | } |