llvm / llvm/llvm-project

[X86][Codegen] Adjacent VPTERNLOG is not optimized

Open
#204,103 5 comments 0 reactions 1 assignee Claimed by @raventid View on GitHub
backend:X86 llvm:codegen missed-optimization
Dominant language
LLVM
Stars
40.5k
Forks
18.7k
PR merge metrics
PR metrics pending

Description

https://godbolt.org/z/qMsG4fxzK

```cpp
typedef unsigned long long v4di __attribute((vector_size(32)));
v4di foo1(v4di a, v4di b, v4di c)
{
return (a & b) | ((a ^ b) & c);
}

```
Clang Trunk
```asm
vpternlogq ymm2, ymm1, ymm0, 96
vpternlogq ymm0, ymm1, ymm2, 234
ret
```
GCC
```asm
vpternlogq ymm0, ymm1, ymm2, 232
ret
```

We have opportunity to optimize.

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.