[LLVMbugs] [Bug 10736] New: LegalizeVectorTypes fails when attempting to Widen a MERGE_VALUES node

bugzilla-daemon at llvm.org bugzilla-daemon at llvm.org
Wed Aug 24 15:32:56 PDT 2011


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

           Summary: LegalizeVectorTypes fails when attempting to Widen a
                    MERGE_VALUES node
           Product: libraries
           Version: 2.9
          Platform: PC
        OS/Version: Linux
            Status: NEW
          Severity: normal
          Priority: P
         Component: Common Code Generator Code
        AssignedTo: unassignedbugs at nondot.org
        ReportedBy: micah.villmow at amd.com
                CC: llvmbugs at cs.uiuc.edu


Created an attachment (id=7122)
 --> (http://llvm.org/bugs/attachment.cgi?id=7122)
test case that triggers assert

When running the test case through a backend that supports natively v4f32 data
type, this bitcode file causes an assert as it attempts to widen a v3f32
element of a structure. The problem is that the v3f32 is the result of a
MERGE_VALUES SDNode and in DAGTypeLegalizer::WidenVectorResult() there is no
case for this node type. 

This does not cause problems on X86 because it does not support the v4f32 data
type needed to widen the node and thus scalarizes the data type.

Here is the assert:

llc --march=amdil _temp_1_cypress_optimized.bc
WidenVectorResult #0: 0x9da2750: v3f32,i32,i32,i32,i32 = merge_values
0x9da1a90, 0x9da1ed0, 0x9da2310, 0x9da24a8, 0x9da2640 [ORD=5] [ID=0]

Do not know how to widen the result of this operator!
UNREACHABLE executed at ../../../LegalizeVectorTypes.cpp:1244!
Aborted

I'm not sure how to fix this as even when I implement WidenVecRes_MERGE_VALUES,
I still hit asserts in LegalizeTypes with v3f32 issues.

Another approach i am working on is having LLVM split instead of widen vec3
nodes, but then I run into asserts based on Lo and Hi results of a split not
being the same size.

-- 
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