aom_{highbd_}subtract_block_neon(): Change for loops to do/while.

Bug: http://b/217457914

Change-Id: I1cba512df8d2fde420d98cbce251b4afcdb40aff
diff --git a/aom_dsp/arm/subtract_neon.c b/aom_dsp/arm/subtract_neon.c
index 33b70d0..a195c40 100644
--- a/aom_dsp/arm/subtract_neon.c
+++ b/aom_dsp/arm/subtract_neon.c
@@ -20,11 +20,11 @@
                              ptrdiff_t diff_stride, const uint8_t *src,
                              ptrdiff_t src_stride, const uint8_t *pred,
                              ptrdiff_t pred_stride) {
-  int r, c;
-
   if (cols > 16) {
-    for (r = 0; r < rows; ++r) {
-      for (c = 0; c < cols; c += 32) {
+    int r = rows;
+    do {
+      int c = 0;
+      do {
         const uint8x16_t v_src_00 = vld1q_u8(&src[c + 0]);
         const uint8x16_t v_src_16 = vld1q_u8(&src[c + 16]);
         const uint8x16_t v_pred_00 = vld1q_u8(&pred[c + 0]);
@@ -41,13 +41,15 @@
         vst1q_s16(&diff[c + 8], vreinterpretq_s16_u16(v_diff_hi_00));
         vst1q_s16(&diff[c + 16], vreinterpretq_s16_u16(v_diff_lo_16));
         vst1q_s16(&diff[c + 24], vreinterpretq_s16_u16(v_diff_hi_16));
-      }
+        c += 32;
+      } while (c < cols);
       diff += diff_stride;
       pred += pred_stride;
       src += src_stride;
-    }
+    } while (--r != 0);
   } else if (cols > 8) {
-    for (r = 0; r < rows; ++r) {
+    int r = rows;
+    do {
       const uint8x16_t v_src = vld1q_u8(&src[0]);
       const uint8x16_t v_pred = vld1q_u8(&pred[0]);
       const uint16x8_t v_diff_lo =
@@ -59,9 +61,10 @@
       diff += diff_stride;
       pred += pred_stride;
       src += src_stride;
-    }
+    } while (--r != 0);
   } else if (cols > 4) {
-    for (r = 0; r < rows; ++r) {
+    int r = rows;
+    do {
       const uint8x8_t v_src = vld1_u8(&src[0]);
       const uint8x8_t v_pred = vld1_u8(&pred[0]);
       const uint16x8_t v_diff = vsubl_u8(v_src, v_pred);
@@ -69,15 +72,18 @@
       diff += diff_stride;
       pred += pred_stride;
       src += src_stride;
-    }
+    } while (--r != 0);
   } else {
-    for (r = 0; r < rows; ++r) {
-      for (c = 0; c < cols; ++c) diff[c] = src[c] - pred[c];
-
+    int r = rows;
+    do {
+      int c = 0;
+      do {
+        diff[c] = src[c] - pred[c];
+      } while (++c < cols);
       diff += diff_stride;
       pred += pred_stride;
       src += src_stride;
-    }
+    } while (--r != 0);
   }
 }
 
@@ -86,13 +92,14 @@
                                     ptrdiff_t diff_stride, const uint8_t *src8,
                                     ptrdiff_t src_stride, const uint8_t *pred8,
                                     ptrdiff_t pred_stride) {
-  int r, c;
   uint16_t *src = CONVERT_TO_SHORTPTR(src8);
   uint16_t *pred = CONVERT_TO_SHORTPTR(pred8);
 
   if (cols > 16) {
-    for (r = 0; r < rows; ++r) {
-      for (c = 0; c < cols; c += 16) {
+    int r = rows;
+    do {
+      int c = 0;
+      do {
         const uint16x8_t v_src_00 = vld1q_u16(&src[c + 0]);
         const uint16x8_t v_pred_00 = vld1q_u16(&pred[c + 0]);
         const uint16x8_t v_diff_00 = vsubq_u16(v_src_00, v_pred_00);
@@ -101,13 +108,15 @@
         const uint16x8_t v_diff_08 = vsubq_u16(v_src_08, v_pred_08);
         vst1q_s16(&diff[c + 0], vreinterpretq_s16_u16(v_diff_00));
         vst1q_s16(&diff[c + 8], vreinterpretq_s16_u16(v_diff_08));
-      }
+        c += 16;
+      } while (c < cols);
       diff += diff_stride;
       pred += pred_stride;
       src += src_stride;
-    }
+    } while (--r != 0);
   } else if (cols > 8) {
-    for (r = 0; r < rows; ++r) {
+    int r = rows;
+    do {
       const uint16x8_t v_src_00 = vld1q_u16(&src[0]);
       const uint16x8_t v_pred_00 = vld1q_u16(&pred[0]);
       const uint16x8_t v_diff_00 = vsubq_u16(v_src_00, v_pred_00);
@@ -119,9 +128,10 @@
       diff += diff_stride;
       pred += pred_stride;
       src += src_stride;
-    }
+    } while (--r != 0);
   } else if (cols > 4) {
-    for (r = 0; r < rows; r += 2) {
+    int r = rows;
+    do {
       const uint16x8_t v_src_r0 = vld1q_u16(&src[0]);
       const uint16x8_t v_src_r1 = vld1q_u16(&src[src_stride]);
       const uint16x8_t v_pred_r0 = vld1q_u16(&pred[0]);
@@ -133,9 +143,11 @@
       diff += diff_stride << 1;
       pred += pred_stride << 1;
       src += src_stride << 1;
-    }
+      r -= 2;
+    } while (r != 0);
   } else {
-    for (r = 0; r < rows; r += 2) {
+    int r = rows;
+    do {
       const uint16x4_t v_src_r0 = vld1_u16(&src[0]);
       const uint16x4_t v_src_r1 = vld1_u16(&src[src_stride]);
       const uint16x4_t v_pred_r0 = vld1_u16(&pred[0]);
@@ -147,7 +159,8 @@
       diff += diff_stride << 1;
       pred += pred_stride << 1;
       src += src_stride << 1;
-    }
+      r -= 2;
+    } while (r != 0);
   }
 }
 #endif  // CONFIG_AV1_HIGHBITDEPTH