[LLVM][IR] Use splat syntax when printing ConstantExpr based splats. (#116856)
[llvm-project.git] / polly / test / CodeGen / perf_monitoring_cycles_per_scop.ll
blobd5c33d64f34182fc8ab2df1287b5f1c7cbbd44de
1 ; RUN: opt %loadNPMPolly -passes=polly-codegen -polly-codegen-perf-monitoring \
2 ; RUN:   -S < %s | FileCheck %s
4 ; void f(long A[], long N) {
5 ;   long i;
6 ;   if (true)
7 ;     for (i = 0; i < N; ++i)
8 ;       A[i] = i;
9 ; }
10 ; void g(long A[], long N) {
11 ;   long i;
12 ;   if (true)
13 ;     for (i = 0; i < N; ++i)
14 ;       A[i] = i;
15 ; }
17 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-s0:64:64-f80:128:128"
18 target triple = "x86_64-unknown-linux-gnu"
20 define void @f(ptr %A, i64 %N) nounwind {
21 entry:
22   fence seq_cst
23   br label %next
25 next:
26   br i1 true, label %for.i, label %return
28 for.i:
29   %indvar = phi i64 [ 0, %next], [ %indvar.next, %for.i ]
30   %scevgep = getelementptr i64, ptr %A, i64 %indvar
31   store i64 %indvar, ptr %scevgep
32   %indvar.next = add nsw i64 %indvar, 1
33   %exitcond = icmp eq i64 %indvar.next, %N
34   br i1 %exitcond, label %return, label %for.i
36 return:
37   fence seq_cst
38   ret void
42 define void @g(ptr %A, i64 %N) nounwind {
43 entry:
44   fence seq_cst
45   br label %next
47 next:
48   br i1 true, label %for.i, label %return
50 for.i:
51   %indvar = phi i64 [ 0, %next], [ %indvar.next, %for.i ]
52   %scevgep = getelementptr i64, ptr %A, i64 %indvar
53   store i64 %indvar, ptr %scevgep
54   %indvar.next = add nsw i64 %indvar, 1
55   %exitcond = icmp eq i64 %indvar.next, %N
56   br i1 %exitcond, label %return, label %for.i
58 return:
59   fence seq_cst
60   ret void
63 ; Declaration of globals - Check for cycles declaration.
64 ; @"__polly_perf_in_f_from__%next__to__%polly.merge_new_and_old_cycles" = weak thread_local(initialexec) constant i64 0
65 ; @"__polly_perf_in_g_from__%next__to__%polly.merge_new_and_old_cycles" = weak thread_local(initialexec) constant i64 0
67 ; Bumping up number of cycles in f
68 ; CHECK:      %12 = load volatile i64, ptr @"__polly_perf_in_f_from__%next__to__%polly.merge_new_and_old_cycles"
69 ; CHECK-NEXT: %13 = add i64 %12, %9
70 ; CHECK-NEXT: store volatile i64 %13, ptr @"__polly_perf_in_f_from__%next__to__%polly.merge_new_and_old_cycles"
72 ; Bumping up number of cycles in g
73 ; CHECK:      %12 = load volatile i64, ptr @"__polly_perf_in_g_from__%next__to__%polly.merge_new_and_old_cycles"
74 ; CHECK-NEXT: %13 = add i64 %12, %9
75 ; CHECK-NEXT: store volatile i64 %13, ptr @"__polly_perf_in_g_from__%next__to__%polly.merge_new_and_old_cycles"