<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=https://github.com/llvm/llvm-project/issues/134768>134768</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            [AVX-512] vpternlogq fails to be emitted for longer chains of bitmanipulations
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            new issue
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          Validark
      </td>
    </tr>
</table>

<pre>
    Consider: ([Godbolt link](https://zig.godbo.lt/#z:OYLghAFBqd5QCxAYwPYBMCmBRdBLAF1QCcAaPECAMzwBtMA7AQwFtMQByARg9KtQYEAysib0QXACx8BBAKoBnTAAUAHpwAMvAFYTStJg1AAvPMFJL6yAngGVG6AMKpaAVxYM9DgDJ4GmADl3ACNMYhAAZgBWUgAHVAVCWwZnNw89eMSbAV9/IJZQ8OiLTCtshiECJmICVPdPLhKy5MrqglzAkLDImIUqmrr0xr62jvzCnoBKC1RXYmR2DkxVeJqAaioGDdRUCCYQNYABADVMaxIIAA5SNdcANklpteCDk7OiYiub%2B8eb5FfTudPtdbg9JpMjoCPl9QY81gBSADsACF4RoAIJrLFrYiYAhzLZ7BEAJjuawAfhBgiSyeTkOD4RFURikQARNHojmbbaoAD6TAULD2APeFxBPyeL0houB3zBfxFQJhEohbyV4rBCJRHOxOLxBLWADdYgQwgxaKhgHsbsE/jcuIi7pNGczOYj2SyMctVgQNltgtVhdL1XLfs9FdCNWH/sHI6HwbGxfGta7dbj8cQtkwaRTqfDSRTkC6OWySxjucYdvzBUG1XHYZKI0mGwrE7KG6qoc2JSmddj0wbjabMxarUwbXa1lwncWWe6y%2BjvSRfdz%2BKgA599m3lfLw9uo08Y3Xu7v0E32xKbux9/HOzKd3Ckan%2B/rM89A2vrc8/k90FfnUyJbzp6i4rMufo8hu1ZClux4XruUpwQ%2Bh7nshNxnjeLZrNeSEHneIYNr2GJpq%2BWyVnyApCmu0Ffraaz0uh/6zm6HqcuWWxDmao4QIaZy8lwqEHjcvHILyxKCfGwl8REElYWgLAmngbBrBQKkRMS%2BH1j2T59lihrVHqCiuLQvqMqyRp8VwzG6pRRouEwNj0GsEC6bqCJRI48IeUaJpcZaACOJJRF5yJKSwXmsjc%2BbBVEyIibyEQRVFxIxXFfHEklQUhfFVlRKxbnYgc2WWRFJIZcSyKqPmxLObiRkmc6xEFWsRWxfFGV5WVVXEjVPHpU8xWiYlnXVd1vXxREA2xWFpXVQw1XOXg0yubqICuQBz5YgOb51cZBDMaWGIcNMtCcFEvCeBwWikKgnAAFpmGsCizPMmAkhEPCkAQmjHdMADWIBRBo%2BicJIF0/TdnC8AoIDA99V3HaQcCwEg8mxHQYTkJQaMY%2BExgEMQrgMH9fB0MOMNUhDwR%2BNUACenCfdTzDELTADywTaO8DO8PJbCCKz5r0wjpBYMErjAI4Yi0DD3C8FgLCGMA4jC/guLWHgvEy9dyxnK4prc%2BQgilBDtB4MExB084WAQwTSkG7xxDBAkmCspgCtGKbRg/dMVAGMACjHHgmAAO6s7EjAG/wggiGI7BSDIgiKCo6jC7oxL6IrICmOYpvBDDkDTKgikCDLAC0rNrAASqUmACpgABiAq%2BqX/TAHiayqJcdy8g8pee64qhrKXLDILErhmcYDAO%2BdN0O8QeBYPnEDTJY7zJPYDBOC49ReJvYxdOEjSZEkAiDA0cQJCfDD7wU3TDDX6sCK0Azb0MTRr0//TtH4nS34fFhfzPnoEYNQb4TC4CvF6CwJAnTOuDYWt0OBrGzmsAmRM/rOVwIQEg70IG8HhlocEpAEC1ywOEZepAAZAxBhwMGpAWASA0MDS611EHQ1hl9b2sCODEngawqGnCEZEIdokOwkggA))

```zig
export fn foo(a: @Vector(8, u64), b: @Vector(8, u64), c: @Vector(8, u64)) @Vector(8, u64) {
    return (a & ~(b & ~c));
}

export fn bar(a: @Vector(8, u64), b: @Vector(8, u64), c: @Vector(8, u64)) @Vector(8, u64) {
    return a & ~b & ~c;
}

export fn foobar(a: @Vector(8, u64), b: @Vector(8, u64), c: @Vector(8, u64), d: @Vector(8, u64), e: @Vector(8, u64)) @Vector(8, u64) {
 return bar(foo(a, b, c), d, e);
}
```

LLVM IR ([Godbolt link](https://llvm.godbolt.org/#z:OYLghAFBqd5QCxAYwPYBMCmBRdBLAF1QCcAaPECAMzwBtMA7AQwFtMQByARg9KtQYEAysib0QXACx8BBAKoBnTAAUAHpwAMvAFYTStJg1C1aANxakl9ZATwDKjdAGFUtAK4sGexwBk8DTAA5DwAjTGIQAGZpAAdUBUI7Bhd3Tz04hNsBPwDgljCI6MtMayyGIQImYgIUjy8uYtKkiqqCHKDQ8KjpBUrq2rSG3tb2vILugEpLVDdiZHYOLBoAgGp0BVQAfVpUUVoVgFJIpwAOFdUVvAA2SSPsFYABflQII9Pzy5u7w4AmAFYNKRDsczhdrrdIvcDv8GsD3mCvpDfn8fhMVjs9ps3AxmGx0JsmOh0MRDgB2ABCBw0AEFsIJiABPEBU6krZEAOgYqAIwIAIucSHDQZ8IVCYUC3uCVgBaWFS2VA%2BVym4y5WSVWKlUKkUanWyu4stnQv6RPkrQVvYXg77GznciX/H6G5Hqo78wzoIUfa1I42RB0A53ETA8y3exFiv63GkHUm8lkspb%2BTBrDbbXZiL0I0WPEJVV4g8M542ArMim3iss%2ByOo9EZ2hYnGsTD4wnEsmUml0giM5k0o3/U1u80ksPZisogNcZ3G12RfmqC2F8e%2BwcS45KzXq7WbvVq3W7w9a6eQmf/P5mj1ViMugMaIMh6/F88JuMJmlJ1brLYYzNj8tIk8qCoHmxAFvCAGRqW/7VsisIwTexo/OuEGwX6KFWoh/ySGiv4NtiuItgSRKjhSLLdr2Z5/HaBDsngZqLqOy6QXBKFHtu%2B47seW4Htxe48fqp79siF7DkuqFYdRXK0XgAZOsJxpXJeDCeghz5/H8d5UaSZriZh6nSMikRUWcw6MU%2BE6kmxfHsbxHECZxjkOQaCn/AAnMpqnMWh/xXAGJwPqG3mSW5r7xjGH6YMsKbfumewWYBzygQSCgsOB%2BkTtBwXqfB2UTshCWRv6hUurh9aNoRrYkR25H0kyVGifOKyVHQKx7PsanfEwqUrAkWBRVQmA2L8PwrKYMQEOEDA7MAACOKwACSxuSxlxkCS0Uk6a2Lct07bRt5L3m%2BPwFdCTrzqopCXZdDCkICAB%2By34MQVAGMAsa8qQj0UlQMQKMQH1fctr1MMACgfWd6VFhOuUSepBV4JEo1cKSfklSWaLQkjVFKcOLX7O1JXdSwvV4P1VCDcNZ1jRNU0zfNB2rZ9O2bYDLPkntzMHUd8YnQ6528tdV2kLdD1PXgL1vYD33kr9/3S8Db3g8dPxQyuRUYdDq5RoqSMrFwaOddrfyYz82PCcGQVwxOVxhSyHBTLQnB/LwXgcFopCoJwPg%2BAAagAsisACSABKvUzHMKZYzwpAEJoDtTAA1iAkhueyKMnBoJw/FwbkZ1nPzSE7HCSK78ee5wvAKCAgJx%2B7DukHAsBIGgLAxHQ4TkJQrft/QEQS8gBhGD22KJ3wdCTcQ1cQCE5chP4VRMtwvDz8wjIAPIhNoQ11zHrdsII6/TUvHtYCEbjAE4Yi0NXy%2BkFgLCGMA4j1/fEs73gpiYLfHuYKoQ1uEmpwGO/hJrFw9rQPAIRiCLxcFgcuPY8AsGAbwL%2BxAQjxEwLyTAj8jCQKMPHKYIMwa%2BzwJgAA7uvGIjAUEyEECIMQ7ApB0PkEoNQ5ddANCHsYMwFhIEhGrpAKYqAJpJFvtKdepppSPzmAgN0AAvBgaCXaezQcQMm394BTCsB/ewEBHADHqKQXwyYxhdAaBkRIAhDHpHiFYhgoxOgRCGCUXR5Q%2Bg1FcHUPQOibDNA8Y4/I5jLAeJsUMAJpinESG0RHeY0T9DOzLq/L2HA2rcJWBAEeDBE5oggLgQgFozZcAmLwOuWgJhJxAACdk2dc751qXnE4CSS68GQVwDQgI3YexSVXGusdCGO04D8JJ3TK79PrhU0gaCEj2EkEAA%3D)):

```llvm
define dso_local <8 x i64> @foo(<8 x i64> %0, <8 x i64> %1, <8 x i64> %2) local_unnamed_addr {
Entry:
  %.not = xor <8 x i64> %1, <i64 -1, i64 -1, i64 -1, i64 -1, i64 -1, i64 -1, i64 -1, i64 -1>
  %3 = or <8 x i64> %.not, %2
  %4 = and <8 x i64> %3, %0
  ret <8 x i64> %4
}

define dso_local <8 x i64> @bar(<8 x i64> %0, <8 x i64> %1, <8 x i64> %2) local_unnamed_addr {
Entry:
  %3 = or <8 x i64> %2, %1
  %4 = xor <8 x i64> %3, <i64 -1, i64 -1, i64 -1, i64 -1, i64 -1, i64 -1, i64 -1, i64 -1>
  %5 = and <8 x i64> %4, %0
  ret <8 x i64> %5
}

define dso_local <8 x i64> @foobar(<8 x i64> %0, <8 x i64> %1, <8 x i64> %2, <8 x i64> %3, <8 x i64> %4) local_unnamed_addr {
Entry:
  %.not.i = xor <8 x i64> %1, <i64 -1, i64 -1, i64 -1, i64 -1, i64 -1, i64 -1, i64 -1, i64 -1>
  %5 = or <8 x i64> %.not.i, %2
  %6 = and <8 x i64> %5, %0
  %7 = or <8 x i64> %4, %3
  %8 = xor <8 x i64> %7, <i64 -1, i64 -1, i64 -1, i64 -1, i64 -1, i64 -1, i64 -1, i64 -1>
  %9 = and <8 x i64> %6, %8
  ret <8 x i64> %9
}
```

Emit (from LLVM IR godbolt):

```asm
foo:
        vpternlogq      zmm0, zmm2, zmm1, 208
 ret

bar:
        vpternlogq      zmm0, zmm2, zmm1, 16
 ret

foobar:
        vpandnq zmm1, zmm2, zmm1
        vporq   zmm3, zmm4, zmm3
        vpternlogq      zmm0, zmm1, zmm3, 16
 ret
```

`foobar` should be:

```asm
foobar:
        vpternlogq zmm0, zmm1, zmm2, 176
        vpternlogq      zmm0, zmm3, zmm4, 16
 ret
```
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJzMeUnTo8i19q-hNoquYAYtapEk8yAECCS0cTCDmCcxLL7f_oX0vtV2t6u67etr-yqIAGWePPmcITOfA8E4FlmTJN8QikMo_kswT3k7fPOCqoiDofwStvH2DbbNWMTJgBDggOAsQnFSG4dtNR2qoikRikdwNp-mbkQIgOAigot7kX3NXjJfq-ndQuwIAUxfz3Igcn1MWXAF_nL2OQPWnB1zOhAxC0YgOAsQGPvCTQZggLWIk2FxG7CzozZZvgC2sQhR6wbgynIc0FquuQDgArlbgPEEon9xJjXDAHieDVHV6Q00meRJNDC0LgDe6htHPuNVUqoBXxEAngw_B-CecVc3A7IHPHhd7s1pYY-J4YTAOyK4qKh3izUL_QKnMS8EqNYK9M7xWc-1jTKGPqt2UOq8UituXw8Dug40_njusGk5DWL2za9tnC9XL1F7EBStxMe2C6FvnXzAAd4zglVRAKCcUxyBU1l1UwL5kjELv5hDBKdwjk1CSkwvc3ye4jA7qp3xaOG5Olo-i2WcA_gRQJG0W6Cogy4OfuGDfNfvDCcA9TEHC0hzLiucLbmUJk_aomsXpQXsk9w-6jAMWsDTF-DqPA7Oibhy5y3R0bydOWLn0lW01Fxo83DzyIGDqi2bq6mvnH4FfOxn1pKtgZZn8hiOAoKLj2hWCqY7SdFu-g_c2Yxo8jLrVE3Z5OWxjt30dDyKMTxdZQQXR1mh5SWU1lSaAiYOH2xkTeUS2Jc-5R37UkLavG7O-pgjP37unCthN9m_awpaS8sgMJpE922Eq04dxw90CR9BaKzB4C7hLcCqpYmu14Te3k58PB07jff3s5YB6nisiSrVl-PcoqxP3GbmiQoEvmrhvL6iLpu7FhOwDJr3EAQXB4M9Avw5RCyCi-URFdPG3dRw7-iCHIw5bdl8xu6wmlfyNsxut1jvkTnTjPlpbR6Jfh9OiSPITaL4pwGX1K5_S1w3r9lAB-sZFdMhCHZ0zhFcpPealvtovl5Xvg5a0lKC-8ZWSy_Ij-gpK_q2ajCVloq1BaHyr5kO6iYLuYGztNI2nLduGXvgF-pYFfngyT0sZt169ka_2R3rLbtEd7bdzsJyeqDSKEA67KFqKySrJG6gdtE9ANBUVVukNlVzlls9PqK32pDzhE0pwk2wbE9clfUmprJQVpabp6JX2doaNn4W4derLarKPXI2rT_Xq26GhV3WEb0K4nW0r2sqSh519byb8PDOcuey67Xwq-bmxdjzttoCwNer2N08a8Fu5i1DtznsFThb3E75mRlSWHTneCO4Skp0MiYYicITJtxyLUotawAQu1oaYbGfjRqUuXCGJbDqhxwbgL8qnM21b2OKSFVEFMHFS9xAFrQKD45Hj5ADK4KLkLH1Klv-pVStwPDfA4Q1EwxryAz5mHKoYRonN-cX-913cgFMGpjGl50X9Avgt-USmCxvsmc1hFDbqQFdHh3nG8LwAArpFyjPE5AVMx1KBiAfEMHFbNavcvYUtmO8rY1GdsOH262sqDh-4khDWDmUJa_AWi5OKTHrynOgrOHYZXCStNDOEFyMDQ9IBoAPWc5qAEx6ZIQHkBBcXLKskBSGc3glKzTY0g_ItKtOK4MCa9PvnhzPl_xFy4oS8jqA6HAaAHB6twawywBXgI_M7W8vrwG5CLZejeKNzdguSWiyzwftpvOKLgx5Hfk8MN_i8Qk1WSvh_HMj8BfVZ3b17POcCcmjnahPf41N4eHchRIUPEAjS4UpzzOLS1x4_kaPUEPBHqLGxR7Qj2PmMslk4xBkKubpfm5awT9ZIXmBJHyKNFxU0FzMmfevE2pyg7TXI6ht47WUTW9RLCFjUEVi5bxqI6EDAsS2xRTuSQfAHaxcvhhSB67AAajBOzSGCbKF5dUxxEdo8kKTBUsvNVC4C0rcluZSZhlA8OPrQsHrotGPay8yBAXJ2rXDdEibQ9q2CM4G79OURL0kmtoBwVkWweFhpsm3DngI_6Q_-sP-48-6DgjDISg4HA6HIZnmoXmd6MEBwenD_0NwNvx4ij4NIV6yCMN_WPRXE8Jg-L9kwif-X8H_DHbatv8J5PAQ_0l_8q9Z_mn2hy3f0-kN-43tO4b3RL-L4vek_HCNrnvGQbH_QVZXVc_6g9ZV09d2yP4LzA5iATitQVkd7-Cy8NojBpLoTkAjRylZF65k-QsAFL-Ax0VSLCDdOwBil3MVhstj4rKjZH4aufPCZ9UDKrQxGcG2SYql1H6muI-Nnf1JK4u-h7LGW6z26Dh36PHBkYgpxJ-KPmdCp3t8XNxl39S5FmRSh3KeBVKvc12v9TJRVboFmGLsek8AcMc5j6IPuLSyFOV43jdqZhYS1ED0T5rNj9Gex8MQK8-If7LSyBM1fHZ82rBpbniP8diNBFhraUXVsTZz1LD5jMMBB7kFBYI4KmoBuLPAuXQ53AVgZn4PlEUByhw5Mm_dWcWDvguJGXoZF1xFB_fAezf2tprcqKvjXbXK1Uo3aK7bTI5TYz1p-1wOlvf0bxnDSHsTFa-NXqYlSu5bhl32VnHTAFNI3OZQQBHCBbAbkaxi8aQJqZTdmq3Ksfugrxdu4MPwdi90VEGvZ0H1PDJjDYrEwWAUNVGM41tuM9ujcMdzv5HGC08ujTDWbl2hWWFQJdoSCC662Myi5Xi-F2ObnaI7IWG4ndY9xEU2eStZIoektP3WM9fw6fXElVmOAZ1YdYrg4pmqH5hXGHNmBIqR0wguiiyrzoZaVyoWDrrv76cHOykl28NWrlcgPiGQ7P6K4CLjjcWoLJdkbRFcNGdBWm60Jl7bF1fbHKl4kqepmJUpc2ztkTu6Hg_4nXr5LeD4scnuvd6bG23dOE2Up_kNl2TG5ErK05qQbNp3zHEsRIYv5170Y_umobcM3M1RXbubmvAwyfL9rZCNKTdw7kNxz-nGMYrSdq_RQhvuBz2hy3pN5TFcZQHe10dpWgFsEFwEoDG6vjGuL8jrDUjqcu4lonau1MCsD0mmfWPUwnSuk-Xqc_uWWQ7MRpN7qy0vE7fc-pTD3cuYw6v9pHN3HvJjcGrtwS9tnJLRcvOkIjW1zZMtbWXOY9CkwtK7AyivnO1ZNcB19rwMmm9YginwgDEAgKa2AOiss7NWawkd1C3pANejCWVCe6J0on4DOC9iDC_D3rcdvN1jHpYKBB_YNoI0rDfbGQO2tx6oW1mGpRmWjKXRNGCGAWCWXmPaE3Nzdp2k4zxSFVos0py0rJxroFvlwxO1yNRvjImpt9hZnh55xjzIR6c79rBPLrqnJw4f7kcTD31eP5fNtBuyG7N-Y9EUzk6xh5d6zGPnW6ZjT58niHJ41RKEw_IhkbHxebW22Xb9mO8pu-0dYxCXwIzjId38ncXPMJIsb1lNb82dTeYuutW8Kg99uWWR2HawVZdz9jYYgCADYzEC6ABOe7q7bGh3f186IKgtP10AwApQ5nOyaUbDteryyvUlLO9Yc94dgZGhozFsklDLE2gQZOr6VsvwcymDkVOkTAerbJEv2jukrxreEiyHzbhc4nFcU4klhpfIwiILClSUn0nPNqblye_s8lDAWclPrYVhuzzEo6K8FtrFfcqTD4XwAYQX6T3dPuqy8lfiiyG4mAojQ2Rd4eupPPtaa2GzUHeLZCK4mKuDuBwH6wwUu4D6GolZNJ99FowSCBf9rW0F1mMVFn27gAf7gJZmnGXNV4wleHfvi5oBwMxPSXkAV9gEASqGxYCOQ8-l0J4sKo7BCcqjbyxirgi5NHRA83ugdqr4nLQ46brOOe81yE4oAE8uC-AtSHYrsoyaOJLcBY6vgCWLwMmAl3vNui2bv-YxCLjSVkDOy51ciH6etauZ2VCC7s2mPgrFDBMj2T1bZhHyJ8D6JIKLCvXQQaKOrgHUrmgER0JtOfHRy5E3d71_5QYuA3yI1CsHhITnBKrNMj2zMrHd7xGo9cWcr5maqysAMC7xOGIorL81Agkdh2Zf6cZbmUL4yep4N2keYyiZKMmzqkpcNOZ4HnIXzQIoPHChFMDr5CD47-QQ_I7ovvgBgoI4SYsmOcRj-5eqjYLqgBCQPayHgiYRQnhxmw_K8rtmnEJfjOXvWrEftuIvOvRW_5e5aYI6if8SxPHwyZCEZhq2D4CHl_TXpp0OCMEf1nb4-QwFTR5-ef_5X3gihO-TE--ZfzTxC9Z77pc9n9LkWzpo4r8XJz5l0bfskEx_L0L-LfH980B8MMj_YCB-7gv80zjst474YcCIf2_AqJ-HgPzzEFD_XAh-rUn-1Sj8oJX4YSv5Ty-dr8V_bfFQf7h4vha_Xz70z2NH_SZ2CE4xP9X9PczEd1H25w5g_r0OOP7cIPoTJfvzZDz-rPIT6mJ6lX3p0NaH72XgZ233w809GF97-2vn_syNj9-zm5Khqdqs__i_1_U7b_e6xj_vb7twlP2sXD_0vnL-f6QIo3-j53P5_E5V0MRN_-uQ36j4W7F26D9mIj67yc878Y8Bw34V_z2w3zobob8vcxo9jHk7V_EhTP7Ax3_knR_M_7YOY-h_DPVvjP0h6i_xNyI-EsfgS_INY0gSZVgCZ7_k37AjQ8VJilIklTIBhWJpSOIkGhExQcUoxn4pvuEoTqEkyqI4hqPsVypkI4bE0oTF0Yg5xgiJJnVQVF_fLxPaIftSjOOcfMMIkqHZL1UQJtX4_hqF402yHN69CI4jFP9l-PYa9Es4ZyNColUxTuNf1UzFVL0_YwHv9guFvQb8rRPSoKjGw9QewuSQ1MU0JfEhbYdD1TZZMhyiPCia8dCmh7CY6qApurkKpqJtxi_zUH377XuQrJjyOfwatfXnS5HP2y_d0D6S6MWW37BHBBc_7Xp-w_9_AAAA__9ekxNc">