[LLVMbugs] [Bug 6479] New: zero extending i1 to i32 on x86

bugzilla-daemon at llvm.org bugzilla-daemon at llvm.org
Wed Mar 3 07:25:14 PST 2010


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

           Summary: zero extending i1 to i32 on x86
           Product: new-bugs
           Version: 2.6
          Platform: PC
        OS/Version: Windows NT
            Status: NEW
          Severity: enhancement
          Priority: P5
         Component: new bugs
        AssignedTo: unassignedbugs at nondot.org
        ReportedBy: pete.cooper at gmail.com
                CC: llvmbugs at cs.uiuc.edu


Created an attachment (id=4377)
 --> (http://llvm.org/bugs/attachment.cgi?id=4377)
intermediate test file

This curently generates a redundant zero extension as 

movzbl    %al, %eax
andl    $1, %eax

which can just be 

andl    $1, %eax

I've written a new pattern for X86InstrInfo.td which removes the unused mov but
i wasn't sure where in that file to put it so i'm not attaching it as a patch

def : Pat<(i32 (and (i32 (anyext GR8 :$src)), (i32 1))),
          (AND32ri (SUBREG_TO_REG (i32 0), GR8:$src, x86_subreg_8bit), 1)>;

Can someone please verify if i've done the right thing here.  I get the right
result which is always a good start.  Also, i've only seen this case (mask with
1) be output, but would it be better to match any constant in the 1-255 range
here, and if it is worth it, could someone please tell me how that would be
written.

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