summaryrefslogtreecommitdiff
path: root/cpu_ref/rsCpuIntrinsics_advsimd_YuvToRGB.S
diff options
context:
space:
mode:
authorSimon Hosie <simon.hosie@arm.com>2014-09-19 23:08:21 -0700
committerJason Sams <jsams@google.com>2014-10-09 00:15:32 +0000
commit9732e859ff5d1911915eb83411c9b1ae991c7523 (patch)
tree3f3f5287112a1d63ac89676a462c221b0fd8f80e /cpu_ref/rsCpuIntrinsics_advsimd_YuvToRGB.S
parent5ac3f46cf69d4abe377a266b96d0927d864c9868 (diff)
downloadrs-9732e859ff5d1911915eb83411c9b1ae991c7523.tar.gz
Tail-store fixes to AArch64 YuvToRGB assembly.
bug 17923388 Change-Id: I692cf3b38b0cf57404024170874070d5f2b95480
Diffstat (limited to 'cpu_ref/rsCpuIntrinsics_advsimd_YuvToRGB.S')
-rw-r--r--cpu_ref/rsCpuIntrinsics_advsimd_YuvToRGB.S13
1 files changed, 9 insertions, 4 deletions
diff --git a/cpu_ref/rsCpuIntrinsics_advsimd_YuvToRGB.S b/cpu_ref/rsCpuIntrinsics_advsimd_YuvToRGB.S
index 632ef7a4..63868634 100644
--- a/cpu_ref/rsCpuIntrinsics_advsimd_YuvToRGB.S
+++ b/cpu_ref/rsCpuIntrinsics_advsimd_YuvToRGB.S
@@ -176,12 +176,17 @@
* same time as loading only part of a register. So the data is loaded
* linearly and unpacked manually at this point if necessary.
*/
-1: uzp1 v8.16b, v8.16b, v9.16b
+1: mov v18.8b, v8.8b
+ uzp1 v8.8b, v18.8b, v9.8b
+ uzp2 v9.8b, v18.8b, v9.8b
.if \interleaved
+ mov v18.8b, v16.8b
.if \swapuv
- uzp1 v16.16b, v17.16b, v16.16b
+ uzp1 v16.8b, v17.8b, v18.8b
+ uzp2 v17.8b, v17.8b, v18.8b
.else
- uzp1 v16.16b, v16.16b, v17.16b
+ uzp1 v16.8b, v18.8b, v17.8b
+ uzp2 v17.8b, v18.8b, v17.8b
.endif
.endif
@@ -225,7 +230,7 @@ ENTRY(rsdIntrinsicYuv2_K)
add x1, x1, x4
add x4, x3, x6
add x3, x2, x6
- sub x2, x5, x6, LSL #2
+ sub x2, x5, x6, LSL #1
sub x6, sp, #32
sub sp, sp, #64