Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/videolan/dav1d.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMartin Storsjö <martin@martin.st>2019-02-27 12:29:14 +0300
committerMartin Storsjö <martin@martin.st>2019-03-07 00:36:08 +0300
commit18ef9556b71e3b6b839c35ae614ef0bb5b6a2179 (patch)
treed17b4c23ba9488c5a9b5d9d37a5040c8513ccc49 /src/arm/64/looprestoration.S
parentc204da0ff33a0d563d6c632b42799e4fbc48f402 (diff)
arm: looprestoration: Simplify a few padding cases in wiener_filter_h_neon
Diffstat (limited to 'src/arm/64/looprestoration.S')
-rw-r--r--src/arm/64/looprestoration.S26
1 files changed, 10 insertions, 16 deletions
diff --git a/src/arm/64/looprestoration.S b/src/arm/64/looprestoration.S
index cf86134..7fc34d9 100644
--- a/src/arm/64/looprestoration.S
+++ b/src/arm/64/looprestoration.S
@@ -224,31 +224,25 @@ function wiener_filter_h_neon, export=1
mov v3.16b, v28.16b
mov v5.16b, v29.16b
br x11
+44: // 4 pixels valid in v2/v4, fill the high half with padding.
+ ins v2.d[1], v3.d[0]
+ ins v4.d[1], v5.d[0]
+ b 88f
// Shift v2 right, shifting out invalid pixels,
// shift v2 left to the original offset, shifting in padding pixels.
-44: // 4 pixels valid
- ext v2.16b, v2.16b, v2.16b, #8
- ext v2.16b, v2.16b, v3.16b, #8
- ext v4.16b, v4.16b, v4.16b, #8
- ext v4.16b, v4.16b, v5.16b, #8
- b 88f
55: // 5 pixels valid
ext v2.16b, v2.16b, v2.16b, #10
ext v2.16b, v2.16b, v3.16b, #6
ext v4.16b, v4.16b, v4.16b, #10
ext v4.16b, v4.16b, v5.16b, #6
b 88f
-66: // 6 pixels valid
- ext v2.16b, v2.16b, v2.16b, #12
- ext v2.16b, v2.16b, v3.16b, #4
- ext v4.16b, v4.16b, v4.16b, #12
- ext v4.16b, v4.16b, v5.16b, #4
+66: // 6 pixels valid, fill the upper 2 pixels with padding.
+ ins v2.s[3], v3.s[0]
+ ins v4.s[3], v5.s[0]
b 88f
-77: // 7 pixels valid
- ext v2.16b, v2.16b, v2.16b, #14
- ext v2.16b, v2.16b, v3.16b, #2
- ext v4.16b, v4.16b, v4.16b, #14
- ext v4.16b, v4.16b, v5.16b, #2
+77: // 7 pixels valid, fill the last pixel with padding.
+ ins v2.h[7], v3.h[0]
+ ins v4.h[7], v5.h[0]
b 88f
L(variable_shift_tbl):