|  | #include "io.h" | 
|  |  | 
|  | int main(void) | 
|  | { | 
|  | long long rs, rt; | 
|  | long long ach = 5, acl = 5; | 
|  | long long resulth, resultl; | 
|  |  | 
|  | rs      = 0xBC0123AD; | 
|  | rt      = 0x01643721; | 
|  | resulth = 0x04; | 
|  | resultl = 0xFFFFFFFFEE9794A3; | 
|  | __asm | 
|  | ("mthi  %0, $ac1\n\t" | 
|  | "mtlo  %1, $ac1\n\t" | 
|  | "dpsq_s.w.ph $ac1, %2, %3\n\t" | 
|  | "mfhi  %0, $ac1\n\t" | 
|  | "mflo  %1, $ac1\n\t" | 
|  | : "+r"(ach), "+r"(acl) | 
|  | : "r"(rs), "r"(rt) | 
|  | ); | 
|  | if ((ach != resulth) || (acl != resultl)) { | 
|  | printf("1 dpsq_s.w.ph wrong\n"); | 
|  |  | 
|  | return -1; | 
|  | } | 
|  |  | 
|  | ach = 0x1424Ef1f; | 
|  | acl = 0x1035219A; | 
|  | rs      = 0x800083AD; | 
|  | rt      = 0x80003721; | 
|  | resulth = 0x1424ef1e; | 
|  | resultl = 0x577ed901; | 
|  |  | 
|  | __asm | 
|  | ("mthi  %0, $ac1\n\t" | 
|  | "mtlo  %1, $ac1\n\t" | 
|  | "dpsq_s.w.ph $ac1, %2, %3\n\t" | 
|  | "mfhi  %0, $ac1\n\t" | 
|  | "mflo  %1, $ac1\n\t" | 
|  | : "+r"(ach), "+r"(acl) | 
|  | : "r"(rs), "r"(rt) | 
|  | ); | 
|  | if ((ach != resulth) || (acl != resultl)) { | 
|  | printf("2 dpsq_s.w.ph wrong\n"); | 
|  |  | 
|  | return -1; | 
|  | } | 
|  |  | 
|  | return 0; | 
|  | } |