qemu/tests/tcg/mips/mips64-dsp/absq_s_ob.c
<<
>>
Prefs
   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