1 #include <stdio.h>
2 #include "macro_fpu.h"
3
main()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