[llvm-commits] [llvm] r40736 - in /llvm/trunk: lib/Target/X86/X86InstrMMX.td lib/Target/X86/X86InstrSSE.td test/CodeGen/X86/constant-pool-remat-0.ll
Chris Lattner
clattner at apple.com
Thu Aug 30 11:05:45 PDT 2007
Woot, nice! The codegen looks great on x86-32 also. I noticed that
we're apparently not remat'ing loads "flds" and friends on the
fpstack side, but that doesn't seem very critical.
-Chris
On Aug 29, 2007, at 11:00 PM, Evan Cheng wrote:
> This is done. Now we emit this:
>
> _array:
> subq $8, %rsp
> mulss LCPI1_0(%rip), %xmm0
> call _qux
> mulss LCPI1_0(%rip), %xmm0
> addq $8, %rsp
> ret
>
> Evan
>
> On Aug 2, 2007, at 8:50 AM, Chris Lattner wrote:
>
>>> Mark the SSE and MMX load instructions that
>>> X86InstrInfo::isReallyTriviallyReMaterializable knows how to handle
>>> with the isReMaterializable flag so that it is given a chance to
>>> handle
>>> them. Without hoisting constant-pool loads from loops this isn't
>>> very
>>> visible, though it does keep CodeGen/X86/constant-pool-remat-0.ll
>>> from
>>> making a copy of the constant pool on the stack.
>>>
>>> @@ -0,0 +1,10 @@
>>> +; RUN: llvm-as < %s | llc -march=x86-64 | grep LCPI | wc -l |
>>> grep 3
>>> +
>>> +declare float @qux(float %y)
>>> +
>>> +define float @array(float %a) {
>>> + %n = mul float %a, 9.0
>>> + %m = call float @qux(float %n)
>>> + %o = mul float %m, 9.0
>>> + ret float %o
>>> +}
>>
>> Interesting testcase. I'm now getting:
>>
>> _array:
>> subq $8, %rsp
>> movss LCPI1_0(%rip), %xmm1
>> mulss %xmm1, %xmm0
>> call _qux
>> movss LCPI1_0(%rip), %xmm1
>> mulss %xmm1, %xmm0
>> addq $8, %rsp
>> ret
>>
>> for this. Both loads should be folded into the mulss's. Because the
>> load is shared at isel time, this can't be done there, but it can be
>> done after the remat. Maybe the register allocator needs to call
>> MRegisterInfo::foldMemoryOperand if the remat is a load that has a
>> single use?
>>
>> -Chris
>> _______________________________________________
>> llvm-commits mailing list
>> llvm-commits at cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
More information about the llvm-commits
mailing list