1*9880d681SAndroid Build Coastguard Worker; ModuleID = 'tsc_s000.c' 2*9880d681SAndroid Build Coastguard Workertarget 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-v128:128:128-n32:64" 3*9880d681SAndroid Build Coastguard Workertarget triple = "powerpc64-unknown-linux-gnu" 4*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -march=ppc64 | FileCheck %s 5*9880d681SAndroid Build Coastguard Worker 6*9880d681SAndroid Build Coastguard Worker@Y = common global [16000 x double] zeroinitializer, align 32 7*9880d681SAndroid Build Coastguard Worker@X = common global [16000 x double] zeroinitializer, align 32 8*9880d681SAndroid Build Coastguard Worker@Z = common global [16000 x double] zeroinitializer, align 32 9*9880d681SAndroid Build Coastguard Worker@U = common global [16000 x double] zeroinitializer, align 32 10*9880d681SAndroid Build Coastguard Worker@V = common global [16000 x double] zeroinitializer, align 32 11*9880d681SAndroid Build Coastguard Worker@aa = common global [256 x [256 x double]] zeroinitializer, align 32 12*9880d681SAndroid Build Coastguard Worker@bb = common global [256 x [256 x double]] zeroinitializer, align 32 13*9880d681SAndroid Build Coastguard Worker@cc = common global [256 x [256 x double]] zeroinitializer, align 32 14*9880d681SAndroid Build Coastguard Worker@array = common global [65536 x double] zeroinitializer, align 32 15*9880d681SAndroid Build Coastguard Worker@x = common global [16000 x double] zeroinitializer, align 32 16*9880d681SAndroid Build Coastguard Worker@temp = common global double 0.000000e+00, align 8 17*9880d681SAndroid Build Coastguard Worker@temp_int = common global i32 0, align 4 18*9880d681SAndroid Build Coastguard Worker@a = common global [16000 x double] zeroinitializer, align 32 19*9880d681SAndroid Build Coastguard Worker@b = common global [16000 x double] zeroinitializer, align 32 20*9880d681SAndroid Build Coastguard Worker@c = common global [16000 x double] zeroinitializer, align 32 21*9880d681SAndroid Build Coastguard Worker@d = common global [16000 x double] zeroinitializer, align 32 22*9880d681SAndroid Build Coastguard Worker@e = common global [16000 x double] zeroinitializer, align 32 23*9880d681SAndroid Build Coastguard Worker@tt = common global [256 x [256 x double]] zeroinitializer, align 32 24*9880d681SAndroid Build Coastguard Worker@indx = common global [16000 x i32] zeroinitializer, align 32 25*9880d681SAndroid Build Coastguard Worker@xx = common global double* null, align 8 26*9880d681SAndroid Build Coastguard Worker@yy = common global double* null, align 8 27*9880d681SAndroid Build Coastguard Worker 28*9880d681SAndroid Build Coastguard Workerdefine i32 @s000() nounwind { 29*9880d681SAndroid Build Coastguard Workerentry: 30*9880d681SAndroid Build Coastguard Worker br label %for.cond1.preheader 31*9880d681SAndroid Build Coastguard Worker 32*9880d681SAndroid Build Coastguard Workerfor.cond1.preheader: ; preds = %for.end, %entry 33*9880d681SAndroid Build Coastguard Worker %nl.010 = phi i32 [ 0, %entry ], [ %inc7, %for.end ] 34*9880d681SAndroid Build Coastguard Worker br label %for.body3 35*9880d681SAndroid Build Coastguard Worker 36*9880d681SAndroid Build Coastguard Workerfor.body3: ; preds = %for.body3, %for.cond1.preheader 37*9880d681SAndroid Build Coastguard Worker %indvars.iv = phi i64 [ 0, %for.cond1.preheader ], [ %indvars.iv.next.15, %for.body3 ] 38*9880d681SAndroid Build Coastguard Worker %arrayidx = getelementptr inbounds [16000 x double], [16000 x double]* @Y, i64 0, i64 %indvars.iv 39*9880d681SAndroid Build Coastguard Worker %0 = load double, double* %arrayidx, align 32 40*9880d681SAndroid Build Coastguard Worker %add = fadd double %0, 1.000000e+00 41*9880d681SAndroid Build Coastguard Worker %arrayidx5 = getelementptr inbounds [16000 x double], [16000 x double]* @X, i64 0, i64 %indvars.iv 42*9880d681SAndroid Build Coastguard Worker store double %add, double* %arrayidx5, align 32 43*9880d681SAndroid Build Coastguard Worker %indvars.iv.next11 = or i64 %indvars.iv, 1 44*9880d681SAndroid Build Coastguard Worker %arrayidx.1 = getelementptr inbounds [16000 x double], [16000 x double]* @Y, i64 0, i64 %indvars.iv.next11 45*9880d681SAndroid Build Coastguard Worker %1 = load double, double* %arrayidx.1, align 8 46*9880d681SAndroid Build Coastguard Worker %add.1 = fadd double %1, 1.000000e+00 47*9880d681SAndroid Build Coastguard Worker %arrayidx5.1 = getelementptr inbounds [16000 x double], [16000 x double]* @X, i64 0, i64 %indvars.iv.next11 48*9880d681SAndroid Build Coastguard Worker store double %add.1, double* %arrayidx5.1, align 8 49*9880d681SAndroid Build Coastguard Worker %indvars.iv.next.112 = or i64 %indvars.iv, 2 50*9880d681SAndroid Build Coastguard Worker %arrayidx.2 = getelementptr inbounds [16000 x double], [16000 x double]* @Y, i64 0, i64 %indvars.iv.next.112 51*9880d681SAndroid Build Coastguard Worker %2 = load double, double* %arrayidx.2, align 16 52*9880d681SAndroid Build Coastguard Worker %add.2 = fadd double %2, 1.000000e+00 53*9880d681SAndroid Build Coastguard Worker %arrayidx5.2 = getelementptr inbounds [16000 x double], [16000 x double]* @X, i64 0, i64 %indvars.iv.next.112 54*9880d681SAndroid Build Coastguard Worker store double %add.2, double* %arrayidx5.2, align 16 55*9880d681SAndroid Build Coastguard Worker %indvars.iv.next.213 = or i64 %indvars.iv, 3 56*9880d681SAndroid Build Coastguard Worker %arrayidx.3 = getelementptr inbounds [16000 x double], [16000 x double]* @Y, i64 0, i64 %indvars.iv.next.213 57*9880d681SAndroid Build Coastguard Worker %3 = load double, double* %arrayidx.3, align 8 58*9880d681SAndroid Build Coastguard Worker %add.3 = fadd double %3, 1.000000e+00 59*9880d681SAndroid Build Coastguard Worker %arrayidx5.3 = getelementptr inbounds [16000 x double], [16000 x double]* @X, i64 0, i64 %indvars.iv.next.213 60*9880d681SAndroid Build Coastguard Worker store double %add.3, double* %arrayidx5.3, align 8 61*9880d681SAndroid Build Coastguard Worker %indvars.iv.next.314 = or i64 %indvars.iv, 4 62*9880d681SAndroid Build Coastguard Worker %arrayidx.4 = getelementptr inbounds [16000 x double], [16000 x double]* @Y, i64 0, i64 %indvars.iv.next.314 63*9880d681SAndroid Build Coastguard Worker %4 = load double, double* %arrayidx.4, align 32 64*9880d681SAndroid Build Coastguard Worker %add.4 = fadd double %4, 1.000000e+00 65*9880d681SAndroid Build Coastguard Worker %arrayidx5.4 = getelementptr inbounds [16000 x double], [16000 x double]* @X, i64 0, i64 %indvars.iv.next.314 66*9880d681SAndroid Build Coastguard Worker store double %add.4, double* %arrayidx5.4, align 32 67*9880d681SAndroid Build Coastguard Worker %indvars.iv.next.415 = or i64 %indvars.iv, 5 68*9880d681SAndroid Build Coastguard Worker %arrayidx.5 = getelementptr inbounds [16000 x double], [16000 x double]* @Y, i64 0, i64 %indvars.iv.next.415 69*9880d681SAndroid Build Coastguard Worker %5 = load double, double* %arrayidx.5, align 8 70*9880d681SAndroid Build Coastguard Worker %add.5 = fadd double %5, 1.000000e+00 71*9880d681SAndroid Build Coastguard Worker %arrayidx5.5 = getelementptr inbounds [16000 x double], [16000 x double]* @X, i64 0, i64 %indvars.iv.next.415 72*9880d681SAndroid Build Coastguard Worker store double %add.5, double* %arrayidx5.5, align 8 73*9880d681SAndroid Build Coastguard Worker %indvars.iv.next.516 = or i64 %indvars.iv, 6 74*9880d681SAndroid Build Coastguard Worker %arrayidx.6 = getelementptr inbounds [16000 x double], [16000 x double]* @Y, i64 0, i64 %indvars.iv.next.516 75*9880d681SAndroid Build Coastguard Worker %6 = load double, double* %arrayidx.6, align 16 76*9880d681SAndroid Build Coastguard Worker %add.6 = fadd double %6, 1.000000e+00 77*9880d681SAndroid Build Coastguard Worker %arrayidx5.6 = getelementptr inbounds [16000 x double], [16000 x double]* @X, i64 0, i64 %indvars.iv.next.516 78*9880d681SAndroid Build Coastguard Worker store double %add.6, double* %arrayidx5.6, align 16 79*9880d681SAndroid Build Coastguard Worker %indvars.iv.next.617 = or i64 %indvars.iv, 7 80*9880d681SAndroid Build Coastguard Worker %arrayidx.7 = getelementptr inbounds [16000 x double], [16000 x double]* @Y, i64 0, i64 %indvars.iv.next.617 81*9880d681SAndroid Build Coastguard Worker %7 = load double, double* %arrayidx.7, align 8 82*9880d681SAndroid Build Coastguard Worker %add.7 = fadd double %7, 1.000000e+00 83*9880d681SAndroid Build Coastguard Worker %arrayidx5.7 = getelementptr inbounds [16000 x double], [16000 x double]* @X, i64 0, i64 %indvars.iv.next.617 84*9880d681SAndroid Build Coastguard Worker store double %add.7, double* %arrayidx5.7, align 8 85*9880d681SAndroid Build Coastguard Worker %indvars.iv.next.718 = or i64 %indvars.iv, 8 86*9880d681SAndroid Build Coastguard Worker %arrayidx.8 = getelementptr inbounds [16000 x double], [16000 x double]* @Y, i64 0, i64 %indvars.iv.next.718 87*9880d681SAndroid Build Coastguard Worker %8 = load double, double* %arrayidx.8, align 32 88*9880d681SAndroid Build Coastguard Worker %add.8 = fadd double %8, 1.000000e+00 89*9880d681SAndroid Build Coastguard Worker %arrayidx5.8 = getelementptr inbounds [16000 x double], [16000 x double]* @X, i64 0, i64 %indvars.iv.next.718 90*9880d681SAndroid Build Coastguard Worker store double %add.8, double* %arrayidx5.8, align 32 91*9880d681SAndroid Build Coastguard Worker %indvars.iv.next.819 = or i64 %indvars.iv, 9 92*9880d681SAndroid Build Coastguard Worker %arrayidx.9 = getelementptr inbounds [16000 x double], [16000 x double]* @Y, i64 0, i64 %indvars.iv.next.819 93*9880d681SAndroid Build Coastguard Worker %9 = load double, double* %arrayidx.9, align 8 94*9880d681SAndroid Build Coastguard Worker %add.9 = fadd double %9, 1.000000e+00 95*9880d681SAndroid Build Coastguard Worker %arrayidx5.9 = getelementptr inbounds [16000 x double], [16000 x double]* @X, i64 0, i64 %indvars.iv.next.819 96*9880d681SAndroid Build Coastguard Worker store double %add.9, double* %arrayidx5.9, align 8 97*9880d681SAndroid Build Coastguard Worker %indvars.iv.next.920 = or i64 %indvars.iv, 10 98*9880d681SAndroid Build Coastguard Worker %arrayidx.10 = getelementptr inbounds [16000 x double], [16000 x double]* @Y, i64 0, i64 %indvars.iv.next.920 99*9880d681SAndroid Build Coastguard Worker %10 = load double, double* %arrayidx.10, align 16 100*9880d681SAndroid Build Coastguard Worker %add.10 = fadd double %10, 1.000000e+00 101*9880d681SAndroid Build Coastguard Worker %arrayidx5.10 = getelementptr inbounds [16000 x double], [16000 x double]* @X, i64 0, i64 %indvars.iv.next.920 102*9880d681SAndroid Build Coastguard Worker store double %add.10, double* %arrayidx5.10, align 16 103*9880d681SAndroid Build Coastguard Worker %indvars.iv.next.1021 = or i64 %indvars.iv, 11 104*9880d681SAndroid Build Coastguard Worker %arrayidx.11 = getelementptr inbounds [16000 x double], [16000 x double]* @Y, i64 0, i64 %indvars.iv.next.1021 105*9880d681SAndroid Build Coastguard Worker %11 = load double, double* %arrayidx.11, align 8 106*9880d681SAndroid Build Coastguard Worker %add.11 = fadd double %11, 1.000000e+00 107*9880d681SAndroid Build Coastguard Worker %arrayidx5.11 = getelementptr inbounds [16000 x double], [16000 x double]* @X, i64 0, i64 %indvars.iv.next.1021 108*9880d681SAndroid Build Coastguard Worker store double %add.11, double* %arrayidx5.11, align 8 109*9880d681SAndroid Build Coastguard Worker %indvars.iv.next.1122 = or i64 %indvars.iv, 12 110*9880d681SAndroid Build Coastguard Worker %arrayidx.12 = getelementptr inbounds [16000 x double], [16000 x double]* @Y, i64 0, i64 %indvars.iv.next.1122 111*9880d681SAndroid Build Coastguard Worker %12 = load double, double* %arrayidx.12, align 32 112*9880d681SAndroid Build Coastguard Worker %add.12 = fadd double %12, 1.000000e+00 113*9880d681SAndroid Build Coastguard Worker %arrayidx5.12 = getelementptr inbounds [16000 x double], [16000 x double]* @X, i64 0, i64 %indvars.iv.next.1122 114*9880d681SAndroid Build Coastguard Worker store double %add.12, double* %arrayidx5.12, align 32 115*9880d681SAndroid Build Coastguard Worker %indvars.iv.next.1223 = or i64 %indvars.iv, 13 116*9880d681SAndroid Build Coastguard Worker %arrayidx.13 = getelementptr inbounds [16000 x double], [16000 x double]* @Y, i64 0, i64 %indvars.iv.next.1223 117*9880d681SAndroid Build Coastguard Worker %13 = load double, double* %arrayidx.13, align 8 118*9880d681SAndroid Build Coastguard Worker %add.13 = fadd double %13, 1.000000e+00 119*9880d681SAndroid Build Coastguard Worker %arrayidx5.13 = getelementptr inbounds [16000 x double], [16000 x double]* @X, i64 0, i64 %indvars.iv.next.1223 120*9880d681SAndroid Build Coastguard Worker store double %add.13, double* %arrayidx5.13, align 8 121*9880d681SAndroid Build Coastguard Worker %indvars.iv.next.1324 = or i64 %indvars.iv, 14 122*9880d681SAndroid Build Coastguard Worker %arrayidx.14 = getelementptr inbounds [16000 x double], [16000 x double]* @Y, i64 0, i64 %indvars.iv.next.1324 123*9880d681SAndroid Build Coastguard Worker %14 = load double, double* %arrayidx.14, align 16 124*9880d681SAndroid Build Coastguard Worker %add.14 = fadd double %14, 1.000000e+00 125*9880d681SAndroid Build Coastguard Worker %arrayidx5.14 = getelementptr inbounds [16000 x double], [16000 x double]* @X, i64 0, i64 %indvars.iv.next.1324 126*9880d681SAndroid Build Coastguard Worker store double %add.14, double* %arrayidx5.14, align 16 127*9880d681SAndroid Build Coastguard Worker %indvars.iv.next.1425 = or i64 %indvars.iv, 15 128*9880d681SAndroid Build Coastguard Worker %arrayidx.15 = getelementptr inbounds [16000 x double], [16000 x double]* @Y, i64 0, i64 %indvars.iv.next.1425 129*9880d681SAndroid Build Coastguard Worker %15 = load double, double* %arrayidx.15, align 8 130*9880d681SAndroid Build Coastguard Worker %add.15 = fadd double %15, 1.000000e+00 131*9880d681SAndroid Build Coastguard Worker %arrayidx5.15 = getelementptr inbounds [16000 x double], [16000 x double]* @X, i64 0, i64 %indvars.iv.next.1425 132*9880d681SAndroid Build Coastguard Worker store double %add.15, double* %arrayidx5.15, align 8 133*9880d681SAndroid Build Coastguard Worker %indvars.iv.next.15 = add i64 %indvars.iv, 16 134*9880d681SAndroid Build Coastguard Worker %lftr.wideiv.15 = trunc i64 %indvars.iv.next.15 to i32 135*9880d681SAndroid Build Coastguard Worker %exitcond.15 = icmp eq i32 %lftr.wideiv.15, 16000 136*9880d681SAndroid Build Coastguard Worker br i1 %exitcond.15, label %for.end, label %for.body3 137*9880d681SAndroid Build Coastguard Worker 138*9880d681SAndroid Build Coastguard Workerfor.end: ; preds = %for.body3 139*9880d681SAndroid Build Coastguard Worker %call = tail call i32 @dummy(double* getelementptr inbounds ([16000 x double], [16000 x double]* @X, i64 0, i64 0), double* getelementptr inbounds ([16000 x double], [16000 x double]* @Y, i64 0, i64 0), double* getelementptr inbounds ([16000 x double], [16000 x double]* @Z, i64 0, i64 0), double* getelementptr inbounds ([16000 x double], [16000 x double]* @U, i64 0, i64 0), double* getelementptr inbounds ([16000 x double], [16000 x double]* @V, i64 0, i64 0), [256 x double]* getelementptr inbounds ([256 x [256 x double]], [256 x [256 x double]]* @aa, i64 0, i64 0), [256 x double]* getelementptr inbounds ([256 x [256 x double]], [256 x [256 x double]]* @bb, i64 0, i64 0), [256 x double]* getelementptr inbounds ([256 x [256 x double]], [256 x [256 x double]]* @cc, i64 0, i64 0), double 0.000000e+00) nounwind 140*9880d681SAndroid Build Coastguard Worker %inc7 = add nsw i32 %nl.010, 1 141*9880d681SAndroid Build Coastguard Worker %exitcond = icmp eq i32 %inc7, 400000 142*9880d681SAndroid Build Coastguard Worker br i1 %exitcond, label %for.end8, label %for.cond1.preheader 143*9880d681SAndroid Build Coastguard Worker 144*9880d681SAndroid Build Coastguard Workerfor.end8: ; preds = %for.end 145*9880d681SAndroid Build Coastguard Worker ret i32 0 146*9880d681SAndroid Build Coastguard Worker 147*9880d681SAndroid Build Coastguard Worker; CHECK: @s000 148*9880d681SAndroid Build Coastguard Worker; CHECK: mtctr 149*9880d681SAndroid Build Coastguard Worker; CHECK: bdnz 150*9880d681SAndroid Build Coastguard Worker} 151*9880d681SAndroid Build Coastguard Worker 152*9880d681SAndroid Build Coastguard Workerdeclare i32 @dummy(double*, double*, double*, double*, double*, [256 x double]*, [256 x double]*, [256 x double]*, double) 153