Re: [PATCH] target/s390x: Fix CC set by CONVERT TO FIXED/LOGICAL

2021-06-30 Thread Ulrich Weigand
On Mon, Jun 28, 2021 at 10:49:52AM -0700, Richard Henderson wrote: > On 6/28/21 9:32 AM, Ulrich Weigand wrote: > >>Don't clear out env->fpu_status.float_exception_flags in > >>handle_exceptions. Wait until we're actually done with the data. > > > >I don't really know much about qemu internals, but

Re: [PATCH] target/s390x: Fix CC set by CONVERT TO FIXED/LOGICAL

2021-06-28 Thread Richard Henderson
On 6/28/21 9:32 AM, Ulrich Weigand wrote: Don't clear out env->fpu_status.float_exception_flags in handle_exceptions. Wait until we're actually done with the data. I don't really know much about qemu internals, but this is really confusing me, sorry. Aren't env->fpu_status and env->cc_op two

Re: [PATCH] target/s390x: Fix CC set by CONVERT TO FIXED/LOGICAL

2021-06-28 Thread Ulrich Weigand
On Mon, Jun 28, 2021 at 06:26:52AM -0700, Richard Henderson wrote: > On 6/28/21 5:58 AM, Ulrich Weigand wrote: > >>>helper.h:DEF_HELPER_FLAGS_3(clgdb, TCG_CALL_NO_WG, i64, env, i64, i32) > >> > >>This won't work reliably. You're writing to a tcg global inside of > >>a function that says that it wo

Re: [PATCH] target/s390x: Fix CC set by CONVERT TO FIXED/LOGICAL

2021-06-28 Thread Richard Henderson
On 6/28/21 5:58 AM, Ulrich Weigand wrote: helper.h:DEF_HELPER_FLAGS_3(clgdb, TCG_CALL_NO_WG, i64, env, i64, i32) This won't work reliably. You're writing to a tcg global inside of a function that says that it won't. I missed that, sorry. That problem can be fixed by changing the above line

Re: [PATCH] target/s390x: Fix CC set by CONVERT TO FIXED/LOGICAL

2021-06-28 Thread Ulrich Weigand
On Fri, Jun 25, 2021 at 06:19:48PM -0700, Richard Henderson wrote: > On 6/23/21 7:50 AM, Ulrich Weigand wrote: > >@@ -506,6 +534,7 @@ uint64_t HELPER(cgeb)(CPUS390XState *env, uint64_t v2, > >uint32_t m34) > > { > > int old_mode = s390_swap_bfp_rounding_mode(env, round_from_m34(m34)); > >

Re: [PATCH] target/s390x: Fix CC set by CONVERT TO FIXED/LOGICAL

2021-06-25 Thread Richard Henderson
On 6/23/21 7:50 AM, Ulrich Weigand wrote: @@ -506,6 +534,7 @@ uint64_t HELPER(cgeb)(CPUS390XState *env, uint64_t v2, uint32_t m34) { int old_mode = s390_swap_bfp_rounding_mode(env, round_from_m34(m34)); int64_t ret = float32_to_int64(v2, &env->fpu_status); +env->cc_op = set_cc_

[PATCH] target/s390x: Fix CC set by CONVERT TO FIXED/LOGICAL

2021-06-23 Thread Ulrich Weigand
The FP-to-integer conversion instructions need to set CC 3 whenever a "special case" occurs; this is the case whenever the instruction also signals the IEEE invalid exception. (See e.g. figure 19-18 in the Principles of Operation.) However, qemu currently will set CC 3 only in the case where the