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
d174f276
Commit
d174f276
authored
Sep 25, 2014
by
Johann
Committed by
Gerrit Code Review
Sep 25, 2014
Browse files
Options
Browse Files
Download
Plain Diff
Merge "Clarify GCC version check"
parents
04c91f53
f6be2f3c
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
87 additions
and
79 deletions
+87
-79
vp8/common/arm/neon/loopfilter_neon.c
vp8/common/arm/neon/loopfilter_neon.c
+19
-18
vp8/common/arm/neon/loopfiltersimpleverticaledge_neon.c
vp8/common/arm/neon/loopfiltersimpleverticaledge_neon.c
+62
-61
vpx_ports/arm.h
vpx_ports/arm.h
+6
-0
No files found.
vp8/common/arm/neon/loopfilter_neon.c
View file @
d174f276
...
...
@@ -10,6 +10,7 @@
#include <arm_neon.h>
#include "./vpx_config.h"
#include "vpx_ports/arm.h"
static
INLINE
void
vp8_loop_filter_neon
(
uint8x16_t
qblimit
,
// flimit
...
...
@@ -253,23 +254,7 @@ void vp8_loop_filter_horizontal_edge_uv_neon(
static
INLINE
void
write_4x8
(
unsigned
char
*
dst
,
int
pitch
,
const
uint8x8x4_t
result
)
{
#if (__GNUC__ == 4 && (__GNUC_MINOR__ >= 7))
vst4_lane_u8
(
dst
,
result
,
0
);
dst
+=
pitch
;
vst4_lane_u8
(
dst
,
result
,
1
);
dst
+=
pitch
;
vst4_lane_u8
(
dst
,
result
,
2
);
dst
+=
pitch
;
vst4_lane_u8
(
dst
,
result
,
3
);
dst
+=
pitch
;
vst4_lane_u8
(
dst
,
result
,
4
);
dst
+=
pitch
;
vst4_lane_u8
(
dst
,
result
,
5
);
dst
+=
pitch
;
vst4_lane_u8
(
dst
,
result
,
6
);
dst
+=
pitch
;
vst4_lane_u8
(
dst
,
result
,
7
);
#else
#ifdef VPX_INCOMPATIBLE_GCC
/*
* uint8x8x4_t result
00 01 02 03 | 04 05 06 07
...
...
@@ -316,7 +301,23 @@ static INLINE void write_4x8(unsigned char *dst, int pitch,
vst1_lane_u32
((
uint32_t
*
)
dst
,
x_2_6
,
1
);
dst
+=
pitch
;
vst1_lane_u32
((
uint32_t
*
)
dst
,
x_3_7
,
1
);
#endif
#else
vst4_lane_u8
(
dst
,
result
,
0
);
dst
+=
pitch
;
vst4_lane_u8
(
dst
,
result
,
1
);
dst
+=
pitch
;
vst4_lane_u8
(
dst
,
result
,
2
);
dst
+=
pitch
;
vst4_lane_u8
(
dst
,
result
,
3
);
dst
+=
pitch
;
vst4_lane_u8
(
dst
,
result
,
4
);
dst
+=
pitch
;
vst4_lane_u8
(
dst
,
result
,
5
);
dst
+=
pitch
;
vst4_lane_u8
(
dst
,
result
,
6
);
dst
+=
pitch
;
vst4_lane_u8
(
dst
,
result
,
7
);
#endif // VPX_INCOMPATIBLE_GCC
}
void
vp8_loop_filter_vertical_edge_y_neon
(
...
...
vp8/common/arm/neon/loopfiltersimpleverticaledge_neon.c
View file @
d174f276
...
...
@@ -10,45 +10,9 @@
#include <arm_neon.h>
#include "./vpx_config.h"
#include "vpx_ports/arm.h"
#if (__GNUC__ == 4 && (__GNUC_MINOR__ >= 7))
static
INLINE
void
write_2x8
(
unsigned
char
*
dst
,
int
pitch
,
const
uint8x8x2_t
result
,
const
uint8x8x2_t
result2
)
{
vst2_lane_u8
(
dst
,
result
,
0
);
dst
+=
pitch
;
vst2_lane_u8
(
dst
,
result
,
1
);
dst
+=
pitch
;
vst2_lane_u8
(
dst
,
result
,
2
);
dst
+=
pitch
;
vst2_lane_u8
(
dst
,
result
,
3
);
dst
+=
pitch
;
vst2_lane_u8
(
dst
,
result
,
4
);
dst
+=
pitch
;
vst2_lane_u8
(
dst
,
result
,
5
);
dst
+=
pitch
;
vst2_lane_u8
(
dst
,
result
,
6
);
dst
+=
pitch
;
vst2_lane_u8
(
dst
,
result
,
7
);
dst
+=
pitch
;
vst2_lane_u8
(
dst
,
result2
,
0
);
dst
+=
pitch
;
vst2_lane_u8
(
dst
,
result2
,
1
);
dst
+=
pitch
;
vst2_lane_u8
(
dst
,
result2
,
2
);
dst
+=
pitch
;
vst2_lane_u8
(
dst
,
result2
,
3
);
dst
+=
pitch
;
vst2_lane_u8
(
dst
,
result2
,
4
);
dst
+=
pitch
;
vst2_lane_u8
(
dst
,
result2
,
5
);
dst
+=
pitch
;
vst2_lane_u8
(
dst
,
result2
,
6
);
dst
+=
pitch
;
vst2_lane_u8
(
dst
,
result2
,
7
);
}
#else
#ifdef VPX_INCOMPATIBLE_GCC
static
INLINE
void
write_2x4
(
unsigned
char
*
dst
,
int
pitch
,
const
uint8x8x2_t
result
)
{
/*
...
...
@@ -88,30 +52,47 @@ static INLINE void write_2x8(unsigned char *dst, int pitch,
dst
+=
pitch
*
8
;
write_2x4
(
dst
,
pitch
,
result2
);
}
#endif
#else
static
INLINE
void
write_2x8
(
unsigned
char
*
dst
,
int
pitch
,
const
uint8x8x2_t
result
,
const
uint8x8x2_t
result2
)
{
vst2_lane_u8
(
dst
,
result
,
0
);
dst
+=
pitch
;
vst2_lane_u8
(
dst
,
result
,
1
);
dst
+=
pitch
;
vst2_lane_u8
(
dst
,
result
,
2
);
dst
+=
pitch
;
vst2_lane_u8
(
dst
,
result
,
3
);
dst
+=
pitch
;
vst2_lane_u8
(
dst
,
result
,
4
);
dst
+=
pitch
;
vst2_lane_u8
(
dst
,
result
,
5
);
dst
+=
pitch
;
vst2_lane_u8
(
dst
,
result
,
6
);
dst
+=
pitch
;
vst2_lane_u8
(
dst
,
result
,
7
);
dst
+=
pitch
;
#if (__GNUC__ == 4 && (__GNUC_MINOR__ >= 7))
static
INLINE
uint8x8x4_t
read_4x8
(
unsigned
char
*
src
,
int
pitch
,
uint8x8x4_t
x
)
{
x
=
vld4_lane_u8
(
src
,
x
,
0
);
src
+=
pitch
;
x
=
vld4_lane_u8
(
src
,
x
,
1
);
src
+=
pitch
;
x
=
vld4_lane_u8
(
src
,
x
,
2
);
src
+=
pitch
;
x
=
vld4_lane_u8
(
src
,
x
,
3
);
src
+=
pitch
;
x
=
vld4_lane_u8
(
src
,
x
,
4
);
src
+=
pitch
;
x
=
vld4_lane_u8
(
src
,
x
,
5
);
src
+=
pitch
;
x
=
vld4_lane_u8
(
src
,
x
,
6
);
src
+=
pitch
;
x
=
vld4_lane_u8
(
src
,
x
,
7
);
return
x
;
vst2_lane_u8
(
dst
,
result2
,
0
);
dst
+=
pitch
;
vst2_lane_u8
(
dst
,
result2
,
1
);
dst
+=
pitch
;
vst2_lane_u8
(
dst
,
result2
,
2
);
dst
+=
pitch
;
vst2_lane_u8
(
dst
,
result2
,
3
);
dst
+=
pitch
;
vst2_lane_u8
(
dst
,
result2
,
4
);
dst
+=
pitch
;
vst2_lane_u8
(
dst
,
result2
,
5
);
dst
+=
pitch
;
vst2_lane_u8
(
dst
,
result2
,
6
);
dst
+=
pitch
;
vst2_lane_u8
(
dst
,
result2
,
7
);
}
#else
#endif // VPX_INCOMPATIBLE_GCC
#ifdef VPX_INCOMPATIBLE_GCC
static
INLINE
uint8x8x4_t
read_4x8
(
unsigned
char
*
src
,
int
pitch
,
uint8x8x4_t
x
)
{
const
uint8x8_t
a
=
vld1_u8
(
src
);
...
...
@@ -169,7 +150,27 @@ uint8x8x4_t read_4x8(unsigned char *src, int pitch, uint8x8x4_t x) {
return
x
;
}
#endif
#else
static
INLINE
uint8x8x4_t
read_4x8
(
unsigned
char
*
src
,
int
pitch
,
uint8x8x4_t
x
)
{
x
=
vld4_lane_u8
(
src
,
x
,
0
);
src
+=
pitch
;
x
=
vld4_lane_u8
(
src
,
x
,
1
);
src
+=
pitch
;
x
=
vld4_lane_u8
(
src
,
x
,
2
);
src
+=
pitch
;
x
=
vld4_lane_u8
(
src
,
x
,
3
);
src
+=
pitch
;
x
=
vld4_lane_u8
(
src
,
x
,
4
);
src
+=
pitch
;
x
=
vld4_lane_u8
(
src
,
x
,
5
);
src
+=
pitch
;
x
=
vld4_lane_u8
(
src
,
x
,
6
);
src
+=
pitch
;
x
=
vld4_lane_u8
(
src
,
x
,
7
);
return
x
;
}
#endif // VPX_INCOMPATIBLE_GCC
static
INLINE
void
vp8_loop_filter_simple_vertical_edge_neon
(
unsigned
char
*
s
,
...
...
vpx_ports/arm.h
View file @
d174f276
...
...
@@ -27,6 +27,12 @@ extern "C" {
int
arm_cpu_caps
(
void
);
// Earlier gcc compilers have issues with some neon intrinsics
#if !defined(__clang__) && defined(__GNUC__) && \
__GNUC__ == 4 && __GNUC_MINOR__ <= 6
#define VPX_INCOMPATIBLE_GCC
#endif
#ifdef __cplusplus
}
// extern "C"
#endif
...
...
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