+function x264_pixel_ssd_nv12_core_neon
+ push {r4-r5}
+ ldrd r4, r5, [sp, #8]
+ add r12, r4, #8
+ bic r12, r12, #15
+ vmov.u64 q8, #0
+ vmov.u64 q9, #0
+ sub r1, r1, r12, lsl #1
+ sub r3, r3, r12, lsl #1
+1:
+ subs r12, r4, #16
+ vld2.8 {d0,d1}, [r0]!
+ vld2.8 {d2,d3}, [r2]!
+ vld2.8 {d4,d5}, [r0]!
+ vld2.8 {d6,d7}, [r2]!
+
+ vsubl.u8 q10, d0, d2
+ vsubl.u8 q11, d1, d3
+ vmull.s16 q14, d20, d20
+ vmull.s16 q15, d22, d22
+ vsubl.u8 q12, d4, d6
+ vsubl.u8 q13, d5, d7
+ vmlal.s16 q14, d21, d21
+ vmlal.s16 q15, d23, d23
+
+ blt 4f
+ beq 3f
+2:
+ vmlal.s16 q14, d24, d24
+ vmlal.s16 q15, d26, d26
+ vld2.8 {d0,d1}, [r0]!
+ vld2.8 {d2,d3}, [r2]!
+ vmlal.s16 q14, d25, d25
+ vmlal.s16 q15, d27, d27
+
+ subs r12, r12, #16
+ vsubl.u8 q10, d0, d2
+ vsubl.u8 q11, d1, d3
+ vmlal.s16 q14, d20, d20
+ vmlal.s16 q15, d22, d22
+ vld2.8 {d4,d5}, [r0]!
+ vld2.8 {d6,d7}, [r2]!
+ vmlal.s16 q14, d21, d21
+ vmlal.s16 q15, d23, d23
+ blt 4f
+
+ vsubl.u8 q12, d4, d6
+ vsubl.u8 q13, d5, d7
+ bgt 2b
+3:
+ vmlal.s16 q14, d24, d24
+ vmlal.s16 q15, d26, d26
+ vmlal.s16 q14, d25, d25
+ vmlal.s16 q15, d27, d27
+4:
+ subs r5, r5, #1
+ vaddw.s32 q8, q8, d28
+ vaddw.s32 q9, q9, d30
+ add r0, r0, r1
+ add r2, r2, r3
+ vaddw.s32 q8, q8, d29
+ vaddw.s32 q9, q9, d31
+ bgt 1b
+
+ vadd.u64 d16, d16, d17
+ vadd.u64 d18, d18, d19
+ ldrd r4, r5, [sp, #16]
+ vst1.64 {d16}, [r4]
+ vst1.64 {d18}, [r5]
+
+ pop {r4-r5}
+ bx lr
+endfunc