On Feb 17, 2013, at 1:01 PM, Reed Kotler <rkotler at mips.com> wrote:> On 02/17/2013 12:48 PM, Andrew Trick wrote: >> On Feb 16, 2013, at 1:31 PM, Cameron Zwarich <zwarich at apple.com> wrote: >> >>> That's exactly the right place. >> Really? You don't want the expansion to be optimized? You want to specify a machine model for the pseudo's as if they're real instructions? You don't want to schedule or register allocate the real instructions? >> >> -Andy > > So then maybe my code should be called during instruction selection? > > The very original MIPs port was for Mips I and Mips I has a need for lots of psuedos because it's primitive. > That code has mostly been removed now because we don't support Mips I which is just an historical processor at this time. > > I approach level one implementations of things from the point of view of correctness and then make things better as I understand the problem better. > > So my base scheme for all of this was to create multi line assembler expansion in pseudos. > > Now that I'm passing mostly all of test-suite, I'm starting improve things. > > At this time, I'm starting to place expansion in > expandPostRAPseudo > > Would it be possible to call this same code during instruction selection? > > When I emitting the code for certain formats, I would need to call some emitter which basically the same kind of I'm calling from expandPostRAPseudo now.expandISelPseudos is the place to cleanup after ISEL hacks, and can create BBs. But, as Cameron explained well in the other thread, if you want a macro assembler for some sequences, do it late in expandPostRAPseudos. -Andy>>> On Feb 16, 2013, at 1:08 PM, Reed Kotler <rkotler at mips.com> wrote: >>> >>>> I have a bunch of pseudos that I want to lower right after instruction selection. >>>> >>>> Where is the best place to do that? >>>> >>>> I was planning to use expandPostRAPseudo. >>>> >>>> Is there a better place? >>>> >>>> TIA. >>>> >>>> Reed >>>> >>>> >>>> >>>> _______________________________________________ >>>> LLVM Developers mailing list >>>> LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu >>>> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev >>> _______________________________________________ >>> LLVM Developers mailing list >>> LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu >>> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev >-------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20130217/76bae8a6/attachment.html>
On 02/17/2013 01:08 PM, Andrew Trick wrote:> > On Feb 17, 2013, at 1:01 PM, Reed Kotler <rkotler at mips.com > <mailto:rkotler at mips.com>> wrote: > >> On 02/17/2013 12:48 PM, Andrew Trick wrote: >>> On Feb 16, 2013, at 1:31 PM, Cameron Zwarich<zwarich at apple.com> wrote: >>> >>>> That's exactly the right place. >>> Really? You don't want the expansion to be optimized? You want to specify a machine model for the pseudo's as if they're real instructions? You don't want to schedule or register allocate the real instructions? >>> >>> -Andy >> >> So then maybe my code should be called during instruction selection? >> >> The very original MIPs port was for Mips I and Mips I has a need for >> lots of psuedos because it's primitive. >> That code has mostly been removed now because we don't support Mips I >> which is just an historical processor at this time. >> >> I approach level one implementations of things from the point of view >> of correctness and then make things better as I understand the >> problem better. >> >> So my base scheme for all of this was to create multi line assembler >> expansion in pseudos. >> >> Now that I'm passing mostly all of test-suite, I'm starting improve >> things. >> >> At this time, I'm starting to place expansion in >> expandPostRAPseudo >> >> Would it be possible to call this same code during instruction selection? >> >> When I emitting the code for certain formats, I would need to call some emitter which basically the same kind of I'm calling from expandPostRAPseudo now. > > expandISelPseudos is the place to cleanup after ISEL hacks, and can > create BBs. But, as Cameron explained well in the other thread, if you > want a macro assembler for some sequences, do it late in > expandPostRAPseudos. > -Andy >I feel like I should expand things as soon as I have all the information because then other passes can help make things better. So maybe I do this earlier in expandIselPseudos. Are there any cons ?> >>>> On Feb 16, 2013, at 1:08 PM, Reed Kotler<rkotler at mips.com> wrote: >>>> >>>>> I have a bunch of pseudos that I want to lower right after instruction selection. >>>>> >>>>> Where is the best place to do that? >>>>> >>>>> I was planning to use expandPostRAPseudo. >>>>> >>>>> Is there a better place? >>>>> >>>>> TIA. >>>>> >>>>> Reed >>>>> >>>>> >>>>> >>>>> _______________________________________________ >>>>> LLVM Developers mailing list >>>>> LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu >>>>> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev >>>> _______________________________________________ >>>> LLVM Developers mailing list >>>> LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu >>>> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev >> >-------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20130217/92e24162/attachment.html>
On Feb 17, 2013, at 1:11 PM, Reed Kotler <rkotler at mips.com> wrote:> On 02/17/2013 01:08 PM, Andrew Trick wrote: >> >> On Feb 17, 2013, at 1:01 PM, Reed Kotler <rkotler at mips.com> wrote: >> >>> On 02/17/2013 12:48 PM, Andrew Trick wrote: >>>> On Feb 16, 2013, at 1:31 PM, Cameron Zwarich <zwarich at apple.com> wrote: >>>> >>>>> That's exactly the right place. >>>> Really? You don't want the expansion to be optimized? You want to specify a machine model for the pseudo's as if they're real instructions? You don't want to schedule or register allocate the real instructions? >>>> >>>> -Andy >>> >>> So then maybe my code should be called during instruction selection? >>> >>> The very original MIPs port was for Mips I and Mips I has a need for lots of psuedos because it's primitive. >>> That code has mostly been removed now because we don't support Mips I which is just an historical processor at this time. >>> >>> I approach level one implementations of things from the point of view of correctness and then make things better as I understand the problem better. >>> >>> So my base scheme for all of this was to create multi line assembler expansion in pseudos. >>> >>> Now that I'm passing mostly all of test-suite, I'm starting improve things. >>> >>> At this time, I'm starting to place expansion in >>> expandPostRAPseudo >>> >>> Would it be possible to call this same code during instruction selection? >>> >>> When I emitting the code for certain formats, I would need to call some emitter which basically the same kind of I'm calling from expandPostRAPseudo now. >> >> expandISelPseudos is the place to cleanup after ISEL hacks, and can create BBs. But, as Cameron explained well in the other thread, if you want a macro assembler for some sequences, do it late in expandPostRAPseudos. >> -Andy >> > I feel like I should expand things as soon as I have all the information because then other passes can help make things better. > > So maybe I do this earlier in expandIselPseudos. > > Are there any cons ?If the instructions must be adjacent for correctness or cannot be spilled within the sequence, then you have a problem. Sorry to be vague, but I'll again refer you to Cameron's detailed response. -Andy>>>>> On Feb 16, 2013, at 1:08 PM, Reed Kotler <rkotler at mips.com> wrote: >>>>> >>>>>> I have a bunch of pseudos that I want to lower right after instruction selection. >>>>>> >>>>>> Where is the best place to do that? >>>>>> >>>>>> I was planning to use expandPostRAPseudo. >>>>>> >>>>>> Is there a better place? >>>>>> >>>>>> TIA. >>>>>> >>>>>> Reed >>>>>> >>>>>> >>>>>> >>>>>> _______________________________________________ >>>>>> LLVM Developers mailing list >>>>>> LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu >>>>>> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev >>>>> _______________________________________________ >>>>> LLVM Developers mailing list >>>>> LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu >>>>> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev >>> >> >-------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20130217/3ec9c34f/attachment.html>