Dear Luca Barbato,

On 18/01/16 16:10, Luca Barbato wrote:
> The code wrongly assumed that the instructions used are supported
> on mips64, while it is supported only on loongson cpus.
> ---

The patch looks good to me.

Regards,

Vincent.

>  libavcodec/mips/mathops.h | 37 ++++++++++++++++++++-----------------
>  1 file changed, 20 insertions(+), 17 deletions(-)
> 
> diff --git a/libavcodec/mips/mathops.h b/libavcodec/mips/mathops.h
> index dd80f68..573d325 100644
> --- a/libavcodec/mips/mathops.h
> +++ b/libavcodec/mips/mathops.h
> @@ -28,13 +28,16 @@
>  #if HAVE_INLINE_ASM
>  
>  #if HAVE_LOONGSON
> +#if ARCH_MIPS64
>  
>  static inline av_const int64_t MAC64(int64_t d, int a, int b)
>  {
>      int64_t m;
> -    __asm__ ("dmult.g %1, %2, %3 \n\t"
> -             "daddu   %0, %0, %1 \n\t"
> -             : "+r"(d), "=&r"(m) : "r"(a), "r"(b));
> +    __asm__ ("dmult %2, %3     \n\t"
> +             "mflo  %1         \n\t"
> +             "daddu %0, %0, %1 \n\t"
> +             : "+r"(d), "=&r"(m) : "r"(a), "r"(b)
> +             : "hi", "lo");
>      return d;
>  }
>  #define MAC64(d, a, b) ((d) = MAC64(d, a, b))
> @@ -42,23 +45,23 @@ static inline av_const int64_t MAC64(int64_t d, int a, 
> int b)
>  static inline av_const int64_t MLS64(int64_t d, int a, int b)
>  {
>      int64_t m;
> -    __asm__ ("dmult.g %1, %2, %3 \n\t"
> -             "dsubu   %0, %0, %1 \n\t"
> -             : "+r"(d), "=&r"(m) : "r"(a), "r"(b));
> +    __asm__ ("dmult %2, %3     \n\t"
> +             "mflo  %1         \n\t"
> +             "dsubu %0, %0, %1 \n\t"
> +             : "+r"(d), "=&r"(m) : "r"(a), "r"(b)
> +             : "hi", "lo");
>      return d;
>  }
>  #define MLS64(d, a, b) ((d) = MLS64(d, a, b))
>  
> -#elif ARCH_MIPS64
> +#else
>  
>  static inline av_const int64_t MAC64(int64_t d, int a, int b)
>  {
>      int64_t m;
> -    __asm__ ("dmult %2, %3     \n\t"
> -             "mflo  %1         \n\t"
> -             "daddu %0, %0, %1 \n\t"
> -             : "+r"(d), "=&r"(m) : "r"(a), "r"(b)
> -             : "hi", "lo");
> +    __asm__ ("dmult.g %1, %2, %3 \n\t"
> +             "daddu   %0, %0, %1 \n\t"
> +             : "+r"(d), "=&r"(m) : "r"(a), "r"(b));
>      return d;
>  }
>  #define MAC64(d, a, b) ((d) = MAC64(d, a, b))
> @@ -66,17 +69,17 @@ static inline av_const int64_t MAC64(int64_t d, int a, 
> int b)
>  static inline av_const int64_t MLS64(int64_t d, int a, int b)
>  {
>      int64_t m;
> -    __asm__ ("dmult %2, %3     \n\t"
> -             "mflo  %1         \n\t"
> -             "dsubu %0, %0, %1 \n\t"
> -             : "+r"(d), "=&r"(m) : "r"(a), "r"(b)
> -             : "hi", "lo");
> +    __asm__ ("dmult.g %1, %2, %3 \n\t"
> +             "dsubu   %0, %0, %1 \n\t"
> +             : "+r"(d), "=&r"(m) : "r"(a), "r"(b));
>      return d;
>  }
>  #define MLS64(d, a, b) ((d) = MLS64(d, a, b))
>  
>  #endif
>  
> +#endif /* HAVE_LOONGSON */
> +
>  #endif /* HAVE_INLINE_ASM */
>  
>  #endif /* AVCODEC_MIPS_MATHOPS_H */
> 
_______________________________________________
libav-devel mailing list
[email protected]
https://lists.libav.org/mailman/listinfo/libav-devel

Reply via email to