[all-commits] [llvm/llvm-project] 728a8d: [mlir] Add a builtin distinct attribute

Tobias Gysi via All-commits all-commits at lists.llvm.org
Tue Jul 11 00:34:56 PDT 2023

  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: 728a8d5a81f35f24492fcd31928ef95e597a66af
  Author: Tobias Gysi <tobias.gysi at nextsilicon.com>
  Date:   2023-07-11 (Tue, 11 Jul 2023)

  Changed paths:
    M mlir/docs/Dialects/Builtin.md
    M mlir/include/mlir/IR/AttributeSupport.h
    M mlir/include/mlir/IR/BuiltinAttributes.h
    M mlir/include/mlir/IR/BuiltinDialectBytecode.td
    M mlir/lib/AsmParser/AttributeParser.cpp
    M mlir/lib/AsmParser/Parser.h
    M mlir/lib/AsmParser/ParserState.h
    M mlir/lib/AsmParser/TokenKinds.def
    M mlir/lib/IR/AsmPrinter.cpp
    M mlir/lib/IR/AttributeDetail.h
    M mlir/lib/IR/BuiltinAttributes.cpp
    M mlir/lib/IR/BuiltinDialect.cpp
    M mlir/lib/IR/BuiltinDialectBytecode.cpp
    M mlir/lib/IR/MLIRContext.cpp
    M mlir/test/Dialect/Builtin/Bytecode/attrs.mlir
    A mlir/test/IR/distinct-attr.mlir
    M mlir/test/IR/invalid-builtin-attributes.mlir
    A mlir/test/IR/test-builtin-distinct-attrs.mlir
    M mlir/test/IR/test-symbol-rauw.mlir
    M mlir/test/IR/test-symbol-uses.mlir
    M mlir/test/lib/IR/CMakeLists.txt
    A mlir/test/lib/IR/TestBuiltinDistinctAttributes.cpp
    M mlir/tools/mlir-opt/mlir-opt.cpp

  Log Message:
  [mlir] Add a builtin distinct attribute

A distinct attribute associates a referenced attribute with a unique
identifier. Every call to its create function allocates a new
distinct attribute instance. The address of the attribute instance
temporarily serves as its unique identifier. Similar to the names
of SSA values, the final unique identifiers are generated during
pretty printing.

 #distinct = distinct[0]<42.0 : f32>
 #distinct1 = distinct[1]<42.0 : f32>
 #distinct2 = distinct[2]<array<i32: 10, 42>>

This mechanism is meant to generate attributes with a unique
identifier, which can be used to mark groups of operations
that share a common properties such as if they are aliasing.

The design of the distinct attribute ensures minimal memory
footprint per distinct attribute since it only contains a reference
to another attribute. All distinct attributes are stored outside of
the storage uniquer in a thread local store that is part of the
context. It uses one bump pointer allocator per thread to ensure
distinct attributes can be created in-parallel.

Reviewed By: rriddle, Dinistro, zero9178

Differential Revision: https://reviews.llvm.org/D153360

More information about the All-commits mailing list