mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-24 03:33:20 +01:00
add a note
llvm-svn: 42579
This commit is contained in:
parent
1400027d41
commit
a31fa80185
@ -1330,3 +1330,35 @@ Shark tells us that using %cx in the testw instruction is sub-optimal. It
|
||||
suggests using the 32-bit register (which is what ICC uses).
|
||||
|
||||
//===---------------------------------------------------------------------===//
|
||||
|
||||
rdar://5506677 - We compile this:
|
||||
|
||||
define i32 @foo(double %x) {
|
||||
%x14 = bitcast double %x to i64 ; <i64> [#uses=1]
|
||||
%tmp713 = trunc i64 %x14 to i32 ; <i32> [#uses=1]
|
||||
%tmp8 = and i32 %tmp713, 2147483647 ; <i32> [#uses=1]
|
||||
ret i32 %tmp8
|
||||
}
|
||||
|
||||
to:
|
||||
|
||||
_foo:
|
||||
subl $12, %esp
|
||||
fldl 16(%esp)
|
||||
fstpl (%esp)
|
||||
movl $2147483647, %eax
|
||||
andl (%esp), %eax
|
||||
addl $12, %esp
|
||||
#FP_REG_KILL
|
||||
ret
|
||||
|
||||
It would be much better to eliminate the fldl/fstpl by folding the bitcast
|
||||
into the load SDNode. That would give us:
|
||||
|
||||
_foo:
|
||||
movl $2147483647, %eax
|
||||
andl 4(%esp), %eax
|
||||
ret
|
||||
|
||||
//===---------------------------------------------------------------------===//
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user