97 lines · plain
1; RUN: opt %loadNPMPolly '-passes=polly-custom<opt-isl>' -polly-print-opt-isl -polly-vectorizer=stripmine -polly-invariant-load-hoisting -disable-output < %s | FileCheck %s2;3; llvm.org/PR465784;5target datalayout = "e-m:e-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128"6 7%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 }8@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 89declare dso_local i32 @ft8006m_atoi() local_unnamed_addr #010 11define void @func() {12entry:13 switch i32 undef, label %cleanup [14 i32 10, label %if.end15 i32 14, label %if.end16 i32 16, label %if.end17 ]18 19if.end: ; preds = %entry, %entry, %entry20 %call15 = call i32 @ft8006m_atoi() #121 %0 = zext i32 %call15 to i6422 br label %for.cond23 24for.cond: ; preds = %for.inc39, %if.end25 %indvars.iv302 = phi i64 [ %indvars.iv.next303, %for.inc39 ], [ 0, %if.end ]26 %exitcond304 = icmp eq i64 %indvars.iv302, 6027 br i1 %exitcond304, label %cleanup, label %for.cond2128 29for.cond21: ; preds = %for.body23, %for.cond30 %indvars.iv296 = phi i64 [ %indvars.iv.next297, %for.body23 ], [ 0, %for.cond ]31 %exitcond298 = icmp eq i64 %indvars.iv296, 6032 br i1 %exitcond298, label %for.cond28, label %for.body2333 34for.body23: ; preds = %for.cond2135 %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 836 %arrayidx25 = getelementptr [60 x i32], ptr %1, i64 %indvars.iv302, i64 %indvars.iv29637 store i32 undef, ptr %arrayidx25, align 438 %indvars.iv.next297 = add nuw nsw i64 %indvars.iv296, 139 br label %for.cond2140 41for.cond28: ; preds = %for.body30, %for.cond2142 %indvars.iv299 = phi i64 [ %indvars.iv.next300, %for.body30 ], [ 0, %for.cond21 ]43 %exitcond301 = icmp eq i64 %indvars.iv299, 6044 br i1 %exitcond301, label %for.inc39, label %for.body3045 46for.body30: ; preds = %for.cond2847 %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 848 %arrayidx34 = getelementptr [60 x i32], ptr %2, i64 %0, i64 %indvars.iv29949 store i32 undef, ptr %arrayidx34, align 450 %indvars.iv.next300 = add nuw nsw i64 %indvars.iv299, 151 br label %for.cond2852 53for.inc39: ; preds = %for.cond2854 %indvars.iv.next303 = add nuw nsw i64 %indvars.iv302, 155 br label %for.cond56 57cleanup: ; preds = %for.cond, %entry58 ret void59}60 61 62; CHECK-LABEL: Printing analysis 'Polly - Optimize schedule of SCoP' for region: 'for.cond => cleanup' in function 'func':63; CHECK: Calculated schedule:64; 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 }"65; CHECK: child:66; CHECK: mark: "1st level tiling - Tiles"67; CHECK: child:68; 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))] }]"69; CHECK: permutable: 170; CHECK: coincident: [ 1, 0 ]71; CHECK: child:72; CHECK: mark: "1st level tiling - Points"73; CHECK: child:74; 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))] }]"75; CHECK: permutable: 176; CHECK: coincident: [ 1 ]77; CHECK: options: "[call15] -> { atomic[0]; isolate{{\[\[}}i0, i1] -> [i2]] : i0 >= 0 and 0 <= i1 <= 1 and 0 <= i2 <= 14 - 8i0 and i2 <= 7 }"78; CHECK: child:79; CHECK: schedule: "[call15] -> [{ Stmt_for_body30[i0, i1] -> [((i0) mod 32)]; Stmt_for_body23[i0, i1] -> [((i0) mod 32)] }]"80; CHECK: permutable: 181; CHECK: child:82; CHECK: sequence:83; CHECK: - filter: "[call15] -> { Stmt_for_body23[i0, i1] }"84; CHECK: child:85; CHECK: mark: "SIMD"86; CHECK: child:87; CHECK: schedule: "[call15] -> [{ Stmt_for_body30[i0, i1] -> [((i1) mod 4)]; Stmt_for_body23[i0, i1] -> [((i1) mod 4)] }]"88; CHECK: permutable: 189; CHECK: coincident: [ 1 ]90; CHECK: - filter: "[call15] -> { Stmt_for_body30[i0, i1] }"91; CHECK: child:92; CHECK: mark: "SIMD"93; CHECK: child:94; CHECK: schedule: "[call15] -> [{ Stmt_for_body30[i0, i1] -> [((i1) mod 4)]; Stmt_for_body23[i0, i1] -> [((i1) mod 4)] }]"95; CHECK: permutable: 196; CHECK: coincident: [ 1 ]97