summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--test/add_noise_test.cc1
-rw-r--r--test/register_state_check.h34
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