diff options
Diffstat (limited to 'compiler/nativeGen/X86/Instr.hs')
-rw-r--r-- | compiler/nativeGen/X86/Instr.hs | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/compiler/nativeGen/X86/Instr.hs b/compiler/nativeGen/X86/Instr.hs index 75e5b9e737..99731fb276 100644 --- a/compiler/nativeGen/X86/Instr.hs +++ b/compiler/nativeGen/X86/Instr.hs @@ -183,6 +183,10 @@ data Instr | MOV Size Operand Operand | MOVZxL Size Operand Operand -- size is the size of operand 1 | MOVSxL Size Operand Operand -- size is the size of operand 1 + + -- Special case move for Ivy Bridge processors + | REPMOVSB + -- x86_64 note: plain mov into a 32-bit register always zero-extends -- into the 64-bit reg, in contrast to the 8 and 16-bit movs which -- don't affect the high bits of the register. @@ -425,6 +429,8 @@ x86_regUsageOfInstr platform instr POPCNT _ src dst -> mkRU (use_R src []) [dst] + REPMOVSB -> mkRU [] [] + -- note: might be a better way to do this PREFETCH _ _ src -> mkRU (use_R src []) [] @@ -570,6 +576,8 @@ x86_patchRegsOfInstr instr env PREFETCH lvl size src -> PREFETCH lvl size (patchOp src) + REPMOVSB -> REPMOVSB + _other -> panic "patchRegs: unrecognised instr" where |