[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH v5 9/9] target-mips: Clean up position of abs200

From: Aleksandar Markovic
Subject: Re: [Qemu-devel] [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   

reply via email to

[Prev in Thread] Current Thread [Next in Thread]