mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-10-21 12:02:58 +02:00
Use movaps / movapd (instead of movss / movsd) to do FR32 / FR64 reg to reg
transfer. According to the Intel P4 Optimization Manual: Moves that write a portion of a register can introduce unwanted dependences. The movsd reg, reg instruction writes only the bottom 64 bits of a register, not to all 128 bits. This introduces a dependence on the preceding instruction that produces the upper 64 bits (even if those bits are not longer wanted). The dependence inhibits register renaming, and thereby reduces parallelism. Not to mention movaps is shorter than movss. llvm-svn: 26226
This commit is contained in:
parent
57142c7e12
commit
74228303ad
@ -106,9 +106,9 @@ void X86RegisterInfo::copyRegToReg(MachineBasicBlock &MBB,
|
||||
} else if (RC == &X86::RFPRegClass || RC == &X86::RSTRegClass) {
|
||||
Opc = X86::FpMOV;
|
||||
} else if (RC == &X86::FR32RegClass || RC == &X86::V4F4RegClass) {
|
||||
Opc = X86::MOVSSrr;
|
||||
Opc = X86::MOVAPSrr;
|
||||
} else if (RC == &X86::FR64RegClass || RC == &X86::V2F8RegClass) {
|
||||
Opc = X86::MOVSDrr;
|
||||
Opc = X86::MOVAPDrr;
|
||||
} else {
|
||||
assert(0 && "Unknown regclass");
|
||||
abort();
|
||||
|
Loading…
Reference in New Issue
Block a user