On 21 June 2018 at 02:53, Richard Henderson <richard.hender...@linaro.org> wrote: > Signed-off-by: Richard Henderson <richard.hender...@linaro.org> > --- > target/arm/helper-sve.h | 49 ++++++++++++++++++++++++++++++ > target/arm/sve_helper.c | 62 ++++++++++++++++++++++++++++++++++++++ > target/arm/translate-sve.c | 40 ++++++++++++++++++++++++ > target/arm/sve.decode | 11 +++++++ > 4 files changed, 162 insertions(+)
> +#define DO_FCMGE(TYPE, X, Y, ST) TYPE##_compare(Y, X, ST) <= 0 I was expecting the RHS of this to be TYPE##_le(Y, X, ST). This prompted me to notice that softfloat has as well as the generic 'compare' routines also specialized _le/lt/unordered etc functions for float64 and float32 but not float16, which is a bit inconsistent... > +#define DO_FCMGT(TYPE, X, Y, ST) TYPE##_compare(Y, X, ST) < 0 > +#define DO_FCMEQ(TYPE, X, Y, ST) TYPE##_compare_quiet(X, Y, ST) == 0 > +#define DO_FCMNE(TYPE, X, Y, ST) TYPE##_compare_quiet(X, Y, ST) != 0 > +#define DO_FCMUO(TYPE, X, Y, ST) \ > + TYPE##_compare_quiet(X, Y, ST) == float_relation_unordered > +#define DO_FACGE(TYPE, X, Y, ST) \ > + TYPE##_compare(TYPE##_abs(Y), TYPE##_abs(X), ST) <= 0 > +#define DO_FACGT(TYPE, X, Y, ST) \ > + TYPE##_compare(TYPE##_abs(Y), TYPE##_abs(X), ST) < 0 Anyway, Reviewed-by: Peter Maydell <peter.mayd...@linaro.org> thanks -- PMM