qemu

FORK: QEMU emulator
git clone https://git.neptards.moe/neptards/qemu.git
Log | Files | Refs | Submodules | LICENSE

test_dsp_r1_extp.c (1203B)


      1 #include<stdio.h>
      2 #include<assert.h>
      3 
      4 int main()
      5 {
      6     int rt, ach, acl, dsp;
      7     int result;
      8 
      9     ach = 0x05;
     10     acl = 0xB4CB;
     11     dsp = 0x07;
     12     result = 0x000C;
     13 
     14     __asm
     15         ("wrdsp %1, 0x01\n\t"
     16          "mthi %2, $ac1\n\t"
     17          "mtlo %3, $ac1\n\t"
     18          "extp %0, $ac1, 0x03\n\t"
     19          "rddsp %1\n\t"
     20          : "=r"(rt), "+r"(dsp)
     21          : "r"(ach), "r"(acl)
     22         );
     23     dsp = (dsp >> 14) & 0x01;
     24     assert(dsp == 0);
     25     assert(result == rt);
     26 
     27     ach = 0x05;
     28     acl = 0xB4CB;
     29     dsp = 0x01;
     30 
     31     __asm
     32         ("wrdsp %1, 0x01\n\t"
     33          "mthi %2, $ac1\n\t"
     34          "mtlo %3, $ac1\n\t"
     35          "extp %0, $ac1, 0x03\n\t"
     36          "rddsp %1\n\t"
     37          : "=r"(rt), "+r"(dsp)
     38          : "r"(ach), "r"(acl)
     39         );
     40     dsp = (dsp >> 14) & 0x01;
     41     assert(dsp == 1);
     42 
     43     ach = 0;
     44     acl = 0x80000001;
     45     dsp = 0x1F;
     46     result = 0x80000001;
     47 
     48     __asm
     49         ("wrdsp %1\n\t"
     50          "mthi %2, $ac2\n\t"
     51          "mtlo %3, $ac2\n\t"
     52          "extp %0, $ac2, 0x1F\n\t"
     53          "rddsp %1\n\t"
     54          : "=r"(rt), "+r"(dsp)
     55          : "r"(ach), "r"(acl)
     56         );
     57     dsp = (dsp >> 14) & 0x01;
     58     assert(dsp == 0);
     59     assert(result == rt);
     60 
     61     return 0;
     62 }