]>
Commit | Line | Data |
---|---|---|
d70080c4 JL |
1 | #include<stdio.h> |
2 | #include<assert.h> | |
3 | ||
4 | int main() | |
5 | { | |
6 | int rt, rs; | |
7 | int achi, acli; | |
8 | int dsp; | |
9 | int acho, aclo; | |
10 | int resulth, resultl; | |
11 | int resdsp; | |
12 | ||
b1ca31d7 PJ |
13 | achi = 0x00000000; |
14 | acli = 0x0000B4CB; | |
15 | rs = 0x0000FF06; | |
16 | rt = 0x0000CB00; | |
17 | resulth = 0x00000000; | |
18 | resultl = 0x006838CB; | |
d70080c4 JL |
19 | |
20 | __asm | |
21 | ("mthi %2, $ac1\n\t" | |
22 | "mtlo %3, $ac1\n\t" | |
23 | "maq_sa.w.phr $ac1, %4, %5\n\t" | |
24 | "mfhi %0, $ac1\n\t" | |
25 | "mflo %1, $ac1\n\t" | |
26 | : "=r"(acho), "=r"(aclo) | |
27 | : "r"(achi), "r"(acli), "r"(rs), "r"(rt) | |
28 | ); | |
29 | assert(resulth == acho); | |
30 | assert(resultl == aclo); | |
31 | ||
b1ca31d7 PJ |
32 | achi = 0x00000000; |
33 | acli = 0x0000B4CB; | |
34 | rs = 0x00008000; | |
35 | rt = 0x00008000; | |
36 | resulth = 0x00000000; | |
37 | resultl = 0x7FFFFFFF; | |
d70080c4 JL |
38 | resdsp = 0x01; |
39 | ||
40 | __asm | |
41 | ("mthi %3, $ac1\n\t" | |
42 | "mtlo %4, $ac1\n\t" | |
43 | "maq_sa.w.phr $ac1, %5, %6\n\t" | |
44 | "mfhi %0, $ac1\n\t" | |
45 | "mflo %1, $ac1\n\t" | |
46 | "rddsp %2\n\t" | |
47 | : "=r"(acho), "=r"(aclo), "=r"(dsp) | |
48 | : "r"(achi), "r"(acli), "r"(rs), "r"(rt) | |
49 | ); | |
50 | assert(resulth == acho); | |
51 | assert(resultl == aclo); | |
52 | assert(((dsp >> 17) & 0x01) == 0x01); | |
53 | ||
54 | return 0; | |
55 | } |