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