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