[LLVMbugs] [Bug 7167] New: Assertion failure "Unexpected illegal type!" in LegalizeDAG.cpp when using shufflevector

bugzilla-daemon at llvm.org bugzilla-daemon at llvm.org
Wed May 19 03:16:06 PDT 2010


http://llvm.org/bugs/show_bug.cgi?id=7167

           Summary: Assertion failure "Unexpected illegal type!" in
                    LegalizeDAG.cpp when using shufflevector
           Product: libraries
           Version: trunk
          Platform: PC
        OS/Version: Linux
            Status: NEW
          Severity: normal
          Priority: P
         Component: Backend: ARM
        AssignedTo: unassignedbugs at nondot.org
        ReportedBy: Edmund.Grimley-Evans at arm.com
                CC: llvmbugs at cs.uiuc.edu


Almost any use of shufflevector that doesn't correspond to a recognised NEON
instruction seems to lead to:

llc: LegalizeDAG.cpp:778:
llvm::SDValue<unnamed>::SelectionDAGLegalize::LegalizeOp(llvm::SDValue):
Assertion `(isTypeLegal(Node->getOperand(i).getValueType()) ||
Node->getOperand(i).getOpcode() == ISD::TargetConstant) && "Unexpected illegal
type!"' failed.

My command line is:

llc -march=thumb -mcpu=cortex-a8 -mtriple=thumbv7-eabi -float-abi=hard

I'm on revision 104116.

Here are some examples:

; Ideally this would turn into a VREV32.16, I think:

define <8 x i8> @f1(<8 x i8> %x) nounwind {
  %y = shufflevector <8 x i8> %x, <8 x i8> undef,
       <8 x i32> <i32 2, i32 3, i32 0, i32 1, i32 6, i32 7, i32 4, i32 5>
  ret <8 x i8> %y
}

; Ideally this would turn into a VSWP, I think:

define <4 x i64> @f1(<4 x i64> %x) nounwind {
  %y = shufflevector <4 x i64> %x, <4 x i64> undef,
       <4 x i32> <i32 0, i32 3, i32 2, i32 1>
  ret <4 x i64> %y
}

; This is just a random permutation:

define <8 x i8> @f1(<8 x i8> %x) nounwind {
  %y = shufflevector <8 x i8> %x, <8 x i8> undef,
       <8 x i32> <i32 1, i32 2, i32 0, i32 5, i32 3, i32 6, i32 7, i32 4>
  ret <8 x i8> %y
}

-- 
Configure bugmail: http://llvm.org/bugs/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug.



More information about the llvm-bugs mailing list