[llvm-commits] [llvm] r66366 - in /llvm/trunk: lib/Transforms/Scalar/ScalarReplAggregates.cpp test/Transforms/ScalarRepl/2008-06-22-LargeArray.ll test/Transforms/ScalarRepl/vector_memcpy.ll
Dale Johannesen
dalej at apple.com
Mon Mar 9 14:13:50 PDT 2009
On Mar 9, 2009, at 1:46 PMPDT, Chris Lattner wrote:
>>> I'm not talking about theoretical IEEE here, I'm talking about what
>>> semantics we want for LLVM IR. I think that load/store pairs should
>>> always be value-preserving. Do you disagree?
>>
>> No, that is not what the semantics are when you write
>>
>> f1 = f2;
>
> I agree, but the semantics I'm proposing are a valid way to implement
> f1 = f2;.
As long as you're not dealing with code that wants to trap the
exception (which is optional in IEEE754), I guess that's true for that
statement. But:
f1 = f2;
f3 = f2*f2;
The multiplication must use x87, and therefore may change the bits of
f2 upon loading. If you want the copy to f1 to be bitwise, we'd have
to not share the loads, or split it back up later, or something. And
if it isn't bitwise, we have the situation that
f1 = f2
produces different results depending on what other code is around.
Both alternatives seem really ugly.
I know, let's require the target to support SSE! :)
More information about the llvm-commits
mailing list