Re-enable av1_filter_intra_predictor_neon for Armv7

Use load_unaligned_u8_4x1 instead of load_u8_4x1 for loading elements
from the input buffer, since the latter causes SIGBUS on Armv7 systems
with load alignment checks enabled.

This reverts commit 110978ffa5ef0520406f7f922dbea300488aa468.

Bug: aomedia:349436249
Change-Id: I9697a3fb222f96fa143e2e19b933a0ee12603088
diff --git a/av1/common/arm/reconintra_neon.c b/av1/common/arm/reconintra_neon.c
index 81eb224..dc0cb17 100644
--- a/av1/common/arm/reconintra_neon.c
+++ b/av1/common/arm/reconintra_neon.c
@@ -21,9 +21,6 @@
 
 #define MAX_UPSAMPLE_SZ 16
 
-// TODO(aomedia:349436249): enable for armv7 after SIGBUS is fixed.
-#if AOM_ARCH_AARCH64
-
 // These kernels are a transposed version of those defined in reconintra.c,
 // with the absolute value of the negatives taken in the top row.
 DECLARE_ALIGNED(16, const uint8_t,
@@ -113,7 +110,7 @@
       uint8x8_t s6 = vld1_dup_u8(&buffer[r + 1][c - 1]);
 
       do {
-        uint8x8_t s1234 = load_u8_4x1(&buffer[r - 1][c - 1] + 1);
+        uint8x8_t s1234 = load_unaligned_u8_4x1(&buffer[r - 1][c - 1] + 1);
         uint8x8_t s1 = vdup_lane_u8(s1234, 0);
         uint8x8_t s2 = vdup_lane_u8(s1234, 1);
         uint8x8_t s3 = vdup_lane_u8(s1234, 2);
@@ -212,7 +209,6 @@
     } while (r < height + 1);
   }
 }
-#endif  // AOM_ARCH_AARCH64
 
 void av1_filter_intra_edge_neon(uint8_t *p, int sz, int strength) {
   if (!strength) return;
diff --git a/av1/common/av1_rtcd_defs.pl b/av1/common/av1_rtcd_defs.pl
index ec9435b..1d14bd1 100644
--- a/av1/common/av1_rtcd_defs.pl
+++ b/av1/common/av1_rtcd_defs.pl
@@ -126,12 +126,7 @@
 
 # FILTER_INTRA predictor functions
 add_proto qw/void av1_filter_intra_predictor/, "uint8_t *dst, ptrdiff_t stride, TX_SIZE tx_size, const uint8_t *above, const uint8_t *left, int mode";
-# TODO(aomedia:349436249): enable NEON for armv7 after SIGBUS is fixed.
-if (aom_config("AOM_ARCH_ARM") eq "yes" && aom_config("AOM_ARCH_AARCH64") eq "") {
-  specialize qw/av1_filter_intra_predictor sse4_1/;
-} else {
-  specialize qw/av1_filter_intra_predictor sse4_1 neon/;
-}
+specialize qw/av1_filter_intra_predictor sse4_1 neon/;
 
 # High bitdepth functions
 
diff --git a/test/filterintra_test.cc b/test/filterintra_test.cc
index a0bba4c..314be03 100644
--- a/test/filterintra_test.cc
+++ b/test/filterintra_test.cc
@@ -171,8 +171,6 @@
 #endif  // HAVE_SSE4_1
 
 #if HAVE_NEON
-// TODO(aomedia:349436249): enable for armv7 after SIGBUS is fixed.
-#if AOM_ARCH_AARCH64
 const PredFuncMode kPredFuncMdArrayNEON[] = {
   make_tuple(&av1_filter_intra_predictor_c, &av1_filter_intra_predictor_neon,
              FILTER_DC_PRED),
@@ -194,9 +192,6 @@
     NEON, AV1FilterIntraPredTest,
     ::testing::Combine(::testing::ValuesIn(kPredFuncMdArrayNEON),
                        ::testing::ValuesIn(kTxSizeNEON)));
-#else   // !AOM_ARCH_AARCH64
-GTEST_ALLOW_UNINSTANTIATED_PARAMETERIZED_TEST(AV1FilterIntraPredTest);
-#endif  // AOM_ARCH_AARCH64
 #endif  // HAVE_NEON
 
 }  // namespace