diff options
Diffstat (limited to 'llvm/test/CodeGen/X86/MergeConsecutiveStores.ll')
-rw-r--r-- | llvm/test/CodeGen/X86/MergeConsecutiveStores.ll | 17 |
1 files changed, 11 insertions, 6 deletions
diff --git a/llvm/test/CodeGen/X86/MergeConsecutiveStores.ll b/llvm/test/CodeGen/X86/MergeConsecutiveStores.ll index 29ecb7838a1..4d7cb765d7b 100644 --- a/llvm/test/CodeGen/X86/MergeConsecutiveStores.ll +++ b/llvm/test/CodeGen/X86/MergeConsecutiveStores.ll @@ -111,7 +111,8 @@ define void @merge_const_store_vec(i32 %count, %struct.B* nocapture %p) nounwind ; CHECK-LABEL: merge_nonconst_store: ; CHECK: movl $67305985 ; CHECK: movb -; CHECK: movw +; CHECK: movb +; CHECK: movb ; CHECK: movb ; CHECK: ret define void @merge_nonconst_store(i32 %count, i8 %zz, %struct.A* nocapture %p) nounwind uwtable noinline ssp { @@ -291,12 +292,16 @@ block4: ; preds = %4, %.lr.ph ret void } -;; On x86, even unaligned copies can be merged to vector ops. +;; On x86, even unaligned copies should be merged to vector ops. +;; TODO: however, this cannot happen at the moment, due to brokenness +;; in MergeConsecutiveStores. See UseAA FIXME in DAGCombiner.cpp +;; visitSTORE. + ; CHECK-LABEL: merge_loads_no_align: ; load: -; CHECK: vmovups +; CHECK-NOT: vmovups ;; TODO ; store: -; CHECK: vmovups +; CHECK-NOT: vmovups ;; TODO ; CHECK: ret define void @merge_loads_no_align(i32 %count, %struct.B* noalias nocapture %q, %struct.B* noalias nocapture %p) nounwind uwtable noinline ssp { %a1 = icmp sgt i32 %count, 0 @@ -578,8 +583,8 @@ define void @merge_vec_element_and_scalar_load([6 x i64]* %array) { ; CHECK-LABEL: merge_vec_element_and_scalar_load ; CHECK: movq (%rdi), %rax -; CHECK-NEXT: movq 8(%rdi), %rcx ; CHECK-NEXT: movq %rax, 32(%rdi) -; CHECK-NEXT: movq %rcx, 40(%rdi) +; CHECK-NEXT: movq 8(%rdi), %rax +; CHECK-NEXT: movq %rax, 40(%rdi) ; CHECK-NEXT: retq } |