[x86] Fold extract_vector_elt of a load into the Load's address computation.
[oota-llvm.git] / test / CodeGen / X86 / prefetch.ll
1 ; RUN: llc < %s -march=x86 -mattr=+sse | FileCheck %s
2 ; RUN: llc < %s -march=x86 -mattr=+avx | FileCheck %s
3 ; RUN: llc < %s -march=x86 -mattr=+sse -mattr=+prfchw | FileCheck %s -check-prefix=PRFCHW
4 ; RUN: llc < %s -march=x86 -mcpu=slm | FileCheck %s -check-prefix=SLM
5 ; RUN: llc < %s -march=x86 -mcpu=btver2 | FileCheck %s -check-prefix=PRFCHW
6 ; RUN: llc < %s -march=x86 -mcpu=btver2 -mattr=-prfchw | FileCheck %s -check-prefix=NOPRFCHW
7
8 ; rdar://10538297
9
10 define void @t(i8* %ptr) nounwind  {
11 entry:
12 ; CHECK: prefetcht2
13 ; CHECK: prefetcht1
14 ; CHECK: prefetcht0
15 ; CHECK: prefetchnta
16 ; PRFCHW: prefetchw
17 ; NOPRFCHW-NOT: prefetchw
18 ; SLM: prefetchw
19         tail call void @llvm.prefetch( i8* %ptr, i32 0, i32 1, i32 1 )
20         tail call void @llvm.prefetch( i8* %ptr, i32 0, i32 2, i32 1 )
21         tail call void @llvm.prefetch( i8* %ptr, i32 0, i32 3, i32 1 )
22         tail call void @llvm.prefetch( i8* %ptr, i32 0, i32 0, i32 1 )
23         tail call void @llvm.prefetch( i8* %ptr, i32 1, i32 3, i32 1 )
24         ret void
25 }
26
27 declare void @llvm.prefetch(i8*, i32, i32, i32) nounwind