diff --git a/mlir/lib/Dialect/ArmSME/Transforms/EnableArmStreaming.cpp b/mlir/lib/Dialect/ArmSME/Transforms/EnableArmStreaming.cpp index 97c38b546349510..1d3a090e861013b 100644 --- a/mlir/lib/Dialect/ArmSME/Transforms/EnableArmStreaming.cpp +++ b/mlir/lib/Dialect/ArmSME/Transforms/EnableArmStreaming.cpp @@ -52,6 +52,8 @@ using namespace mlir::arm_sme; static constexpr char kArmStreamingAttr[] = "arm_streaming"; static constexpr char kArmLocallyStreamingAttr[] = "arm_locally_streaming"; static constexpr char kArmZAAttr[] = "arm_za"; +static constexpr char kEnableArmStreamingIgnoreAttr[] = + "enable_arm_streaming_ignore"; namespace { struct EnableArmStreamingPass @@ -61,7 +63,9 @@ struct EnableArmStreamingPass this->enableZA = enableZA; } void runOnOperation() override { - std::string attr; + if (getOperation()->getAttr(kEnableArmStreamingIgnoreAttr)) + return; + StringRef attr; switch (mode) { case ArmStreaming::Default: attr = kArmStreamingAttr; diff --git a/mlir/test/Dialect/ArmSME/enable-arm-streaming.mlir b/mlir/test/Dialect/ArmSME/enable-arm-streaming.mlir index f5cc83192f9f6e1..e7bbe8c0047687d 100644 --- a/mlir/test/Dialect/ArmSME/enable-arm-streaming.mlir +++ b/mlir/test/Dialect/ArmSME/enable-arm-streaming.mlir @@ -9,3 +9,11 @@ // CHECK-ENABLE-ZA-LABEL: @arm_streaming // CHECK-ENABLE-ZA-SAME: attributes {arm_streaming, arm_za} func.func @arm_streaming() { return } + +// CHECK-LABEL: @not_arm_streaming +// CHECK-SAME: attributes {enable_arm_streaming_ignore} +// CHECK-LOCALLY-LABEL: @not_arm_streaming +// CHECK-LOCALLY-SAME: attributes {enable_arm_streaming_ignore} +// CHECK-ENABLE-ZA-LABEL: @not_arm_streaming +// CHECK-ENABLE-ZA-SAME: attributes {enable_arm_streaming_ignore} +func.func @not_arm_streaming() attributes {enable_arm_streaming_ignore} { return }