diff --git a/av1/decoder/decodemv.c b/av1/decoder/decodemv.c
index 166bb2a..0149688 100644
--- a/av1/decoder/decodemv.c
+++ b/av1/decoder/decodemv.c
@@ -134,10 +134,10 @@
   return y_mode;
 }
 
-static PREDICTION_MODE read_intra_mode_uv(FRAME_CONTEXT *ec_ctx,
-                                          MACROBLOCKD *xd, aom_reader *r,
-                                          PREDICTION_MODE y_mode) {
-  const PREDICTION_MODE uv_mode =
+static UV_PREDICTION_MODE read_intra_mode_uv(FRAME_CONTEXT *ec_ctx,
+                                             MACROBLOCKD *xd, aom_reader *r,
+                                             PREDICTION_MODE y_mode) {
+  const UV_PREDICTION_MODE uv_mode =
       read_intra_mode(r, ec_ctx->uv_mode_cdf[y_mode]);
 #if CONFIG_ENTROPY_STATS
   FRAME_COUNTS *counts = xd->counts;
@@ -825,7 +825,7 @@
     }
   }
 
-  if (mbmi->uv_mode == DC_PRED) {
+  if (mbmi->uv_mode == UV_DC_PRED) {
     const int palette_uv_mode_ctx = (pmi->palette_size[0] > 0);
     if (aom_read(r, av1_default_palette_uv_mode_prob[palette_uv_mode_ctx],
                  ACCT_STR)) {
@@ -886,7 +886,7 @@
   (void)mi_col;
 #endif  // CONFIG_CB4X4
 
-  if (mbmi->uv_mode == DC_PRED
+  if (mbmi->uv_mode == UV_DC_PRED
 #if CONFIG_PALETTE
       && mbmi->palette_mode_info.palette_size[1] == 0
 #endif  // CONFIG_PALETTE
@@ -939,7 +939,7 @@
 #endif  // CONFIG_INTRA_INTERP
   }
 
-  if (av1_is_directional_mode(mbmi->uv_mode, bsize)) {
+  if (av1_is_directional_mode(get_uv_mode(mbmi->uv_mode), bsize)) {
     mbmi->angle_delta[1] =
         av1_read_uniform(r, 2 * MAX_ANGLE_DELTA + 1) - MAX_ANGLE_DELTA;
   }
@@ -1113,7 +1113,7 @@
     mbmi->use_intrabc = aom_read(r, ec_ctx->intrabc_prob, ACCT_STR);
     if (mbmi->use_intrabc) {
       mbmi->tx_size = read_tx_size(cm, xd, 1, !mbmi->skip, r);
-      mbmi->mode = mbmi->uv_mode = DC_PRED;
+      mbmi->mode = mbmi->uv_mode = UV_DC_PRED;
 #if CONFIG_DUAL_FILTER
       for (int idx = 0; idx < 4; ++idx) mbmi->interp_filter[idx] = BILINEAR;
 #else
@@ -1202,7 +1202,7 @@
 
 #if CONFIG_CFL
     // TODO(ltrudeau) support PALETTE
-    if (mbmi->uv_mode == DC_PRED) {
+    if (mbmi->uv_mode == UV_DC_PRED) {
       mbmi->cfl_alpha_idx = read_cfl_alphas(ec_ctx, r, mbmi->cfl_alpha_signs);
     }
 #endif  // CONFIG_CFL
@@ -1210,7 +1210,7 @@
 #if CONFIG_CB4X4
   } else {
     // Avoid decoding angle_info if there is is no chroma prediction
-    mbmi->uv_mode = DC_PRED;
+    mbmi->uv_mode = UV_DC_PRED;
   }
 #endif
 
@@ -1797,7 +1797,7 @@
 
 #if CONFIG_CFL
     // TODO(ltrudeau) support PALETTE
-    if (mbmi->uv_mode == DC_PRED) {
+    if (mbmi->uv_mode == UV_DC_PRED) {
       mbmi->cfl_alpha_idx =
           read_cfl_alphas(xd->tile_ctx, r, mbmi->cfl_alpha_signs);
     }
