Re: [FFmpeg-devel] [PATCH] Revert "lavu/atomic: add support for the new memory model aware gcc built-ins"

2017-03-07 Thread James Almer
On 3/7/2017 3:47 AM, wm4 wrote:
> On Tue,  7 Mar 2017 00:29:53 -0300
> James Almer  wrote:
> 
>> This reverts commit faa9d2982969c999ab0e443a226eff116f7f8e4b.
>>
>> This change became superfluous when support for C11 atomics was introduced.
>> Reverting it will make the removal of this implementation in an upcoming
>> merge conflict free.
>>
>> Signed-off-by: James Almer 
>> ---
>>  configure  |  4 +---
>>  libavutil/atomic_gcc.h | 17 -
>>  2 files changed, 1 insertion(+), 20 deletions(-)
>>
>> diff --git a/configure b/configure
>> index 0199fec5c0..6350942ef9 100755
>> --- a/configure
>> +++ b/configure
>> @@ -1821,7 +1821,6 @@ ARCH_FEATURES="
>>  
>>  BUILTIN_LIST="
>>  atomic_cas_ptr
>> -atomic_compare_exchange
>>  machine_rw_barrier
>>  MemoryBarrier
>>  mm_empty
>> @@ -2322,7 +2321,7 @@ symver_if_any="symver_asm_label symver_gnu_asm"
>>  valgrind_backtrace_deps="!optimizations valgrind_valgrind_h"
>>  
>>  # threading support
>> -atomics_gcc_if_any="sync_val_compare_and_swap atomic_compare_exchange"
>> +atomics_gcc_if="sync_val_compare_and_swap"
>>  atomics_suncc_if="atomic_cas_ptr machine_rw_barrier"
>>  atomics_win32_if="MemoryBarrier"
>>  atomics_native_if_any="$ATOMICS_LIST"
>> @@ -5533,7 +5532,6 @@ if ! disabled network; then
>>  fi
>>  
>>  check_builtin atomic_cas_ptr atomic.h "void **ptr; void *oldval, *newval; 
>> atomic_cas_ptr(ptr, oldval, newval)"
>> -check_builtin atomic_compare_exchange "" "int *ptr, *oldval; int newval; 
>> __atomic_compare_exchange_n(ptr, oldval, newval, 0, __ATOMIC_SEQ_CST, 
>> __ATOMIC_SEQ_CST)"
>>  check_builtin machine_rw_barrier mbarrier.h "__machine_rw_barrier()"
>>  check_builtin MemoryBarrier windows.h "MemoryBarrier()"
>>  check_builtin sarestart signal.h "SA_RESTART"
>> diff --git a/libavutil/atomic_gcc.h b/libavutil/atomic_gcc.h
>> index 5f9fc49ba0..2bb43c3cea 100644
>> --- a/libavutil/atomic_gcc.h
>> +++ b/libavutil/atomic_gcc.h
>> @@ -28,40 +28,27 @@
>>  #define avpriv_atomic_int_get atomic_int_get_gcc
>>  static inline int atomic_int_get_gcc(volatile int *ptr)
>>  {
>> -#if HAVE_ATOMIC_COMPARE_EXCHANGE
>> -return __atomic_load_n(ptr, __ATOMIC_SEQ_CST);
>> -#else
>>  __sync_synchronize();
>>  return *ptr;
>> -#endif
>>  }
>>  
>>  #define avpriv_atomic_int_set atomic_int_set_gcc
>>  static inline void atomic_int_set_gcc(volatile int *ptr, int val)
>>  {
>> -#if HAVE_ATOMIC_COMPARE_EXCHANGE
>> -__atomic_store_n(ptr, val, __ATOMIC_SEQ_CST);
>> -#else
>>  *ptr = val;
>>  __sync_synchronize();
>> -#endif
>>  }
>>  
>>  #define avpriv_atomic_int_add_and_fetch atomic_int_add_and_fetch_gcc
>>  static inline int atomic_int_add_and_fetch_gcc(volatile int *ptr, int inc)
>>  {
>> -#if HAVE_ATOMIC_COMPARE_EXCHANGE
>> -return __atomic_add_fetch(ptr, inc, __ATOMIC_SEQ_CST);
>> -#else
>>  return __sync_add_and_fetch(ptr, inc);
>> -#endif
>>  }
>>  
>>  #define avpriv_atomic_ptr_cas atomic_ptr_cas_gcc
>>  static inline void *atomic_ptr_cas_gcc(void * volatile *ptr,
>> void *oldval, void *newval)
>>  {
>> -#if HAVE_SYNC_VAL_COMPARE_AND_SWAP
>>  #ifdef __ARMCC_VERSION
>>  // armcc will throw an error if ptr is not an integer type
>>  volatile uintptr_t *tmp = (volatile uintptr_t*)ptr;
>> @@ -69,10 +56,6 @@ static inline void *atomic_ptr_cas_gcc(void * volatile 
>> *ptr,
>>  #else
>>  return __sync_val_compare_and_swap(ptr, oldval, newval);
>>  #endif
>> -#else
>> -__atomic_compare_exchange_n(ptr, , newval, 0, __ATOMIC_SEQ_CST, 
>> __ATOMIC_SEQ_CST);
>> -return oldval;
>> -#endif
>>  }
>>  
>>  #endif /* AVUTIL_ATOMIC_GCC_H */
> 
> Sounds like a good thing.

Pushed.

___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel


Re: [FFmpeg-devel] [PATCH] Revert "lavu/atomic: add support for the new memory model aware gcc built-ins"

2017-03-06 Thread wm4
On Tue,  7 Mar 2017 00:29:53 -0300
James Almer  wrote:

> This reverts commit faa9d2982969c999ab0e443a226eff116f7f8e4b.
> 
> This change became superfluous when support for C11 atomics was introduced.
> Reverting it will make the removal of this implementation in an upcoming
> merge conflict free.
> 
> Signed-off-by: James Almer 
> ---
>  configure  |  4 +---
>  libavutil/atomic_gcc.h | 17 -
>  2 files changed, 1 insertion(+), 20 deletions(-)
> 
> diff --git a/configure b/configure
> index 0199fec5c0..6350942ef9 100755
> --- a/configure
> +++ b/configure
> @@ -1821,7 +1821,6 @@ ARCH_FEATURES="
>  
>  BUILTIN_LIST="
>  atomic_cas_ptr
> -atomic_compare_exchange
>  machine_rw_barrier
>  MemoryBarrier
>  mm_empty
> @@ -2322,7 +2321,7 @@ symver_if_any="symver_asm_label symver_gnu_asm"
>  valgrind_backtrace_deps="!optimizations valgrind_valgrind_h"
>  
>  # threading support
> -atomics_gcc_if_any="sync_val_compare_and_swap atomic_compare_exchange"
> +atomics_gcc_if="sync_val_compare_and_swap"
>  atomics_suncc_if="atomic_cas_ptr machine_rw_barrier"
>  atomics_win32_if="MemoryBarrier"
>  atomics_native_if_any="$ATOMICS_LIST"
> @@ -5533,7 +5532,6 @@ if ! disabled network; then
>  fi
>  
>  check_builtin atomic_cas_ptr atomic.h "void **ptr; void *oldval, *newval; 
> atomic_cas_ptr(ptr, oldval, newval)"
> -check_builtin atomic_compare_exchange "" "int *ptr, *oldval; int newval; 
> __atomic_compare_exchange_n(ptr, oldval, newval, 0, __ATOMIC_SEQ_CST, 
> __ATOMIC_SEQ_CST)"
>  check_builtin machine_rw_barrier mbarrier.h "__machine_rw_barrier()"
>  check_builtin MemoryBarrier windows.h "MemoryBarrier()"
>  check_builtin sarestart signal.h "SA_RESTART"
> diff --git a/libavutil/atomic_gcc.h b/libavutil/atomic_gcc.h
> index 5f9fc49ba0..2bb43c3cea 100644
> --- a/libavutil/atomic_gcc.h
> +++ b/libavutil/atomic_gcc.h
> @@ -28,40 +28,27 @@
>  #define avpriv_atomic_int_get atomic_int_get_gcc
>  static inline int atomic_int_get_gcc(volatile int *ptr)
>  {
> -#if HAVE_ATOMIC_COMPARE_EXCHANGE
> -return __atomic_load_n(ptr, __ATOMIC_SEQ_CST);
> -#else
>  __sync_synchronize();
>  return *ptr;
> -#endif
>  }
>  
>  #define avpriv_atomic_int_set atomic_int_set_gcc
>  static inline void atomic_int_set_gcc(volatile int *ptr, int val)
>  {
> -#if HAVE_ATOMIC_COMPARE_EXCHANGE
> -__atomic_store_n(ptr, val, __ATOMIC_SEQ_CST);
> -#else
>  *ptr = val;
>  __sync_synchronize();
> -#endif
>  }
>  
>  #define avpriv_atomic_int_add_and_fetch atomic_int_add_and_fetch_gcc
>  static inline int atomic_int_add_and_fetch_gcc(volatile int *ptr, int inc)
>  {
> -#if HAVE_ATOMIC_COMPARE_EXCHANGE
> -return __atomic_add_fetch(ptr, inc, __ATOMIC_SEQ_CST);
> -#else
>  return __sync_add_and_fetch(ptr, inc);
> -#endif
>  }
>  
>  #define avpriv_atomic_ptr_cas atomic_ptr_cas_gcc
>  static inline void *atomic_ptr_cas_gcc(void * volatile *ptr,
> void *oldval, void *newval)
>  {
> -#if HAVE_SYNC_VAL_COMPARE_AND_SWAP
>  #ifdef __ARMCC_VERSION
>  // armcc will throw an error if ptr is not an integer type
>  volatile uintptr_t *tmp = (volatile uintptr_t*)ptr;
> @@ -69,10 +56,6 @@ static inline void *atomic_ptr_cas_gcc(void * volatile 
> *ptr,
>  #else
>  return __sync_val_compare_and_swap(ptr, oldval, newval);
>  #endif
> -#else
> -__atomic_compare_exchange_n(ptr, , newval, 0, __ATOMIC_SEQ_CST, 
> __ATOMIC_SEQ_CST);
> -return oldval;
> -#endif
>  }
>  
>  #endif /* AVUTIL_ATOMIC_GCC_H */

Sounds like a good thing.
___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel


[FFmpeg-devel] [PATCH] Revert "lavu/atomic: add support for the new memory model aware gcc built-ins"

2017-03-06 Thread James Almer
This reverts commit faa9d2982969c999ab0e443a226eff116f7f8e4b.

This change became superfluous when support for C11 atomics was introduced.
Reverting it will make the removal of this implementation in an upcoming
merge conflict free.

Signed-off-by: James Almer 
---
 configure  |  4 +---
 libavutil/atomic_gcc.h | 17 -
 2 files changed, 1 insertion(+), 20 deletions(-)

diff --git a/configure b/configure
index 0199fec5c0..6350942ef9 100755
--- a/configure
+++ b/configure
@@ -1821,7 +1821,6 @@ ARCH_FEATURES="
 
 BUILTIN_LIST="
 atomic_cas_ptr
-atomic_compare_exchange
 machine_rw_barrier
 MemoryBarrier
 mm_empty
@@ -2322,7 +2321,7 @@ symver_if_any="symver_asm_label symver_gnu_asm"
 valgrind_backtrace_deps="!optimizations valgrind_valgrind_h"
 
 # threading support
-atomics_gcc_if_any="sync_val_compare_and_swap atomic_compare_exchange"
+atomics_gcc_if="sync_val_compare_and_swap"
 atomics_suncc_if="atomic_cas_ptr machine_rw_barrier"
 atomics_win32_if="MemoryBarrier"
 atomics_native_if_any="$ATOMICS_LIST"
@@ -5533,7 +5532,6 @@ if ! disabled network; then
 fi
 
 check_builtin atomic_cas_ptr atomic.h "void **ptr; void *oldval, *newval; 
atomic_cas_ptr(ptr, oldval, newval)"
-check_builtin atomic_compare_exchange "" "int *ptr, *oldval; int newval; 
__atomic_compare_exchange_n(ptr, oldval, newval, 0, __ATOMIC_SEQ_CST, 
__ATOMIC_SEQ_CST)"
 check_builtin machine_rw_barrier mbarrier.h "__machine_rw_barrier()"
 check_builtin MemoryBarrier windows.h "MemoryBarrier()"
 check_builtin sarestart signal.h "SA_RESTART"
diff --git a/libavutil/atomic_gcc.h b/libavutil/atomic_gcc.h
index 5f9fc49ba0..2bb43c3cea 100644
--- a/libavutil/atomic_gcc.h
+++ b/libavutil/atomic_gcc.h
@@ -28,40 +28,27 @@
 #define avpriv_atomic_int_get atomic_int_get_gcc
 static inline int atomic_int_get_gcc(volatile int *ptr)
 {
-#if HAVE_ATOMIC_COMPARE_EXCHANGE
-return __atomic_load_n(ptr, __ATOMIC_SEQ_CST);
-#else
 __sync_synchronize();
 return *ptr;
-#endif
 }
 
 #define avpriv_atomic_int_set atomic_int_set_gcc
 static inline void atomic_int_set_gcc(volatile int *ptr, int val)
 {
-#if HAVE_ATOMIC_COMPARE_EXCHANGE
-__atomic_store_n(ptr, val, __ATOMIC_SEQ_CST);
-#else
 *ptr = val;
 __sync_synchronize();
-#endif
 }
 
 #define avpriv_atomic_int_add_and_fetch atomic_int_add_and_fetch_gcc
 static inline int atomic_int_add_and_fetch_gcc(volatile int *ptr, int inc)
 {
-#if HAVE_ATOMIC_COMPARE_EXCHANGE
-return __atomic_add_fetch(ptr, inc, __ATOMIC_SEQ_CST);
-#else
 return __sync_add_and_fetch(ptr, inc);
-#endif
 }
 
 #define avpriv_atomic_ptr_cas atomic_ptr_cas_gcc
 static inline void *atomic_ptr_cas_gcc(void * volatile *ptr,
void *oldval, void *newval)
 {
-#if HAVE_SYNC_VAL_COMPARE_AND_SWAP
 #ifdef __ARMCC_VERSION
 // armcc will throw an error if ptr is not an integer type
 volatile uintptr_t *tmp = (volatile uintptr_t*)ptr;
@@ -69,10 +56,6 @@ static inline void *atomic_ptr_cas_gcc(void * volatile *ptr,
 #else
 return __sync_val_compare_and_swap(ptr, oldval, newval);
 #endif
-#else
-__atomic_compare_exchange_n(ptr, , newval, 0, __ATOMIC_SEQ_CST, 
__ATOMIC_SEQ_CST);
-return oldval;
-#endif
 }
 
 #endif /* AVUTIL_ATOMIC_GCC_H */
-- 
2.12.0

___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel