Lines Matching +full:- +full:v
2 * Copyright (c) 2011 - 2019, Max Filippov, Open Source and Linux Lab.
31 #include "exec/helper-proto.h"
32 #include "qemu/host-utils.h"
62 &env->fp_status); in xtensa_use_first_nan()
64 &env->fp_status); in xtensa_use_first_nan()
67 void HELPER(wur_fpu2k_fcr)(CPUXtensaState *env, uint32_t v) in HELPER()
76 env->uregs[FCR] = v & 0xfffff07f; in HELPER()
77 set_float_rounding_mode(rounding_mode[v & 3], &env->fp_status); in HELPER()
80 void HELPER(wur_fpu_fcr)(CPUXtensaState *env, uint32_t v) in HELPER()
89 if (v & 0xfffff000) { in HELPER()
91 "MBZ field of FCR is written non-zero: %08x\n", v); in HELPER()
93 env->uregs[FCR] = v & 0x0000007f; in HELPER()
94 set_float_rounding_mode(rounding_mode[v & 3], &env->fp_status); in HELPER()
97 void HELPER(wur_fpu_fsr)(CPUXtensaState *env, uint32_t v) in HELPER()
99 uint32_t flags = v >> XTENSA_FSR_FLAGS_SHIFT; in HELPER()
103 if (v & 0xfffff000) { in HELPER()
105 "MBZ field of FSR is written non-zero: %08x\n", v); in HELPER()
107 env->uregs[FSR] = v & 0x00000f80; in HELPER()
113 set_float_exception_flags(fef, &env->fp_status); in HELPER()
119 int fef = get_float_exception_flags(&env->fp_status); in HELPER()
127 env->uregs[FSR] = flags << XTENSA_FSR_FLAGS_SHIFT; in HELPER()
131 float64 HELPER(abs_d)(float64 v) in HELPER()
133 return float64_abs(v); in HELPER()
136 float32 HELPER(abs_s)(float32 v) in HELPER()
138 return float32_abs(v); in HELPER()
141 float64 HELPER(neg_d)(float64 v) in HELPER()
143 return float64_chs(v); in HELPER()
146 float32 HELPER(neg_s)(float32 v) in HELPER()
148 return float32_chs(v); in HELPER()
153 return float32_add(a, b, &env->fp_status); in HELPER()
158 return float32_sub(a, b, &env->fp_status); in HELPER()
163 return float32_mul(a, b, &env->fp_status); in HELPER()
169 return float32_muladd(b, c, a, 0, &env->fp_status); in HELPER()
176 &env->fp_status); in HELPER()
182 return float64_add(a, b, &env->fp_status); in HELPER()
187 xtensa_use_first_nan(env, env->config->use_first_nan); in HELPER()
188 return float32_add(a, b, &env->fp_status); in HELPER()
194 return float64_sub(a, b, &env->fp_status); in HELPER()
199 xtensa_use_first_nan(env, env->config->use_first_nan); in HELPER()
200 return float32_sub(a, b, &env->fp_status); in HELPER()
206 return float64_mul(a, b, &env->fp_status); in HELPER()
211 xtensa_use_first_nan(env, env->config->use_first_nan); in HELPER()
212 return float32_mul(a, b, &env->fp_status); in HELPER()
217 xtensa_use_first_nan(env, env->config->use_first_nan); in HELPER()
218 return float64_muladd(b, c, a, 0, &env->fp_status); in HELPER()
223 xtensa_use_first_nan(env, env->config->use_first_nan); in HELPER()
224 return float32_muladd(b, c, a, 0, &env->fp_status); in HELPER()
229 xtensa_use_first_nan(env, env->config->use_first_nan); in HELPER()
231 &env->fp_status); in HELPER()
236 xtensa_use_first_nan(env, env->config->use_first_nan); in HELPER()
238 &env->fp_status); in HELPER()
244 return float64_div(b, a, &env->fp_status); in HELPER()
249 xtensa_use_first_nan(env, env->config->use_first_nan); in HELPER()
250 return float32_div(b, a, &env->fp_status); in HELPER()
253 float64 HELPER(mksadj_d)(CPUXtensaState *env, float64 v) in HELPER()
256 return float64_sqrt(v, &env->fp_status); in HELPER()
259 float32 HELPER(mksadj_s)(CPUXtensaState *env, float32 v) in HELPER()
261 xtensa_use_first_nan(env, env->config->use_first_nan); in HELPER()
262 return float32_sqrt(v, &env->fp_status); in HELPER()
265 uint32_t HELPER(ftoi_d)(CPUXtensaState *env, float64 v, in HELPER()
268 float_status fp_status = env->fp_status; in HELPER()
272 res = float64_to_int32(float64_scalbn(v, scale, &fp_status), &fp_status); in HELPER()
274 &env->fp_status); in HELPER()
278 uint32_t HELPER(ftoi_s)(CPUXtensaState *env, float32 v, in HELPER()
281 float_status fp_status = env->fp_status; in HELPER()
285 res = float32_to_int32(float32_scalbn(v, scale, &fp_status), &fp_status); in HELPER()
287 &env->fp_status); in HELPER()
291 uint32_t HELPER(ftoui_d)(CPUXtensaState *env, float64 v, in HELPER()
294 float_status fp_status = env->fp_status; in HELPER()
300 res = float64_scalbn(v, scale, &fp_status); in HELPER()
302 if (float64_is_neg(v) && !float64_is_any_nan(v)) { in HELPER()
309 &env->fp_status); in HELPER()
313 uint32_t HELPER(ftoui_s)(CPUXtensaState *env, float32 v, in HELPER()
316 float_status fp_status = env->fp_status; in HELPER()
322 res = float32_scalbn(v, scale, &fp_status); in HELPER()
324 if (float32_is_neg(v) && !float32_is_any_nan(v)) { in HELPER()
333 &env->fp_status); in HELPER()
337 float64 HELPER(itof_d)(CPUXtensaState *env, uint32_t v, uint32_t scale) in HELPER()
339 return float64_scalbn(int32_to_float64(v, &env->fp_status), in HELPER()
340 (int32_t)scale, &env->fp_status); in HELPER()
343 float32 HELPER(itof_s)(CPUXtensaState *env, uint32_t v, uint32_t scale) in HELPER()
345 return float32_scalbn(int32_to_float32(v, &env->fp_status), in HELPER()
346 (int32_t)scale, &env->fp_status); in HELPER()
349 float64 HELPER(uitof_d)(CPUXtensaState *env, uint32_t v, uint32_t scale) in HELPER()
351 return float64_scalbn(uint32_to_float64(v, &env->fp_status), in HELPER()
352 (int32_t)scale, &env->fp_status); in HELPER()
355 float32 HELPER(uitof_s)(CPUXtensaState *env, uint32_t v, uint32_t scale) in HELPER()
357 return float32_scalbn(uint32_to_float32(v, &env->fp_status), in HELPER()
358 (int32_t)scale, &env->fp_status); in HELPER()
361 float64 HELPER(cvtd_s)(CPUXtensaState *env, float32 v) in HELPER()
363 return float32_to_float64(v, &env->fp_status); in HELPER()
366 float32 HELPER(cvts_d)(CPUXtensaState *env, float64 v) in HELPER()
368 return float64_to_float32(v, &env->fp_status); in HELPER()
373 return float64_unordered_quiet(a, b, &env->fp_status); in HELPER()
378 return float32_unordered_quiet(a, b, &env->fp_status); in HELPER()
383 return float64_eq_quiet(a, b, &env->fp_status); in HELPER()
388 return float32_eq_quiet(a, b, &env->fp_status); in HELPER()
393 FloatRelation v = float64_compare_quiet(a, b, &env->fp_status); in HELPER() local
395 return v == float_relation_equal || in HELPER()
396 v == float_relation_unordered; in HELPER()
401 FloatRelation v = float32_compare_quiet(a, b, &env->fp_status); in HELPER() local
403 return v == float_relation_equal || in HELPER()
404 v == float_relation_unordered; in HELPER()
409 return float64_lt(a, b, &env->fp_status); in HELPER()
414 return float32_lt(a, b, &env->fp_status); in HELPER()
419 FloatRelation v = float64_compare_quiet(a, b, &env->fp_status); in HELPER() local
421 return v == float_relation_less || in HELPER()
422 v == float_relation_unordered; in HELPER()
427 FloatRelation v = float32_compare_quiet(a, b, &env->fp_status); in HELPER() local
429 return v == float_relation_less || in HELPER()
430 v == float_relation_unordered; in HELPER()
435 return float64_le(a, b, &env->fp_status); in HELPER()
440 return float32_le(a, b, &env->fp_status); in HELPER()
445 FloatRelation v = float64_compare_quiet(a, b, &env->fp_status); in HELPER() local
447 return v != float_relation_greater; in HELPER()
452 FloatRelation v = float32_compare_quiet(a, b, &env->fp_status); in HELPER() local
454 return v != float_relation_greater; in HELPER()