Issue 131602
Summary [mlir][vector] Unify Op argument names (draft)
Labels mlir:vectorops
Assignees banach-space
Reporter banach-space
    Below is a list of vector dialect operations that move values from an abstract
**source** to an abstract **destination**, i.e. "read"/"write" operations:

* `vector.load`, `vector.store`, `vector.transfer_read`,
 `vector.transfer_write`, `vector.gather`, `vector.scatter`,
 `vector.compressstore`, `vector.expandload`, `vector.maskedload`,
 `vector.maskedstore`, `vector.extract`, `vector.insert`,
 `vector.scalable_extract`, `vector.scalable_insert`,
 `vector.extract_strided_slice`, `vector.insert_strided_slice`.

```
| **Vector Dialect Op**          | **Operand Names**        | **Operand Types** | **Result Name**  | **Result Type** |
|--------------------------------|--------------------------|-------------------------------|------------------|----------------------|
| `vector.load`                  | `base`                   | `memref` | `result`         | `vector`             |
| `vector.store` | `valueToStore`, `base`   | `vector`, `memref`            | - | -                    |
| `vector.transfer_read`         | `source`                 | `memref` / `tensor`           | `vector`         | `vector`             |
| `vector.transfer_write`        | `vector`, `source` | `vector`, `memref`/ `tensor`  | `result`         | `vector` |
| `vector.gather`                | `base`                   | `memref` | `result`         | `vector`             |
| `vector.scatter`               | `valueToStore`, `base`   | `vector`, `memref`            | -                | -                    |
| `vector.expandload`            | `base`                   | `memref` | `result`         | `vector`             |
| `vector.compressstore`         | `valueToStore`,`base`    | `vector`, `memref`            | -                | -                    |
| `vector.maskedload`            | `base`                   | `memref` | `result`         | `vector`             |
| `vector.maskedstore`           | `valueToStore`, `base`   | `vector`, `memref`            | -                | -                    |
| `vector.extract`               | `vector`                 | `vector` | `result`         | `scalar` / `vector`  |
| `vector.insert` | `source`, `dest`         | `scalar` / `vector`, `vector` | `result`         | `vector`             |
| `vector.scalable_extract`      | `source`                 | `vector`                      | `res`            | `scalar` / `vector`  |
| `vector.scalable_insert`       | `source`, `dest` | `scalar` / `vector`, `vector` | `res`            | `vector` |
| `vector.extract_strided_slice` | `vector`                 | `vector` | (missing name)   | `vector`             |
| `vector.insert_strided_slice`  | `source`, `dest`         | `vector` | `res`            | `vector`             |
```

Note that "read" operations take one operand ("from"), whereas "write"
operations require two ("value-to-store" and "to").

### Observations
Each "read" operation has a "from" argument, while each "write" operation has a
"to" and a "value-to-store" operand. However, the naming conventions are
**inconsistent**, making it difficult to extract common patterns or determine
operand roles. Here are some inconsistencies:

- `getBase()` in `vector.load` refers to the **"from"** operand (source).
- `getBase()` in `vector.store` refers to the **"to"** operand (destination).
- `vector.transfer_read` and `vector.transfer_write` use `getSource()`, which:
  - **Conflicts** with the `vector.load` / `vector.store` naming pattern.
  - **Does not clearly indicate** whether the operand represents a **source**
    or **destination**.
- `vector.insert` defines `getSource()` and `getDest()`, making the distinction
  between "to" and "from" operands **clear**. However, its sibling operation,
 `vector.extract`, only defines `getVector()`, making it unclear whether it
 represents a **source** or **destination**.
- `vector.store` uses `getValueToStore()`, whereas
  `vector.insert_strided_slice` does not.

There is **no consistent way** to identify:
- `"from"` (read operand)
- `"to"` (write operand)
- `"value-to-store"` (written value)
_______________________________________________
llvm-bugs mailing list
llvm-bugs@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs

Reply via email to