[rtsan] Add fork/execve interceptors (#117198)
[llvm-project.git] / llvm / test / Transforms / LoopDataPrefetch / AArch64 / kryo-large-stride.ll
blob91614512735b46ed4c7e75fc9ad60a05e3969325
1 ; RUN: opt -mcpu=kryo -mtriple=aarch64-gnu-linux -passes=loop-data-prefetch -max-prefetch-iters-ahead=1000 -S < %s | FileCheck %s --check-prefix=LARGE_PREFETCH --check-prefix=ALL
2 ; RUN: opt -mcpu=kryo -mtriple=aarch64-gnu-linux -passes=loop-data-prefetch -S < %s | FileCheck %s --check-prefix=NO_LARGE_PREFETCH --check-prefix=ALL
4 target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-n32:64-S128"
6 ; ALL-LABEL: @small_stride(
7 define void @small_stride(ptr nocapture %a, ptr nocapture readonly %b) {
8 entry:
9   br label %for.body
11 ; ALL: for.body:
12 for.body:                                         ; preds = %for.body, %entry
13   %indvars.iv = phi i64 [ 0, %entry ], [ %indvars.iv.next, %for.body ]
14   %arrayidx = getelementptr inbounds double, ptr %b, i64 %indvars.iv
15 ; ALL-NOT: call void @llvm.prefetch
16   %0 = load double, ptr %arrayidx, align 8
17   %add = fadd double %0, 1.000000e+00
18   %arrayidx2 = getelementptr inbounds double, ptr %a, i64 %indvars.iv
19   store double %add, ptr %arrayidx2, align 8
20   %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
21   %exitcond = icmp eq i64 %indvars.iv.next, 1600
22   br i1 %exitcond, label %for.end, label %for.body
24 ; ALL: for.end:
25 for.end:                                          ; preds = %for.body
26   ret void
29 ; ALL-LABEL: @large_stride(
30 define void @large_stride(ptr nocapture %a, ptr nocapture readonly %b) {
31 entry:
32   br label %for.body
34 ; ALL: for.body:
35 for.body:                                         ; preds = %for.body, %entry
36   %indvars.iv = phi i64 [ 0, %entry ], [ %indvars.iv.next, %for.body ]
37   %arrayidx = getelementptr inbounds double, ptr %b, i64 %indvars.iv
38 ; LARGE_PREFETCH: call void @llvm.prefetch
39 ; NO_LARGE_PREFETCH-NOT: call void @llvm.prefetch
40   %0 = load double, ptr %arrayidx, align 8
41   %add = fadd double %0, 1.000000e+00
42   %arrayidx2 = getelementptr inbounds double, ptr %a, i64 %indvars.iv
43   store double %add, ptr %arrayidx2, align 8
44   %indvars.iv.next = add nuw nsw i64 %indvars.iv, 150 
45   %exitcond = icmp eq i64 %indvars.iv.next, 160000
46   br i1 %exitcond, label %for.end, label %for.body
48 ; ALL: for.end:
49 for.end:                                          ; preds = %for.body
50   ret void