diff options
author | James Zern <jzern@google.com> | 2022-04-26 01:15:30 +0000 |
---|---|---|
committer | Gerrit Code Review <noreply-gerritcodereview@google.com> | 2022-04-26 01:15:30 +0000 |
commit | 8a29e27e17c8e4277ba15ca993a8912464c2400a (patch) | |
tree | e988bde39b4761bd3b1034c50160ce0b5f23331b | |
parent | 76b7350cee4a4f047c813134dba33594d0b2785b (diff) | |
parent | d18407a171ef7a0108f961c12794ddb32ad5c9ab (diff) | |
download | libvpx-8a29e27e17c8e4277ba15ca993a8912464c2400a.tar libvpx-8a29e27e17c8e4277ba15ca993a8912464c2400a.tar.gz libvpx-8a29e27e17c8e4277ba15ca993a8912464c2400a.tar.bz2 libvpx-8a29e27e17c8e4277ba15ca993a8912464c2400a.zip |
Merge changes Ib8bcefd2,I84f789ca into main
* changes:
register_state_check.h: add compiler barrier
add_noise_test.cc: remove stale TODO
-rw-r--r-- | test/add_noise_test.cc | 1 | ||||
-rw-r--r-- | test/register_state_check.h | 34 |
2 files changed, 26 insertions, 9 deletions
diff --git a/test/add_noise_test.cc b/test/add_noise_test.cc index 25de4279c..7dc86e3eb 100644 --- a/test/add_noise_test.cc +++ b/test/add_noise_test.cc @@ -23,7 +23,6 @@ namespace { static const int kNoiseSize = 3072; -// TODO(jimbankoski): make width and height integers not unsigned. typedef void (*AddNoiseFunc)(uint8_t *start, const int8_t *noise, int blackclamp, int whiteclamp, int width, int height, int pitch); diff --git a/test/register_state_check.h b/test/register_state_check.h index 436646637..1746240c6 100644 --- a/test/register_state_check.h +++ b/test/register_state_check.h @@ -35,6 +35,7 @@ #ifndef WIN32_LEAN_AND_MEAN #define WIN32_LEAN_AND_MEAN #endif +#include <intrin.h> #include <windows.h> #include <winnt.h> @@ -81,10 +82,13 @@ class RegisterStateCheck { CONTEXT pre_context_; }; -#define ASM_REGISTER_STATE_CHECK(statement) \ - do { \ - libvpx_test::RegisterStateCheck reg_check; \ - statement; \ +#define ASM_REGISTER_STATE_CHECK(statement) \ + do { \ + { \ + libvpx_test::RegisterStateCheck reg_check; \ + statement; \ + } \ + _ReadWriteBarrier(); \ } while (false) } // namespace libvpx_test @@ -121,11 +125,22 @@ class RegisterStateCheck { int64_t pre_store_[8]; }; +#if defined(__GNUC__) +#define ASM_REGISTER_STATE_CHECK(statement) \ + do { \ + { \ + libvpx_test::RegisterStateCheck reg_check; \ + statement; \ + } \ + __asm__ volatile("" ::: "memory"); \ + } while (false) +#else #define ASM_REGISTER_STATE_CHECK(statement) \ do { \ libvpx_test::RegisterStateCheck reg_check; \ statement; \ } while (false) +#endif } // namespace libvpx_test @@ -169,10 +184,13 @@ class RegisterStateCheckMMX { uint16_t pre_fpu_env_[14]; }; -#define API_REGISTER_STATE_CHECK(statement) \ - do { \ - libvpx_test::RegisterStateCheckMMX reg_check; \ - ASM_REGISTER_STATE_CHECK(statement); \ +#define API_REGISTER_STATE_CHECK(statement) \ + do { \ + { \ + libvpx_test::RegisterStateCheckMMX reg_check; \ + ASM_REGISTER_STATE_CHECK(statement); \ + } \ + __asm__ volatile("" ::: "memory"); \ } while (false) } // namespace libvpx_test |