[MLIR] Add native Bytecode support for properties
authorMehdi Amini <joker.eph@gmail.com>
Mon, 1 May 2023 15:43:50 +0000 (08:43 -0700)
committerMehdi Amini <joker.eph@gmail.com>
Thu, 25 May 2023 22:15:47 +0000 (15:15 -0700)
commit837d1ce0dc8eec5b17255291b3462e6296cb369b
tree02a2f1982131b75dcafc7ddb577d959f016fc629
parenta6d09d4b1ac224ed90ee8ff6c964a2bff39421c7
[MLIR] Add native Bytecode support for properties

This is adding a new interface (`BytecodeOpInterface`) to allow operations to
opt-in skipping conversion to attribute and serializing properties to native
bytecode.

The scheme relies on a new section where properties are stored in sequence

  { size, serialize_properties }, ...

The operations are storing the index of a properties, a table of offset is
built when loading the properties section the first time.

Back-deployment to version prior to 4 are relying on getAttrDictionnary() which
we intend to deprecate and remove: that is putting a de-factor end-of-support
horizon for supporting deployments to version older than 4.

Differential Revision: https://reviews.llvm.org/D151065
62 files changed:
mlir/examples/standalone/include/Standalone/StandaloneDialect.h
mlir/include/mlir/Bytecode/BytecodeImplementation.h
mlir/include/mlir/Bytecode/BytecodeOpInterface.h [new file with mode: 0644]
mlir/include/mlir/Bytecode/BytecodeOpInterface.td [new file with mode: 0644]
mlir/include/mlir/Bytecode/BytecodeWriter.h
mlir/include/mlir/Bytecode/CMakeLists.txt [new file with mode: 0644]
mlir/include/mlir/Bytecode/Encoding.h
mlir/include/mlir/CMakeLists.txt
mlir/include/mlir/Dialect/AMDGPU/IR/AMDGPUDialect.h
mlir/include/mlir/Dialect/AMX/AMXDialect.h
mlir/include/mlir/Dialect/Affine/TransformOps/AffineTransformOps.h
mlir/include/mlir/Dialect/Arith/IR/Arith.h
mlir/include/mlir/Dialect/ArmNeon/ArmNeonDialect.h
mlir/include/mlir/Dialect/ArmSVE/ArmSVEDialect.h
mlir/include/mlir/Dialect/Async/IR/Async.h
mlir/include/mlir/Dialect/Bufferization/IR/Bufferization.h
mlir/include/mlir/Dialect/Bufferization/TransformOps/BufferizationTransformOps.h
mlir/include/mlir/Dialect/Complex/IR/Complex.h
mlir/include/mlir/Dialect/ControlFlow/IR/ControlFlow.h
mlir/include/mlir/Dialect/ControlFlow/IR/ControlFlowOps.h
mlir/include/mlir/Dialect/EmitC/IR/EmitC.h
mlir/include/mlir/Dialect/Func/IR/FuncOps.h
mlir/include/mlir/Dialect/GPU/IR/GPUDialect.h
mlir/include/mlir/Dialect/IRDL/IR/IRDL.h
mlir/include/mlir/Dialect/Index/IR/IndexOps.h
mlir/include/mlir/Dialect/LLVMIR/LLVMDialect.h
mlir/include/mlir/Dialect/LLVMIR/NVVMDialect.h
mlir/include/mlir/Dialect/LLVMIR/ROCDLDialect.h
mlir/include/mlir/Dialect/Linalg/IR/Linalg.h
mlir/include/mlir/Dialect/MLProgram/IR/MLProgram.h
mlir/include/mlir/Dialect/Math/IR/Math.h
mlir/include/mlir/Dialect/MemRef/IR/MemRef.h
mlir/include/mlir/Dialect/MemRef/TransformOps/MemRefTransformOps.h
mlir/include/mlir/Dialect/NVGPU/IR/NVGPUDialect.h
mlir/include/mlir/Dialect/OpenACC/OpenACC.h
mlir/include/mlir/Dialect/PDL/IR/PDLOps.h
mlir/include/mlir/Dialect/PDLInterp/IR/PDLInterp.h
mlir/include/mlir/Dialect/SCF/TransformOps/SCFTransformOps.h
mlir/include/mlir/Dialect/SPIRV/IR/SPIRVOps.h
mlir/include/mlir/Dialect/Shape/IR/Shape.h
mlir/include/mlir/Dialect/SparseTensor/IR/SparseTensor.h
mlir/include/mlir/Dialect/Tensor/IR/Tensor.h
mlir/include/mlir/Dialect/Tosa/IR/TosaOps.h
mlir/include/mlir/Dialect/Transform/IR/TransformOps.h
mlir/include/mlir/Dialect/Transform/PDLExtension/PDLExtensionOps.h
mlir/include/mlir/Dialect/Vector/IR/VectorOps.h
mlir/include/mlir/Dialect/X86Vector/X86VectorDialect.h
mlir/include/mlir/IR/OpBase.td
mlir/include/mlir/TableGen/Property.h
mlir/lib/Bytecode/BytecodeOpInterface.cpp [new file with mode: 0644]
mlir/lib/Bytecode/CMakeLists.txt
mlir/lib/Bytecode/Reader/BytecodeReader.cpp
mlir/lib/Bytecode/Writer/BytecodeWriter.cpp
mlir/lib/Bytecode/Writer/CMakeLists.txt
mlir/lib/Bytecode/Writer/IRNumbering.cpp
mlir/lib/Bytecode/Writer/IRNumbering.h
mlir/lib/TableGen/Property.cpp
mlir/test/Bytecode/invalid/invalid-structure.mlir
mlir/test/lib/Dialect/Test/TestDialect.cpp
mlir/test/lib/Dialect/Test/TestOps.td
mlir/test/lib/Dialect/Transform/TestTransformDialectExtension.h
mlir/tools/mlir-tblgen/OpDefinitionsGen.cpp