[AArch64] Add missing "+i8mm" feature when building SME

FEAT_I8MM is not unconditionally enabled with -march=armv9-a since it
only becomes mandatory from Armv9.1-A, so explicitly specify it in both
BUILD.gn and CMakeLists.txt.

Also flip the order of +sve2+i8mm => +i8mm+sve2 to match occurrences
elsewhere.

Change-Id: I8c37580d3718f380b772cdb726d8c30bcd5b9e2c
Reviewed-on: https://chromium-review.googlesource.com/c/libyuv/libyuv/+/6656718
Reviewed-by: Frank Barchard <fbarchard@chromium.org>
diff --git a/BUILD.gn b/BUILD.gn
index aef66ce..c684e58 100644
--- a/BUILD.gn
+++ b/BUILD.gn
@@ -254,7 +254,7 @@
     public_configs = [ ":libyuv_config" ]
 
     # SVE2 is an Armv9-A feature.
-    cflags = [ "-march=armv9-a+sve2+i8mm" ]
+    cflags = [ "-march=armv9-a+i8mm+sve2" ]
   }
 }
 
@@ -271,7 +271,7 @@
     public_configs = [ ":libyuv_config" ]
 
     # SME is an Armv9-A feature.
-    cflags = [ "-march=armv9-a+sme" ]
+    cflags = [ "-march=armv9-a+i8mm+sme" ]
   }
 }
 
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 7aa1549..c6cce8a 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -123,7 +123,7 @@
 
     set(OLD_CMAKE_REQUIRED_FLAGS ${CMAKE_REQUIRED_FLAGS})
     set(OLD_CMAKE_TRY_COMPILE_TARGET_TYPE ${CMAKE_TRY_COMPILE_TARGET_TYPE})
-    set(CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS} -march=armv9-a+sme")
+    set(CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS} -march=armv9-a+i8mm+sme")
     set(CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARY)
     # Check whether the compiler can compile SME functions; this fails
     # with Clang for Windows.
@@ -140,7 +140,7 @@
         ${ly_src_dir}/rotate_sme.cc
         ${ly_src_dir}/row_sme.cc
         ${ly_src_dir}/scale_sme.cc)
-      target_compile_options(${ly_lib_name}_sme PRIVATE -march=armv9-a+sme)
+      target_compile_options(${ly_lib_name}_sme PRIVATE -march=armv9-a+i8mm+sme)
       list(APPEND ly_lib_parts $<TARGET_OBJECTS:${ly_lib_name}_sme>)
     else()
       add_definitions(-DLIBYUV_DISABLE_SME)