[PULL 11/30] ppc/translate: Turn the helper macros into functions

2020-12-13 Thread David Gibson
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

2020-12-10 Thread David Gibson
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); \
-