1d70080c4SJia Liu #include<stdio.h>
2d70080c4SJia Liu #include<assert.h>
3d70080c4SJia Liu
main()4d70080c4SJia Liu int main()
5d70080c4SJia Liu {
6d70080c4SJia Liu int ach, acl;
7d70080c4SJia Liu int resulth, resultl;
8d70080c4SJia Liu
9d70080c4SJia Liu ach = 0xBBAACCFF;
10d70080c4SJia Liu acl = 0x1C3B001D;
11d70080c4SJia Liu
12d70080c4SJia Liu resulth = 0x17755;
13d70080c4SJia Liu resultl = 0x99fe3876;
14d70080c4SJia Liu
15d70080c4SJia Liu __asm
16d70080c4SJia Liu ("mthi %0, $ac1\n\t"
17d70080c4SJia Liu "mtlo %1, $ac1\n\t"
18d70080c4SJia Liu "shilo $ac1, 0x0F\n\t"
19d70080c4SJia Liu "mfhi %0, $ac1\n\t"
20d70080c4SJia Liu "mflo %1, $ac1\n\t"
21d70080c4SJia Liu : "+r"(ach), "+r"(acl)
22d70080c4SJia Liu );
23d70080c4SJia Liu assert(ach == resulth);
24d70080c4SJia Liu assert(acl == resultl);
25d70080c4SJia Liu
26*19e6c50dSPetar Jovanovic
27*19e6c50dSPetar Jovanovic ach = 0x1;
28*19e6c50dSPetar Jovanovic acl = 0x80000000;
29*19e6c50dSPetar Jovanovic
30*19e6c50dSPetar Jovanovic resulth = 0x3;
31*19e6c50dSPetar Jovanovic resultl = 0x0;
32*19e6c50dSPetar Jovanovic
33*19e6c50dSPetar Jovanovic __asm
34*19e6c50dSPetar Jovanovic ("mthi %0, $ac1\n\t"
35*19e6c50dSPetar Jovanovic "mtlo %1, $ac1\n\t"
36*19e6c50dSPetar Jovanovic "shilo $ac1, -1\n\t"
37*19e6c50dSPetar Jovanovic "mfhi %0, $ac1\n\t"
38*19e6c50dSPetar Jovanovic "mflo %1, $ac1\n\t"
39*19e6c50dSPetar Jovanovic : "+r"(ach), "+r"(acl)
40*19e6c50dSPetar Jovanovic );
41*19e6c50dSPetar Jovanovic assert(ach == resulth);
42*19e6c50dSPetar Jovanovic assert(acl == resultl);
43*19e6c50dSPetar Jovanovic
44d70080c4SJia Liu return 0;
45d70080c4SJia Liu }
46