[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-arm] [PATCH v5 9/9] target-mips: Clean up position of abs2008/
From: |
Aleksandar Markovic |
Subject: |
Re: [Qemu-arm] [PATCH v5 9/9] target-mips: Clean up position of abs2008/nan2008 cases in genfarith() |
Date: |
Tue, 19 Apr 2016 09:07:40 +0000 |
Diff looks messy, but, in fact, this change is just changing location of
six cases in gen_farith().
This is illustrated in the diagram below: (I added indentation of 2 spaces for
abs2008-related cases, and 4 spaces for nan2008-related cases, to stress
the effect of grouping cases with similar handling; right order of cases is
of tremendous help during development; the diagram makes sense only
if it is displayed with fixed width fonts; you can copy/paste it in any editor
if that is not he case)
case OPC_ADD_S case OPC_ADD_S
case OPC_SUB_S case OPC_SUB_S
case OPC_MUL_S case OPC_MUL_S
case OPC_DIV_S case OPC_DIV_S
case OPC_SQRT_S case OPC_SQRT_S
case OPC_ABS_S -------------| case OPC_MOV_S
case OPC_MOV_S |------> case OPC_ABS_S
case OPC_NEG_S case OPC_NEG_S
case OPC_ROUND_L_S |------> case OPC_CVT_L_S
case OPC_TRUNC_L_S | case OPC_ROUND_L_S
case OPC_CEIL_L_S | case OPC_TRUNC_L_S
case OPC_FLOOR_L_S | case OPC_CEIL_L_S
case OPC_ROUND_W_S | case OPC_FLOOR_L_S
case OPC_TRUNC_W_S | |---> case OPC_CVT_W_S
case OPC_CEIL_W_S | | case OPC_ROUND_W_S
case OPC_FLOOR_W_S | | case OPC_TRUNC_W_S
case OPC_SEL_S | | case OPC_CEIL_W_S
case OPC_SELEQZ_S | | case OPC_FLOOR_W_S
case OPC_SELNEZ_S | | case OPC_SEL_S
case OPC_MOVCF_S | | case OPC_SELEQZ_S
case OPC_MOVZ_S | | case OPC_SELNEZ_S
case OPC_MOVN_S | | case OPC_MOVCF_S
case OPC_RECIP_S | | case OPC_MOVZ_S
case OPC_RSQRT_S | | case OPC_MOVN_S
case OPC_MADDF_S | | case OPC_RECIP_S
case OPC_MSUBF_S | | case OPC_RSQRT_S
case OPC_RINT_S | | case OPC_MADDF_S
case OPC_CLASS_S | | case OPC_MSUBF_S
case OPC_MIN_S | | case OPC_RINT_S
case OPC_MINA_S | | case OPC_CLASS_S
case OPC_MAX_S | | case OPC_MIN_S
case OPC_MAXA_S | | case OPC_MINA_S
case OPC_CVT_D_S | | case OPC_MAX_S
case OPC_CVT_W_S ------------| case OPC_MAXA_S
case OPC_CVT_L_S ---------| case OPC_CVT_D_S
case OPC_CVT_PS_S case OPC_CVT_PS_S
case OPC_CMP_F_S case OPC_CMP_F_S
case OPC_CMP_UN_S case OPC_CMP_UN_S
case OPC_CMP_EQ_S case OPC_CMP_EQ_S
case OPC_CMP_UEQ_S case OPC_CMP_UEQ_S
case OPC_CMP_OLT_S case OPC_CMP_OLT_S
case OPC_CMP_ULT_S case OPC_CMP_ULT_S
case OPC_CMP_OLE_S case OPC_CMP_OLE_S
case OPC_CMP_ULE_S case OPC_CMP_ULE_S
case OPC_CMP_SF_S case OPC_CMP_SF_S
case OPC_CMP_NGLE_S case OPC_CMP_NGLE_S
case OPC_CMP_SEQ_S case OPC_CMP_SEQ_S
case OPC_CMP_NGL_S case OPC_CMP_NGL_S
case OPC_CMP_LT_S case OPC_CMP_LT_S
case OPC_CMP_NGE_S case OPC_CMP_NGE_S
case OPC_CMP_LE_S case OPC_CMP_LE_S
case OPC_CMP_NGT_S case OPC_CMP_NGT_S
case OPC_ADD_D case OPC_ADD_D
case OPC_SUB_D case OPC_SUB_D
case OPC_MUL_D case OPC_MUL_D
case OPC_DIV_D case OPC_DIV_D
case OPC_SQRT_D case OPC_SQRT_D
case OPC_ABS_D -------------| case OPC_MOV_D
case OPC_MOV_D |------> case OPC_ABS_D
case OPC_NEG_D case OPC_NEG_D
case OPC_ROUND_L_D |------> case OPC_CVT_L_D
case OPC_TRUNC_L_D | case OPC_ROUND_L_D
case OPC_CEIL_L_D | case OPC_TRUNC_L_D
case OPC_FLOOR_L_D | case OPC_CEIL_L_D
case OPC_ROUND_W_D | case OPC_FLOOR_L_D
case OPC_TRUNC_W_D | |---> case OPC_CVT_W_D
case OPC_CEIL_W_D | | case OPC_ROUND_W_D
case OPC_FLOOR_W_D | | case OPC_TRUNC_W_D
case OPC_SEL_D | | case OPC_CEIL_W_D
case OPC_SELEQZ_D | | case OPC_FLOOR_W_D
case OPC_SELNEZ_D | | case OPC_SEL_D
case OPC_MOVCF_D | | case OPC_SELEQZ_D
case OPC_MOVZ_D | | case OPC_SELNEZ_D
case OPC_MOVN_D | | case OPC_MOVCF_D
case OPC_RECIP_D | | case OPC_MOVZ_D
case OPC_RSQRT_D | | case OPC_MOVN_D
case OPC_MADDF_D | | case OPC_RECIP_D
case OPC_MSUBF_D | | case OPC_RSQRT_D
case OPC_RINT_D | | case OPC_MADDF_D
case OPC_CLASS_D | | case OPC_MSUBF_D
case OPC_MIN_D | | case OPC_RINT_D
case OPC_MINA_D | | case OPC_CLASS_D
case OPC_MAX_D | | case OPC_MIN_D
case OPC_MAXA_D | | case OPC_MINA_D
case OPC_CMP_F_D | | case OPC_MAX_D
case OPC_CMP_UN_D | | case OPC_MAXA_D
case OPC_CMP_EQ_D | | case OPC_CMP_F_D
case OPC_CMP_UEQ_D | | case OPC_CMP_UN_D
case OPC_CMP_OLT_D | | case OPC_CMP_EQ_D
case OPC_CMP_ULT_D | | case OPC_CMP_UEQ_D
case OPC_CMP_OLE_D | | case OPC_CMP_OLT_D
case OPC_CMP_ULE_D | | case OPC_CMP_ULT_D
case OPC_CMP_SF_D | | case OPC_CMP_OLE_D
case OPC_CMP_NGLE_D | | case OPC_CMP_ULE_D
case OPC_CMP_SEQ_D | | case OPC_CMP_SF_D
case OPC_CMP_NGL_D | | case OPC_CMP_NGLE_D
case OPC_CMP_LT_D | | case OPC_CMP_SEQ_D
case OPC_CMP_NGE_D | | case OPC_CMP_NGL_D
case OPC_CMP_LE_D | | case OPC_CMP_LT_D
case OPC_CMP_NGT_D | | case OPC_CMP_NGE_D
case OPC_CVT_S_D | | case OPC_CMP_LE_D
case OPC_CVT_W_D ------------| case OPC_CMP_NGT_D
case OPC_CVT_L_D ---------| case OPC_CVT_S_D
case OPC_CVT_S_W case OPC_CVT_S_W
case OPC_CVT_D_W case OPC_CVT_D_W
case OPC_CVT_S_L case OPC_CVT_S_L
case OPC_CVT_D_L case OPC_CVT_D_L
case OPC_CVT_PS_PW case OPC_CVT_PS_PW
case OPC_ADD_PS case OPC_ADD_PS
case OPC_SUB_PS case OPC_SUB_PS
case OPC_MUL_PS case OPC_MUL_PS
case OPC_ABS_PS case OPC_ABS_PS
case OPC_MOV_PS case OPC_MOV_PS
case OPC_NEG_PS case OPC_NEG_PS
case OPC_MOVCF_PS case OPC_MOVCF_PS
case OPC_MOVZ_PS case OPC_MOVZ_PS
case OPC_MOVN_PS case OPC_MOVN_PS
case OPC_ADDR_PS case OPC_ADDR_PS
case OPC_MULR_PS case OPC_MULR_PS
case OPC_RECIP2_PS case OPC_RECIP2_PS
case OPC_RECIP1_PS case OPC_RECIP1_PS
case OPC_RSQRT1_PS case OPC_RSQRT1_PS
case OPC_RSQRT2_PS case OPC_RSQRT2_PS
case OPC_CVT_S_PU case OPC_CVT_S_PU
case OPC_CVT_PW_PS case OPC_CVT_PW_PS
case OPC_CVT_S_PL case OPC_CVT_S_PL
case OPC_PLL_PS case OPC_PLL_PS
case OPC_PLU_PS case OPC_PLU_PS
case OPC_PUL_PS case OPC_PUL_PS
case OPC_PUU_PS case OPC_PUU_PS
case OPC_CMP_F_PS case OPC_CMP_F_PS
case OPC_CMP_UN_PS case OPC_CMP_UN_PS
case OPC_CMP_EQ_PS case OPC_CMP_EQ_PS
case OPC_CMP_UEQ_PS case OPC_CMP_UEQ_PS
case OPC_CMP_OLT_PS case OPC_CMP_OLT_PS
case OPC_CMP_ULT_PS case OPC_CMP_ULT_PS
case OPC_CMP_OLE_PS case OPC_CMP_OLE_PS
case OPC_CMP_ULE_PS case OPC_CMP_ULE_PS
case OPC_CMP_SF_PS case OPC_CMP_SF_PS
case OPC_CMP_NGLE_PS case OPC_CMP_NGLE_PS
case OPC_CMP_SEQ_PS case OPC_CMP_SEQ_PS
case OPC_CMP_NGL_PS case OPC_CMP_NGL_PS
case OPC_CMP_LT_PS case OPC_CMP_LT_PS
case OPC_CMP_NGE_PS case OPC_CMP_NGE_PS
case OPC_CMP_LE_PS case OPC_CMP_LE_PS
case OPC_CMP_NGT_PS case OPC_CMP_NGT_PS
- [Qemu-arm] [PATCH v5 6/9] target-mips: Add abs2008 flavor of <ABS|NEG>.<S|D>, (continued)
- [Qemu-arm] [PATCH v5 6/9] target-mips: Add abs2008 flavor of <ABS|NEG>.<S|D>, Aleksandar Markovic, 2016/04/18
- [Qemu-arm] [PATCH v5 4/9] target-mips: Amend processor definitions in relation to FCR31, Aleksandar Markovic, 2016/04/18
- [Qemu-arm] [PATCH v5 2/9] softfloat: For Mips only, correct default NaN values, Aleksandar Markovic, 2016/04/18
- [Qemu-arm] [PATCH v5 7/9] target-mips: Add nan2008 flavor of <CEIL|CVT|FLOOR|ROUND|TRUNC>.<L|W>.<S|D>, Aleksandar Markovic, 2016/04/18
- [Qemu-arm] [PATCH v5 3/9] softfloat: For Mips only, correct order in pickNaNMulAdd(), Aleksandar Markovic, 2016/04/18
- [Qemu-arm] [PATCH v5 9/9] target-mips: Clean up position of abs2008/nan2008 cases in genfarith(), Aleksandar Markovic, 2016/04/18
- Re: [Qemu-arm] [PATCH v5 9/9] target-mips: Clean up position of abs2008/nan2008 cases in genfarith(),
Aleksandar Markovic <=
- [Qemu-arm] [PATCH v5 1/9] softfloat: Implement run-time-configurable meaning of signaling NaN bit, Aleksandar Markovic, 2016/04/18