[LLVMbugs] [Bug 15131] New: Resolve the meaning of <N x i1>

bugzilla-daemon at llvm.org bugzilla-daemon at llvm.org
Thu Jan 31 11:40:39 PST 2013


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

             Bug #: 15131
           Summary: Resolve the meaning of <N x i1>
           Product: libraries
           Version: trunk
          Platform: PC
        OS/Version: Linux
            Status: NEW
          Severity: enhancement
          Priority: P
         Component: Common Code Generator Code
        AssignedTo: unassignedbugs at nondot.org
        ReportedBy: hfinkel at anl.gov
                CC: llvmbugs at cs.uiuc.edu
    Classification: Unclassified


LLVM has supported <N x i1> types, and the code generator now has vNi1 types,
the meaning of these types is not clear.

Moreover, the current types code is inconsistent with the code generation.
Getting the storage size of v4i1 will return 1 byte (because the 4 bits are
rounded up to 1 byte), but if you run:
@X = global <4 x i1> <i1 0, i1 1, i1 2, i1 3>

through llc (for x86_64 or anything else), you'll get something which looks
like:
X:
        .byte        0                       # 0x0
        .byte        1                       # 0x1
        .byte        0                       # 0x0
        .byte        1                       # 0x1
        .size        X, 4

This should probably be changed to pack the bits together (to more naturally
support mask registers on some targets).

FWIW, the default expansions of things like extract vector element in the DAG
legalizer are also broken for vNi1 types.

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