1 #include<stdio.h> 2 #include<assert.h> 3 4 int main() 5 { 6 int rd, rs, rt; 7 int dsp; 8 int result; 9 10 rs = 0x12345678; 11 rt = 0x87654321; 12 result = 0x12348765; 13 14 __asm 15 ("wrdsp $0\n\t" 16 "precrq_rs.ph.w %0, %1, %2\n\t" 17 : "=r"(rd) 18 : "r"(rs), "r"(rt) 19 ); 20 assert(result == rd); 21 22 rs = 0x7FFFC678; 23 rt = 0x865432A0; 24 result = 0x7FFF8654; 25 26 __asm 27 ("wrdsp $0\n\t" 28 "precrq_rs.ph.w %0, %2, %3\n\t" 29 "rddsp %1\n\t" 30 : "=r"(rd), "=r"(dsp) 31 : "r"(rs), "r"(rt) 32 ); 33 assert(((dsp >> 22) & 0x01) == 1); 34 assert(result == rd); 35 36 rs = 0xBEEFFEED; 37 rt = 0x7FFF8000; 38 result = 0xBEF07FFF; 39 40 __asm 41 ("wrdsp $0\n\t" 42 "precrq_rs.ph.w %0, %2, %3\n\t" 43 "rddsp %1\n\t" 44 : "=r"(rd), "=r"(dsp) 45 : "r"(rs), "r"(rt) 46 ); 47 assert(((dsp >> 22) & 0x01) == 1); 48 assert(result == rd); 49 50 return 0; 51 } 52