HomePhabricator

[mlir] Model MemRef memory space as Attribute

Authored by vinograd47 on Feb 5 2021, 5:53 AM.

Description

[mlir] Model MemRef memory space as Attribute

Based on the following discussion:
https://llvm.discourse.group/t/rfc-memref-memory-shape-as-attribute/2229

The goal of the change is to make memory space property to have more
expressive representation, rather then "magic" integer values.

It will allow to have more clean ASM form:

gpu.func @test(%arg0: memref<100xf32, "workgroup">)

// instead of

gpu.func @test(%arg0: memref<100xf32, 3>)

Explanation for Attribute choice instead of plain string:

  • Attribute classes allow to use more type safe API based on RTTI.
  • Attribute classes provides faster comparison operator based on pointer comparison in contrast to generic string comparison.
  • Attribute allows to store more complex things, like structs or dictionaries. It will allows to have more complex memory space hierarchy.

This commit preserve old integer-based API and implements it on top
of the new one.

Depends on D97476

Reviewed By: rriddle, mehdi_amini

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

Details

Committed
vinograd47Mar 10 2021, 1:57 AM
Reviewer
rriddle
Differential Revision
D96145: [mlir] Model MemRef memory space as Attribute
Parents
rGd5d4fb635ee0: [mlir][linalg] Add support for using scalar attributes in TC ops.
Branches
Unknown
Tags
Unknown