Home | History | Annotate | Download | only in mips64
      1 #include <stdio.h>
      2 #include "macro_fpu.h"
      3 
      4 int main()
      5 {
      6    int i = 0;
      7 
      8    printf("--- BC1F ---  if fs == ft then " \
      9           "out = ft else out = fs + ft\n");
     10    for (i = 0; i < MAX_ARR; i++) {
     11       TESTINST1s("bc1f", i);
     12       TESTINST1d("bc1f", i);
     13    }
     14 
     15    printf("--- BC1T ---  if fs != ft then " \
     16           "out = fs + ft else out = ft\n");
     17    for (i = 0; i < MAX_ARR; i++) {
     18       TESTINST1s("bc1t", i);
     19       TESTINST1d("bc1t", i);
     20    }
     21 
     22    printf("--- BC1FL ---  if fs == ft then " \
     23           "out = ft else out = fs + ft\n");
     24    for (i = 0; i < MAX_ARR; i++) {
     25       TESTINST2s("bc1fl", i);
     26       TESTINST2d("bc1fl", i);
     27    }
     28 
     29    printf("--- BC1TL ---  if fs != ft then " \
     30           "out = ft else out = fs + ft\n");
     31    for (i = 0; i < MAX_ARR; i++) {
     32       TESTINST2s("bc1tl", i);
     33       TESTINST2d("bc1tl", i);
     34    }
     35 
     36    printf("--- C.F.S/D ---  if false then " \
     37           "out = fs + ft else out = fs\n");
     38    for (i = 0; i < MAX_ARR; i++) {
     39       TESTINST_CONDs("c.f.s", i);
     40       TESTINST_CONDd("c.f.d", i);
     41    }
     42 
     43    printf("--- C.UN.S/D ---  if unordered(fs, ft) then " \
     44           "out = fs + ft else out = fs\n");
     45    for (i = 0; i < MAX_ARR; i++) {
     46       TESTINST_CONDs("c.un.s", i);
     47       TESTINST_CONDd("c.un.d", i);
     48    }
     49 
     50    printf("--- C.EQ.S/D ---  if fs == ft then " \
     51           "out = fs + ft else out = fs\n");
     52    for (i = 0; i < MAX_ARR; i++) {
     53       TESTINST_CONDs("c.eq.s", i);
     54       TESTINST_CONDd("c.eq.d", i);
     55    }
     56 
     57    printf("--- C.UEQ.S/D ---  if (unordered(fs, ft) or (fs == ft)) then " \
     58           "out = fs + ft else out = fs\n");
     59    for (i = 0; i < MAX_ARR; i++) {
     60       TESTINST_CONDs("c.ueq.s", i);
     61       TESTINST_CONDd("c.ueq.d", i);
     62    }
     63 
     64    printf("--- C.OLT.S/D ---  if (ordered(fs, ft) or (fs < ft)) then " \
     65           "out = fs + ft else out = fs\n");
     66    for (i = 0; i < MAX_ARR; i++) {
     67       TESTINST_CONDs("c.olt.s", i);
     68       TESTINST_CONDd("c.olt.d", i);
     69    }
     70 
     71    printf("--- C.ULT.S/D ---  if (unordered(fs, ft) or (fs < ft)) then " \
     72           "out = fs + ft else out = fs\n");
     73    for (i = 0; i < MAX_ARR; i++) {
     74       TESTINST_CONDs("c.ult.s", i);
     75       TESTINST_CONDd("c.ult.d", i);
     76    }
     77 
     78    printf("--- C.OLE.S/D ---  if (ordered(fs, ft) or (fs <= ft)) then " \
     79           "out = fs + ft else out = fs\n");
     80    for (i = 0; i < MAX_ARR; i++) {
     81       TESTINST_CONDs("c.ole.s", i);
     82       TESTINST_CONDd("c.ole.d", i);
     83    }
     84 
     85    printf("--- C.ULE.S/D ---  if (unordered(fs, ft) or (fs <= ft)) then " \
     86           "out = fs + ft else out = fs\n");
     87    for (i = 0; i < MAX_ARR; i++) {
     88       TESTINST_CONDs("c.ule.s", i);
     89       TESTINST_CONDd("c.ule.d", i);
     90    }
     91 
     92    printf("--- C.SF.S/D ---  if signaling false then " \
     93           "out = fs + ft else out = fs\n");
     94    for (i = 0; i < MAX_ARR; i++) {
     95       TESTINST_CONDs("c.sf.s", i);
     96       TESTINST_CONDd("c.sf.d", i);
     97    }
     98 
     99    printf("--- C.NGLE.S/D --- if not ((fs > ft) or (fs <= ft)) then " \
    100           "out = fs + ft else out = fs\n");
    101    for (i = 0; i < MAX_ARR; i++) {
    102       TESTINST_CONDs("c.ngle.s", i);
    103       TESTINST_CONDd("c.ngle.d", i);
    104    }
    105 
    106    printf("--- C.SEQ.S/D ---  if signaling equal then " \
    107           "out = fs + ft else out = fs\n");
    108    for (i = 0; i < MAX_ARR; i++) {
    109       TESTINST_CONDs("c.seq.s", i);
    110       TESTINST_CONDd("c.seq.d", i);
    111    }
    112 
    113    printf("--- C.NGL.S/D ---  if not ((fs > ft) or (fs < ft)) then " \
    114           "out = fs + ft else out = fs\n");
    115    for (i = 0; i < MAX_ARR; i++) {
    116       TESTINST_CONDs("c.ngl.s", i);
    117       TESTINST_CONDd("c.ngl.d", i);
    118    }
    119 
    120    printf("--- C.LT.S/D ---  if fs < ft then " \
    121           "out = fs + ft else out = fs\n");
    122    for (i = 0; i < MAX_ARR; i++) {
    123       TESTINST_CONDs("c.lt.s", i);
    124       TESTINST_CONDd("c.lt.d", i);
    125    }
    126 
    127    printf("--- C.NGE.S/D ---  if not (fs >= ft) then " \
    128           "out = fs + ft else out = fs\n");
    129    for (i = 0; i < MAX_ARR; i++) {
    130       TESTINST_CONDs("c.nge.s", i);
    131       TESTINST_CONDd("c.nge.d", i);
    132    }
    133 
    134    printf("--- C.LE.S/D ---  if fs <= ft then " \
    135           "out = fs + ft else out = fs\n");
    136    for (i = 0; i < MAX_ARR; i++) {
    137       TESTINST_CONDs("c.le.s", i);
    138       TESTINST_CONDd("c.le.d", i);
    139    }
    140 
    141    printf("--- C.NGT.S/D ---  if not (fs > ft) then " \
    142           "out = fs + ft else out = fs\n");
    143    for (i = 0; i < MAX_ARR; i++) {
    144       TESTINST_CONDs("c.ngt.s", i);
    145       TESTINST_CONDd("c.ngt.d", i);
    146    }
    147    return 0;
    148 }
    149 
    150