qemu/tests/tcg/mips/user/ase/dsp/test_dsp_r1_precrq_rs_ph_w.c
<<
>>
Prefs
   1#include<stdio.h>
   2#include<assert.h>
   3
   4int 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