From 98ab5d5ba202fbe7924dab5daf88fc6adfcc9a18 Mon Sep 17 00:00:00 2001 From: Nekotekina Date: Tue, 28 Apr 2020 18:05:32 +0300 Subject: [PATCH] atomic.hpp: modernize inline assembly for lock bts/btr/btc Use flag output (requires clang 9+). --- rpcs3/util/atomic.hpp | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/rpcs3/util/atomic.hpp b/rpcs3/util/atomic.hpp index c400d35842..4d0284b15d 100644 --- a/rpcs3/util/atomic.hpp +++ b/rpcs3/util/atomic.hpp @@ -367,7 +367,7 @@ struct atomic_storage : atomic_storage { bool result; ushort _bit = static_cast(bit); - __asm__("lock btsw %2, %0\n" "setc %1" : "+m" (dest), "=r" (result) : "Ir" (_bit) : "cc"); + __asm__("lock btsw %2, %0\n" : "+m" (dest), "=@ccc" (result) : "Ir" (_bit) : "cc"); return result; } @@ -375,7 +375,7 @@ struct atomic_storage : atomic_storage { bool result; ushort _bit = static_cast(bit); - __asm__("lock btrw %2, %0\n" "setc %1" : "+m" (dest), "=r" (result) : "Ir" (_bit) : "cc"); + __asm__("lock btrw %2, %0\n": "+m" (dest), "=@ccc" (result) : "Ir" (_bit) : "cc"); return result; } @@ -383,7 +383,7 @@ struct atomic_storage : atomic_storage { bool result; ushort _bit = static_cast(bit); - __asm__("lock btcw %2, %0\n" "setc %1" : "+m" (dest), "=r" (result) : "Ir" (_bit) : "cc"); + __asm__("lock btcw %2, %0\n": "+m" (dest), "=@ccc" (result) : "Ir" (_bit) : "cc"); return result; } #endif @@ -488,21 +488,21 @@ struct atomic_storage : atomic_storage static inline bool bts(T& dest, uint bit) { bool result; - __asm__("lock btsl %2, %0\n" "setc %1" : "+m" (dest), "=r" (result) : "Ir" (bit) : "cc"); + __asm__("lock btsl %2, %0\n" : "+m" (dest), "=@ccc" (result) : "Ir" (bit) : "cc"); return result; } static inline bool btr(T& dest, uint bit) { bool result; - __asm__("lock btrl %2, %0\n" "setc %1" : "+m" (dest), "=r" (result) : "Ir" (bit) : "cc"); + __asm__("lock btrl %2, %0\n" : "+m" (dest), "=@ccc" (result) : "Ir" (bit) : "cc"); return result; } static inline bool btc(T& dest, uint bit) { bool result; - __asm__("lock btcl %2, %0\n" "setc %1" : "+m" (dest), "=r" (result) : "Ir" (bit) : "cc"); + __asm__("lock btcl %2, %0\n" : "+m" (dest), "=@ccc" (result) : "Ir" (bit) : "cc"); return result; } #endif @@ -608,7 +608,7 @@ struct atomic_storage : atomic_storage { bool result; ullong _bit = bit; - __asm__("lock btsq %2, %0\n" "setc %1" : "+m" (dest), "=r" (result) : "Ir" (_bit) : "cc"); + __asm__("lock btsq %2, %0\n" : "+m" (dest), "=@ccc" (result) : "Ir" (_bit) : "cc"); return result; } @@ -616,7 +616,7 @@ struct atomic_storage : atomic_storage { bool result; ullong _bit = bit; - __asm__("lock btrq %2, %0\n" "setc %1" : "+m" (dest), "=r" (result) : "Ir" (_bit) : "cc"); + __asm__("lock btrq %2, %0\n" : "+m" (dest), "=@ccc" (result) : "Ir" (_bit) : "cc"); return result; } @@ -624,7 +624,7 @@ struct atomic_storage : atomic_storage { bool result; ullong _bit = bit; - __asm__("lock btcq %2, %0\n" "setc %1" : "+m" (dest), "=r" (result) : "Ir" (_bit) : "cc"); + __asm__("lock btcq %2, %0\n" : "+m" (dest), "=@ccc" (result) : "Ir" (_bit) : "cc"); return result; } #endif