Johannes Doerfert | b3410db | 2016-04-09 14:30:11 +0000 | [diff] [blame^] | 1 | ; RUN: opt %loadPolly -polly-opt-isl -polly-parallel -polly-codegen -S < %s | FileCheck %s |
| 2 | ; |
| 3 | ; Check that we do not crash but generate parallel code |
| 4 | ; |
| 5 | ; CHECK: polly.par.setup |
| 6 | ; |
| 7 | ; ModuleID = 'bugpoint-reduced-simplified.bc' |
| 8 | target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128" |
| 9 | |
| 10 | ; Function Attrs: nounwind uwtable |
| 11 | define void @III_hybrid([32 x double]* %tsOut) #0 { |
| 12 | entry: |
| 13 | %0 = getelementptr inbounds [32 x double], [32 x double]* %tsOut, i64 0, i64 0 |
| 14 | br label %if.end |
| 15 | |
| 16 | if.end: ; preds = %entry |
| 17 | br i1 undef, label %for.body42, label %for.cond66.preheader |
| 18 | |
| 19 | for.cond39.for.cond66.preheader.loopexit67_crit_edge: ; preds = %for.body42 |
| 20 | %add.ptr62.lcssa = phi double* [ undef, %for.body42 ] |
| 21 | br label %for.cond66.preheader |
| 22 | |
| 23 | for.cond66.preheader: ; preds = %for.cond39.for.cond66.preheader.loopexit67_crit_edge, %if.end |
| 24 | %rawout1.3.ph = phi double* [ %add.ptr62.lcssa, %for.cond39.for.cond66.preheader.loopexit67_crit_edge ], [ undef, %if.end ] |
| 25 | %sb.3.ph = phi i32 [ 0, %for.cond39.for.cond66.preheader.loopexit67_crit_edge ], [ 0, %if.end ] |
| 26 | %tspnt.3.ph = phi double* [ undef, %for.cond39.for.cond66.preheader.loopexit67_crit_edge ], [ %0, %if.end ] |
| 27 | br label %for.cond69.preheader |
| 28 | |
| 29 | for.body42: ; preds = %if.end |
| 30 | br label %for.cond39.for.cond66.preheader.loopexit67_crit_edge |
| 31 | |
| 32 | for.cond69.preheader: ; preds = %for.end76, %for.cond66.preheader |
| 33 | %tspnt.375 = phi double* [ %incdec.ptr79, %for.end76 ], [ %tspnt.3.ph, %for.cond66.preheader ] |
| 34 | %sb.374 = phi i32 [ %inc78, %for.end76 ], [ %sb.3.ph, %for.cond66.preheader ] |
| 35 | %rawout1.373 = phi double* [ undef, %for.end76 ], [ %rawout1.3.ph, %for.cond66.preheader ] |
| 36 | br label %for.body71 |
| 37 | |
| 38 | for.body71: ; preds = %for.body71, %for.cond69.preheader |
| 39 | %indvars.iv = phi i64 [ 0, %for.cond69.preheader ], [ %indvars.iv.next, %for.body71 ] |
| 40 | %rawout1.469 = phi double* [ %rawout1.373, %for.cond69.preheader ], [ undef, %for.body71 ] |
| 41 | %1 = bitcast double* %rawout1.469 to i64* |
| 42 | %2 = load i64, i64* %1, align 8 |
| 43 | %3 = shl nsw i64 %indvars.iv, 5 |
| 44 | %arrayidx73 = getelementptr inbounds double, double* %tspnt.375, i64 %3 |
| 45 | %4 = bitcast double* %arrayidx73 to i64* |
| 46 | store i64 %2, i64* %4, align 8 |
| 47 | %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 |
| 48 | %exitcond = icmp ne i64 %indvars.iv.next, 18 |
| 49 | br i1 %exitcond, label %for.body71, label %for.end76 |
| 50 | |
| 51 | for.end76: ; preds = %for.body71 |
| 52 | %inc78 = add nsw i32 %sb.374, 1 |
| 53 | %incdec.ptr79 = getelementptr inbounds double, double* %tspnt.375, i64 1 |
| 54 | %exitcond95 = icmp ne i32 %inc78, 32 |
| 55 | br i1 %exitcond95, label %for.cond69.preheader, label %for.end80 |
| 56 | |
| 57 | for.end80: ; preds = %for.end76 |
| 58 | ret void |
| 59 | } |