llvm / llvm/llvm-project

`pext(x & m, m)` -> `pext(x, m)`

Open
#204,945 9 comments 0 reactions 1 assignee Claimed by @aadanen View on GitHub
good first issue llvm:instcombine missed-optimization
Dominant language
LLVM
Stars
40.5k
Forks
18.7k
PR merge metrics
PR metrics pending

Description

[C Godbolt](https://c.godbo.lt/#z:OYLghAFBqd5QCxAYwPYBMCmBRdBLAF1QCcAaPECAMzwBtMA7AQwFtMQByARg9KtQYEAysib0QXACx8BBAKoBnTAAUAHpwAMvAFYTStJg1AB9U8lJL6yAngGVG6AMKpaAVxYMQAJgDspBwAyeAyYAHLuAEaYxCAArKQADqgKhLYMzm4e3gDMicmpAkEh4SxRMfGWmNZpQgRMxAQZ7p6%2BFphWNgK19QRFYZHRcRZ1DU1ZXrkKI73B/aWDsQCUFqiuxMjsHACkE8HIblgA1FvZjngsLMEExMEAdAgn2FsaAII72XsHmMenU/iC90ezzer1cVwAbJJjARDlgGEpjCwmAoANbGKjEVAsRHIlEQMGCSHQw6qUiHAkEIkwliLY4%2BABCwMOzMOxEwBDWDEOxgSmFUBGMrkhEFUxy84MOLDJNJOjNeWx8ABFgRxlrROLFeJ4OFpSKhOI5DgpVutvu8eKQCJpVcsUSBJAAOW4O8G%2BSSxDQATgdGmynq8Xn0nEkWutes4vAUIA0lutyzgsBgiBQWISdGi5EoaBYafoMWQ%2B0MwGhxFcDBRfDoBGiUYgETDEWC9QAnpwLY3mMRmwB5CLaKpW7i8bNsQTdhi0Vs63hYCKuYCOMS0KND0hYJFGcTTtd4NnVABumBXur5VVc1bbvCu7TDtDwEWILecWDD13Ol9Ih%2BIEWSmEVmA3YA7yMOM%2BAMYAFAANTwTAAHdu15bULX4QQRDEdgpBkQRFBUdRt10Lh9CLEBTGMcw7wiKNIGWVAEk6eFOAAWm7bJDkYpF1gebJFXwVgBHQR803QBReFQL8biwKiIGWSpqjsCAHDGTxCMCWYSjKPQkhSeilM0/J6L6dTBkI2T6O6UYXGaPRTJqaZDIGGITOmXSnJ6ez5kcmSTQ2CQ1Q1UNt31DgSRdRjIUOQsjEOCBrjLFFaQgXBCBIMVsi4RZeEHLRFlte1PVuDRJC9HxIXBX00tydUOBDUgWBAbJsluNKiuyWI2o0LxJHBB0HVIbVdSCyNo1jad4yTCAkGzXMMwoCApvTfMIOYBIFAQVACErWhq2IWt623DsWw/A6u17ftrA/EdGAIcdJzDWd50XWhlw/dciy3XV8D3GxD2PXhT2Qc9Ngta8qt1CjHy7Z9Nl1N86tXL8fyUf9AOA0BRrApgIOguCEMYD8UOEURxEwgmcLUMNdEDAwQNI8j7ykmi6LSFdmNY9j6mQLjFQALwYL9NT1cS8Ek%2BAZPaAc0nsBgnEsrIVOl9yNMIrSCnSWXlLybS0kV4y2g6WyehcvWJa6Oy1Ic6znPVy23PNjzfJWNYfPSoMOAF/rRM4ELwTCyRDmAAtoti8sEqSohiFS9LMrjZYEEwJgsBiaTXZquqGqa2JxTSrguEhLhPR8T0%2BrDQaLGGrLVVIBNk13TMIA4RiqAYVBGPwBRRGIdBGP3MRXEwRjmDYESw3mvNQlYTZVFC8LIuAIPSxDmcALe/uFGbUoXF%2B/x8HD4W9BoLbokYpgCDfOdqy3g/tsYy7BEvqsj/u4BGOCfgwyvx%2BqgMR96JXZCH%2BIC/eEsU5IMHYuyBOJ8mDvwAYxcGLZG5llAX/XgBM0LE2kKTJQ5N8LWXFqAqWMtMga1UsUC2yt9JpCNirAydslbG1AeZRo1sTL4LMmbMh9tXIWWITbBoOtPIWDWrBRitEbCXG5pgdAr42SYD3jGWCglLx%2BTdgFAanAAgBEggAWUOAASQAEqHGxrBaI3tfYRWpnPGKC94rRTDilc0ZJnA5gWpHDKI1soqNTvVRqDV/EBMCcXQKEYy4xgrjlUgdpYhcFuFwbIPgvCxEkJ6DQ%2Bcyo%2BF6lVbIajPYcGjqNFRXhcnhnyZ4m0n4ayS0kEAA%3D%3D)
```llvm
define dso_local noundef i64 @dense_mask_from_mask(i64 noundef %x, i64 noundef %m) local_unnamed_addr {
entry:
%and = and i64 %m, %x
%0 = tail call i64 @llvm.pext.i64(i64 %and, i64 %m)
ret i64 %0
}

declare i64 @llvm.pext.i64(i64, i64) #1
```

=>

```llvm
define dso_local noundef i64 @dense_mask_from_mask(i64 noundef %x, i64 noundef %m) local_unnamed_addr {
entry:
%0 = tail call i64 @llvm.pext.i64(i64 %x, i64 %m)
ret i64 %0
}

declare i64 @llvm.pext.i64(i64, i64) #1
```

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.