| Index: source/row_neon64.cc
 | 
| diff --git a/source/row_neon64.cc b/source/row_neon64.cc
 | 
| index ee42af12e37f38eb96684c2fc5795f4a060b30f6..e5f2dc8f396a17a93c0c890c875770fbdec677a0 100644
 | 
| --- a/source/row_neon64.cc
 | 
| +++ b/source/row_neon64.cc
 | 
| @@ -1399,6 +1399,25 @@ void ARGBToYRow_NEON(const uint8* src_argb, uint8* dst_y, int width) {
 | 
|  }
 | 
|  #endif  // HAS_ARGBTOYROW_NEON
 | 
|  
 | 
| +#ifdef HAS_ARGBEXTRACTALPHAROW_NEON
 | 
| +void ARGBExtractAlphaRow_NEON(const uint8* src_argb, uint8* dst_a, int width) {
 | 
| +  asm volatile (
 | 
| +  "1:                                          \n"
 | 
| +    MEMACCESS(0)
 | 
| +    "ld4        {v0.8b,v1.8b,v2.8b,v3.8b}, [%0], #32 \n"  // load row 8 pixels
 | 
| +    "subs       %w2, %w2, #8                   \n"  // 8 processed per loop
 | 
| +    MEMACCESS(1)
 | 
| +    "st1        {v3.8b}, [%1], #8              \n"  // store 8 A's.
 | 
| +    "b.gt       1b                             \n"
 | 
| +  : "+r"(src_argb),   // %0
 | 
| +    "+r"(dst_a),      // %1
 | 
| +    "+r"(width)       // %2
 | 
| +  :
 | 
| +  : "cc", "memory", "v0", "v1", "v2", "v3"  // Clobber List
 | 
| +  );
 | 
| +}
 | 
| +#endif  // HAS_ARGBEXTRACTALPHAROW_NEON
 | 
| +
 | 
|  #ifdef HAS_ARGBTOYJROW_NEON
 | 
|  void ARGBToYJRow_NEON(const uint8* src_argb, uint8* dst_y, int width) {
 | 
|    asm volatile (
 | 
| 
 |