Skip to content

Commit 7d17f32

Browse files
committed
[mlir][ArmSME] Workaround for old versions of GCC (NFC)
See: llvm#76086 (comment)
1 parent 5417a5f commit 7d17f32

File tree

1 file changed

+21
-19
lines changed

1 file changed

+21
-19
lines changed

mlir/lib/Conversion/ArmSMEToLLVM/ArmSMEToLLVM.cpp

Lines changed: 21 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -364,29 +364,31 @@ struct ConvertArmSMEOpToLLVMPattern : ConvertOpToLLVMPattern<SourceOp> {
364364
}
365365
};
366366

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+
367386
/// Helper to register `ConvertArmSMEOpToLLVMPattern` patterns.
368-
template <typename... Pattern>
387+
template <typename... Patterns>
369388
static void
370389
addArmSMEConversionPatterns(RewritePatternSet &patterns,
371390
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), ...);
390392
}
391393

392394
struct GetTileConversion

0 commit comments

Comments
 (0)