xref: /qemu/tests/tcg/mips/user/ase/dsp/test_dsp_r1_shilo.c (revision 073d9f2ce051d7a4bad9aa7bfdacf97394c57c05)
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