mirror of
https://github.com/RPCS3/llvm.git
synced 2025-01-05 03:10:41 +00:00
Added a couple of entries about movhps and movlhps.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27212 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
000e4dd54b
commit
4c4a2e2a0d
@ -662,3 +662,29 @@ call _foo
|
||||
|
||||
Obviously it would have been better for the first mov (or any op) to store
|
||||
directly %esp[0] if there are no other uses.
|
||||
|
||||
//===---------------------------------------------------------------------===//
|
||||
|
||||
Is it really a good idea to use movlhps to move 1 double-precision FP value from
|
||||
low quadword of source to high quadword of destination?
|
||||
|
||||
e.g.
|
||||
|
||||
void test2 (v2sd *b, double X, double Y) {
|
||||
v2sd a = (v2sd) {X, X*Y};
|
||||
*b = a;
|
||||
}
|
||||
|
||||
movsd 8(%esp), %xmm0
|
||||
movapd %xmm0, %xmm1
|
||||
mulsd 16(%esp), %xmm1
|
||||
movlhps %xmm1, %xmm0
|
||||
movl 4(%esp), %eax
|
||||
movapd %xmm0, (%eax)
|
||||
ret
|
||||
|
||||
icc uses unpcklpd instead.
|
||||
|
||||
//===---------------------------------------------------------------------===//
|
||||
|
||||
Use movhps and movlhps to update upper 64-bits of a v4sf value.
|
||||
|
Loading…
Reference in New Issue
Block a user