<html>
    <head>
      <base href="https://llvm.org/bugs/" />
    </head>
    <body><span class="vcard"><a class="email" href="mailto:vyacheslav.n.klochkov@gmail.com" title="vyacheslav.n.klochkov@gmail.com">vyacheslav.n.klochkov@gmail.com</a>
</span> changed
              <a class="bz_bug_link 
          bz_status_REOPENED "
   title="REOPENED --- - Add AVX-512 support in X86TargetLowering::emitFMA3Instr"
   href="https://llvm.org/bugs/show_bug.cgi?id=26417">bug 26417</a>
        <br>
             <table border="1" cellspacing="0" cellpadding="8">
          <tr>
            <th>What</th>
            <th>Removed</th>
            <th>Added</th>
          </tr>

         <tr>
           <td style="text-align:right;">Status</td>
           <td>RESOLVED
           </td>
           <td>REOPENED
           </td>
         </tr>

         <tr>
           <td style="text-align:right;">Resolution</td>
           <td>FIXED
           </td>
           <td>---
           </td>
         </tr></table>
      <p>
        <div>
            <b><a class="bz_bug_link 
          bz_status_REOPENED "
   title="REOPENED --- - Add AVX-512 support in X86TargetLowering::emitFMA3Instr"
   href="https://llvm.org/bugs/show_bug.cgi?id=26417#c5">Comment # 5</a>
              on <a class="bz_bug_link 
          bz_status_REOPENED "
   title="REOPENED --- - Add AVX-512 support in X86TargetLowering::emitFMA3Instr"
   href="https://llvm.org/bugs/show_bug.cgi?id=26417">bug 26417</a>
              from <span class="vcard"><a class="email" href="mailto:vyacheslav.n.klochkov@gmail.com" title="vyacheslav.n.klochkov@gmail.com">vyacheslav.n.klochkov@gmail.com</a>
</span></b>
        <pre>The patch <a href="https://reviews.llvm.org/rL276521">https://reviews.llvm.org/rL276521</a> is rather a partial solution.

I have a change-set which fully supports optimizations for ALL FMA opcodes. The
solution is quite laconic. Now it is going through internal code-review after
which I am going to submit the change-set for code-review in Open Source
community.


1) a) Totally there are about 1584 FMA opcodes now. The patch rL276521 enabled
only _some_ commute  transformation for about 1/4 of them. Memory folding does
not fully work for FMAs. Also, k-masked, k-zero-masked FMAs are not optimized
(+FMAs with explicit rounding, broadcasts, etc).
b) Some additional changes are required in some other places like
isNonFoldablePartialRegisterLoad(), etc.
c) having switch statements with more than 1.5k 'case <FMA***: >' statements
does not seem good, especially because such statements are needed in several
places.

2) Commute transformation is still not fully enabled as re-work in
X86instrAVX512.td is needed. VMOVAPS instructions are declared as
non-'isFoldable', 'isCommuted' switch is not set for many/most of AVX512
opcodes, etc.

3) Commute transformation is going to be not the only user/modifier of FMA code
soon, and the FMA opcodes should be re-usable there without need to list all
FMA opcodes again.
My solution allows to list FMA opcodes once, classify them in one place, i.e.
once and use that information anywhere where it is needed.

Please let me finish this work, it should not take long. The work definitely
should be done in August.</pre>
        </div>
      </p>
      <hr>
      <span>You are receiving this mail because:</span>
      
      <ul>
          <li>You are on the CC list for the bug.</li>
      </ul>
    </body>
</html>