diff options
-rw-r--r-- | llvm/lib/Target/X86/X86InstrFoldTables.cpp | 2 | ||||
-rw-r--r-- | llvm/test/CodeGen/X86/stack-folding-mmx.ll | 8 |
2 files changed, 4 insertions, 6 deletions
diff --git a/llvm/lib/Target/X86/X86InstrFoldTables.cpp b/llvm/lib/Target/X86/X86InstrFoldTables.cpp index 0f89a8053c7..f02760ff63a 100644 --- a/llvm/lib/Target/X86/X86InstrFoldTables.cpp +++ b/llvm/lib/Target/X86/X86InstrFoldTables.cpp @@ -292,6 +292,8 @@ static const X86MemoryFoldTableEntry MemoryFoldTable0[] = { { X86::JMP32r_NT, X86::JMP32m_NT, TB_FOLDED_LOAD }, { X86::JMP64r, X86::JMP64m, TB_FOLDED_LOAD }, { X86::JMP64r_NT, X86::JMP64m_NT, TB_FOLDED_LOAD }, + { X86::MMX_MOVD64from64rr, X86::MMX_MOVD64from64rm, TB_FOLDED_STORE | TB_NO_REVERSE }, + { X86::MMX_MOVD64grr, X86::MMX_MOVD64mr, TB_FOLDED_STORE | TB_NO_REVERSE }, { X86::MOV16ri, X86::MOV16mi, TB_FOLDED_STORE }, { X86::MOV16rr, X86::MOV16mr, TB_FOLDED_STORE }, { X86::MOV32ri, X86::MOV32mi, TB_FOLDED_STORE }, diff --git a/llvm/test/CodeGen/X86/stack-folding-mmx.ll b/llvm/test/CodeGen/X86/stack-folding-mmx.ll index 0214800cf9c..8b6c2e68794 100644 --- a/llvm/test/CodeGen/X86/stack-folding-mmx.ll +++ b/llvm/test/CodeGen/X86/stack-folding-mmx.ll @@ -97,7 +97,6 @@ declare x86_mmx @llvm.x86.sse.cvttps2pi(<4 x float>) nounwind readnone ; TODO stack_fold_movd_load -; TODO stack_fold_movd_store ; padd forces execution on mmx define i32 @stack_fold_movd_store(x86_mmx %a0) nounwind { ; CHECK-LABEL: stack_fold_movd_store: @@ -109,8 +108,7 @@ define i32 @stack_fold_movd_store(x86_mmx %a0) nounwind { ; CHECK-NEXT: pushq %r12 ; CHECK-NEXT: pushq %rbx ; CHECK-NEXT: paddb %mm0, %mm0 -; CHECK-NEXT: movd %mm0, %eax -; CHECK-NEXT: movl %eax, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill +; CHECK-NEXT: movd %mm0, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill ; CHECK-NEXT: #APP ; CHECK-NEXT: nop ; CHECK-NEXT: #NO_APP @@ -131,7 +129,6 @@ define i32 @stack_fold_movd_store(x86_mmx %a0) nounwind { ; TODO stack_fold_movq_load -; TODO stack_fold_movq_store ; padd forces execution on mmx define i64 @stack_fold_movq_store(x86_mmx %a0) nounwind { ; CHECK-LABEL: stack_fold_movq_store: @@ -143,8 +140,7 @@ define i64 @stack_fold_movq_store(x86_mmx %a0) nounwind { ; CHECK-NEXT: pushq %r12 ; CHECK-NEXT: pushq %rbx ; CHECK-NEXT: paddb %mm0, %mm0 -; CHECK-NEXT: movq %mm0, %rax -; CHECK-NEXT: movq %rax, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill +; CHECK-NEXT: movq %mm0, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Folded Spill ; CHECK-NEXT: #APP ; CHECK-NEXT: nop ; CHECK-NEXT: #NO_APP |