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
Toggle navigation
Open sidebar
BC
public
external
libvpx
Commits
35830879
Commit
35830879
authored
Sep 27, 2013
by
Scott LaVarnway
Committed by
Gerrit Code Review
Sep 27, 2013
Browse files
Options
Browse Files
Download
Plain Diff
Merge "d63 intra prediction ssse3 using bytes"
parents
931c34e9
20865849
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
156 additions
and
6 deletions
+156
-6
vp9/common/vp9_rtcd_defs.sh
vp9/common/vp9_rtcd_defs.sh
+4
-4
vp9/common/x86/vp9_intrapred_ssse3.asm
vp9/common/x86/vp9_intrapred_ssse3.asm
+152
-2
No files found.
vp9/common/vp9_rtcd_defs.sh
View file @
35830879
...
...
@@ -53,7 +53,7 @@ prototype void vp9_d45_predictor_4x4 "uint8_t *dst, ptrdiff_t y_stride, const ui
specialize vp9_d45_predictor_4x4
$ssse3_x86inc
prototype void vp9_d63_predictor_4x4
"uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left"
specialize vp9_d63_predictor_4x4
specialize vp9_d63_predictor_4x4
$ssse3_x86inc
prototype void vp9_h_predictor_4x4
"uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left"
specialize vp9_h_predictor_4x4
$ssse3_x86inc
...
...
@@ -92,7 +92,7 @@ prototype void vp9_d45_predictor_8x8 "uint8_t *dst, ptrdiff_t y_stride, const ui
specialize vp9_d45_predictor_8x8
$ssse3_x86inc
prototype void vp9_d63_predictor_8x8
"uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left"
specialize vp9_d63_predictor_8x8
specialize vp9_d63_predictor_8x8
$ssse3_x86inc
prototype void vp9_h_predictor_8x8
"uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left"
specialize vp9_h_predictor_8x8
$ssse3_x86inc
...
...
@@ -131,7 +131,7 @@ prototype void vp9_d45_predictor_16x16 "uint8_t *dst, ptrdiff_t y_stride, const
specialize vp9_d45_predictor_16x16
$ssse3_x86inc
prototype void vp9_d63_predictor_16x16
"uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left"
specialize vp9_d63_predictor_16x16
specialize vp9_d63_predictor_16x16
$ssse3_x86inc
prototype void vp9_h_predictor_16x16
"uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left"
specialize vp9_h_predictor_16x16
$ssse3_x86inc
...
...
@@ -170,7 +170,7 @@ prototype void vp9_d45_predictor_32x32 "uint8_t *dst, ptrdiff_t y_stride, const
specialize vp9_d45_predictor_32x32
$ssse3_x86inc
prototype void vp9_d63_predictor_32x32
"uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left"
specialize vp9_d63_predictor_32x32
specialize vp9_d63_predictor_32x32
$ssse3_x86inc
prototype void vp9_h_predictor_32x32
"uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left"
specialize vp9_h_predictor_32x32
$ssse3
x86inc
...
...
vp9/common/x86/vp9_intrapred_ssse3.asm
View file @
35830879
...
...
@@ -17,8 +17,8 @@ pw_2: times 8 dw 2
pb_7m1:
times
8
db
7
,
-
1
pb_15:
times
16
db
15
sh_b01234577:
db
0
,
1
,
2
,
3
,
4
,
5
,
7
,
7
sh_b12345677:
db
1
,
2
,
3
,
4
,
5
,
6
,
7
,
7
sh_b01234577:
db
0
,
1
,
2
,
3
,
4
,
5
,
7
,
7
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
sh_b12345677:
db
1
,
2
,
3
,
4
,
5
,
6
,
7
,
7
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
sh_b23456777:
db
2
,
3
,
4
,
5
,
6
,
7
,
7
,
7
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
sh_b0123456777777777:
db
0
,
1
,
2
,
3
,
4
,
5
,
6
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
sh_b1234567777777777:
db
1
,
2
,
3
,
4
,
5
,
6
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
...
...
@@ -305,3 +305,153 @@ cglobal d45_predictor_32x32, 3, 6, 7, dst, stride, above, dst16, line, goffset
REST
ORE_GOT
RET
; ------------------------------------------
; input: x, y, z, result
;
; trick from pascal
; (x+2y+z+2)>>2 can be calculated as:
; result = avg(x,z)
; result -= xor(x,z) & 1
; result = avg(result,y)
; ------------------------------------------
%macro X_PLUS_2Y_PLUS_Z_PLUS_2_RSH_2 4
pavgb
%
4
,
%
1
,
%
3
pxor
%
3
,
%
1
pand
%
3
,
[
GLOBAL
(
pb_1
)]
psubb
%
4
,
%
3
pavgb
%
4
,
%
2
%endmacro
INIT_XMM
ss
se3
cglobal
d63_predictor_4x4
,
3
,
4
,
5
,
ds
t
,
stride
,
above
,
goffset
GET_GOT
goffsetq
movq
m3
,
[
aboveq
]
pshufb
m1
,
m3
,
[
GLOBAL
(
sh_b23456777
)]
pshufb
m2
,
m3
,
[
GLOBAL
(
sh_b12345677
)]
X_PLUS_2Y_PLUS_Z_PLUS_2_RSH_2
m3
,
m2
,
m1
,
m4
pavgb
m3
,
m2
; store 4 lines
movd
[
ds
tq
],
m3
movd
[
ds
tq
+
strideq
],
m4
lea
ds
tq
,
[
ds
tq
+
strideq
*
2
]
psrldq
m3
,
1
psrldq
m4
,
1
movd
[
ds
tq
],
m3
movd
[
ds
tq
+
strideq
],
m4
REST
ORE_GOT
RET
INIT_XMM
ss
se3
cglobal
d63_predictor_8x8
,
3
,
4
,
5
,
ds
t
,
stride
,
above
,
goffset
GET_GOT
goffsetq
movq
m3
,
[
aboveq
]
DEFINE_ARGS
ds
t
,
stride
,
stride3
lea
stride3q
,
[
strideq
*
3
]
pshufb
m1
,
m3
,
[
GLOBAL
(
sh_b2345677777777777
)]
pshufb
m0
,
m3
,
[
GLOBAL
(
sh_b0123456777777777
)]
pshufb
m2
,
m3
,
[
GLOBAL
(
sh_b1234567777777777
)]
pshufb
m3
,
[
GLOBAL
(
sh_b0123456777777777
)]
X_PLUS_2Y_PLUS_Z_PLUS_2_RSH_2
m0
,
m2
,
m1
,
m4
pavgb
m3
,
m2
; store 4 lines
movq
[
ds
tq
],
m3
movq
[
ds
tq
+
strideq
],
m4
psrldq
m3
,
1
psrldq
m4
,
1
movq
[
ds
tq
+
strideq
*
2
],
m3
movq
[
ds
tq
+
stride3q
],
m4
lea
ds
tq
,
[
ds
tq
+
strideq
*
4
]
psrldq
m3
,
1
psrldq
m4
,
1
; store 4 lines
movq
[
ds
tq
],
m3
movq
[
ds
tq
+
strideq
],
m4
psrldq
m3
,
1
psrldq
m4
,
1
movq
[
ds
tq
+
strideq
*
2
],
m3
movq
[
ds
tq
+
stride3q
],
m4
REST
ORE_GOT
RET
INIT_XMM
ss
se3
cglobal
d63_predictor_16x16
,
3
,
5
,
5
,
ds
t
,
stride
,
above
,
line
,
goffset
GET_GOT
goffsetq
mova
m0
,
[
aboveq
]
DEFINE_ARGS
ds
t
,
stride
,
stride3
,
line
lea
stride3q
,
[
strideq
*
3
]
mova
m1
,
[
GLOBAL
(
sh_b123456789abcdeff
)]
pshufb
m2
,
m0
,
[
GLOBAL
(
sh_b23456789abcdefff
)]
pshufb
m3
,
m0
,
m1
X_PLUS_2Y_PLUS_Z_PLUS_2_RSH_2
m0
,
m3
,
m2
,
m4
pavgb
m0
,
m3
mov
lined
,
4
.loop:
mova
[
ds
tq
],
m0
mova
[
ds
tq
+
strideq
],
m4
pshufb
m0
,
m1
pshufb
m4
,
m1
mova
[
ds
tq
+
strideq
*
2
],
m0
mova
[
ds
tq
+
stride3q
],
m4
pshufb
m0
,
m1
pshufb
m4
,
m1
lea
ds
tq
,
[
ds
tq
+
strideq
*
4
]
dec
lined
jnz
.loop
REST
ORE_GOT
REP_RET
INIT_XMM
ss
se3
cglobal
d63_predictor_32x32
,
3
,
5
,
8
,
ds
t
,
stride
,
above
,
line
,
goffset
GET_GOT
goffsetq
mova
m0
,
[
aboveq
]
mova
m7
,
[
aboveq
+
16
]
DEFINE_ARGS
ds
t
,
stride
,
stride3
,
line
mova
m1
,
[
GLOBAL
(
sh_b123456789abcdeff
)]
lea
stride3q
,
[
strideq
*
3
]
pshufb
m2
,
m7
,
[
GLOBAL
(
sh_b23456789abcdefff
)]
pshufb
m3
,
m7
,
m1
X_PLUS_2Y_PLUS_Z_PLUS_2_RSH_2
m7
,
m3
,
m2
,
m4
palignr
m6
,
m7
,
m0
,
1
palignr
m5
,
m7
,
m0
,
2
pavgb
m7
,
m3
X_PLUS_2Y_PLUS_Z_PLUS_2_RSH_2
m0
,
m6
,
m5
,
m2
pavgb
m0
,
m6
mov
lined
,
8
.loop:
mova
[
ds
tq
],
m0
mova
[
ds
tq
+
16
],
m7
mova
[
ds
tq
+
strideq
],
m2
mova
[
ds
tq
+
strideq
+
16
],
m4
palignr
m3
,
m7
,
m0
,
1
palignr
m5
,
m4
,
m2
,
1
pshufb
m7
,
m1
pshufb
m4
,
m1
mova
[
ds
tq
+
strideq
*
2
],
m3
mova
[
ds
tq
+
strideq
*
2
+
16
],
m7
mova
[
ds
tq
+
stride3q
],
m5
mova
[
ds
tq
+
stride3q
+
16
],
m4
palignr
m0
,
m7
,
m3
,
1
palignr
m2
,
m4
,
m5
,
1
pshufb
m7
,
m1
pshufb
m4
,
m1
lea
ds
tq
,
[
ds
tq
+
strideq
*
4
]
dec
lined
jnz
.loop
REST
ORE_GOT
REP_RET
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