diff options
author | Ricardo Jesus <rjj@nvidia.com> | 2025-05-06 08:48:08 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2025-05-06 08:48:08 +0100 |
commit | fbd9a3160b392c343f9ce24af0180d8b14c68dfe (patch) | |
tree | 9828414839c39ccda33fd115132cab38e9151c55 /flang/lib/Frontend/CompilerInvocation.cpp | |
parent | fd161cf56f4356c38f82a6d68a80236e00bce39d (diff) | |
download | llvm-fbd9a3160b392c343f9ce24af0180d8b14c68dfe.zip llvm-fbd9a3160b392c343f9ce24af0180d8b14c68dfe.tar.gz llvm-fbd9a3160b392c343f9ce24af0180d8b14c68dfe.tar.bz2 |
[AArch64][SVE] Combine UXT[BHW] intrinsics to AND. (#137956)
This patch combines uxt[bhw] intrinsics to and_u when the governing
predicate is all-true or the passthrough is undef (e.g. in cases of
``unknown'' merging). This improves code gen as the latter can be
emitted as AND immediate instructions.
For example, given:
```cpp
svuint64_t foo(svuint64_t x) {
return svextb_z(svptrue_b64(), x);
}
```
Currently:
```gas
foo:
ptrue p0.d
movi v1.2d, #0000000000000000
uxtb z0.d, p0/m, z0.d
ret
```
Becomes:
```gas
foo:
and z0.d, z0.d, #0xff
ret
```
Diffstat (limited to 'flang/lib/Frontend/CompilerInvocation.cpp')
0 files changed, 0 insertions, 0 deletions