Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
What's new
7
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Open sidebar
Xiph.Org
aom-rav1e
Commits
fdee7623
Commit
fdee7623
authored
Feb 27, 2014
by
hkuang
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Add neon register state check for unit test.
Change-Id: I2c117ddeae3da5119f549b036a5699a8092819d3
parent
7281c0b9
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
59 additions
and
4 deletions
+59
-4
test/register_state_check.h
test/register_state_check.h
+59
-4
No files found.
test/register_state_check.h
View file @
fdee7623
...
...
@@ -11,14 +11,15 @@
#ifndef TEST_REGISTER_STATE_CHECK_H_
#define TEST_REGISTER_STATE_CHECK_H_
#ifdef _WIN64
#include "third_party/googletest/src/include/gtest/gtest.h"
#include "./vpx_config.h"
#if defined(_WIN64)
#define _WIN32_LEAN_AND_MEAN
#include <windows.h>
#include <winnt.h>
#include "third_party/googletest/src/include/gtest/gtest.h"
namespace
testing
{
namespace
internal
{
...
...
@@ -81,7 +82,61 @@ class RegisterStateCheck {
}
// namespace libvpx_test
#else // !_WIN64
#elif defined(CONFIG_SHARED) && defined(HAVE_NEON) \
&& !CONFIG_SHARED && HAVE_NEON
#include "vpx/vpx_integer.h"
extern
"C"
{
// Save the d8-d15 registers into store.
void
vp9_push_neon
(
int64_t
*
store
);
}
namespace
libvpx_test
{
// Compares the state of d8-d15 at construction with their state at
// destruction. These registers should be preserved by the callee on
// arm platform.
// Usage:
// {
// RegisterStateCheck reg_check;
// FunctionToVerify();
// }
class
RegisterStateCheck
{
public:
RegisterStateCheck
()
{
initialized_
=
StoreRegisters
(
pre_store_
);
}
~
RegisterStateCheck
()
{
EXPECT_TRUE
(
Check
());
}
private:
static
bool
StoreRegisters
(
int64_t
store
[
8
])
{
vp9_push_neon
(
store
);
return
true
;
}
// Compares the register state. Returns true if the states match.
bool
Check
()
const
{
if
(
!
initialized_
)
return
false
;
int64_t
post_store
[
8
];
vp9_push_neon
(
post_store
);
for
(
int
i
=
0
;
i
<
8
;
++
i
)
{
EXPECT_EQ
(
pre_store_
[
i
],
post_store
[
i
])
<<
"d"
<<
i
+
8
<<
" has been modified"
;
}
return
!
testing
::
Test
::
HasNonfatalFailure
();
}
bool
initialized_
;
int64_t
pre_store_
[
8
];
};
#define REGISTER_STATE_CHECK(statement) do { \
libvpx_test::RegisterStateCheck reg_check; \
statement; \
} while (false)
}
// namespace libvpx_test
#else
namespace
libvpx_test
{
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment