<html>
    <head>
      <base href="https://llvm.org/bugs/" />
    </head>
    <body><table border="1" cellspacing="0" cellpadding="8">
        <tr>
          <th>Bug ID</th>
          <td><a class="bz_bug_link 
          bz_status_NEW "
   title="NEW --- - Crash in PowerPC MI Peephole Optimization"
   href="https://llvm.org/bugs/show_bug.cgi?id=30663">30663</a>
          </td>
        </tr>

        <tr>
          <th>Summary</th>
          <td>Crash in PowerPC MI Peephole Optimization
          </td>
        </tr>

        <tr>
          <th>Product</th>
          <td>libraries
          </td>
        </tr>

        <tr>
          <th>Version</th>
          <td>trunk
          </td>
        </tr>

        <tr>
          <th>Hardware</th>
          <td>PC
          </td>
        </tr>

        <tr>
          <th>OS</th>
          <td>Linux
          </td>
        </tr>

        <tr>
          <th>Status</th>
          <td>NEW
          </td>
        </tr>

        <tr>
          <th>Severity</th>
          <td>normal
          </td>
        </tr>

        <tr>
          <th>Priority</th>
          <td>P
          </td>
        </tr>

        <tr>
          <th>Component</th>
          <td>Backend: PowerPC
          </td>
        </tr>

        <tr>
          <th>Assignee</th>
          <td>unassignedbugs@nondot.org
          </td>
        </tr>

        <tr>
          <th>Reporter</th>
          <td>timshen91@gmail.com
          </td>
        </tr>

        <tr>
          <th>CC</th>
          <td>llvm-bugs@lists.llvm.org
          </td>
        </tr>

        <tr>
          <th>Classification</th>
          <td>Unclassified
          </td>
        </tr></table>
      <p>
        <div>
        <pre>llc -O1 crashes on the following reduced testcase:

target triple = "powerpc64le-linux-gnu"

; a.ll begins
define void @Test() {
bb4:
  %tmp = load <4 x i8>, <4 x i8>* undef
  %tmp8 = bitcast <4 x i8> %tmp to float
  %tmp18 = fmul float %tmp8, undef
  %tmp19 = fsub float 0.000000e+00, %tmp18
  store float %tmp19, float* undef
  %tmp22 = shufflevector <4 x i8> %tmp, <4 x i8> undef, <16 x i32> <i32 0, i32
1, i32 2, i32 3, i32 0, i32 1, i32 2, i32 3, i32 0, i32 1, i32 2, i32 3, i32 0,
i32 1, i32 2, i32 3>
  %tmp23 = bitcast <16 x i8> %tmp22 to <4 x float>
  %tmp25 = tail call <4 x float> @llvm.fma.v4f32(<4 x float> undef, <4 x float>
%tmp23, <4 x float> undef)
  %tmp26 = fsub <4 x float> zeroinitializer, %tmp25
  %tmp27 = bitcast <4 x float> %tmp26 to <4 x i32>
  tail call void @llvm.ppc.altivec.stvx(<4 x i32> %tmp27, i8* undef)
  ret void
}

declare void @llvm.ppc.altivec.stvx(<4 x i32>, i8*)
declare <4 x float> @llvm.fma.v4f32(<4 x float>, <4 x float>, <4 x float>)
; a.ll ends


I ran -verify-machineinstrs and saw PowerPC MI Peephole Optimization producing
wrong MI.</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>