@@ -245,14 +245,20 @@ def HasOCCMO : Predicate<"Subtarget->hasOCCMO()">,
245245// A subset of SVE(2) instructions are legal in Streaming SVE execution mode,
246246// they should be enabled if either has been specified.
247247def HasSVE_or_SME
248- : Predicate<"Subtarget->hasSVE() || (Subtarget->isStreaming() && Subtarget->hasSME() )">,
248+ : Predicate<"Subtarget->isSVEorStreamingSVEAvailable( )">,
249249 AssemblerPredicateWithAll<(any_of FeatureSVE, FeatureSME),
250250 "sve or sme">;
251251def HasNonStreamingSVE_or_SME2p2
252252 : Predicate<"(Subtarget->isSVEAvailable() && Subtarget->hasSVE()) ||"
253253 "(Subtarget->isSVEorStreamingSVEAvailable() && Subtarget->hasSME2p2())">,
254254 AssemblerPredicateWithAll<(any_of FeatureSVE, FeatureSME2p2),
255255 "sve or sme2p2">;
256+ def HasNonStreamingSVE_or_SSVE_FEXPA
257+ : Predicate<"(Subtarget->isSVEAvailable() && Subtarget->hasSVE()) ||"
258+ "(Subtarget->isSVEorStreamingSVEAvailable() && Subtarget->hasSSVE_FEXPA())">,
259+ AssemblerPredicateWithAll<(any_of FeatureSVE, FeatureSSVE_FEXPA),
260+ "sve or ssve-fexpa">;
261+
256262def HasSVE2_or_SME
257263 : Predicate<"Subtarget->hasSVE2() || (Subtarget->isStreaming() && Subtarget->hasSME())">,
258264 AssemblerPredicateWithAll<(any_of FeatureSVE2, FeatureSME),
@@ -264,40 +270,41 @@ def HasSVE2_or_SME2
264270def HasNonStreamingSVE2_or_SSVE_AES
265271 : Predicate<"(Subtarget->isSVEAvailable() && Subtarget->hasSVE2()) ||"
266272 "(Subtarget->isSVEorStreamingSVEAvailable() && Subtarget->hasSSVE_AES())">,
267- AssemblerPredicateWithAll<(any_of FeatureSVE2, FeatureSSVE_AES), "sve2 or ssve-aes">;
273+ AssemblerPredicateWithAll<(any_of FeatureSVE2, FeatureSSVE_AES),
274+ "sve2 or ssve-aes">;
275+
268276def HasSVE2p1_or_SME
269277 : Predicate<"Subtarget->hasSVE2p1() || (Subtarget->isStreaming() && Subtarget->hasSME())">,
270- AssemblerPredicateWithAll<(any_of FeatureSME, FeatureSVE2p1), "sme or sve2p1">;
278+ AssemblerPredicateWithAll<(any_of FeatureSME, FeatureSVE2p1),
279+ "sme or sve2p1">;
271280def HasSVE2p1_or_SME2
272281 : Predicate<"Subtarget->hasSVE2p1() || (Subtarget->isStreaming() && Subtarget->hasSME2())">,
273- AssemblerPredicateWithAll<(any_of FeatureSME2, FeatureSVE2p1), "sme2 or sve2p1">;
282+ AssemblerPredicateWithAll<(any_of FeatureSME2, FeatureSVE2p1),
283+ "sme2 or sve2p1">;
274284def HasSVE2p1_or_SME2p1
275285 : Predicate<"Subtarget->hasSVE2p1() || (Subtarget->isStreaming() && Subtarget->hasSME2p1())">,
276- AssemblerPredicateWithAll<(any_of FeatureSME2p1, FeatureSVE2p1), "sme2p1 or sve2p1">;
286+ AssemblerPredicateWithAll<(any_of FeatureSME2p1, FeatureSVE2p1),
287+ "sme2p1 or sve2p1">;
288+
277289def HasSVE2p2_or_SME2p2
278290 : Predicate<"Subtarget->isSVEorStreamingSVEAvailable() && (Subtarget->hasSVE2p2() || Subtarget->hasSME2p2())">,
279- AssemblerPredicateWithAll<(any_of FeatureSME2p2, FeatureSVE2p2), "sme2p2 or sve2p2">;
280- def HasNonStreamingSVE2p1_or_SSVE_AES
281- : Predicate<"(Subtarget->isSVEAvailable() && Subtarget->hasSVE2p1()) ||"
282- "(Subtarget->isSVEorStreamingSVEAvailable() && Subtarget->hasSSVE_AES())">,
283- AssemblerPredicateWithAll<(any_of FeatureSVE2p1, FeatureSSVE_AES), "sve2p1 or ssve-aes">;
284- def HasSMEF16F16_or_SMEF8F16
285- : Predicate<"Subtarget->isStreaming() && (Subtarget->hasSMEF16F16() || Subtarget->hasSMEF8F16())">,
286- AssemblerPredicateWithAll<(any_of FeatureSMEF16F16, FeatureSMEF8F16),
287- "sme-f16f16 or sme-f8f16">;
291+ AssemblerPredicateWithAll<(any_of FeatureSME2p2, FeatureSVE2p2),
292+ "sme2p2 or sve2p2">;
288293def HasNonStreamingSVE2p2_or_SME2p2
289294 : Predicate<"(Subtarget->isSVEAvailable() && Subtarget->hasSVE2p2()) ||"
290295 "(Subtarget->isSVEorStreamingSVEAvailable() && Subtarget->hasSME2p2())">,
291296 AssemblerPredicateWithAll<(any_of FeatureSVE2p2, FeatureSME2p2),
292297 "sme2p2 or sve2p2">;
298+
299+ def HasSMEF16F16_or_SMEF8F16
300+ : Predicate<"Subtarget->isStreaming() && (Subtarget->hasSMEF16F16() || Subtarget->hasSMEF8F16())">,
301+ AssemblerPredicateWithAll<(any_of FeatureSMEF16F16, FeatureSMEF8F16),
302+ "sme-f16f16 or sme-f8f16">;
293303def HasNonStreamingSVE2_or_SSVE_BitPerm
294304 : Predicate<"(Subtarget->isSVEAvailable() && Subtarget->hasSVE2()) ||"
295305 "(Subtarget->isSVEorStreamingSVEAvailable() && Subtarget->hasSSVE_BitPerm())">,
296- AssemblerPredicateWithAll<(any_of FeatureSVE2, FeatureSSVE_BitPerm), "sve2 or ssve-bitperm">;
297- def HasNonStreamingSVE_or_SSVE_FEXPA
298- : Predicate<"(Subtarget->isSVEAvailable() && Subtarget->hasSVE()) ||"
299- "(Subtarget->isSVEorStreamingSVEAvailable() && Subtarget->hasSSVE_FEXPA())">,
300- AssemblerPredicateWithAll<(any_of FeatureSVE, FeatureSSVE_FEXPA), "sve or ssve-fexpa">;
306+ AssemblerPredicateWithAll<(any_of FeatureSVE2, FeatureSSVE_BitPerm),
307+ "sve2 or ssve-bitperm">;
301308
302309// A subset of NEON instructions are legal in Streaming SVE execution mode,
303310// so don't need the additional check for 'isNeonAvailable'.
0 commit comments