1 #include<stdio.h> 2 #include<assert.h> 3 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