#
f643eec8 |
| 15-Dec-2023 |
Hsiangkai Wang <hsiangkai.wang@arm.com> |
[mlir][vector] Add emulation patterns for vector masked load/store (#74834)
In this patch, it will convert
```
vector.maskedload %base[%idx_0, %idx_1], %mask, %pass_thru
```
to
```
%ival
[mlir][vector] Add emulation patterns for vector masked load/store (#74834)
In this patch, it will convert
```
vector.maskedload %base[%idx_0, %idx_1], %mask, %pass_thru
```
to
```
%ivalue = %pass_thru
%m = vector.extract %mask[0]
%result0 = scf.if %m {
%v = memref.load %base[%idx_0, %idx_1]
%combined = vector.insert %v, %ivalue[0]
scf.yield %combined
} else {
scf.yield %ivalue
}
%m = vector.extract %mask[1]
%result1 = scf.if %m {
%v = memref.load %base[%idx_0, %idx_1 + 1]
%combined = vector.insert %v, %result0[1]
scf.yield %combined
} else {
scf.yield %result0
}
...
```
It will convert
```
vector.maskedstore %base[%idx_0, %idx_1], %mask, %value
```
to
```
%m = vector.extract %mask[0]
scf.if %m {
%extracted = vector.extract %value[0]
memref.store %extracted, %base[%idx_0, %idx_1]
}
%m = vector.extract %mask[1]
scf.if %m {
%extracted = vector.extract %value[1]
memref.store %extracted, %base[%idx_0, %idx_1 + 1]
}
...
```
show more ...
|