@@ -2563,8 +2563,8 @@ void HELPER(sve_ftssel_h)(void *vd, void *vn, void *vm, uint32_t desc)
if (mm & 1) {
nn = float16_one;
}
- if ((mm & 2) && !(fpcr_ah && float16_is_any_nan(nn))) {
- nn ^= (1 << 15);
+ if (mm & 2) {
+ nn = float16_maybe_ah_chs(nn, fpcr_ah);
}
d[i] = nn;
}
@@ -2581,8 +2581,8 @@ void HELPER(sve_ftssel_s)(void *vd, void *vn, void *vm, uint32_t desc)
if (mm & 1) {
nn = float32_one;
}
- if ((mm & 2) && !(fpcr_ah && float32_is_any_nan(nn))) {
- nn ^= (1U << 31);
+ if (mm & 2) {
+ nn = float32_maybe_ah_chs(nn, fpcr_ah);
}
d[i] = nn;
}
@@ -2599,8 +2599,8 @@ void HELPER(sve_ftssel_d)(void *vd, void *vn, void *vm, uint32_t desc)
if (mm & 1) {
nn = float64_one;
}
- if ((mm & 2) && !(fpcr_ah && float64_is_any_nan(nn))) {
- nn ^= (1ULL << 63);
+ if (mm & 2) {
+ nn = float64_maybe_ah_chs(nn, fpcr_ah);
}
d[i] = nn;
}
Signed-off-by: Richard Henderson <richard.henderson@linaro.org> --- target/arm/tcg/sve_helper.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-)