@@ -245,14 +245,20 @@ def HasOCCMO : Predicate<"Subtarget->hasOCCMO()">,
245
245
// A subset of SVE(2) instructions are legal in Streaming SVE execution mode,
246
246
// they should be enabled if either has been specified.
247
247
def HasSVE_or_SME
248
- : Predicate<"Subtarget->hasSVE() || (Subtarget->isStreaming() && Subtarget->hasSME() )">,
248
+ : Predicate<"Subtarget->isSVEorStreamingSVEAvailable( )">,
249
249
AssemblerPredicateWithAll<(any_of FeatureSVE, FeatureSME),
250
250
"sve or sme">;
251
251
def HasNonStreamingSVE_or_SME2p2
252
252
: Predicate<"(Subtarget->isSVEAvailable() && Subtarget->hasSVE()) ||"
253
253
"(Subtarget->isSVEorStreamingSVEAvailable() && Subtarget->hasSME2p2())">,
254
254
AssemblerPredicateWithAll<(any_of FeatureSVE, FeatureSME2p2),
255
255
"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
+
256
262
def HasSVE2_or_SME
257
263
: Predicate<"Subtarget->hasSVE2() || (Subtarget->isStreaming() && Subtarget->hasSME())">,
258
264
AssemblerPredicateWithAll<(any_of FeatureSVE2, FeatureSME),
@@ -264,40 +270,41 @@ def HasSVE2_or_SME2
264
270
def HasNonStreamingSVE2_or_SSVE_AES
265
271
: Predicate<"(Subtarget->isSVEAvailable() && Subtarget->hasSVE2()) ||"
266
272
"(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
+
268
276
def HasSVE2p1_or_SME
269
277
: 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">;
271
280
def HasSVE2p1_or_SME2
272
281
: 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">;
274
284
def HasSVE2p1_or_SME2p1
275
285
: 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
+
277
289
def HasSVE2p2_or_SME2p2
278
290
: 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">;
288
293
def HasNonStreamingSVE2p2_or_SME2p2
289
294
: Predicate<"(Subtarget->isSVEAvailable() && Subtarget->hasSVE2p2()) ||"
290
295
"(Subtarget->isSVEorStreamingSVEAvailable() && Subtarget->hasSME2p2())">,
291
296
AssemblerPredicateWithAll<(any_of FeatureSVE2p2, FeatureSME2p2),
292
297
"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">;
293
303
def HasNonStreamingSVE2_or_SSVE_BitPerm
294
304
: Predicate<"(Subtarget->isSVEAvailable() && Subtarget->hasSVE2()) ||"
295
305
"(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">;
301
308
302
309
// A subset of NEON instructions are legal in Streaming SVE execution mode,
303
310
// so don't need the additional check for 'isNeonAvailable'.
0 commit comments