diff --git a/av1/encoder/encodeframe.c b/av1/encoder/encodeframe.c
index 21ba8d8..b629afa 100644
--- a/av1/encoder/encodeframe.c
+++ b/av1/encoder/encodeframe.c
@@ -4686,7 +4686,7 @@
 
 static int do_gm_search_logic(SPEED_FEATURES *const sf, int frame) {
   (void)frame;
-  switch (sf->gm_search_type) {
+  switch (sf->gm_sf.gm_search_type) {
     case GM_FULL_SEARCH: return 1;
     case GM_REDUCED_REF_SEARCH_SKIP_L2_L3:
       return !(frame == LAST2_FRAME || frame == LAST3_FRAME);
@@ -4859,9 +4859,9 @@
 // TODO(Remya): Can include erroradv_prod_tr[] for threshold calculation
 static INLINE int64_t calc_erroradv_threshold(AV1_COMP *cpi,
                                               int64_t ref_frame_error) {
-  if (!cpi->sf.disable_adaptive_warp_error_thresh)
-    return (int64_t)(ref_frame_error * erroradv_tr[cpi->sf.gm_erroradv_type] +
-                     0.5);
+  if (!cpi->sf.gm_sf.disable_adaptive_warp_error_thresh)
+    return (int64_t)(
+        ref_frame_error * erroradv_tr[cpi->sf.gm_sf.gm_erroradv_type] + 0.5);
   else
     return INT64_MAX;
 }
@@ -4985,7 +4985,7 @@
             (double)best_warp_error / ref_frame_error,
             gm_get_params_cost(&cm->global_motion[frame], ref_params,
                                cm->allow_high_precision_mv),
-            cpi->sf.gm_erroradv_type)) {
+            cpi->sf.gm_sf.gm_erroradv_type)) {
       cm->global_motion[frame] = default_warp_params;
     }
 
@@ -5028,7 +5028,7 @@
         !prune_ref_by_selective_ref_frame(
             cpi, ref_frame, cm->cur_frame->ref_display_order_hint,
             cm->current_frame.display_order_hint) &&
-        !(cpi->sf.selective_ref_gm && skip_gm_frame(cm, frame))) {
+        !(cpi->sf.gm_sf.selective_ref_gm && skip_gm_frame(cm, frame))) {
       assert(ref_buf[frame] != NULL);
       int relative_frame_dist = av1_encoder_get_relative_dist(
           order_hint_info, buf->display_order_hint,
@@ -5099,7 +5099,7 @@
     // the remaining ref frames in that direction. The below exit is disabled
     // when ref frame distance w.r.t. current frame is zero. E.g.:
     // source_alt_ref_frame w.r.t. ARF frames
-    if (cpi->sf.prune_ref_frame_for_gm_search &&
+    if (cpi->sf.gm_sf.prune_ref_frame_for_gm_search &&
         reference_frame[frame].distance != 0 &&
         cm->global_motion[ref_frame].wmtype != ROTZOOM)
       break;
diff --git a/av1/encoder/encoder.c b/av1/encoder/encoder.c
index 3812579..ff1ec9d 100644
--- a/av1/encoder/encoder.c
+++ b/av1/encoder/encoder.c
@@ -5171,7 +5171,7 @@
       loop = 0;
     }
 
-    if (allow_recode && !cpi->sf.gm_disable_recode &&
+    if (allow_recode && !cpi->sf.gm_sf.gm_disable_recode &&
         recode_loop_test_global_motion(cpi)) {
       loop = 1;
     }
diff --git a/av1/encoder/speed_features.c b/av1/encoder/speed_features.c
index 1afd941..397a529 100644
--- a/av1/encoder/speed_features.c
+++ b/av1/encoder/speed_features.c
@@ -291,8 +291,8 @@
           ? 0
           : (is_boosted_arf2_bwd_type ? 1 : 2);
   sf->part_sf.less_rectangular_check_level = 1;
-  sf->gm_search_type = GM_REDUCED_REF_SEARCH_SKIP_L2_L3;
-  sf->gm_disable_recode = 1;
+  sf->gm_sf.gm_search_type = GM_REDUCED_REF_SEARCH_SKIP_L2_L3;
+  sf->gm_sf.gm_disable_recode = 1;
   sf->interp_sf.use_fast_interpolation_filter_search = 1;
   sf->tx_sf.intra_tx_size_search_init_depth_sqr = 1;
   sf->intra_sf.intra_pruning_with_hog = 1;
@@ -310,7 +310,7 @@
   if (speed >= 1) {
     sf->inter_sf.selective_ref_frame = 2;
 
-    sf->prune_ref_frame_for_gm_search = boosted ? 0 : 1;
+    sf->gm_sf.prune_ref_frame_for_gm_search = boosted ? 0 : 1;
     sf->tx_sf.intra_tx_size_search_init_depth_rect = 1;
 
     sf->interp_sf.use_interp_filter = 1;
@@ -334,8 +334,8 @@
     sf->inter_sf.disable_interinter_wedge_newmv_search = boosted ? 0 : 1;
     sf->inter_sf.prune_comp_type_by_comp_avg = 1;
     sf->inter_sf.prune_motion_mode_level = 2;
-    sf->gm_search_type = GM_REDUCED_REF_SEARCH_SKIP_L2_L3_ARF2;
-    sf->disable_adaptive_warp_error_thresh = 0;
+    sf->gm_sf.gm_search_type = GM_REDUCED_REF_SEARCH_SKIP_L2_L3_ARF2;
+    sf->gm_sf.disable_adaptive_warp_error_thresh = 0;
     sf->rd_sf.tx_domain_dist_level = boosted ? 1 : 2;
     sf->rd_sf.tx_domain_dist_thres_level = 1;
     sf->rd_sf.perform_coeff_opt = boosted ? 1 : 2;
@@ -358,7 +358,7 @@
   }
 
   if (speed >= 2) {
-    sf->gm_erroradv_type = GM_ERRORADV_TR_2;
+    sf->gm_sf.gm_erroradv_type = GM_ERRORADV_TR_2;
 
     sf->inter_sf.selective_ref_frame = 3;
     sf->lpf_sf.prune_sgr_based_on_wiener =
@@ -403,7 +403,7 @@
     sf->mv_sf.use_accurate_subpel_search = USE_2_TAPS;
     if (cpi->oxcf.enable_smooth_interintra)
       sf->inter_sf.disable_smooth_interintra = boosted ? 0 : 1;
-    sf->gm_search_type = GM_DISABLE_SEARCH;
+    sf->gm_sf.gm_search_type = GM_DISABLE_SEARCH;
     sf->inter_sf.prune_comp_search_by_single_result = boosted ? 4 : 2;
     sf->inter_sf.prune_motion_mode_level = boosted ? 2 : 3;
     // TODO(yunqing): evaluate this speed feature for speed 1 & 2, and combine
@@ -533,8 +533,8 @@
 
   sf->inter_sf.prune_ref_frame_for_rect_partitions = !boosted;
   sf->part_sf.less_rectangular_check_level = 1;
-  sf->gm_search_type = GM_REDUCED_REF_SEARCH_SKIP_L2_L3;
-  sf->gm_disable_recode = 1;
+  sf->gm_sf.gm_search_type = GM_REDUCED_REF_SEARCH_SKIP_L2_L3;
+  sf->gm_sf.gm_disable_recode = 1;
   sf->interp_sf.use_fast_interpolation_filter_search = 1;
   sf->tx_sf.intra_tx_size_search_init_depth_sqr = 1;
   sf->intra_sf.intra_pruning_with_hog = 1;
@@ -558,7 +558,7 @@
   sf->rt_sf.hybrid_intra_pickmode = 0;
 
   if (speed >= 1) {
-    sf->gm_erroradv_type = GM_ERRORADV_TR_1;
+    sf->gm_sf.gm_erroradv_type = GM_ERRORADV_TR_1;
     sf->inter_sf.selective_ref_frame = 2;
 
     sf->tx_sf.intra_tx_size_search_init_depth_rect = 1;
@@ -587,14 +587,14 @@
     sf->inter_sf.disable_wedge_search_edge_thresh = 0;
     sf->inter_sf.prune_comp_type_by_comp_avg = 1;
     sf->inter_sf.prune_motion_mode_level = 2;
-    sf->gm_search_type = GM_REDUCED_REF_SEARCH_SKIP_L2_L3_ARF2;
+    sf->gm_sf.gm_search_type = GM_REDUCED_REF_SEARCH_SKIP_L2_L3_ARF2;
     sf->interp_sf.cb_pred_filter_search = 1;
     sf->rd_sf.tx_domain_dist_level = boosted ? 0 : 1;
     sf->rd_sf.tx_domain_dist_thres_level = 1;
   }
 
   if (speed >= 2) {
-    sf->gm_erroradv_type = GM_ERRORADV_TR_2;
+    sf->gm_sf.gm_erroradv_type = GM_ERRORADV_TR_2;
 
     sf->inter_sf.selective_ref_frame = 3;
     sf->tx_sf.inter_tx_size_search_init_depth_rect = 1;
@@ -633,7 +633,7 @@
     sf->mv_sf.use_accurate_subpel_search = USE_2_TAPS;
     sf->inter_sf.adaptive_rd_thresh = 2;
     sf->tx_sf.tx_type_search.prune_mode = PRUNE_2D_FAST;
-    sf->gm_search_type = GM_DISABLE_SEARCH;
+    sf->gm_sf.gm_search_type = GM_DISABLE_SEARCH;
     sf->inter_sf.prune_comp_search_by_single_result = 2;
     sf->inter_sf.prune_motion_mode_level = boosted ? 2 : 3;
     sf->inter_sf.prune_warp_using_wmtype = 1;
@@ -750,6 +750,15 @@
   }
 }
 
+static AOM_INLINE void init_gm_sf(GLOBAL_MOTION_SPEED_FEATURES *gm_sf) {
+  gm_sf->gm_erroradv_type = GM_ERRORADV_TR_0;
+  gm_sf->disable_adaptive_warp_error_thresh = 1;
+  gm_sf->selective_ref_gm = 1;
+  gm_sf->gm_search_type = GM_FULL_SEARCH;
+  gm_sf->gm_disable_recode = 0;
+  gm_sf->prune_ref_frame_for_gm_search = 0;
+}
+
 static AOM_INLINE void init_part_sf(PARTITION_SPEED_FEATURES *part_sf) {
   part_sf->partition_search_type = SEARCH_PARTITION;
   part_sf->less_rectangular_check_level = 0;
@@ -981,9 +990,6 @@
   // best quality defaults
   sf->frame_parameter_update = 1;
   sf->recode_loop = ALLOW_RECODE;
-  sf->gm_erroradv_type = GM_ERRORADV_TR_0;
-  sf->disable_adaptive_warp_error_thresh = 1;
-  sf->selective_ref_gm = 1;
   sf->reduce_high_precision_mv_usage = 0;
   sf->disable_overlay_frames = 0;
   // TODO(yunqing): turn it on for speed 0 if there is gain.
@@ -991,12 +997,10 @@
   // Recode loop tolerance %.
   sf->recode_tolerance = 25;
 
-  sf->gm_search_type = GM_FULL_SEARCH;
-  sf->gm_disable_recode = 0;
-  sf->prune_ref_frame_for_gm_search = 0;
   sf->tpl_sf.prune_intra_modes = 0;
   sf->tpl_sf.reduce_first_step_size = 0;
 
+  init_gm_sf(&sf->gm_sf);
   init_part_sf(&sf->part_sf);
   init_mv_sf(&sf->mv_sf);
   init_inter_sf(&sf->inter_sf);
diff --git a/av1/encoder/speed_features.h b/av1/encoder/speed_features.h
index a3ba756..fe2b6a3 100644
--- a/av1/encoder/speed_features.h
+++ b/av1/encoder/speed_features.h
@@ -261,6 +261,38 @@
   ADAPT_PRED
 } UENUM1BYTE(MAX_PART_PRED_MODE);
 
+typedef struct TPL_SPEED_FEATURES {
+  // Prune the intra modes search by tpl.
+  // If set to 0, we will search all intra modes from DC_PRED to PAETH_PRED.
+  // If set to 1, we only search DC_PRED, V_PRED, and H_PRED.
+  int prune_intra_modes;
+  // This parameter controls which step in the n-step process we start at.
+  int reduce_first_step_size;
+} TPL_SPEED_FEATURES;
+
+typedef struct GLOBAL_MOTION_SPEED_FEATURES {
+  // Global motion warp error threshold
+  GM_ERRORADV_TYPE gm_erroradv_type;
+
+  // Disable adaptive threshold for global motion warp error
+  int disable_adaptive_warp_error_thresh;
+
+  // Do not compute the global motion parameters for a LAST2_FRAME or
+  // LAST3_FRAME if the GOLDEN_FRAME is closer and it has a non identity
+  // global model.
+  int selective_ref_gm;
+
+  GM_SEARCH_TYPE gm_search_type;
+
+  // whether to disable the global motion recode loop
+  int gm_disable_recode;
+
+  // During global motion estimation, prune remaining reference frames in a
+  // given direction(past/future), if the evaluated ref_frame in that direction
+  // yields gm_type as INVALID/TRANSLATION/IDENTITY
+  int prune_ref_frame_for_gm_search;
+} GLOBAL_MOTION_SPEED_FEATURES;
+
 typedef struct PARTITION_SPEED_FEATURES {
   PARTITION_SEARCH_TYPE partition_search_type;
 
@@ -554,15 +586,6 @@
   int model_based_post_interp_filter_breakout;
 } INTER_MODE_SPEED_FEATURES;
 
-typedef struct TPL_SPEED_FEATURES {
-  // Prune the intra modes search by tpl.
-  // If set to 0, we will search all intra modes from DC_PRED to PAETH_PRED.
-  // If set to 1, we only search DC_PRED, V_PRED, and H_PRED.
-  int prune_intra_modes;
-  // This parameter controls which step in the n-step process we start at.
-  int reduce_first_step_size;
-} TPL_SPEED_FEATURES;
-
 typedef struct INTERP_FILTER_SPEED_FEATURES {
   // A source variance threshold below which filter search is disabled
   // Choose a very large value (UINT_MAX) to use 8-tap always
@@ -864,26 +887,7 @@
   /*
    * Global motion speed features:
    */
-  // Global motion warp error threshold
-  GM_ERRORADV_TYPE gm_erroradv_type;
-
-  // Disable adaptive threshold for global motion warp error
-  int disable_adaptive_warp_error_thresh;
-
-  // Do not compute the global motion parameters for a LAST2_FRAME or
-  // LAST3_FRAME if the GOLDEN_FRAME is closer and it has a non identity
-  // global model.
-  int selective_ref_gm;
-
-  GM_SEARCH_TYPE gm_search_type;
-
-  // whether to disable the global motion recode loop
-  int gm_disable_recode;
-
-  // During global motion estimation, prune remaining reference frames in a
-  // given direction(past/future), if the evaluated ref_frame in that direction
-  // yields gm_type as INVALID/TRANSLATION/IDENTITY
-  int prune_ref_frame_for_gm_search;
+  GLOBAL_MOTION_SPEED_FEATURES gm_sf;
 
   /*
    * Partition search speed features:
