History

Add asm code for NoneZeroCount and refine related code

zhiliang wang committed 11 years ago

Commit 01b74ea1 parent 7d5e88f12 files · +56 −91Browse files

Unified · Split

12 files
  1. codec/common/arm/deblocking_neon.S +6 −11
  2. codec/common/arm64/deblocking_aarch64_neon.S +5 −9
  3. codec/common/inc/deblocking_common.h +5 −0
  4. codec/common/src/deblocking_common.cpp +7 −0
  5. codec/common/x86/deblock.asm +11 −0
  6. codec/decoder/core/arm/block_add_neon.S +0 −12
  7. codec/decoder/core/arm64/block_add_aarch64_neon.S +0 −14
  8. codec/decoder/core/inc/decode_slice.h +0 −4
  9. codec/decoder/core/src/decode_slice.cpp +6 −24
  10. codec/encoder/core/inc/deblocking.h +0 −3
  11. codec/encoder/core/src/deblocking.cpp +5 −7
  12. test/decoder/DecUT_IdctResAddPred.cpp +11 −7
codec/common/arm/deblocking_neon.S+6−11
@@ -834,17 +834,12 @@ WELS_ASM_FUNC_END · 833 unmodified lines
834 834
835 835
836WELS_ASM_FUNC_BEGIN WelsNonZeroCount_neon836WELS_ASM_FUNC_BEGIN WelsNonZeroCount_neon
837 837 mov r1, #1
838 vld1.64 {d0-d2}, [r0]838 vdup.8 q2, r1
839 839 vld1.64 {d0,d1,d2}, [r0]
840 vceq.s8 q0, q0, #0840 vmin.s8 q0, q0, q2
841 vceq.s8 d2, d2, #0841 vmin.s8 d2, d2, d4
842 vmvn q0, q0842 vst1.64 {d0,d1,d2}, [r0]
843 vmvn d2, d2
844 vabs.s8 q0, q0
845 vabs.s8 d2, d2
846
847 vst1.64 {d0-d2}, [r0]
848WELS_ASM_FUNC_END843WELS_ASM_FUNC_END
849 844
850#ifdef __APPLE__845#ifdef __APPLE__
codec/common/arm64/deblocking_aarch64_neon.S+5−9
@@ -553,16 +553,12 @@ bs_mv_check_jump1: · 552 unmodified lines
553#endif553#endif
554 554
555WELS_ASM_AARCH64_FUNC_BEGIN WelsNonZeroCount_AArch64_neon555WELS_ASM_AARCH64_FUNC_BEGIN WelsNonZeroCount_AArch64_neon
556 mov w1, #1
557 dup v3.8b, w1
556 ld1 {v0.8b, v1.8b, v2.8b}, [x0]558 ld1 {v0.8b, v1.8b, v2.8b}, [x0]
557 ins v0.d[1], v1.d[0]559 umin v0.8b, v0.8b, v3.8b
558 uzp1 v0.2d, v0.2d, v1.2d560 umin v1.8b, v1.8b, v3.8b
559 cmeq v0.16b, v0.16b, #0561 umin v2.8b, v2.8b, v3.8b
560 cmeq v2.8b, v2.8b, #0
561 mvn v0.16b, v0.16b
562 mvn v2.8b, v2.8b
563 abs v0.16b, v0.16b
564 abs v2.8b, v2.8b
565 ins v1.d[0], v0.d[1]
566 st1 {v0.8b, v1.8b, v2.8b}, [x0]562 st1 {v0.8b, v1.8b, v2.8b}, [x0]
567WELS_ASM_AARCH64_FUNC_END563WELS_ASM_AARCH64_FUNC_END
568 564
codec/common/inc/deblocking_common.h+5−0
@@ -15,6 +15,8 @@ void DeblockChromaLt4H_c (uint8_t* pPixCb, uint8_t* pPixCr, int32_t iStride, int · 14 unmodified lines
15 int8_t* pTc);15 int8_t* pTc);
16void DeblockChromaEq4H_c (uint8_t* pPixCb, uint8_t* pPixCr, int32_t iStride, int32_t iAlpha, int32_t iBeta);16void DeblockChromaEq4H_c (uint8_t* pPixCb, uint8_t* pPixCr, int32_t iStride, int32_t iAlpha, int32_t iBeta);
17 17
18void WelsNonZeroCount_c (int8_t* pNonZeroCount);
19
18#if defined(__cplusplus)20#if defined(__cplusplus)
19extern "C" {21extern "C" {
20#endif//__cplusplus22#endif//__cplusplus
@@ -32,6 +34,7 @@ void DeblockChromaLt4V_ssse3 (uint8_t* pPixCb, uint8_t* pPixCr, int32_t iStride, · 11 unmodified lines
32void DeblockChromaEq4H_ssse3 (uint8_t* pPixCb, uint8_t* pPixCr, int32_t iStride, int32_t iAlpha, int32_t iBeta);34void DeblockChromaEq4H_ssse3 (uint8_t* pPixCb, uint8_t* pPixCr, int32_t iStride, int32_t iAlpha, int32_t iBeta);
33void DeblockChromaLt4H_ssse3 (uint8_t* pPixCb, uint8_t* pPixCr, int32_t iStride, int32_t iAlpha, int32_t iBeta,35void DeblockChromaLt4H_ssse3 (uint8_t* pPixCb, uint8_t* pPixCr, int32_t iStride, int32_t iAlpha, int32_t iBeta,
34 int8_t* pTC);36 int8_t* pTC);
37void WelsNonZeroCount_sse2 (int8_t* pNonZeroCount);
35#endif38#endif
36 39
37#if defined(HAVE_NEON)40#if defined(HAVE_NEON)
@@ -48,6 +51,7 @@ void DeblockChromaEq4V_neon (uint8_t* pPixCb, uint8_t* pPixCr, int32_t iStride, · 10 unmodified lines
48void DeblockChromaLt4H_neon (uint8_t* pPixCb, uint8_t* pPixCr, int32_t iStride, int32_t iAlpha, int32_t iBeta,51void DeblockChromaLt4H_neon (uint8_t* pPixCb, uint8_t* pPixCr, int32_t iStride, int32_t iAlpha, int32_t iBeta,
49 int8_t* pTC);52 int8_t* pTC);
50void DeblockChromaEq4H_neon (uint8_t* pPixCb, uint8_t* pPixCr, int32_t iStride, int32_t iAlpha, int32_t iBeta);53void DeblockChromaEq4H_neon (uint8_t* pPixCb, uint8_t* pPixCr, int32_t iStride, int32_t iAlpha, int32_t iBeta);
54void WelsNonZeroCount_neon (int8_t* pNonZeroCount);
51#endif55#endif
52 56
53#if defined(HAVE_NEON_AARCH64)57#if defined(HAVE_NEON_AARCH64)
@@ -61,6 +65,7 @@ void DeblockChromaEq4V_AArch64_neon (uint8_t* pPixCb, uint8_t* pPixCr, int32_t i · 7 unmodified lines
61void DeblockChromaLt4H_AArch64_neon (uint8_t* pPixCb, uint8_t* pPixCr, int32_t iStride, int32_t iAlpha, int32_t iBeta,65void DeblockChromaLt4H_AArch64_neon (uint8_t* pPixCb, uint8_t* pPixCr, int32_t iStride, int32_t iAlpha, int32_t iBeta,
62 int8_t* pTC);66 int8_t* pTC);
63void DeblockChromaEq4H_AArch64_neon (uint8_t* pPixCb, uint8_t* pPixCr, int32_t iStride, int32_t iAlpha, int32_t iBeta);67void DeblockChromaEq4H_AArch64_neon (uint8_t* pPixCb, uint8_t* pPixCr, int32_t iStride, int32_t iAlpha, int32_t iBeta);
68void WelsNonZeroCount_AArch64_neon (int8_t* pNonZeroCount);
64#endif69#endif
65#if defined(__cplusplus)70#if defined(__cplusplus)
66}71}
codec/common/src/deblocking_common.cpp+7−0
@@ -180,6 +180,13 @@ void DeblockChromaEq4H_c (uint8_t* pPixCb, uint8_t* pPixCr, int32_t iStride, int · 179 unmodified lines
180 DeblockChromaEq4_c (pPixCb, pPixCr, 1, iStride, iAlpha, iBeta);180 DeblockChromaEq4_c (pPixCb, pPixCr, 1, iStride, iAlpha, iBeta);
181}181}
182 182
183void WelsNonZeroCount_c (int8_t* pNonZeroCount) {
184 int32_t i;
185 for (i = 0; i < 24; i++) {
186 pNonZeroCount[i] = !!pNonZeroCount[i];
187 }
188}
189
183#ifdef X86_ASM190#ifdef X86_ASM
184extern "C" {191extern "C" {
185 void DeblockLumaLt4H_ssse3 (uint8_t* pPixY, int32_t iStride, int32_t iAlpha, int32_t iBeta, int8_t* pTc) {192 void DeblockLumaLt4H_ssse3 (uint8_t* pPixY, int32_t iStride, int32_t iAlpha, int32_t iBeta, int8_t* pTc) {
codec/common/x86/deblock.asm+11−0
@@ -5276,3 +5276,14 @@ WELS_EXTERN DeblockLumaTransposeV2H_sse2 · 5275 unmodified lines
5276 pop r35276 pop r3
5277 ret5277 ret
5278 5278
5279WELS_EXTERN WelsNonZeroCount_sse2
5280 %assign push_num 0
5281 LOAD_1_PARA
5282 movdqu xmm0, [r0]
5283 movq xmm1, [r0+16]
5284 WELS_DB1 xmm2
5285 pminub xmm0, xmm2
5286 pminub xmm1, xmm2
5287 movdqu [r0], xmm0
5288 movq [r0+16], xmm1
5289 ret
codec/decoder/core/arm/block_add_neon.S+0−12
@@ -99,18 +99,6 @@ · 98 unmodified lines
99// }99// }
100.endm100.endm
101#endif101#endif
102// r0 int8_t* non_zero_count,
103WELS_ASM_FUNC_BEGIN SetNonZeroCount_neon
104 vld1.64 {d0-d2}, [r0]
105 vceq.s8 q0, q0, #0
106 vceq.s8 d2, d2, #0
107 vmvn q0, q0
108 vmvn d2, d2
109 vabs.s8 q0, q0
110 vabs.s8 d2, d2
111 vst1.64 {d0-d2}, [r0]
112WELS_ASM_FUNC_END
113
114 102
115// uint8_t *pred, const int32_t stride, int16_t *rs103// uint8_t *pred, const int32_t stride, int16_t *rs
116WELS_ASM_FUNC_BEGIN IdctResAddPred_neon104WELS_ASM_FUNC_BEGIN IdctResAddPred_neon
codec/decoder/core/arm64/block_add_aarch64_neon.S+0−14
@@ -100,20 +100,6 @@ · 99 unmodified lines
100// }100// }
101.endm101.endm
102#endif102#endif
103// x0 int8_t* non_zero_count,
104WELS_ASM_AARCH64_FUNC_BEGIN SetNonZeroCount_AArch64_neon
105 mov x1, x0
106 ld1 {v0.16b}, [x1], #16
107 ld1 {v1.8b}, [x1]
108 cmeq v0.16b, v0.16b, #0
109 cmeq v1.8b, v1.8b, #0
110 mvn v0.16b, v0.16b
111 mvn v1.8b, v1.8b
112 abs v0.16b, v0.16b
113 abs v1.8b, v1.8b
114 st1 {v0.16b}, [x0], #16
115 st1 {v1.8b}, [x0]
116WELS_ASM_AARCH64_FUNC_END
117 103
118// uint8_t *pred, const int32_t stride, int16_t *rs104// uint8_t *pred, const int32_t stride, int16_t *rs
119WELS_ASM_AARCH64_FUNC_BEGIN IdctResAddPred_AArch64_neon105WELS_ASM_AARCH64_FUNC_BEGIN IdctResAddPred_AArch64_neon
codec/decoder/core/inc/decode_slice.h+0−4
@@ -73,13 +73,11 @@ void WelsBlockZero8x8_sse2(int16_t * block, int32_t stride); · 72 unmodified lines
73#endif73#endif
74 74
75#if defined(HAVE_NEON)75#if defined(HAVE_NEON)
76void SetNonZeroCount_neon (int8_t* pNonZeroCount);
77void WelsBlockZero16x16_neon(int16_t * block, int32_t stride);76void WelsBlockZero16x16_neon(int16_t * block, int32_t stride);
78void WelsBlockZero8x8_neon(int16_t * block, int32_t stride);77void WelsBlockZero8x8_neon(int16_t * block, int32_t stride);
79#endif78#endif
80 79
81#if defined(HAVE_NEON_AARCH64)80#if defined(HAVE_NEON_AARCH64)
82void SetNonZeroCount_AArch64_neon (int8_t* pNonZeroCount);
83void WelsBlockZero16x16_AArch64_neon(int16_t * block, int32_t stride);81void WelsBlockZero16x16_AArch64_neon(int16_t * block, int32_t stride);
84void WelsBlockZero8x8_AArch64_neon(int16_t * block, int32_t stride);82void WelsBlockZero8x8_AArch64_neon(int16_t * block, int32_t stride);
85#endif83#endif
@@ -87,8 +85,6 @@ void WelsBlockZero8x8_AArch64_neon(int16_t * block, int32_t stride); · 1 unmodified line
87}85}
88#endif//__cplusplus86#endif//__cplusplus
89 87
90void SetNonZeroCount_c (int8_t* pNonZeroCount);
91
92void WelsBlockFuncInit (SBlockFunc* pFunc, int32_t iCpu);88void WelsBlockFuncInit (SBlockFunc* pFunc, int32_t iCpu);
93void WelsBlockZero16x16_c(int16_t * block, int32_t stride);89void WelsBlockZero16x16_c(int16_t * block, int32_t stride);
94void WelsBlockZero8x8_c(int16_t * block, int32_t stride);90void WelsBlockZero8x8_c(int16_t * block, int32_t stride);
codec/decoder/core/src/decode_slice.cpp+6−24
@@ -1690,25 +1690,13 @@ int32_t WelsDecodeMbCavlcPSlice (PWelsDecoderContext pCtx, PNalUnit pNalCur, uin · 1689 unmodified lines
1690}1690}
1691 1691
1692void WelsBlockFuncInit (SBlockFunc* pFunc, int32_t iCpu) {1692void WelsBlockFuncInit (SBlockFunc* pFunc, int32_t iCpu) {
1693 pFunc->pWelsSetNonZeroCountFunc = SetNonZeroCount_c;1693 pFunc->pWelsSetNonZeroCountFunc = WelsNonZeroCount_c;
1694
1695#ifdef HAVE_NEON
1696 if (iCpu & WELS_CPU_NEON) {
1697 pFunc->pWelsSetNonZeroCountFunc = SetNonZeroCount_neon;
1698 }
1699#endif
1700
1701#ifdef HAVE_NEON_AARCH64
1702 if (iCpu & WELS_CPU_NEON) {
1703 pFunc->pWelsSetNonZeroCountFunc = SetNonZeroCount_AArch64_neon;
1704 }
1705#endif
1706
1707 pFunc->pWelsBlockZero16x16Func = WelsBlockZero16x16_c;1694 pFunc->pWelsBlockZero16x16Func = WelsBlockZero16x16_c;
1708 pFunc->pWelsBlockZero8x8Func = WelsBlockZero8x8_c;1695 pFunc->pWelsBlockZero8x8Func = WelsBlockZero8x8_c;
1709 //TO DO add neon and X861696
1710#ifdef HAVE_NEON1697#ifdef HAVE_NEON
1711 if (iCpu & WELS_CPU_NEON) {1698 if (iCpu & WELS_CPU_NEON) {
1699 pFunc->pWelsSetNonZeroCountFunc = WelsNonZeroCount_neon;
1712 pFunc->pWelsBlockZero16x16Func = WelsBlockZero16x16_neon;1700 pFunc->pWelsBlockZero16x16Func = WelsBlockZero16x16_neon;
1713 pFunc->pWelsBlockZero8x8Func = WelsBlockZero8x8_neon;1701 pFunc->pWelsBlockZero8x8Func = WelsBlockZero8x8_neon;
1714 }1702 }
@@ -1716,6 +1704,7 @@ void WelsBlockFuncInit (SBlockFunc* pFunc, int32_t iCpu) { · 1 unmodified line
1716 1704
1717#ifdef HAVE_NEON_AARCH641705#ifdef HAVE_NEON_AARCH64
1718 if (iCpu & WELS_CPU_NEON) {1706 if (iCpu & WELS_CPU_NEON) {
1707 pFunc->pWelsSetNonZeroCountFunc = WelsNonZeroCount_AArch64_neon;
1719 pFunc->pWelsBlockZero16x16Func = WelsBlockZero16x16_AArch64_neon;1708 pFunc->pWelsBlockZero16x16Func = WelsBlockZero16x16_AArch64_neon;
1720 pFunc->pWelsBlockZero8x8Func = WelsBlockZero8x8_AArch64_neon;1709 pFunc->pWelsBlockZero8x8Func = WelsBlockZero8x8_AArch64_neon;
1721 }1710 }
@@ -1723,6 +1712,7 @@ void WelsBlockFuncInit (SBlockFunc* pFunc, int32_t iCpu) { · 1 unmodified line
1723 1712
1724#if defined(X86_ASM)1713#if defined(X86_ASM)
1725 if (iCpu & WELS_CPU_SSE2) {1714 if (iCpu & WELS_CPU_SSE2) {
1715 pFunc->pWelsSetNonZeroCountFunc = WelsNonZeroCount_sse2;
1726 pFunc->pWelsBlockZero16x16Func = WelsBlockZero16x16_sse2;1716 pFunc->pWelsBlockZero16x16Func = WelsBlockZero16x16_sse2;
1727 pFunc->pWelsBlockZero8x8Func = WelsBlockZero8x8_sse2;1717 pFunc->pWelsBlockZero8x8Func = WelsBlockZero8x8_sse2;
1728 }1718 }
@@ -1730,14 +1720,6 @@ void WelsBlockFuncInit (SBlockFunc* pFunc, int32_t iCpu) { · 1 unmodified line
1730 1720
1731}1721}
1732 1722
1733void SetNonZeroCount_c (int8_t* pNonZeroCount) {
1734 int32_t i;
1735
1736 for (i = 0; i < 24; i++) {
1737 pNonZeroCount[i] = !!pNonZeroCount[i];
1738 }
1739}
1740
1741void WelsBlockInit (int16_t* pBlock, int iW, int iH, int iStride, uint8_t uiVal) {1723void WelsBlockInit (int16_t* pBlock, int iW, int iH, int iStride, uint8_t uiVal) {
1742 int32_t i;1724 int32_t i;
1743 int16_t* pDst = pBlock;1725 int16_t* pDst = pBlock;
codec/encoder/core/inc/deblocking.h+0−3
@@ -65,12 +65,10 @@ typedef struct TagDeblockingFilter { · 64 unmodified lines
65extern "C" {65extern "C" {
66#endif//__cplusplus66#endif//__cplusplus
67#if defined(HAVE_NEON)67#if defined(HAVE_NEON)
68void WelsNonZeroCount_neon (int8_t* pNonZeroCount);
69void DeblockingBSCalcEnc_neon (int8_t* pNzc, SMVUnitXY* pMv, int32_t iBoundryFlag, int32_t iMbStride,68void DeblockingBSCalcEnc_neon (int8_t* pNzc, SMVUnitXY* pMv, int32_t iBoundryFlag, int32_t iMbStride,
70 uint8_t (*pBS)[4][4]);69 uint8_t (*pBS)[4][4]);
71#endif70#endif
72#if defined(HAVE_NEON_AARCH64)71#if defined(HAVE_NEON_AARCH64)
73void WelsNonZeroCount_AArch64_neon (int8_t* pNonZeroCount);
74void DeblockingBSCalcEnc_AArch64_neon (int8_t* pNzc, SMVUnitXY* pMv, int32_t iBoundryFlag, int32_t iMbStride,72void DeblockingBSCalcEnc_AArch64_neon (int8_t* pNzc, SMVUnitXY* pMv, int32_t iBoundryFlag, int32_t iMbStride,
75 uint8_t (*pBS)[4][4]);73 uint8_t (*pBS)[4][4]);
76#endif74#endif
@@ -79,7 +77,6 @@ void DeblockingBSCalcEnc_AArch64_neon (int8_t* pNzc, SMVUnitXY* pMv, int32_t iBo · 2 unmodified lines
79#endif//__cplusplus77#endif//__cplusplus
80void DeblockingInit (DeblockingFunc* pFunc, int32_t iCpu);78void DeblockingInit (DeblockingFunc* pFunc, int32_t iCpu);
81 79
82void WelsNonZeroCount_c (int8_t* pNonZeroCount);
83void WelsBlockFuncInit (PSetNoneZeroCountZeroFunc* pfSetNZCZero, int32_t iCpu);80void WelsBlockFuncInit (PSetNoneZeroCountZeroFunc* pfSetNZCZero, int32_t iCpu);
84 81
85void PerformDeblockingFilter (sWelsEncCtx* pEnc);82void PerformDeblockingFilter (sWelsEncCtx* pEnc);
codec/encoder/core/src/deblocking.cpp+5−7
@@ -774,13 +774,6 @@ void PerformDeblockingFilter (sWelsEncCtx* pEnc) { · 773 unmodified lines
774 }774 }
775}775}
776 776
777void WelsNonZeroCount_c (int8_t* pNonZeroCount) {
778 int32_t i;
779
780 for (i = 0; i < 24; i++) {
781 pNonZeroCount[i] = !!pNonZeroCount[i];
782 }
783}
784void WelsBlockFuncInit (PSetNoneZeroCountZeroFunc* pfSetNZCZero, int32_t iCpu) {777void WelsBlockFuncInit (PSetNoneZeroCountZeroFunc* pfSetNZCZero, int32_t iCpu) {
785 *pfSetNZCZero = WelsNonZeroCount_c;778 *pfSetNZCZero = WelsNonZeroCount_c;
786#ifdef HAVE_NEON779#ifdef HAVE_NEON
@@ -793,6 +786,11 @@ void WelsBlockFuncInit (PSetNoneZeroCountZeroFunc* pfSetNZCZero, int32_t iCpu) · 6 unmodified lines
793 *pfSetNZCZero = WelsNonZeroCount_AArch64_neon;786 *pfSetNZCZero = WelsNonZeroCount_AArch64_neon;
794 }787 }
795#endif788#endif
789#if defined(X86_ASM)
790 if (iCpu & WELS_CPU_SSE2) {
791 *pfSetNZCZero = WelsNonZeroCount_sse2;
792 }
793#endif
796}794}
797 795
798void DeblockingInit (DeblockingFunc* pFunc, int32_t iCpu) {796void DeblockingInit (DeblockingFunc* pFunc, int32_t iCpu) {
test/decoder/DecUT_IdctResAddPred.cpp+11−7
@@ -1,7 +1,7 @@
1#include <gtest/gtest.h>1#include <gtest/gtest.h>
2#include "macros.h"2#include "macros.h"
3#include "decode_mb_aux.h"3#include "decode_mb_aux.h"
4#include "../../codec/decoder/core/src/decode_slice.cpp"4#include "deblocking.h"
5using namespace WelsDec;5using namespace WelsDec;
6void IdctResAddPred_ref (uint8_t* pPred, const int32_t kiStride, int16_t* pRs) {6void IdctResAddPred_ref (uint8_t* pPred, const int32_t kiStride, int16_t* pRs) {
7 int16_t iSrc[16];7 int16_t iSrc[16];
@@ -98,7 +98,7 @@ TEST(DecoderDecodeMbAux, method) \ · 90 unmodified lines
98{\98{\
99 int8_t iNonZeroCount[2][24];\99 int8_t iNonZeroCount[2][24];\
100 for(int32_t i = 0; i < 24; i++) {\100 for(int32_t i = 0; i < 24; i++) {\
101 iNonZeroCount[0][i] = iNonZeroCount[1][i] = (rand() % 256)-128;\101 iNonZeroCount[0][i] = iNonZeroCount[1][i] = (rand() % 25);\
102 }\102 }\
103 method(iNonZeroCount[0]);\103 method(iNonZeroCount[0]);\
104 SetNonZeroCount_ref(iNonZeroCount[1]);\104 SetNonZeroCount_ref(iNonZeroCount[1]);\
@@ -106,7 +106,7 @@ TEST(DecoderDecodeMbAux, method) \ · 1 unmodified line
106 ASSERT_EQ (iNonZeroCount[0][i], iNonZeroCount[1][i]);\106 ASSERT_EQ (iNonZeroCount[0][i], iNonZeroCount[1][i]);\
107 }\107 }\
108 for(int32_t i =0; i<24; i++) {\108 for(int32_t i =0; i<24; i++) {\
109 iNonZeroCount[0][i] = iNonZeroCount[1][i] = -128;\109 iNonZeroCount[0][i] = iNonZeroCount[1][i] = 0;\
110 }\110 }\
111 method(iNonZeroCount[0]);\111 method(iNonZeroCount[0]);\
112 SetNonZeroCount_ref(iNonZeroCount[1]);\112 SetNonZeroCount_ref(iNonZeroCount[1]);\
@@ -114,7 +114,7 @@ TEST(DecoderDecodeMbAux, method) \ · 1 unmodified line
114 ASSERT_EQ (iNonZeroCount[0][i], iNonZeroCount[1][i]);\114 ASSERT_EQ (iNonZeroCount[0][i], iNonZeroCount[1][i]);\
115 }\115 }\
116 for(int32_t i =0; i<24; i++) {\116 for(int32_t i =0; i<24; i++) {\
117 iNonZeroCount[0][i] = iNonZeroCount[1][i] = 127;\117 iNonZeroCount[0][i] = iNonZeroCount[1][i] = 16;\
118 }\118 }\
119 method(iNonZeroCount[0]);\119 method(iNonZeroCount[0]);\
120 SetNonZeroCount_ref(iNonZeroCount[1]);\120 SetNonZeroCount_ref(iNonZeroCount[1]);\
@@ -123,12 +123,16 @@ TEST(DecoderDecodeMbAux, method) \ · 2 unmodified lines
123 }\123 }\
124}124}
125 125
126GENERATE_SETNONZEROCOUNT (SetNonZeroCount_c)126GENERATE_SETNONZEROCOUNT (WelsNonZeroCount_c)
127
128#if defined(X86_ASM)
129GENERATE_SETNONZEROCOUNT (WelsNonZeroCount_sse2)
130#endif
127 131
128#if defined(HAVE_NEON)132#if defined(HAVE_NEON)
129GENERATE_SETNONZEROCOUNT (SetNonZeroCount_neon)133GENERATE_SETNONZEROCOUNT (WelsNonZeroCount_neon)
130#endif134#endif
131 135
132#if defined(HAVE_NEON_AARCH64)136#if defined(HAVE_NEON_AARCH64)
133GENERATE_SETNONZEROCOUNT (SetNonZeroCount_AArch64_neon)137GENERATE_SETNONZEROCOUNT (WelsNonZeroCount_AArch64_neon)
134#endif138#endif

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t