Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
What's new
10
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Open sidebar
Xiph.Org
aom-rav1e
Commits
c00e9c47
Commit
c00e9c47
authored
Jul 10, 2014
by
James Zern
Committed by
Gerrit Code Review
Jul 10, 2014
Browse files
Options
Browse Files
Download
Plain Diff
Merge changes Ie241772d,I3c72e226
* changes: tests: add API_REGISTER_STATE_CHECK call vp[89]_clear_system_state after longjmp
parents
32655853
29e1b1a4
Changes
20
Show whitespace changes
Inline
Side-by-side
Showing
20 changed files
with
163 additions
and
106 deletions
+163
-106
test/convolve_test.cc
test/convolve_test.cc
+26
-25
test/dct16x16_test.cc
test/dct16x16_test.cc
+8
-8
test/dct32x32_test.cc
test/dct32x32_test.cc
+6
-5
test/decode_test_driver.cc
test/decode_test_driver.cc
+1
-1
test/encode_test_driver.cc
test/encode_test_driver.cc
+1
-1
test/fdct4x4_test.cc
test/fdct4x4_test.cc
+7
-7
test/fdct8x8_test.cc
test/fdct8x8_test.cc
+7
-7
test/idct_test.cc
test/idct_test.cc
+4
-4
test/intrapred_test.cc
test/intrapred_test.cc
+4
-4
test/partial_idct_test.cc
test/partial_idct_test.cc
+4
-4
test/pp_filter_test.cc
test/pp_filter_test.cc
+3
-2
test/register_state_check.h
test/register_state_check.h
+65
-19
test/sad_test.cc
test/sad_test.cc
+8
-8
test/sixtap_predict_test.cc
test/sixtap_predict_test.cc
+4
-3
test/subtract_test.cc
test/subtract_test.cc
+1
-1
test/variance_test.cc
test/variance_test.cc
+10
-7
vp8/decoder/onyxd_if.c
vp8/decoder/onyxd_if.c
+1
-0
vp8/encoder/onyx_if.c
vp8/encoder/onyx_if.c
+1
-0
vp8/vp8_dx_iface.c
vp8/vp8_dx_iface.c
+1
-0
vp9/decoder/vp9_decoder.c
vp9/decoder/vp9_decoder.c
+1
-0
No files found.
test/convolve_test.cc
View file @
c00e9c47
...
...
@@ -264,7 +264,7 @@ TEST_P(ConvolveTest, CopyHoriz) {
uint8_t
*
const
out
=
output
();
DECLARE_ALIGNED
(
256
,
const
int16_t
,
filter8
[
8
])
=
{
0
,
0
,
0
,
128
,
0
,
0
,
0
,
0
};
REGISTER_STATE_CHECK
(
ASM_
REGISTER_STATE_CHECK
(
UUT_
->
h8_
(
in
,
kInputStride
,
out
,
kOutputStride
,
filter8
,
16
,
filter8
,
16
,
Width
(),
Height
()));
...
...
@@ -281,7 +281,7 @@ TEST_P(ConvolveTest, CopyVert) {
uint8_t
*
const
out
=
output
();
DECLARE_ALIGNED
(
256
,
const
int16_t
,
filter8
[
8
])
=
{
0
,
0
,
0
,
128
,
0
,
0
,
0
,
0
};
REGISTER_STATE_CHECK
(
ASM_
REGISTER_STATE_CHECK
(
UUT_
->
v8_
(
in
,
kInputStride
,
out
,
kOutputStride
,
filter8
,
16
,
filter8
,
16
,
Width
(),
Height
()));
...
...
@@ -298,7 +298,7 @@ TEST_P(ConvolveTest, Copy2D) {
uint8_t
*
const
out
=
output
();
DECLARE_ALIGNED
(
256
,
const
int16_t
,
filter8
[
8
])
=
{
0
,
0
,
0
,
128
,
0
,
0
,
0
,
0
};
REGISTER_STATE_CHECK
(
ASM_
REGISTER_STATE_CHECK
(
UUT_
->
hv8_
(
in
,
kInputStride
,
out
,
kOutputStride
,
filter8
,
16
,
filter8
,
16
,
Width
(),
Height
()));
...
...
@@ -356,17 +356,17 @@ TEST_P(ConvolveTest, MatchesReferenceSubpixelFilter) {
Width
(),
Height
());
if
(
filters
==
eighttap_smooth
||
(
filter_x
&&
filter_y
))
REGISTER_STATE_CHECK
(
ASM_
REGISTER_STATE_CHECK
(
UUT_
->
hv8_
(
in
,
kInputStride
,
out
,
kOutputStride
,
filters
[
filter_x
],
16
,
filters
[
filter_y
],
16
,
Width
(),
Height
()));
else
if
(
filter_y
)
REGISTER_STATE_CHECK
(
ASM_
REGISTER_STATE_CHECK
(
UUT_
->
v8_
(
in
,
kInputStride
,
out
,
kOutputStride
,
kInvalidFilter
,
16
,
filters
[
filter_y
],
16
,
Width
(),
Height
()));
else
REGISTER_STATE_CHECK
(
ASM_
REGISTER_STATE_CHECK
(
UUT_
->
h8_
(
in
,
kInputStride
,
out
,
kOutputStride
,
filters
[
filter_x
],
16
,
kInvalidFilter
,
16
,
Width
(),
Height
()));
...
...
@@ -414,17 +414,17 @@ TEST_P(ConvolveTest, MatchesReferenceAveragingSubpixelFilter) {
Width
(),
Height
());
if
(
filters
==
eighttap_smooth
||
(
filter_x
&&
filter_y
))
REGISTER_STATE_CHECK
(
ASM_
REGISTER_STATE_CHECK
(
UUT_
->
hv8_avg_
(
in
,
kInputStride
,
out
,
kOutputStride
,
filters
[
filter_x
],
16
,
filters
[
filter_y
],
16
,
Width
(),
Height
()));
else
if
(
filter_y
)
REGISTER_STATE_CHECK
(
ASM_
REGISTER_STATE_CHECK
(
UUT_
->
v8_avg_
(
in
,
kInputStride
,
out
,
kOutputStride
,
filters
[
filter_x
],
16
,
filters
[
filter_y
],
16
,
Width
(),
Height
()));
else
REGISTER_STATE_CHECK
(
ASM_
REGISTER_STATE_CHECK
(
UUT_
->
h8_avg_
(
in
,
kInputStride
,
out
,
kOutputStride
,
filters
[
filter_x
],
16
,
filters
[
filter_y
],
16
,
Width
(),
Height
()));
...
...
@@ -494,7 +494,8 @@ TEST_P(ConvolveTest, ChangeFilterWorks) {
*/
/* Test the horizontal filter. */
REGISTER_STATE_CHECK
(
UUT_
->
h8_
(
in
,
kInputStride
,
out
,
kOutputStride
,
ASM_REGISTER_STATE_CHECK
(
UUT_
->
h8_
(
in
,
kInputStride
,
out
,
kOutputStride
,
kChangeFilters
[
kInitialSubPelOffset
],
kInputPixelStep
,
NULL
,
0
,
Width
(),
Height
()));
...
...
@@ -508,7 +509,8 @@ TEST_P(ConvolveTest, ChangeFilterWorks) {
}
/* Test the vertical filter. */
REGISTER_STATE_CHECK
(
UUT_
->
v8_
(
in
,
kInputStride
,
out
,
kOutputStride
,
ASM_REGISTER_STATE_CHECK
(
UUT_
->
v8_
(
in
,
kInputStride
,
out
,
kOutputStride
,
NULL
,
0
,
kChangeFilters
[
kInitialSubPelOffset
],
kInputPixelStep
,
Width
(),
Height
()));
...
...
@@ -522,11 +524,10 @@ TEST_P(ConvolveTest, ChangeFilterWorks) {
}
/* Test the horizontal and vertical filters in combination. */
REGISTER_STATE_CHECK
(
UUT_
->
hv8_
(
in
,
kInputStride
,
out
,
kOutputStride
,
kChangeFilters
[
kInitialSubPelOffset
],
kInputPixelStep
,
kChangeFilters
[
kInitialSubPelOffset
],
kInputPixelStep
,
ASM_REGISTER_STATE_CHECK
(
UUT_
->
hv8_
(
in
,
kInputStride
,
out
,
kOutputStride
,
kChangeFilters
[
kInitialSubPelOffset
],
kInputPixelStep
,
kChangeFilters
[
kInitialSubPelOffset
],
kInputPixelStep
,
Width
(),
Height
()));
for
(
int
y
=
0
;
y
<
Height
();
++
y
)
{
...
...
@@ -560,7 +561,7 @@ TEST_P(ConvolveTest, CheckScalingFiltering) {
for
(
int
frac
=
0
;
frac
<
16
;
++
frac
)
{
for
(
int
step
=
1
;
step
<=
32
;
++
step
)
{
/* Test the horizontal and vertical filters in combination. */
REGISTER_STATE_CHECK
(
UUT_
->
hv8_
(
in
,
kInputStride
,
out
,
kOutputStride
,
ASM_
REGISTER_STATE_CHECK
(
UUT_
->
hv8_
(
in
,
kInputStride
,
out
,
kOutputStride
,
eighttap
[
frac
],
step
,
eighttap
[
frac
],
step
,
Width
(),
Height
()));
...
...
test/dct16x16_test.cc
View file @
c00e9c47
...
...
@@ -311,9 +311,9 @@ class Trans16x16TestBase {
test_input_block
[
j
]
=
src
[
j
]
-
dst
[
j
];
}
REGISTER_STATE_CHECK
(
RunFwdTxfm
(
test_input_block
,
ASM_
REGISTER_STATE_CHECK
(
RunFwdTxfm
(
test_input_block
,
test_temp_block
,
pitch_
));
REGISTER_STATE_CHECK
(
RunInvTxfm
(
test_temp_block
,
dst
,
pitch_
));
ASM_
REGISTER_STATE_CHECK
(
RunInvTxfm
(
test_temp_block
,
dst
,
pitch_
));
for
(
int
j
=
0
;
j
<
kNumCoeffs
;
++
j
)
{
const
uint32_t
diff
=
dst
[
j
]
-
src
[
j
];
...
...
@@ -344,7 +344,7 @@ class Trans16x16TestBase {
input_block
[
j
]
=
rnd
.
Rand8
()
-
rnd
.
Rand8
();
fwd_txfm_ref
(
input_block
,
output_ref_block
,
pitch_
,
tx_type_
);
REGISTER_STATE_CHECK
(
RunFwdTxfm
(
input_block
,
output_block
,
pitch_
));
ASM_
REGISTER_STATE_CHECK
(
RunFwdTxfm
(
input_block
,
output_block
,
pitch_
));
// The minimum quant value is 4.
for
(
int
j
=
0
;
j
<
kNumCoeffs
;
++
j
)
...
...
@@ -375,7 +375,7 @@ class Trans16x16TestBase {
}
fwd_txfm_ref
(
input_extreme_block
,
output_ref_block
,
pitch_
,
tx_type_
);
REGISTER_STATE_CHECK
(
RunFwdTxfm
(
input_extreme_block
,
ASM_
REGISTER_STATE_CHECK
(
RunFwdTxfm
(
input_extreme_block
,
output_block
,
pitch_
));
// The minimum quant value is 4.
...
...
@@ -421,7 +421,7 @@ class Trans16x16TestBase {
for
(
int
j
=
1
;
j
<
kNumCoeffs
;
++
j
)
output_ref_block
[
j
]
=
(
output_ref_block
[
j
]
/
ac_thred
)
*
ac_thred
;
inv_txfm_ref
(
output_ref_block
,
ref
,
pitch_
,
tx_type_
);
REGISTER_STATE_CHECK
(
RunInvTxfm
(
output_ref_block
,
dst
,
pitch_
));
ASM_
REGISTER_STATE_CHECK
(
RunInvTxfm
(
output_ref_block
,
dst
,
pitch_
));
for
(
int
j
=
0
;
j
<
kNumCoeffs
;
++
j
)
EXPECT_EQ
(
ref
[
j
],
dst
[
j
]);
...
...
@@ -450,7 +450,7 @@ class Trans16x16TestBase {
for
(
int
j
=
0
;
j
<
kNumCoeffs
;
++
j
)
coeff
[
j
]
=
round
(
out_r
[
j
]);
REGISTER_STATE_CHECK
(
RunInvTxfm
(
coeff
,
dst
,
16
));
ASM_
REGISTER_STATE_CHECK
(
RunInvTxfm
(
coeff
,
dst
,
16
));
for
(
int
j
=
0
;
j
<
kNumCoeffs
;
++
j
)
{
const
uint32_t
diff
=
dst
[
j
]
-
src
[
j
];
...
...
test/dct32x32_test.cc
View file @
c00e9c47
...
...
@@ -112,8 +112,8 @@ TEST_P(Trans32x32Test, AccuracyCheck) {
test_input_block
[
j
]
=
src
[
j
]
-
dst
[
j
];
}
REGISTER_STATE_CHECK
(
fwd_txfm_
(
test_input_block
,
test_temp_block
,
32
));
REGISTER_STATE_CHECK
(
inv_txfm_
(
test_temp_block
,
dst
,
32
));
ASM_
REGISTER_STATE_CHECK
(
fwd_txfm_
(
test_input_block
,
test_temp_block
,
32
));
ASM_
REGISTER_STATE_CHECK
(
inv_txfm_
(
test_temp_block
,
dst
,
32
));
for
(
int
j
=
0
;
j
<
kNumCoeffs
;
++
j
)
{
const
uint32_t
diff
=
dst
[
j
]
-
src
[
j
];
...
...
@@ -150,7 +150,7 @@ TEST_P(Trans32x32Test, CoeffCheck) {
const
int
stride
=
32
;
vp9_fdct32x32_c
(
input_block
,
output_ref_block
,
stride
);
REGISTER_STATE_CHECK
(
fwd_txfm_
(
input_block
,
output_block
,
stride
));
ASM_
REGISTER_STATE_CHECK
(
fwd_txfm_
(
input_block
,
output_block
,
stride
));
if
(
version_
==
0
)
{
for
(
int
j
=
0
;
j
<
kNumCoeffs
;
++
j
)
...
...
@@ -189,7 +189,8 @@ TEST_P(Trans32x32Test, MemCheck) {
const
int
stride
=
32
;
vp9_fdct32x32_c
(
input_extreme_block
,
output_ref_block
,
stride
);
REGISTER_STATE_CHECK
(
fwd_txfm_
(
input_extreme_block
,
output_block
,
stride
));
ASM_REGISTER_STATE_CHECK
(
fwd_txfm_
(
input_extreme_block
,
output_block
,
stride
));
// The minimum quant value is 4.
for
(
int
j
=
0
;
j
<
kNumCoeffs
;
++
j
)
{
...
...
@@ -230,7 +231,7 @@ TEST_P(Trans32x32Test, InverseAccuracy) {
reference_32x32_dct_2d
(
in
,
out_r
);
for
(
int
j
=
0
;
j
<
kNumCoeffs
;
++
j
)
coeff
[
j
]
=
round
(
out_r
[
j
]);
REGISTER_STATE_CHECK
(
inv_txfm_
(
coeff
,
dst
,
32
));
ASM_
REGISTER_STATE_CHECK
(
inv_txfm_
(
coeff
,
dst
,
32
));
for
(
int
j
=
0
;
j
<
kNumCoeffs
;
++
j
)
{
const
int
diff
=
dst
[
j
]
-
src
[
j
];
const
int
error
=
diff
*
diff
;
...
...
test/decode_test_driver.cc
View file @
c00e9c47
...
...
@@ -32,7 +32,7 @@ vpx_codec_err_t Decoder::DecodeFrame(const uint8_t *cxdata, size_t size,
void
*
user_priv
)
{
vpx_codec_err_t
res_dec
;
InitOnce
();
REGISTER_STATE_CHECK
(
API_
REGISTER_STATE_CHECK
(
res_dec
=
vpx_codec_decode
(
&
decoder_
,
cxdata
,
static_cast
<
unsigned
int
>
(
size
),
user_priv
,
0
));
...
...
test/encode_test_driver.cc
View file @
c00e9c47
...
...
@@ -59,7 +59,7 @@ void Encoder::EncodeFrameInternal(const VideoSource &video,
}
// Encode the frame
REGISTER_STATE_CHECK
(
API_
REGISTER_STATE_CHECK
(
res
=
vpx_codec_encode
(
&
encoder_
,
video
.
img
(),
video
.
pts
(),
video
.
duration
(),
frame_flags
,
deadline_
));
...
...
test/fdct4x4_test.cc
View file @
c00e9c47
...
...
@@ -79,9 +79,9 @@ class Trans4x4TestBase {
test_input_block
[
j
]
=
src
[
j
]
-
dst
[
j
];
}
REGISTER_STATE_CHECK
(
RunFwdTxfm
(
test_input_block
,
ASM_
REGISTER_STATE_CHECK
(
RunFwdTxfm
(
test_input_block
,
test_temp_block
,
pitch_
));
REGISTER_STATE_CHECK
(
RunInvTxfm
(
test_temp_block
,
dst
,
pitch_
));
ASM_
REGISTER_STATE_CHECK
(
RunInvTxfm
(
test_temp_block
,
dst
,
pitch_
));
for
(
int
j
=
0
;
j
<
kNumCoeffs
;
++
j
)
{
const
uint32_t
diff
=
dst
[
j
]
-
src
[
j
];
...
...
@@ -114,7 +114,7 @@ class Trans4x4TestBase {
input_block
[
j
]
=
rnd
.
Rand8
()
-
rnd
.
Rand8
();
fwd_txfm_ref
(
input_block
,
output_ref_block
,
pitch_
,
tx_type_
);
REGISTER_STATE_CHECK
(
RunFwdTxfm
(
input_block
,
output_block
,
pitch_
));
ASM_
REGISTER_STATE_CHECK
(
RunFwdTxfm
(
input_block
,
output_block
,
pitch_
));
// The minimum quant value is 4.
for
(
int
j
=
0
;
j
<
kNumCoeffs
;
++
j
)
...
...
@@ -145,7 +145,7 @@ class Trans4x4TestBase {
}
fwd_txfm_ref
(
input_extreme_block
,
output_ref_block
,
pitch_
,
tx_type_
);
REGISTER_STATE_CHECK
(
RunFwdTxfm
(
input_extreme_block
,
ASM_
REGISTER_STATE_CHECK
(
RunFwdTxfm
(
input_extreme_block
,
output_block
,
pitch_
));
// The minimum quant value is 4.
...
...
@@ -175,7 +175,7 @@ class Trans4x4TestBase {
fwd_txfm_ref
(
in
,
coeff
,
pitch_
,
tx_type_
);
REGISTER_STATE_CHECK
(
RunInvTxfm
(
coeff
,
dst
,
pitch_
));
ASM_
REGISTER_STATE_CHECK
(
RunInvTxfm
(
coeff
,
dst
,
pitch_
));
for
(
int
j
=
0
;
j
<
kNumCoeffs
;
++
j
)
{
const
uint32_t
diff
=
dst
[
j
]
-
src
[
j
];
...
...
test/fdct8x8_test.cc
View file @
c00e9c47
...
...
@@ -68,7 +68,7 @@ class FwdTrans8x8TestBase {
// Initialize a test block with input range [-255, 255].
for
(
int
j
=
0
;
j
<
64
;
++
j
)
test_input_block
[
j
]
=
rnd
.
Rand8
()
-
rnd
.
Rand8
();
REGISTER_STATE_CHECK
(
ASM_
REGISTER_STATE_CHECK
(
RunFwdTxfm
(
test_input_block
,
test_output_block
,
pitch_
));
for
(
int
j
=
0
;
j
<
64
;
++
j
)
{
...
...
@@ -97,7 +97,7 @@ class FwdTrans8x8TestBase {
// Initialize a test block with input range [-15, 15].
for
(
int
j
=
0
;
j
<
64
;
++
j
)
test_input_block
[
j
]
=
(
rnd
.
Rand8
()
>>
4
)
-
(
rnd
.
Rand8
()
>>
4
);
REGISTER_STATE_CHECK
(
ASM_
REGISTER_STATE_CHECK
(
RunFwdTxfm
(
test_input_block
,
test_output_block
,
pitch_
));
for
(
int
j
=
0
;
j
<
64
;
++
j
)
{
...
...
@@ -139,7 +139,7 @@ class FwdTrans8x8TestBase {
test_input_block
[
j
]
=
src
[
j
]
-
dst
[
j
];
}
REGISTER_STATE_CHECK
(
ASM_
REGISTER_STATE_CHECK
(
RunFwdTxfm
(
test_input_block
,
test_temp_block
,
pitch_
));
for
(
int
j
=
0
;
j
<
64
;
++
j
)
{
if
(
test_temp_block
[
j
]
>
0
)
{
...
...
@@ -152,7 +152,7 @@ class FwdTrans8x8TestBase {
test_temp_block
[
j
]
*=
4
;
}
}
REGISTER_STATE_CHECK
(
ASM_
REGISTER_STATE_CHECK
(
RunInvTxfm
(
test_temp_block
,
dst
,
pitch_
));
for
(
int
j
=
0
;
j
<
64
;
++
j
)
{
...
...
@@ -202,11 +202,11 @@ class FwdTrans8x8TestBase {
test_input_block
[
j
]
=
src
[
j
]
-
dst
[
j
];
}
REGISTER_STATE_CHECK
(
ASM_
REGISTER_STATE_CHECK
(
RunFwdTxfm
(
test_input_block
,
test_temp_block
,
pitch_
));
REGISTER_STATE_CHECK
(
ASM_
REGISTER_STATE_CHECK
(
fwd_txfm_ref
(
test_input_block
,
ref_temp_block
,
pitch_
,
tx_type_
));
REGISTER_STATE_CHECK
(
ASM_
REGISTER_STATE_CHECK
(
RunInvTxfm
(
test_temp_block
,
dst
,
pitch_
));
for
(
int
j
=
0
;
j
<
64
;
++
j
)
{
...
...
test/idct_test.cc
View file @
c00e9c47
...
...
@@ -52,7 +52,7 @@ TEST_P(IDCTTest, TestGuardBlocks) {
TEST_P
(
IDCTTest
,
TestAllZeros
)
{
int
i
;
REGISTER_STATE_CHECK
(
UUT
(
input
,
output
,
16
,
output
,
16
));
ASM_
REGISTER_STATE_CHECK
(
UUT
(
input
,
output
,
16
,
output
,
16
));
for
(
i
=
0
;
i
<
256
;
i
++
)
if
((
i
&
0xF
)
<
4
&&
i
<
64
)
...
...
@@ -65,7 +65,7 @@ TEST_P(IDCTTest, TestAllOnes) {
int
i
;
input
[
0
]
=
4
;
REGISTER_STATE_CHECK
(
UUT
(
input
,
output
,
16
,
output
,
16
));
ASM_
REGISTER_STATE_CHECK
(
UUT
(
input
,
output
,
16
,
output
,
16
));
for
(
i
=
0
;
i
<
256
;
i
++
)
if
((
i
&
0xF
)
<
4
&&
i
<
64
)
...
...
@@ -79,7 +79,7 @@ TEST_P(IDCTTest, TestAddOne) {
for
(
i
=
0
;
i
<
256
;
i
++
)
predict
[
i
]
=
i
;
input
[
0
]
=
4
;
REGISTER_STATE_CHECK
(
UUT
(
input
,
predict
,
16
,
output
,
16
));
ASM_
REGISTER_STATE_CHECK
(
UUT
(
input
,
predict
,
16
,
output
,
16
));
for
(
i
=
0
;
i
<
256
;
i
++
)
if
((
i
&
0xF
)
<
4
&&
i
<
64
)
...
...
@@ -93,7 +93,7 @@ TEST_P(IDCTTest, TestWithData) {
for
(
i
=
0
;
i
<
16
;
i
++
)
input
[
i
]
=
i
;
REGISTER_STATE_CHECK
(
UUT
(
input
,
output
,
16
,
output
,
16
));
ASM_
REGISTER_STATE_CHECK
(
UUT
(
input
,
output
,
16
,
output
,
16
));
for
(
i
=
0
;
i
<
256
;
i
++
)
if
((
i
&
0xF
)
>
3
||
i
>
63
)
...
...
test/intrapred_test.cc
View file @
c00e9c47
...
...
@@ -261,7 +261,7 @@ class IntraPredYTest
virtual
void
Predict
(
MB_PREDICTION_MODE
mode
)
{
mbptr_
->
mode_info_context
->
mbmi
.
mode
=
mode
;
REGISTER_STATE_CHECK
(
pred_fn_
(
mbptr_
,
ASM_
REGISTER_STATE_CHECK
(
pred_fn_
(
mbptr_
,
data_ptr_
[
0
]
-
kStride
,
data_ptr_
[
0
]
-
1
,
kStride
,
data_ptr_
[
0
],
kStride
));
...
...
test/partial_idct_test.cc
View file @
c00e9c47
...
...
@@ -118,8 +118,8 @@ TEST_P(PartialIDctTest, RunQuantCheck) {
=
(
output_ref_block
[
j
]
/
1828
)
*
1828
;
}
REGISTER_STATE_CHECK
(
full_itxfm_
(
test_coef_block1
,
dst1
,
size
));
REGISTER_STATE_CHECK
(
partial_itxfm_
(
test_coef_block1
,
dst2
,
size
));
ASM_
REGISTER_STATE_CHECK
(
full_itxfm_
(
test_coef_block1
,
dst1
,
size
));
ASM_
REGISTER_STATE_CHECK
(
partial_itxfm_
(
test_coef_block1
,
dst2
,
size
));
for
(
int
j
=
0
;
j
<
block_size
;
++
j
)
{
const
int
diff
=
dst1
[
j
]
-
dst2
[
j
];
...
...
@@ -182,8 +182,8 @@ TEST_P(PartialIDctTest, ResultsMatch) {
memcpy
(
test_coef_block2
,
test_coef_block1
,
sizeof
(
*
test_coef_block2
)
*
block_size
);
REGISTER_STATE_CHECK
(
full_itxfm_
(
test_coef_block1
,
dst1
,
size
));
REGISTER_STATE_CHECK
(
partial_itxfm_
(
test_coef_block2
,
dst2
,
size
));
ASM_
REGISTER_STATE_CHECK
(
full_itxfm_
(
test_coef_block1
,
dst1
,
size
));
ASM_
REGISTER_STATE_CHECK
(
partial_itxfm_
(
test_coef_block2
,
dst2
,
size
));
for
(
int
j
=
0
;
j
<
block_size
;
++
j
)
{
const
int
diff
=
dst1
[
j
]
-
dst2
[
j
];
...
...
test/pp_filter_test.cc
View file @
c00e9c47
...
...
@@ -80,7 +80,8 @@ TEST_P(VP8PostProcessingFilterTest, FilterOutputCheck) {
// Initialize pixels in the output to 99.
(
void
)
vpx_memset
(
dst_image
,
99
,
output_size
);
REGISTER_STATE_CHECK
(
GetParam
()(
src_image_ptr
,
dst_image_ptr
,
input_stride
,
ASM_REGISTER_STATE_CHECK
(
GetParam
()(
src_image_ptr
,
dst_image_ptr
,
input_stride
,
output_stride
,
block_width
,
flimits
,
16
));
static
const
uint8_t
expected_data
[
block_height
]
=
{
...
...
test/register_state_check.h
View file @
c00e9c47
...
...
@@ -13,6 +13,20 @@
#include "third_party/googletest/src/include/gtest/gtest.h"
#include "./vpx_config.h"
#include "vpx/vpx_integer.h"
// ASM_REGISTER_STATE_CHECK(asm_function)
// Minimally validates the environment pre & post function execution. This
// variant should be used with assembly functions which are not expected to
// fully restore the system state. See platform implementations of
// RegisterStateCheck for details.
//
// API_REGISTER_STATE_CHECK(api_function)
// Performs all the checks done by ASM_REGISTER_STATE_CHECK() and any
// additional checks to ensure the environment is in a consistent state pre &
// post function execution. This variant should be used with API functions.
// See platform implementations of RegisterStateCheckXXX for details.
//
#if defined(_WIN64)
...
...
@@ -35,11 +49,6 @@ namespace libvpx_test {
// Compares the state of xmm[6-15] at construction with their state at
// destruction. These registers should be preserved by the callee on
// Windows x64.
// Usage:
// {
// RegisterStateCheck reg_check;
// FunctionToVerify();
// }
class
RegisterStateCheck
{
public:
RegisterStateCheck
()
{
initialized_
=
StoreRegisters
(
&
pre_context_
);
}
...
...
@@ -75,7 +84,7 @@ class RegisterStateCheck {
CONTEXT
pre_context_
;
};
#define REGISTER_STATE_CHECK(statement) do { \
#define
ASM_
REGISTER_STATE_CHECK(statement) do {
\
libvpx_test::RegisterStateCheck reg_check; \
statement; \
} while (false)
...
...
@@ -85,8 +94,6 @@ class RegisterStateCheck {
#elif defined(CONFIG_SHARED) && defined(HAVE_NEON_ASM) && defined(CONFIG_VP9) \
&& !CONFIG_SHARED && HAVE_NEON_ASM && CONFIG_VP9
#include "vpx/vpx_integer.h"
extern
"C"
{
// Save the d8-d15 registers into store.
void
vp9_push_neon
(
int64_t
*
store
);
...
...
@@ -97,11 +104,6 @@ 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_
);
}
...
...
@@ -129,7 +131,7 @@ class RegisterStateCheck {
int64_t
pre_store_
[
8
];
};
#define REGISTER_STATE_CHECK(statement) do { \
#define
ASM_
REGISTER_STATE_CHECK(statement) do {
\
libvpx_test::RegisterStateCheck reg_check; \
statement; \
} while (false)
...
...
@@ -141,10 +143,54 @@ class RegisterStateCheck {
namespace
libvpx_test
{
class
RegisterStateCheck
{};
#define REGISTER_STATE_CHECK(statement) statement
#define
ASM_
REGISTER_STATE_CHECK(statement) statement
}
// namespace libvpx_test
#endif // _WIN64
#if ARCH_X86 || ARCH_X86_64
#if defined(__GNUC__)
namespace
libvpx_test
{
// Checks the FPU tag word pre/post execution to ensure emms has been called.
class
RegisterStateCheckMMX
{
public:
RegisterStateCheckMMX
()
{
__asm__
volatile
(
"fstenv %0"
:
"=rm"
(
pre_fpu_env_
));
}
~
RegisterStateCheckMMX
()
{
EXPECT_TRUE
(
Check
());
}
private:
// Checks the FPU tag word pre/post execution, returning false if not cleared
// to 0xffff.
bool
Check
()
const
{
EXPECT_EQ
(
0xffff
,
pre_fpu_env_
[
4
])
<<
"FPU was in an inconsistent state prior to call"
;
uint16_t
post_fpu_env
[
14
];
__asm__
volatile
(
"fstenv %0"
:
"=rm"
(
post_fpu_env
));
EXPECT_EQ
(
0xffff
,
post_fpu_env
[
4
])
<<
"FPU was left in an inconsistent state after call"
;
return
!
testing
::
Test
::
HasNonfatalFailure
();
}
uint16_t
pre_fpu_env_
[
14
];
};
#define API_REGISTER_STATE_CHECK(statement) do { \
libvpx_test::RegisterStateCheckMMX reg_check; \
ASM_REGISTER_STATE_CHECK(statement); \
} while (false)
}
// namespace libvpx_test
#endif // __GNUC__
#endif // ARCH_X86 || ARCH_X86_64
#ifndef API_REGISTER_STATE_CHECK
#define API_REGISTER_STATE_CHECK ASM_REGISTER_STATE_CHECK
#endif
#endif // TEST_REGISTER_STATE_CHECK_H_
test/sad_test.cc
View file @
c00e9c47
...
...
@@ -149,7 +149,7 @@ class SADx4Test
const
uint8_t
*
refs
[]
=
{
GetReference
(
0
),
GetReference
(
1
),
GetReference
(
2
),
GetReference
(
3
)};
REGISTER_STATE_CHECK
(
GET_PARAM
(
2
)(
source_data_
,
source_stride_
,
ASM_
REGISTER_STATE_CHECK
(
GET_PARAM
(
2
)(
source_data_
,
source_stride_
,
refs
,
reference_stride_
,
results
));
}
...
...
@@ -178,7 +178,7 @@ class SADTest
unsigned
int
ret
;
const
uint8_t
*
const
reference
=
GetReference
(
block_idx
);
REGISTER_STATE_CHECK
(
ret
=
GET_PARAM
(
2
)(
source_data_
,
source_stride_
,
ASM_
REGISTER_STATE_CHECK
(
ret
=
GET_PARAM
(
2
)(
source_data_
,
source_stride_
,
reference
,
reference_stride_
,
max_sad
));
return
ret
;
...
...
@@ -210,7 +210,7 @@ class SADVP9Test
unsigned
int
ret
;
const
uint8_t
*
const
reference
=
GetReference
(
block_idx
);
REGISTER_STATE_CHECK
(
ret
=
GET_PARAM
(
2
)(
source_data_
,
source_stride_
,
ASM_
REGISTER_STATE_CHECK
(
ret
=
GET_PARAM
(
2
)(
source_data_
,
source_stride_
,
reference
,
reference_stride_
));
return
ret
;
}
...
...
test/sixtap_predict_test.cc
View file @
c00e9c47
...
...
@@ -143,7 +143,8 @@ TEST_P(SixtapPredictTest, TestWithPresetData) {
uint8_t
*
src
=
const_cast
<
uint8_t
*>
(
test_data
);
REGISTER_STATE_CHECK
(
sixtap_predict_
(
&
src
[
kSrcStride
*
2
+
2
+
1
],
kSrcStride
,
ASM_REGISTER_STATE_CHECK
(
sixtap_predict_
(
&
src
[
kSrcStride
*
2
+
2
+
1
],
kSrcStride
,
2
,
2
,
dst_
,
kDstStride
));
for
(
int
i
=
0
;
i
<
height_
;
++
i
)
...
...
@@ -169,7 +170,7 @@ TEST_P(SixtapPredictTest, TestWithRandomData) {
xoffset
,
yoffset
,
dst_c_
,
kDstStride
);
// Run test.
REGISTER_STATE_CHECK
(
ASM_
REGISTER_STATE_CHECK
(
sixtap_predict_
(
&
src_
[
kSrcStride
*
2
+
2
+
1
],
kSrcStride
,
xoffset
,
yoffset
,
dst_
,
kDstStride
));
...
...
test/subtract_test.cc
View file @
c00e9c47
...
...
@@ -82,7 +82,7 @@ TEST_P(SubtractBlockTest, SimpleSubtract) {
predictor
+=
kDiffPredStride
;
}
REGISTER_STATE_CHECK
(
GetParam
()(
&
be
,
&
bd
,
kDiffPredStride
));
ASM_
REGISTER_STATE_CHECK
(
GetParam
()(
&
be
,
&
bd
,
kDiffPredStride
));
base_src
=
*
be
.
base_src
;
src_diff
=
be
.
src_diff
;
...
...
test/variance_test.cc
View file @
c00e9c47
...
...
@@ -124,7 +124,8 @@ void VarianceTest<VarianceFunctionType>::ZeroTest() {
memset
(
ref_
,
j
,
block_size_
);
unsigned
int
sse
;
unsigned
int
var
;
REGISTER_STATE_CHECK
(
var
=
variance_
(
src_
,
width_
,
ref_
,
width_
,
&
sse
));
ASM_REGISTER_STATE_CHECK
(
var
=
variance_
(
src_
,
width_
,
ref_
,
width_
,
&
sse
));
EXPECT_EQ
(
0u
,
var
)
<<
"src values: "
<<
i
<<
"ref values: "
<<
j
;
}
}
...
...
@@ -139,7 +140,8 @@ void VarianceTest<VarianceFunctionType>::RefTest() {
}
unsigned
int
sse1
,
sse2
;
unsigned
int
var1
;
REGISTER_STATE_CHECK
(
var1
=
variance_
(
src_
,
width_
,
ref_
,
width_
,
&
sse1
));
ASM_REGISTER_STATE_CHECK
(
var1
=
variance_
(
src_
,
width_
,
ref_
,
width_
,
&
sse1
));
const
unsigned
int
var2
=
variance_ref
(
src_
,
ref_
,
log2width_
,
log2height_
,
&
sse2
);
EXPECT_EQ
(
sse1
,
sse2
);
...
...
@@ -155,7 +157,7 @@ void VarianceTest<VarianceFunctionType>::OneQuarterTest() {
memset
(
ref_
+
half
,
0
,
half
);
unsigned
int
sse
;
unsigned
int
var
;
REGISTER_STATE_CHECK
(
var
=
variance_
(
src_
,
width_
,
ref_
,
width_
,
&
sse
));
ASM_
REGISTER_STATE_CHECK
(
var
=
variance_
(
src_
,
width_
,
ref_
,
width_
,
&
sse
));
const
unsigned
int
expected
=
block_size_
*
255
*
255
/
4
;
EXPECT_EQ
(
expected
,
var
);
}
...
...
@@ -246,7 +248,7 @@ void SubpelVarianceTest<SubpelVarianceFunctionType>::RefTest() {
}
unsigned
int
sse1
,
sse2
;
unsigned
int
var1
;
REGISTER_STATE_CHECK
(
var1
=
subpel_variance_
(
ref_
,
width_
+
1
,
x
,
y
,
ASM_
REGISTER_STATE_CHECK
(
var1
=
subpel_variance_
(
ref_
,
width_
+
1
,
x
,
y
,
src_
,
width_
,
&
sse1
));
const
unsigned
int
var2
=
subpel_variance_ref
(
ref_
,
src_
,
log2width_
,
log2height_
,
x
,
y
,
&
sse2
);
...
...
@@ -269,7 +271,8 @@ void SubpelVarianceTest<vp9_subp_avg_variance_fn_t>::RefTest() {
}
unsigned
int
sse1
,
sse2
;
unsigned
int
var1
;
REGISTER_STATE_CHECK
(
var1
=
subpel_variance_
(
ref_
,
width_
+
1
,
x
,
y
,
ASM_REGISTER_STATE_CHECK
(
var1
=
subpel_variance_
(
ref_
,
width_
+
1
,
x
,
y
,
src_
,
width_
,
&
sse1
,
sec_
));
const
unsigned
int
var2
=
subpel_avg_variance_ref
(
ref_
,
src_
,
sec_
,
log2width_
,
log2height_
,
...
...
vp8/decoder/onyxd_if.c
View file @
c00e9c47
...
...
@@ -386,6 +386,7 @@ int vp8dx_receive_compressed_data(VP8D_COMP *pbi, size_t size,