@@ -364,29 +364,31 @@ struct ConvertArmSMEOpToLLVMPattern : ConvertOpToLLVMPattern<SourceOp> {
364
364
}
365
365
};
366
366
367
+ template <typename Pattern>
368
+ static void addArmSMEConversionPattern (RewritePatternSet &patterns,
369
+ LLVMTypeConverter const &typeConverter) {
370
+ // Register spills/fills for ops that implement the
371
+ // `ArmSMETileOpInterface` and have `requiresSpillsAndFills` set to
372
+ // `RequiresSpillsAndFills::Yes`.
373
+ if constexpr (Pattern::requiresSpillsAndFillsConversion () &&
374
+ std::is_base_of_v<arm_sme::ArmSMETileOpInterface::Trait<
375
+ typename Pattern::ArmSMEOp>,
376
+ typename Pattern::ArmSMEOp>) {
377
+ // Add spill/fill conversions with a very high benefit to ensure
378
+ // they are lowered first.
379
+ patterns.add <ConvertArmSMESpillsAndFillsToLLVM>(
380
+ Pattern::ArmSMEOp::getOperationName (), typeConverter,
381
+ /* benefit=*/ 1337 );
382
+ }
383
+ patterns.add <Pattern>(typeConverter);
384
+ }
385
+
367
386
// / Helper to register `ConvertArmSMEOpToLLVMPattern` patterns.
368
- template <typename ... Pattern >
387
+ template <typename ... Patterns >
369
388
static void
370
389
addArmSMEConversionPatterns (RewritePatternSet &patterns,
371
390
LLVMTypeConverter const &typeConverter) {
372
- (
373
- [&] {
374
- // Register spills/fills for ops that implement the
375
- // `ArmSMETileOpInterface` and have `requiresSpillsAndFills` set to
376
- // `RequiresSpillsAndFills::Yes`.
377
- if constexpr (Pattern::requiresSpillsAndFillsConversion () &&
378
- std::is_base_of_v<arm_sme::ArmSMETileOpInterface::Trait<
379
- typename Pattern::ArmSMEOp>,
380
- typename Pattern::ArmSMEOp>) {
381
- // Add spill/fill conversions with a very high benefit to ensure
382
- // they are lowered first.
383
- patterns.add <ConvertArmSMESpillsAndFillsToLLVM>(
384
- Pattern::ArmSMEOp::getOperationName (), typeConverter,
385
- /* benefit=*/ 1337 );
386
- }
387
- patterns.add <Pattern>(typeConverter);
388
- }(),
389
- ...);
391
+ (addArmSMEConversionPattern<Patterns>(patterns, typeConverter), ...);
390
392
}
391
393
392
394
struct GetTileConversion
0 commit comments