1; RUN: opt %loadPolly -polly-codegen < %s 2target 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-n8:16:32:64" 3 4@win193 = external global [4 x [36 x double]], align 32 ; <[4 x [36 x double]]*> [#uses=3] 5@sb_sample = external global [2 x [2 x [18 x [32 x double]]]], align 32 ; <[2 x [2 x [18 x [32 x double]]]]*> [#uses=2] 6 7define void @mdct_sub48() nounwind { 8entry: 9 br i1 undef, label %bb, label %bb54 10 11bb: ; preds = %entry 12 br label %bb54 13 14bb3: ; preds = %bb50 15 br label %bb8 16 17bb4: ; preds = %bb8 18 br label %bb8 19 20bb8: ; preds = %bb4, %bb3 21 br i1 undef, label %bb4, label %bb9 22 23bb9: ; preds = %bb8 24 br label %bb48 25 26bb25: ; preds = %bb48 27 br i1 false, label %bb26, label %bb27 28 29bb26: ; preds = %bb48, %bb25 30 br label %bb37 31 32bb27: ; preds = %bb25 33 br i1 undef, label %bb32, label %bb35 34 35bb32: ; preds = %bb27 36 br label %bb37 37 38bb34: ; preds = %bb35 39 %0 = getelementptr inbounds [36 x double], [36 x double]* undef, i64 0, i64 0 ; <double*> [#uses=0] 40 %1 = getelementptr inbounds [18 x [32 x double]], [18 x [32 x double]]* undef, i64 0, i64 0 ; <[32 x double]*> [#uses=1] 41 %2 = getelementptr inbounds [32 x double], [32 x double]* %1, i64 0, i64 0 ; <double*> [#uses=0] 42 %3 = getelementptr inbounds [36 x double], [36 x double]* undef, i64 0, i64 0 ; <double*> [#uses=0] 43 %4 = sub nsw i32 17, %k.4 ; <i32> [#uses=1] 44 %5 = getelementptr inbounds [2 x [2 x [18 x [32 x double]]]], [2 x [2 x [18 x [32 x double]]]]* @sb_sample, i64 0, i64 0 ; <[2 x [18 x [32 x double]]]*> [#uses=1] 45 %6 = getelementptr inbounds [2 x [18 x [32 x double]]], [2 x [18 x [32 x double]]]* %5, i64 0, i64 0 ; <[18 x [32 x double]]*> [#uses=1] 46 %7 = sext i32 %4 to i64 ; <i64> [#uses=1] 47 %8 = getelementptr inbounds [18 x [32 x double]], [18 x [32 x double]]* %6, i64 0, i64 %7 ; <[32 x double]*> [#uses=1] 48 %9 = getelementptr inbounds [32 x double], [32 x double]* %8, i64 0, i64 0 ; <double*> [#uses=1] 49 %10 = load double, double* %9, align 8 ; <double> [#uses=0] 50 %11 = fsub double 0.000000e+00, undef ; <double> [#uses=1] 51 %12 = getelementptr inbounds double, double* getelementptr inbounds ([4 x [36 x double]], [4 x [36 x double]]* @win193, i64 0, i64 2, i64 4), i64 0 ; <double*> [#uses=1] 52 store double %11, double* %12, align 8 53 %13 = add nsw i32 %k.4, 9 ; <i32> [#uses=1] 54 %14 = add nsw i32 %k.4, 18 ; <i32> [#uses=1] 55 %15 = getelementptr inbounds [4 x [36 x double]], [4 x [36 x double]]* @win193, i64 0, i64 0 ; <[36 x double]*> [#uses=1] 56 %16 = sext i32 %14 to i64 ; <i64> [#uses=1] 57 %17 = getelementptr inbounds [36 x double], [36 x double]* %15, i64 0, i64 %16 ; <double*> [#uses=1] 58 %18 = load double, double* %17, align 8 ; <double> [#uses=0] 59 %19 = sext i32 %k.4 to i64 ; <i64> [#uses=1] 60 %20 = getelementptr inbounds [18 x [32 x double]], [18 x [32 x double]]* undef, i64 0, i64 %19 ; <[32 x double]*> [#uses=1] 61 %21 = sext i32 %band.2 to i64 ; <i64> [#uses=1] 62 %22 = getelementptr inbounds [32 x double], [32 x double]* %20, i64 0, i64 %21 ; <double*> [#uses=1] 63 %23 = load double, double* %22, align 8 ; <double> [#uses=0] 64 %24 = sext i32 %39 to i64 ; <i64> [#uses=1] 65 %25 = getelementptr inbounds [4 x [36 x double]], [4 x [36 x double]]* @win193, i64 0, i64 %24 ; <[36 x double]*> [#uses=1] 66 %26 = getelementptr inbounds [36 x double], [36 x double]* %25, i64 0, i64 0 ; <double*> [#uses=1] 67 %27 = load double, double* %26, align 8 ; <double> [#uses=0] 68 %28 = sub nsw i32 17, %k.4 ; <i32> [#uses=1] 69 %29 = getelementptr inbounds [2 x [2 x [18 x [32 x double]]]], [2 x [2 x [18 x [32 x double]]]]* @sb_sample, i64 0, i64 0 ; <[2 x [18 x [32 x double]]]*> [#uses=1] 70 %30 = getelementptr inbounds [2 x [18 x [32 x double]]], [2 x [18 x [32 x double]]]* %29, i64 0, i64 0 ; <[18 x [32 x double]]*> [#uses=1] 71 %31 = sext i32 %28 to i64 ; <i64> [#uses=1] 72 %32 = getelementptr inbounds [18 x [32 x double]], [18 x [32 x double]]* %30, i64 0, i64 %31 ; <[32 x double]*> [#uses=1] 73 %33 = getelementptr inbounds [32 x double], [32 x double]* %32, i64 0, i64 0 ; <double*> [#uses=1] 74 %34 = load double, double* %33, align 8 ; <double> [#uses=0] 75 %35 = sext i32 %13 to i64 ; <i64> [#uses=1] 76 %36 = getelementptr inbounds double, double* getelementptr inbounds ([4 x [36 x double]], [4 x [36 x double]]* @win193, i64 0, i64 2, i64 4), i64 %35 ; <double*> [#uses=1] 77 store double 0.000000e+00, double* %36, align 8 78 %37 = sub nsw i32 %k.4, 1 ; <i32> [#uses=1] 79 br label %bb35 80 81bb35: ; preds = %bb34, %bb27 82 %k.4 = phi i32 [ %37, %bb34 ], [ 8, %bb27 ] ; <i32> [#uses=6] 83 br i1 undef, label %bb34, label %bb36 84 85bb36: ; preds = %bb35 86 unreachable 87 88bb37: ; preds = %bb32, %bb26 89 %38 = add nsw i32 %band.2, 1 ; <i32> [#uses=1] 90 br label %bb48 91 92bb48: ; preds = %bb37, %bb9 93 %band.2 = phi i32 [ %38, %bb37 ], [ 0, %bb9 ] ; <i32> [#uses=2] 94 %39 = load i32, i32* null, align 8 ; <i32> [#uses=1] 95 br i1 undef, label %bb26, label %bb25 96 97bb50: ; preds = %bb54 98 br i1 undef, label %bb3, label %bb51 99 100bb51: ; preds = %bb50 101 br i1 undef, label %bb52, label %bb53 102 103bb52: ; preds = %bb51 104 unreachable 105 106bb53: ; preds = %bb51 107 br label %bb54 108 109bb54: ; preds = %bb53, %bb, %entry 110 br i1 undef, label %bb50, label %return 111 112return: ; preds = %bb54 113 ret void 114} 115