intrapred_neon: convert some for loops to do/while

no change in assembly in optimized builds where the functions are
inlined (gcc & clang)

Bug: b/231616924
Change-Id: I5442a7a689d32124d18b1eb7b984806c4628f416
diff --git a/aom_dsp/arm/intrapred_neon.c b/aom_dsp/arm/intrapred_neon.c
index 4c5d22b..8e6dc12 100644
--- a/aom_dsp/arm/intrapred_neon.c
+++ b/aom_dsp/arm/intrapred_neon.c
@@ -2672,7 +2672,9 @@
   const uint8x8_t scaled_weights_x = negate_s8(weights_x_v);
   const uint16x8_t weighted_tr = vmull_u8(scaled_weights_x, top_right_v);
 
-  for (int y = 0; y < height; ++y) {
+  assert(height > 0);
+  int y = 0;
+  do {
     const uint8x8_t left_v = vdup_n_u8(left_column[y]);
     const uint8x8_t weights_y_v = vdup_n_u8(weights_y[y]);
     const uint8x8_t scaled_weights_y = negate_s8(weights_y_v);
@@ -2687,7 +2689,7 @@
 
     vst1_lane_u32((uint32_t *)dst, vreinterpret_u32_u8(result), 0);
     dst += stride;
-  }
+  } while (++y != height);
 }
 
 static INLINE uint8x8_t calculate_pred(const uint16x8_t weighted_top_bl,
@@ -2723,7 +2725,9 @@
   const uint8x8_t scaled_weights_x = negate_s8(weights_x_v);
   const uint16x8_t weighted_tr = vmull_u8(scaled_weights_x, top_right_v);
 
-  for (int y = 0; y < height; ++y) {
+  assert(height > 0);
+  int y = 0;
+  do {
     const uint8x8_t left_v = vdup_n_u8(left_column[y]);
     const uint8x8_t weights_y_v = vdup_n_u8(weights_y[y]);
     const uint8x8_t scaled_weights_y = negate_s8(weights_y_v);
@@ -2733,7 +2737,7 @@
 
     vst1_u8(dst, result);
     dst += stride;
-  }
+  } while (++y != height);
 }
 
 #define SMOOTH_NXM(W, H)                                                       \
@@ -2903,7 +2907,9 @@
                                                                       \
     const uint8x8_t bottom_left_v = vdup_n_u8(bottom_left);           \
                                                                       \
-    for (int y = 0; y < height; ++y) {                                \
+    assert(height > 0);                                               \
+    int y = 0;                                                        \
+    do {                                                              \
       const uint8x8_t weights_y_v = vdup_n_u8(weights_y[y]);          \
       const uint8x8_t scaled_weights_y = negate_s8(weights_y_v);      \
                                                                       \
@@ -2919,7 +2925,7 @@
         vst1_u8(dst, pred);                                           \
       }                                                               \
       dst += stride;                                                  \
-    }                                                                 \
+    } while (++y != height);                                          \
   }
 
 SMOOTH_V_PREDICTOR(4)
@@ -2978,7 +2984,9 @@
                                                                          \
     const uint8x8_t bottom_left_v = vdup_n_u8(bottom_left);              \
                                                                          \
-    for (int y = 0; y < height; ++y) {                                   \
+    assert(height > 0);                                                  \
+    int y = 0;                                                           \
+    do {                                                                 \
       const uint8x8_t weights_y_v = vdup_n_u8(weights_y[y]);             \
       const uint8x8_t scaled_weights_y = negate_s8(weights_y_v);         \
       const uint16x8_t weighted_bl =                                     \
@@ -3005,7 +3013,7 @@
       }                                                                  \
                                                                          \
       dst += stride;                                                     \
-    }                                                                    \
+    } while (++y != height);                                             \
   }
 
 SMOOTH_V_PREDICTOR(16)
@@ -3052,7 +3060,9 @@
     const uint8x8_t scaled_weights_x = negate_s8(weights_x);                \
     const uint16x8_t weighted_tr = vmull_u8(scaled_weights_x, top_right_v); \
                                                                             \
-    for (int y = 0; y < height; ++y) {                                      \
+    assert(height > 0);                                                     \
+    int y = 0;                                                              \
+    do {                                                                    \
       const uint8x8_t left_v = vdup_n_u8(left_column[y]);                   \
       const uint16x8_t weighted_left_tr =                                   \
           vmlal_u8(weighted_tr, weights_x, left_v);                         \
@@ -3065,7 +3075,7 @@
         vst1_u8(dst, pred);                                                 \
       }                                                                     \
       dst += stride;                                                        \
-    }                                                                       \
+    } while (++y != height);                                                \
   }
 
 SMOOTH_H_PREDICTOR(4)
@@ -3137,7 +3147,9 @@
       }                                                                    \
     }                                                                      \
                                                                            \
-    for (int y = 0; y < height; ++y) {                                     \
+    assert(height > 0);                                                    \
+    int y = 0;                                                             \
+    do {                                                                   \
       const uint8x8_t left_v = vdup_n_u8(left_column[y]);                  \
                                                                            \
       const uint8x16_t pred_0 = calculate_horizontal_weights_and_pred(     \
@@ -3160,7 +3172,7 @@
         }                                                                  \
       }                                                                    \
       dst += stride;                                                       \
-    }                                                                      \
+    } while (++y != height);                                               \
   }
 
 SMOOTH_H_PREDICTOR(16)
@@ -3207,7 +3219,9 @@
     top = vld1_u8(top_row);
   }
 
-  for (int y = 0; y < height; ++y) {
+  assert(height > 0);
+  int y = 0;
+  do {
     const uint8x8_t left = vdup_n_u8(left_column[y]);
 
     const uint8x8_t left_dist = vabd_u8(top, top_left);
@@ -3241,7 +3255,7 @@
       vst1_u8(dest, result);
     }
     dest += stride;
-  }
+  } while (++y != height);
 }
 
 #define PAETH_NXM(W, H)                                                     \
@@ -3326,7 +3340,9 @@
     }
   }
 
-  for (int y = 0; y < height; ++y) {
+  assert(height > 0);
+  int y = 0;
+  do {
     const uint8x16_t left = vdupq_n_u8(left_column[y]);
 
     const uint8x16_t top_dist = vabdq_u8(left, top_left);
@@ -3380,7 +3396,7 @@
     }
 
     dest += stride;
-  }
+  } while (++y != height);
 }
 
 #define PAETH_NXM_WIDE(W, H)                                                \