@@ -2007,6 +2007,20 @@ let TargetGuard = "sme2" in {
2007
2007
defm MIN_MULTI_X4 : MinMaxIntr<"min", "", "x4", "444">;
2008
2008
}
2009
2009
2010
+ multiclass SInstMinMaxByVector<string name> {
2011
+ def NAME # _SINGLE_X2 : SInst<"sv" # name # "nm[_single_{d}_x2]", "22d", "hfd", MergeNone, "aarch64_sve_f" # name # "nm_single_x2", [IsStreaming], []>;
2012
+ def NAME # _SINGLE_X4 : SInst<"sv" # name # "nm[_single_{d}_x4]", "44d", "hfd", MergeNone, "aarch64_sve_f" # name # "nm_single_x4", [IsStreaming], []>;
2013
+
2014
+ def NAME # _X2 : SInst<"sv" # name # "nm[_{d}_x2]", "222", "hfd", MergeNone, "aarch64_sve_f" # name # "nm_x2", [IsStreaming], []>;
2015
+ def NAME # _X4 : SInst<"sv" # name # "nm[_{d}_x4]", "444", "hfd", MergeNone, "aarch64_sve_f" # name # "nm_x4", [IsStreaming], []>;
2016
+ }
2017
+
2018
+ let TargetGuard = "sme2" in {
2019
+ // == FMINNM / FMAXNM ==
2020
+ defm SVMINNM : SInstMinMaxByVector<"min">;
2021
+ defm SVMAXNM : SInstMinMaxByVector<"max">;
2022
+ }
2023
+
2010
2024
let TargetGuard = "sme2" in {
2011
2025
// == ADD (vectors) ==
2012
2026
def SVADD_SINGLE_X2 : SInst<"svadd[_single_{d}_x2]", "22d", "cUcsUsiUilUl", MergeNone, "aarch64_sve_add_single_x2", [IsStreaming], []>;
0 commit comments