[llvm-commits] [llvm] r99345 - in /llvm/trunk/lib/Target/X86: CMakeLists.txt SSEDomainFix.cpp X86.h X86InstrInfo.cpp X86InstrInfo.h X86TargetMachine.cpp X86TargetMachine.h

Jakob Stoklund Olesen stoklund at 2pi.dk
Wed Mar 24 09:00:29 PDT 2010


On Mar 24, 2010, at 8:26 AM, Anton Korobeynikov wrote:
>> I need something a bit more fancy for SSE since there are more polymorphic instructions than just a single move, and often it is necessary to twiddle the defining instruction to make a late user happy.
> I have crazy idea - maybe it will be possible to integrate such pass
> into scheduler somehow? However, this means that we'll need to do
> isel+scheduling at once, or something like this.

That is an interesting idea, it is essentially a scheduling problem. The isel during scheduling is not so bad - it is only a matter of switching between instructions with identical inputs and outputs.

But right now we are not scheduling for latency on X86, and we may not want to do that ever for out-of-order machines.

We would also have to make sure that later stages of codegen don't mess things up. CopyRegToReg would need to get more clever. TwoAddressInstrPass could also do bad stuff.

On Blackfin, the separate execution domains are explicit with disjoint register classes (D and P). That is not handled at all currently, and it needs to be taken care of before register allocation.

On the other hand, a late pass is really easy, and I can do a bit of inference across basic blocks too.

/jakob






More information about the llvm-commits mailing list