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

    <tr>
        <th>Summary</th>
        <td>
            [Headers][X86] Allow pmuludq/pmuldq to be used in constexpr
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            backend:X86,
            clang:frontend,
            clang:headers,
            constexpr
      </td>
    </tr>

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

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

<pre>
    Currently both of these are expanded in CodeGenFunction::EmitX86BuiltinExpr - there are a few options on what we do:

1 - add pmuldq/pmuludq handling to VectorExprEvaluator::VisitCallExpr similar to #152524
2 - remove the pmuldq/pmuludq / EmitX86Muldq expansion and replace it with a generic implementation in the headers directly - not sure how much worse the non-optimised expansion will be if we did this.
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJxkUk1vpDgQ_TXmUqIFpp2GA4dOd9iVVnvZlaJcDS6gZoxN_NEk_37kbjQZzUhIWFV69V69etJ7mgxiy8QzE9dMxjBb1_73z_-0WJP1Vn22l-gcmqA_obdhBjtCmNEjSIeAH6s0ChWQgYtV-BeaLpohkDWsOrPq_LJQeKufniPpQOblY3WQJ7x74CWMuIFdE8CDNbDNMsCGoGzCF-krIQepFKxL1Oqd8S49onqHWRqlyUwQLLziEKxL819uUkcZrHsIeCVP4SK1vnN7WkhLlxCMV6Xggh9ZceaQg8PF3jBp-5OJ8Q72Tf5NrcfenqwBaRQ4XLUcECjARmEGCRMadDQALavGBU2QacPkUpo_o1ToPChyOCRjczA2gI8OYbYbLHGYYbPOP-QYa_Jk0UIe1S_UG2kNPQKNd8dIQZjJHzLVVqqpGplhW57EsSlPJa-zuT02XPSnuq6aEwopihNXhaxHWTXD2BR9kVHLCy6KuixLLupjfejrkyxUMwqsqydV9exY4CJJH7S-LQfrpoy8j9iWoioKnmnZo_b3LHHey-E7GsWq81v9xDhn_MI4H7Q0E6vOo7MmpPbvjd2br7o1PuDH6lJFXDPXJu68j5Nnx0KTD_5LTaCg71n-e58irkw8J35xhbPWdoP9pPtx1XuKQo8Q_SPEP-my6HQ7h7D6lCPeMd5NFObYHwa7MN4lzv2Xr85-wyEw3t3t8Ix3uyO3lv8IAAD__7wyH94">