[llvm] r372770 - [X86] Add MMX MOVD/MOVQ stores to folding tables to support stack folding

Simon Pilgrim via llvm-commits llvm-commits at lists.llvm.org
Tue Sep 24 09:15:32 PDT 2019


Author: rksimon
Date: Tue Sep 24 09:15:32 2019
New Revision: 372770

URL: http://llvm.org/viewvc/llvm-project?rev=372770&view=rev
Log:
[X86] Add MMX MOVD/MOVQ stores to folding tables to support stack folding

Modified:
    llvm/trunk/lib/Target/X86/X86InstrFoldTables.cpp
    llvm/trunk/test/CodeGen/X86/stack-folding-mmx.ll

Modified: llvm/trunk/lib/Target/X86/X86InstrFoldTables.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/X86InstrFoldTables.cpp?rev=372770&r1=372769&r2=372770&view=diff
==============================================================================
--- llvm/trunk/lib/Target/X86/X86InstrFoldTables.cpp (original)
+++ llvm/trunk/lib/Target/X86/X86InstrFoldTables.cpp Tue Sep 24 09:15:32 2019
@@ -292,6 +292,8 @@ static const X86MemoryFoldTableEntry Mem
   { 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 },

Modified: llvm/trunk/test/CodeGen/X86/stack-folding-mmx.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/stack-folding-mmx.ll?rev=372770&r1=372769&r2=372770&view=diff
==============================================================================
--- llvm/trunk/test/CodeGen/X86/stack-folding-mmx.ll (original)
+++ llvm/trunk/test/CodeGen/X86/stack-folding-mmx.ll Tue Sep 24 09:15:32 2019
@@ -97,7 +97,6 @@ declare x86_mmx @llvm.x86.sse.cvttps2pi(
 
 ; 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_mm
 ; 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_mm
 
 ; 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_mm
 ; 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




More information about the llvm-commits mailing list