Revert^2 "Binary size reduction for realtime build"

This reverts commit fc9c858970cd8c2925bef69a426bcb4ee4deb6ec.

Reason for revert: nightly now pass for encode-realtime-only,
adding additional fix needed for this CL to patch set 4.

Change-Id: I5e2ddc694856f36da0dc119b715e7d20e178e310
diff --git a/aom_dsp/aom_dsp_rtcd_defs.pl b/aom_dsp/aom_dsp_rtcd_defs.pl
index 5d4dce1..d87c1d3 100755
--- a/aom_dsp/aom_dsp_rtcd_defs.pl
+++ b/aom_dsp/aom_dsp_rtcd_defs.pl
@@ -63,7 +63,10 @@
   push @tx_sizes, [$w, $w];
   foreach $h (@tx_dims) {
     push @tx_sizes, [$w, $h] if ($w >=4 && $h >=4 && ($w == 2*$h || $h == 2*$w));
-    push @tx_sizes, [$w, $h] if ($w >=4 && $h >=4 && ($w == 4*$h || $h == 4*$w));
+    if ((aom_config("CONFIG_REALTIME_ONLY") ne "yes") ||
+        (aom_config("CONFIG_AV1_DECODER") eq "yes")) {
+      push @tx_sizes, [$w, $h] if ($w >=4 && $h >=4 && ($w == 4*$h || $h == 4*$w));
+    }  # !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
   }
 }
 
@@ -87,181 +90,127 @@
 
 specialize qw/aom_dc_top_predictor_4x4 neon sse2/;
 specialize qw/aom_dc_top_predictor_4x8 neon sse2/;
-specialize qw/aom_dc_top_predictor_4x16 neon sse2/;
 specialize qw/aom_dc_top_predictor_8x4 neon sse2/;
 specialize qw/aom_dc_top_predictor_8x8 neon sse2/;
 specialize qw/aom_dc_top_predictor_8x16 neon sse2/;
-specialize qw/aom_dc_top_predictor_8x32 neon sse2/;
-specialize qw/aom_dc_top_predictor_16x4 neon sse2/;
 specialize qw/aom_dc_top_predictor_16x8 neon sse2/;
 specialize qw/aom_dc_top_predictor_16x16 neon sse2/;
 specialize qw/aom_dc_top_predictor_16x32 neon sse2/;
-specialize qw/aom_dc_top_predictor_16x64 neon sse2/;
-specialize qw/aom_dc_top_predictor_32x8 neon sse2/;
 specialize qw/aom_dc_top_predictor_32x16 neon sse2 avx2/;
 specialize qw/aom_dc_top_predictor_32x32 neon sse2 avx2/;
 specialize qw/aom_dc_top_predictor_32x64 neon sse2 avx2/;
-specialize qw/aom_dc_top_predictor_64x16 neon sse2 avx2/;
 specialize qw/aom_dc_top_predictor_64x32 neon sse2 avx2/;
 specialize qw/aom_dc_top_predictor_64x64 neon sse2 avx2/;
 
 specialize qw/aom_dc_left_predictor_4x4 neon sse2/;
 specialize qw/aom_dc_left_predictor_4x8 neon sse2/;
-specialize qw/aom_dc_left_predictor_4x16 neon sse2/;
 specialize qw/aom_dc_left_predictor_8x4 neon sse2/;
 specialize qw/aom_dc_left_predictor_8x8 neon sse2/;
 specialize qw/aom_dc_left_predictor_8x16 neon sse2/;
-specialize qw/aom_dc_left_predictor_8x32 neon sse2/;
-specialize qw/aom_dc_left_predictor_16x4 neon sse2/;
 specialize qw/aom_dc_left_predictor_16x8 neon sse2/;
 specialize qw/aom_dc_left_predictor_16x16 neon sse2/;
 specialize qw/aom_dc_left_predictor_16x32 neon sse2/;
-specialize qw/aom_dc_left_predictor_16x64 neon sse2/;
-specialize qw/aom_dc_left_predictor_32x8 neon sse2/;
 specialize qw/aom_dc_left_predictor_32x16 neon sse2 avx2/;
 specialize qw/aom_dc_left_predictor_32x32 neon sse2 avx2/;
 specialize qw/aom_dc_left_predictor_32x64 neon sse2 avx2/;
-specialize qw/aom_dc_left_predictor_64x16 neon sse2 avx2/;
 specialize qw/aom_dc_left_predictor_64x32 neon sse2 avx2/;
 specialize qw/aom_dc_left_predictor_64x64 neon sse2 avx2/;
 
 specialize qw/aom_dc_128_predictor_4x4 neon sse2/;
 specialize qw/aom_dc_128_predictor_4x8 neon sse2/;
-specialize qw/aom_dc_128_predictor_4x16 neon sse2/;
 specialize qw/aom_dc_128_predictor_8x4 neon sse2/;
 specialize qw/aom_dc_128_predictor_8x8 neon sse2/;
 specialize qw/aom_dc_128_predictor_8x16 neon sse2/;
-specialize qw/aom_dc_128_predictor_8x32 neon sse2/;
-specialize qw/aom_dc_128_predictor_16x4 neon sse2/;
 specialize qw/aom_dc_128_predictor_16x8 neon sse2/;
 specialize qw/aom_dc_128_predictor_16x16 neon sse2/;
 specialize qw/aom_dc_128_predictor_16x32 neon sse2/;
-specialize qw/aom_dc_128_predictor_16x64 neon sse2/;
-specialize qw/aom_dc_128_predictor_32x8 neon sse2/;
 specialize qw/aom_dc_128_predictor_32x16 neon sse2 avx2/;
 specialize qw/aom_dc_128_predictor_32x32 neon sse2 avx2/;
 specialize qw/aom_dc_128_predictor_32x64 neon sse2 avx2/;
-specialize qw/aom_dc_128_predictor_64x16 neon sse2 avx2/;
 specialize qw/aom_dc_128_predictor_64x32 neon sse2 avx2/;
 specialize qw/aom_dc_128_predictor_64x64 neon sse2 avx2/;
 
 specialize qw/aom_v_predictor_4x4 neon sse2/;
 specialize qw/aom_v_predictor_4x8 neon sse2/;
-specialize qw/aom_v_predictor_4x16 neon sse2/;
 specialize qw/aom_v_predictor_8x4 neon sse2/;
 specialize qw/aom_v_predictor_8x8 neon sse2/;
 specialize qw/aom_v_predictor_8x16 neon sse2/;
-specialize qw/aom_v_predictor_8x32 neon sse2/;
-specialize qw/aom_v_predictor_16x4 neon sse2/;
 specialize qw/aom_v_predictor_16x8 neon sse2/;
 specialize qw/aom_v_predictor_16x16 neon sse2/;
 specialize qw/aom_v_predictor_16x32 neon sse2/;
-specialize qw/aom_v_predictor_16x64 neon sse2/;
-specialize qw/aom_v_predictor_32x8 neon sse2/;
 specialize qw/aom_v_predictor_32x16 neon sse2 avx2/;
 specialize qw/aom_v_predictor_32x32 neon sse2 avx2/;
 specialize qw/aom_v_predictor_32x64 neon sse2 avx2/;
-specialize qw/aom_v_predictor_64x16 neon sse2 avx2/;
 specialize qw/aom_v_predictor_64x32 neon sse2 avx2/;
 specialize qw/aom_v_predictor_64x64 neon sse2 avx2/;
 
 specialize qw/aom_h_predictor_4x4 neon sse2/;
 specialize qw/aom_h_predictor_4x8 neon sse2/;
-specialize qw/aom_h_predictor_4x16 neon sse2/;
 specialize qw/aom_h_predictor_8x4 neon sse2/;
 specialize qw/aom_h_predictor_8x8 neon sse2/;
 specialize qw/aom_h_predictor_8x16 neon sse2/;
-specialize qw/aom_h_predictor_8x32 neon sse2/;
-specialize qw/aom_h_predictor_16x4 neon sse2/;
 specialize qw/aom_h_predictor_16x8 neon sse2/;
 specialize qw/aom_h_predictor_16x16 neon sse2/;
 specialize qw/aom_h_predictor_16x32 neon sse2/;
-specialize qw/aom_h_predictor_16x64 neon sse2/;
-specialize qw/aom_h_predictor_32x8 neon sse2/;
 specialize qw/aom_h_predictor_32x16 neon sse2/;
 specialize qw/aom_h_predictor_32x32 neon sse2 avx2/;
 specialize qw/aom_h_predictor_32x64 neon sse2/;
-specialize qw/aom_h_predictor_64x16 neon sse2/;
 specialize qw/aom_h_predictor_64x32 neon sse2/;
 specialize qw/aom_h_predictor_64x64 neon sse2/;
 
 specialize qw/aom_paeth_predictor_4x4 ssse3 neon/;
 specialize qw/aom_paeth_predictor_4x8 ssse3 neon/;
-specialize qw/aom_paeth_predictor_4x16 ssse3 neon/;
 specialize qw/aom_paeth_predictor_8x4 ssse3 neon/;
 specialize qw/aom_paeth_predictor_8x8 ssse3 neon/;
 specialize qw/aom_paeth_predictor_8x16 ssse3 neon/;
-specialize qw/aom_paeth_predictor_8x32 ssse3 neon/;
-specialize qw/aom_paeth_predictor_16x4 ssse3 neon/;
 specialize qw/aom_paeth_predictor_16x8 ssse3 avx2 neon/;
 specialize qw/aom_paeth_predictor_16x16 ssse3 avx2 neon/;
 specialize qw/aom_paeth_predictor_16x32 ssse3 avx2 neon/;
-specialize qw/aom_paeth_predictor_16x64 ssse3 avx2 neon/;
-specialize qw/aom_paeth_predictor_32x8 ssse3 neon/;
 specialize qw/aom_paeth_predictor_32x16 ssse3 avx2 neon/;
 specialize qw/aom_paeth_predictor_32x32 ssse3 avx2 neon/;
 specialize qw/aom_paeth_predictor_32x64 ssse3 avx2 neon/;
-specialize qw/aom_paeth_predictor_64x16 ssse3 avx2 neon/;
 specialize qw/aom_paeth_predictor_64x32 ssse3 avx2 neon/;
 specialize qw/aom_paeth_predictor_64x64 ssse3 avx2 neon/;
 
 specialize qw/aom_smooth_predictor_4x4 neon ssse3/;
 specialize qw/aom_smooth_predictor_4x8 neon ssse3/;
-specialize qw/aom_smooth_predictor_4x16 neon ssse3/;
 specialize qw/aom_smooth_predictor_8x4 neon ssse3/;
 specialize qw/aom_smooth_predictor_8x8 neon ssse3/;
 specialize qw/aom_smooth_predictor_8x16 neon ssse3/;
-specialize qw/aom_smooth_predictor_8x32 neon ssse3/;
-specialize qw/aom_smooth_predictor_16x4 neon ssse3/;
 specialize qw/aom_smooth_predictor_16x8 neon ssse3/;
 specialize qw/aom_smooth_predictor_16x16 neon ssse3/;
 specialize qw/aom_smooth_predictor_16x32 neon ssse3/;
-specialize qw/aom_smooth_predictor_16x64 neon ssse3/;
-specialize qw/aom_smooth_predictor_32x8 neon ssse3/;
 specialize qw/aom_smooth_predictor_32x16 neon ssse3/;
 specialize qw/aom_smooth_predictor_32x32 neon ssse3/;
 specialize qw/aom_smooth_predictor_32x64 neon ssse3/;
-specialize qw/aom_smooth_predictor_64x16 neon ssse3/;
 specialize qw/aom_smooth_predictor_64x32 neon ssse3/;
 specialize qw/aom_smooth_predictor_64x64 neon ssse3/;
 
 specialize qw/aom_smooth_v_predictor_4x4 neon ssse3/;
 specialize qw/aom_smooth_v_predictor_4x8 neon ssse3/;
-specialize qw/aom_smooth_v_predictor_4x16 neon ssse3/;
 specialize qw/aom_smooth_v_predictor_8x4 neon ssse3/;
 specialize qw/aom_smooth_v_predictor_8x8 neon ssse3/;
 specialize qw/aom_smooth_v_predictor_8x16 neon ssse3/;
-specialize qw/aom_smooth_v_predictor_8x32 neon ssse3/;
-specialize qw/aom_smooth_v_predictor_16x4 neon ssse3/;
 specialize qw/aom_smooth_v_predictor_16x8 neon ssse3/;
 specialize qw/aom_smooth_v_predictor_16x16 neon ssse3/;
 specialize qw/aom_smooth_v_predictor_16x32 neon ssse3/;
-specialize qw/aom_smooth_v_predictor_16x64 neon ssse3/;
-specialize qw/aom_smooth_v_predictor_32x8 neon ssse3/;
 specialize qw/aom_smooth_v_predictor_32x16 neon ssse3/;
 specialize qw/aom_smooth_v_predictor_32x32 neon ssse3/;
 specialize qw/aom_smooth_v_predictor_32x64 neon ssse3/;
-specialize qw/aom_smooth_v_predictor_64x16 neon ssse3/;
 specialize qw/aom_smooth_v_predictor_64x32 neon ssse3/;
 specialize qw/aom_smooth_v_predictor_64x64 neon ssse3/;
 
 specialize qw/aom_smooth_h_predictor_4x4 neon ssse3/;
 specialize qw/aom_smooth_h_predictor_4x8 neon ssse3/;
-specialize qw/aom_smooth_h_predictor_4x16 neon ssse3/;
 specialize qw/aom_smooth_h_predictor_8x4 neon ssse3/;
 specialize qw/aom_smooth_h_predictor_8x8 neon ssse3/;
 specialize qw/aom_smooth_h_predictor_8x16 neon ssse3/;
-specialize qw/aom_smooth_h_predictor_8x32 neon ssse3/;
-specialize qw/aom_smooth_h_predictor_16x4 neon ssse3/;
 specialize qw/aom_smooth_h_predictor_16x8 neon ssse3/;
 specialize qw/aom_smooth_h_predictor_16x16 neon ssse3/;
 specialize qw/aom_smooth_h_predictor_16x32 neon ssse3/;
-specialize qw/aom_smooth_h_predictor_16x64 neon ssse3/;
-specialize qw/aom_smooth_h_predictor_32x8 neon ssse3/;
 specialize qw/aom_smooth_h_predictor_32x16 neon ssse3/;
 specialize qw/aom_smooth_h_predictor_32x32 neon ssse3/;
 specialize qw/aom_smooth_h_predictor_32x64 neon ssse3/;
-specialize qw/aom_smooth_h_predictor_64x16 neon ssse3/;
 specialize qw/aom_smooth_h_predictor_64x32 neon ssse3/;
 specialize qw/aom_smooth_h_predictor_64x64 neon ssse3/;
 
@@ -269,41 +218,103 @@
 # by multiply and shift.
 specialize qw/aom_dc_predictor_4x4 neon sse2/;
 specialize qw/aom_dc_predictor_4x8 neon sse2/;
-specialize qw/aom_dc_predictor_4x16 neon sse2/;
 specialize qw/aom_dc_predictor_8x4 neon sse2/;
 specialize qw/aom_dc_predictor_8x8 neon sse2/;
 specialize qw/aom_dc_predictor_8x16 neon sse2/;
-specialize qw/aom_dc_predictor_8x32 neon sse2/;
-specialize qw/aom_dc_predictor_16x4 neon sse2/;
 specialize qw/aom_dc_predictor_16x8 neon sse2/;
 specialize qw/aom_dc_predictor_16x16 neon sse2/;
 specialize qw/aom_dc_predictor_16x32 neon sse2/;
-specialize qw/aom_dc_predictor_16x64 neon sse2/;
-specialize qw/aom_dc_predictor_32x8 neon sse2/;
 specialize qw/aom_dc_predictor_32x16 neon sse2 avx2/;
 specialize qw/aom_dc_predictor_32x32 neon sse2 avx2/;
 specialize qw/aom_dc_predictor_32x64 neon sse2 avx2/;
 specialize qw/aom_dc_predictor_64x64 neon sse2 avx2/;
 specialize qw/aom_dc_predictor_64x32 neon sse2 avx2/;
-specialize qw/aom_dc_predictor_64x16 neon sse2 avx2/;
+
+
+if ((aom_config("CONFIG_REALTIME_ONLY") ne "yes") || (aom_config("CONFIG_AV1_DECODER") eq "yes")) {
+  specialize qw/aom_dc_top_predictor_4x16 neon sse2/;
+  specialize qw/aom_dc_top_predictor_8x32 neon sse2/;
+  specialize qw/aom_dc_top_predictor_16x4 neon sse2/;
+  specialize qw/aom_dc_top_predictor_16x64 neon sse2/;
+  specialize qw/aom_dc_top_predictor_32x8 neon sse2/;
+  specialize qw/aom_dc_top_predictor_64x16 neon sse2 avx2/;
+
+  specialize qw/aom_dc_left_predictor_4x16 neon sse2/;
+  specialize qw/aom_dc_left_predictor_8x32 neon sse2/;
+  specialize qw/aom_dc_left_predictor_16x4 neon sse2/;
+  specialize qw/aom_dc_left_predictor_16x64 neon sse2/;
+  specialize qw/aom_dc_left_predictor_32x8 neon sse2/;
+  specialize qw/aom_dc_left_predictor_64x16 neon sse2 avx2/;
+
+  specialize qw/aom_dc_128_predictor_4x16 neon sse2/;
+  specialize qw/aom_dc_128_predictor_8x32 neon sse2/;
+  specialize qw/aom_dc_128_predictor_16x4 neon sse2/;
+  specialize qw/aom_dc_128_predictor_16x64 neon sse2/;
+  specialize qw/aom_dc_128_predictor_32x8 neon sse2/;
+  specialize qw/aom_dc_128_predictor_64x16 neon sse2 avx2/;
+
+  specialize qw/aom_v_predictor_4x16 neon sse2/;
+  specialize qw/aom_v_predictor_8x32 neon sse2/;
+  specialize qw/aom_v_predictor_16x4 neon sse2/;
+  specialize qw/aom_v_predictor_16x64 neon sse2/;
+  specialize qw/aom_v_predictor_32x8 neon sse2/;
+  specialize qw/aom_v_predictor_64x16 neon sse2 avx2/;
+
+  specialize qw/aom_h_predictor_4x16 neon sse2/;
+  specialize qw/aom_h_predictor_8x32 neon sse2/;
+  specialize qw/aom_h_predictor_16x4 neon sse2/;
+  specialize qw/aom_h_predictor_16x64 neon sse2/;
+  specialize qw/aom_h_predictor_32x8 neon sse2/;
+  specialize qw/aom_h_predictor_64x16 neon sse2/;
+
+  specialize qw/aom_paeth_predictor_4x16 ssse3 neon/;
+  specialize qw/aom_paeth_predictor_8x32 ssse3 neon/;
+  specialize qw/aom_paeth_predictor_16x4 ssse3 neon/;
+  specialize qw/aom_paeth_predictor_16x64 ssse3 avx2 neon/;
+  specialize qw/aom_paeth_predictor_32x8 ssse3 neon/;
+  specialize qw/aom_paeth_predictor_64x16 ssse3 avx2 neon/;
+
+  specialize qw/aom_smooth_predictor_4x16 neon ssse3/;
+  specialize qw/aom_smooth_predictor_8x32 neon ssse3/;
+  specialize qw/aom_smooth_predictor_16x4 neon ssse3/;
+  specialize qw/aom_smooth_predictor_16x64 neon ssse3/;
+  specialize qw/aom_smooth_predictor_32x8 neon ssse3/;
+  specialize qw/aom_smooth_predictor_64x16 neon ssse3/;
+
+  specialize qw/aom_smooth_v_predictor_4x16 neon ssse3/;
+  specialize qw/aom_smooth_v_predictor_8x32 neon ssse3/;
+  specialize qw/aom_smooth_v_predictor_16x4 neon ssse3/;
+  specialize qw/aom_smooth_v_predictor_16x64 neon ssse3/;
+  specialize qw/aom_smooth_v_predictor_32x8 neon ssse3/;
+  specialize qw/aom_smooth_v_predictor_64x16 neon ssse3/;
+
+  specialize qw/aom_smooth_h_predictor_4x16 neon ssse3/;
+  specialize qw/aom_smooth_h_predictor_8x32 neon ssse3/;
+  specialize qw/aom_smooth_h_predictor_16x4 neon ssse3/;
+  specialize qw/aom_smooth_h_predictor_16x64 neon ssse3/;
+  specialize qw/aom_smooth_h_predictor_32x8 neon ssse3/;
+  specialize qw/aom_smooth_h_predictor_64x16 neon ssse3/;
+
+  specialize qw/aom_dc_predictor_4x16 neon sse2/;
+  specialize qw/aom_dc_predictor_8x32 neon sse2/;
+  specialize qw/aom_dc_predictor_16x4 neon sse2/;
+  specialize qw/aom_dc_predictor_16x64 neon sse2/;
+  specialize qw/aom_dc_predictor_32x8 neon sse2/;
+  specialize qw/aom_dc_predictor_64x16 neon sse2 avx2/;
+}  # !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
+
 if (aom_config("CONFIG_AV1_HIGHBITDEPTH") eq "yes") {
   specialize qw/aom_highbd_v_predictor_4x4 sse2 neon/;
   specialize qw/aom_highbd_v_predictor_4x8 sse2 neon/;
-  specialize qw/aom_highbd_v_predictor_4x16 neon/;
   specialize qw/aom_highbd_v_predictor_8x4 sse2 neon/;
   specialize qw/aom_highbd_v_predictor_8x8 sse2 neon/;
   specialize qw/aom_highbd_v_predictor_8x16 sse2 neon/;
-  specialize qw/aom_highbd_v_predictor_8x32 neon/;
-  specialize qw/aom_highbd_v_predictor_16x4 neon/;
   specialize qw/aom_highbd_v_predictor_16x8 sse2 neon/;
   specialize qw/aom_highbd_v_predictor_16x16 sse2 neon/;
   specialize qw/aom_highbd_v_predictor_16x32 sse2 neon/;
-  specialize qw/aom_highbd_v_predictor_16x64 neon/;
-  specialize qw/aom_highbd_v_predictor_32x8 neon/;
   specialize qw/aom_highbd_v_predictor_32x16 sse2 neon/;
   specialize qw/aom_highbd_v_predictor_32x32 sse2 neon/;
   specialize qw/aom_highbd_v_predictor_32x64 neon/;
-  specialize qw/aom_highbd_v_predictor_64x16 neon/;
   specialize qw/aom_highbd_v_predictor_64x32 neon/;
   specialize qw/aom_highbd_v_predictor_64x64 neon/;
 
@@ -311,183 +322,202 @@
   # by multiply and shift.
   specialize qw/aom_highbd_dc_predictor_4x4 sse2 neon/;
   specialize qw/aom_highbd_dc_predictor_4x8 sse2 neon/;
-  specialize qw/aom_highbd_dc_predictor_4x16 neon/;
   specialize qw/aom_highbd_dc_predictor_8x4 sse2 neon/;
   specialize qw/aom_highbd_dc_predictor_8x8 sse2 neon/;
   specialize qw/aom_highbd_dc_predictor_8x16 sse2 neon/;
-  specialize qw/aom_highbd_dc_predictor_8x32 neon/;
-  specialize qw/aom_highbd_dc_predictor_16x4 neon/;
   specialize qw/aom_highbd_dc_predictor_16x8 sse2 neon/;
   specialize qw/aom_highbd_dc_predictor_16x16 sse2 neon/;
   specialize qw/aom_highbd_dc_predictor_16x32 sse2 neon/;
-  specialize qw/aom_highbd_dc_predictor_16x64 neon/;
-  specialize qw/aom_highbd_dc_predictor_32x8 neon/;
   specialize qw/aom_highbd_dc_predictor_32x16 sse2 neon/;
   specialize qw/aom_highbd_dc_predictor_32x32 sse2 neon/;
   specialize qw/aom_highbd_dc_predictor_32x64 neon/;
-  specialize qw/aom_highbd_dc_predictor_64x16 neon/;
   specialize qw/aom_highbd_dc_predictor_64x32 neon/;
   specialize qw/aom_highbd_dc_predictor_64x64 neon/;
 
   specialize qw/aom_highbd_h_predictor_4x4 sse2 neon/;
   specialize qw/aom_highbd_h_predictor_4x8 sse2 neon/;
-  specialize qw/aom_highbd_h_predictor_4x16 neon/;
   specialize qw/aom_highbd_h_predictor_8x4 sse2 neon/;
   specialize qw/aom_highbd_h_predictor_8x8 sse2 neon/;
   specialize qw/aom_highbd_h_predictor_8x16 sse2 neon/;
-  specialize qw/aom_highbd_h_predictor_8x32 neon/;
-  specialize qw/aom_highbd_h_predictor_16x4 neon/;
   specialize qw/aom_highbd_h_predictor_16x8 sse2 neon/;
   specialize qw/aom_highbd_h_predictor_16x16 sse2 neon/;
   specialize qw/aom_highbd_h_predictor_16x32 sse2 neon/;
-  specialize qw/aom_highbd_h_predictor_16x64 neon/;
-  specialize qw/aom_highbd_h_predictor_32x8 neon/;
   specialize qw/aom_highbd_h_predictor_32x16 sse2 neon/;
   specialize qw/aom_highbd_h_predictor_32x32 sse2 neon/;
   specialize qw/aom_highbd_h_predictor_32x64 neon/;
-  specialize qw/aom_highbd_h_predictor_64x16 neon/;
   specialize qw/aom_highbd_h_predictor_64x32 neon/;
   specialize qw/aom_highbd_h_predictor_64x64 neon/;
 
   specialize qw/aom_highbd_dc_128_predictor_4x4 sse2 neon/;
   specialize qw/aom_highbd_dc_128_predictor_4x8 sse2 neon/;
-  specialize qw/aom_highbd_dc_128_predictor_4x16 neon/;
   specialize qw/aom_highbd_dc_128_predictor_8x4 sse2 neon/;
   specialize qw/aom_highbd_dc_128_predictor_8x8 sse2 neon/;
   specialize qw/aom_highbd_dc_128_predictor_8x16 sse2 neon/;
-  specialize qw/aom_highbd_dc_128_predictor_8x32 neon/;
-  specialize qw/aom_highbd_dc_128_predictor_16x4 neon/;
   specialize qw/aom_highbd_dc_128_predictor_16x8 sse2 neon/;
   specialize qw/aom_highbd_dc_128_predictor_16x16 sse2 neon/;
   specialize qw/aom_highbd_dc_128_predictor_16x32 sse2 neon/;
-  specialize qw/aom_highbd_dc_128_predictor_16x64 neon/;
-  specialize qw/aom_highbd_dc_128_predictor_32x8 neon/;
   specialize qw/aom_highbd_dc_128_predictor_32x16 sse2 neon/;
   specialize qw/aom_highbd_dc_128_predictor_32x32 sse2 neon/;
   specialize qw/aom_highbd_dc_128_predictor_32x64 neon/;
-  specialize qw/aom_highbd_dc_128_predictor_64x16 neon/;
   specialize qw/aom_highbd_dc_128_predictor_64x32 neon/;
   specialize qw/aom_highbd_dc_128_predictor_64x64 neon/;
 
   specialize qw/aom_highbd_dc_left_predictor_4x4 sse2 neon/;
   specialize qw/aom_highbd_dc_left_predictor_4x8 sse2 neon/;
-  specialize qw/aom_highbd_dc_left_predictor_4x16 neon/;
   specialize qw/aom_highbd_dc_left_predictor_8x4 sse2 neon/;
   specialize qw/aom_highbd_dc_left_predictor_8x8 sse2 neon/;
   specialize qw/aom_highbd_dc_left_predictor_8x16 sse2 neon/;
-  specialize qw/aom_highbd_dc_left_predictor_8x32 neon/;
-  specialize qw/aom_highbd_dc_left_predictor_16x4 neon/;
   specialize qw/aom_highbd_dc_left_predictor_16x8 sse2 neon/;
   specialize qw/aom_highbd_dc_left_predictor_16x16 sse2 neon/;
   specialize qw/aom_highbd_dc_left_predictor_16x32 sse2 neon/;
-  specialize qw/aom_highbd_dc_left_predictor_16x64 neon/;
-  specialize qw/aom_highbd_dc_left_predictor_32x8 neon/;
   specialize qw/aom_highbd_dc_left_predictor_32x16 sse2 neon/;
   specialize qw/aom_highbd_dc_left_predictor_32x32 sse2 neon/;
   specialize qw/aom_highbd_dc_left_predictor_32x64 neon/;
-  specialize qw/aom_highbd_dc_left_predictor_64x16 neon/;
   specialize qw/aom_highbd_dc_left_predictor_64x32 neon/;
   specialize qw/aom_highbd_dc_left_predictor_64x64 neon/;
 
   specialize qw/aom_highbd_dc_top_predictor_4x4 sse2 neon/;
   specialize qw/aom_highbd_dc_top_predictor_4x8 sse2 neon/;
-  specialize qw/aom_highbd_dc_top_predictor_4x16 neon/;
   specialize qw/aom_highbd_dc_top_predictor_8x4 sse2 neon/;
   specialize qw/aom_highbd_dc_top_predictor_8x8 sse2 neon/;
   specialize qw/aom_highbd_dc_top_predictor_8x16 sse2 neon/;
-  specialize qw/aom_highbd_dc_top_predictor_8x32 neon/;
-  specialize qw/aom_highbd_dc_top_predictor_16x4 neon/;
   specialize qw/aom_highbd_dc_top_predictor_16x8 sse2 neon/;
   specialize qw/aom_highbd_dc_top_predictor_16x16 sse2 neon/;
   specialize qw/aom_highbd_dc_top_predictor_16x32 sse2 neon/;
-  specialize qw/aom_highbd_dc_top_predictor_16x64 neon/;
-  specialize qw/aom_highbd_dc_top_predictor_32x8 neon/;
   specialize qw/aom_highbd_dc_top_predictor_32x16 sse2 neon/;
   specialize qw/aom_highbd_dc_top_predictor_32x32 sse2 neon/;
   specialize qw/aom_highbd_dc_top_predictor_32x64 neon/;
-  specialize qw/aom_highbd_dc_top_predictor_64x16 neon/;
   specialize qw/aom_highbd_dc_top_predictor_64x32 neon/;
   specialize qw/aom_highbd_dc_top_predictor_64x64 neon/;
 
   specialize qw/aom_highbd_paeth_predictor_4x4 neon/;
   specialize qw/aom_highbd_paeth_predictor_4x8 neon/;
-  specialize qw/aom_highbd_paeth_predictor_4x16 neon/;
   specialize qw/aom_highbd_paeth_predictor_8x4 neon/;
   specialize qw/aom_highbd_paeth_predictor_8x8 neon/;
   specialize qw/aom_highbd_paeth_predictor_8x16 neon/;
-  specialize qw/aom_highbd_paeth_predictor_8x32 neon/;
-  specialize qw/aom_highbd_paeth_predictor_16x4 neon/;
   specialize qw/aom_highbd_paeth_predictor_16x8 neon/;
   specialize qw/aom_highbd_paeth_predictor_16x16 neon/;
   specialize qw/aom_highbd_paeth_predictor_16x32 neon/;
-  specialize qw/aom_highbd_paeth_predictor_16x64 neon/;
-  specialize qw/aom_highbd_paeth_predictor_32x8 neon/;
   specialize qw/aom_highbd_paeth_predictor_32x16 neon/;
   specialize qw/aom_highbd_paeth_predictor_32x32 neon/;
   specialize qw/aom_highbd_paeth_predictor_32x64 neon/;
-  specialize qw/aom_highbd_paeth_predictor_64x16 neon/;
   specialize qw/aom_highbd_paeth_predictor_64x32 neon/;
   specialize qw/aom_highbd_paeth_predictor_64x64 neon/;
 
   specialize qw/aom_highbd_smooth_predictor_4x4 neon/;
   specialize qw/aom_highbd_smooth_predictor_4x8 neon/;
-  specialize qw/aom_highbd_smooth_predictor_4x16 neon/;
   specialize qw/aom_highbd_smooth_predictor_8x4 neon/;
   specialize qw/aom_highbd_smooth_predictor_8x8 neon/;
   specialize qw/aom_highbd_smooth_predictor_8x16 neon/;
-  specialize qw/aom_highbd_smooth_predictor_8x32 neon/;
-  specialize qw/aom_highbd_smooth_predictor_16x4 neon/;
   specialize qw/aom_highbd_smooth_predictor_16x8 neon/;
   specialize qw/aom_highbd_smooth_predictor_16x16 neon/;
   specialize qw/aom_highbd_smooth_predictor_16x32 neon/;
-  specialize qw/aom_highbd_smooth_predictor_16x64 neon/;
-  specialize qw/aom_highbd_smooth_predictor_32x8 neon/;
   specialize qw/aom_highbd_smooth_predictor_32x16 neon/;
   specialize qw/aom_highbd_smooth_predictor_32x32 neon/;
   specialize qw/aom_highbd_smooth_predictor_32x64 neon/;
-  specialize qw/aom_highbd_smooth_predictor_64x16 neon/;
   specialize qw/aom_highbd_smooth_predictor_64x32 neon/;
   specialize qw/aom_highbd_smooth_predictor_64x64 neon/;
 
   specialize qw/aom_highbd_smooth_v_predictor_4x4 neon/;
   specialize qw/aom_highbd_smooth_v_predictor_4x8 neon/;
-  specialize qw/aom_highbd_smooth_v_predictor_4x16 neon/;
   specialize qw/aom_highbd_smooth_v_predictor_8x4 neon/;
   specialize qw/aom_highbd_smooth_v_predictor_8x8 neon/;
   specialize qw/aom_highbd_smooth_v_predictor_8x16 neon/;
-  specialize qw/aom_highbd_smooth_v_predictor_8x32 neon/;
-  specialize qw/aom_highbd_smooth_v_predictor_16x4 neon/;
   specialize qw/aom_highbd_smooth_v_predictor_16x8 neon/;
   specialize qw/aom_highbd_smooth_v_predictor_16x16 neon/;
   specialize qw/aom_highbd_smooth_v_predictor_16x32 neon/;
-  specialize qw/aom_highbd_smooth_v_predictor_16x64 neon/;
-  specialize qw/aom_highbd_smooth_v_predictor_32x8 neon/;
   specialize qw/aom_highbd_smooth_v_predictor_32x16 neon/;
   specialize qw/aom_highbd_smooth_v_predictor_32x32 neon/;
   specialize qw/aom_highbd_smooth_v_predictor_32x64 neon/;
-  specialize qw/aom_highbd_smooth_v_predictor_64x16 neon/;
   specialize qw/aom_highbd_smooth_v_predictor_64x32 neon/;
   specialize qw/aom_highbd_smooth_v_predictor_64x64 neon/;
-
   specialize qw/aom_highbd_smooth_h_predictor_4x4 neon/;
   specialize qw/aom_highbd_smooth_h_predictor_4x8 neon/;
-  specialize qw/aom_highbd_smooth_h_predictor_4x16 neon/;
+
   specialize qw/aom_highbd_smooth_h_predictor_8x4 neon/;
   specialize qw/aom_highbd_smooth_h_predictor_8x8 neon/;
   specialize qw/aom_highbd_smooth_h_predictor_8x16 neon/;
-  specialize qw/aom_highbd_smooth_h_predictor_8x32 neon/;
-  specialize qw/aom_highbd_smooth_h_predictor_16x4 neon/;
   specialize qw/aom_highbd_smooth_h_predictor_16x8 neon/;
   specialize qw/aom_highbd_smooth_h_predictor_16x16 neon/;
   specialize qw/aom_highbd_smooth_h_predictor_16x32 neon/;
-  specialize qw/aom_highbd_smooth_h_predictor_16x64 neon/;
-  specialize qw/aom_highbd_smooth_h_predictor_32x8 neon/;
   specialize qw/aom_highbd_smooth_h_predictor_32x16 neon/;
   specialize qw/aom_highbd_smooth_h_predictor_32x32 neon/;
   specialize qw/aom_highbd_smooth_h_predictor_32x64 neon/;
-  specialize qw/aom_highbd_smooth_h_predictor_64x16 neon/;
   specialize qw/aom_highbd_smooth_h_predictor_64x32 neon/;
   specialize qw/aom_highbd_smooth_h_predictor_64x64 neon/;
+
+  if ((aom_config("CONFIG_REALTIME_ONLY") ne "yes") ||
+      (aom_config("CONFIG_AV1_DECODER") eq "yes")) {
+    specialize qw/aom_highbd_v_predictor_4x16 neon/;
+    specialize qw/aom_highbd_v_predictor_8x32 neon/;
+    specialize qw/aom_highbd_v_predictor_16x4 neon/;
+    specialize qw/aom_highbd_v_predictor_16x64 neon/;
+    specialize qw/aom_highbd_v_predictor_32x8 neon/;
+    specialize qw/aom_highbd_v_predictor_64x16 neon/;
+
+    specialize qw/aom_highbd_dc_predictor_4x16 neon/;
+    specialize qw/aom_highbd_dc_predictor_8x32 neon/;
+    specialize qw/aom_highbd_dc_predictor_16x4 neon/;
+    specialize qw/aom_highbd_dc_predictor_16x64 neon/;
+    specialize qw/aom_highbd_dc_predictor_32x8 neon/;
+    specialize qw/aom_highbd_dc_predictor_64x16 neon/;
+
+    specialize qw/aom_highbd_h_predictor_4x16 neon/;
+    specialize qw/aom_highbd_h_predictor_8x32 neon/;
+    specialize qw/aom_highbd_h_predictor_16x4 neon/;
+    specialize qw/aom_highbd_h_predictor_16x64 neon/;
+    specialize qw/aom_highbd_h_predictor_32x8 neon/;
+    specialize qw/aom_highbd_h_predictor_64x16 neon/;
+
+    specialize qw/aom_highbd_dc_128_predictor_4x16 neon/;
+    specialize qw/aom_highbd_dc_128_predictor_8x32 neon/;
+    specialize qw/aom_highbd_dc_128_predictor_16x4 neon/;
+    specialize qw/aom_highbd_dc_128_predictor_16x64 neon/;
+    specialize qw/aom_highbd_dc_128_predictor_32x8 neon/;
+    specialize qw/aom_highbd_dc_128_predictor_64x16 neon/;
+
+    specialize qw/aom_highbd_dc_left_predictor_4x16 neon/;
+    specialize qw/aom_highbd_dc_left_predictor_8x32 neon/;
+    specialize qw/aom_highbd_dc_left_predictor_16x4 neon/;
+    specialize qw/aom_highbd_dc_left_predictor_16x64 neon/;
+    specialize qw/aom_highbd_dc_left_predictor_32x8 neon/;
+    specialize qw/aom_highbd_dc_left_predictor_64x16 neon/;
+
+    specialize qw/aom_highbd_dc_top_predictor_4x16 neon/;
+    specialize qw/aom_highbd_dc_top_predictor_8x32 neon/;
+    specialize qw/aom_highbd_dc_top_predictor_16x4 neon/;
+    specialize qw/aom_highbd_dc_top_predictor_16x64 neon/;
+    specialize qw/aom_highbd_dc_top_predictor_32x8 neon/;
+    specialize qw/aom_highbd_dc_top_predictor_64x16 neon/;
+
+    specialize qw/aom_highbd_paeth_predictor_4x16 neon/;
+    specialize qw/aom_highbd_paeth_predictor_8x32 neon/;
+    specialize qw/aom_highbd_paeth_predictor_16x4 neon/;
+    specialize qw/aom_highbd_paeth_predictor_16x64 neon/;
+    specialize qw/aom_highbd_paeth_predictor_32x8 neon/;
+    specialize qw/aom_highbd_paeth_predictor_64x16 neon/;
+
+    specialize qw/aom_highbd_smooth_predictor_4x16 neon/;
+    specialize qw/aom_highbd_smooth_predictor_8x32 neon/;
+    specialize qw/aom_highbd_smooth_predictor_16x4 neon/;
+    specialize qw/aom_highbd_smooth_predictor_16x64 neon/;
+    specialize qw/aom_highbd_smooth_predictor_32x8 neon/;
+    specialize qw/aom_highbd_smooth_predictor_64x16 neon/;
+
+    specialize qw/aom_highbd_smooth_v_predictor_4x16 neon/;
+    specialize qw/aom_highbd_smooth_v_predictor_8x32 neon/;
+    specialize qw/aom_highbd_smooth_v_predictor_16x4 neon/;
+    specialize qw/aom_highbd_smooth_v_predictor_16x64 neon/;
+    specialize qw/aom_highbd_smooth_v_predictor_32x8 neon/;
+    specialize qw/aom_highbd_smooth_v_predictor_64x16 neon/;
+
+    specialize qw/aom_highbd_smooth_h_predictor_4x16 neon/;
+    specialize qw/aom_highbd_smooth_h_predictor_8x32 neon/;
+    specialize qw/aom_highbd_smooth_h_predictor_16x4 neon/;
+    specialize qw/aom_highbd_smooth_h_predictor_16x64 neon/;
+    specialize qw/aom_highbd_smooth_h_predictor_32x8 neon/;
+    specialize qw/aom_highbd_smooth_h_predictor_64x16 neon/;
+  }  # !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 }
 #
 # Sub Pixel Filters
diff --git a/aom_dsp/arm/highbd_intrapred_neon.c b/aom_dsp/arm/highbd_intrapred_neon.c
index 5b8234c..f674a13 100644
--- a/aom_dsp/arm/highbd_intrapred_neon.c
+++ b/aom_dsp/arm/highbd_intrapred_neon.c
@@ -200,6 +200,7 @@
     highbd_dc_store_##w##xh(dst, stride, (h), vdup##q##_n_u16(dc0));    \
   }
 
+#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 HIGHBD_DC_PREDICTOR_RECT(4, 8, , 2, HIGHBD_DC_MULTIPLIER_1X2)
 HIGHBD_DC_PREDICTOR_RECT(4, 16, , 2, HIGHBD_DC_MULTIPLIER_1X4)
 HIGHBD_DC_PREDICTOR_RECT(8, 4, q, 2, HIGHBD_DC_MULTIPLIER_1X2)
@@ -214,6 +215,16 @@
 HIGHBD_DC_PREDICTOR_RECT(32, 64, q, 5, HIGHBD_DC_MULTIPLIER_1X2)
 HIGHBD_DC_PREDICTOR_RECT(64, 16, q, 4, HIGHBD_DC_MULTIPLIER_1X4)
 HIGHBD_DC_PREDICTOR_RECT(64, 32, q, 5, HIGHBD_DC_MULTIPLIER_1X2)
+#else
+HIGHBD_DC_PREDICTOR_RECT(4, 8, , 2, HIGHBD_DC_MULTIPLIER_1X2)
+HIGHBD_DC_PREDICTOR_RECT(8, 4, q, 2, HIGHBD_DC_MULTIPLIER_1X2)
+HIGHBD_DC_PREDICTOR_RECT(8, 16, q, 3, HIGHBD_DC_MULTIPLIER_1X2)
+HIGHBD_DC_PREDICTOR_RECT(16, 8, q, 3, HIGHBD_DC_MULTIPLIER_1X2)
+HIGHBD_DC_PREDICTOR_RECT(16, 32, q, 4, HIGHBD_DC_MULTIPLIER_1X2)
+HIGHBD_DC_PREDICTOR_RECT(32, 16, q, 4, HIGHBD_DC_MULTIPLIER_1X2)
+HIGHBD_DC_PREDICTOR_RECT(32, 64, q, 5, HIGHBD_DC_MULTIPLIER_1X2)
+HIGHBD_DC_PREDICTOR_RECT(64, 32, q, 5, HIGHBD_DC_MULTIPLIER_1X2)
+#endif  // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 
 #undef HIGHBD_DC_PREDICTOR_RECT
 #undef HIGHBD_DC_MULTIPLIER_1X2
@@ -233,6 +244,7 @@
                             vdup##q##_n_u16(0x80 << (bd - 8))); \
   }
 
+#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 HIGHBD_DC_PREDICTOR_128(4, 4, )
 HIGHBD_DC_PREDICTOR_128(4, 8, )
 HIGHBD_DC_PREDICTOR_128(4, 16, )
@@ -252,6 +264,21 @@
 HIGHBD_DC_PREDICTOR_128(64, 16, q)
 HIGHBD_DC_PREDICTOR_128(64, 32, q)
 HIGHBD_DC_PREDICTOR_128(64, 64, q)
+#else
+HIGHBD_DC_PREDICTOR_128(4, 4, )
+HIGHBD_DC_PREDICTOR_128(4, 8, )
+HIGHBD_DC_PREDICTOR_128(8, 4, q)
+HIGHBD_DC_PREDICTOR_128(8, 8, q)
+HIGHBD_DC_PREDICTOR_128(8, 16, q)
+HIGHBD_DC_PREDICTOR_128(16, 8, q)
+HIGHBD_DC_PREDICTOR_128(16, 16, q)
+HIGHBD_DC_PREDICTOR_128(16, 32, q)
+HIGHBD_DC_PREDICTOR_128(32, 16, q)
+HIGHBD_DC_PREDICTOR_128(32, 32, q)
+HIGHBD_DC_PREDICTOR_128(32, 64, q)
+HIGHBD_DC_PREDICTOR_128(64, 32, q)
+HIGHBD_DC_PREDICTOR_128(64, 64, q)
+#endif  // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 
 #undef HIGHBD_DC_PREDICTOR_128
 
@@ -294,6 +321,7 @@
     highbd_dc_store_##w##xh(dst, stride, (h), vdup##q##_lane_u16(dc0, 0)); \
   }
 
+#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 DC_PREDICTOR_LEFT(4, 4, 2, )
 DC_PREDICTOR_LEFT(4, 8, 3, )
 DC_PREDICTOR_LEFT(4, 16, 4, )
@@ -313,6 +341,21 @@
 DC_PREDICTOR_LEFT(64, 16, 4, q)
 DC_PREDICTOR_LEFT(64, 32, 5, q)
 DC_PREDICTOR_LEFT(64, 64, 6, q)
+#else
+DC_PREDICTOR_LEFT(4, 4, 2, )
+DC_PREDICTOR_LEFT(4, 8, 3, )
+DC_PREDICTOR_LEFT(8, 4, 2, q)
+DC_PREDICTOR_LEFT(8, 8, 3, q)
+DC_PREDICTOR_LEFT(8, 16, 4, q)
+DC_PREDICTOR_LEFT(16, 8, 3, q)
+DC_PREDICTOR_LEFT(16, 16, 4, q)
+DC_PREDICTOR_LEFT(16, 32, 5, q)
+DC_PREDICTOR_LEFT(32, 16, 4, q)
+DC_PREDICTOR_LEFT(32, 32, 5, q)
+DC_PREDICTOR_LEFT(32, 64, 6, q)
+DC_PREDICTOR_LEFT(64, 32, 5, q)
+DC_PREDICTOR_LEFT(64, 64, 6, q)
+#endif  // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 
 #undef DC_PREDICTOR_LEFT
 
@@ -330,6 +373,7 @@
     highbd_dc_store_##w##xh(dst, stride, (h), vdup##q##_lane_u16(dc0, 0)); \
   }
 
+#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 DC_PREDICTOR_TOP(4, 4, 2, )
 DC_PREDICTOR_TOP(4, 8, 2, )
 DC_PREDICTOR_TOP(4, 16, 2, )
@@ -349,6 +393,21 @@
 DC_PREDICTOR_TOP(64, 16, 6, q)
 DC_PREDICTOR_TOP(64, 32, 6, q)
 DC_PREDICTOR_TOP(64, 64, 6, q)
+#else
+DC_PREDICTOR_TOP(4, 4, 2, )
+DC_PREDICTOR_TOP(4, 8, 2, )
+DC_PREDICTOR_TOP(8, 4, 3, q)
+DC_PREDICTOR_TOP(8, 8, 3, q)
+DC_PREDICTOR_TOP(8, 16, 3, q)
+DC_PREDICTOR_TOP(16, 8, 4, q)
+DC_PREDICTOR_TOP(16, 16, 4, q)
+DC_PREDICTOR_TOP(16, 32, 4, q)
+DC_PREDICTOR_TOP(32, 16, 5, q)
+DC_PREDICTOR_TOP(32, 32, 5, q)
+DC_PREDICTOR_TOP(32, 64, 5, q)
+DC_PREDICTOR_TOP(64, 32, 6, q)
+DC_PREDICTOR_TOP(64, 64, 6, q)
+#endif  // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 
 #undef DC_PREDICTOR_TOP
 
@@ -459,6 +518,7 @@
   } while (y != 0);
 }
 
+#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 HIGHBD_V_NXM(4, 4)
 HIGHBD_V_NXM(4, 8)
 HIGHBD_V_NXM(4, 16)
@@ -482,6 +542,25 @@
 HIGHBD_V_NXM(64, 16)
 HIGHBD_V_NXM(64, 32)
 HIGHBD_V_NXM(64, 64)
+#else
+HIGHBD_V_NXM(4, 4)
+HIGHBD_V_NXM(4, 8)
+
+HIGHBD_V_NXM(8, 4)
+HIGHBD_V_NXM(8, 8)
+HIGHBD_V_NXM(8, 16)
+
+HIGHBD_V_NXM(16, 8)
+HIGHBD_V_NXM(16, 16)
+HIGHBD_V_NXM(16, 32)
+
+HIGHBD_V_NXM(32, 16)
+HIGHBD_V_NXM(32, 32)
+HIGHBD_V_NXM(32, 64)
+
+HIGHBD_V_NXM(64, 32)
+HIGHBD_V_NXM(64, 64)
+#endif  // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 
 // -----------------------------------------------------------------------------
 // H_PRED
@@ -585,6 +664,7 @@
   highbd_h_store_8x4(dst + 4 * stride, stride, vget_high_u16(l));
 }
 
+#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 void aom_highbd_h_predictor_16x4_neon(uint16_t *dst, ptrdiff_t stride,
                                       const uint16_t *above,
                                       const uint16_t *left, int bd) {
@@ -592,6 +672,7 @@
   (void)bd;
   highbd_h_store_16x4(dst, stride, vld1_u16(left));
 }
+#endif  // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 
 void aom_highbd_h_predictor_16x8_neon(uint16_t *dst, ptrdiff_t stride,
                                       const uint16_t *above,
@@ -603,6 +684,7 @@
   highbd_h_store_16x4(dst + 4 * stride, stride, vget_high_u16(l));
 }
 
+#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 void aom_highbd_h_predictor_32x8_neon(uint16_t *dst, ptrdiff_t stride,
                                       const uint16_t *above,
                                       const uint16_t *left, int bd) {
@@ -612,6 +694,7 @@
   highbd_h_store_32x4(dst + 0 * stride, stride, vget_low_u16(l));
   highbd_h_store_32x4(dst + 4 * stride, stride, vget_high_u16(l));
 }
+#endif  // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 
 // For cases where height >= 16 we use pairs of loads to get LDP instructions.
 #define HIGHBD_H_WXH_LARGE(w, h)                                            \
@@ -632,6 +715,7 @@
     }                                                                       \
   }
 
+#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 HIGHBD_H_WXH_LARGE(4, 16)
 HIGHBD_H_WXH_LARGE(8, 16)
 HIGHBD_H_WXH_LARGE(8, 32)
@@ -644,6 +728,16 @@
 HIGHBD_H_WXH_LARGE(64, 16)
 HIGHBD_H_WXH_LARGE(64, 32)
 HIGHBD_H_WXH_LARGE(64, 64)
+#else
+HIGHBD_H_WXH_LARGE(8, 16)
+HIGHBD_H_WXH_LARGE(16, 16)
+HIGHBD_H_WXH_LARGE(16, 32)
+HIGHBD_H_WXH_LARGE(32, 16)
+HIGHBD_H_WXH_LARGE(32, 32)
+HIGHBD_H_WXH_LARGE(32, 64)
+HIGHBD_H_WXH_LARGE(64, 32)
+HIGHBD_H_WXH_LARGE(64, 64)
+#endif  // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 
 #undef HIGHBD_H_WXH_LARGE
 
@@ -706,6 +800,7 @@
     highbd_paeth_4or8_x_h_neon(dst, stride, above, left, W, H); \
   }
 
+#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 HIGHBD_PAETH_NXM(4, 4)
 HIGHBD_PAETH_NXM(4, 8)
 HIGHBD_PAETH_NXM(4, 16)
@@ -713,6 +808,13 @@
 HIGHBD_PAETH_NXM(8, 8)
 HIGHBD_PAETH_NXM(8, 16)
 HIGHBD_PAETH_NXM(8, 32)
+#else
+HIGHBD_PAETH_NXM(4, 4)
+HIGHBD_PAETH_NXM(4, 8)
+HIGHBD_PAETH_NXM(8, 4)
+HIGHBD_PAETH_NXM(8, 8)
+HIGHBD_PAETH_NXM(8, 16)
+#endif  // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 
 // Select the closest values and collect them.
 static inline uint16x8_t select_paeth(const uint16x8_t top,
@@ -798,6 +900,7 @@
     highbd_paeth16_plus_x_h_neon(dst, stride, above, left, W, H); \
   }
 
+#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 HIGHBD_PAETH_NXM_WIDE(16, 4)
 HIGHBD_PAETH_NXM_WIDE(16, 8)
 HIGHBD_PAETH_NXM_WIDE(16, 16)
@@ -810,6 +913,16 @@
 HIGHBD_PAETH_NXM_WIDE(64, 16)
 HIGHBD_PAETH_NXM_WIDE(64, 32)
 HIGHBD_PAETH_NXM_WIDE(64, 64)
+#else
+HIGHBD_PAETH_NXM_WIDE(16, 8)
+HIGHBD_PAETH_NXM_WIDE(16, 16)
+HIGHBD_PAETH_NXM_WIDE(16, 32)
+HIGHBD_PAETH_NXM_WIDE(32, 16)
+HIGHBD_PAETH_NXM_WIDE(32, 32)
+HIGHBD_PAETH_NXM_WIDE(32, 64)
+HIGHBD_PAETH_NXM_WIDE(64, 32)
+HIGHBD_PAETH_NXM_WIDE(64, 64)
+#endif  // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 
 // -----------------------------------------------------------------------------
 // SMOOTH
@@ -916,6 +1029,7 @@
     highbd_smooth_##W##xh_neon(dst, y_stride, above, left, H);  \
   }
 
+#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 HIGHBD_SMOOTH_NXM(4, 4)
 HIGHBD_SMOOTH_NXM(4, 8)
 HIGHBD_SMOOTH_NXM(8, 4)
@@ -923,6 +1037,13 @@
 HIGHBD_SMOOTH_NXM(4, 16)
 HIGHBD_SMOOTH_NXM(8, 16)
 HIGHBD_SMOOTH_NXM(8, 32)
+#else
+HIGHBD_SMOOTH_NXM(4, 4)
+HIGHBD_SMOOTH_NXM(4, 8)
+HIGHBD_SMOOTH_NXM(8, 4)
+HIGHBD_SMOOTH_NXM(8, 8)
+HIGHBD_SMOOTH_NXM(8, 16)
+#endif  // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 
 #undef HIGHBD_SMOOTH_NXM
 
@@ -989,6 +1110,7 @@
     highbd_smooth_##W##xh_neon(dst, y_stride, above, left, H);  \
   }
 
+#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 HIGHBD_SMOOTH_NXM_WIDE(16, 4)
 HIGHBD_SMOOTH_NXM_WIDE(16, 8)
 HIGHBD_SMOOTH_NXM_WIDE(16, 16)
@@ -1001,6 +1123,16 @@
 HIGHBD_SMOOTH_NXM_WIDE(64, 16)
 HIGHBD_SMOOTH_NXM_WIDE(64, 32)
 HIGHBD_SMOOTH_NXM_WIDE(64, 64)
+#else
+HIGHBD_SMOOTH_NXM_WIDE(16, 8)
+HIGHBD_SMOOTH_NXM_WIDE(16, 16)
+HIGHBD_SMOOTH_NXM_WIDE(16, 32)
+HIGHBD_SMOOTH_NXM_WIDE(32, 16)
+HIGHBD_SMOOTH_NXM_WIDE(32, 32)
+HIGHBD_SMOOTH_NXM_WIDE(32, 64)
+HIGHBD_SMOOTH_NXM_WIDE(64, 32)
+HIGHBD_SMOOTH_NXM_WIDE(64, 64)
+#endif  // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 
 #undef HIGHBD_SMOOTH_NXM_WIDE
 
@@ -1060,6 +1192,7 @@
     highbd_smooth_v_##W##xh_neon(dst, y_stride, above, left, H); \
   }
 
+#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 HIGHBD_SMOOTH_V_NXM(4, 4)
 HIGHBD_SMOOTH_V_NXM(4, 8)
 HIGHBD_SMOOTH_V_NXM(4, 16)
@@ -1067,6 +1200,13 @@
 HIGHBD_SMOOTH_V_NXM(8, 8)
 HIGHBD_SMOOTH_V_NXM(8, 16)
 HIGHBD_SMOOTH_V_NXM(8, 32)
+#else
+HIGHBD_SMOOTH_V_NXM(4, 4)
+HIGHBD_SMOOTH_V_NXM(4, 8)
+HIGHBD_SMOOTH_V_NXM(8, 4)
+HIGHBD_SMOOTH_V_NXM(8, 8)
+HIGHBD_SMOOTH_V_NXM(8, 16)
+#endif  // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 
 #undef HIGHBD_SMOOTH_V_NXM
 
@@ -1121,6 +1261,7 @@
     highbd_smooth_v_##W##xh_neon(dst, y_stride, above, left, H); \
   }
 
+#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 HIGHBD_SMOOTH_V_NXM_WIDE(16, 4)
 HIGHBD_SMOOTH_V_NXM_WIDE(16, 8)
 HIGHBD_SMOOTH_V_NXM_WIDE(16, 16)
@@ -1133,6 +1274,16 @@
 HIGHBD_SMOOTH_V_NXM_WIDE(64, 16)
 HIGHBD_SMOOTH_V_NXM_WIDE(64, 32)
 HIGHBD_SMOOTH_V_NXM_WIDE(64, 64)
+#else
+HIGHBD_SMOOTH_V_NXM_WIDE(16, 8)
+HIGHBD_SMOOTH_V_NXM_WIDE(16, 16)
+HIGHBD_SMOOTH_V_NXM_WIDE(16, 32)
+HIGHBD_SMOOTH_V_NXM_WIDE(32, 16)
+HIGHBD_SMOOTH_V_NXM_WIDE(32, 32)
+HIGHBD_SMOOTH_V_NXM_WIDE(32, 64)
+HIGHBD_SMOOTH_V_NXM_WIDE(64, 32)
+HIGHBD_SMOOTH_V_NXM_WIDE(64, 64)
+#endif  // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 
 #undef HIGHBD_SMOOTH_V_NXM_WIDE
 
@@ -1190,6 +1341,7 @@
     highbd_smooth_h_##W##xh_neon(dst, y_stride, above, left, H); \
   }
 
+#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 HIGHBD_SMOOTH_H_NXM(4, 4)
 HIGHBD_SMOOTH_H_NXM(4, 8)
 HIGHBD_SMOOTH_H_NXM(4, 16)
@@ -1197,6 +1349,13 @@
 HIGHBD_SMOOTH_H_NXM(8, 8)
 HIGHBD_SMOOTH_H_NXM(8, 16)
 HIGHBD_SMOOTH_H_NXM(8, 32)
+#else
+HIGHBD_SMOOTH_H_NXM(4, 4)
+HIGHBD_SMOOTH_H_NXM(4, 8)
+HIGHBD_SMOOTH_H_NXM(8, 4)
+HIGHBD_SMOOTH_H_NXM(8, 8)
+HIGHBD_SMOOTH_H_NXM(8, 16)
+#endif  // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 
 #undef HIGHBD_SMOOTH_H_NXM
 
@@ -1254,6 +1413,7 @@
     highbd_smooth_h_##W##xh_neon(dst, y_stride, above, left, H); \
   }
 
+#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 HIGHBD_SMOOTH_H_NXM_WIDE(16, 4)
 HIGHBD_SMOOTH_H_NXM_WIDE(16, 8)
 HIGHBD_SMOOTH_H_NXM_WIDE(16, 16)
@@ -1266,6 +1426,16 @@
 HIGHBD_SMOOTH_H_NXM_WIDE(64, 16)
 HIGHBD_SMOOTH_H_NXM_WIDE(64, 32)
 HIGHBD_SMOOTH_H_NXM_WIDE(64, 64)
+#else
+HIGHBD_SMOOTH_H_NXM_WIDE(16, 8)
+HIGHBD_SMOOTH_H_NXM_WIDE(16, 16)
+HIGHBD_SMOOTH_H_NXM_WIDE(16, 32)
+HIGHBD_SMOOTH_H_NXM_WIDE(32, 16)
+HIGHBD_SMOOTH_H_NXM_WIDE(32, 32)
+HIGHBD_SMOOTH_H_NXM_WIDE(32, 64)
+HIGHBD_SMOOTH_H_NXM_WIDE(64, 32)
+HIGHBD_SMOOTH_H_NXM_WIDE(64, 64)
+#endif  // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 
 #undef HIGHBD_SMOOTH_H_NXM_WIDE
 
@@ -1898,6 +2068,7 @@
     } while (++r < bh);                                                    \
   }
 
+#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 HIGHBD_DR_PREDICTOR_Z2_WXH(4, 16)
 HIGHBD_DR_PREDICTOR_Z2_WXH(8, 16)
 HIGHBD_DR_PREDICTOR_Z2_WXH(8, 32)
@@ -1913,6 +2084,16 @@
 HIGHBD_DR_PREDICTOR_Z2_WXH(64, 16)
 HIGHBD_DR_PREDICTOR_Z2_WXH(64, 32)
 HIGHBD_DR_PREDICTOR_Z2_WXH(64, 64)
+#else
+HIGHBD_DR_PREDICTOR_Z2_WXH(8, 16)
+HIGHBD_DR_PREDICTOR_Z2_WXH(16, 8)
+HIGHBD_DR_PREDICTOR_Z2_WXH(16, 16)
+HIGHBD_DR_PREDICTOR_Z2_WXH(16, 32)
+HIGHBD_DR_PREDICTOR_Z2_WXH(32, 32)
+HIGHBD_DR_PREDICTOR_Z2_WXH(32, 64)
+HIGHBD_DR_PREDICTOR_Z2_WXH(64, 32)
+HIGHBD_DR_PREDICTOR_Z2_WXH(64, 64)
+#endif  // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 
 #undef HIGHBD_DR_PREDICTOR_Z2_WXH
 
@@ -2440,6 +2621,7 @@
   }
 }
 
+#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 static highbd_dr_prediction_z2_ptr dr_predictor_z2_arr_neon[7][7] = {
   { NULL, NULL, NULL, NULL, NULL, NULL, NULL },
   { NULL, NULL, NULL, NULL, NULL, NULL, NULL },
@@ -2458,6 +2640,24 @@
   { NULL, NULL, NULL, NULL, &highbd_dr_prediction_z2_64x16_neon,
     &highbd_dr_prediction_z2_64x32_neon, &highbd_dr_prediction_z2_64x64_neon },
 };
+#else
+static highbd_dr_prediction_z2_ptr dr_predictor_z2_arr_neon[7][7] = {
+  { NULL, NULL, NULL, NULL, NULL, NULL, NULL },
+  { NULL, NULL, NULL, NULL, NULL, NULL, NULL },
+  { NULL, NULL, &highbd_dr_prediction_z2_4x4_neon,
+    &highbd_dr_prediction_z2_4x8_neon, NULL, NULL, NULL },
+  { NULL, NULL, &highbd_dr_prediction_z2_8x4_neon,
+    &highbd_dr_prediction_z2_8x8_neon, &highbd_dr_prediction_z2_8x16_neon, NULL,
+    NULL },
+  { NULL, NULL, NULL, &highbd_dr_prediction_z2_16x8_neon,
+    &highbd_dr_prediction_z2_16x16_neon, &highbd_dr_prediction_z2_16x32_neon,
+    NULL },
+  { NULL, NULL, NULL, NULL, NULL, &highbd_dr_prediction_z2_32x32_neon,
+    &highbd_dr_prediction_z2_32x64_neon },
+  { NULL, NULL, NULL, NULL, NULL, &highbd_dr_prediction_z2_64x32_neon,
+    &highbd_dr_prediction_z2_64x64_neon },
+};
+#endif  // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 
 // Directional prediction, zone 2: 90 < angle < 180
 void av1_highbd_dr_prediction_z2_neon(uint16_t *dst, ptrdiff_t stride, int bw,
diff --git a/aom_dsp/arm/intrapred_neon.c b/aom_dsp/arm/intrapred_neon.c
index e44e186..caf385c 100644
--- a/aom_dsp/arm/intrapred_neon.c
+++ b/aom_dsp/arm/intrapred_neon.c
@@ -374,6 +374,7 @@
   dc_store_8xh(dst, stride, 4, vdup_n_u8(dc));
 }
 
+#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 void aom_dc_predictor_4x16_neon(uint8_t *dst, ptrdiff_t stride,
                                 const uint8_t *above, const uint8_t *left) {
   uint8x8_t a = load_u8_4x1(above);
@@ -393,6 +394,7 @@
   uint32_t dc = calculate_dc_from_sum(16, 4, sum, 2, DC_MULTIPLIER_1X4);
   dc_store_16xh(dst, stride, 4, vdupq_n_u8(dc));
 }
+#endif  // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 
 void aom_dc_predictor_8x16_neon(uint8_t *dst, ptrdiff_t stride,
                                 const uint8_t *above, const uint8_t *left) {
@@ -414,6 +416,7 @@
   dc_store_16xh(dst, stride, 8, vdupq_n_u8(dc));
 }
 
+#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 void aom_dc_predictor_8x32_neon(uint8_t *dst, ptrdiff_t stride,
                                 const uint8_t *above, const uint8_t *left) {
   uint8x8_t a = vld1_u8(above);
@@ -433,6 +436,7 @@
   uint32_t dc = calculate_dc_from_sum(32, 8, sum, 3, DC_MULTIPLIER_1X4);
   dc_store_32xh(dst, stride, 8, vdupq_n_u8(dc));
 }
+#endif  // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 
 void aom_dc_predictor_16x32_neon(uint8_t *dst, ptrdiff_t stride,
                                  const uint8_t *above, const uint8_t *left) {
@@ -454,6 +458,7 @@
   dc_store_32xh(dst, stride, 16, vdupq_n_u8(dc));
 }
 
+#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 void aom_dc_predictor_16x64_neon(uint8_t *dst, ptrdiff_t stride,
                                  const uint8_t *above, const uint8_t *left) {
   uint16x8_t sum_above = dc_load_partial_sum_16(above);
@@ -473,6 +478,7 @@
   uint32_t dc = calculate_dc_from_sum(64, 16, sum, 4, DC_MULTIPLIER_1X4);
   dc_store_64xh(dst, stride, 16, vdupq_n_u8(dc));
 }
+#endif  // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 
 void aom_dc_predictor_32x64_neon(uint8_t *dst, ptrdiff_t stride,
                                  const uint8_t *above, const uint8_t *left) {
@@ -506,20 +512,22 @@
     dc_store_##w##xh(dst, stride, (h), vdup##q##_n_u8(0x80));                \
   }
 
-DC_PREDICTOR_128(4, 8, )
+#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 DC_PREDICTOR_128(4, 16, )
-DC_PREDICTOR_128(8, 4, )
-DC_PREDICTOR_128(8, 16, )
 DC_PREDICTOR_128(8, 32, )
 DC_PREDICTOR_128(16, 4, q)
-DC_PREDICTOR_128(16, 8, q)
-DC_PREDICTOR_128(16, 32, q)
 DC_PREDICTOR_128(16, 64, q)
 DC_PREDICTOR_128(32, 8, q)
+DC_PREDICTOR_128(64, 16, q)
+#endif  // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
+DC_PREDICTOR_128(4, 8, )
+DC_PREDICTOR_128(8, 4, )
+DC_PREDICTOR_128(8, 16, )
+DC_PREDICTOR_128(16, 8, q)
+DC_PREDICTOR_128(16, 32, q)
 DC_PREDICTOR_128(32, 16, q)
 DC_PREDICTOR_128(32, 64, q)
 DC_PREDICTOR_128(64, 32, q)
-DC_PREDICTOR_128(64, 16, q)
 
 #undef DC_PREDICTOR_128
 
@@ -541,12 +549,14 @@
 DC_PREDICTOR_LEFT(32, 16, 4, q)
 DC_PREDICTOR_LEFT(32, 64, 6, q)
 DC_PREDICTOR_LEFT(64, 32, 5, q)
+#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 DC_PREDICTOR_LEFT(4, 16, 4, )
 DC_PREDICTOR_LEFT(16, 4, 2, q)
 DC_PREDICTOR_LEFT(8, 32, 5, )
 DC_PREDICTOR_LEFT(32, 8, 3, q)
 DC_PREDICTOR_LEFT(16, 64, 6, q)
 DC_PREDICTOR_LEFT(64, 16, 4, q)
+#endif  // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 
 #undef DC_PREDICTOR_LEFT
 
@@ -560,19 +570,21 @@
     dc_store_##w##xh(dst, stride, (h), vdup##q##_lane_u8(dc0, 0));           \
   }
 
-DC_PREDICTOR_TOP(4, 8, 2, )
-DC_PREDICTOR_TOP(4, 16, 2, )
-DC_PREDICTOR_TOP(8, 4, 3, )
-DC_PREDICTOR_TOP(8, 16, 3, )
+#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 DC_PREDICTOR_TOP(8, 32, 3, )
+DC_PREDICTOR_TOP(4, 16, 2, )
 DC_PREDICTOR_TOP(16, 4, 4, q)
-DC_PREDICTOR_TOP(16, 8, 4, q)
-DC_PREDICTOR_TOP(16, 32, 4, q)
 DC_PREDICTOR_TOP(16, 64, 4, q)
 DC_PREDICTOR_TOP(32, 8, 5, q)
+DC_PREDICTOR_TOP(64, 16, 6, q)
+#endif  // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
+DC_PREDICTOR_TOP(4, 8, 2, )
+DC_PREDICTOR_TOP(8, 4, 3, )
+DC_PREDICTOR_TOP(8, 16, 3, )
+DC_PREDICTOR_TOP(16, 8, 4, q)
+DC_PREDICTOR_TOP(16, 32, 4, q)
 DC_PREDICTOR_TOP(32, 16, 5, q)
 DC_PREDICTOR_TOP(32, 64, 5, q)
-DC_PREDICTOR_TOP(64, 16, 6, q)
 DC_PREDICTOR_TOP(64, 32, 6, q)
 
 #undef DC_PREDICTOR_TOP
@@ -653,11 +665,13 @@
   v_store_4xh(dst, stride, 8, load_u8_4x1(above));
 }
 
+#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 void aom_v_predictor_4x16_neon(uint8_t *dst, ptrdiff_t stride,
                                const uint8_t *above, const uint8_t *left) {
   (void)left;
   v_store_4xh(dst, stride, 16, load_u8_4x1(above));
 }
+#endif  // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 
 void aom_v_predictor_8x4_neon(uint8_t *dst, ptrdiff_t stride,
                               const uint8_t *above, const uint8_t *left) {
@@ -671,6 +685,7 @@
   v_store_8xh(dst, stride, 16, vld1_u8(above));
 }
 
+#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 void aom_v_predictor_8x32_neon(uint8_t *dst, ptrdiff_t stride,
                                const uint8_t *above, const uint8_t *left) {
   (void)left;
@@ -682,6 +697,7 @@
   (void)left;
   v_store_16xh(dst, stride, 4, vld1q_u8(above));
 }
+#endif  // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 
 void aom_v_predictor_16x8_neon(uint8_t *dst, ptrdiff_t stride,
                                const uint8_t *above, const uint8_t *left) {
@@ -695,6 +711,7 @@
   v_store_16xh(dst, stride, 32, vld1q_u8(above));
 }
 
+#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 void aom_v_predictor_16x64_neon(uint8_t *dst, ptrdiff_t stride,
                                 const uint8_t *above, const uint8_t *left) {
   (void)left;
@@ -708,6 +725,7 @@
   (void)left;
   v_store_32xh(dst, stride, 8, d0, d1);
 }
+#endif  // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 
 void aom_v_predictor_32x16_neon(uint8_t *dst, ptrdiff_t stride,
                                 const uint8_t *above, const uint8_t *left) {
@@ -725,6 +743,7 @@
   v_store_32xh(dst, stride, 64, d0, d1);
 }
 
+#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 void aom_v_predictor_64x16_neon(uint8_t *dst, ptrdiff_t stride,
                                 const uint8_t *above, const uint8_t *left) {
   const uint8x16_t d0 = vld1q_u8(above);
@@ -734,6 +753,7 @@
   (void)left;
   v_store_64xh(dst, stride, 16, d0, d1, d2, d3);
 }
+#endif  // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 
 void aom_v_predictor_64x32_neon(uint8_t *dst, ptrdiff_t stride,
                                 const uint8_t *above, const uint8_t *left) {
@@ -901,6 +921,7 @@
   h_store_4x8(dst, stride, d0);
 }
 
+#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 void aom_h_predictor_4x16_neon(uint8_t *dst, ptrdiff_t stride,
                                const uint8_t *above, const uint8_t *left) {
   const uint8x16_t d0 = vld1q_u8(left);
@@ -908,6 +929,7 @@
   h_store_4x8(dst + 0 * stride, stride, vget_low_u8(d0));
   h_store_4x8(dst + 8 * stride, stride, vget_high_u8(d0));
 }
+#endif  // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 
 void aom_h_predictor_8x4_neon(uint8_t *dst, ptrdiff_t stride,
                               const uint8_t *above, const uint8_t *left) {
@@ -927,6 +949,7 @@
   h_store_8x8(dst + 8 * stride, stride, vget_high_u8(d0));
 }
 
+#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 void aom_h_predictor_8x32_neon(uint8_t *dst, ptrdiff_t stride,
                                const uint8_t *above, const uint8_t *left) {
   const uint8x16_t d0 = vld1q_u8(left);
@@ -947,6 +970,7 @@
   vst1q_u8(dst + 2 * stride, vdupq_lane_u8(d0, 2));
   vst1q_u8(dst + 3 * stride, vdupq_lane_u8(d0, 3));
 }
+#endif  // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 
 void aom_h_predictor_16x8_neon(uint8_t *dst, ptrdiff_t stride,
                                const uint8_t *above, const uint8_t *left) {
@@ -966,6 +990,7 @@
   h_store_16x8(dst + 24 * stride, stride, vget_high_u8(d1));
 }
 
+#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 void aom_h_predictor_16x64_neon(uint8_t *dst, ptrdiff_t stride,
                                 const uint8_t *above, const uint8_t *left) {
   const uint8x16_t d0 = vld1q_u8(left);
@@ -989,6 +1014,7 @@
   (void)above;
   h_store_32x8(dst, stride, d0);
 }
+#endif  // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 
 void aom_h_predictor_32x16_neon(uint8_t *dst, ptrdiff_t stride,
                                 const uint8_t *above, const uint8_t *left) {
@@ -1015,6 +1041,7 @@
   h_store_32x8(dst + 56 * stride, stride, vget_high_u8(d3));
 }
 
+#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 void aom_h_predictor_64x16_neon(uint8_t *dst, ptrdiff_t stride,
                                 const uint8_t *above, const uint8_t *left) {
   const uint8x16_t d0 = vld1q_u8(left);
@@ -1022,6 +1049,7 @@
   h_store_64x8(dst + 0 * stride, stride, vget_low_u8(d0));
   h_store_64x8(dst + 8 * stride, stride, vget_high_u8(d0));
 }
+#endif  // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 
 void aom_h_predictor_64x32_neon(uint8_t *dst, ptrdiff_t stride,
                                 const uint8_t *above, const uint8_t *left) {
@@ -2040,7 +2068,7 @@
 }
 
 /* ---------------------P R E D I C T I O N   Z 3--------------------------- */
-
+#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 static AOM_FORCE_INLINE void z3_transpose_arrays_u8_16x4(const uint8x16_t *x,
                                                          uint8x16x2_t *d) {
   uint8x16x2_t w0 = vzipq_u8(x[0], x[1]);
@@ -2051,6 +2079,7 @@
   d[1] = aom_reinterpretq_u8_u16_x2(vzipq_u16(vreinterpretq_u16_u8(w0.val[1]),
                                               vreinterpretq_u16_u8(w1.val[1])));
 }
+#endif  // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 
 static AOM_FORCE_INLINE void z3_transpose_arrays_u8_4x4(const uint8x8_t *x,
                                                         uint8x8x2_t *d) {
@@ -2173,6 +2202,7 @@
   }
 }
 
+#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 static void dr_prediction_z3_4x16_neon(uint8_t *dst, ptrdiff_t stride,
                                        const uint8_t *left, int upsample_left,
                                        int dy) {
@@ -2233,6 +2263,7 @@
     vst1q_u8(dst + i * stride + 16, d[i + 8]);
   }
 }
+#endif  // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 
 static void dr_prediction_z3_16x16_neon(uint8_t *dst, ptrdiff_t stride,
                                         const uint8_t *left, int upsample_left,
@@ -2323,6 +2354,7 @@
   z3_transpose_arrays_u8_16nx16n(dstT, 32, dst, stride, 64, 32);
 }
 
+#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 static void dr_prediction_z3_16x64_neon(uint8_t *dst, ptrdiff_t stride,
                                         const uint8_t *left, int upsample_left,
                                         int dy) {
@@ -2347,11 +2379,28 @@
     }
   }
 }
+#endif  // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 
 typedef void (*dr_prediction_z3_fn)(uint8_t *dst, ptrdiff_t stride,
                                     const uint8_t *left, int upsample_left,
                                     int dy);
 
+#if CONFIG_REALTIME_ONLY && !CONFIG_AV1_DECODER
+static const dr_prediction_z3_fn dr_prediction_z3_arr[7][7] = {
+  { NULL, NULL, NULL, NULL, NULL, NULL, NULL },
+  { NULL, NULL, NULL, NULL, NULL, NULL, NULL },
+  { NULL, NULL, dr_prediction_z3_4x4_neon, dr_prediction_z3_4x8_neon, NULL,
+    NULL, NULL },
+  { NULL, NULL, dr_prediction_z3_8x4_neon, dr_prediction_z3_8x8_neon,
+    dr_prediction_z3_8x16_neon, NULL, NULL },
+  { NULL, NULL, NULL, dr_prediction_z3_16x8_neon, dr_prediction_z3_16x16_neon,
+    dr_prediction_z3_16x32_neon, NULL },
+  { NULL, NULL, NULL, NULL, dr_prediction_z3_32x16_neon,
+    dr_prediction_z3_32x32_neon, dr_prediction_z3_32x64_neon },
+  { NULL, NULL, NULL, NULL, NULL, dr_prediction_z3_64x32_neon,
+    dr_prediction_z3_64x64_neon },
+};
+#else
 static const dr_prediction_z3_fn dr_prediction_z3_arr[7][7] = {
   { NULL, NULL, NULL, NULL, NULL, NULL, NULL },
   { NULL, NULL, NULL, NULL, NULL, NULL, NULL },
@@ -2367,6 +2416,7 @@
   { NULL, NULL, NULL, NULL, dr_prediction_z3_64x16_neon,
     dr_prediction_z3_64x32_neon, dr_prediction_z3_64x64_neon },
 };
+#endif  // CONFIG_REALTIME_ONLY && !CONFIG_AV1_DECODER
 
 void av1_dr_prediction_z3_neon(uint8_t *dst, ptrdiff_t stride, int bw, int bh,
                                const uint8_t *above, const uint8_t *left,
@@ -2483,9 +2533,11 @@
 SMOOTH_NXM(4, 8)
 SMOOTH_NXM(8, 4)
 SMOOTH_NXM(8, 8)
-SMOOTH_NXM(4, 16)
 SMOOTH_NXM(8, 16)
+#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
+SMOOTH_NXM(4, 16)
 SMOOTH_NXM(8, 32)
+#endif  // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 
 #undef SMOOTH_NXM
 
@@ -2604,16 +2656,18 @@
     smooth_##W##xh_neon(dst, y_stride, above, left, H);                        \
   }
 
+#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 SMOOTH_NXM_WIDE(16, 4)
+SMOOTH_NXM_WIDE(16, 64)
+SMOOTH_NXM_WIDE(32, 8)
+SMOOTH_NXM_WIDE(64, 16)
+#endif  // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 SMOOTH_NXM_WIDE(16, 8)
 SMOOTH_NXM_WIDE(16, 16)
 SMOOTH_NXM_WIDE(16, 32)
-SMOOTH_NXM_WIDE(16, 64)
-SMOOTH_NXM_WIDE(32, 8)
 SMOOTH_NXM_WIDE(32, 16)
 SMOOTH_NXM_WIDE(32, 32)
 SMOOTH_NXM_WIDE(32, 64)
-SMOOTH_NXM_WIDE(64, 16)
 SMOOTH_NXM_WIDE(64, 32)
 SMOOTH_NXM_WIDE(64, 64)
 
@@ -2672,13 +2726,15 @@
     smooth_v_##W##xh_neon(dst, y_stride, above, left, H);     \
   }
 
+#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
+SMOOTH_V_NXM(4, 16)
+SMOOTH_V_NXM(8, 32)
+#endif  // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 SMOOTH_V_NXM(4, 4)
 SMOOTH_V_NXM(4, 8)
-SMOOTH_V_NXM(4, 16)
 SMOOTH_V_NXM(8, 4)
 SMOOTH_V_NXM(8, 8)
 SMOOTH_V_NXM(8, 16)
-SMOOTH_V_NXM(8, 32)
 
 #undef SMOOTH_V_NXM
 
@@ -2761,16 +2817,18 @@
     smooth_v_##W##xh_neon(dst, y_stride, above, left, H);     \
   }
 
+#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 SMOOTH_V_NXM_WIDE(16, 4)
+SMOOTH_V_NXM_WIDE(32, 8)
+SMOOTH_V_NXM_WIDE(64, 16)
+SMOOTH_V_NXM_WIDE(16, 64)
+#endif  // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 SMOOTH_V_NXM_WIDE(16, 8)
 SMOOTH_V_NXM_WIDE(16, 16)
 SMOOTH_V_NXM_WIDE(16, 32)
-SMOOTH_V_NXM_WIDE(16, 64)
-SMOOTH_V_NXM_WIDE(32, 8)
 SMOOTH_V_NXM_WIDE(32, 16)
 SMOOTH_V_NXM_WIDE(32, 32)
 SMOOTH_V_NXM_WIDE(32, 64)
-SMOOTH_V_NXM_WIDE(64, 16)
 SMOOTH_V_NXM_WIDE(64, 32)
 SMOOTH_V_NXM_WIDE(64, 64)
 
@@ -2822,13 +2880,15 @@
     smooth_h_##W##xh_neon(dst, y_stride, above, left, H);     \
   }
 
+#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
+SMOOTH_H_NXM(4, 16)
+SMOOTH_H_NXM(8, 32)
+#endif  // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 SMOOTH_H_NXM(4, 4)
 SMOOTH_H_NXM(4, 8)
-SMOOTH_H_NXM(4, 16)
 SMOOTH_H_NXM(8, 4)
 SMOOTH_H_NXM(8, 8)
 SMOOTH_H_NXM(8, 16)
-SMOOTH_H_NXM(8, 32)
 
 #undef SMOOTH_H_NXM
 
@@ -2920,16 +2980,18 @@
     smooth_h_##W##xh_neon(dst, y_stride, above, left, H);     \
   }
 
+#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 SMOOTH_H_NXM_WIDE(16, 4)
+SMOOTH_H_NXM_WIDE(16, 64)
+SMOOTH_H_NXM_WIDE(32, 8)
+SMOOTH_H_NXM_WIDE(64, 16)
+#endif  // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 SMOOTH_H_NXM_WIDE(16, 8)
 SMOOTH_H_NXM_WIDE(16, 16)
 SMOOTH_H_NXM_WIDE(16, 32)
-SMOOTH_H_NXM_WIDE(16, 64)
-SMOOTH_H_NXM_WIDE(32, 8)
 SMOOTH_H_NXM_WIDE(32, 16)
 SMOOTH_H_NXM_WIDE(32, 32)
 SMOOTH_H_NXM_WIDE(32, 64)
-SMOOTH_H_NXM_WIDE(64, 16)
 SMOOTH_H_NXM_WIDE(64, 32)
 SMOOTH_H_NXM_WIDE(64, 64)
 
@@ -2997,15 +3059,16 @@
     paeth_4or8_x_h_neon(dst, stride, above, left, W, H);                    \
   }
 
+#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
+PAETH_NXM(4, 16)
+PAETH_NXM(8, 32)
+#endif  // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 PAETH_NXM(4, 4)
 PAETH_NXM(4, 8)
 PAETH_NXM(8, 4)
 PAETH_NXM(8, 8)
 PAETH_NXM(8, 16)
 
-PAETH_NXM(4, 16)
-PAETH_NXM(8, 32)
-
 // Calculate X distance <= TopLeft distance and pack the resulting mask into
 // uint8x8_t.
 static inline uint8x16_t x_le_top_left(const uint8x16_t x_dist,
@@ -3138,6 +3201,12 @@
     paeth16_plus_x_h_neon(dst, stride, above, left, W, H);                  \
   }
 
+#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
+PAETH_NXM_WIDE(16, 4)
+PAETH_NXM_WIDE(16, 64)
+PAETH_NXM_WIDE(32, 8)
+PAETH_NXM_WIDE(64, 16)
+#endif  // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 PAETH_NXM_WIDE(16, 8)
 PAETH_NXM_WIDE(16, 16)
 PAETH_NXM_WIDE(16, 32)
@@ -3146,8 +3215,3 @@
 PAETH_NXM_WIDE(32, 64)
 PAETH_NXM_WIDE(64, 32)
 PAETH_NXM_WIDE(64, 64)
-
-PAETH_NXM_WIDE(16, 4)
-PAETH_NXM_WIDE(16, 64)
-PAETH_NXM_WIDE(32, 8)
-PAETH_NXM_WIDE(64, 16)
diff --git a/aom_dsp/intrapred.c b/aom_dsp/intrapred.c
index ad7a25c..6affefe 100644
--- a/aom_dsp/intrapred.c
+++ b/aom_dsp/intrapred.c
@@ -297,6 +297,7 @@
   dc_predictor_rect(dst, stride, 8, 4, above, left, 2, DC_MULTIPLIER_1X2);
 }
 
+#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 void aom_dc_predictor_4x16_c(uint8_t *dst, ptrdiff_t stride,
                              const uint8_t *above, const uint8_t *left) {
   dc_predictor_rect(dst, stride, 4, 16, above, left, 2, DC_MULTIPLIER_1X4);
@@ -306,6 +307,7 @@
                              const uint8_t *above, const uint8_t *left) {
   dc_predictor_rect(dst, stride, 16, 4, above, left, 2, DC_MULTIPLIER_1X4);
 }
+#endif  // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 
 void aom_dc_predictor_8x16_c(uint8_t *dst, ptrdiff_t stride,
                              const uint8_t *above, const uint8_t *left) {
@@ -317,6 +319,7 @@
   dc_predictor_rect(dst, stride, 16, 8, above, left, 3, DC_MULTIPLIER_1X2);
 }
 
+#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 void aom_dc_predictor_8x32_c(uint8_t *dst, ptrdiff_t stride,
                              const uint8_t *above, const uint8_t *left) {
   dc_predictor_rect(dst, stride, 8, 32, above, left, 3, DC_MULTIPLIER_1X4);
@@ -326,6 +329,7 @@
                              const uint8_t *above, const uint8_t *left) {
   dc_predictor_rect(dst, stride, 32, 8, above, left, 3, DC_MULTIPLIER_1X4);
 }
+#endif  // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 
 void aom_dc_predictor_16x32_c(uint8_t *dst, ptrdiff_t stride,
                               const uint8_t *above, const uint8_t *left) {
@@ -337,6 +341,7 @@
   dc_predictor_rect(dst, stride, 32, 16, above, left, 4, DC_MULTIPLIER_1X2);
 }
 
+#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 void aom_dc_predictor_16x64_c(uint8_t *dst, ptrdiff_t stride,
                               const uint8_t *above, const uint8_t *left) {
   dc_predictor_rect(dst, stride, 16, 64, above, left, 4, DC_MULTIPLIER_1X4);
@@ -346,6 +351,7 @@
                               const uint8_t *above, const uint8_t *left) {
   dc_predictor_rect(dst, stride, 64, 16, above, left, 4, DC_MULTIPLIER_1X4);
 }
+#endif  // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 
 void aom_dc_predictor_32x64_c(uint8_t *dst, ptrdiff_t stride,
                               const uint8_t *above, const uint8_t *left) {
@@ -620,6 +626,7 @@
                            HIGHBD_DC_MULTIPLIER_1X2);
 }
 
+#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 void aom_highbd_dc_predictor_4x16_c(uint16_t *dst, ptrdiff_t stride,
                                     const uint16_t *above, const uint16_t *left,
                                     int bd) {
@@ -633,6 +640,7 @@
   highbd_dc_predictor_rect(dst, stride, 16, 4, above, left, bd, 2,
                            HIGHBD_DC_MULTIPLIER_1X4);
 }
+#endif  // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 
 void aom_highbd_dc_predictor_8x16_c(uint16_t *dst, ptrdiff_t stride,
                                     const uint16_t *above, const uint16_t *left,
@@ -648,6 +656,7 @@
                            HIGHBD_DC_MULTIPLIER_1X2);
 }
 
+#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 void aom_highbd_dc_predictor_8x32_c(uint16_t *dst, ptrdiff_t stride,
                                     const uint16_t *above, const uint16_t *left,
                                     int bd) {
@@ -661,6 +670,7 @@
   highbd_dc_predictor_rect(dst, stride, 32, 8, above, left, bd, 3,
                            HIGHBD_DC_MULTIPLIER_1X4);
 }
+#endif  // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 
 void aom_highbd_dc_predictor_16x32_c(uint16_t *dst, ptrdiff_t stride,
                                      const uint16_t *above,
@@ -676,6 +686,7 @@
                            HIGHBD_DC_MULTIPLIER_1X2);
 }
 
+#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 void aom_highbd_dc_predictor_16x64_c(uint16_t *dst, ptrdiff_t stride,
                                      const uint16_t *above,
                                      const uint16_t *left, int bd) {
@@ -689,6 +700,7 @@
   highbd_dc_predictor_rect(dst, stride, 64, 16, above, left, bd, 4,
                            HIGHBD_DC_MULTIPLIER_1X4);
 }
+#endif  // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 
 void aom_highbd_dc_predictor_32x64_c(uint16_t *dst, ptrdiff_t stride,
                                      const uint16_t *above,
@@ -730,6 +742,25 @@
 #endif  // CONFIG_AV1_HIGHBITDEPTH
 
 /* clang-format off */
+#if CONFIG_REALTIME_ONLY && !CONFIG_AV1_DECODER
+#define intra_pred_rectangular(type) \
+  intra_pred_sized(type, 4, 8) \
+  intra_pred_sized(type, 8, 4) \
+  intra_pred_sized(type, 8, 16) \
+  intra_pred_sized(type, 16, 8) \
+  intra_pred_sized(type, 16, 32) \
+  intra_pred_sized(type, 32, 16) \
+  intra_pred_sized(type, 32, 64) \
+  intra_pred_sized(type, 64, 32) \
+  intra_pred_highbd_sized(type, 4, 8) \
+  intra_pred_highbd_sized(type, 8, 4) \
+  intra_pred_highbd_sized(type, 8, 16) \
+  intra_pred_highbd_sized(type, 16, 8) \
+  intra_pred_highbd_sized(type, 16, 32) \
+  intra_pred_highbd_sized(type, 32, 16) \
+  intra_pred_highbd_sized(type, 32, 64) \
+  intra_pred_highbd_sized(type, 64, 32)
+#else
 #define intra_pred_rectangular(type) \
   intra_pred_sized(type, 4, 8) \
   intra_pred_sized(type, 8, 4) \
@@ -759,6 +790,7 @@
   intra_pred_highbd_sized(type, 32, 8) \
   intra_pred_highbd_sized(type, 16, 64) \
   intra_pred_highbd_sized(type, 64, 16)
+#endif // CONFIG_REALTIME_ONLY && !CONFIG_AV1_DECODER
 
 #define intra_pred_above_4x4(type) \
   intra_pred_sized(type, 8, 8) \
diff --git a/aom_dsp/x86/intrapred_avx2.c b/aom_dsp/x86/intrapred_avx2.c
index 7a41618..f6c5422 100644
--- a/aom_dsp/x86/intrapred_avx2.c
+++ b/aom_dsp/x86/intrapred_avx2.c
@@ -135,6 +135,7 @@
     0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff }
 };
 
+#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 static inline void highbd_transpose16x4_8x8_sse2(__m128i *x, __m128i *d) {
   __m128i r0, r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15;
 
@@ -199,6 +200,7 @@
   d[2] = _mm256_unpacklo_epi64(ww0, ww1);  // 02 12 22 32 42 52 62 72
   d[3] = _mm256_unpackhi_epi64(ww0, ww1);  // 03 13 23 33 43 53 63 73
 }
+#endif  // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 
 static inline void highbd_transpose8x16_16x8_avx2(__m256i *x, __m256i *d) {
   __m256i w0, w1, w2, w3, ww0, ww1;
@@ -471,6 +473,7 @@
   row_store_64xh(&row, 32, dst, stride);
 }
 
+#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 void aom_dc_predictor_64x16_avx2(uint8_t *dst, ptrdiff_t stride,
                                  const uint8_t *above, const uint8_t *left) {
   const __m256i sum_above = dc_sum_64(above);
@@ -482,6 +485,7 @@
   const __m256i row = _mm256_set1_epi8((int8_t)sum);
   row_store_64xh(&row, 16, dst, stride);
 }
+#endif  // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 
 void aom_dc_top_predictor_32x16_avx2(uint8_t *dst, ptrdiff_t stride,
                                      const uint8_t *above,
@@ -539,6 +543,7 @@
   row_store_64xh(&row, 32, dst, stride);
 }
 
+#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 void aom_dc_top_predictor_64x16_avx2(uint8_t *dst, ptrdiff_t stride,
                                      const uint8_t *above,
                                      const uint8_t *left) {
@@ -552,6 +557,7 @@
   __m256i row = _mm256_shuffle_epi8(sum, zero);
   row_store_64xh(&row, 16, dst, stride);
 }
+#endif  // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 
 void aom_dc_left_predictor_32x16_avx2(uint8_t *dst, ptrdiff_t stride,
                                       const uint8_t *above,
@@ -610,6 +616,7 @@
   row_store_64xh(&row, 32, dst, stride);
 }
 
+#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 void aom_dc_left_predictor_64x16_avx2(uint8_t *dst, ptrdiff_t stride,
                                       const uint8_t *above,
                                       const uint8_t *left) {
@@ -624,6 +631,7 @@
   const __m256i row = _mm256_inserti128_si256(_mm256_castsi128_si256(r), r, 1);
   row_store_64xh(&row, 16, dst, stride);
 }
+#endif  // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 
 void aom_dc_128_predictor_32x16_avx2(uint8_t *dst, ptrdiff_t stride,
                                      const uint8_t *above,
@@ -661,6 +669,7 @@
   row_store_64xh(&row, 32, dst, stride);
 }
 
+#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 void aom_dc_128_predictor_64x16_avx2(uint8_t *dst, ptrdiff_t stride,
                                      const uint8_t *above,
                                      const uint8_t *left) {
@@ -669,6 +678,7 @@
   const __m256i row = _mm256_set1_epi8((int8_t)0x80);
   row_store_64xh(&row, 16, dst, stride);
 }
+#endif  // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 
 void aom_v_predictor_32x16_avx2(uint8_t *dst, ptrdiff_t stride,
                                 const uint8_t *above, const uint8_t *left) {
@@ -700,6 +710,7 @@
   row_store_32x2xh(&row0, &row1, 32, dst, stride);
 }
 
+#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 void aom_v_predictor_64x16_avx2(uint8_t *dst, ptrdiff_t stride,
                                 const uint8_t *above, const uint8_t *left) {
   const __m256i row0 = _mm256_loadu_si256((const __m256i *)above);
@@ -707,6 +718,7 @@
   (void)left;
   row_store_32x2xh(&row0, &row1, 16, dst, stride);
 }
+#endif  // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 
 // -----------------------------------------------------------------------------
 // PAETH_PRED
@@ -826,6 +838,7 @@
   }
 }
 
+#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 void aom_paeth_predictor_16x64_avx2(uint8_t *dst, ptrdiff_t stride,
                                     const uint8_t *above, const uint8_t *left) {
   const __m256i tl16 = _mm256_set1_epi16((int16_t)above[-1]);
@@ -845,6 +858,7 @@
     }
   }
 }
+#endif  // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 
 // Return 32 8-bit pixels in one row (__m256i)
 static inline __m256i paeth_32x1_pred(const __m256i *left, const __m256i *top0,
@@ -1012,6 +1026,7 @@
   }
 }
 
+#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 void aom_paeth_predictor_64x16_avx2(uint8_t *dst, ptrdiff_t stride,
                                     const uint8_t *above, const uint8_t *left) {
   const __m256i t0 = get_top_vector(above);
@@ -1041,6 +1056,7 @@
     rep = _mm256_add_epi16(rep, one);
   }
 }
+#endif  // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 
 #if CONFIG_AV1_HIGHBITDEPTH
 
@@ -3027,6 +3043,7 @@
   }
 }
 
+#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 static void highbd_dr_prediction_z3_4x16_avx2(uint16_t *dst, ptrdiff_t stride,
                                               const uint16_t *left,
                                               int upsample_left, int dy,
@@ -3139,6 +3156,7 @@
     _mm_storeu_si128((__m128i *)(dst + i * stride + 24), d[i + 24]);
   }
 }
+#endif  // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 
 static void highbd_dr_prediction_z3_16x16_avx2(uint16_t *dst, ptrdiff_t stride,
                                                const uint16_t *left,
@@ -3282,6 +3300,7 @@
   return;
 }
 
+#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 static void highbd_dr_prediction_z3_16x64_avx2(uint16_t *dst, ptrdiff_t stride,
                                                const uint16_t *left,
                                                int upsample_left, int dy,
@@ -3315,6 +3334,7 @@
     }
   }
 }
+#endif  // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 
 void av1_highbd_dr_prediction_z3_avx2(uint16_t *dst, ptrdiff_t stride, int bw,
                                       int bh, const uint16_t *above,
@@ -3371,6 +3391,7 @@
         }
       } else {
         switch (bw) {
+#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
           case 4:
             highbd_dr_prediction_z3_4x16_avx2(dst, stride, left, upsample_left,
                                               dy, bd);
@@ -3383,6 +3404,7 @@
             highbd_dr_prediction_z3_16x64_avx2(dst, stride, left, upsample_left,
                                                dy, bd);
             break;
+#endif  // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
         }
       }
     } else {
@@ -3407,6 +3429,7 @@
         }
       } else {
         switch (bh) {
+#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
           case 4:
             highbd_dr_prediction_z3_16x4_avx2(dst, stride, left, upsample_left,
                                               dy, bd);
@@ -3419,6 +3442,7 @@
             highbd_dr_prediction_z3_64x16_avx2(dst, stride, left, upsample_left,
                                                dy, bd);
             break;
+#endif  // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
         }
       }
     }
@@ -4428,6 +4452,7 @@
   }
 }
 
+#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 static void dr_prediction_z3_4x16_avx2(uint8_t *dst, ptrdiff_t stride,
                                        const uint8_t *left, int upsample_left,
                                        int dy) {
@@ -4506,6 +4531,7 @@
     _mm_storeu_si128((__m128i *)(dst + i * stride + 16), d[i + 8]);
   }
 }
+#endif  // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 
 static void dr_prediction_z3_16x16_avx2(uint8_t *dst, ptrdiff_t stride,
                                         const uint8_t *left, int upsample_left,
@@ -4597,6 +4623,7 @@
   return;
 }
 
+#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 static void dr_prediction_z3_16x64_avx2(uint8_t *dst, ptrdiff_t stride,
                                         const uint8_t *left, int upsample_left,
                                         int dy) {
@@ -4618,6 +4645,7 @@
     }
   }
 }
+#endif  // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 
 void av1_dr_prediction_z3_avx2(uint8_t *dst, ptrdiff_t stride, int bw, int bh,
                                const uint8_t *above, const uint8_t *left,
@@ -4664,6 +4692,7 @@
         }
       } else {
         switch (bw) {
+#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
           case 4:
             dr_prediction_z3_4x16_avx2(dst, stride, left, upsample_left, dy);
             break;
@@ -4673,6 +4702,7 @@
           case 16:
             dr_prediction_z3_16x64_avx2(dst, stride, left, upsample_left, dy);
             break;
+#endif  // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
         }
       }
     } else {
@@ -4693,6 +4723,7 @@
         }
       } else {
         switch (bh) {
+#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
           case 4:
             dr_prediction_z3_16x4_avx2(dst, stride, left, upsample_left, dy);
             break;
@@ -4702,6 +4733,7 @@
           case 16:
             dr_prediction_z3_64x16_avx2(dst, stride, left, upsample_left, dy);
             break;
+#endif  // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
         }
       }
     }
diff --git a/aom_dsp/x86/intrapred_sse2.c b/aom_dsp/x86/intrapred_sse2.c
index 16ef471..595f45a 100644
--- a/aom_dsp/x86/intrapred_sse2.c
+++ b/aom_dsp/x86/intrapred_sse2.c
@@ -121,6 +121,7 @@
   dc_store_4xh(pred, 8, dst, stride);
 }
 
+#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 void aom_dc_predictor_4x16_sse2(uint8_t *dst, ptrdiff_t stride,
                                 const uint8_t *above, const uint8_t *left) {
   const __m128i sum_left = dc_sum_16_sse2(left);
@@ -135,6 +136,7 @@
   const uint32_t pred = (uint32_t)_mm_cvtsi128_si32(row);
   dc_store_4xh(pred, 16, dst, stride);
 }
+#endif  // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 
 void aom_dc_predictor_8x4_sse2(uint8_t *dst, ptrdiff_t stride,
                                const uint8_t *above, const uint8_t *left) {
@@ -163,6 +165,7 @@
   dc_store_8xh(&row, 16, dst, stride);
 }
 
+#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 void aom_dc_predictor_8x32_sse2(uint8_t *dst, ptrdiff_t stride,
                                 const uint8_t *above, const uint8_t *left) {
   const __m128i sum_left = dc_sum_32_sse2(left);
@@ -188,6 +191,7 @@
   const __m128i row = _mm_set1_epi8((int8_t)sum);
   dc_store_16xh(&row, 4, dst, stride);
 }
+#endif  // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 
 void aom_dc_predictor_16x8_sse2(uint8_t *dst, ptrdiff_t stride,
                                 const uint8_t *above, const uint8_t *left) {
@@ -215,6 +219,7 @@
   dc_store_16xh(&row, 32, dst, stride);
 }
 
+#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 void aom_dc_predictor_16x64_sse2(uint8_t *dst, ptrdiff_t stride,
                                  const uint8_t *above, const uint8_t *left) {
   const __m128i sum_left = dc_sum_64(left);
@@ -240,6 +245,7 @@
   const __m128i row = _mm_set1_epi8((int8_t)sum);
   dc_store_32xh(&row, 8, dst, stride);
 }
+#endif  // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 
 void aom_dc_predictor_32x16_sse2(uint8_t *dst, ptrdiff_t stride,
                                  const uint8_t *above, const uint8_t *left) {
@@ -293,6 +299,7 @@
   dc_store_64xh(&row, 32, dst, stride);
 }
 
+#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 void aom_dc_predictor_64x16_sse2(uint8_t *dst, ptrdiff_t stride,
                                  const uint8_t *above, const uint8_t *left) {
   __m128i sum_above = dc_sum_64(above);
@@ -305,6 +312,7 @@
   const __m128i row = _mm_set1_epi8((int8_t)sum);
   dc_store_64xh(&row, 16, dst, stride);
 }
+#endif  // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 
 // -----------------------------------------------------------------------------
 // DC_TOP
@@ -323,6 +331,7 @@
   dc_store_4xh(pred, 8, dst, stride);
 }
 
+#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 void aom_dc_top_predictor_4x16_sse2(uint8_t *dst, ptrdiff_t stride,
                                     const uint8_t *above, const uint8_t *left) {
   (void)left;
@@ -336,6 +345,7 @@
   const uint32_t pred = (uint32_t)_mm_cvtsi128_si32(sum_above);
   dc_store_4xh(pred, 16, dst, stride);
 }
+#endif  // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 
 void aom_dc_top_predictor_8x4_sse2(uint8_t *dst, ptrdiff_t stride,
                                    const uint8_t *above, const uint8_t *left) {
@@ -361,6 +371,7 @@
   dc_store_8xh(&row, 16, dst, stride);
 }
 
+#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 void aom_dc_top_predictor_8x32_sse2(uint8_t *dst, ptrdiff_t stride,
                                     const uint8_t *above, const uint8_t *left) {
   (void)left;
@@ -385,6 +396,7 @@
   const __m128i row = _mm_unpacklo_epi64(sum_above, sum_above);
   dc_store_16xh(&row, 4, dst, stride);
 }
+#endif  // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 
 void aom_dc_top_predictor_16x8_sse2(uint8_t *dst, ptrdiff_t stride,
                                     const uint8_t *above, const uint8_t *left) {
@@ -413,6 +425,7 @@
   dc_store_16xh(&row, 32, dst, stride);
 }
 
+#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 void aom_dc_top_predictor_16x64_sse2(uint8_t *dst, ptrdiff_t stride,
                                      const uint8_t *above,
                                      const uint8_t *left) {
@@ -439,6 +452,7 @@
   const __m128i row = _mm_unpacklo_epi64(sum_above, sum_above);
   dc_store_32xh(&row, 8, dst, stride);
 }
+#endif  // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 
 void aom_dc_top_predictor_32x16_sse2(uint8_t *dst, ptrdiff_t stride,
                                      const uint8_t *above,
@@ -496,6 +510,7 @@
   dc_store_64xh(&row, 32, dst, stride);
 }
 
+#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 void aom_dc_top_predictor_64x16_sse2(uint8_t *dst, ptrdiff_t stride,
                                      const uint8_t *above,
                                      const uint8_t *left) {
@@ -509,6 +524,7 @@
   const __m128i row = _mm_unpacklo_epi64(sum_above, sum_above);
   dc_store_64xh(&row, 16, dst, stride);
 }
+#endif  // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 
 // -----------------------------------------------------------------------------
 // DC_LEFT
@@ -527,6 +543,7 @@
   dc_store_4xh(pred, 8, dst, stride);
 }
 
+#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 void aom_dc_left_predictor_4x16_sse2(uint8_t *dst, ptrdiff_t stride,
                                      const uint8_t *above,
                                      const uint8_t *left) {
@@ -541,6 +558,7 @@
   const uint32_t pred = (uint32_t)_mm_cvtsi128_si32(sum_left);
   dc_store_4xh(pred, 16, dst, stride);
 }
+#endif  // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 
 void aom_dc_left_predictor_8x4_sse2(uint8_t *dst, ptrdiff_t stride,
                                     const uint8_t *above, const uint8_t *left) {
@@ -567,6 +585,7 @@
   dc_store_8xh(&row, 16, dst, stride);
 }
 
+#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 void aom_dc_left_predictor_8x32_sse2(uint8_t *dst, ptrdiff_t stride,
                                      const uint8_t *above,
                                      const uint8_t *left) {
@@ -593,6 +612,7 @@
   const __m128i row = _mm_unpacklo_epi64(sum_left, sum_left);
   dc_store_16xh(&row, 4, dst, stride);
 }
+#endif  // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 
 void aom_dc_left_predictor_16x8_sse2(uint8_t *dst, ptrdiff_t stride,
                                      const uint8_t *above,
@@ -622,6 +642,7 @@
   dc_store_16xh(&row, 32, dst, stride);
 }
 
+#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 void aom_dc_left_predictor_16x64_sse2(uint8_t *dst, ptrdiff_t stride,
                                       const uint8_t *above,
                                       const uint8_t *left) {
@@ -649,6 +670,7 @@
   const __m128i row = _mm_unpacklo_epi64(sum_left, sum_left);
   dc_store_32xh(&row, 8, dst, stride);
 }
+#endif  // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 
 void aom_dc_left_predictor_32x16_sse2(uint8_t *dst, ptrdiff_t stride,
                                       const uint8_t *above,
@@ -706,6 +728,7 @@
   dc_store_64xh(&row, 32, dst, stride);
 }
 
+#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 void aom_dc_left_predictor_64x16_sse2(uint8_t *dst, ptrdiff_t stride,
                                       const uint8_t *above,
                                       const uint8_t *left) {
@@ -719,6 +742,7 @@
   const __m128i row = _mm_unpacklo_epi64(sum_left, sum_left);
   dc_store_64xh(&row, 16, dst, stride);
 }
+#endif  // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 
 // -----------------------------------------------------------------------------
 // DC_128
@@ -731,6 +755,7 @@
   dc_store_4xh(pred, 8, dst, stride);
 }
 
+#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 void aom_dc_128_predictor_4x16_sse2(uint8_t *dst, ptrdiff_t stride,
                                     const uint8_t *above, const uint8_t *left) {
   (void)above;
@@ -738,6 +763,7 @@
   const uint32_t pred = 0x80808080;
   dc_store_4xh(pred, 16, dst, stride);
 }
+#endif  // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 
 void aom_dc_128_predictor_8x4_sse2(uint8_t *dst, ptrdiff_t stride,
                                    const uint8_t *above, const uint8_t *left) {
@@ -755,6 +781,7 @@
   dc_store_8xh(&row, 16, dst, stride);
 }
 
+#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 void aom_dc_128_predictor_8x32_sse2(uint8_t *dst, ptrdiff_t stride,
                                     const uint8_t *above, const uint8_t *left) {
   (void)above;
@@ -770,6 +797,7 @@
   const __m128i row = _mm_set1_epi8((int8_t)128);
   dc_store_16xh(&row, 4, dst, stride);
 }
+#endif  // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 
 void aom_dc_128_predictor_16x8_sse2(uint8_t *dst, ptrdiff_t stride,
                                     const uint8_t *above, const uint8_t *left) {
@@ -788,6 +816,7 @@
   dc_store_16xh(&row, 32, dst, stride);
 }
 
+#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 void aom_dc_128_predictor_16x64_sse2(uint8_t *dst, ptrdiff_t stride,
                                      const uint8_t *above,
                                      const uint8_t *left) {
@@ -804,6 +833,7 @@
   const __m128i row = _mm_set1_epi8((int8_t)128);
   dc_store_32xh(&row, 8, dst, stride);
 }
+#endif  // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 
 void aom_dc_128_predictor_32x16_sse2(uint8_t *dst, ptrdiff_t stride,
                                      const uint8_t *above,
@@ -841,6 +871,7 @@
   dc_store_64xh(&row, 32, dst, stride);
 }
 
+#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 void aom_dc_128_predictor_64x16_sse2(uint8_t *dst, ptrdiff_t stride,
                                      const uint8_t *above,
                                      const uint8_t *left) {
@@ -849,6 +880,7 @@
   const __m128i row = _mm_set1_epi8((int8_t)128);
   dc_store_64xh(&row, 16, dst, stride);
 }
+#endif  // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 
 // -----------------------------------------------------------------------------
 // V_PRED
@@ -860,12 +892,14 @@
   dc_store_4xh(pred, 8, dst, stride);
 }
 
+#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 void aom_v_predictor_4x16_sse2(uint8_t *dst, ptrdiff_t stride,
                                const uint8_t *above, const uint8_t *left) {
   const uint32_t pred = *(uint32_t *)above;
   (void)left;
   dc_store_4xh(pred, 16, dst, stride);
 }
+#endif  // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 
 void aom_v_predictor_8x4_sse2(uint8_t *dst, ptrdiff_t stride,
                               const uint8_t *above, const uint8_t *left) {
@@ -881,6 +915,7 @@
   dc_store_8xh(&row, 16, dst, stride);
 }
 
+#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 void aom_v_predictor_8x32_sse2(uint8_t *dst, ptrdiff_t stride,
                                const uint8_t *above, const uint8_t *left) {
   const __m128i row = _mm_loadl_epi64((__m128i const *)above);
@@ -894,6 +929,7 @@
   (void)left;
   dc_store_16xh(&row, 4, dst, stride);
 }
+#endif  // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 
 void aom_v_predictor_16x8_sse2(uint8_t *dst, ptrdiff_t stride,
                                const uint8_t *above, const uint8_t *left) {
@@ -909,12 +945,14 @@
   dc_store_16xh(&row, 32, dst, stride);
 }
 
+#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 void aom_v_predictor_16x64_sse2(uint8_t *dst, ptrdiff_t stride,
                                 const uint8_t *above, const uint8_t *left) {
   const __m128i row = _mm_load_si128((__m128i const *)above);
   (void)left;
   dc_store_16xh(&row, 64, dst, stride);
 }
+#endif  // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 
 static inline void v_predictor_32xh(uint8_t *dst, ptrdiff_t stride,
                                     const uint8_t *above, int height) {
@@ -927,11 +965,13 @@
   }
 }
 
+#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 void aom_v_predictor_32x8_sse2(uint8_t *dst, ptrdiff_t stride,
                                const uint8_t *above, const uint8_t *left) {
   (void)left;
   v_predictor_32xh(dst, stride, above, 8);
 }
+#endif  // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 
 void aom_v_predictor_32x16_sse2(uint8_t *dst, ptrdiff_t stride,
                                 const uint8_t *above, const uint8_t *left) {
@@ -972,11 +1012,13 @@
   v_predictor_64xh(dst, stride, above, 32);
 }
 
+#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 void aom_v_predictor_64x16_sse2(uint8_t *dst, ptrdiff_t stride,
                                 const uint8_t *above, const uint8_t *left) {
   (void)left;
   v_predictor_64xh(dst, stride, above, 16);
 }
+#endif  // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 
 // -----------------------------------------------------------------------------
 // H_PRED
@@ -1012,6 +1054,7 @@
   *(int *)dst = _mm_cvtsi128_si32(row3);
 }
 
+#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 void aom_h_predictor_4x16_sse2(uint8_t *dst, ptrdiff_t stride,
                                const uint8_t *above, const uint8_t *left) {
   (void)above;
@@ -1072,6 +1115,7 @@
   dst += stride;
   *(int *)dst = _mm_cvtsi128_si32(row3);
 }
+#endif  // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 
 void aom_h_predictor_8x4_sse2(uint8_t *dst, ptrdiff_t stride,
                               const uint8_t *above, const uint8_t *left) {
@@ -1162,10 +1206,12 @@
   h_predictor_8x16xc(dst, stride, above, left, 1);
 }
 
+#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 void aom_h_predictor_8x32_sse2(uint8_t *dst, ptrdiff_t stride,
                                const uint8_t *above, const uint8_t *left) {
   h_predictor_8x16xc(dst, stride, above, left, 2);
 }
+#endif  // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 
 static inline void h_pred_store_16xh(const __m128i *row, int h, uint8_t *dst,
                                      ptrdiff_t stride) {
@@ -1218,6 +1264,7 @@
   h_pred_store_16xh(row, 4, dst, stride);
 }
 
+#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 void aom_h_predictor_16x4_sse2(uint8_t *dst, ptrdiff_t stride,
                                const uint8_t *above, const uint8_t *left) {
   (void)above;
@@ -1225,6 +1272,7 @@
   const __m128i left_col_8p = _mm_unpacklo_epi8(left_col, left_col);
   h_prediction_16x8_1(&left_col_8p, dst, stride);
 }
+#endif  // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 
 void aom_h_predictor_16x8_sse2(uint8_t *dst, ptrdiff_t stride,
                                const uint8_t *above, const uint8_t *left) {
@@ -1264,11 +1312,13 @@
   h_predictor_16xh(dst, stride, left, 2);
 }
 
+#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 void aom_h_predictor_16x64_sse2(uint8_t *dst, ptrdiff_t stride,
                                 const uint8_t *above, const uint8_t *left) {
   (void)above;
   h_predictor_16xh(dst, stride, left, 4);
 }
+#endif  // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 
 static inline void h_pred_store_32xh(const __m128i *row, int h, uint8_t *dst,
                                      ptrdiff_t stride) {
@@ -1298,6 +1348,7 @@
   h_pred_store_32xh(row, 4, dst, stride);
 }
 
+#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 void aom_h_predictor_32x8_sse2(uint8_t *dst, ptrdiff_t stride,
                                const uint8_t *above, const uint8_t *left) {
   __m128i left_col, left_col_8p;
@@ -1310,6 +1361,7 @@
   dst += stride << 2;
   h_prediction_32x8_2(&left_col_8p, dst, stride);
 }
+#endif  // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 
 void aom_h_predictor_32x16_sse2(uint8_t *dst, ptrdiff_t stride,
                                 const uint8_t *above, const uint8_t *left) {
@@ -1404,8 +1456,10 @@
   h_predictor_64xh(dst, stride, left, 32);
 }
 
+#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 void aom_h_predictor_64x16_sse2(uint8_t *dst, ptrdiff_t stride,
                                 const uint8_t *above, const uint8_t *left) {
   (void)above;
   h_predictor_64xh(dst, stride, left, 16);
 }
+#endif  // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
diff --git a/aom_dsp/x86/intrapred_sse4.c b/aom_dsp/x86/intrapred_sse4.c
index ebe7724..34408d0 100644
--- a/aom_dsp/x86/intrapred_sse4.c
+++ b/aom_dsp/x86/intrapred_sse4.c
@@ -1021,6 +1021,7 @@
   }
 }
 
+#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 static void dr_prediction_z3_4x16_sse4_1(uint8_t *dst, ptrdiff_t stride,
                                          const uint8_t *left, int upsample_left,
                                          int dy) {
@@ -1100,6 +1101,7 @@
     _mm_storeu_si128((__m128i *)(dst + i * stride + 16), d[i + 8]);
   }
 }
+#endif  // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 
 static void dr_prediction_z3_16x16_sse4_1(uint8_t *dst, ptrdiff_t stride,
                                           const uint8_t *left,
@@ -1190,6 +1192,7 @@
   return;
 }
 
+#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 static void dr_prediction_z3_16x64_sse4_1(uint8_t *dst, ptrdiff_t stride,
                                           const uint8_t *left,
                                           int upsample_left, int dy) {
@@ -1211,6 +1214,7 @@
     }
   }
 }
+#endif  // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 
 void av1_dr_prediction_z3_sse4_1(uint8_t *dst, ptrdiff_t stride, int bw, int bh,
                                  const uint8_t *above, const uint8_t *left,
@@ -1259,6 +1263,7 @@
         }
       } else {
         switch (bw) {
+#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
           case 4:
             dr_prediction_z3_4x16_sse4_1(dst, stride, left, upsample_left, dy);
             break;
@@ -1269,6 +1274,7 @@
             dr_prediction_z3_16x64_sse4_1(dst, stride, left, upsample_left, dy);
             break;
           default: assert(0 && "Invalid block size");
+#endif  // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
         }
       }
     } else {
@@ -1290,6 +1296,7 @@
         }
       } else {
         switch (bh) {
+#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
           case 4:
             dr_prediction_z3_16x4_sse4_1(dst, stride, left, upsample_left, dy);
             break;
@@ -1300,6 +1307,7 @@
             dr_prediction_z3_64x16_sse4_1(dst, stride, left, upsample_left, dy);
             break;
           default: assert(0 && "Invalid block size");
+#endif  // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
         }
       }
     }
diff --git a/aom_dsp/x86/intrapred_ssse3.c b/aom_dsp/x86/intrapred_ssse3.c
index 20a149a..302da29 100644
--- a/aom_dsp/x86/intrapred_ssse3.c
+++ b/aom_dsp/x86/intrapred_ssse3.c
@@ -83,6 +83,7 @@
   }
 }
 
+#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 void aom_paeth_predictor_4x16_ssse3(uint8_t *dst, ptrdiff_t stride,
                                     const uint8_t *above, const uint8_t *left) {
   __m128i l = _mm_load_si128((const __m128i *)left);
@@ -102,6 +103,7 @@
     rep = _mm_add_epi16(rep, one);
   }
 }
+#endif  // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 
 void aom_paeth_predictor_8x4_ssse3(uint8_t *dst, ptrdiff_t stride,
                                    const uint8_t *above, const uint8_t *left) {
@@ -166,6 +168,7 @@
   }
 }
 
+#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 void aom_paeth_predictor_8x32_ssse3(uint8_t *dst, ptrdiff_t stride,
                                     const uint8_t *above, const uint8_t *left) {
   const __m128i t = _mm_loadl_epi64((const __m128i *)above);
@@ -187,6 +190,7 @@
     }
   }
 }
+#endif  // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 
 // Return 16 8-bit pixels in one row
 static inline __m128i paeth_16x1_pred(const __m128i *left, const __m128i *top0,
@@ -197,6 +201,7 @@
   return _mm_packus_epi16(p0, p1);
 }
 
+#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 void aom_paeth_predictor_16x4_ssse3(uint8_t *dst, ptrdiff_t stride,
                                     const uint8_t *above, const uint8_t *left) {
   __m128i l = _mm_cvtsi32_si128(((const int *)left)[0]);
@@ -217,6 +222,7 @@
     rep = _mm_add_epi16(rep, one);
   }
 }
+#endif  // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 
 void aom_paeth_predictor_16x8_ssse3(uint8_t *dst, ptrdiff_t stride,
                                     const uint8_t *above, const uint8_t *left) {
@@ -298,6 +304,7 @@
   }
 }
 
+#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 void aom_paeth_predictor_16x64_ssse3(uint8_t *dst, ptrdiff_t stride,
                                      const uint8_t *above,
                                      const uint8_t *left) {
@@ -348,6 +355,7 @@
     rep = _mm_add_epi16(rep, one);
   }
 }
+#endif  // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 
 void aom_paeth_predictor_32x16_ssse3(uint8_t *dst, ptrdiff_t stride,
                                      const uint8_t *above,
@@ -538,6 +546,7 @@
   }
 }
 
+#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 void aom_paeth_predictor_64x16_ssse3(uint8_t *dst, ptrdiff_t stride,
                                      const uint8_t *above,
                                      const uint8_t *left) {
@@ -577,6 +586,7 @@
     rep = _mm_add_epi16(rep, one);
   }
 }
+#endif  // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 
 // -----------------------------------------------------------------------------
 // SMOOTH_PRED
@@ -686,6 +696,7 @@
   smooth_pred_4xh(pixels, wh, ww, 8, dst, stride, 0);
 }
 
+#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 void aom_smooth_predictor_4x16_ssse3(uint8_t *dst, ptrdiff_t stride,
                                      const uint8_t *above,
                                      const uint8_t *left) {
@@ -699,6 +710,7 @@
   dst += stride << 3;
   smooth_pred_4xh(pixels, &wh[2], ww, 8, dst, stride, 1);
 }
+#endif  // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 
 // pixels[0]: above and below_pred interleave vector, first half
 // pixels[1]: above and below_pred interleave vector, second half
@@ -865,6 +877,7 @@
   smooth_pred_8xh(pixels, &wh[2], ww, 8, dst, stride, 1);
 }
 
+#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 void aom_smooth_predictor_8x32_ssse3(uint8_t *dst, ptrdiff_t stride,
                                      const uint8_t *above,
                                      const uint8_t *left) {
@@ -882,6 +895,7 @@
   dst += stride << 3;
   smooth_pred_8xh(&pixels[4], &wh[6], ww, 8, dst, stride, 1);
 }
+#endif  // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 
 // TODO(slavarnway): Visual Studio only supports restrict when /std:c11
 // (available in 2019+) or greater is specified; __restrict can be used in that
@@ -998,11 +1012,13 @@
   }
 }
 
+#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 void aom_smooth_predictor_16x4_ssse3(uint8_t *dst, ptrdiff_t stride,
                                      const uint8_t *above,
                                      const uint8_t *left) {
   smooth_predictor_wxh(dst, stride, above, left, 16, 4);
 }
+#endif  // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 
 void aom_smooth_predictor_16x8_ssse3(uint8_t *dst, ptrdiff_t stride,
                                      const uint8_t *above,
@@ -1022,6 +1038,7 @@
   smooth_predictor_wxh(dst, stride, above, left, 16, 32);
 }
 
+#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 void aom_smooth_predictor_16x64_ssse3(uint8_t *dst, ptrdiff_t stride,
                                       const uint8_t *above,
                                       const uint8_t *left) {
@@ -1033,6 +1050,7 @@
                                      const uint8_t *left) {
   smooth_predictor_wxh(dst, stride, above, left, 32, 8);
 }
+#endif  // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 
 void aom_smooth_predictor_32x16_ssse3(uint8_t *dst, ptrdiff_t stride,
                                       const uint8_t *above,
@@ -1052,11 +1070,13 @@
   smooth_predictor_wxh(dst, stride, above, left, 32, 64);
 }
 
+#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 void aom_smooth_predictor_64x16_ssse3(uint8_t *dst, ptrdiff_t stride,
                                       const uint8_t *above,
                                       const uint8_t *left) {
   smooth_predictor_wxh(dst, stride, above, left, 64, 16);
 }
+#endif  // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 
 void aom_smooth_predictor_64x32_ssse3(uint8_t *dst, ptrdiff_t stride,
                                       const uint8_t *above,
@@ -1198,6 +1218,7 @@
   write_smooth_vertical4xh(&pixels, weights, 8, dst, stride);
 }
 
+#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 void aom_smooth_v_predictor_4x16_ssse3(
     uint8_t *LIBAOM_RESTRICT dst, ptrdiff_t stride,
     const uint8_t *LIBAOM_RESTRICT top_row,
@@ -1212,6 +1233,7 @@
   dst += stride << 3;
   write_smooth_vertical4xh(&pixels, &weights[2], 8, dst, stride);
 }
+#endif  // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 
 void aom_smooth_v_predictor_8x4_ssse3(
     uint8_t *LIBAOM_RESTRICT dst, ptrdiff_t stride,
@@ -1311,6 +1333,7 @@
   }
 }
 
+#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 void aom_smooth_v_predictor_8x32_ssse3(
     uint8_t *LIBAOM_RESTRICT dst, ptrdiff_t stride,
     const uint8_t *LIBAOM_RESTRICT top_row,
@@ -1419,6 +1442,7 @@
                                  scaled_bottom_left_y, scaled_bottom_left_y,
                                  round);
 }
+#endif  // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 
 void aom_smooth_v_predictor_16x8_ssse3(
     uint8_t *LIBAOM_RESTRICT dst, ptrdiff_t stride,
@@ -1561,6 +1585,7 @@
   }
 }
 
+#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 void aom_smooth_v_predictor_16x64_ssse3(
     uint8_t *LIBAOM_RESTRICT dst, ptrdiff_t stride,
     const uint8_t *LIBAOM_RESTRICT top_row,
@@ -1639,6 +1664,7 @@
     dst += stride;
   }
 }
+#endif  // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 
 void aom_smooth_v_predictor_32x16_ssse3(
     uint8_t *LIBAOM_RESTRICT dst, ptrdiff_t stride,
@@ -1832,6 +1858,7 @@
   }
 }
 
+#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 void aom_smooth_v_predictor_64x16_ssse3(
     uint8_t *LIBAOM_RESTRICT dst, ptrdiff_t stride,
     const uint8_t *LIBAOM_RESTRICT top_row,
@@ -1901,6 +1928,7 @@
     dst += stride;
   }
 }
+#endif  // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 
 void aom_smooth_v_predictor_64x32_ssse3(
     uint8_t *LIBAOM_RESTRICT dst, ptrdiff_t stride,
@@ -2178,6 +2206,7 @@
                                &round);
 }
 
+#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 void aom_smooth_h_predictor_4x16_ssse3(
     uint8_t *LIBAOM_RESTRICT dst, ptrdiff_t stride,
     const uint8_t *LIBAOM_RESTRICT top_row,
@@ -2259,6 +2288,7 @@
   write_smooth_horizontal_sum4(dst, &left_y, &weights, &scaled_top_right,
                                &round);
 }
+#endif  // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 
 // For SMOOTH_H, |pixels| is the repeated left value for the row. For SMOOTH_V,
 // |pixels| is a segment of the top row or the whole top row, and |weights| is
@@ -2343,6 +2373,7 @@
   }
 }
 
+#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 void aom_smooth_h_predictor_8x32_ssse3(
     uint8_t *LIBAOM_RESTRICT dst, ptrdiff_t stride,
     const uint8_t *LIBAOM_RESTRICT top_row,
@@ -2424,6 +2455,7 @@
   write_smooth_directional_sum16(dst, left_y, left_y, weights1, weights2,
                                  scaled_top_right1, scaled_top_right2, round);
 }
+#endif  // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 
 void aom_smooth_h_predictor_16x8_ssse3(
     uint8_t *LIBAOM_RESTRICT dst, ptrdiff_t stride,
@@ -2535,6 +2567,7 @@
   }
 }
 
+#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 void aom_smooth_h_predictor_16x64_ssse3(
     uint8_t *LIBAOM_RESTRICT dst, ptrdiff_t stride,
     const uint8_t *LIBAOM_RESTRICT top_row,
@@ -2600,6 +2633,7 @@
     dst += stride;
   }
 }
+#endif  // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 
 void aom_smooth_h_predictor_32x16_ssse3(
     uint8_t *LIBAOM_RESTRICT dst, ptrdiff_t stride,
@@ -2757,6 +2791,7 @@
   }
 }
 
+#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 void aom_smooth_h_predictor_64x16_ssse3(
     uint8_t *LIBAOM_RESTRICT dst, ptrdiff_t stride,
     const uint8_t *LIBAOM_RESTRICT top_row,
@@ -2829,6 +2864,7 @@
     dst += stride;
   }
 }
+#endif  // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 
 void aom_smooth_h_predictor_64x32_ssse3(
     uint8_t *LIBAOM_RESTRICT dst, ptrdiff_t stride,
diff --git a/av1/av1.cmake b/av1/av1.cmake
index 14873da..9a0dff8 100644
--- a/av1/av1.cmake
+++ b/av1/av1.cmake
@@ -548,6 +548,46 @@
 endif()
 
 if(CONFIG_REALTIME_ONLY)
+  if(NOT CONFIG_AV1_DECODER)
+    list(REMOVE_ITEM AOM_AV1_COMMON_SOURCES
+                     "${AOM_ROOT}/av1/common/restoration.c"
+                     "${AOM_ROOT}/av1/common/restoration.h"
+                     "${AOM_ROOT}/av1/common/warped_motion.c"
+                     "${AOM_ROOT}/av1/common/warped_motion.h"
+                     "${AOM_ROOT}/av1/common/warp_plane_sve.c")
+
+    list(REMOVE_ITEM AOM_AV1_COMMON_INTRIN_SSE2
+                     "${AOM_ROOT}/av1/common/x86/warp_plane_sse2.c"
+                     "${AOM_ROOT}/av1/common/x86/wiener_convolve_sse2.c")
+
+    list(REMOVE_ITEM AOM_AV1_COMMON_INTRIN_SSE4_1
+                     "${AOM_ROOT}/av1/common/x86/highbd_warp_plane_sse4.c"
+                     "${AOM_ROOT}/av1/common/x86/selfguided_sse4.c"
+                     "${AOM_ROOT}/av1/common/x86/warp_plane_sse4.c")
+
+    list(
+      REMOVE_ITEM AOM_AV1_COMMON_INTRIN_SSSE3
+                  "${AOM_ROOT}/av1/common/x86/highbd_wiener_convolve_ssse3.c")
+
+    list(REMOVE_ITEM AOM_AV1_COMMON_INTRIN_AVX2
+                     "${AOM_ROOT}/av1/common/x86/highbd_warp_affine_avx2.c"
+                     "${AOM_ROOT}/av1/common/x86/highbd_wiener_convolve_avx2.c"
+                     "${AOM_ROOT}/av1/common/x86/selfguided_avx2.c"
+                     "${AOM_ROOT}/av1/common/x86/warp_plane_avx2.c"
+                     "${AOM_ROOT}/av1/common/x86/wiener_convolve_avx2.c")
+
+    list(REMOVE_ITEM AOM_AV1_COMMON_INTRIN_NEON
+                     "${AOM_ROOT}/av1/common/arm/highbd_warp_plane_neon.c"
+                     "${AOM_ROOT}/av1/common/arm/highbd_wiener_convolve_neon.c"
+                     "${AOM_ROOT}/av1/common/arm/selfguided_neon.c"
+                     "${AOM_ROOT}/av1/common/arm/warp_plane_neon.c"
+                     "${AOM_ROOT}/av1/common/arm/warp_plane_neon.h"
+                     "${AOM_ROOT}/av1/common/arm/wiener_convolve_neon.c")
+
+    list(REMOVE_ITEM AOM_AV1_COMMON_INTRIN_NEON_I8MM
+                     "${AOM_ROOT}/av1/common/arm/warp_plane_neon_i8mm.c")
+  endif()
+
   list(REMOVE_ITEM AOM_AV1_ENCODER_INTRIN_SSE2
                    "${AOM_ROOT}/av1/encoder/x86/highbd_temporal_filter_sse2.c"
                    "${AOM_ROOT}/av1/encoder/x86/temporal_filter_sse2.c")
diff --git a/av1/common/alloccommon.c b/av1/common/alloccommon.c
index 2a28c30..38b9e64 100644
--- a/av1/common/alloccommon.c
+++ b/av1/common/alloccommon.c
@@ -294,6 +294,7 @@
                       cdef_info->allocated_mi_rows);
 }
 
+#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 // Allocate buffers which are independent of restoration_unit_size
 void av1_alloc_restoration_buffers(AV1_COMMON *cm, bool is_sgr_enabled) {
   const int num_planes = av1_num_planes(cm);
@@ -364,6 +365,7 @@
 
   aom_free_frame_buffer(&cm->rst_frame);
 }
+#endif  // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 
 void av1_free_above_context_buffers(CommonContexts *above_contexts) {
   int i;
diff --git a/av1/common/alloccommon.h b/av1/common/alloccommon.h
index ccbf757..7b74ee0 100644
--- a/av1/common/alloccommon.h
+++ b/av1/common/alloccommon.h
@@ -50,8 +50,10 @@
 void av1_free_cdef_buffers(struct AV1Common *const cm,
                            struct AV1CdefWorker **cdef_worker,
                            struct AV1CdefSyncData *cdef_sync);
+#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 void av1_alloc_restoration_buffers(struct AV1Common *cm, bool is_sgr_enabled);
 void av1_free_restoration_buffers(struct AV1Common *cm);
+#endif  // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 
 int av1_alloc_state_buffers(struct AV1Common *cm, int width, int height);
 void av1_free_state_buffers(struct AV1Common *cm);
diff --git a/av1/common/av1_rtcd_defs.pl b/av1/common/av1_rtcd_defs.pl
index a8a01f1..ec85e2a 100644
--- a/av1/common/av1_rtcd_defs.pl
+++ b/av1/common/av1_rtcd_defs.pl
@@ -104,12 +104,17 @@
   add_proto qw/void av1_highbd_convolve_horiz_rs/, "const uint16_t *src, int src_stride, uint16_t *dst, int dst_stride, int w, int h, const int16_t *x_filters, int x0_qn, int x_step_qn, int bd";
   specialize qw/av1_highbd_convolve_horiz_rs sse4_1 neon/;
 
-  add_proto qw/void av1_highbd_wiener_convolve_add_src/, "const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h, const WienerConvolveParams *conv_params, int bd";
-  specialize qw/av1_highbd_wiener_convolve_add_src ssse3 avx2 neon/;
+  if ((aom_config("CONFIG_REALTIME_ONLY") ne "yes") ||
+      (aom_config("CONFIG_AV1_DECODER") eq "yes")) {
+    add_proto qw/void av1_highbd_wiener_convolve_add_src/, "const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h, const WienerConvolveParams *conv_params, int bd";
+    specialize qw/av1_highbd_wiener_convolve_add_src ssse3 avx2 neon/;
+  }
 }
 
-add_proto qw/void av1_wiener_convolve_add_src/,       "const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h, const WienerConvolveParams *conv_params";
-specialize qw/av1_wiener_convolve_add_src sse2 avx2 neon/;
+if ((aom_config("CONFIG_REALTIME_ONLY") ne "yes") || (aom_config("CONFIG_AV1_DECODER") eq "yes")) {
+  add_proto qw/void av1_wiener_convolve_add_src/,       "const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h, const WienerConvolveParams *conv_params";
+  specialize qw/av1_wiener_convolve_add_src sse2 avx2 neon/;
+}
 
 # directional intra predictor functions
 add_proto qw/void av1_dr_prediction_z1/, "uint8_t *dst, ptrdiff_t stride, int bw, int bh, const uint8_t *above, const uint8_t *left, int upsample_above, int dx, int dy";
@@ -516,7 +521,9 @@
 }
 
 # WARPED_MOTION / GLOBAL_MOTION functions
-if (aom_config("CONFIG_AV1_HIGHBITDEPTH") eq "yes") {
+if (aom_config("CONFIG_AV1_HIGHBITDEPTH") eq "yes" &&
+    ((aom_config("CONFIG_REALTIME_ONLY") ne "yes") ||
+      (aom_config("CONFIG_AV1_DECODER") eq "yes"))) {
   add_proto qw/void av1_highbd_warp_affine/, "const int32_t *mat, const uint16_t *ref, int width, int height, int stride, uint16_t *pred, int p_col, int p_row, int p_width, int p_height, int p_stride, int subsampling_x, int subsampling_y, int bd, ConvolveParams *conv_params, int16_t alpha, int16_t beta, int16_t gamma, int16_t delta";
   specialize qw/av1_highbd_warp_affine sse4_1 avx2 neon sve/;
 }
@@ -527,17 +534,21 @@
 add_proto qw/void av1_resize_horz_dir/, "const uint8_t *const input, int in_stride, uint8_t *intbuf, int height, int filtered_length, int width2";
 specialize qw/av1_resize_horz_dir sse2 avx2/;
 
-add_proto qw/void av1_warp_affine/, "const int32_t *mat, const uint8_t *ref, int width, int height, int stride, uint8_t *pred, int p_col, int p_row, int p_width, int p_height, int p_stride, int subsampling_x, int subsampling_y, ConvolveParams *conv_params, int16_t alpha, int16_t beta, int16_t gamma, int16_t delta";
-specialize qw/av1_warp_affine sse4_1 avx2 neon neon_i8mm sve/;
+if ((aom_config("CONFIG_REALTIME_ONLY") ne "yes") || (aom_config("CONFIG_AV1_DECODER") eq "yes")) {
+  add_proto qw/void av1_warp_affine/, "const int32_t *mat, const uint8_t *ref, int width, int height, int stride, uint8_t *pred, int p_col, int p_row, int p_width, int p_height, int p_stride, int subsampling_x, int subsampling_y, ConvolveParams *conv_params, int16_t alpha, int16_t beta, int16_t gamma, int16_t delta";
+  specialize qw/av1_warp_affine sse4_1 avx2 neon neon_i8mm sve/;
+}
 
 # LOOP_RESTORATION functions
-add_proto qw/int av1_apply_selfguided_restoration/, "const uint8_t *dat, int width, int height, int stride, int eps, const int *xqd, uint8_t *dst, int dst_stride, int32_t *tmpbuf, int bit_depth, int highbd";
-specialize qw/av1_apply_selfguided_restoration sse4_1 avx2 neon/;
+if ((aom_config("CONFIG_REALTIME_ONLY") ne "yes") || (aom_config("CONFIG_AV1_DECODER") eq "yes")) {
+  add_proto qw/int av1_apply_selfguided_restoration/, "const uint8_t *dat, int width, int height, int stride, int eps, const int *xqd, uint8_t *dst, int dst_stride, int32_t *tmpbuf, int bit_depth, int highbd";
+  specialize qw/av1_apply_selfguided_restoration sse4_1 avx2 neon/;
 
-add_proto qw/int av1_selfguided_restoration/, "const uint8_t *dgd8, int width, int height,
-                                int dgd_stride, int32_t *flt0, int32_t *flt1, int flt_stride,
-                                int sgr_params_idx, int bit_depth, int highbd";
-specialize qw/av1_selfguided_restoration sse4_1 avx2 neon/;
+  add_proto qw/int av1_selfguided_restoration/, "const uint8_t *dgd8, int width, int height,
+                                  int dgd_stride, int32_t *flt0, int32_t *flt1, int flt_stride,
+                                  int sgr_params_idx, int bit_depth, int highbd";
+  specialize qw/av1_selfguided_restoration sse4_1 avx2 neon/;
+}
 
 # CONVOLVE_ROUND/COMPOUND_ROUND functions
 
diff --git a/av1/common/convolve.c b/av1/common/convolve.c
index 46270cd..ad22f90 100644
--- a/av1/common/convolve.c
+++ b/av1/common/convolve.c
@@ -1314,6 +1314,7 @@
 // --((128 - 1) * 32 + 15) >> 4 + 8 = 263.
 #define WIENER_MAX_EXT_SIZE 263
 
+#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 static inline int horz_scalar_product(const uint8_t *a, const int16_t *b) {
   int sum = 0;
   for (int k = 0; k < SUBPEL_TAPS; ++k) sum += a[k] * b[k];
@@ -1427,8 +1428,10 @@
                             MAX_SB_SIZE, dst, dst_stride, filters_y, y0_q4,
                             y_step_q4, w, h, conv_params->round_1);
 }
+#endif  // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 
 #if CONFIG_AV1_HIGHBITDEPTH
+#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 static void highbd_convolve_add_src_horiz_hip(
     const uint8_t *src8, ptrdiff_t src_stride, uint16_t *dst,
     ptrdiff_t dst_stride, const InterpKernel *x_filters, int x0_q4,
@@ -1507,4 +1510,5 @@
       temp + MAX_SB_SIZE * (SUBPEL_TAPS / 2 - 1), MAX_SB_SIZE, dst, dst_stride,
       filters_y, y0_q4, y_step_q4, w, h, conv_params->round_1, bd);
 }
+#endif  // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 #endif  // CONFIG_AV1_HIGHBITDEPTH
diff --git a/av1/common/reconinter.c b/av1/common/reconinter.c
index eec2343..12da732 100644
--- a/av1/common/reconinter.c
+++ b/av1/common/reconinter.c
@@ -68,6 +68,10 @@
   if (allow_warp(mi, warp_types, &xd->global_motion[mi->ref_frame[ref]], 0,
                  inter_pred_params->scale_factors,
                  &inter_pred_params->warp_params)) {
+#if CONFIG_REALTIME_ONLY && !CONFIG_AV1_DECODER
+    aom_internal_error(xd->error_info, AOM_CODEC_UNSUP_FEATURE,
+                       "Warped motion is disabled in realtime only build.");
+#endif  // CONFIG_REALTIME_ONLY && !CONFIG_AV1_DECODER
     inter_pred_params->mode = WARP_PRED;
   }
 }
@@ -103,6 +107,7 @@
                     inter_pred_params->interp_filter_params);
 #endif
   }
+#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
   // TODO(jingning): av1_warp_plane() can be further cleaned up.
   else if (inter_pred_params->mode == WARP_PRED) {
     av1_warp_plane(
@@ -115,7 +120,9 @@
         inter_pred_params->block_width, inter_pred_params->block_height,
         dst_stride, inter_pred_params->subsampling_x,
         inter_pred_params->subsampling_y, &inter_pred_params->conv_params);
-  } else {
+  }
+#endif  // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
+  else {
     assert(0 && "Unsupported inter_pred_params->mode");
   }
 }
diff --git a/av1/common/reconintra.c b/av1/common/reconintra.c
index 58a7ca8..e2a7510 100644
--- a/av1/common/reconintra.c
+++ b/av1/common/reconintra.c
@@ -464,6 +464,17 @@
 static void init_intra_predictors_internal(void) {
   assert(NELEMENTS(mode_to_angle_map) == INTRA_MODES);
 
+#if CONFIG_REALTIME_ONLY && !CONFIG_AV1_DECODER
+#define INIT_RECTANGULAR(p, type)             \
+  p[TX_4X8] = aom_##type##_predictor_4x8;     \
+  p[TX_8X4] = aom_##type##_predictor_8x4;     \
+  p[TX_8X16] = aom_##type##_predictor_8x16;   \
+  p[TX_16X8] = aom_##type##_predictor_16x8;   \
+  p[TX_16X32] = aom_##type##_predictor_16x32; \
+  p[TX_32X16] = aom_##type##_predictor_32x16; \
+  p[TX_32X64] = aom_##type##_predictor_32x64; \
+  p[TX_64X32] = aom_##type##_predictor_64x32;
+#else
 #define INIT_RECTANGULAR(p, type)             \
   p[TX_4X8] = aom_##type##_predictor_4x8;     \
   p[TX_8X4] = aom_##type##_predictor_8x4;     \
@@ -479,6 +490,7 @@
   p[TX_32X8] = aom_##type##_predictor_32x8;   \
   p[TX_16X64] = aom_##type##_predictor_16x64; \
   p[TX_64X16] = aom_##type##_predictor_64x16;
+#endif  // CONFIG_REALTIME_ONLY && !CONFIG_AV1_DECODER
 
 #define INIT_NO_4X4(p, type)                  \
   p[TX_8X8] = aom_##type##_predictor_8x8;     \
diff --git a/av1/common/thread_common.c b/av1/common/thread_common.c
index 7efed99..0ff6238 100644
--- a/av1/common/thread_common.c
+++ b/av1/common/thread_common.c
@@ -42,6 +42,7 @@
     return 8;
 }
 
+#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 static inline int get_lr_sync_range(int width) {
 #if 0
   // nsync numbers are picked by testing. For example, for 4k
@@ -59,6 +60,7 @@
   return 1;
 #endif
 }
+#endif  // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 
 // Allocate memory for lf row synchronization
 void av1_loop_filter_alloc(AV1LfSync *lf_sync, AV1_COMMON *cm, int rows,
@@ -519,6 +521,7 @@
   }
 }
 
+#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 static inline void lr_sync_read(void *const lr_sync, int r, int c, int plane) {
 #if CONFIG_MULTITHREAD
   AV1LrSync *const loop_res_sync = (AV1LrSync *)lr_sync;
@@ -991,6 +994,7 @@
   foreach_rest_unit_in_planes_mt(loop_rest_ctxt, workers, num_workers, lr_sync,
                                  cm, do_extend_border);
 }
+#endif  // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 
 // Initializes cdef_sync parameters.
 static inline void reset_cdef_job_info(AV1CdefSync *const cdef_sync) {
diff --git a/av1/common/thread_common.h b/av1/common/thread_common.h
index 90b869b..1f2557a 100644
--- a/av1/common/thread_common.h
+++ b/av1/common/thread_common.h
@@ -188,6 +188,7 @@
                               AVxWorker *workers, int num_workers,
                               AV1LfSync *lf_sync, int lpf_opt_level);
 
+#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 void av1_loop_restoration_filter_frame_mt(YV12_BUFFER_CONFIG *frame,
                                           struct AV1Common *cm,
                                           int optimized_lr, AVxWorker *workers,
@@ -197,6 +198,8 @@
 void av1_loop_restoration_alloc(AV1LrSync *lr_sync, AV1_COMMON *cm,
                                 int num_workers, int num_rows_lr,
                                 int num_planes, int width);
+#endif  // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
+
 int av1_get_intrabc_extra_top_right_sb_delay(const AV1_COMMON *cm);
 
 void av1_thread_loop_filter_rows(
diff --git a/test/av1_fwd_txfm2d_test.cc b/test/av1_fwd_txfm2d_test.cc
index d93d59a..95b2151 100644
--- a/test/av1_fwd_txfm2d_test.cc
+++ b/test/av1_fwd_txfm2d_test.cc
@@ -660,7 +660,7 @@
   TX_8X16, TX_16X8, TX_16X32, TX_32X16, TX_32X64, TX_64X32,
 #if !CONFIG_REALTIME_ONLY
   TX_4X16, TX_16X4, TX_8X32,  TX_32X8,  TX_16X64, TX_64X16,
-#endif
+#endif  // !CONFIG_REALTIME_ONLY
 };
 
 INSTANTIATE_TEST_SUITE_P(SSE4_1, AV1HighbdFwdTxfm2dTest,
@@ -679,8 +679,10 @@
 #if HAVE_NEON
 static TX_SIZE Highbd_fwd_txfm_for_neon[] = {
   TX_4X4,  TX_8X8,  TX_16X16, TX_32X32, TX_64X64, TX_4X8,   TX_8X4,
-  TX_8X16, TX_16X8, TX_16X32, TX_32X16, TX_32X64, TX_64X32, TX_4X16,
-  TX_16X4, TX_8X32, TX_32X8,  TX_16X64, TX_64X16
+  TX_8X16, TX_16X8, TX_16X32, TX_32X16, TX_32X64, TX_64X32,
+#if !CONFIG_REALTIME_ONLY
+  TX_4X16, TX_16X4, TX_8X32,  TX_32X8,  TX_16X64, TX_64X16
+#endif  // !CONFIG_REALTIME_ONLY
 };
 
 INSTANTIATE_TEST_SUITE_P(NEON, AV1HighbdFwdTxfm2dTest,
diff --git a/test/intrapred_test.cc b/test/intrapred_test.cc
index 1371c7d..bf9ab75 100644
--- a/test/intrapred_test.cc
+++ b/test/intrapred_test.cc
@@ -292,6 +292,7 @@
       &aom_highbd_##type##_predictor_##width##x##height##_c, width, height, \
       bd)
 
+#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 #define highbd_intrapred(type, opt, bd)                                        \
   highbd_entry(type, 4, 4, opt, bd), highbd_entry(type, 4, 8, opt, bd),        \
       highbd_entry(type, 4, 16, opt, bd), highbd_entry(type, 8, 4, opt, bd),   \
@@ -305,6 +306,18 @@
       highbd_entry(type, 32, 64, opt, bd),                                     \
       highbd_entry(type, 64, 16, opt, bd),                                     \
       highbd_entry(type, 64, 32, opt, bd), highbd_entry(type, 64, 64, opt, bd)
+#else
+#define highbd_intrapred(type, opt, bd)                                       \
+  highbd_entry(type, 4, 4, opt, bd), highbd_entry(type, 4, 8, opt, bd),       \
+      highbd_entry(type, 8, 4, opt, bd), highbd_entry(type, 8, 8, opt, bd),   \
+      highbd_entry(type, 8, 16, opt, bd), highbd_entry(type, 16, 8, opt, bd), \
+      highbd_entry(type, 16, 16, opt, bd),                                    \
+      highbd_entry(type, 16, 32, opt, bd),                                    \
+      highbd_entry(type, 32, 16, opt, bd),                                    \
+      highbd_entry(type, 32, 32, opt, bd),                                    \
+      highbd_entry(type, 32, 64, opt, bd),                                    \
+      highbd_entry(type, 64, 32, opt, bd), highbd_entry(type, 64, 64, opt, bd)
+#endif  // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 #endif  // CONFIG_AV1_HIGHBITDEPTH
 
 // ---------------------------------------------------------------------------
@@ -315,6 +328,7 @@
                            &aom_##type##_predictor_##width##x##height##_c,     \
                            width, height, 8)
 
+#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 #define lowbd_intrapred(type, opt)                                    \
   lowbd_entry(type, 4, 4, opt), lowbd_entry(type, 4, 8, opt),         \
       lowbd_entry(type, 4, 16, opt), lowbd_entry(type, 8, 4, opt),    \
@@ -326,6 +340,16 @@
       lowbd_entry(type, 32, 32, opt), lowbd_entry(type, 32, 64, opt), \
       lowbd_entry(type, 64, 16, opt), lowbd_entry(type, 64, 32, opt), \
       lowbd_entry(type, 64, 64, opt)
+#else
+#define lowbd_intrapred(type, opt)                                    \
+  lowbd_entry(type, 4, 4, opt), lowbd_entry(type, 4, 8, opt),         \
+      lowbd_entry(type, 8, 4, opt), lowbd_entry(type, 8, 8, opt),     \
+      lowbd_entry(type, 8, 16, opt), lowbd_entry(type, 16, 8, opt),   \
+      lowbd_entry(type, 16, 16, opt), lowbd_entry(type, 16, 32, opt), \
+      lowbd_entry(type, 32, 16, opt), lowbd_entry(type, 32, 32, opt), \
+      lowbd_entry(type, 32, 64, opt), lowbd_entry(type, 64, 32, opt), \
+      lowbd_entry(type, 64, 64, opt)
+#endif  // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 
 #if HAVE_SSE2
 const IntraPredFunc<IntraPred> LowbdIntraPredTestVector[] = {
@@ -365,6 +389,7 @@
 
 #if HAVE_AVX2
 const IntraPredFunc<IntraPred> LowbdIntraPredTestVectorAvx2[] = {
+#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
   lowbd_entry(dc, 32, 16, avx2),      lowbd_entry(dc, 32, 32, avx2),
   lowbd_entry(dc, 32, 64, avx2),      lowbd_entry(dc, 64, 16, avx2),
   lowbd_entry(dc, 64, 32, avx2),      lowbd_entry(dc, 64, 64, avx2),
@@ -388,10 +413,37 @@
   lowbd_entry(h, 32, 32, avx2),
 
   lowbd_entry(paeth, 16, 8, avx2),    lowbd_entry(paeth, 16, 16, avx2),
-  lowbd_entry(paeth, 16, 32, avx2),   lowbd_entry(paeth, 16, 64, avx2),
-  lowbd_entry(paeth, 32, 16, avx2),   lowbd_entry(paeth, 32, 32, avx2),
-  lowbd_entry(paeth, 32, 64, avx2),   lowbd_entry(paeth, 64, 16, avx2),
+  lowbd_entry(paeth, 16, 32, avx2),   lowbd_entry(paeth, 32, 16, avx2),
+  lowbd_entry(paeth, 32, 32, avx2),   lowbd_entry(paeth, 32, 64, avx2),
   lowbd_entry(paeth, 64, 32, avx2),   lowbd_entry(paeth, 64, 64, avx2),
+#else
+  lowbd_entry(dc, 32, 16, avx2),      lowbd_entry(dc, 32, 32, avx2),
+  lowbd_entry(dc, 32, 64, avx2),      lowbd_entry(dc, 64, 32, avx2),
+  lowbd_entry(dc, 64, 64, avx2),
+
+  lowbd_entry(dc_top, 32, 16, avx2),  lowbd_entry(dc_top, 32, 32, avx2),
+  lowbd_entry(dc_top, 32, 64, avx2),  lowbd_entry(dc_top, 64, 32, avx2),
+  lowbd_entry(dc_top, 64, 64, avx2),
+
+  lowbd_entry(dc_left, 32, 16, avx2), lowbd_entry(dc_left, 32, 32, avx2),
+  lowbd_entry(dc_left, 32, 64, avx2), lowbd_entry(dc_left, 64, 32, avx2),
+  lowbd_entry(dc_left, 64, 64, avx2),
+
+  lowbd_entry(dc_128, 32, 16, avx2),  lowbd_entry(dc_128, 32, 32, avx2),
+  lowbd_entry(dc_128, 32, 64, avx2),  lowbd_entry(dc_128, 64, 32, avx2),
+  lowbd_entry(dc_128, 64, 64, avx2),
+
+  lowbd_entry(v, 32, 16, avx2),       lowbd_entry(v, 32, 32, avx2),
+  lowbd_entry(v, 32, 64, avx2),       lowbd_entry(v, 64, 32, avx2),
+  lowbd_entry(v, 64, 64, avx2),
+
+  lowbd_entry(h, 32, 32, avx2),
+
+  lowbd_entry(paeth, 16, 8, avx2),    lowbd_entry(paeth, 16, 16, avx2),
+  lowbd_entry(paeth, 16, 32, avx2),   lowbd_entry(paeth, 32, 16, avx2),
+  lowbd_entry(paeth, 32, 32, avx2),   lowbd_entry(paeth, 32, 64, avx2),
+  lowbd_entry(paeth, 64, 32, avx2),   lowbd_entry(paeth, 64, 64, avx2),
+#endif  // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 };
 
 INSTANTIATE_TEST_SUITE_P(AVX2, LowbdIntraPredTest,
diff --git a/test/test.cmake b/test/test.cmake
index 7f0123e..fac95e8 100644
--- a/test/test.cmake
+++ b/test/test.cmake
@@ -156,6 +156,13 @@
               "${AOM_ROOT}/test/simd_cmp_impl.inc"
               "${AOM_ROOT}/test/simd_impl.h")
 
+  if(CONFIG_REALTIME_ONLY AND NOT CONFIG_AV1_DECODER)
+    list(REMOVE_ITEM AOM_UNIT_TEST_COMMON_SOURCES
+                     "${AOM_ROOT}/test/hiprec_convolve_test.cc"
+                     "${AOM_ROOT}/test/hiprec_convolve_test_util.cc"
+                     "${AOM_ROOT}/test/hiprec_convolve_test_util.h")
+  endif()
+
   if(HAVE_SSE2)
     list(APPEND AOM_UNIT_TEST_COMMON_INTRIN_SSE2
                 "${AOM_ROOT}/test/simd_cmp_sse2.cc")
diff --git a/test/test_intra_pred_speed.cc b/test/test_intra_pred_speed.cc
index b4849ed..65468d9 100644
--- a/test/test_intra_pred_speed.cc
+++ b/test/test_intra_pred_speed.cc
@@ -421,13 +421,14 @@
                 aom_v_predictor_4x8_c, aom_h_predictor_4x8_c,
                 aom_paeth_predictor_4x8_c, aom_smooth_predictor_4x8_c,
                 aom_smooth_v_predictor_4x8_c, aom_smooth_h_predictor_4x8_c)
+#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 INTRA_PRED_TEST(C, TX_4X16, aom_dc_predictor_4x16_c,
                 aom_dc_left_predictor_4x16_c, aom_dc_top_predictor_4x16_c,
                 aom_dc_128_predictor_4x16_c, aom_v_predictor_4x16_c,
                 aom_h_predictor_4x16_c, aom_paeth_predictor_4x16_c,
                 aom_smooth_predictor_4x16_c, aom_smooth_v_predictor_4x16_c,
                 aom_smooth_h_predictor_4x16_c)
-
+#endif  // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 #if HAVE_SSE2
 INTRA_PRED_TEST(SSE2, TX_4X4, aom_dc_predictor_4x4_sse2,
                 aom_dc_left_predictor_4x4_sse2, aom_dc_top_predictor_4x4_sse2,
@@ -437,10 +438,12 @@
                 aom_dc_left_predictor_4x8_sse2, aom_dc_top_predictor_4x8_sse2,
                 aom_dc_128_predictor_4x8_sse2, aom_v_predictor_4x8_sse2,
                 aom_h_predictor_4x8_sse2, nullptr, nullptr, nullptr, nullptr)
+#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 INTRA_PRED_TEST(SSE2, TX_4X16, aom_dc_predictor_4x16_sse2,
                 aom_dc_left_predictor_4x16_sse2, aom_dc_top_predictor_4x16_sse2,
                 aom_dc_128_predictor_4x16_sse2, aom_v_predictor_4x16_sse2,
                 aom_h_predictor_4x16_sse2, nullptr, nullptr, nullptr, nullptr)
+#endif  // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 #endif  // HAVE_SSE2
 
 #if HAVE_SSSE3
@@ -454,11 +457,13 @@
                 aom_smooth_predictor_4x8_ssse3,
                 aom_smooth_v_predictor_4x8_ssse3,
                 aom_smooth_h_predictor_4x8_ssse3)
+#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 INTRA_PRED_TEST(SSSE3, TX_4X16, nullptr, nullptr, nullptr, nullptr, nullptr,
                 nullptr, aom_paeth_predictor_4x16_ssse3,
                 aom_smooth_predictor_4x16_ssse3,
                 aom_smooth_v_predictor_4x16_ssse3,
                 aom_smooth_h_predictor_4x16_ssse3)
+#endif  // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 #endif  // HAVE_SSSE3
 
 #if HAVE_NEON
@@ -474,6 +479,7 @@
                 aom_h_predictor_4x8_neon, aom_paeth_predictor_4x8_neon,
                 aom_smooth_predictor_4x8_neon, aom_smooth_v_predictor_4x8_neon,
                 aom_smooth_h_predictor_4x8_neon)
+#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 INTRA_PRED_TEST(NEON, TX_4X16, aom_dc_predictor_4x16_neon,
                 aom_dc_left_predictor_4x16_neon, aom_dc_top_predictor_4x16_neon,
                 aom_dc_128_predictor_4x16_neon, aom_v_predictor_4x16_neon,
@@ -481,6 +487,7 @@
                 aom_smooth_predictor_4x16_neon,
                 aom_smooth_v_predictor_4x16_neon,
                 aom_smooth_h_predictor_4x16_neon)
+#endif  // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 #endif  // HAVE_NEON
 
 // -----------------------------------------------------------------------------
@@ -503,12 +510,14 @@
                 aom_h_predictor_8x16_c, aom_paeth_predictor_8x16_c,
                 aom_smooth_predictor_8x16_c, aom_smooth_v_predictor_8x16_c,
                 aom_smooth_h_predictor_8x16_c)
+#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 INTRA_PRED_TEST(C, TX_8X32, aom_dc_predictor_8x32_c,
                 aom_dc_left_predictor_8x32_c, aom_dc_top_predictor_8x32_c,
                 aom_dc_128_predictor_8x32_c, aom_v_predictor_8x32_c,
                 aom_h_predictor_8x32_c, aom_paeth_predictor_8x32_c,
                 aom_smooth_predictor_8x32_c, aom_smooth_v_predictor_8x32_c,
                 aom_smooth_h_predictor_8x32_c)
+#endif  // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 
 #if HAVE_SSE2
 INTRA_PRED_TEST(SSE2, TX_8X8, aom_dc_predictor_8x8_sse2,
@@ -523,10 +532,12 @@
                 aom_dc_left_predictor_8x16_sse2, aom_dc_top_predictor_8x16_sse2,
                 aom_dc_128_predictor_8x16_sse2, aom_v_predictor_8x16_sse2,
                 aom_h_predictor_8x16_sse2, nullptr, nullptr, nullptr, nullptr)
+#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 INTRA_PRED_TEST(SSE2, TX_8X32, aom_dc_predictor_8x32_sse2,
                 aom_dc_left_predictor_8x32_sse2, aom_dc_top_predictor_8x32_sse2,
                 aom_dc_128_predictor_8x32_sse2, aom_v_predictor_8x32_sse2,
                 aom_h_predictor_8x32_sse2, nullptr, nullptr, nullptr, nullptr)
+#endif  // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 #endif  // HAVE_SSE2
 
 #if HAVE_SSSE3
@@ -545,11 +556,13 @@
                 aom_smooth_predictor_8x16_ssse3,
                 aom_smooth_v_predictor_8x16_ssse3,
                 aom_smooth_h_predictor_8x16_ssse3)
+#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 INTRA_PRED_TEST(SSSE3, TX_8X32, nullptr, nullptr, nullptr, nullptr, nullptr,
                 nullptr, aom_paeth_predictor_8x32_ssse3,
                 aom_smooth_predictor_8x32_ssse3,
                 aom_smooth_v_predictor_8x32_ssse3,
                 aom_smooth_h_predictor_8x32_ssse3)
+#endif  // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 #endif  // HAVE_SSSE3
 
 #if HAVE_NEON
@@ -572,6 +585,7 @@
                 aom_smooth_predictor_8x16_neon,
                 aom_smooth_v_predictor_8x16_neon,
                 aom_smooth_h_predictor_8x16_neon)
+#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 INTRA_PRED_TEST(NEON, TX_8X32, aom_dc_predictor_8x32_neon,
                 aom_dc_left_predictor_8x32_neon, aom_dc_top_predictor_8x32_neon,
                 aom_dc_128_predictor_8x32_neon, aom_v_predictor_8x32_neon,
@@ -579,6 +593,7 @@
                 aom_smooth_predictor_8x32_neon,
                 aom_smooth_v_predictor_8x32_neon,
                 aom_smooth_h_predictor_8x32_neon)
+#endif  // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 #endif  // HAVE_NEON
 
 // -----------------------------------------------------------------------------
@@ -602,6 +617,7 @@
                 aom_h_predictor_16x32_c, aom_paeth_predictor_16x32_c,
                 aom_smooth_predictor_16x32_c, aom_smooth_v_predictor_16x32_c,
                 aom_smooth_h_predictor_16x32_c)
+#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 INTRA_PRED_TEST(C, TX_16X4, aom_dc_predictor_16x4_c,
                 aom_dc_left_predictor_16x4_c, aom_dc_top_predictor_16x4_c,
                 aom_dc_128_predictor_16x4_c, aom_v_predictor_16x4_c,
@@ -614,6 +630,7 @@
                 aom_h_predictor_16x64_c, aom_paeth_predictor_16x64_c,
                 aom_smooth_predictor_16x64_c, aom_smooth_v_predictor_16x64_c,
                 aom_smooth_h_predictor_16x64_c)
+#endif  // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 
 #if HAVE_SSE2
 INTRA_PRED_TEST(SSE2, TX_16X16, aom_dc_predictor_16x16_sse2,
@@ -630,6 +647,7 @@
                 aom_dc_top_predictor_16x32_sse2,
                 aom_dc_128_predictor_16x32_sse2, aom_v_predictor_16x32_sse2,
                 aom_h_predictor_16x32_sse2, nullptr, nullptr, nullptr, nullptr)
+#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 INTRA_PRED_TEST(SSE2, TX_16X64, aom_dc_predictor_16x64_sse2,
                 aom_dc_left_predictor_16x64_sse2,
                 aom_dc_top_predictor_16x64_sse2,
@@ -639,6 +657,7 @@
                 aom_dc_left_predictor_16x4_sse2, aom_dc_top_predictor_16x4_sse2,
                 aom_dc_128_predictor_16x4_sse2, aom_v_predictor_16x4_sse2,
                 aom_h_predictor_16x4_sse2, nullptr, nullptr, nullptr, nullptr)
+#endif  // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 #endif  // HAVE_SSE2
 
 #if HAVE_SSSE3
@@ -657,6 +676,7 @@
                 aom_smooth_predictor_16x32_ssse3,
                 aom_smooth_v_predictor_16x32_ssse3,
                 aom_smooth_h_predictor_16x32_ssse3)
+#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 INTRA_PRED_TEST(SSSE3, TX_16X64, nullptr, nullptr, nullptr, nullptr, nullptr,
                 nullptr, aom_paeth_predictor_16x64_ssse3,
                 aom_smooth_predictor_16x64_ssse3,
@@ -667,6 +687,7 @@
                 aom_smooth_predictor_16x4_ssse3,
                 aom_smooth_v_predictor_16x4_ssse3,
                 aom_smooth_h_predictor_16x4_ssse3)
+#endif  // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 #endif  // HAVE_SSSE3
 
 #if HAVE_AVX2
@@ -679,9 +700,11 @@
 INTRA_PRED_TEST(AVX2, TX_16X32, nullptr, nullptr, nullptr, nullptr, nullptr,
                 nullptr, aom_paeth_predictor_16x32_avx2, nullptr, nullptr,
                 nullptr)
+#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 INTRA_PRED_TEST(AVX2, TX_16X64, nullptr, nullptr, nullptr, nullptr, nullptr,
                 nullptr, aom_paeth_predictor_16x64_avx2, nullptr, nullptr,
                 nullptr)
+#endif  // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 #endif  // HAVE_AVX2
 
 #if HAVE_NEON
@@ -708,6 +731,7 @@
                 aom_smooth_predictor_16x32_neon,
                 aom_smooth_v_predictor_16x32_neon,
                 aom_smooth_h_predictor_16x32_neon)
+#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 INTRA_PRED_TEST(NEON, TX_16X4, aom_dc_predictor_16x4_neon,
                 aom_dc_left_predictor_16x4_neon, aom_dc_top_predictor_16x4_neon,
                 aom_dc_128_predictor_16x4_neon, aom_v_predictor_16x4_neon,
@@ -723,6 +747,7 @@
                 aom_smooth_predictor_16x64_neon,
                 aom_smooth_v_predictor_16x64_neon,
                 aom_smooth_h_predictor_16x64_neon)
+#endif  // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 #endif  // HAVE_NEON
 
 // -----------------------------------------------------------------------------
@@ -746,12 +771,14 @@
                 aom_h_predictor_32x64_c, aom_paeth_predictor_32x64_c,
                 aom_smooth_predictor_32x64_c, aom_smooth_v_predictor_32x64_c,
                 aom_smooth_h_predictor_32x64_c)
+#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 INTRA_PRED_TEST(C, TX_32X8, aom_dc_predictor_32x8_c,
                 aom_dc_left_predictor_32x8_c, aom_dc_top_predictor_32x8_c,
                 aom_dc_128_predictor_32x8_c, aom_v_predictor_32x8_c,
                 aom_h_predictor_32x8_c, aom_paeth_predictor_32x8_c,
                 aom_smooth_predictor_32x8_c, aom_smooth_v_predictor_32x8_c,
                 aom_smooth_h_predictor_32x8_c)
+#endif  // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 
 #if HAVE_SSE2
 INTRA_PRED_TEST(SSE2, TX_32X32, aom_dc_predictor_32x32_sse2,
@@ -769,10 +796,12 @@
                 aom_dc_top_predictor_32x64_sse2,
                 aom_dc_128_predictor_32x64_sse2, aom_v_predictor_32x64_sse2,
                 aom_h_predictor_32x64_sse2, nullptr, nullptr, nullptr, nullptr)
+#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 INTRA_PRED_TEST(SSE2, TX_32X8, aom_dc_predictor_32x8_sse2,
                 aom_dc_left_predictor_32x8_sse2, aom_dc_top_predictor_32x8_sse2,
                 aom_dc_128_predictor_32x8_sse2, aom_v_predictor_32x8_sse2,
                 aom_h_predictor_32x8_sse2, nullptr, nullptr, nullptr, nullptr)
+#endif  // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 #endif  // HAVE_SSE2
 
 #if HAVE_SSSE3
@@ -791,11 +820,13 @@
                 aom_smooth_predictor_32x64_ssse3,
                 aom_smooth_v_predictor_32x64_ssse3,
                 aom_smooth_h_predictor_32x64_ssse3)
+#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 INTRA_PRED_TEST(SSSE3, TX_32X8, nullptr, nullptr, nullptr, nullptr, nullptr,
                 nullptr, aom_paeth_predictor_32x8_ssse3,
                 aom_smooth_predictor_32x8_ssse3,
                 aom_smooth_v_predictor_32x8_ssse3,
                 aom_smooth_h_predictor_32x8_ssse3)
+#endif  // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 #endif  // HAVE_SSSE3
 
 #if HAVE_AVX2
@@ -844,6 +875,7 @@
                 aom_smooth_predictor_32x64_neon,
                 aom_smooth_v_predictor_32x64_neon,
                 aom_smooth_h_predictor_32x64_neon)
+#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 INTRA_PRED_TEST(NEON, TX_32X8, aom_dc_predictor_32x8_neon,
                 aom_dc_left_predictor_32x8_neon, aom_dc_top_predictor_32x8_neon,
                 aom_dc_128_predictor_32x8_neon, aom_v_predictor_32x8_neon,
@@ -851,6 +883,7 @@
                 aom_smooth_predictor_32x8_neon,
                 aom_smooth_v_predictor_32x8_neon,
                 aom_smooth_h_predictor_32x8_neon)
+#endif  // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 #endif  // HAVE_NEON
 
 // -----------------------------------------------------------------------------
@@ -868,12 +901,14 @@
                 aom_h_predictor_64x32_c, aom_paeth_predictor_64x32_c,
                 aom_smooth_predictor_64x32_c, aom_smooth_v_predictor_64x32_c,
                 aom_smooth_h_predictor_64x32_c)
+#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 INTRA_PRED_TEST(C, TX_64X16, aom_dc_predictor_64x16_c,
                 aom_dc_left_predictor_64x16_c, aom_dc_top_predictor_64x16_c,
                 aom_dc_128_predictor_64x16_c, aom_v_predictor_64x16_c,
                 aom_h_predictor_64x16_c, aom_paeth_predictor_64x16_c,
                 aom_smooth_predictor_64x16_c, aom_smooth_v_predictor_64x16_c,
                 aom_smooth_h_predictor_64x16_c)
+#endif  // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 
 #if HAVE_SSE2
 INTRA_PRED_TEST(SSE2, TX_64X64, aom_dc_predictor_64x64_sse2,
@@ -886,11 +921,13 @@
                 aom_dc_top_predictor_64x32_sse2,
                 aom_dc_128_predictor_64x32_sse2, aom_v_predictor_64x32_sse2,
                 aom_h_predictor_64x32_sse2, nullptr, nullptr, nullptr, nullptr)
+#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 INTRA_PRED_TEST(SSE2, TX_64X16, aom_dc_predictor_64x16_sse2,
                 aom_dc_left_predictor_64x16_sse2,
                 aom_dc_top_predictor_64x16_sse2,
                 aom_dc_128_predictor_64x16_sse2, aom_v_predictor_64x16_sse2,
                 aom_h_predictor_64x16_sse2, nullptr, nullptr, nullptr, nullptr)
+#endif  // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 #endif
 
 #if HAVE_SSSE3
@@ -904,11 +941,13 @@
                 aom_smooth_predictor_64x32_ssse3,
                 aom_smooth_v_predictor_64x32_ssse3,
                 aom_smooth_h_predictor_64x32_ssse3)
+#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 INTRA_PRED_TEST(SSSE3, TX_64X16, nullptr, nullptr, nullptr, nullptr, nullptr,
                 nullptr, aom_paeth_predictor_64x16_ssse3,
                 aom_smooth_predictor_64x16_ssse3,
                 aom_smooth_v_predictor_64x16_ssse3,
                 aom_smooth_h_predictor_64x16_ssse3)
+#endif  // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 #endif
 
 #if HAVE_AVX2
@@ -924,12 +963,14 @@
                 aom_dc_128_predictor_64x32_avx2, aom_v_predictor_64x32_avx2,
                 nullptr, aom_paeth_predictor_64x32_avx2, nullptr, nullptr,
                 nullptr)
+#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 INTRA_PRED_TEST(AVX2, TX_64X16, aom_dc_predictor_64x16_avx2,
                 aom_dc_left_predictor_64x16_avx2,
                 aom_dc_top_predictor_64x16_avx2,
                 aom_dc_128_predictor_64x16_avx2, aom_v_predictor_64x16_avx2,
                 nullptr, aom_paeth_predictor_64x16_avx2, nullptr, nullptr,
                 nullptr)
+#endif  // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 #endif
 
 #if HAVE_NEON
@@ -949,6 +990,7 @@
                 aom_smooth_predictor_64x32_neon,
                 aom_smooth_v_predictor_64x32_neon,
                 aom_smooth_h_predictor_64x32_neon)
+#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 INTRA_PRED_TEST(NEON, TX_64X16, aom_dc_predictor_64x16_neon,
                 aom_dc_left_predictor_64x16_neon,
                 aom_dc_top_predictor_64x16_neon,
@@ -957,6 +999,7 @@
                 aom_smooth_predictor_64x16_neon,
                 aom_smooth_v_predictor_64x16_neon,
                 aom_smooth_h_predictor_64x16_neon)
+#endif  // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 #endif  // HAVE_NEON
 
 #if CONFIG_AV1_HIGHBITDEPTH
@@ -1280,6 +1323,8 @@
     aom_highbd_h_predictor_4x8_c, aom_highbd_paeth_predictor_4x8_c,
     aom_highbd_smooth_predictor_4x8_c, aom_highbd_smooth_v_predictor_4x8_c,
     aom_highbd_smooth_h_predictor_4x8_c)
+
+#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 HIGHBD_INTRA_PRED_TEST(
     C, TX_4X16, aom_highbd_dc_predictor_4x16_c,
     aom_highbd_dc_left_predictor_4x16_c, aom_highbd_dc_top_predictor_4x16_c,
@@ -1287,6 +1332,8 @@
     aom_highbd_h_predictor_4x16_c, aom_highbd_paeth_predictor_4x16_c,
     aom_highbd_smooth_predictor_4x16_c, aom_highbd_smooth_v_predictor_4x16_c,
     aom_highbd_smooth_h_predictor_4x16_c)
+#endif  // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
+
 #if HAVE_SSE2
 HIGHBD_INTRA_PRED_TEST(SSE2, TX_4X4, aom_highbd_dc_predictor_4x4_sse2,
                        aom_highbd_dc_left_predictor_4x4_sse2,
@@ -1304,6 +1351,7 @@
                        aom_highbd_h_predictor_4x8_sse2, nullptr, nullptr,
                        nullptr, nullptr)
 #endif
+
 #if HAVE_NEON
 HIGHBD_INTRA_PRED_TEST(NEON, TX_4X4, aom_highbd_dc_predictor_4x4_neon,
                        aom_highbd_dc_left_predictor_4x4_neon,
@@ -1325,6 +1373,7 @@
                        aom_highbd_smooth_predictor_4x8_neon,
                        aom_highbd_smooth_v_predictor_4x8_neon,
                        aom_highbd_smooth_h_predictor_4x8_neon)
+#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 HIGHBD_INTRA_PRED_TEST(NEON, TX_4X16, aom_highbd_dc_predictor_4x16_neon,
                        aom_highbd_dc_left_predictor_4x16_neon,
                        aom_highbd_dc_top_predictor_4x16_neon,
@@ -1335,6 +1384,7 @@
                        aom_highbd_smooth_predictor_4x16_neon,
                        aom_highbd_smooth_v_predictor_4x16_neon,
                        aom_highbd_smooth_h_predictor_4x16_neon)
+#endif  // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 #endif  // HAVE_NEON
 
 // -----------------------------------------------------------------------------
@@ -1361,6 +1411,7 @@
     aom_highbd_h_predictor_8x16_c, aom_highbd_paeth_predictor_8x16_c,
     aom_highbd_smooth_predictor_8x16_c, aom_highbd_smooth_v_predictor_8x16_c,
     aom_highbd_smooth_h_predictor_8x16_c)
+#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 HIGHBD_INTRA_PRED_TEST(
     C, TX_8X32, aom_highbd_dc_predictor_8x32_c,
     aom_highbd_dc_left_predictor_8x32_c, aom_highbd_dc_top_predictor_8x32_c,
@@ -1368,6 +1419,7 @@
     aom_highbd_h_predictor_8x32_c, aom_highbd_paeth_predictor_8x32_c,
     aom_highbd_smooth_predictor_8x32_c, aom_highbd_smooth_v_predictor_8x32_c,
     aom_highbd_smooth_h_predictor_8x32_c)
+#endif  // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 
 #if HAVE_SSE2
 HIGHBD_INTRA_PRED_TEST(SSE2, TX_8X8, aom_highbd_dc_predictor_8x8_sse2,
@@ -1429,6 +1481,7 @@
                        aom_highbd_smooth_predictor_8x16_neon,
                        aom_highbd_smooth_v_predictor_8x16_neon,
                        aom_highbd_smooth_h_predictor_8x16_neon)
+#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 HIGHBD_INTRA_PRED_TEST(NEON, TX_8X32, aom_highbd_dc_predictor_8x32_neon,
                        aom_highbd_dc_left_predictor_8x32_neon,
                        aom_highbd_dc_top_predictor_8x32_neon,
@@ -1439,6 +1492,7 @@
                        aom_highbd_smooth_predictor_8x32_neon,
                        aom_highbd_smooth_v_predictor_8x32_neon,
                        aom_highbd_smooth_h_predictor_8x32_neon)
+#endif  // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 #endif  // HAVE_NEON
 
 // -----------------------------------------------------------------------------
@@ -1465,6 +1519,7 @@
     aom_highbd_h_predictor_16x32_c, aom_highbd_paeth_predictor_16x32_c,
     aom_highbd_smooth_predictor_16x32_c, aom_highbd_smooth_v_predictor_16x32_c,
     aom_highbd_smooth_h_predictor_16x32_c)
+#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 HIGHBD_INTRA_PRED_TEST(
     C, TX_16X4, aom_highbd_dc_predictor_16x4_c,
     aom_highbd_dc_left_predictor_16x4_c, aom_highbd_dc_top_predictor_16x4_c,
@@ -1479,6 +1534,7 @@
     aom_highbd_h_predictor_16x64_c, aom_highbd_paeth_predictor_16x64_c,
     aom_highbd_smooth_predictor_16x64_c, aom_highbd_smooth_v_predictor_16x64_c,
     aom_highbd_smooth_h_predictor_16x64_c)
+#endif  // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 
 #if HAVE_SSE2
 HIGHBD_INTRA_PRED_TEST(SSE2, TX_16X16, aom_highbd_dc_predictor_16x16_sse2,
@@ -1551,6 +1607,7 @@
                        aom_highbd_smooth_predictor_16x32_neon,
                        aom_highbd_smooth_v_predictor_16x32_neon,
                        aom_highbd_smooth_h_predictor_16x32_neon)
+#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 HIGHBD_INTRA_PRED_TEST(NEON, TX_16X4, aom_highbd_dc_predictor_16x4_neon,
                        aom_highbd_dc_left_predictor_16x4_neon,
                        aom_highbd_dc_top_predictor_16x4_neon,
@@ -1571,6 +1628,7 @@
                        aom_highbd_smooth_predictor_16x64_neon,
                        aom_highbd_smooth_v_predictor_16x64_neon,
                        aom_highbd_smooth_h_predictor_16x64_neon)
+#endif  // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 #endif  // HAVE_NEON
 
 // -----------------------------------------------------------------------------
@@ -1597,6 +1655,7 @@
     aom_highbd_h_predictor_32x64_c, aom_highbd_paeth_predictor_32x64_c,
     aom_highbd_smooth_predictor_32x64_c, aom_highbd_smooth_v_predictor_32x64_c,
     aom_highbd_smooth_h_predictor_32x64_c)
+#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 HIGHBD_INTRA_PRED_TEST(
     C, TX_32X8, aom_highbd_dc_predictor_32x8_c,
     aom_highbd_dc_left_predictor_32x8_c, aom_highbd_dc_top_predictor_32x8_c,
@@ -1604,6 +1663,7 @@
     aom_highbd_h_predictor_32x8_c, aom_highbd_paeth_predictor_32x8_c,
     aom_highbd_smooth_predictor_32x8_c, aom_highbd_smooth_v_predictor_32x8_c,
     aom_highbd_smooth_h_predictor_32x8_c)
+#endif  // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 
 #if HAVE_SSE2
 HIGHBD_INTRA_PRED_TEST(SSE2, TX_32X32, aom_highbd_dc_predictor_32x32_sse2,
@@ -1666,6 +1726,7 @@
                        aom_highbd_smooth_predictor_32x64_neon,
                        aom_highbd_smooth_v_predictor_32x64_neon,
                        aom_highbd_smooth_h_predictor_32x64_neon)
+#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 HIGHBD_INTRA_PRED_TEST(NEON, TX_32X8, aom_highbd_dc_predictor_32x8_neon,
                        aom_highbd_dc_left_predictor_32x8_neon,
                        aom_highbd_dc_top_predictor_32x8_neon,
@@ -1676,6 +1737,7 @@
                        aom_highbd_smooth_predictor_32x8_neon,
                        aom_highbd_smooth_v_predictor_32x8_neon,
                        aom_highbd_smooth_h_predictor_32x8_neon)
+#endif  // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 #endif  // HAVE_NEON
 
 // -----------------------------------------------------------------------------
@@ -1695,6 +1757,7 @@
     aom_highbd_h_predictor_64x32_c, aom_highbd_paeth_predictor_64x32_c,
     aom_highbd_smooth_predictor_64x32_c, aom_highbd_smooth_v_predictor_64x32_c,
     aom_highbd_smooth_h_predictor_64x32_c)
+#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 HIGHBD_INTRA_PRED_TEST(
     C, TX_64X16, aom_highbd_dc_predictor_64x16_c,
     aom_highbd_dc_left_predictor_64x16_c, aom_highbd_dc_top_predictor_64x16_c,
@@ -1702,6 +1765,7 @@
     aom_highbd_h_predictor_64x16_c, aom_highbd_paeth_predictor_64x16_c,
     aom_highbd_smooth_predictor_64x16_c, aom_highbd_smooth_v_predictor_64x16_c,
     aom_highbd_smooth_h_predictor_64x16_c)
+#endif  // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 
 #if HAVE_NEON
 HIGHBD_INTRA_PRED_TEST(NEON, TX_64X64, aom_highbd_dc_predictor_64x64_neon,
@@ -1724,6 +1788,7 @@
                        aom_highbd_smooth_predictor_64x32_neon,
                        aom_highbd_smooth_v_predictor_64x32_neon,
                        aom_highbd_smooth_h_predictor_64x32_neon)
+#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 HIGHBD_INTRA_PRED_TEST(NEON, TX_64X16, aom_highbd_dc_predictor_64x16_neon,
                        aom_highbd_dc_left_predictor_64x16_neon,
                        aom_highbd_dc_top_predictor_64x16_neon,
@@ -1734,6 +1799,7 @@
                        aom_highbd_smooth_predictor_64x16_neon,
                        aom_highbd_smooth_v_predictor_64x16_neon,
                        aom_highbd_smooth_h_predictor_64x16_neon)
+#endif  // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
 #endif  // HAVE_NEON
 
 // -----------------------------------------------------------------------------