[PULL 11/30] ppc/translate: Turn the helper macros into functions
From: Giuseppe Musacchio Suggested-by: Richard Henderson Signed-off-by: Giuseppe Musacchio Reviewed-by: Richard Henderson Message-Id: <20201112230130.65262-3-thatle...@gmail.com> Signed-off-by: David Gibson --- target/ppc/fpu_helper.c | 228 ++-- 1 file changed, 123 insertions(+), 105 deletions(-) diff --git a/target/ppc/fpu_helper.c b/target/ppc/fpu_helper.c index 6d3648f5b1..34f5bc1f3c 100644 --- a/target/ppc/fpu_helper.c +++ b/target/ppc/fpu_helper.c @@ -2467,113 +2467,131 @@ void helper_xscmpexpqp(CPUPPCState *env, uint32_t opcode, do_float_check_status(env, GETPC()); } -#define VSX_SCALAR_CMP(op, ordered) \ -void helper_##op(CPUPPCState *env, uint32_t opcode, \ - ppc_vsr_t *xa, ppc_vsr_t *xb) \ -{\ -uint32_t cc = 0; \ -bool vxsnan_flag = false, vxvc_flag = false; \ - \ -helper_reset_fpstatus(env); \ - \ -if (float64_is_signaling_nan(xa->VsrD(0), &env->fp_status) ||\ -float64_is_signaling_nan(xb->VsrD(0), &env->fp_status)) {\ -vxsnan_flag = true; \ -if (fpscr_ve == 0 && ordered) { \ -vxvc_flag = true;\ -}\ -} else if (float64_is_quiet_nan(xa->VsrD(0), &env->fp_status) || \ - float64_is_quiet_nan(xb->VsrD(0), &env->fp_status)) { \ -if (ordered) { \ -vxvc_flag = true;\ -}\ -}\ -if (vxsnan_flag) { \ -float_invalid_op_vxsnan(env, GETPC()); \ -}\ -if (vxvc_flag) { \ -float_invalid_op_vxvc(env, 0, GETPC()); \ -}\ - \ -switch (float64_compare(xa->VsrD(0), xb->VsrD(0), &env->fp_status)) {\ -case float_relation_less:\ -cc |= CRF_LT;\ -break; \ -case float_relation_equal: \ -cc |= CRF_EQ;\ -break; \ -case float_relation_greater: \ -cc |= CRF_GT;\ -break; \ -case float_relation_unordered: \ -cc |= CRF_SO;\ -break; \ -}\ - \ -env->fpscr &= ~FP_FPCC; \ -env->fpscr |= cc << FPSCR_FPCC; \ -env->crf[BF(opcode)] = cc; \ - \ -do_float_check_status(env, GETPC()); \ -} - -VSX_SCALAR_CMP(xscmpodp, 1) -VSX_SCALAR_CMP(xscmpudp, 0) - -#define VSX_SCALAR_CMPQ(op, ordered)\ -void helper_##op(CPUPPCState *env, uint32_t opcode, \ - ppc_vsr_t *xa, ppc_vsr_t *xb) \ -{ \ -uint32_t cc = 0;\ -bool vxsnan_flag = false, vxvc_flag = false;\ -\ -helper_reset_fpstatus(env); \ -
[PULL 11/30] ppc/translate: Turn the helper macros into functions
From: LemonBoy Suggested-by: Richard Henderson Signed-off-by: Giuseppe Musacchio Reviewed-by: Richard Henderson Message-Id: <20201112230130.65262-3-thatle...@gmail.com> Signed-off-by: David Gibson --- target/ppc/fpu_helper.c | 228 ++-- 1 file changed, 123 insertions(+), 105 deletions(-) diff --git a/target/ppc/fpu_helper.c b/target/ppc/fpu_helper.c index 6d3648f5b1..34f5bc1f3c 100644 --- a/target/ppc/fpu_helper.c +++ b/target/ppc/fpu_helper.c @@ -2467,113 +2467,131 @@ void helper_xscmpexpqp(CPUPPCState *env, uint32_t opcode, do_float_check_status(env, GETPC()); } -#define VSX_SCALAR_CMP(op, ordered) \ -void helper_##op(CPUPPCState *env, uint32_t opcode, \ - ppc_vsr_t *xa, ppc_vsr_t *xb) \ -{\ -uint32_t cc = 0; \ -bool vxsnan_flag = false, vxvc_flag = false; \ - \ -helper_reset_fpstatus(env); \ - \ -if (float64_is_signaling_nan(xa->VsrD(0), &env->fp_status) ||\ -float64_is_signaling_nan(xb->VsrD(0), &env->fp_status)) {\ -vxsnan_flag = true; \ -if (fpscr_ve == 0 && ordered) { \ -vxvc_flag = true;\ -}\ -} else if (float64_is_quiet_nan(xa->VsrD(0), &env->fp_status) || \ - float64_is_quiet_nan(xb->VsrD(0), &env->fp_status)) { \ -if (ordered) { \ -vxvc_flag = true;\ -}\ -}\ -if (vxsnan_flag) { \ -float_invalid_op_vxsnan(env, GETPC()); \ -}\ -if (vxvc_flag) { \ -float_invalid_op_vxvc(env, 0, GETPC()); \ -}\ - \ -switch (float64_compare(xa->VsrD(0), xb->VsrD(0), &env->fp_status)) {\ -case float_relation_less:\ -cc |= CRF_LT;\ -break; \ -case float_relation_equal: \ -cc |= CRF_EQ;\ -break; \ -case float_relation_greater: \ -cc |= CRF_GT;\ -break; \ -case float_relation_unordered: \ -cc |= CRF_SO;\ -break; \ -}\ - \ -env->fpscr &= ~FP_FPCC; \ -env->fpscr |= cc << FPSCR_FPCC; \ -env->crf[BF(opcode)] = cc; \ - \ -do_float_check_status(env, GETPC()); \ -} - -VSX_SCALAR_CMP(xscmpodp, 1) -VSX_SCALAR_CMP(xscmpudp, 0) - -#define VSX_SCALAR_CMPQ(op, ordered)\ -void helper_##op(CPUPPCState *env, uint32_t opcode, \ - ppc_vsr_t *xa, ppc_vsr_t *xb) \ -{ \ -uint32_t cc = 0;\ -bool vxsnan_flag = false, vxvc_flag = false;\ -\ -helper_reset_fpstatus(env); \ -