llvm.org GIT mirror llvm / dd7a300
Unaligned loads should use the VMOVUPS opcode. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@177130 91177308-0d34-0410-b5e6-96231b3b80d8 Nadav Rotem 6 years ago
3 changed file(s) with 13 addition(s) and 2 deletion(s). Raw diff Collapse all Expand all
10081008 (VMOVUPSmr addr:$dst, (v4i32 (EXTRACT_SUBREG VR256:$src,sub_xmm)))>;
10091009 def : Pat<(store (v8i16 (extract_subvector
10101010 (v16i16 VR256:$src), (iPTR 0))), addr:$dst),
1011 (VMOVAPSmr addr:$dst, (v8i16 (EXTRACT_SUBREG VR256:$src,sub_xmm)))>;
1011 (VMOVUPSmr addr:$dst, (v8i16 (EXTRACT_SUBREG VR256:$src,sub_xmm)))>;
10121012 def : Pat<(store (v16i8 (extract_subvector
10131013 (v32i8 VR256:$src), (iPTR 0))), addr:$dst),
10141014 (VMOVUPSmr addr:$dst, (v16i8 (EXTRACT_SUBREG VR256:$src,sub_xmm)))>;
5454
5555 ; CHECK: storev16i16_01
5656 ; CHECK: vextractf128
57 ; CHECK: vmovaps %xmm
57 ; CHECK: vmovups %xmm
5858 define void @storev16i16_01(<16 x i16> %a) nounwind {
5959 store <16 x i16> %a, <16 x i16>* undef, align 4
6060 unreachable
0 ; RUN: llc < %s -mcpu=corei7-avx | FileCheck %s
1
2 ; Make sure that we are not generating a movaps because the vector is aligned to 1.
3 ;CHECK: @foo
4 ;CHECK: xor
5 ;CHECK-NEXT: vmovups
6 ;CHECK-NEXT: ret
7 define void @foo() {
8 store <16 x i16> zeroinitializer, <16 x i16>* undef, align 1
9 ret void
10 }