Based on the following discussion:
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