@@ -2116,7 +2116,7 @@ def SVFCLAMP_BF : SInst<"svclamp[_{d}]", "dddd", "b", MergeNone, "aarch64_sve_
2116
2116
multiclass MinMaxIntr<string i, string zm, string mul, string t> {
2117
2117
def SVS # NAME : SInst<"sv" # i # "[" # zm # "_{d}_" # mul # "]", t, "csil", MergeNone, "aarch64_sve_s" # i # zm # "_" # mul, [IsStreaming], []>;
2118
2118
def SVU # NAME : SInst<"sv" # i # "[" # zm # "_{d}_" # mul # "]", t, "UcUsUiUl", MergeNone, "aarch64_sve_u" # i # zm # "_" # mul, [IsStreaming], []>;
2119
- def SVF # NAME : SInst<"sv" # i # "[" # zm # "_{d}_" # mul # "]", t, "bhfd ", MergeNone, "aarch64_sve_f" # i # zm # "_" # mul, [IsStreaming], []>;
2119
+ def SVF # NAME : SInst<"sv" # i # "[" # zm # "_{d}_" # mul # "]", t, "hfd ", MergeNone, "aarch64_sve_f" # i # zm # "_" # mul, [IsStreaming], []>;
2120
2120
}
2121
2121
2122
2122
let SVETargetGuard = InvalidMode, SMETargetGuard = "sme2" in {
@@ -2134,11 +2134,11 @@ let SVETargetGuard = InvalidMode, SMETargetGuard = "sme2" in {
2134
2134
}
2135
2135
2136
2136
multiclass SInstMinMaxByVector<string name> {
2137
- def NAME # _SINGLE_X2 : SInst<"sv" # name # "nm[_single_{d}_x2]", "22d", "bhfd ", MergeNone, "aarch64_sve_f" # name # "nm_single_x2", [IsStreaming], []>;
2138
- def NAME # _SINGLE_X4 : SInst<"sv" # name # "nm[_single_{d}_x4]", "44d", "bhfd ", MergeNone, "aarch64_sve_f" # name # "nm_single_x4", [IsStreaming], []>;
2137
+ def NAME # _SINGLE_X2 : SInst<"sv" # name # "nm[_single_{d}_x2]", "22d", "hfd ", MergeNone, "aarch64_sve_f" # name # "nm_single_x2", [IsStreaming], []>;
2138
+ def NAME # _SINGLE_X4 : SInst<"sv" # name # "nm[_single_{d}_x4]", "44d", "hfd ", MergeNone, "aarch64_sve_f" # name # "nm_single_x4", [IsStreaming], []>;
2139
2139
2140
- def NAME # _X2 : SInst<"sv" # name # "nm[_{d}_x2]", "222", "bhfd ", MergeNone, "aarch64_sve_f" # name # "nm_x2", [IsStreaming], []>;
2141
- def NAME # _X4 : SInst<"sv" # name # "nm[_{d}_x4]", "444", "bhfd ", MergeNone, "aarch64_sve_f" # name # "nm_x4", [IsStreaming], []>;
2140
+ def NAME # _X2 : SInst<"sv" # name # "nm[_{d}_x2]", "222", "hfd ", MergeNone, "aarch64_sve_f" # name # "nm_x2", [IsStreaming], []>;
2141
+ def NAME # _X4 : SInst<"sv" # name # "nm[_{d}_x4]", "444", "hfd ", MergeNone, "aarch64_sve_f" # name # "nm_x4", [IsStreaming], []>;
2142
2142
}
2143
2143
2144
2144
let SVETargetGuard = InvalidMode, SMETargetGuard = "sme2" in {
@@ -2172,9 +2172,25 @@ let SVETargetGuard = InvalidMode, SMETargetGuard = "sme2" in {
2172
2172
def SVFCLAMP_X4 : SInst<"svclamp[_single_{d}_x4]", "44dd", "hfd", MergeNone, "aarch64_sve_fclamp_single_x4", [IsStreaming], []>;
2173
2173
}
2174
2174
2175
+ multiclass BfSingleMultiVector<string name> {
2176
+ def NAME # _SINGLE_X2 : SInst<"sv" # name # "[_single_{d}_x2]", "22d", "b", MergeNone, "aarch64_sve_f" # name # "_single_x2", [IsStreaming], []>;
2177
+ def NAME # _SINGLE_X4 : SInst<"sv" # name # "[_single_{d}_x4]", "44d", "b", MergeNone, "aarch64_sve_f" # name # "_single_x4", [IsStreaming], []>;
2178
+
2179
+ def NAME # _X2 : SInst<"sv" # name # "[_{d}_x2]", "222", "b", MergeNone, "aarch64_sve_f" # name # "_x2", [IsStreaming], []>;
2180
+ def NAME # _X4 : SInst<"sv" # name # "[_{d}_x4]", "444", "b", MergeNone, "aarch64_sve_f" # name # "_x4", [IsStreaming], []>;
2181
+ }
2182
+
2175
2183
let SVETargetGuard = InvalidMode, SMETargetGuard = "sme2,sve-b16b16"in {
2176
- def SVBFCLAMP_X2 : SInst<"svclamp[_single_{d}_x2]", "22dd", "b", MergeNone, "aarch64_sve_bfclamp_single_x2", [IsStreaming], []>;
2177
- def SVBFCLAMP_X4 : SInst<"svclamp[_single_{d}_x4]", "44dd", "b", MergeNone, "aarch64_sve_bfclamp_single_x4", [IsStreaming], []>;
2184
+ def SVBFCLAMP_X2 : SInst<"svclamp[_single_{d}_x2]", "22dd", "b", MergeNone, "aarch64_sve_bfclamp_single_x2", [IsStreaming], []>;
2185
+ def SVBFCLAMP_X4 : SInst<"svclamp[_single_{d}_x4]", "44dd", "b", MergeNone, "aarch64_sve_bfclamp_single_x4", [IsStreaming], []>;
2186
+
2187
+ // bfmin, bfmax (single, multi)
2188
+ defm SVBFMIN : BfSingleMultiVector<"min">;
2189
+ defm SVBFMAX : BfSingleMultiVector<"max">;
2190
+
2191
+ // bfminnm, bfmaxnm (single, multi)
2192
+ defm SVBFMINNM : BfSingleMultiVector<"minnm">;
2193
+ defm SVBFMAXNM : BfSingleMultiVector<"maxnm">;
2178
2194
}
2179
2195
2180
2196
let SVETargetGuard = InvalidMode, SMETargetGuard = "sme2" in {
0 commit comments