root / target-openrisc / fpu_helper.c @ 45724d6d
History | View | Annotate | Download (14.5 kB)
1 | 5b569507 | Jia Liu | /*
|
---|---|---|---|
2 | 5b569507 | Jia Liu | * OpenRISC float helper routines
|
3 | 5b569507 | Jia Liu | *
|
4 | 5b569507 | Jia Liu | * Copyright (c) 2011-2012 Jia Liu <proljc@gmail.com>
|
5 | 5b569507 | Jia Liu | * Feng Gao <gf91597@gmail.com>
|
6 | 5b569507 | Jia Liu | *
|
7 | 5b569507 | Jia Liu | * This library is free software; you can redistribute it and/or
|
8 | 5b569507 | Jia Liu | * modify it under the terms of the GNU Lesser General Public
|
9 | 5b569507 | Jia Liu | * License as published by the Free Software Foundation; either
|
10 | 5b569507 | Jia Liu | * version 2 of the License, or (at your option) any later version.
|
11 | 5b569507 | Jia Liu | *
|
12 | 5b569507 | Jia Liu | * This library is distributed in the hope that it will be useful,
|
13 | 5b569507 | Jia Liu | * but WITHOUT ANY WARRANTY; without even the implied warranty of
|
14 | 5b569507 | Jia Liu | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
15 | 5b569507 | Jia Liu | * Lesser General Public License for more details.
|
16 | 5b569507 | Jia Liu | *
|
17 | 5b569507 | Jia Liu | * You should have received a copy of the GNU Lesser General Public
|
18 | 5b569507 | Jia Liu | * License along with this library; if not, see <http://www.gnu.org/licenses/>.
|
19 | 5b569507 | Jia Liu | */
|
20 | 5b569507 | Jia Liu | |
21 | 5b569507 | Jia Liu | #include "cpu.h" |
22 | 5b569507 | Jia Liu | #include "helper.h" |
23 | 5b569507 | Jia Liu | #include "exception.h" |
24 | 5b569507 | Jia Liu | |
25 | 5b569507 | Jia Liu | static inline uint32_t ieee_ex_to_openrisc(OpenRISCCPU *cpu, int fexcp) |
26 | 5b569507 | Jia Liu | { |
27 | 5b569507 | Jia Liu | int ret = 0; |
28 | 5b569507 | Jia Liu | if (fexcp) {
|
29 | 5b569507 | Jia Liu | if (fexcp & float_flag_invalid) {
|
30 | 5b569507 | Jia Liu | cpu->env.fpcsr |= FPCSR_IVF; |
31 | 5b569507 | Jia Liu | ret = 1;
|
32 | 5b569507 | Jia Liu | } |
33 | 5b569507 | Jia Liu | if (fexcp & float_flag_overflow) {
|
34 | 5b569507 | Jia Liu | cpu->env.fpcsr |= FPCSR_OVF; |
35 | 5b569507 | Jia Liu | ret = 1;
|
36 | 5b569507 | Jia Liu | } |
37 | 5b569507 | Jia Liu | if (fexcp & float_flag_underflow) {
|
38 | 5b569507 | Jia Liu | cpu->env.fpcsr |= FPCSR_UNF; |
39 | 5b569507 | Jia Liu | ret = 1;
|
40 | 5b569507 | Jia Liu | } |
41 | 5b569507 | Jia Liu | if (fexcp & float_flag_divbyzero) {
|
42 | 5b569507 | Jia Liu | cpu->env.fpcsr |= FPCSR_DZF; |
43 | 5b569507 | Jia Liu | ret = 1;
|
44 | 5b569507 | Jia Liu | } |
45 | 5b569507 | Jia Liu | if (fexcp & float_flag_inexact) {
|
46 | 5b569507 | Jia Liu | cpu->env.fpcsr |= FPCSR_IXF; |
47 | 5b569507 | Jia Liu | ret = 1;
|
48 | 5b569507 | Jia Liu | } |
49 | 5b569507 | Jia Liu | } |
50 | 5b569507 | Jia Liu | |
51 | 5b569507 | Jia Liu | return ret;
|
52 | 5b569507 | Jia Liu | } |
53 | 5b569507 | Jia Liu | |
54 | 5b569507 | Jia Liu | static inline void update_fpcsr(OpenRISCCPU *cpu) |
55 | 5b569507 | Jia Liu | { |
56 | 5b569507 | Jia Liu | int tmp = ieee_ex_to_openrisc(cpu,
|
57 | 5b569507 | Jia Liu | get_float_exception_flags(&cpu->env.fp_status)); |
58 | 5b569507 | Jia Liu | |
59 | 5b569507 | Jia Liu | SET_FP_CAUSE(cpu->env.fpcsr, tmp); |
60 | 5b569507 | Jia Liu | if ((GET_FP_ENABLE(cpu->env.fpcsr) & tmp) &&
|
61 | 5b569507 | Jia Liu | (cpu->env.fpcsr & FPCSR_FPEE)) { |
62 | 5b569507 | Jia Liu | helper_exception(&cpu->env, EXCP_FPE); |
63 | 5b569507 | Jia Liu | } else {
|
64 | 5b569507 | Jia Liu | UPDATE_FP_FLAGS(cpu->env.fpcsr, tmp); |
65 | 5b569507 | Jia Liu | } |
66 | 5b569507 | Jia Liu | } |
67 | 5b569507 | Jia Liu | |
68 | 5b569507 | Jia Liu | uint64_t HELPER(itofd)(CPUOpenRISCState *env, uint64_t val) |
69 | 5b569507 | Jia Liu | { |
70 | 5b569507 | Jia Liu | uint64_t itofd; |
71 | 5b569507 | Jia Liu | OpenRISCCPU *cpu = OPENRISC_CPU(ENV_GET_CPU(env)); |
72 | 5b569507 | Jia Liu | |
73 | 5b569507 | Jia Liu | set_float_exception_flags(0, &cpu->env.fp_status);
|
74 | 5b569507 | Jia Liu | itofd = int32_to_float64(val, &cpu->env.fp_status); |
75 | 5b569507 | Jia Liu | update_fpcsr(cpu); |
76 | 5b569507 | Jia Liu | |
77 | 5b569507 | Jia Liu | return itofd;
|
78 | 5b569507 | Jia Liu | } |
79 | 5b569507 | Jia Liu | |
80 | 5b569507 | Jia Liu | uint32_t HELPER(itofs)(CPUOpenRISCState *env, uint32_t val) |
81 | 5b569507 | Jia Liu | { |
82 | 5b569507 | Jia Liu | uint32_t itofs; |
83 | 5b569507 | Jia Liu | OpenRISCCPU *cpu = OPENRISC_CPU(ENV_GET_CPU(env)); |
84 | 5b569507 | Jia Liu | |
85 | 5b569507 | Jia Liu | set_float_exception_flags(0, &cpu->env.fp_status);
|
86 | 5b569507 | Jia Liu | itofs = int32_to_float32(val, &cpu->env.fp_status); |
87 | 5b569507 | Jia Liu | update_fpcsr(cpu); |
88 | 5b569507 | Jia Liu | |
89 | 5b569507 | Jia Liu | return itofs;
|
90 | 5b569507 | Jia Liu | } |
91 | 5b569507 | Jia Liu | |
92 | 5b569507 | Jia Liu | uint64_t HELPER(ftoid)(CPUOpenRISCState *env, uint64_t val) |
93 | 5b569507 | Jia Liu | { |
94 | 5b569507 | Jia Liu | uint64_t ftoid; |
95 | 5b569507 | Jia Liu | OpenRISCCPU *cpu = OPENRISC_CPU(ENV_GET_CPU(env)); |
96 | 5b569507 | Jia Liu | |
97 | 5b569507 | Jia Liu | set_float_exception_flags(0, &cpu->env.fp_status);
|
98 | 5b569507 | Jia Liu | ftoid = float32_to_int64(val, &cpu->env.fp_status); |
99 | 5b569507 | Jia Liu | update_fpcsr(cpu); |
100 | 5b569507 | Jia Liu | |
101 | 5b569507 | Jia Liu | return ftoid;
|
102 | 5b569507 | Jia Liu | } |
103 | 5b569507 | Jia Liu | |
104 | 5b569507 | Jia Liu | uint32_t HELPER(ftois)(CPUOpenRISCState *env, uint32_t val) |
105 | 5b569507 | Jia Liu | { |
106 | 5b569507 | Jia Liu | uint32_t ftois; |
107 | 5b569507 | Jia Liu | OpenRISCCPU *cpu = OPENRISC_CPU(ENV_GET_CPU(env)); |
108 | 5b569507 | Jia Liu | |
109 | 5b569507 | Jia Liu | set_float_exception_flags(0, &cpu->env.fp_status);
|
110 | 5b569507 | Jia Liu | ftois = float32_to_int32(val, &cpu->env.fp_status); |
111 | 5b569507 | Jia Liu | update_fpcsr(cpu); |
112 | 5b569507 | Jia Liu | |
113 | 5b569507 | Jia Liu | return ftois;
|
114 | 5b569507 | Jia Liu | } |
115 | 5b569507 | Jia Liu | |
116 | 5b569507 | Jia Liu | #define FLOAT_OP(name, p) void helper_float_##_##p(void) |
117 | 5b569507 | Jia Liu | |
118 | 5b569507 | Jia Liu | #define FLOAT_CALC(name) \
|
119 | 5b569507 | Jia Liu | uint64_t helper_float_ ## name ## _d(CPUOpenRISCState *env, \ |
120 | 5b569507 | Jia Liu | uint64_t fdt0, uint64_t fdt1) \ |
121 | 5b569507 | Jia Liu | { \ |
122 | 5b569507 | Jia Liu | uint64_t result; \ |
123 | 5b569507 | Jia Liu | OpenRISCCPU *cpu = OPENRISC_CPU(ENV_GET_CPU(env)); \ |
124 | 5b569507 | Jia Liu | set_float_exception_flags(0, &cpu->env.fp_status); \
|
125 | 5b569507 | Jia Liu | result = float64_ ## name(fdt0, fdt1, &cpu->env.fp_status); \ |
126 | 5b569507 | Jia Liu | update_fpcsr(cpu); \ |
127 | 5b569507 | Jia Liu | return result; \
|
128 | 5b569507 | Jia Liu | } \ |
129 | 5b569507 | Jia Liu | \ |
130 | 5b569507 | Jia Liu | uint32_t helper_float_ ## name ## _s(CPUOpenRISCState *env, \ |
131 | 5b569507 | Jia Liu | uint32_t fdt0, uint32_t fdt1) \ |
132 | 5b569507 | Jia Liu | { \ |
133 | 5b569507 | Jia Liu | uint32_t result; \ |
134 | 5b569507 | Jia Liu | OpenRISCCPU *cpu = OPENRISC_CPU(ENV_GET_CPU(env)); \ |
135 | 5b569507 | Jia Liu | set_float_exception_flags(0, &cpu->env.fp_status); \
|
136 | 5b569507 | Jia Liu | result = float32_ ## name(fdt0, fdt1, &cpu->env.fp_status); \ |
137 | 5b569507 | Jia Liu | update_fpcsr(cpu); \ |
138 | 5b569507 | Jia Liu | return result; \
|
139 | 5b569507 | Jia Liu | } \ |
140 | 5b569507 | Jia Liu | |
141 | 5b569507 | Jia Liu | FLOAT_CALC(add) |
142 | 5b569507 | Jia Liu | FLOAT_CALC(sub) |
143 | 5b569507 | Jia Liu | FLOAT_CALC(mul) |
144 | 5b569507 | Jia Liu | FLOAT_CALC(div) |
145 | 5b569507 | Jia Liu | FLOAT_CALC(rem) |
146 | 5b569507 | Jia Liu | #undef FLOAT_CALC
|
147 | 5b569507 | Jia Liu | |
148 | 5b569507 | Jia Liu | #define FLOAT_TERNOP(name1, name2) \
|
149 | 5b569507 | Jia Liu | uint64_t helper_float_ ## name1 ## name2 ## _d(CPUOpenRISCState *env, \ |
150 | 5b569507 | Jia Liu | uint64_t fdt0, \ |
151 | 5b569507 | Jia Liu | uint64_t fdt1) \ |
152 | 5b569507 | Jia Liu | { \ |
153 | 5b569507 | Jia Liu | uint64_t result, temp, hi, lo; \ |
154 | 5b569507 | Jia Liu | uint32_t val1, val2; \ |
155 | 5b569507 | Jia Liu | OpenRISCCPU *cpu = OPENRISC_CPU(ENV_GET_CPU(env)); \ |
156 | 5b569507 | Jia Liu | hi = env->fpmaddhi; \ |
157 | 5b569507 | Jia Liu | lo = env->fpmaddlo; \ |
158 | 5b569507 | Jia Liu | set_float_exception_flags(0, &cpu->env.fp_status); \
|
159 | 5b569507 | Jia Liu | result = float64_ ## name1(fdt0, fdt1, &cpu->env.fp_status); \ |
160 | 5b569507 | Jia Liu | lo &= 0xffffffff; \
|
161 | 5b569507 | Jia Liu | hi &= 0xffffffff; \
|
162 | 5b569507 | Jia Liu | temp = (hi << 32) | lo; \
|
163 | 5b569507 | Jia Liu | result = float64_ ## name2(result, temp, &cpu->env.fp_status); \ |
164 | 5b569507 | Jia Liu | val1 = result >> 32; \
|
165 | 5b569507 | Jia Liu | val2 = (uint32_t) (result & 0xffffffff); \
|
166 | 5b569507 | Jia Liu | update_fpcsr(cpu); \ |
167 | 5b569507 | Jia Liu | cpu->env.fpmaddlo = val2; \ |
168 | 5b569507 | Jia Liu | cpu->env.fpmaddhi = val1; \ |
169 | 5b569507 | Jia Liu | return 0; \ |
170 | 5b569507 | Jia Liu | } \ |
171 | 5b569507 | Jia Liu | \ |
172 | 5b569507 | Jia Liu | uint32_t helper_float_ ## name1 ## name2 ## _s(CPUOpenRISCState *env, \ |
173 | 5b569507 | Jia Liu | uint32_t fdt0, uint32_t fdt1) \ |
174 | 5b569507 | Jia Liu | { \ |
175 | 5b569507 | Jia Liu | uint64_t result, temp, hi, lo; \ |
176 | 5b569507 | Jia Liu | uint32_t val1, val2; \ |
177 | 5b569507 | Jia Liu | OpenRISCCPU *cpu = OPENRISC_CPU(ENV_GET_CPU(env)); \ |
178 | 5b569507 | Jia Liu | hi = cpu->env.fpmaddhi; \ |
179 | 5b569507 | Jia Liu | lo = cpu->env.fpmaddlo; \ |
180 | 5b569507 | Jia Liu | set_float_exception_flags(0, &cpu->env.fp_status); \
|
181 | 5b569507 | Jia Liu | result = float64_ ## name1(fdt0, fdt1, &cpu->env.fp_status); \ |
182 | 5b569507 | Jia Liu | temp = (hi << 32) | lo; \
|
183 | 5b569507 | Jia Liu | result = float64_ ## name2(result, temp, &cpu->env.fp_status); \ |
184 | 5b569507 | Jia Liu | val1 = result >> 32; \
|
185 | 5b569507 | Jia Liu | val2 = (uint32_t) (result & 0xffffffff); \
|
186 | 5b569507 | Jia Liu | update_fpcsr(cpu); \ |
187 | 5b569507 | Jia Liu | cpu->env.fpmaddlo = val2; \ |
188 | 5b569507 | Jia Liu | cpu->env.fpmaddhi = val1; \ |
189 | 5b569507 | Jia Liu | return 0; \ |
190 | 5b569507 | Jia Liu | } |
191 | 5b569507 | Jia Liu | |
192 | 5b569507 | Jia Liu | FLOAT_TERNOP(mul, add) |
193 | 5b569507 | Jia Liu | #undef FLOAT_TERNOP
|
194 | 5b569507 | Jia Liu | |
195 | 5b569507 | Jia Liu | |
196 | 5b569507 | Jia Liu | #define FLOAT_CMP(name) \
|
197 | 5b569507 | Jia Liu | uint64_t helper_float_ ## name ## _d(CPUOpenRISCState *env, \ |
198 | 5b569507 | Jia Liu | uint64_t fdt0, uint64_t fdt1) \ |
199 | 5b569507 | Jia Liu | { \ |
200 | 5b569507 | Jia Liu | int res; \
|
201 | 5b569507 | Jia Liu | OpenRISCCPU *cpu = OPENRISC_CPU(ENV_GET_CPU(env)); \ |
202 | 5b569507 | Jia Liu | set_float_exception_flags(0, &cpu->env.fp_status); \
|
203 | 5b569507 | Jia Liu | res = float64_ ## name(fdt0, fdt1, &cpu->env.fp_status); \ |
204 | 5b569507 | Jia Liu | update_fpcsr(cpu); \ |
205 | 5b569507 | Jia Liu | return res; \
|
206 | 5b569507 | Jia Liu | } \ |
207 | 5b569507 | Jia Liu | \ |
208 | 5b569507 | Jia Liu | uint32_t helper_float_ ## name ## _s(CPUOpenRISCState *env, \ |
209 | 5b569507 | Jia Liu | uint32_t fdt0, uint32_t fdt1)\ |
210 | 5b569507 | Jia Liu | { \ |
211 | 5b569507 | Jia Liu | int res; \
|
212 | 5b569507 | Jia Liu | OpenRISCCPU *cpu = OPENRISC_CPU(ENV_GET_CPU(env)); \ |
213 | 5b569507 | Jia Liu | set_float_exception_flags(0, &cpu->env.fp_status); \
|
214 | 5b569507 | Jia Liu | res = float32_ ## name(fdt0, fdt1, &cpu->env.fp_status); \ |
215 | 5b569507 | Jia Liu | update_fpcsr(cpu); \ |
216 | 5b569507 | Jia Liu | return res; \
|
217 | 5b569507 | Jia Liu | } |
218 | 5b569507 | Jia Liu | |
219 | 5b569507 | Jia Liu | FLOAT_CMP(le) |
220 | 5b569507 | Jia Liu | FLOAT_CMP(eq) |
221 | 5b569507 | Jia Liu | FLOAT_CMP(lt) |
222 | 5b569507 | Jia Liu | #undef FLOAT_CMP
|
223 | 5b569507 | Jia Liu | |
224 | 5b569507 | Jia Liu | |
225 | 5b569507 | Jia Liu | #define FLOAT_CMPNE(name) \
|
226 | 5b569507 | Jia Liu | uint64_t helper_float_ ## name ## _d(CPUOpenRISCState *env, \ |
227 | 5b569507 | Jia Liu | uint64_t fdt0, uint64_t fdt1) \ |
228 | 5b569507 | Jia Liu | { \ |
229 | 5b569507 | Jia Liu | int res; \
|
230 | 5b569507 | Jia Liu | OpenRISCCPU *cpu = OPENRISC_CPU(ENV_GET_CPU(env)); \ |
231 | 5b569507 | Jia Liu | set_float_exception_flags(0, &cpu->env.fp_status); \
|
232 | 5b569507 | Jia Liu | res = !float64_eq_quiet(fdt0, fdt1, &cpu->env.fp_status); \ |
233 | 5b569507 | Jia Liu | update_fpcsr(cpu); \ |
234 | 5b569507 | Jia Liu | return res; \
|
235 | 5b569507 | Jia Liu | } \ |
236 | 5b569507 | Jia Liu | \ |
237 | 5b569507 | Jia Liu | uint32_t helper_float_ ## name ## _s(CPUOpenRISCState *env, \ |
238 | 5b569507 | Jia Liu | uint32_t fdt0, uint32_t fdt1) \ |
239 | 5b569507 | Jia Liu | { \ |
240 | 5b569507 | Jia Liu | int res; \
|
241 | 5b569507 | Jia Liu | OpenRISCCPU *cpu = OPENRISC_CPU(ENV_GET_CPU(env)); \ |
242 | 5b569507 | Jia Liu | set_float_exception_flags(0, &cpu->env.fp_status); \
|
243 | 5b569507 | Jia Liu | res = !float32_eq_quiet(fdt0, fdt1, &cpu->env.fp_status); \ |
244 | 5b569507 | Jia Liu | update_fpcsr(cpu); \ |
245 | 5b569507 | Jia Liu | return res; \
|
246 | 5b569507 | Jia Liu | } |
247 | 5b569507 | Jia Liu | |
248 | 5b569507 | Jia Liu | FLOAT_CMPNE(ne) |
249 | 5b569507 | Jia Liu | #undef FLOAT_CMPNE
|
250 | 5b569507 | Jia Liu | |
251 | 5b569507 | Jia Liu | #define FLOAT_CMPGT(name) \
|
252 | 5b569507 | Jia Liu | uint64_t helper_float_ ## name ## _d(CPUOpenRISCState *env, \ |
253 | 5b569507 | Jia Liu | uint64_t fdt0, uint64_t fdt1) \ |
254 | 5b569507 | Jia Liu | { \ |
255 | 5b569507 | Jia Liu | int res; \
|
256 | 5b569507 | Jia Liu | OpenRISCCPU *cpu = OPENRISC_CPU(ENV_GET_CPU(env)); \ |
257 | 5b569507 | Jia Liu | set_float_exception_flags(0, &cpu->env.fp_status); \
|
258 | 5b569507 | Jia Liu | res = !float64_le(fdt0, fdt1, &cpu->env.fp_status); \ |
259 | 5b569507 | Jia Liu | update_fpcsr(cpu); \ |
260 | 5b569507 | Jia Liu | return res; \
|
261 | 5b569507 | Jia Liu | } \ |
262 | 5b569507 | Jia Liu | \ |
263 | 5b569507 | Jia Liu | uint32_t helper_float_ ## name ## _s(CPUOpenRISCState *env, \ |
264 | 5b569507 | Jia Liu | uint32_t fdt0, uint32_t fdt1) \ |
265 | 5b569507 | Jia Liu | { \ |
266 | 5b569507 | Jia Liu | int res; \
|
267 | 5b569507 | Jia Liu | OpenRISCCPU *cpu = OPENRISC_CPU(ENV_GET_CPU(env)); \ |
268 | 5b569507 | Jia Liu | set_float_exception_flags(0, &cpu->env.fp_status); \
|
269 | 5b569507 | Jia Liu | res = !float32_le(fdt0, fdt1, &cpu->env.fp_status); \ |
270 | 5b569507 | Jia Liu | update_fpcsr(cpu); \ |
271 | 5b569507 | Jia Liu | return res; \
|
272 | 5b569507 | Jia Liu | } |
273 | 5b569507 | Jia Liu | FLOAT_CMPGT(gt) |
274 | 5b569507 | Jia Liu | #undef FLOAT_CMPGT
|
275 | 5b569507 | Jia Liu | |
276 | 5b569507 | Jia Liu | #define FLOAT_CMPGE(name) \
|
277 | 5b569507 | Jia Liu | uint64_t helper_float_ ## name ## _d(CPUOpenRISCState *env, \ |
278 | 5b569507 | Jia Liu | uint64_t fdt0, uint64_t fdt1) \ |
279 | 5b569507 | Jia Liu | { \ |
280 | 5b569507 | Jia Liu | int res; \
|
281 | 5b569507 | Jia Liu | OpenRISCCPU *cpu = OPENRISC_CPU(ENV_GET_CPU(env)); \ |
282 | 5b569507 | Jia Liu | set_float_exception_flags(0, &cpu->env.fp_status); \
|
283 | 5b569507 | Jia Liu | res = !float64_lt(fdt0, fdt1, &cpu->env.fp_status); \ |
284 | 5b569507 | Jia Liu | update_fpcsr(cpu); \ |
285 | 5b569507 | Jia Liu | return res; \
|
286 | 5b569507 | Jia Liu | } \ |
287 | 5b569507 | Jia Liu | \ |
288 | 5b569507 | Jia Liu | uint32_t helper_float_ ## name ## _s(CPUOpenRISCState *env, \ |
289 | 5b569507 | Jia Liu | uint32_t fdt0, uint32_t fdt1) \ |
290 | 5b569507 | Jia Liu | { \ |
291 | 5b569507 | Jia Liu | int res; \
|
292 | 5b569507 | Jia Liu | OpenRISCCPU *cpu = OPENRISC_CPU(ENV_GET_CPU(env)); \ |
293 | 5b569507 | Jia Liu | set_float_exception_flags(0, &cpu->env.fp_status); \
|
294 | 5b569507 | Jia Liu | res = !float32_lt(fdt0, fdt1, &cpu->env.fp_status); \ |
295 | 5b569507 | Jia Liu | update_fpcsr(cpu); \ |
296 | 5b569507 | Jia Liu | return res; \
|
297 | 5b569507 | Jia Liu | } |
298 | 5b569507 | Jia Liu | |
299 | 5b569507 | Jia Liu | FLOAT_CMPGE(ge) |
300 | 5b569507 | Jia Liu | #undef FLOAT_CMPGE |