qemu/tests/tcg/mips/user/ase/dsp/test_dsp_r2_mul_ph.c
<<
>>
Prefs
   1#include<stdio.h>
   2#include<assert.h>
   3
   4int main()
   5{
   6    int rd, rs, rt, dsp;
   7    int result, resultdsp;
   8
   9    rs = 0x03FB1234;
  10    rt = 0x0BCC4321;
  11    result = 0xF504F4B4;
  12    resultdsp = 1;
  13
  14    __asm
  15        ("mul.ph %0, %2, %3\n\t"
  16         "rddsp %1\n\t"
  17         : "=r"(rd), "=r"(dsp)
  18         : "r"(rs), "r"(rt)
  19        );
  20    dsp = (dsp >> 21) & 0x01;
  21    assert(rd  == result);
  22    assert(dsp == resultdsp);
  23
  24    dsp = 0;
  25    __asm
  26        ("wrdsp %0\n\t"
  27         :
  28         : "r"(dsp)
  29        );
  30
  31    rs = 0x00210010;
  32    rt = 0x00110005;
  33    result = 0x2310050;
  34    resultdsp = 0;
  35
  36    __asm
  37        ("mul.ph %0, %2, %3\n\t"
  38         "rddsp %1\n\t"
  39         : "=r"(rd), "=r"(dsp)
  40         : "r"(rs), "r"(rt)
  41        );
  42    dsp = (dsp >> 21) & 0x01;
  43    assert(rd  == result);
  44    assert(dsp == resultdsp);
  45
  46    return 0;
  47}
  48