1#include<stdio.h> 2#include<assert.h> 3 4int main() 5{ 6 int rs, rt; 7 int ach = 5, acl = 5; 8 int resulth, resultl; 9 10 rs = 0x00FF00FF; 11 rt = 0x00010002; 12 resulth = 0x04; 13 resultl = 0xFFFFFD08; 14 __asm 15 ("mthi %0, $ac1\n\t" 16 "mtlo %1, $ac1\n\t" 17 "dps.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 = 6, acl = 7; 27 rs = 0xFFFF00FF; 28 rt = 0xFFFF0002; 29 resulth = 0x05; 30 resultl = 0xFFFFFE08; 31 __asm 32 ("mthi %0, $ac1\n\t" 33 "mtlo %1, $ac1\n\t" 34 "dps.w.ph $ac1, %2, %3\n\t" 35 "mfhi %0, $ac1\n\t" 36 "mflo %1, $ac1\n\t" 37 : "+r"(ach), "+r"(acl) 38 : "r"(rs), "r"(rt) 39 ); 40 assert(ach == resulth); 41 assert(acl == resultl); 42 43 return 0; 44} 45