qemu-s390x
[Top][All Lists]
Advanced

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

Re: [PATCH v1 09/20] s390x/tcg: Implement 32/128 bit for VECTOR FP COMPA


From: Richard Henderson
Subject: Re: [PATCH v1 09/20] s390x/tcg: Implement 32/128 bit for VECTOR FP COMPARE *
Date: Thu, 1 Oct 2020 11:12:56 -0500
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.10.0

On 9/30/20 9:55 AM, David Hildenbrand wrote:
> -void HELPER(gvec_vfce64)(void *v1, const void *v2, const void *v3,
> -                         CPUS390XState *env, uint32_t desc)
> -{
> -    vfc64(v1, v2, v3, env, false, float64_eq_quiet, GETPC());
> +#define DEF_GVEC_VFCE(BITS)                                                  
>   \
> +void HELPER(gvec_vfce##BITS)(void *v1, const void *v2, const void *v3,       
>   \
> +                             CPUS390XState *env, uint32_t desc)              
>   \
> +{                                                                            
>   \
> +    const bool sq = simd_data(desc);                                         
>   \
> +                                                                             
>   \
> +    vfc##BITS(v1, v2, v3, env, false,                                        
>   \
> +              sq ? float##BITS##_eq : float##BITS##_eq_quiet, GETPC());      
>   \
>  }
> +DEF_GVEC_VFCE(32)
> +DEF_GVEC_VFCE(64)
> +DEF_GVEC_VFCE(128)
>  
> -void HELPER(gvec_vfce64s)(void *v1, const void *v2, const void *v3,
> -                          CPUS390XState *env, uint32_t desc)
> -{
> -    vfc64(v1, v2, v3, env, true, float64_eq_quiet, GETPC());
> +#define DEF_GVEC_VFCE_S(BITS)                                                
>   \
> +void HELPER(gvec_vfce##BITS##s)(void *v1, const void *v2, const void *v3,    
>   \
> +                                CPUS390XState *env, uint32_t desc)           
>   \
> +{                                                                            
>   \
> +    const bool sq = simd_data(desc);                                         
>   \
> +                                                                             
>   \
> +    vfc##BITS(v1, v2, v3, env, true,                                         
>   \
> +              sq ? float##BITS##_eq : float##BITS##_eq_quiet, GETPC());      
>   \
>  }
> +DEF_GVEC_VFCE_S(32)
> +DEF_GVEC_VFCE_S(64)
>  
> -void HELPER(gvec_vfce64_cc)(void *v1, const void *v2, const void *v3,
> -                            CPUS390XState *env, uint32_t desc)
> -{
> -    env->cc_op = vfc64(v1, v2, v3, env, false, float64_eq_quiet, GETPC());
> +#define DEF_GVEC_VFCE_CC(BITS)                                               
>   \
> +void HELPER(gvec_vfce##BITS##_cc)(void *v1, const void *v2, const void *v3,  
>   \
> +                                  CPUS390XState *env, uint32_t desc)         
>   \
> +{                                                                            
>   \
> +    const bool sq = simd_data(desc);                                         
>   \
> +                                                                             
>   \
> +    env->cc_op = vfc##BITS(v1, v2, v3, env, false,                           
>   \
> +                           sq ? float##BITS##_eq : float##BITS##_eq_quiet,   
>   \
> +                           GETPC());                                         
>   \
>  }
> +DEF_GVEC_VFCE_CC(32)
> +DEF_GVEC_VFCE_CC(64)
> +DEF_GVEC_VFCE_CC(128)
>  
> -void HELPER(gvec_vfce64s_cc)(void *v1, const void *v2, const void *v3,
> -                            CPUS390XState *env, uint32_t desc)
> -{
> -    env->cc_op = vfc64(v1, v2, v3, env, true, float64_eq_quiet, GETPC());
> +#define DEF_GVEC_VFCE_S_CC(BITS)                                             
>   \
> +void HELPER(gvec_vfce##BITS##s_cc)(void *v1, const void *v2, const void *v3, 
>   \
> +                                   CPUS390XState *env, uint32_t desc)        
>   \
> +{                                                                            
>   \
> +    const bool sq = simd_data(desc);                                         
>   \
> +                                                                             
>   \
> +    env->cc_op = vfc##BITS(v1, v2, v3, env, true,                            
>   \
> +                           sq ? float##BITS##_eq : float##BITS##_eq_quiet,   
>   \
> +                           GETPC());                                         
>   \
>  }
> +DEF_GVEC_VFCE_S_CC(32)
> +DEF_GVEC_VFCE_S_CC(64)

These macros are at the wrong level.  You shouldn't need separate macros for EQ
vs LT, etc.


r~



reply via email to

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