diff options
author | Ricardo Jesus <rjj@nvidia.com> | 2025-02-26 13:56:35 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2025-02-26 13:56:35 +0000 |
commit | 15fbdc2b9635b75f431a26b89b48fe03e7ed9d5c (patch) | |
tree | c6276b2831074e76fd29e903dba5b82ec9e87141 /libcxx/include/__algorithm/remove.h | |
parent | a5d8b7aeb6b360f20eec88715081ecfdb286b83d (diff) | |
download | llvm-15fbdc2b9635b75f431a26b89b48fe03e7ed9d5c.zip llvm-15fbdc2b9635b75f431a26b89b48fe03e7ed9d5c.tar.gz llvm-15fbdc2b9635b75f431a26b89b48fe03e7ed9d5c.tar.bz2 |
[AArch64][SVE] Lower unpredicated loads/stores as LDR/STR. (#127837)
Currently, given:
```cpp
svuint8_t foo(uint8_t *x) {
return svld1(svptrue_b8(), x);
}
```
We generate:
```gas
foo:
ptrue p0.b
ld1b { z0.b }, p0/z, [x0]
ret
```
However, on little-endian and with unaligned memory accesses allowed, we
could instead be using LDR as follows:
```gas
foo:
ldr z0, [x0]
ret
```
The second form avoids the predicate dependency.
Likewise for other types and stores.
Diffstat (limited to 'libcxx/include/__algorithm/remove.h')
0 files changed, 0 insertions, 0 deletions