diff options
Diffstat (limited to 'logic/pipeline.cpp')
| -rw-r--r-- | logic/pipeline.cpp | 18 | 
1 files changed, 7 insertions, 11 deletions
| diff --git a/logic/pipeline.cpp b/logic/pipeline.cpp index c36d1781..6c00acb0 100644 --- a/logic/pipeline.cpp +++ b/logic/pipeline.cpp @@ -638,29 +638,25 @@ void pipeline::set_zero(bool value) { set(f_zero, value); }  void pipeline::toggle_zero() { negate(f_zero); }  void pipeline::toggle_enabled() { negate(f_enabled_p); } -void bits::set(flags flag_, bool val_) +void bits::set(flags flag, bool val)  { -    const unsigned flag = unsigned(flag_); -    const unsigned val = unsigned(val_); +    const unsigned flag_ = unsigned(flag); +    const unsigned val_ = unsigned(val);      unsigned b_ = 0;      for (;;) -    { -        if (b.compare_exchange_strong(b_, unsigned((b_ & ~flag) | (flag * val)))) +        if (b.compare_exchange_weak(b_, unsigned((b_ & ~flag_) | (flag_ * val_))))              break; -    }  } -void bits::negate(flags flag_) +void bits::negate(flags flag)  { -    const unsigned flag = unsigned(flag_); +    const unsigned flag_= flag;      unsigned b_ = 0;      for (;;) -    { -        if (b.compare_exchange_strong(b_, b_ ^ flag)) +        if (b.compare_exchange_weak(b_, b_ ^ flag_))              break; -    }  }  bool bits::get(flags flag) | 
