Modify code style, remove trailing space.

This commit is contained in:
Licai Guo
2014-03-03 15:42:01 +08:00
parent b7a25df13f
commit 7768cd0a98
15 changed files with 1636 additions and 1972 deletions

View File

@@ -71,7 +71,7 @@
4CE4474718BC61650017DF25 /* typedefs.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = typedefs.h; sourceTree = "<group>"; }; 4CE4474718BC61650017DF25 /* typedefs.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = typedefs.h; sourceTree = "<group>"; };
4CE4474918BC61650017DF25 /* WelsThreadLib.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WelsThreadLib.cpp; sourceTree = "<group>"; }; 4CE4474918BC61650017DF25 /* WelsThreadLib.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WelsThreadLib.cpp; sourceTree = "<group>"; };
4CE4474A18BC61650017DF25 /* WelsThreadLib.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WelsThreadLib.h; sourceTree = "<group>"; }; 4CE4474A18BC61650017DF25 /* WelsThreadLib.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WelsThreadLib.h; sourceTree = "<group>"; };
4CE447BC18C085320017DF25 /* deblocking_neon.S */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; path = deblocking_neon.S; sourceTree = "<group>"; }; 4CE447BC18C085320017DF25 /* deblocking_neon.S */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 4; lastKnownFileType = sourcecode.asm; path = deblocking_neon.S; sourceTree = "<group>"; tabWidth = 4; usesTabs = 0; };
4CE447BE18C085900017DF25 /* arm_arch_common_macro.S */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; path = arm_arch_common_macro.S; sourceTree = "<group>"; }; 4CE447BE18C085900017DF25 /* arm_arch_common_macro.S */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; path = arm_arch_common_macro.S; sourceTree = "<group>"; };
/* End PBXFileReference section */ /* End PBXFileReference section */

View File

@@ -84,9 +84,9 @@
4CE4464E18BC5EAA0017DF25 /* decoder_context.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = decoder_context.h; sourceTree = "<group>"; }; 4CE4464E18BC5EAA0017DF25 /* decoder_context.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = decoder_context.h; sourceTree = "<group>"; };
4CE4464F18BC5EAA0017DF25 /* decoder_core.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = decoder_core.h; sourceTree = "<group>"; }; 4CE4464F18BC5EAA0017DF25 /* decoder_core.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = decoder_core.h; sourceTree = "<group>"; };
4CE4465018BC5EAA0017DF25 /* error_code.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = error_code.h; sourceTree = "<group>"; }; 4CE4465018BC5EAA0017DF25 /* error_code.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = error_code.h; sourceTree = "<group>"; };
4CE4465118BC5EAA0017DF25 /* expand_pic.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = expand_pic.h; sourceTree = "<group>"; }; 4CE4465118BC5EAA0017DF25 /* expand_pic.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = expand_pic.h; sourceTree = "<group>"; usesTabs = 1; };
4CE4465218BC5EAA0017DF25 /* fmo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = fmo.h; sourceTree = "<group>"; }; 4CE4465218BC5EAA0017DF25 /* fmo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = fmo.h; sourceTree = "<group>"; usesTabs = 1; };
4CE4465318BC5EAA0017DF25 /* get_intra_predictor.h */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 2; lastKnownFileType = sourcecode.c.h; path = get_intra_predictor.h; sourceTree = "<group>"; tabWidth = 2; usesTabs = 1; }; 4CE4465318BC5EAA0017DF25 /* get_intra_predictor.h */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = get_intra_predictor.h; sourceTree = "<group>"; tabWidth = 4; usesTabs = 0; };
4CE4465418BC5EAA0017DF25 /* manage_dec_ref.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = manage_dec_ref.h; sourceTree = "<group>"; }; 4CE4465418BC5EAA0017DF25 /* manage_dec_ref.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = manage_dec_ref.h; sourceTree = "<group>"; };
4CE4465518BC5EAA0017DF25 /* mb_cache.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = mb_cache.h; sourceTree = "<group>"; }; 4CE4465518BC5EAA0017DF25 /* mb_cache.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = mb_cache.h; sourceTree = "<group>"; };
4CE4465618BC5EAA0017DF25 /* mc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = mc.h; sourceTree = "<group>"; }; 4CE4465618BC5EAA0017DF25 /* mc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = mc.h; sourceTree = "<group>"; };
@@ -105,19 +105,19 @@
4CE4466318BC5EAA0017DF25 /* vlc_decoder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = vlc_decoder.h; sourceTree = "<group>"; }; 4CE4466318BC5EAA0017DF25 /* vlc_decoder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = vlc_decoder.h; sourceTree = "<group>"; };
4CE4466418BC5EAA0017DF25 /* wels_common_basis.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = wels_common_basis.h; sourceTree = "<group>"; }; 4CE4466418BC5EAA0017DF25 /* wels_common_basis.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = wels_common_basis.h; sourceTree = "<group>"; };
4CE4466518BC5EAA0017DF25 /* wels_const.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = wels_const.h; sourceTree = "<group>"; }; 4CE4466518BC5EAA0017DF25 /* wels_const.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = wels_const.h; sourceTree = "<group>"; };
4CE4466718BC5EAA0017DF25 /* au_parser.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = au_parser.cpp; sourceTree = "<group>"; usesTabs = 1; }; 4CE4466718BC5EAA0017DF25 /* au_parser.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = au_parser.cpp; sourceTree = "<group>"; usesTabs = 0; };
4CE4466818BC5EAA0017DF25 /* bit_stream.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = bit_stream.cpp; sourceTree = "<group>"; usesTabs = 1; }; 4CE4466818BC5EAA0017DF25 /* bit_stream.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = bit_stream.cpp; sourceTree = "<group>"; usesTabs = 0; };
4CE4466918BC5EAA0017DF25 /* deblocking.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = deblocking.cpp; sourceTree = "<group>"; }; 4CE4466918BC5EAA0017DF25 /* deblocking.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = deblocking.cpp; sourceTree = "<group>"; tabWidth = 2; };
4CE4466A18BC5EAA0017DF25 /* decode_mb_aux.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = decode_mb_aux.cpp; sourceTree = "<group>"; }; 4CE4466A18BC5EAA0017DF25 /* decode_mb_aux.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = decode_mb_aux.cpp; sourceTree = "<group>"; };
4CE4466B18BC5EAA0017DF25 /* decode_slice.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = decode_slice.cpp; sourceTree = "<group>"; usesTabs = 1; }; 4CE4466B18BC5EAA0017DF25 /* decode_slice.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = decode_slice.cpp; sourceTree = "<group>"; usesTabs = 0; };
4CE4466C18BC5EAA0017DF25 /* decoder.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = decoder.cpp; sourceTree = "<group>"; tabWidth = 2; usesTabs = 1; }; 4CE4466C18BC5EAA0017DF25 /* decoder.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = decoder.cpp; sourceTree = "<group>"; tabWidth = 4; usesTabs = 0; };
4CE4466D18BC5EAA0017DF25 /* decoder_core.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = decoder_core.cpp; sourceTree = "<group>"; }; 4CE4466D18BC5EAA0017DF25 /* decoder_core.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = decoder_core.cpp; sourceTree = "<group>"; };
4CE4466E18BC5EAA0017DF25 /* decoder_data_tables.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = decoder_data_tables.cpp; sourceTree = "<group>"; }; 4CE4466E18BC5EAA0017DF25 /* decoder_data_tables.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = decoder_data_tables.cpp; sourceTree = "<group>"; };
4CE4466F18BC5EAA0017DF25 /* expand_pic.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = expand_pic.cpp; sourceTree = "<group>"; }; 4CE4466F18BC5EAA0017DF25 /* expand_pic.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = expand_pic.cpp; sourceTree = "<group>"; };
4CE4467018BC5EAA0017DF25 /* fmo.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = fmo.cpp; sourceTree = "<group>"; }; 4CE4467018BC5EAA0017DF25 /* fmo.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = fmo.cpp; sourceTree = "<group>"; };
4CE4467118BC5EAA0017DF25 /* get_intra_predictor.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = get_intra_predictor.cpp; sourceTree = "<group>"; }; 4CE4467118BC5EAA0017DF25 /* get_intra_predictor.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = get_intra_predictor.cpp; sourceTree = "<group>"; };
4CE4467218BC5EAA0017DF25 /* manage_dec_ref.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = manage_dec_ref.cpp; sourceTree = "<group>"; }; 4CE4467218BC5EAA0017DF25 /* manage_dec_ref.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = manage_dec_ref.cpp; sourceTree = "<group>"; };
4CE4467318BC5EAA0017DF25 /* mc.cpp */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 4; lastKnownFileType = sourcecode.cpp.cpp; path = mc.cpp; sourceTree = "<group>"; tabWidth = 1; usesTabs = 1; wrapsLines = 1; }; 4CE4467318BC5EAA0017DF25 /* mc.cpp */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 4; lastKnownFileType = sourcecode.cpp.cpp; path = mc.cpp; sourceTree = "<group>"; tabWidth = 1; usesTabs = 0; wrapsLines = 1; };
4CE4467418BC5EAA0017DF25 /* mem_align.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = mem_align.cpp; sourceTree = "<group>"; }; 4CE4467418BC5EAA0017DF25 /* mem_align.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = mem_align.cpp; sourceTree = "<group>"; };
4CE4467518BC5EAA0017DF25 /* memmgr_nal_unit.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = memmgr_nal_unit.cpp; sourceTree = "<group>"; }; 4CE4467518BC5EAA0017DF25 /* memmgr_nal_unit.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = memmgr_nal_unit.cpp; sourceTree = "<group>"; };
4CE4467618BC5EAA0017DF25 /* mv_pred.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = mv_pred.cpp; sourceTree = "<group>"; }; 4CE4467618BC5EAA0017DF25 /* mv_pred.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = mv_pred.cpp; sourceTree = "<group>"; };

View File

@@ -221,10 +221,8 @@ uint32_t WelsCPUFeatureDetectAndroid()
uint32_t uiCPU = 0; uint32_t uiCPU = 0;
AndroidCpuFamily cpuFamily = ANDROID_CPU_FAMILY_UNKNOWN; AndroidCpuFamily cpuFamily = ANDROID_CPU_FAMILY_UNKNOWN;
uint64_t uiFeatures = 0; uint64_t uiFeatures = 0;
cpuFamily = android_getCpuFamily(); cpuFamily = android_getCpuFamily();
if (cpuFamily == ANDROID_CPU_FAMILY_ARM) if (cpuFamily == ANDROID_CPU_FAMILY_ARM) {
{
uiFeatures = android_getCpuFeatures(); uiFeatures = android_getCpuFeatures();
if (uiFeatures & ANDROID_CPU_ARM_FEATURE_ARMv7){ if (uiFeatures & ANDROID_CPU_ARM_FEATURE_ARMv7){
uiCPU |= WELS_CPU_ARMv7; uiCPU |= WELS_CPU_ARMv7;
@@ -246,7 +244,6 @@ uint32_t WelsCPUFeatureDetectIOS() //Need to be updated for the new device of AP
{ {
uint32_t uiCPU = 0; uint32_t uiCPU = 0;
struct utsname sSystemInfo; struct utsname sSystemInfo;
uname (&sSystemInfo); uname (&sSystemInfo);
if ((0 != strcmp(sSystemInfo.machine, "iPhone1,1")) && //iPhone 2G if ((0 != strcmp(sSystemInfo.machine, "iPhone1,1")) && //iPhone 2G

File diff suppressed because it is too large Load Diff

View File

@@ -40,34 +40,6 @@ extern "C" {
#endif//__cplusplus #endif//__cplusplus
#if defined(HAVE_NEON) #if defined(HAVE_NEON)
/*
void McCopy_neon(const uint8_t* pSrc, int32_t iSrcStride, uint8_t* pDst, int32_t iDstStride,
int32_t iWidth, int32_t iHeight);
void McHorVer20_neon(const uint8_t* pSrc, int32_t iSrcStride, uint8_t* pDst, int32_t iDstStride,
int32_t iWidth, int32_t iHeight);
void McHorVer02_neon(const uint8_t* pSrc, int32_t iSrcStride, uint8_t* pDst, int32_t iDstStride,
int32_t iWidth, int32_t iHeight);
void McHorVer22_neon(const uint8_t* pSrc, int32_t iSrcStride, uint8_t* pDst, int32_t iDstStride,
int32_t iWidth, int32_t iHeight);
void McHorVer01_neon(const uint8_t* pSrc, int32_t iSrcStride, uint8_t* pDst, int32_t iDstStride, int32_t iWidth, int32_t iHeight);
void McHorVer03_neon(const uint8_t* pSrc, int32_t iSrcStride, uint8_t* pDst, int32_t iDstStride, int32_t iWidth, int32_t iHeight);
void McHorVer10_neon(const uint8_t* pSrc, int32_t iSrcStride, uint8_t* pDst, int32_t iDstStride, int32_t iWidth, int32_t iHeight);
void McHorVer11_neon(const uint8_t* pSrc, int32_t iSrcStride, uint8_t* pDst, int32_t iDstStride, int32_t iWidth, int32_t iHeight);
void McHorVer12_neon(const uint8_t* pSrc, int32_t iSrcStride, uint8_t* pDst, int32_t iDstStride, int32_t iWidth, int32_t iHeight);
void McHorVer13_neon(const uint8_t* pSrc, int32_t iSrcStride, uint8_t* pDst, int32_t iDstStride, int32_t iWidth, int32_t iHeight);
void McHorVer21_neon(const uint8_t* pSrc, int32_t iSrcStride, uint8_t* pDst, int32_t iDstStride, int32_t iWidth, int32_t iHeight);
void McHorVer23_neon(const uint8_t* pSrc, int32_t iSrcStride, uint8_t* pDst, int32_t iDstStride, int32_t iWidth, int32_t iHeight);
void McHorVer30_neon(const uint8_t* pSrc, int32_t iSrcStride, uint8_t* pDst, int32_t iDstStride, int32_t iWidth, int32_t iHeight);
void McHorVer31_neon(const uint8_t* pSrc, int32_t iSrcStride, uint8_t* pDst, int32_t iDstStride, int32_t iWidth, int32_t iHeight);
void McHorVer32_neon(const uint8_t* pSrc, int32_t iSrcStride, uint8_t* pDst, int32_t iDstStride, int32_t iWidth, int32_t iHeight);
void McHorVer33_neon(const uint8_t* pSrc, int32_t iSrcStride, uint8_t* pDst, int32_t iDstStride, int32_t iWidth, int32_t iHeight);
void McLuma_neon(uint8_t* pSrc, int32_t src_stride, uint8_t* dst, int32_t dst_stride,
int16_t iMvX, int16_t iMvY, int32_t width, int32_t height);
void McChroma_neon(uint8_t* pSrc, int32_t src_stride, uint8_t* dst, int32_t dst_stride,
int16_t iMvX, int16_t iMvY, int32_t width, int32_t height);
*/
void McCopyWidthEq4_neon(const uint8_t* pSrc, int32_t iSrcStride, uint8_t* pDst, int32_t iDstStride, int32_t iHeight); void McCopyWidthEq4_neon(const uint8_t* pSrc, int32_t iSrcStride, uint8_t* pDst, int32_t iDstStride, int32_t iHeight);
void McCopyWidthEq8_neon(const uint8_t* pSrc, int32_t iSrcStride, uint8_t* pDst, int32_t iDstStride, int32_t iHeight); void McCopyWidthEq8_neon(const uint8_t* pSrc, int32_t iSrcStride, uint8_t* pDst, int32_t iDstStride, int32_t iHeight);

View File

@@ -61,12 +61,6 @@
.endm .endm
#endif #endif
/*
* void get_i16x16_luma_pred_v(uint8_t *pred, const int32_t stride)
* r0 --- pred
* r1 --- stride
* return --- void
*/
WELS_ASM_FUNC_BEGIN WelsDecoderI16x16LumaPredV_neon WELS_ASM_FUNC_BEGIN WelsDecoderI16x16LumaPredV_neon
//Get the top line data to 'q0' //Get the top line data to 'q0'
@@ -87,12 +81,6 @@ loop_0_get_i16x16_luma_pred_v:
WELS_ASM_FUNC_END WELS_ASM_FUNC_END
/*
* void get_i16x16_luma_pred_h(uint8_t *pred, const int32_t stride)
* r0 --- pred
* r1 --- stride
* return --- void
*/
WELS_ASM_FUNC_BEGIN WelsDecoderI16x16LumaPredH_neon WELS_ASM_FUNC_BEGIN WelsDecoderI16x16LumaPredH_neon
sub r2, r0, #1 sub r2, r0, #1
@@ -116,13 +104,6 @@ loop_0_get_i16x16_luma_pred_h:
WELS_ASM_FUNC_END WELS_ASM_FUNC_END
/*
* void get_i16x16_luma_pred_dc_both(uint8_t *pred, const int32_t stride)
* r0 --- pred
* r1 --- stride
* return --- void
*/
WELS_ASM_FUNC_BEGIN WelsDecoderI16x16LumaPredDc_neon WELS_ASM_FUNC_BEGIN WelsDecoderI16x16LumaPredDc_neon
//stmdb sp!, { r2-r5, lr} //stmdb sp!, { r2-r5, lr}
//Get the left vertical line data //Get the left vertical line data
@@ -159,12 +140,6 @@ loop_0_get_i16x16_luma_pred_dc_both:
WELS_ASM_FUNC_END WELS_ASM_FUNC_END
/*
* void get_i16x16_luma_pred_plane(uint8_t *pred, const int32_t stride)
* r0 --- pred
* r1 --- stride
* return --- void
*/
//The table for SIMD instruction {(8,7,6,5,4,3,2,1) * 5} //The table for SIMD instruction {(8,7,6,5,4,3,2,1) * 5}
CONST0_GET_I16X16_LUMA_PRED_PLANE: .long 0x191e2328, 0x050a0f14 CONST0_GET_I16X16_LUMA_PRED_PLANE: .long 0x191e2328, 0x050a0f14
@@ -263,14 +238,6 @@ loop_0_get_i16x16_luma_pred_plane:
WELS_ASM_FUNC_END WELS_ASM_FUNC_END
/*
* void get_i4x4_luma_pred_v(uint8_t *pred, const int32_t stride);
* r0 --- pred
* r1 --- stride
* return --- void
*/
WELS_ASM_FUNC_BEGIN WelsDecoderI4x4LumaPredV_neon WELS_ASM_FUNC_BEGIN WelsDecoderI4x4LumaPredV_neon
//stmdb sp!, { r2-r5, lr} //stmdb sp!, { r2-r5, lr}
//Load the top row (4 bytes) //Load the top row (4 bytes)
@@ -285,12 +252,7 @@ loop_0_get_i16x16_luma_pred_plane:
WELS_ASM_FUNC_END WELS_ASM_FUNC_END
/*
* void get_i4x4_luma_pred_h(uint8_t *pred, const int32_t stride);
* r0 --- pred
* r1 --- stride
* return --- void
*/
WELS_ASM_FUNC_BEGIN WelsDecoderI4x4LumaPredH_neon WELS_ASM_FUNC_BEGIN WelsDecoderI4x4LumaPredH_neon
//stmdb sp!, { r2-r5, lr} //stmdb sp!, { r2-r5, lr}
@@ -309,12 +271,7 @@ loop_0_get_i16x16_luma_pred_plane:
WELS_ASM_FUNC_END WELS_ASM_FUNC_END
/*
* void get_i4x4_luma_pred_d_l(uint8_t *pred, const int32_t stride);
* r0 --- pred
* r1 --- stride
* return --- void
*/
WELS_ASM_FUNC_BEGIN WelsDecoderI4x4LumaPredDDL_neon WELS_ASM_FUNC_BEGIN WelsDecoderI4x4LumaPredDDL_neon
//stmdb sp!, { r2-r5, lr} //stmdb sp!, { r2-r5, lr}
//Load the top row data(8 bytes) //Load the top row data(8 bytes)
@@ -352,12 +309,6 @@ loop_0_get_i16x16_luma_pred_plane:
WELS_ASM_FUNC_END WELS_ASM_FUNC_END
/*
* void get_i4x4_luma_pred_d_r(uint8_t *pred, const int32_t stride);
* r0 --- pred
* r1 --- stride
* return --- void
*/
WELS_ASM_FUNC_BEGIN WelsDecoderI4x4LumaPredDDR_neon WELS_ASM_FUNC_BEGIN WelsDecoderI4x4LumaPredDDR_neon
//stmdb sp!, { r2-r5, lr} //stmdb sp!, { r2-r5, lr}
@@ -399,12 +350,7 @@ loop_0_get_i16x16_luma_pred_plane:
WELS_ASM_FUNC_END WELS_ASM_FUNC_END
/*
* void get_i4x4_luma_pred_v_l(uint8_t *pred, const int32_t stride);
* r0 --- pred
* r1 --- stride
* return --- void
*/
WELS_ASM_FUNC_BEGIN WelsDecoderI4x4LumaPredVL_neon WELS_ASM_FUNC_BEGIN WelsDecoderI4x4LumaPredVL_neon
//stmdb sp!, { r2-r5, lr} //stmdb sp!, { r2-r5, lr}
//Load the top row (8 bytes) //Load the top row (8 bytes)
@@ -435,12 +381,6 @@ loop_0_get_i16x16_luma_pred_plane:
WELS_ASM_FUNC_END WELS_ASM_FUNC_END
/*
* void get_i4x4_luma_pred_v_r(uint8_t *pred, const int32_t stride);
* r0 --- pred
* r1 --- stride
* return --- void
*/
WELS_ASM_FUNC_BEGIN WelsDecoderI4x4LumaPredVR_neon WELS_ASM_FUNC_BEGIN WelsDecoderI4x4LumaPredVR_neon
//stmdb sp!, { r2-r5, lr} //stmdb sp!, { r2-r5, lr}
@@ -479,13 +419,7 @@ loop_0_get_i16x16_luma_pred_plane:
WELS_ASM_FUNC_END WELS_ASM_FUNC_END
/*
* get_i4x4_luma_pred_h_u(uint8_t *pred, const int32_t stride);
* r0 --- pred
* r1 --- stride
* return --- void
*/
//NO TEST
WELS_ASM_FUNC_BEGIN WelsDecoderI4x4LumaPredHU_neon WELS_ASM_FUNC_BEGIN WelsDecoderI4x4LumaPredHU_neon
//stmdb sp!, { r2-r5, lr} //stmdb sp!, { r2-r5, lr}
//Load the left column data //Load the left column data
@@ -518,12 +452,7 @@ loop_0_get_i16x16_luma_pred_plane:
WELS_ASM_FUNC_END WELS_ASM_FUNC_END
/*
* void get_i4x4_luma_pred_h_d(uint8_t *pred, const int32_t stride);
* r0 --- pred
* r1 --- stride
* return --- void
*/
WELS_ASM_FUNC_BEGIN WelsDecoderI4x4LumaPredHD_neon WELS_ASM_FUNC_BEGIN WelsDecoderI4x4LumaPredHD_neon
//stmdb sp!, { r2-r5, lr} //stmdb sp!, { r2-r5, lr}
//Load the data //Load the data
@@ -559,13 +488,6 @@ loop_0_get_i16x16_luma_pred_plane:
WELS_ASM_FUNC_END WELS_ASM_FUNC_END
/*
* void get_i_chroma_pred_v(uint8_t *pred, const int32_t stride);
* r0 --- pred
* r1 --- stride
* return --- void
*/
WELS_ASM_FUNC_BEGIN WelsDecoderIChromaPredV_neon WELS_ASM_FUNC_BEGIN WelsDecoderIChromaPredV_neon
//stmdb sp!, { r2-r5, lr} //stmdb sp!, { r2-r5, lr}
//Get the top row (8 byte) //Get the top row (8 byte)
@@ -585,13 +507,6 @@ loop_0_get_i16x16_luma_pred_plane:
WELS_ASM_FUNC_END WELS_ASM_FUNC_END
/*
* void get_i_chroma_pred_h(uint8_t *pred, const int32_t stride);
* r0 --- pred
* r1 --- stride
* return --- void
*/
WELS_ASM_FUNC_BEGIN WelsDecoderIChromaPredH_neon WELS_ASM_FUNC_BEGIN WelsDecoderIChromaPredH_neon
//stmdb sp!, { r2-r5, lr} //stmdb sp!, { r2-r5, lr}
////Get the left column (8 byte) ////Get the left column (8 byte)
@@ -618,13 +533,6 @@ loop_0_get_i16x16_luma_pred_plane:
WELS_ASM_FUNC_END WELS_ASM_FUNC_END
/*
* void get_i_chroma_pred_dc_both(uint8_t *pred, const int32_t stride);
* r0 --- pred
* r1 --- stride
* return --- void
*/
WELS_ASM_FUNC_BEGIN WelsDecoderIChromaPredDC_neon WELS_ASM_FUNC_BEGIN WelsDecoderIChromaPredDC_neon
//stmdb sp!, { r2-r5, lr} //stmdb sp!, { r2-r5, lr}
//Load the left column data (8 bytes) //Load the left column data (8 bytes)
@@ -661,12 +569,7 @@ loop_0_get_i16x16_luma_pred_plane:
WELS_ASM_FUNC_END WELS_ASM_FUNC_END
/*
* void get_i_chroma_pred_plane(uint8_t *pred, const int32_t stride);
* r0 --- pred
* r1 --- stride
* return --- void
*/
//Table {{1,2,3,4,1,2,3,4}*17} //Table {{1,2,3,4,1,2,3,4}*17}
CONST0_GET_I_CHROMA_PRED_PLANE: .long 0x44332211, 0x44332211//0x140f0a05, 0x28231e19 CONST0_GET_I_CHROMA_PRED_PLANE: .long 0x44332211, 0x44332211//0x140f0a05, 0x28231e19
//Table {-3,-2,-1,0,1,2,3,4} //Table {-3,-2,-1,0,1,2,3,4}

View File

@@ -42,8 +42,6 @@
// } // }
.endm .endm
//h_filter(src) = (src[-2] + src[3]) - 5*(src[-1] + src[2]) + 20*(src[ 0] + src[1]);//
//clip((h_filter(src)+16)>>5)
.macro FILTER_6TAG_8BITS .macro FILTER_6TAG_8BITS
// { // input:src[-2], src[-1], src[0], src[1], src[2], src[3], dst_d, multiplier a/b; working: q12, q13 // { // input:src[-2], src[-1], src[0], src[1], src[2], src[3], dst_d, multiplier a/b; working: q12, q13
vaddl.u8 q12, $0, $5 //q12=src[-2]+src[3] vaddl.u8 q12, $0, $5 //q12=src[-2]+src[3]
@@ -125,8 +123,6 @@
// } // }
.endm .endm
//h_filter(src) = (src[-2] + src[3]) - 5*(src[-1] + src[2]) + 20*(src[ 0] + src[1]);//
//clip((h_filter(src)+16)>>5)
.macro FILTER_6TAG_8BITS arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8 .macro FILTER_6TAG_8BITS arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8
// { // input:src[-2], src[-1], src[0], src[1], src[2], src[3], dst_d, multiplier a/b; working: q12, q13 // { // input:src[-2], src[-1], src[0], src[1], src[2], src[3], dst_d, multiplier a/b; working: q12, q13
vaddl.u8 q12, \arg0, \arg5 //q12=src[-2]+src[3] vaddl.u8 q12, \arg0, \arg5 //q12=src[-2]+src[3]
@@ -201,7 +197,7 @@
// } // }
.endm .endm
#endif #endif
//uint8_t* src, int32_t src_stride, uint8_t* dst, int32_t dst_stride, int32_t height
WELS_ASM_FUNC_BEGIN McHorVer20WidthEq16_neon WELS_ASM_FUNC_BEGIN McHorVer20WidthEq16_neon
push {r4} push {r4}
ldr r4, [sp, #4] ldr r4, [sp, #4]
@@ -233,7 +229,7 @@ w16_h_mc_luma_loop:
pop {r4} pop {r4}
WELS_ASM_FUNC_END WELS_ASM_FUNC_END
//uint8_t* src, int32_t src_stride, uint8_t* dst, int32_t dst_stride, int32_t height
WELS_ASM_FUNC_BEGIN McHorVer20WidthEq8_neon WELS_ASM_FUNC_BEGIN McHorVer20WidthEq8_neon
push {r4} push {r4}
ldr r4, [sp, #4] ldr r4, [sp, #4]
@@ -262,7 +258,7 @@ w8_h_mc_luma_loop:
pop {r4} pop {r4}
WELS_ASM_FUNC_END WELS_ASM_FUNC_END
//uint8_t* src, int32_t src_stride, uint8_t* dst, int32_t dst_stride, int32_t height
WELS_ASM_FUNC_BEGIN McHorVer20WidthEq4_neon WELS_ASM_FUNC_BEGIN McHorVer20WidthEq4_neon
push {r4, r5, r6} push {r4, r5, r6}
ldr r6, [sp, #12] ldr r6, [sp, #12]
@@ -300,7 +296,7 @@ w4_h_mc_luma_loop:
pop {r4, r5, r6} pop {r4, r5, r6}
WELS_ASM_FUNC_END WELS_ASM_FUNC_END
//uint8_t* src, int32_t src_stride, uint8_t* dst, int32_t dst_stride, int32_t height
WELS_ASM_FUNC_BEGIN McHorVer10WidthEq16_neon WELS_ASM_FUNC_BEGIN McHorVer10WidthEq16_neon
push {r4} push {r4}
ldr r4, [sp, #4] ldr r4, [sp, #4]
@@ -332,7 +328,7 @@ w16_xy_10_mc_luma_loop:
pop {r4} pop {r4}
WELS_ASM_FUNC_END WELS_ASM_FUNC_END
//uint8_t* src, int32_t src_stride, uint8_t* dst, int32_t dst_stride, int32_t height
WELS_ASM_FUNC_BEGIN McHorVer10WidthEq8_neon WELS_ASM_FUNC_BEGIN McHorVer10WidthEq8_neon
push {r4} push {r4}
ldr r4, [sp, #4] ldr r4, [sp, #4]
@@ -361,7 +357,7 @@ w8_xy_10_mc_luma_loop:
pop {r4} pop {r4}
WELS_ASM_FUNC_END WELS_ASM_FUNC_END
//uint8_t* src, int32_t src_stride, uint8_t* dst, int32_t dst_stride, int32_t height
WELS_ASM_FUNC_BEGIN McHorVer10WidthEq4_neon WELS_ASM_FUNC_BEGIN McHorVer10WidthEq4_neon
push {r4, r5, r6} push {r4, r5, r6}
ldr r6, [sp, #12] ldr r6, [sp, #12]
@@ -399,7 +395,7 @@ w4_xy_10_mc_luma_loop:
pop {r4, r5, r6} pop {r4, r5, r6}
WELS_ASM_FUNC_END WELS_ASM_FUNC_END
//uint8_t* src, int32_t src_stride, uint8_t* dst, int32_t dst_stride, int32_t height
WELS_ASM_FUNC_BEGIN McHorVer30WidthEq16_neon WELS_ASM_FUNC_BEGIN McHorVer30WidthEq16_neon
push {r4} push {r4}
ldr r4, [sp, #4] ldr r4, [sp, #4]
@@ -431,7 +427,7 @@ w16_xy_30_mc_luma_loop:
pop {r4} pop {r4}
WELS_ASM_FUNC_END WELS_ASM_FUNC_END
//uint8_t* src, int32_t src_stride, uint8_t* dst, int32_t dst_stride, int32_t height
WELS_ASM_FUNC_BEGIN McHorVer30WidthEq8_neon WELS_ASM_FUNC_BEGIN McHorVer30WidthEq8_neon
push {r4} push {r4}
ldr r4, [sp, #4] ldr r4, [sp, #4]
@@ -460,7 +456,7 @@ w8_xy_30_mc_luma_loop:
pop {r4} pop {r4}
WELS_ASM_FUNC_END WELS_ASM_FUNC_END
//uint8_t* src, int32_t src_stride, uint8_t* dst, int32_t dst_stride, int32_t height
WELS_ASM_FUNC_BEGIN McHorVer30WidthEq4_neon WELS_ASM_FUNC_BEGIN McHorVer30WidthEq4_neon
push {r4, r5, r6} push {r4, r5, r6}
ldr r6, [sp, #12] ldr r6, [sp, #12]
@@ -498,7 +494,7 @@ w4_xy_30_mc_luma_loop:
pop {r4, r5, r6} pop {r4, r5, r6}
WELS_ASM_FUNC_END WELS_ASM_FUNC_END
//uint8_t* src, int32_t src_stride, uint8_t* dst, int32_t dst_stride, int32_t height
WELS_ASM_FUNC_BEGIN McHorVer01WidthEq16_neon WELS_ASM_FUNC_BEGIN McHorVer01WidthEq16_neon
push {r4} push {r4}
ldr r4, [sp, #4] ldr r4, [sp, #4]
@@ -580,6 +576,7 @@ w16_xy_01_luma_loop:
pop {r4} pop {r4}
WELS_ASM_FUNC_END WELS_ASM_FUNC_END
WELS_ASM_FUNC_BEGIN McHorVer01WidthEq8_neon WELS_ASM_FUNC_BEGIN McHorVer01WidthEq8_neon
push {r4} push {r4}
ldr r4, [sp, #4] ldr r4, [sp, #4]
@@ -633,6 +630,7 @@ w8_xy_01_mc_luma_loop:
pop {r4} pop {r4}
WELS_ASM_FUNC_END WELS_ASM_FUNC_END
WELS_ASM_FUNC_BEGIN McHorVer01WidthEq4_neon WELS_ASM_FUNC_BEGIN McHorVer01WidthEq4_neon
push {r4, r5, r6, r7} push {r4, r5, r6, r7}
sub r0, r1, lsl #1 //src[-2*src_stride] sub r0, r1, lsl #1 //src[-2*src_stride]
@@ -691,6 +689,7 @@ w4_xy_01_mc_luma_loop:
pop {r4, r5, r6, r7} pop {r4, r5, r6, r7}
WELS_ASM_FUNC_END WELS_ASM_FUNC_END
WELS_ASM_FUNC_BEGIN McHorVer03WidthEq16_neon WELS_ASM_FUNC_BEGIN McHorVer03WidthEq16_neon
push {r4} push {r4}
ldr r4, [sp, #4] ldr r4, [sp, #4]
@@ -772,6 +771,7 @@ w16_xy_03_luma_loop:
pop {r4} pop {r4}
WELS_ASM_FUNC_END WELS_ASM_FUNC_END
WELS_ASM_FUNC_BEGIN McHorVer03WidthEq8_neon WELS_ASM_FUNC_BEGIN McHorVer03WidthEq8_neon
push {r4} push {r4}
ldr r4, [sp, #4] ldr r4, [sp, #4]
@@ -825,6 +825,7 @@ w8_xy_03_mc_luma_loop:
pop {r4} pop {r4}
WELS_ASM_FUNC_END WELS_ASM_FUNC_END
WELS_ASM_FUNC_BEGIN McHorVer03WidthEq4_neon WELS_ASM_FUNC_BEGIN McHorVer03WidthEq4_neon
push {r4, r5, r6, r7} push {r4, r5, r6, r7}
sub r0, r1, lsl #1 //src[-2*src_stride] sub r0, r1, lsl #1 //src[-2*src_stride]
@@ -883,7 +884,7 @@ w4_xy_03_mc_luma_loop:
pop {r4, r5, r6, r7} pop {r4, r5, r6, r7}
WELS_ASM_FUNC_END WELS_ASM_FUNC_END
//uint8_t* src, int32_t src_stride, uint8_t* dst, int32_t dst_stride, int32_t height
WELS_ASM_FUNC_BEGIN McHorVer02WidthEq16_neon WELS_ASM_FUNC_BEGIN McHorVer02WidthEq16_neon
push {r4} push {r4}
ldr r4, [sp, #4] ldr r4, [sp, #4]
@@ -965,7 +966,7 @@ w16_v_mc_luma_loop:
pop {r4} pop {r4}
WELS_ASM_FUNC_END WELS_ASM_FUNC_END
//uint8_t* src, int32_t src_stride, uint8_t* dst, int32_t dst_stride, int32_t height
WELS_ASM_FUNC_BEGIN McHorVer02WidthEq8_neon WELS_ASM_FUNC_BEGIN McHorVer02WidthEq8_neon
push {r4} push {r4}
ldr r4, [sp, #4] ldr r4, [sp, #4]
@@ -1019,7 +1020,7 @@ w8_v_mc_luma_loop:
pop {r4} pop {r4}
WELS_ASM_FUNC_END WELS_ASM_FUNC_END
//uint8_t* src, int32_t src_stride, uint8_t* dst, int32_t dst_stride, int32_t height
WELS_ASM_FUNC_BEGIN McHorVer02WidthEq4_neon WELS_ASM_FUNC_BEGIN McHorVer02WidthEq4_neon
push {r4, r5, r6, r7} push {r4, r5, r6, r7}
sub r0, r1, lsl #1 //src[-2*src_stride] sub r0, r1, lsl #1 //src[-2*src_stride]
@@ -1078,7 +1079,7 @@ w4_v_mc_luma_loop:
pop {r4, r5, r6, r7} pop {r4, r5, r6, r7}
WELS_ASM_FUNC_END WELS_ASM_FUNC_END
//uint8_t* src, int32_t src_stride, uint8_t* dst, int32_t dst_stride, int32_t height
WELS_ASM_FUNC_BEGIN McHorVer22WidthEq16_neon WELS_ASM_FUNC_BEGIN McHorVer22WidthEq16_neon
push {r4} push {r4}
ldr r4, [sp, #4] ldr r4, [sp, #4]
@@ -1089,8 +1090,6 @@ w4_v_mc_luma_loop:
pld [r0, r1] pld [r0, r1]
vmov.u16 q14, #0x0014 // 20 vmov.u16 q14, #0x0014 // 20
// vmov.u32 d30, #0x00140000
// vorr.u32 d30, #0x0005 //0x0014 0005 0014 0005
vld1.u8 {d0-d2}, [r0], r1 //use 21(16+5), =src[-2] vld1.u8 {d0-d2}, [r0], r1 //use 21(16+5), =src[-2]
vld1.u8 {d3-d5}, [r0], r1 //use 21(16+5), =src[-1] vld1.u8 {d3-d5}, [r0], r1 //use 21(16+5), =src[-1]
@@ -1115,7 +1114,7 @@ w16_hv_mc_luma_loop:
// horizon filtered // horizon filtered
UNPACK_2_16BITS_TO_ABC q9, q10, q11, q12, q13 UNPACK_2_16BITS_TO_ABC q9, q10, q11, q12, q13
FILTER_3_IN_16BITS_TO_8BITS q11, q12, q13, d0 //output to q0[0] FILTER_3_IN_16BITS_TO_8BITS q11, q12, q13, d0 //output to q0[0]
// vst1.u8 d18, [r2] //write 8Byte
// vertical filtered into q10/q11 // vertical filtered into q10/q11
FILTER_6TAG_8BITS_TO_16BITS d2, d5, d8,d11, d14, d17,q11, q14, q15 // only 5 avail FILTER_6TAG_8BITS_TO_16BITS d2, d5, d8,d11, d14, d17,q11, q14, q15 // only 5 avail
// horizon filtered // horizon filtered
@@ -1133,13 +1132,13 @@ w16_hv_mc_luma_loop:
// horizon filtered // horizon filtered
UNPACK_2_16BITS_TO_ABC q9, q10, q11, q12, q13 UNPACK_2_16BITS_TO_ABC q9, q10, q11, q12, q13
FILTER_3_IN_16BITS_TO_8BITS q11, q12, q13, d3 //output to d3 FILTER_3_IN_16BITS_TO_8BITS q11, q12, q13, d3 //output to d3
// vst1.u8 d18, [r2]! //write 8Byte
// vertical filtered into q10/q11 // vertical filtered into q10/q11
FILTER_6TAG_8BITS_TO_16BITS d5, d8,d11, d14, d17, d2,q11, q14, q15 // only 5 avail FILTER_6TAG_8BITS_TO_16BITS d5, d8,d11, d14, d17, d2,q11, q14, q15 // only 5 avail
// horizon filtered // horizon filtered
UNPACK_2_16BITS_TO_ABC q10, q11, q9, q12, q13 UNPACK_2_16BITS_TO_ABC q10, q11, q9, q12, q13
FILTER_3_IN_16BITS_TO_8BITS q9, q12, q13, d4 //output to d4 FILTER_3_IN_16BITS_TO_8BITS q9, q12, q13, d4 //output to d4
// vst1.u8 d20, [r2]! //write 8Byte
vst1.u8 {d3, d4}, [r2], r3 //write 16Byte vst1.u8 {d3, d4}, [r2], r3 //write 16Byte
vld1.u8 {d3-d5}, [r0], r1 //read 3rd row vld1.u8 {d3-d5}, [r0], r1 //read 3rd row
@@ -1151,13 +1150,12 @@ w16_hv_mc_luma_loop:
// horizon filtered // horizon filtered
UNPACK_2_16BITS_TO_ABC q9, q10, q11, q12, q13 UNPACK_2_16BITS_TO_ABC q9, q10, q11, q12, q13
FILTER_3_IN_16BITS_TO_8BITS q11, q12, q13, d6 //output to d6 FILTER_3_IN_16BITS_TO_8BITS q11, q12, q13, d6 //output to d6
// vst1.u8 d18, [r2]! //write 8Byte
// vertical filtered into q10/q11 // vertical filtered into q10/q11
FILTER_6TAG_8BITS_TO_16BITS d8,d11, d14, d17, d2, d5,q11, q14, q15 // only 5 avail FILTER_6TAG_8BITS_TO_16BITS d8,d11, d14, d17, d2, d5,q11, q14, q15 // only 5 avail
// horizon filtered // horizon filtered
UNPACK_2_16BITS_TO_ABC q10, q11, q9, q12, q13 UNPACK_2_16BITS_TO_ABC q10, q11, q9, q12, q13
FILTER_3_IN_16BITS_TO_8BITS q9, q12, q13, d7 //output to d7 FILTER_3_IN_16BITS_TO_8BITS q9, q12, q13, d7 //output to d7
// vst1.u8 d20, [r2]! //write 8Byte
vst1.u8 {d6, d7}, [r2], r3 //write 16Byte vst1.u8 {d6, d7}, [r2], r3 //write 16Byte
vld1.u8 {d6-d8}, [r0], r1 //read 4th row vld1.u8 {d6-d8}, [r0], r1 //read 4th row
@@ -1169,13 +1167,11 @@ w16_hv_mc_luma_loop:
// horizon filtered // horizon filtered
UNPACK_2_16BITS_TO_ABC q9, q10, q11, q12, q13 UNPACK_2_16BITS_TO_ABC q9, q10, q11, q12, q13
FILTER_3_IN_16BITS_TO_8BITS q11, q12, q13, d9 //output to d9 FILTER_3_IN_16BITS_TO_8BITS q11, q12, q13, d9 //output to d9
// vst1.u8 d18, [r2]! //write 8Byte
// vertical filtered into q10/q11 // vertical filtered into q10/q11
FILTER_6TAG_8BITS_TO_16BITS d11, d14, d17, d2, d5, d8,q11, q14, q15 // only 5 avail FILTER_6TAG_8BITS_TO_16BITS d11, d14, d17, d2, d5, d8,q11, q14, q15 // only 5 avail
// horizon filtered // horizon filtered
UNPACK_2_16BITS_TO_ABC q10, q11, q9, q12, q13 UNPACK_2_16BITS_TO_ABC q10, q11, q9, q12, q13
FILTER_3_IN_16BITS_TO_8BITS q9, q12, q13, d10 //output to d10 FILTER_3_IN_16BITS_TO_8BITS q9, q12, q13, d10 //output to d10
// vst1.u8 d20, [r2]! //write 8Byte
vst1.u8 {d9, d10}, [r2], r3 //write 16Byte vst1.u8 {d9, d10}, [r2], r3 //write 16Byte
//d12~d17(q6~q8), d0~d8(q0~q3+d8), --> d0~d14 //d12~d17(q6~q8), d0~d8(q0~q3+d8), --> d0~d14
@@ -1195,7 +1191,7 @@ w16_hv_mc_luma_loop:
pop {r4} pop {r4}
WELS_ASM_FUNC_END WELS_ASM_FUNC_END
//uint8_t* src, int32_t src_stride, uint8_t* dst, int32_t dst_stride, int32_t height
WELS_ASM_FUNC_BEGIN McHorVer22WidthEq8_neon WELS_ASM_FUNC_BEGIN McHorVer22WidthEq8_neon
push {r4} push {r4}
ldr r4, [sp, #4] ldr r4, [sp, #4]
@@ -1231,7 +1227,6 @@ w8_hv_mc_luma_loop:
UNPACK_2_16BITS_TO_ABC q6, q7, q11, q12, q13 UNPACK_2_16BITS_TO_ABC q6, q7, q11, q12, q13
FILTER_3_IN_16BITS_TO_8BITS q11, q12, q13, d12 //output to q6[0] FILTER_3_IN_16BITS_TO_8BITS q11, q12, q13, d12 //output to q6[0]
vst1.u8 d12, [r2], r3 //write 8Byte vst1.u8 d12, [r2], r3 //write 8Byte
// add r2, #8
vld1.u8 {q0}, [r0], r1 //read 2nd row vld1.u8 {q0}, [r0], r1 //read 2nd row
//the 2nd row //the 2nd row
@@ -1243,7 +1238,6 @@ w8_hv_mc_luma_loop:
UNPACK_2_16BITS_TO_ABC q6, q7, q11, q12, q13 UNPACK_2_16BITS_TO_ABC q6, q7, q11, q12, q13
FILTER_3_IN_16BITS_TO_8BITS q11, q12, q13, d12 //output to q6[0] FILTER_3_IN_16BITS_TO_8BITS q11, q12, q13, d12 //output to q6[0]
vst1.u8 d12, [r2], r3 //write 8Byte vst1.u8 d12, [r2], r3 //write 8Byte
// add r2, #8
vld1.u8 {q1}, [r0], r1 //read 3rd row vld1.u8 {q1}, [r0], r1 //read 3rd row
//the 3rd row //the 3rd row
@@ -1255,7 +1249,6 @@ w8_hv_mc_luma_loop:
UNPACK_2_16BITS_TO_ABC q6, q7, q11, q12, q13 UNPACK_2_16BITS_TO_ABC q6, q7, q11, q12, q13
FILTER_3_IN_16BITS_TO_8BITS q11, q12, q13, d12 //output to q6[0] FILTER_3_IN_16BITS_TO_8BITS q11, q12, q13, d12 //output to q6[0]
vst1.u8 d12, [r2], r3 //write 8Byte vst1.u8 d12, [r2], r3 //write 8Byte
// add r2, #8
vld1.u8 {q2}, [r0], r1 //read 4th row vld1.u8 {q2}, [r0], r1 //read 4th row
//the 4th row //the 4th row
@@ -1267,7 +1260,6 @@ w8_hv_mc_luma_loop:
UNPACK_2_16BITS_TO_ABC q6, q7, q11, q12, q13 UNPACK_2_16BITS_TO_ABC q6, q7, q11, q12, q13
FILTER_3_IN_16BITS_TO_8BITS q11, q12, q13, d12 //output to q6[0] FILTER_3_IN_16BITS_TO_8BITS q11, q12, q13, d12 //output to q6[0]
vst1.u8 d12, [r2], r3 //write 8Byte vst1.u8 d12, [r2], r3 //write 8Byte
// add r2, #8
//q4~q5, q0~q2, --> q0~q4 //q4~q5, q0~q2, --> q0~q4
vswp q0, q4 vswp q0, q4
@@ -1281,7 +1273,7 @@ w8_hv_mc_luma_loop:
pop {r4} pop {r4}
WELS_ASM_FUNC_END WELS_ASM_FUNC_END
//uint8_t* src, int32_t src_stride, uint8_t* dst, int32_t dst_stride, int32_t height
WELS_ASM_FUNC_BEGIN McHorVer22WidthEq4_neon WELS_ASM_FUNC_BEGIN McHorVer22WidthEq4_neon
push {r4 ,r5, r6} push {r4 ,r5, r6}
ldr r6, [sp, #12] ldr r6, [sp, #12]
@@ -1331,7 +1323,6 @@ w4_hv_mc_luma_loop:
vmov r4 ,r5, d22 vmov r4 ,r5, d22
str r4, [r2], r3 //write 4Byte str r4, [r2], r3 //write 4Byte
str r5, [r2], r3 //write 4Byte str r5, [r2], r3 //write 4Byte
// add r2, #32
//the 3rd&4th row //the 3rd&4th row
vld1.u8 {q0}, [r0], r1 //use 9(4+5), =src[3] vld1.u8 {q0}, [r0], r1 //use 9(4+5), =src[3]
@@ -1356,7 +1347,6 @@ w4_hv_mc_luma_loop:
vmov r4 ,r5, d22 vmov r4 ,r5, d22
str r4, [r2], r3 //write 4Byte str r4, [r2], r3 //write 4Byte
str r5, [r2], r3 //write 4Byte str r5, [r2], r3 //write 4Byte
// add r2, #32
//q4~q6, q0~q1, --> q0~q4 //q4~q6, q0~q1, --> q0~q4
vswp q4, q0 vswp q4, q0
@@ -1372,7 +1362,7 @@ w4_hv_mc_luma_loop:
pop {r4, r5, r6} pop {r4, r5, r6}
WELS_ASM_FUNC_END WELS_ASM_FUNC_END
//uint8_t* src, int32_t src_stride, uint8_t* dst, int32_t dst_stride, int32_t height
WELS_ASM_FUNC_BEGIN McCopyWidthEq16_neon WELS_ASM_FUNC_BEGIN McCopyWidthEq16_neon
push {r4} push {r4}
ldr r4, [sp, #4] ldr r4, [sp, #4]
@@ -1388,7 +1378,7 @@ w16_copy_loop:
pop {r4} pop {r4}
WELS_ASM_FUNC_END WELS_ASM_FUNC_END
//uint8_t* src, int32_t src_stride, uint8_t* dst, int32_t dst_stride, int32_t height
WELS_ASM_FUNC_BEGIN McCopyWidthEq8_neon WELS_ASM_FUNC_BEGIN McCopyWidthEq8_neon
push {r4} push {r4}
ldr r4, [sp, #4] ldr r4, [sp, #4]
@@ -1404,7 +1394,7 @@ w8_copy_loop:
pop {r4} pop {r4}
WELS_ASM_FUNC_END WELS_ASM_FUNC_END
//uint8_t* src, int32_t src_stride, uint8_t* dst, int32_t dst_stride, int32_t height
WELS_ASM_FUNC_BEGIN McCopyWidthEq4_neon WELS_ASM_FUNC_BEGIN McCopyWidthEq4_neon
push {r4, r5, r6} push {r4, r5, r6}
ldr r4, [sp, #12] ldr r4, [sp, #12]
@@ -1421,7 +1411,7 @@ w4_copy_loop:
pop {r4, r5, r6} pop {r4, r5, r6}
WELS_ASM_FUNC_END WELS_ASM_FUNC_END
//uint8_t* dst, int32_t dst_stride, uint8_t* srcA, uint8_t* srcB, int32_t height
WELS_ASM_FUNC_BEGIN PixelAvgWidthEq16_neon WELS_ASM_FUNC_BEGIN PixelAvgWidthEq16_neon
push {r4} push {r4}
ldr r4, [sp, #4] ldr r4, [sp, #4]
@@ -1459,6 +1449,7 @@ w16_pix_avg_loop:
pop {r4} pop {r4}
WELS_ASM_FUNC_END WELS_ASM_FUNC_END
WELS_ASM_FUNC_BEGIN PixelAvgWidthEq8_neon WELS_ASM_FUNC_BEGIN PixelAvgWidthEq8_neon
push {r4, r5} push {r4, r5}
ldr r4, [sp, #8] ldr r4, [sp, #8]
@@ -1469,8 +1460,6 @@ w8_pix_avg_loop:
vld1.u8 {d2}, [r3], r5 vld1.u8 {d2}, [r3], r5
vld1.u8 {d1}, [r2], r5 vld1.u8 {d1}, [r2], r5
vld1.u8 {d3}, [r3], r5 vld1.u8 {d3}, [r3], r5
// add r2, #32
// add r3, #32
AVERAGE_TWO_8BITS d0, d0, d2 AVERAGE_TWO_8BITS d0, d0, d2
AVERAGE_TWO_8BITS d1, d1, d3 AVERAGE_TWO_8BITS d1, d1, d3
@@ -1481,8 +1470,6 @@ w8_pix_avg_loop:
vld1.u8 {d6}, [r3], r5 vld1.u8 {d6}, [r3], r5
vld1.u8 {d5}, [r2], r5 vld1.u8 {d5}, [r2], r5
vld1.u8 {d7}, [r3], r5 vld1.u8 {d7}, [r3], r5
// add r2, #32
// add r3, #32
AVERAGE_TWO_8BITS d4, d4, d6 AVERAGE_TWO_8BITS d4, d4, d6
AVERAGE_TWO_8BITS d5, d5, d7 AVERAGE_TWO_8BITS d5, d5, d7
@@ -1496,7 +1483,7 @@ w8_pix_avg_loop:
pop {r4, r5} pop {r4, r5}
WELS_ASM_FUNC_END WELS_ASM_FUNC_END
//uint8_t* src, int32_t src_stride, uint8_t* dst, int32_t dst_stride, int32_t height
WELS_ASM_FUNC_BEGIN PixelAvgWidthEq4_neon WELS_ASM_FUNC_BEGIN PixelAvgWidthEq4_neon
push {r4-r8} push {r4-r8}
ldr r4, [sp, #20] ldr r4, [sp, #20]
@@ -1524,13 +1511,7 @@ w4_pix_avg_loop:
pop {r4-r8} pop {r4-r8}
WELS_ASM_FUNC_END WELS_ASM_FUNC_END
//uint8_t* src, int32_t src_stride, uint8_t* dst, int32_t dst_stride, int32_t* weights, int32_t height
//cA = (8 - dx) * (8 - dy);
//cB = dx * (8 - dy);
//cC = (8 - dx) * dy;
//cD = dx * dy
WELS_ASM_FUNC_BEGIN McChromaWidthEq8_neon WELS_ASM_FUNC_BEGIN McChromaWidthEq8_neon
push {r4, r5} push {r4, r5}
ldr r4, [sp, #8] ldr r4, [sp, #8]
ldr r5, [sp, #12] ldr r5, [sp, #12]
@@ -1574,7 +1555,7 @@ w8_mc_chroma_loop: // each two pxl row
pop {r4, r5} pop {r4, r5}
WELS_ASM_FUNC_END WELS_ASM_FUNC_END
//uint8_t* src, int32_t src_stride, uint8_t* dst, int32_t dst_stride, int32_t* weights, int32_t height
WELS_ASM_FUNC_BEGIN McChromaWidthEq4_neon WELS_ASM_FUNC_BEGIN McChromaWidthEq4_neon
push {r4, r5, r6} push {r4, r5, r6}