blob: e1d6cea4b6de538f907dc756c71df35615c5178a [file] [log] [blame]
Jia Liud70080c2012-10-24 22:17:13 +08001#include<stdio.h>
2#include<assert.h>
3
4int main()
5{
6 int rs, ach, acl;
7 int resulth, resultl;
8
9 rs = 0x0F;
10 ach = 0xBBAACCFF;
11 acl = 0x1C3B001D;
12
13 resulth = 0x17755;
14 resultl = 0x99fe3876;
15
16 __asm
17 ("mthi %0, $ac1\n\t"
18 "mtlo %1, $ac1\n\t"
19 "shilov $ac1, %2\n\t"
20 "mfhi %0, $ac1\n\t"
21 "mflo %1, $ac1\n\t"
22 : "+r"(ach), "+r"(acl)
23 : "r"(rs)
24 );
25 assert(ach == resulth);
26 assert(acl == resultl);
27
Petar Jovanovic19e6c502012-12-05 00:29:10 +010028
29 rs = 0xffffffff;
30 ach = 0x1;
31 acl = 0x80000000;
32
33 resulth = 0x3;
34 resultl = 0x0;
35
36 __asm
37 ("mthi %0, $ac1\n\t"
38 "mtlo %1, $ac1\n\t"
39 "shilov $ac1, %2\n\t"
40 "mfhi %0, $ac1\n\t"
41 "mflo %1, $ac1\n\t"
42 : "+r"(ach), "+r"(acl)
43 : "r"(rs)
44 );
45 assert(ach == resulth);
46 assert(acl == resultl);
47
Jia Liud70080c2012-10-24 22:17:13 +080048 return 0;
49}