• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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