[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH v1 08/14] hostfloat: support float32/64 addition
From: |
Richard Henderson |
Subject: |
Re: [Qemu-devel] [PATCH v1 08/14] hostfloat: support float32/64 addition and subtraction |
Date: |
Thu, 22 Mar 2018 13:05:00 +0800 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.6.0 |
On 03/22/2018 04:11 AM, Emilio G. Cota wrote:
> +#define GEN_FPU_ADDSUB(add_name, sub_name, soft_t, host_t, \
> + host_abs_func, min_normal) \
> + static inline __attribute__((always_inline)) soft_t \
> + fpu_ ## soft_t ## _addsub(soft_t a, soft_t b, bool subtract, \
> + float_status *s) \
> + { \
> + soft_t ## _input_flush2(&a, &b, s); \
> + if (likely((soft_t ## _is_normal(a) || soft_t ## _is_zero(a)) && \
> + (soft_t ## _is_normal(b) || soft_t ## _is_zero(b)) && \
> + s->float_exception_flags & float_flag_inexact && \
> + s->float_rounding_mode == float_round_nearest_even)) { \
> + host_t ha = soft_t ## _to_ ## host_t(a); \
> + host_t hb = soft_t ## _to_ ## host_t(b); \
> + host_t hr; \
> + soft_t r; \
> + \
> + if (subtract) { \
> + hb = -hb; \
> + } \
> + hr = ha + hb; \
> + r = host_t ## _to_ ## soft_t(hr); \
> + if (unlikely(soft_t ## _is_infinity(r))) { \
> + s->float_exception_flags |= float_flag_overflow; \
> + } else if (unlikely(host_abs_func(hr) <= min_normal)) { \
> + goto soft; \
> + } \
> + return r; \
> + } \
> + soft: \
Is there any especially good reason you want to not put this code into the
normal softfloat function? Does it really many any measurable difference at
all to force this code to be inlined into a helper?
r~
[Qemu-devel] [PATCH v1 09/14] hostfloat: support float32/64 multiplication, Emilio G. Cota, 2018/03/21
[Qemu-devel] [PATCH v1 01/14] tests: add fp-bench, a collection of simple floating-point microbenchmarks, Emilio G. Cota, 2018/03/21