[LLVMbugs] [Bug 5424] New: Sink SelectAddr into Emit_* functions

bugzilla-daemon at cs.uiuc.edu bugzilla-daemon at cs.uiuc.edu
Sat Nov 7 09:25:44 PST 2009


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

           Summary: Sink SelectAddr into Emit_* functions
           Product: libraries
           Version: trunk
          Platform: PC
        OS/Version: All
            Status: NEW
          Severity: normal
          Priority: P2
         Component: Backend: X86
        AssignedTo: unassignedbugs at nondot.org
        ReportedBy: daniel at zuster.org
                CC: llvmbugs at cs.uiuc.edu


Code sequences like this are very common in X86ISelDAGToDAG:
--
        SDValue N01 = N0.getOperand(1);
        SDValue CPTmpN01_0;
        SDValue CPTmpN01_1;
        SDValue CPTmpN01_2;
        SDValue CPTmpN01_3;
        SDValue CPTmpN01_4;
        if (SelectAddr(N, N01, CPTmpN01_0, CPTmpN01_1, CPTmpN01_2, CPTmpN01_3,
CPTmpN01_4)) {
          SDNode *Result = Emit_4(N, X86::ADD8rm, MVT::i8, CPTmpN01_0,
CPTmpN01_1, CPTmpN01_2, CPTmpN01_3, CPTmpN01_4);
          return Result;
        }
--

It may be valuable to split SelectAddr into a predicate (CanSelectAddr) and an
extract function which pulls out the SDValue operands. This would allow us to
write the above code as:
--
        if (CanSelectAddr(N, N0.getOperand(1)))
          return Emit_4(N, X86::ADD8rm, MVT::i8);
--
where the extraction has been moved to Emit_4. This would probably be a compile
time (of X86ISelDAGToDAG) win, and may be a compile performance win.


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