mirror of
https://github.com/RPCS3/rpcs3.git
synced 2025-07-11 01:08:39 +12:00
atomic.hpp: modernize inline assembly for lock bts/btr/btc
Use flag output (requires clang 9+).
This commit is contained in:
parent
790fd9ce14
commit
98ab5d5ba2
1 changed files with 9 additions and 9 deletions
|
@ -367,7 +367,7 @@ struct atomic_storage<T, 2> : atomic_storage<T, 0>
|
||||||
{
|
{
|
||||||
bool result;
|
bool result;
|
||||||
ushort _bit = static_cast<ushort>(bit);
|
ushort _bit = static_cast<ushort>(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;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -375,7 +375,7 @@ struct atomic_storage<T, 2> : atomic_storage<T, 0>
|
||||||
{
|
{
|
||||||
bool result;
|
bool result;
|
||||||
ushort _bit = static_cast<ushort>(bit);
|
ushort _bit = static_cast<ushort>(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;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -383,7 +383,7 @@ struct atomic_storage<T, 2> : atomic_storage<T, 0>
|
||||||
{
|
{
|
||||||
bool result;
|
bool result;
|
||||||
ushort _bit = static_cast<ushort>(bit);
|
ushort _bit = static_cast<ushort>(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;
|
return result;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
@ -488,21 +488,21 @@ struct atomic_storage<T, 4> : atomic_storage<T, 0>
|
||||||
static inline bool bts(T& dest, uint bit)
|
static inline bool bts(T& dest, uint bit)
|
||||||
{
|
{
|
||||||
bool result;
|
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;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline bool btr(T& dest, uint bit)
|
static inline bool btr(T& dest, uint bit)
|
||||||
{
|
{
|
||||||
bool result;
|
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;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline bool btc(T& dest, uint bit)
|
static inline bool btc(T& dest, uint bit)
|
||||||
{
|
{
|
||||||
bool result;
|
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;
|
return result;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
@ -608,7 +608,7 @@ struct atomic_storage<T, 8> : atomic_storage<T, 0>
|
||||||
{
|
{
|
||||||
bool result;
|
bool result;
|
||||||
ullong _bit = bit;
|
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;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -616,7 +616,7 @@ struct atomic_storage<T, 8> : atomic_storage<T, 0>
|
||||||
{
|
{
|
||||||
bool result;
|
bool result;
|
||||||
ullong _bit = bit;
|
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;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -624,7 +624,7 @@ struct atomic_storage<T, 8> : atomic_storage<T, 0>
|
||||||
{
|
{
|
||||||
bool result;
|
bool result;
|
||||||
ullong _bit = bit;
|
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;
|
return result;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue