[clang][modules] Don't prevent translation of FW_Private includes when explicitly...
[llvm-project.git] / polly / test / ScheduleOptimizer / focaltech_test_detail_threshold-7bc17e.ll
blobdaa1afdd0aa8299575e6fee66f6a0da81aca74a5
1 ; RUN: opt %loadPolly -polly-vectorizer=stripmine -polly-invariant-load-hoisting -polly-optimized-scops -polly-print-opt-isl -disable-output < %s | FileCheck %s
2 ; RUN: opt %loadNPMPolly "-passes=scop(print<polly-opt-isl>)" -polly-vectorizer=stripmine -polly-invariant-load-hoisting -disable-output < %s | FileCheck %s
4 ; llvm.org/PR46578
6 target datalayout = "e-m:e-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128"
8 %struct.stCfg_Incell_DetailThreshold.2.30.42.62.74.94.122.126.134.166.194.242.338.342.346.350.354.358.496.0.2.9.16.28.36.37.38.39.40.75 = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr }
9 @ft8006m_g_stCfg_Incell_DetailThreshold = external dso_local local_unnamed_addr global %struct.stCfg_Incell_DetailThreshold.2.30.42.62.74.94.122.126.134.166.194.242.338.342.346.350.354.358.496.0.2.9.16.28.36.37.38.39.40.75, align 8
10 declare dso_local i32 @ft8006m_atoi() local_unnamed_addr #0
12 define void @func() {
13 entry:
14   switch i32 undef, label %cleanup [
15     i32 10, label %if.end
16     i32 14, label %if.end
17     i32 16, label %if.end
18   ]
20 if.end:                                           ; preds = %entry, %entry, %entry
21   %call15 = call i32 @ft8006m_atoi() #1
22   %0 = zext i32 %call15 to i64
23   br label %for.cond
25 for.cond:                                         ; preds = %for.inc39, %if.end
26   %indvars.iv302 = phi i64 [ %indvars.iv.next303, %for.inc39 ], [ 0, %if.end ]
27   %exitcond304 = icmp eq i64 %indvars.iv302, 60
28   br i1 %exitcond304, label %cleanup, label %for.cond21
30 for.cond21:                                       ; preds = %for.body23, %for.cond
31   %indvars.iv296 = phi i64 [ %indvars.iv.next297, %for.body23 ], [ 0, %for.cond ]
32   %exitcond298 = icmp eq i64 %indvars.iv296, 60
33   br i1 %exitcond298, label %for.cond28, label %for.body23
35 for.body23:                                       ; preds = %for.cond21
36   %1 = load ptr, ptr getelementptr inbounds (%struct.stCfg_Incell_DetailThreshold.2.30.42.62.74.94.122.126.134.166.194.242.338.342.346.350.354.358.496.0.2.9.16.28.36.37.38.39.40.75, ptr @ft8006m_g_stCfg_Incell_DetailThreshold, i64 0, i32 2), align 8
37   %arrayidx25 = getelementptr [60 x i32], ptr %1, i64 %indvars.iv302, i64 %indvars.iv296
38   store i32 undef, ptr %arrayidx25, align 4
39   %indvars.iv.next297 = add nuw nsw i64 %indvars.iv296, 1
40   br label %for.cond21
42 for.cond28:                                       ; preds = %for.body30, %for.cond21
43   %indvars.iv299 = phi i64 [ %indvars.iv.next300, %for.body30 ], [ 0, %for.cond21 ]
44   %exitcond301 = icmp eq i64 %indvars.iv299, 60
45   br i1 %exitcond301, label %for.inc39, label %for.body30
47 for.body30:                                       ; preds = %for.cond28
48   %2 = load ptr, ptr getelementptr inbounds (%struct.stCfg_Incell_DetailThreshold.2.30.42.62.74.94.122.126.134.166.194.242.338.342.346.350.354.358.496.0.2.9.16.28.36.37.38.39.40.75, ptr @ft8006m_g_stCfg_Incell_DetailThreshold, i64 0, i32 2), align 8
49   %arrayidx34 = getelementptr [60 x i32], ptr %2, i64 %0, i64 %indvars.iv299
50   store i32 undef, ptr %arrayidx34, align 4
51   %indvars.iv.next300 = add nuw nsw i64 %indvars.iv299, 1
52   br label %for.cond28
54 for.inc39:                                        ; preds = %for.cond28
55   %indvars.iv.next303 = add nuw nsw i64 %indvars.iv302, 1
56   br label %for.cond
58 cleanup:                                          ; preds = %for.cond, %entry
59   ret void
63 ; CHECK-LABEL: Printing analysis 'Polly - Optimize schedule of SCoP' for region: 'for.cond => cleanup' in function 'func':
64 ; CHECK: Calculated schedule:
65 ; CHECK: domain: "[call15] -> { Stmt_for_body30[i0, i1] : 0 <= i0 <= 59 and 0 <= i1 <= 59; Stmt_for_body23[i0, i1] : 0 <= i0 <= 59 and 0 <= i1 <= 59 }"
66 ; CHECK: child:
67 ; CHECK:   mark: "1st level tiling - Tiles"
68 ; CHECK:   child:
69 ; CHECK:     schedule: "[call15] -> [{ Stmt_for_body30[i0, i1] -> [(floor((i1)/32))]; Stmt_for_body23[i0, i1] -> [(floor((i1)/32))] }, { Stmt_for_body30[i0, i1] -> [(floor((i0)/32))]; Stmt_for_body23[i0, i1] -> [(floor((i0)/32))] }]"
70 ; CHECK:     permutable: 1
71 ; CHECK:     coincident: [ 1, 0 ]
72 ; CHECK:     child:
73 ; CHECK:       mark: "1st level tiling - Points"
74 ; CHECK:       child:
75 ; CHECK:         schedule: "[call15] -> [{ Stmt_for_body30[i0, i1] -> [(floor((i1)/4) - 8*floor((i1)/32))]; Stmt_for_body23[i0, i1] -> [(floor((i1)/4) - 8*floor((i1)/32))] }]"
76 ; CHECK:         permutable: 1
77 ; CHECK:         coincident: [ 1 ]
78 ; CHECK:         options: "[call15] -> { atomic[0]; isolate{{\[\[}}i0, i1] -> [i2]] : i0 >= 0 and 0 <= i1 <= 1 and 0 <= i2 <= 14 - 8i0 and i2 <= 7 }"
79 ; CHECK:         child:
80 ; CHECK:           schedule: "[call15] -> [{ Stmt_for_body30[i0, i1] -> [((i0) mod 32)]; Stmt_for_body23[i0, i1] -> [((i0) mod 32)] }]"
81 ; CHECK:           permutable: 1
82 ; CHECK:           child:
83 ; CHECK:             sequence:
84 ; CHECK:             - filter: "[call15] -> { Stmt_for_body23[i0, i1] }"
85 ; CHECK:               child:
86 ; CHECK:                 mark: "SIMD"
87 ; CHECK:                 child:
88 ; CHECK:                   schedule: "[call15] -> [{ Stmt_for_body30[i0, i1] -> [((i1) mod 4)]; Stmt_for_body23[i0, i1] -> [((i1) mod 4)] }]"
89 ; CHECK:                   permutable: 1
90 ; CHECK:                   coincident: [ 1 ]
91 ; CHECK:             - filter: "[call15] -> { Stmt_for_body30[i0, i1] }"
92 ; CHECK:               child:
93 ; CHECK:                 mark: "SIMD"
94 ; CHECK:                 child:
95 ; CHECK:                   schedule: "[call15] -> [{ Stmt_for_body30[i0, i1] -> [((i1) mod 4)]; Stmt_for_body23[i0, i1] -> [((i1) mod 4)] }]"
96 ; CHECK:                   permutable: 1
97 ; CHECK:                   coincident: [ 1 ]