softfloat: Name compare relation enum
Give the previously unnamed enum a typedef name. Use it in the prototypes of compare functions. Use it to hold the results of the compare functions. Reviewed-by: Alex Bennée <alex.bennee@linaro.org> Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
This commit is contained in:
parent
3dede407cc
commit
71bfd65c5f
@ -2848,8 +2848,8 @@ MINMAX(64, maxnummag, false, true, true)
|
||||
#undef MINMAX
|
||||
|
||||
/* Floating point compare */
|
||||
static int compare_floats(FloatParts a, FloatParts b, bool is_quiet,
|
||||
float_status *s)
|
||||
static FloatRelation compare_floats(FloatParts a, FloatParts b, bool is_quiet,
|
||||
float_status *s)
|
||||
{
|
||||
if (is_nan(a.cls) || is_nan(b.cls)) {
|
||||
if (!is_quiet ||
|
||||
@ -2920,17 +2920,17 @@ COMPARE(soft_f64_compare, QEMU_SOFTFLOAT_ATTR, 64)
|
||||
|
||||
#undef COMPARE
|
||||
|
||||
int float16_compare(float16 a, float16 b, float_status *s)
|
||||
FloatRelation float16_compare(float16 a, float16 b, float_status *s)
|
||||
{
|
||||
return soft_f16_compare(a, b, false, s);
|
||||
}
|
||||
|
||||
int float16_compare_quiet(float16 a, float16 b, float_status *s)
|
||||
FloatRelation float16_compare_quiet(float16 a, float16 b, float_status *s)
|
||||
{
|
||||
return soft_f16_compare(a, b, true, s);
|
||||
}
|
||||
|
||||
static int QEMU_FLATTEN
|
||||
static FloatRelation QEMU_FLATTEN
|
||||
f32_compare(float32 xa, float32 xb, bool is_quiet, float_status *s)
|
||||
{
|
||||
union_float32 ua, ub;
|
||||
@ -2959,17 +2959,17 @@ f32_compare(float32 xa, float32 xb, bool is_quiet, float_status *s)
|
||||
return soft_f32_compare(ua.s, ub.s, is_quiet, s);
|
||||
}
|
||||
|
||||
int float32_compare(float32 a, float32 b, float_status *s)
|
||||
FloatRelation float32_compare(float32 a, float32 b, float_status *s)
|
||||
{
|
||||
return f32_compare(a, b, false, s);
|
||||
}
|
||||
|
||||
int float32_compare_quiet(float32 a, float32 b, float_status *s)
|
||||
FloatRelation float32_compare_quiet(float32 a, float32 b, float_status *s)
|
||||
{
|
||||
return f32_compare(a, b, true, s);
|
||||
}
|
||||
|
||||
static int QEMU_FLATTEN
|
||||
static FloatRelation QEMU_FLATTEN
|
||||
f64_compare(float64 xa, float64 xb, bool is_quiet, float_status *s)
|
||||
{
|
||||
union_float64 ua, ub;
|
||||
@ -2998,12 +2998,12 @@ f64_compare(float64 xa, float64 xb, bool is_quiet, float_status *s)
|
||||
return soft_f64_compare(ua.s, ub.s, is_quiet, s);
|
||||
}
|
||||
|
||||
int float64_compare(float64 a, float64 b, float_status *s)
|
||||
FloatRelation float64_compare(float64 a, float64 b, float_status *s)
|
||||
{
|
||||
return f64_compare(a, b, false, s);
|
||||
}
|
||||
|
||||
int float64_compare_quiet(float64 a, float64 b, float_status *s)
|
||||
FloatRelation float64_compare_quiet(float64 a, float64 b, float_status *s)
|
||||
{
|
||||
return f64_compare(a, b, true, s);
|
||||
}
|
||||
@ -7892,8 +7892,9 @@ int float128_unordered_quiet(float128 a, float128 b, float_status *status)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static inline int floatx80_compare_internal(floatx80 a, floatx80 b,
|
||||
int is_quiet, float_status *status)
|
||||
static inline FloatRelation
|
||||
floatx80_compare_internal(floatx80 a, floatx80 b, bool is_quiet,
|
||||
float_status *status)
|
||||
{
|
||||
bool aSign, bSign;
|
||||
|
||||
@ -7939,18 +7940,20 @@ static inline int floatx80_compare_internal(floatx80 a, floatx80 b,
|
||||
}
|
||||
}
|
||||
|
||||
int floatx80_compare(floatx80 a, floatx80 b, float_status *status)
|
||||
FloatRelation floatx80_compare(floatx80 a, floatx80 b, float_status *status)
|
||||
{
|
||||
return floatx80_compare_internal(a, b, 0, status);
|
||||
}
|
||||
|
||||
int floatx80_compare_quiet(floatx80 a, floatx80 b, float_status *status)
|
||||
FloatRelation floatx80_compare_quiet(floatx80 a, floatx80 b,
|
||||
float_status *status)
|
||||
{
|
||||
return floatx80_compare_internal(a, b, 1, status);
|
||||
}
|
||||
|
||||
static inline int float128_compare_internal(float128 a, float128 b,
|
||||
int is_quiet, float_status *status)
|
||||
static inline FloatRelation
|
||||
float128_compare_internal(float128 a, float128 b, bool is_quiet,
|
||||
float_status *status)
|
||||
{
|
||||
bool aSign, bSign;
|
||||
|
||||
@ -7983,12 +7986,13 @@ static inline int float128_compare_internal(float128 a, float128 b,
|
||||
}
|
||||
}
|
||||
|
||||
int float128_compare(float128 a, float128 b, float_status *status)
|
||||
FloatRelation float128_compare(float128 a, float128 b, float_status *status)
|
||||
{
|
||||
return float128_compare_internal(a, b, 0, status);
|
||||
}
|
||||
|
||||
int float128_compare_quiet(float128 a, float128 b, float_status *status)
|
||||
FloatRelation float128_compare_quiet(float128 a, float128 b,
|
||||
float_status *status)
|
||||
{
|
||||
return float128_compare_internal(a, b, 1, status);
|
||||
}
|
||||
|
@ -85,12 +85,13 @@ this code that are retained.
|
||||
/*----------------------------------------------------------------------------
|
||||
| Software IEC/IEEE floating-point ordering relations
|
||||
*----------------------------------------------------------------------------*/
|
||||
enum {
|
||||
|
||||
typedef enum {
|
||||
float_relation_less = -1,
|
||||
float_relation_equal = 0,
|
||||
float_relation_greater = 1,
|
||||
float_relation_unordered = 2
|
||||
};
|
||||
} FloatRelation;
|
||||
|
||||
#include "fpu/softfloat-types.h"
|
||||
#include "fpu/softfloat-helpers.h"
|
||||
@ -231,8 +232,8 @@ float16 float16_maxnum(float16, float16, float_status *status);
|
||||
float16 float16_minnummag(float16, float16, float_status *status);
|
||||
float16 float16_maxnummag(float16, float16, float_status *status);
|
||||
float16 float16_sqrt(float16, float_status *status);
|
||||
int float16_compare(float16, float16, float_status *status);
|
||||
int float16_compare_quiet(float16, float16, float_status *status);
|
||||
FloatRelation float16_compare(float16, float16, float_status *status);
|
||||
FloatRelation float16_compare_quiet(float16, float16, float_status *status);
|
||||
|
||||
int float16_is_quiet_nan(float16, float_status *status);
|
||||
int float16_is_signaling_nan(float16, float_status *status);
|
||||
@ -350,8 +351,8 @@ int float32_eq_quiet(float32, float32, float_status *status);
|
||||
int float32_le_quiet(float32, float32, float_status *status);
|
||||
int float32_lt_quiet(float32, float32, float_status *status);
|
||||
int float32_unordered_quiet(float32, float32, float_status *status);
|
||||
int float32_compare(float32, float32, float_status *status);
|
||||
int float32_compare_quiet(float32, float32, float_status *status);
|
||||
FloatRelation float32_compare(float32, float32, float_status *status);
|
||||
FloatRelation float32_compare_quiet(float32, float32, float_status *status);
|
||||
float32 float32_min(float32, float32, float_status *status);
|
||||
float32 float32_max(float32, float32, float_status *status);
|
||||
float32 float32_minnum(float32, float32, float_status *status);
|
||||
@ -506,8 +507,8 @@ int float64_eq_quiet(float64, float64, float_status *status);
|
||||
int float64_le_quiet(float64, float64, float_status *status);
|
||||
int float64_lt_quiet(float64, float64, float_status *status);
|
||||
int float64_unordered_quiet(float64, float64, float_status *status);
|
||||
int float64_compare(float64, float64, float_status *status);
|
||||
int float64_compare_quiet(float64, float64, float_status *status);
|
||||
FloatRelation float64_compare(float64, float64, float_status *status);
|
||||
FloatRelation float64_compare_quiet(float64, float64, float_status *status);
|
||||
float64 float64_min(float64, float64, float_status *status);
|
||||
float64 float64_max(float64, float64, float_status *status);
|
||||
float64 float64_minnum(float64, float64, float_status *status);
|
||||
@ -630,8 +631,8 @@ int floatx80_eq_quiet(floatx80, floatx80, float_status *status);
|
||||
int floatx80_le_quiet(floatx80, floatx80, float_status *status);
|
||||
int floatx80_lt_quiet(floatx80, floatx80, float_status *status);
|
||||
int floatx80_unordered_quiet(floatx80, floatx80, float_status *status);
|
||||
int floatx80_compare(floatx80, floatx80, float_status *status);
|
||||
int floatx80_compare_quiet(floatx80, floatx80, float_status *status);
|
||||
FloatRelation floatx80_compare(floatx80, floatx80, float_status *status);
|
||||
FloatRelation floatx80_compare_quiet(floatx80, floatx80, float_status *status);
|
||||
int floatx80_is_quiet_nan(floatx80, float_status *status);
|
||||
int floatx80_is_signaling_nan(floatx80, float_status *status);
|
||||
floatx80 floatx80_silence_nan(floatx80, float_status *status);
|
||||
@ -842,8 +843,8 @@ int float128_eq_quiet(float128, float128, float_status *status);
|
||||
int float128_le_quiet(float128, float128, float_status *status);
|
||||
int float128_lt_quiet(float128, float128, float_status *status);
|
||||
int float128_unordered_quiet(float128, float128, float_status *status);
|
||||
int float128_compare(float128, float128, float_status *status);
|
||||
int float128_compare_quiet(float128, float128, float_status *status);
|
||||
FloatRelation float128_compare(float128, float128, float_status *status);
|
||||
FloatRelation float128_compare_quiet(float128, float128, float_status *status);
|
||||
int float128_is_quiet_nan(float128, float_status *status);
|
||||
int float128_is_signaling_nan(float128, float_status *status);
|
||||
float128 float128_silence_nan(float128, float_status *status);
|
||||
|
@ -281,7 +281,7 @@ float64 VFP_HELPER(sqrt, d)(float64 a, CPUARMState *env)
|
||||
return float64_sqrt(a, &env->vfp.fp_status);
|
||||
}
|
||||
|
||||
static void softfloat_to_vfp_compare(CPUARMState *env, int cmp)
|
||||
static void softfloat_to_vfp_compare(CPUARMState *env, FloatRelation cmp)
|
||||
{
|
||||
uint32_t flags;
|
||||
switch (cmp) {
|
||||
|
@ -523,7 +523,8 @@ uint64_t HELPER(fcnv_t_d_udw)(CPUHPPAState *env, float64 arg)
|
||||
return ret;
|
||||
}
|
||||
|
||||
static void update_fr0_cmp(CPUHPPAState *env, uint32_t y, uint32_t c, int r)
|
||||
static void update_fr0_cmp(CPUHPPAState *env, uint32_t y,
|
||||
uint32_t c, FloatRelation r)
|
||||
{
|
||||
uint32_t shadow = env->fr0_shadow;
|
||||
|
||||
@ -565,7 +566,7 @@ static void update_fr0_cmp(CPUHPPAState *env, uint32_t y, uint32_t c, int r)
|
||||
void HELPER(fcmp_s)(CPUHPPAState *env, float32 a, float32 b,
|
||||
uint32_t y, uint32_t c)
|
||||
{
|
||||
int r;
|
||||
FloatRelation r;
|
||||
if (c & 1) {
|
||||
r = float32_compare(a, b, &env->fp_status);
|
||||
} else {
|
||||
@ -578,7 +579,7 @@ void HELPER(fcmp_s)(CPUHPPAState *env, float32 a, float32 b,
|
||||
void HELPER(fcmp_d)(CPUHPPAState *env, float64 a, float64 b,
|
||||
uint32_t y, uint32_t c)
|
||||
{
|
||||
int r;
|
||||
FloatRelation r;
|
||||
if (c & 1) {
|
||||
r = float64_compare(a, b, &env->fp_status);
|
||||
} else {
|
||||
|
@ -420,7 +420,7 @@ static const int fcom_ccval[4] = {0x0100, 0x4000, 0x0000, 0x4500};
|
||||
|
||||
void helper_fcom_ST0_FT0(CPUX86State *env)
|
||||
{
|
||||
int ret;
|
||||
FloatRelation ret;
|
||||
|
||||
ret = floatx80_compare(ST0, FT0, &env->fp_status);
|
||||
env->fpus = (env->fpus & ~0x4500) | fcom_ccval[ret + 1];
|
||||
@ -428,7 +428,7 @@ void helper_fcom_ST0_FT0(CPUX86State *env)
|
||||
|
||||
void helper_fucom_ST0_FT0(CPUX86State *env)
|
||||
{
|
||||
int ret;
|
||||
FloatRelation ret;
|
||||
|
||||
ret = floatx80_compare_quiet(ST0, FT0, &env->fp_status);
|
||||
env->fpus = (env->fpus & ~0x4500) | fcom_ccval[ret + 1];
|
||||
@ -439,7 +439,7 @@ static const int fcomi_ccval[4] = {CC_C, CC_Z, 0, CC_Z | CC_P | CC_C};
|
||||
void helper_fcomi_ST0_FT0(CPUX86State *env)
|
||||
{
|
||||
int eflags;
|
||||
int ret;
|
||||
FloatRelation ret;
|
||||
|
||||
ret = floatx80_compare(ST0, FT0, &env->fp_status);
|
||||
eflags = cpu_cc_compute_all(env, CC_OP);
|
||||
@ -450,7 +450,7 @@ void helper_fcomi_ST0_FT0(CPUX86State *env)
|
||||
void helper_fucomi_ST0_FT0(CPUX86State *env)
|
||||
{
|
||||
int eflags;
|
||||
int ret;
|
||||
FloatRelation ret;
|
||||
|
||||
ret = floatx80_compare_quiet(ST0, FT0, &env->fp_status);
|
||||
eflags = cpu_cc_compute_all(env, CC_OP);
|
||||
|
@ -1031,7 +1031,7 @@ static const int comis_eflags[4] = {CC_C, CC_Z, 0, CC_Z | CC_P | CC_C};
|
||||
|
||||
void helper_ucomiss(CPUX86State *env, Reg *d, Reg *s)
|
||||
{
|
||||
int ret;
|
||||
FloatRelation ret;
|
||||
float32 s0, s1;
|
||||
|
||||
s0 = d->ZMM_S(0);
|
||||
@ -1042,7 +1042,7 @@ void helper_ucomiss(CPUX86State *env, Reg *d, Reg *s)
|
||||
|
||||
void helper_comiss(CPUX86State *env, Reg *d, Reg *s)
|
||||
{
|
||||
int ret;
|
||||
FloatRelation ret;
|
||||
float32 s0, s1;
|
||||
|
||||
s0 = d->ZMM_S(0);
|
||||
@ -1053,7 +1053,7 @@ void helper_comiss(CPUX86State *env, Reg *d, Reg *s)
|
||||
|
||||
void helper_ucomisd(CPUX86State *env, Reg *d, Reg *s)
|
||||
{
|
||||
int ret;
|
||||
FloatRelation ret;
|
||||
float64 d0, d1;
|
||||
|
||||
d0 = d->ZMM_D(0);
|
||||
@ -1064,7 +1064,7 @@ void helper_ucomisd(CPUX86State *env, Reg *d, Reg *s)
|
||||
|
||||
void helper_comisd(CPUX86State *env, Reg *d, Reg *s)
|
||||
{
|
||||
int ret;
|
||||
FloatRelation ret;
|
||||
float64 d0, d1;
|
||||
|
||||
d0 = d->ZMM_D(0);
|
||||
|
@ -155,13 +155,13 @@ FLOAT_CMP(un, unordered_quiet)
|
||||
target_ulong helper_float_ ## name ## _d(CPUOpenRISCState *env, \
|
||||
uint64_t fdt0, uint64_t fdt1) \
|
||||
{ \
|
||||
int r = float64_compare_quiet(fdt0, fdt1, &env->fp_status); \
|
||||
FloatRelation r = float64_compare_quiet(fdt0, fdt1, &env->fp_status); \
|
||||
return expr; \
|
||||
} \
|
||||
target_ulong helper_float_ ## name ## _s(CPUOpenRISCState *env, \
|
||||
uint32_t fdt0, uint32_t fdt1) \
|
||||
{ \
|
||||
int r = float32_compare_quiet(fdt0, fdt1, &env->fp_status); \
|
||||
FloatRelation r = float32_compare_quiet(fdt0, fdt1, &env->fp_status); \
|
||||
return expr; \
|
||||
}
|
||||
|
||||
|
@ -770,8 +770,9 @@ VCMPNE(w, u32, uint32_t, 0)
|
||||
\
|
||||
for (i = 0; i < ARRAY_SIZE(r->f32); i++) { \
|
||||
uint32_t result; \
|
||||
int rel = float32_compare_quiet(a->f32[i], b->f32[i], \
|
||||
&env->vec_status); \
|
||||
FloatRelation rel = \
|
||||
float32_compare_quiet(a->f32[i], b->f32[i], \
|
||||
&env->vec_status); \
|
||||
if (rel == float_relation_unordered) { \
|
||||
result = 0; \
|
||||
} else if (rel compare order) { \
|
||||
@ -803,15 +804,15 @@ static inline void vcmpbfp_internal(CPUPPCState *env, ppc_avr_t *r,
|
||||
int all_in = 0;
|
||||
|
||||
for (i = 0; i < ARRAY_SIZE(r->f32); i++) {
|
||||
int le_rel = float32_compare_quiet(a->f32[i], b->f32[i],
|
||||
&env->vec_status);
|
||||
FloatRelation le_rel = float32_compare_quiet(a->f32[i], b->f32[i],
|
||||
&env->vec_status);
|
||||
if (le_rel == float_relation_unordered) {
|
||||
r->u32[i] = 0xc0000000;
|
||||
all_in = 1;
|
||||
} else {
|
||||
float32 bneg = float32_chs(b->f32[i]);
|
||||
int ge_rel = float32_compare_quiet(a->f32[i], bneg,
|
||||
&env->vec_status);
|
||||
FloatRelation ge_rel = float32_compare_quiet(a->f32[i], bneg,
|
||||
&env->vec_status);
|
||||
int le = le_rel != float_relation_greater;
|
||||
int ge = ge_rel != float_relation_less;
|
||||
|
||||
|
@ -112,7 +112,7 @@ static void handle_exceptions(CPUS390XState *env, bool XxC, uintptr_t retaddr)
|
||||
}
|
||||
}
|
||||
|
||||
int float_comp_to_cc(CPUS390XState *env, int float_compare)
|
||||
int float_comp_to_cc(CPUS390XState *env, FloatRelation float_compare)
|
||||
{
|
||||
switch (float_compare) {
|
||||
case float_relation_equal:
|
||||
@ -368,7 +368,7 @@ uint64_t HELPER(lexb)(CPUS390XState *env, uint64_t ah, uint64_t al,
|
||||
/* 32-bit FP compare */
|
||||
uint32_t HELPER(ceb)(CPUS390XState *env, uint64_t f1, uint64_t f2)
|
||||
{
|
||||
int cmp = float32_compare_quiet(f1, f2, &env->fpu_status);
|
||||
FloatRelation cmp = float32_compare_quiet(f1, f2, &env->fpu_status);
|
||||
handle_exceptions(env, false, GETPC());
|
||||
return float_comp_to_cc(env, cmp);
|
||||
}
|
||||
@ -376,7 +376,7 @@ uint32_t HELPER(ceb)(CPUS390XState *env, uint64_t f1, uint64_t f2)
|
||||
/* 64-bit FP compare */
|
||||
uint32_t HELPER(cdb)(CPUS390XState *env, uint64_t f1, uint64_t f2)
|
||||
{
|
||||
int cmp = float64_compare_quiet(f1, f2, &env->fpu_status);
|
||||
FloatRelation cmp = float64_compare_quiet(f1, f2, &env->fpu_status);
|
||||
handle_exceptions(env, false, GETPC());
|
||||
return float_comp_to_cc(env, cmp);
|
||||
}
|
||||
@ -385,9 +385,9 @@ uint32_t HELPER(cdb)(CPUS390XState *env, uint64_t f1, uint64_t f2)
|
||||
uint32_t HELPER(cxb)(CPUS390XState *env, uint64_t ah, uint64_t al,
|
||||
uint64_t bh, uint64_t bl)
|
||||
{
|
||||
int cmp = float128_compare_quiet(make_float128(ah, al),
|
||||
make_float128(bh, bl),
|
||||
&env->fpu_status);
|
||||
FloatRelation cmp = float128_compare_quiet(make_float128(ah, al),
|
||||
make_float128(bh, bl),
|
||||
&env->fpu_status);
|
||||
handle_exceptions(env, false, GETPC());
|
||||
return float_comp_to_cc(env, cmp);
|
||||
}
|
||||
@ -675,7 +675,7 @@ uint64_t HELPER(fixb)(CPUS390XState *env, uint64_t ah, uint64_t al,
|
||||
/* 32-bit FP compare and signal */
|
||||
uint32_t HELPER(keb)(CPUS390XState *env, uint64_t f1, uint64_t f2)
|
||||
{
|
||||
int cmp = float32_compare(f1, f2, &env->fpu_status);
|
||||
FloatRelation cmp = float32_compare(f1, f2, &env->fpu_status);
|
||||
handle_exceptions(env, false, GETPC());
|
||||
return float_comp_to_cc(env, cmp);
|
||||
}
|
||||
@ -683,7 +683,7 @@ uint32_t HELPER(keb)(CPUS390XState *env, uint64_t f1, uint64_t f2)
|
||||
/* 64-bit FP compare and signal */
|
||||
uint32_t HELPER(kdb)(CPUS390XState *env, uint64_t f1, uint64_t f2)
|
||||
{
|
||||
int cmp = float64_compare(f1, f2, &env->fpu_status);
|
||||
FloatRelation cmp = float64_compare(f1, f2, &env->fpu_status);
|
||||
handle_exceptions(env, false, GETPC());
|
||||
return float_comp_to_cc(env, cmp);
|
||||
}
|
||||
@ -692,9 +692,9 @@ uint32_t HELPER(kdb)(CPUS390XState *env, uint64_t f1, uint64_t f2)
|
||||
uint32_t HELPER(kxb)(CPUS390XState *env, uint64_t ah, uint64_t al,
|
||||
uint64_t bh, uint64_t bl)
|
||||
{
|
||||
int cmp = float128_compare(make_float128(ah, al),
|
||||
make_float128(bh, bl),
|
||||
&env->fpu_status);
|
||||
FloatRelation cmp = float128_compare(make_float128(ah, al),
|
||||
make_float128(bh, bl),
|
||||
&env->fpu_status);
|
||||
handle_exceptions(env, false, GETPC());
|
||||
return float_comp_to_cc(env, cmp);
|
||||
}
|
||||
|
@ -264,7 +264,7 @@ void helper_fsqrtq(CPUSPARCState *env)
|
||||
#define GEN_FCMP(name, size, reg1, reg2, FS, E) \
|
||||
target_ulong glue(helper_, name) (CPUSPARCState *env) \
|
||||
{ \
|
||||
int ret; \
|
||||
FloatRelation ret; \
|
||||
target_ulong fsr; \
|
||||
if (E) { \
|
||||
ret = glue(size, _compare)(reg1, reg2, &env->fp_status); \
|
||||
@ -295,7 +295,7 @@ void helper_fsqrtq(CPUSPARCState *env)
|
||||
#define GEN_FCMP_T(name, size, FS, E) \
|
||||
target_ulong glue(helper_, name)(CPUSPARCState *env, size src1, size src2)\
|
||||
{ \
|
||||
int ret; \
|
||||
FloatRelation ret; \
|
||||
target_ulong fsr; \
|
||||
if (E) { \
|
||||
ret = glue(size, _compare)(src1, src2, &env->fp_status); \
|
||||
|
@ -174,8 +174,7 @@ float64 HELPER(ucf64_absd)(float64 a)
|
||||
void HELPER(ucf64_cmps)(float32 a, float32 b, uint32_t c,
|
||||
CPUUniCore32State *env)
|
||||
{
|
||||
int flag;
|
||||
flag = float32_compare_quiet(a, b, &env->ucf64.fp_status);
|
||||
FloatRelation flag = float32_compare_quiet(a, b, &env->ucf64.fp_status);
|
||||
env->CF = 0;
|
||||
switch (c & 0x7) {
|
||||
case 0: /* F */
|
||||
@ -223,8 +222,7 @@ void HELPER(ucf64_cmps)(float32 a, float32 b, uint32_t c,
|
||||
void HELPER(ucf64_cmpd)(float64 a, float64 b, uint32_t c,
|
||||
CPUUniCore32State *env)
|
||||
{
|
||||
int flag;
|
||||
flag = float64_compare_quiet(a, b, &env->ucf64.fp_status);
|
||||
FloatRelation flag = float64_compare_quiet(a, b, &env->ucf64.fp_status);
|
||||
env->CF = 0;
|
||||
switch (c & 0x7) {
|
||||
case 0: /* F */
|
||||
|
@ -139,7 +139,7 @@ void HELPER(oeq_s)(CPUXtensaState *env, uint32_t br, float32 a, float32 b)
|
||||
|
||||
void HELPER(ueq_s)(CPUXtensaState *env, uint32_t br, float32 a, float32 b)
|
||||
{
|
||||
int v = float32_compare_quiet(a, b, &env->fp_status);
|
||||
FloatRelation v = float32_compare_quiet(a, b, &env->fp_status);
|
||||
set_br(env, v == float_relation_equal || v == float_relation_unordered, br);
|
||||
}
|
||||
|
||||
@ -150,7 +150,7 @@ void HELPER(olt_s)(CPUXtensaState *env, uint32_t br, float32 a, float32 b)
|
||||
|
||||
void HELPER(ult_s)(CPUXtensaState *env, uint32_t br, float32 a, float32 b)
|
||||
{
|
||||
int v = float32_compare_quiet(a, b, &env->fp_status);
|
||||
FloatRelation v = float32_compare_quiet(a, b, &env->fp_status);
|
||||
set_br(env, v == float_relation_less || v == float_relation_unordered, br);
|
||||
}
|
||||
|
||||
@ -161,6 +161,6 @@ void HELPER(ole_s)(CPUXtensaState *env, uint32_t br, float32 a, float32 b)
|
||||
|
||||
void HELPER(ule_s)(CPUXtensaState *env, uint32_t br, float32 a, float32 b)
|
||||
{
|
||||
int v = float32_compare_quiet(a, b, &env->fp_status);
|
||||
FloatRelation v = float32_compare_quiet(a, b, &env->fp_status);
|
||||
set_br(env, v != float_relation_greater, br);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user