[llvm-bugs] [Bug 34576] New: [X86] Bug in shuffle-to-zero-extend transformation

via llvm-bugs llvm-bugs at lists.llvm.org
Tue Sep 12 06:37:46 PDT 2017


            Bug ID: 34576
           Summary: [X86] Bug in shuffle-to-zero-extend transformation
           Product: libraries
           Version: trunk
          Hardware: All
                OS: All
            Status: NEW
          Severity: normal
          Priority: P
         Component: Backend: X86
          Assignee: unassignedbugs at nondot.org
          Reporter: ayman.musa at intel.com
                CC: llvm-bugs at lists.llvm.org

X86ISD::VZEXT node is defined to work on integer types only.

In the following IR code:

define internal fastcc <4 x float> @test(<4 x float> %inp) #0 {
  %shuf = shufflevector <4 x float> %inp, <4 x float> zeroinitializer, <4 x
i32> <i32 0, i32 undef, i32 2, i32 4>
  ret <4 x float> %shuf

the input for the shufflevector instruction should be bitcasted to integer type
before feeding it to zero-extend.

> ../../build/bin/llc -mattr=+avx2 test.ll -o test.s

LLVM ERROR: Cannot select: t502: v4i64 = X86ISD::VZEXT t501
  t501: v4f32 = bitcast t500
    t500: v2f64 = extract_subvector t466, Constant:i64<0>
      t466: v4f64 = X86ISD::VPERMI t428, Constant:i8<-58>
        t428: v4f64 = bitcast t433
          t433: v8f32 = X86ISD::VPERMILPI t27, Constant:i8<108>
            t27: v8f32,ch = load<LD32[FixedStack-5]> t0, FrameIndex:i64<-5>,
              t26: i64 = FrameIndex<-5>
              t18: i64 = undef
            t432: i8 = Constant<108>
        t465: i8 = Constant<-58>
      t411: i64 = Constant<0>
In function: test

You are receiving this mail because:
You are on the CC list for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-bugs/attachments/20170912/94617e9f/attachment-0001.html>

More information about the llvm-bugs mailing list