#include "io.h" int main(void) { long long rd, rt, result, dspcontrol; rt = 0x7F7F7F7F7F7F7F7F; result = 0x7F7F7F7F7F7F7F7F; __asm (".set mips64\n\t" "absq_s.ob %0 %1\n\t" : "=r"(rd) : "r"(rt) ); if (result != rd) { printf("absq_s.ob test 1 error\n"); return -1; } __asm ("rddsp %0\n\t" : "=r"(rd) ); rd >> 20; rd = rd & 0x1; if (rd != 0) { printf("absq_s.ob test 1 dspcontrol overflow flag error\n"); return -1; } rt = 0x80FFFFFFFFFFFFFF; result = 0x7F01010101010101; __asm ("absq_s.ob %0, %1\n\t" : "=r"(rd) : "r"(rt) ); if (result != rd) { printf("absq_s.ob test 2 error\n"); return -1; } __asm ("rddsp %0\n\t" : "=r"(rd) ); rd = rd >> 20; rd = rd & 0x1; if (rd != 1) { printf("absq_s.ob test 2 dspcontrol overflow flag error\n"); return -1; } return 0; }