1#include "io.h" 2 3int main(void) 4{ 5 long long rd, rt, result, dspcontrol; 6 rt = 0x7F7F7F7F7F7F7F7F; 7 result = 0x7F7F7F7F7F7F7F7F; 8 9 10 __asm 11 (".set mips64\n\t" 12 "absq_s.ob %0 %1\n\t" 13 : "=r"(rd) 14 : "r"(rt) 15 ); 16 17 if (result != rd) { 18 printf("absq_s.ob test 1 error\n"); 19 20 return -1; 21 } 22 23 __asm 24 ("rddsp %0\n\t" 25 : "=r"(rd) 26 ); 27 rd >> 20; 28 rd = rd & 0x1; 29 if (rd != 0) { 30 printf("absq_s.ob test 1 dspcontrol overflow flag error\n"); 31 32 return -1; 33 } 34 35 rt = 0x80FFFFFFFFFFFFFF; 36 result = 0x7F01010101010101; 37 38 __asm 39 ("absq_s.ob %0, %1\n\t" 40 : "=r"(rd) 41 : "r"(rt) 42 ); 43 if (result != rd) { 44 printf("absq_s.ob test 2 error\n"); 45 46 return -1; 47 } 48 49 __asm 50 ("rddsp %0\n\t" 51 : "=r"(rd) 52 ); 53 rd = rd >> 20; 54 rd = rd & 0x1; 55 if (rd != 1) { 56 printf("absq_s.ob test 2 dspcontrol overflow flag error\n"); 57 58 return -1; 59 } 60 61 return 0; 62} 63 64