[llvm-commits] [llvm] r56384 - in /llvm/trunk/lib/CodeGen: RegAllocLinearScan.cpp SimpleRegisterCoalescing.cpp
Chris Lattner
clattner at apple.com
Sun Sep 21 20:26:22 PDT 2008
On Sep 21, 2008, at 7:41 PM, Evan Cheng wrote:
>> If you model the early clobber def as starting one slot early, it
>> will
>> explicitly conflict with all inputs to the asm, and this can be
>> backed
>> out.
>
> While that's the correct approach, it breaks all kinds of assumptions
> in liveintervals and the coalescer. It will make the problem much more
> complicated. I don't think it's worth the effort.
What sorts of assumptions?
> Besides, from uArch point of view, "early clobber" is totally bogus.
> It should really be "no read bypass". The correct way to model it
> would be to delay read by one cycle.
It typically doesn't have anything to do with a micro architecture, it
has to do with the fact that an inline asm has multiple instructions.
For example if you had an inline asm with:
"$out0 = inst1 $in1, 4
$out1 = inst2 $in2, 142"
Then you'd have to mark $out0 as being an early clobber, because it is
stored to before $in2 is read.
-Chris
More information about the llvm-commits
mailing list