shithub: openh264

Download patch

ref: c0043f7053bdd53d982b529f70240f9af0cf64f7
parent: f1502c26e3b81da17655dd4209e1851061db1849
author: Martin Storsjö <[email protected]>
date: Wed Mar 5 06:55:23 EST 2014

Use the three-operand form of add/sub with shift

When using unified syntax, the two operand form with a shift
isn't allowed.

--- a/codec/common/deblocking_neon.S
+++ b/codec/common/deblocking_neon.S
@@ -910,7 +910,7 @@
     beq      bs_nzc_check_jump0
 
     sub      r6, \arg0, \arg2, lsl #4
-    sub      r6, \arg2, lsl #3
+    sub      r6, r6, \arg2, lsl #3
     add      r6, #12
     vld1.32  d3[1], [r6]
 
--- a/codec/decoder/core/arm/mc_neon.S
+++ b/codec/decoder/core/arm/mc_neon.S
@@ -499,7 +499,7 @@
 	push		{r4}
 	ldr			r4, [sp, #4]
 
-	sub			r0, r1, lsl #1		//src[-2*src_stride]
+	sub			r0, r0, r1, lsl #1		//src[-2*src_stride]
 	pld			[r0]
 	pld			[r0, r1]
 	vmov.u16	q14, #0x0014			// 20
@@ -581,7 +581,7 @@
 	push		{r4}
 	ldr			r4, [sp, #4]
 
-	sub			r0, r1, lsl #1		//src[-2*src_stride]
+	sub			r0, r0, r1, lsl #1		//src[-2*src_stride]
 	pld			[r0]
 	pld			[r0, r1]
 	vmov.u16	q14, #0x0014			// 20
@@ -633,7 +633,7 @@
 
 WELS_ASM_FUNC_BEGIN McHorVer01WidthEq4_neon
 	push		{r4, r5, r6, r7}
-	sub			r0, r1, lsl #1		//src[-2*src_stride]
+	sub			r0, r0, r1, lsl #1		//src[-2*src_stride]
 	pld			[r0]
 	pld			[r0, r1]
 	vmov.u16	q14, #0x0014			// 20
@@ -694,7 +694,7 @@
 	push		{r4}
 	ldr			r4, [sp, #4]
 
-	sub			r0, r1, lsl #1		//src[-2*src_stride]
+	sub			r0, r0, r1, lsl #1		//src[-2*src_stride]
 	pld			[r0]
 	pld			[r0, r1]
 	vmov.u16	q14, #0x0014			// 20
@@ -776,7 +776,7 @@
 	push		{r4}
 	ldr			r4, [sp, #4]
 
-	sub			r0, r1, lsl #1		//src[-2*src_stride]
+	sub			r0, r0, r1, lsl #1		//src[-2*src_stride]
 	pld			[r0]
 	pld			[r0, r1]
 	vmov.u16	q14, #0x0014			// 20
@@ -828,7 +828,7 @@
 
 WELS_ASM_FUNC_BEGIN McHorVer03WidthEq4_neon
 	push		{r4, r5, r6, r7}
-	sub			r0, r1, lsl #1		//src[-2*src_stride]
+	sub			r0, r0, r1, lsl #1		//src[-2*src_stride]
 	pld			[r0]
 	pld			[r0, r1]
 	vmov.u16	q14, #0x0014			// 20
@@ -889,7 +889,7 @@
 	push		{r4}
 	ldr			r4, [sp, #4]
 
-	sub			r0, r1, lsl #1		//src[-2*src_stride]
+	sub			r0, r0, r1, lsl #1		//src[-2*src_stride]
 	pld			[r0]
 	pld			[r0, r1]
 	vmov.u16	q14, #0x0014			// 20
@@ -971,7 +971,7 @@
 	push		{r4}
 	ldr			r4, [sp, #4]
 
-	sub			r0, r1, lsl #1		//src[-2*src_stride]
+	sub			r0, r0, r1, lsl #1		//src[-2*src_stride]
 	pld			[r0]
 	pld			[r0, r1]
 	vmov.u16	q14, #0x0014			// 20
@@ -1023,7 +1023,7 @@
 
 WELS_ASM_FUNC_BEGIN McHorVer02WidthEq4_neon
 	push		{r4, r5, r6, r7}
-	sub			r0, r1, lsl #1		//src[-2*src_stride]
+	sub			r0, r0, r1, lsl #1		//src[-2*src_stride]
 	pld			[r0]
 	pld			[r0, r1]
 	vmov.u16	q14, #0x0014			// 20
@@ -1085,7 +1085,7 @@
 	ldr			r4, [sp, #4]
 
 	sub			r0, #2					//src[-2]
-	sub			r0, r1, lsl #1		//src[-2*src_stride-2]
+	sub			r0, r0, r1, lsl #1		//src[-2*src_stride-2]
 	pld			[r0]
 	pld			[r0, r1]
 
@@ -1197,7 +1197,7 @@
 	ldr			r4, [sp, #4]
 
 	sub			r0, #2				//src[-2]
-	sub			r0, r1, lsl #1	//src[-2*src_stride-2]
+	sub			r0, r0, r1, lsl #1	//src[-2*src_stride-2]
 	pld			[r0]
 	pld			[r0, r1]
 
@@ -1279,7 +1279,7 @@
 	ldr			r6, [sp, #12]
 
 	sub			r0, #2				//src[-2]
-	sub			r0, r1, lsl #1	//src[-2*src_stride-2]
+	sub			r0, r0, r1, lsl #1	//src[-2*src_stride-2]
 	pld			[r0]
 	pld			[r0, r1]
 
--- a/codec/encoder/core/arm/intra_pred_sad_3_opt_neon.S
+++ b/codec/encoder/core/arm/intra_pred_sad_3_opt_neon.S
@@ -272,7 +272,7 @@
 	vpaddl.u16 d16, d16
 	vpaddl.u32 d16, d16
 	vmov.u32   r1, d16[0]
-	add  r1, r6, lsl #1
+	add  r1, r1, r6, lsl #1
 
 	//vadd.u16   d20, d21
 	vrshr.u16  d17, #1
@@ -279,7 +279,7 @@
 	vpaddl.u16 d17, d17
 	vpaddl.u32 d17, d17
 	vmov.u32   r2, d17[0]
-	add  r2, r6, lsl #1
+	add  r2, r2, r6, lsl #1
 
     mov r4, #0
     cmp r1, r0
@@ -362,13 +362,13 @@
 	vpaddl.u16 d22, d22
 	vpaddl.u32 d22, d22
 	vmov.u32   r1, d22[0]
-	add  r1, r6, lsl #1
+	add  r1, r1, r6, lsl #1
 
 	vadd.u16   d20, d21
 	vpaddl.u16 d20, d20
 	vpaddl.u32 d20, d20
 	vmov.u32   r2, d20[0]
-	add  r2, r6, lsl #1
+	add  r2, r2, r6, lsl #1
 
     mov r4, #0
     cmp r1, r0
@@ -506,13 +506,13 @@
 	vpaddl.u16 d22, d22
 	vpaddl.u32 d22, d22
 	vmov.u32   r0, d22[0]
-	add  r0, r6, lsl #1
+	add  r0, r0, r6, lsl #1
 
 	vadd.u16   d20, d21
 	vpaddl.u16 d20, d20
 	vpaddl.u32 d20, d20
 	vmov.u32   r1, d20[0]
-	add  r1, r6, lsl #1
+	add  r1, r1, r6, lsl #1
 
 	vadd.u16   d18, d19
 	vpaddl.u16 d18, d18
@@ -644,13 +644,13 @@
 	vpaddl.u16 d11, d11
 	vpaddl.u32 d11, d11
 	vmov.u32   lr, d11[0]
-	add  lr, r6, lsl #1
+	add  lr, lr, r6, lsl #1
 
 	vrshr.u16  d10, #1
 	vpaddl.u16 d10, d10
 	vpaddl.u32 d10, d10
 	vmov.u32   r3, d10[0]
-	add  r3, r6, lsl #1
+	add  r3, r3, r6, lsl #1
 
 	vrshr.u16  d28, #1
 	vpaddl.u16 d28, d28
--- a/codec/encoder/core/arm/mc_neon.S
+++ b/codec/encoder/core/arm/mc_neon.S
@@ -612,7 +612,7 @@
 	push		{r4}
 	ldr			r4, [sp, #4]
 
-	sub			r0, r1, lsl #1		//src[-2*src_stride]
+	sub			r0, r0, r1, lsl #1		//src[-2*src_stride]
 	pld			[r0]
 	pld			[r0, r1]
 	vmov.u16	q14, #0x0014			// 20
@@ -694,7 +694,7 @@
 	push		{r4}
 	ldr			r4, [sp, #4]
 
-	sub			r0, r1, lsl #1		//src[-2*src_stride]
+	sub			r0, r0, r1, lsl #1		//src[-2*src_stride]
 	pld			[r0]
 	pld			[r0, r1]
 	vmov.u16	q14, #0x0014			// 20
@@ -746,7 +746,7 @@
 
 WELS_ASM_FUNC_BEGIN enc_mc_luma_w4_xy_01_neon
 	push		{r4, r5, r6, r7}
-	sub			r0, r1, lsl #1		//src[-2*src_stride]
+	sub			r0, r0, r1, lsl #1		//src[-2*src_stride]
 	pld			[r0]
 	pld			[r0, r1]
 	vmov.u16	q14, #0x0014			// 20
@@ -806,7 +806,7 @@
 	push		{r4}
 	ldr			r4, [sp, #4]
 
-	sub			r0, r1, lsl #1		//src[-2*src_stride]
+	sub			r0, r0, r1, lsl #1		//src[-2*src_stride]
 	pld			[r0]
 	pld			[r0, r1]
 	vmov.u16	q14, #0x0014			// 20
@@ -888,7 +888,7 @@
 	push		{r4}
 	ldr			r4, [sp, #4]
 
-	sub			r0, r1, lsl #1		//src[-2*src_stride]
+	sub			r0, r0, r1, lsl #1		//src[-2*src_stride]
 	pld			[r0]
 	pld			[r0, r1]
 	vmov.u16	q14, #0x0014			// 20
@@ -939,7 +939,7 @@
 
     WELS_ASM_FUNC_BEGIN enc_mc_luma_w4_xy_03_neon
 	push		{r4, r5, r6, r7}
-	sub			r0, r1, lsl #1		//src[-2*src_stride]
+	sub			r0, r0, r1, lsl #1		//src[-2*src_stride]
 	pld			[r0]
 	pld			[r0, r1]
 	vmov.u16	q14, #0x0014			// 20
@@ -999,7 +999,7 @@
 	push		{r4}
 	ldr			r4, [sp, #4]
 
-	sub			r0, r1, lsl #1		//src[-2*src_stride]
+	sub			r0, r0, r1, lsl #1		//src[-2*src_stride]
 	pld			[r0]
 	pld			[r0, r1]
 	vmov.u16	q14, #0x0014			// 20
@@ -1080,7 +1080,7 @@
 	push		{r4}
 	ldr			r4, [sp, #4]
 
-	sub			r0, r1, lsl #1		//src[-2*src_stride]
+	sub			r0, r0, r1, lsl #1		//src[-2*src_stride]
 	pld			[r0]
 	pld			[r0, r1]
 	vmov.u16	q14, #0x0014			// 20
@@ -1168,7 +1168,7 @@
 	push		{r4}
 	ldr			r4, [sp, #4]
 
-	sub			r0, r1, lsl #1		//src[-2*src_stride]
+	sub			r0, r0, r1, lsl #1		//src[-2*src_stride]
 	pld			[r0]
 	pld			[r0, r1]
 	vmov.u16	q14, #0x0014			// 20
@@ -1223,7 +1223,7 @@
 
 WELS_ASM_FUNC_BEGIN enc_mc_luma_w4_v_neon
 	push		{r4, r5, r6, r7}
-	sub			r0, r1, lsl #1		//src[-2*src_stride]
+	sub			r0, r0, r1, lsl #1		//src[-2*src_stride]
 	pld			[r0]
 	pld			[r0, r1]
 	vmov.u16	q14, #0x0014			// 20
@@ -1285,7 +1285,7 @@
 	ldr			r4, [sp, #4]
 
 	sub			r0, #2					//src[-2]
-	sub			r0, r1, lsl #1		//src[-2*src_stride-2]
+	sub			r0, r0, r1, lsl #1		//src[-2*src_stride-2]
 	pld			[r0]
 	pld			[r0, r1]
 
@@ -1393,7 +1393,7 @@
 	ldr			r4, [sp, #4]
 
 	sub			r0, #2					//src[-2]
-	sub			r0, r1, lsl #1		//src[-2*src_stride-2]
+	sub			r0, r0, r1, lsl #1		//src[-2*src_stride-2]
 	pld			[r0]
 	pld			[r0, r1]
 
@@ -1526,7 +1526,7 @@
 	ldr			r4, [sp, #4]
 
 	sub			r0, #2				//src[-2]
-	sub			r0, r1, lsl #1	//src[-2*src_stride-2]
+	sub			r0, r0, r1, lsl #1	//src[-2*src_stride-2]
 	pld			[r0]
 	pld			[r0, r1]
 
@@ -1628,7 +1628,7 @@
 	ldr			r6, [sp, #12]
 
 	sub			r0, #2				//src[-2]
-	sub			r0, r1, lsl #1	//src[-2*src_stride-2]
+	sub			r0, r0, r1, lsl #1	//src[-2*src_stride-2]
 	pld			[r0]
 	pld			[r0, r1]
 
--- a/codec/processing/src/arm/down_sample_neon.S
+++ b/codec/processing/src/arm/down_sample_neon.S
@@ -75,7 +75,7 @@
 
 	cmp	lr,	r4
 	movcs	lr,	#0
-	addcs	r6,	r3,	lsl	#1
+	addcs	r6,	r6,	r3,	lsl	#1
 	movcs	r2,	r6
 	addcs	r7,	r2,	r3
 	addcs	r8,	r1