1 #include<stdio.h>
2 #include<assert.h>
3
main()4 int main()
5 {
6 int rs, rt;
7 int ach = 5, acl = 5;
8 int resulth, resultl;
9
10 rs = 0xBC0123AD;
11 rt = 0x01643721;
12 resulth = 0x00000004;
13 resultl = 0xF15F94A3;
14 __asm
15 ("mthi %0, $ac1\n\t"
16 "mtlo %1, $ac1\n\t"
17 "dpsq_s.w.ph $ac1, %2, %3\n\t"
18 "mfhi %0, $ac1\n\t"
19 "mflo %1, $ac1\n\t"
20 : "+r"(ach), "+r"(acl)
21 : "r"(rs), "r"(rt)
22 );
23 assert(ach == resulth);
24 assert(acl == resultl);
25
26 ach = 0x1424EF1F;
27 acl = 0x1035219A;
28 rs = 0x800083AD;
29 rt = 0x80003721;
30 resulth = 0x1424EF1E;
31 resultl = 0xC5C0D901;
32 __asm
33 ("mthi %0, $ac1\n\t"
34 "mtlo %1, $ac1\n\t"
35 "dpsq_s.w.ph $ac1, %2, %3\n\t"
36 "mfhi %0, $ac1\n\t"
37 "mflo %1, $ac1\n\t"
38 : "+r"(ach), "+r"(acl)
39 : "r"(rs), "r"(rt)
40 );
41 assert(ach == resulth);
42 assert(acl == resultl);
43
44 return 0;
45 }
46