[mlir] Add support for custom readProperties/writeProperties methods. Currently, operations that opt-in to adopt properties will see auto-generated readProperties/writeProperties methods to emit and parse bytecode. If a dialects opts in to use `usePropertiesForAttributes`, those definitions will be generated for the current definition of the op without the possibility to handle attribute versioning. The patch adds the capability for an operation to define its own read/write methods for the encoding of properties so that versioned operations can handle upgrading properties encodings. In addition to this, the patch adds an example showing versioning on NamedProperties through the dialect version API exposed by the reader. Reviewed By: mehdi_amini Differential Revision: https://reviews.llvm.org/D155340
39 lines
1.6 KiB
MLIR
39 lines
1.6 KiB
MLIR
// This file contains test cases related to the dialect post-parsing upgrade
|
|
// mechanism.
|
|
|
|
//===--------------------------------------------------------------------===//
|
|
// Test generic
|
|
//===--------------------------------------------------------------------===//
|
|
|
|
// COM: bytecode contains
|
|
// COM: module {
|
|
// COM: version: 2.0
|
|
// COM: "test.versionedA"() <{dims = 123 : i64, modifier = false}> : () -> ()
|
|
// COM: }
|
|
// RUN: mlir-opt %S/versioned-op-with-prop-2.0.mlirbc 2>&1 | FileCheck %s --check-prefix=CHECK1
|
|
// CHECK1: "test.versionedA"() <{dims = 123 : i64, modifier = false}> : () -> ()
|
|
|
|
//===--------------------------------------------------------------------===//
|
|
// Test upgrade
|
|
//===--------------------------------------------------------------------===//
|
|
|
|
// COM: bytecode contains
|
|
// COM: module {
|
|
// COM: version: 1.12
|
|
// COM: "test.versionedA"() <{dimensions = 123 : i64}> : () -> ()
|
|
// COM: }
|
|
// RUN: mlir-opt %S/versioned-op-with-prop-1.12.mlirbc 2>&1 | FileCheck %s --check-prefix=CHECK3
|
|
// CHECK3: "test.versionedA"() <{dims = 123 : i64, modifier = false}> : () -> ()
|
|
|
|
//===--------------------------------------------------------------------===//
|
|
// Test forbidden downgrade
|
|
//===--------------------------------------------------------------------===//
|
|
|
|
// COM: bytecode contains
|
|
// COM: module {
|
|
// COM: version: 2.2
|
|
// COM: "test.versionedA"() <{dims = 123 : i64, modifier = false}> : () -> ()
|
|
// COM: }
|
|
// RUN: not mlir-opt %S/versioned-op-2.2.mlirbc 2>&1 | FileCheck %s --check-prefix=ERR_NEW_VERSION
|
|
// ERR_NEW_VERSION: current test dialect version is 2.0, can't parse version: 2.2
|