1#include "io.h" 2 3int main(void) 4{ 5 long long rt, dsp; 6 long long achi, acli; 7 long long res, resdsp; 8 9 achi = 0x87654321; 10 acli = 0x12345678; 11 12 res = 0x8000000000000000; 13 resdsp = 0x1; 14 15 __asm 16 ("mthi %2, $ac1\n\t" 17 "mtlo %3, $ac1\n\t" 18 "dextr_rs.l %0, $ac1, 0x8\n\t" 19 "rddsp %1\n\t" 20 : "=r"(rt), "=r"(dsp) 21 : "r"(achi), "r"(acli) 22 ); 23 dsp = (dsp >> 23) & 0x1; 24 25 if ((dsp != resdsp) || (rt != res)) { 26 printf("dextr_rs.l error\n"); 27 return -1; 28 } 29 30 achi = 0x00; 31 acli = 0x12345678; 32 33 res = 0x12345678; 34 resdsp = 0x1; 35 36 __asm 37 ("mthi %2, $ac1\n\t" 38 "mtlo %3, $ac1\n\t" 39 "dextr_rs.l %0, $ac1, 0x0\n\t" 40 "rddsp %1\n\t" 41 : "=r"(rt), "=r"(dsp) 42 : "r"(achi), "r"(acli) 43 ); 44 dsp = (dsp >> 23) & 0x1; 45 46 if ((dsp != resdsp) || (rt != res)) { 47 printf("dextr_rs.l error\n"); 48 return -1; 49 } 50 51 return 0; 52} 53