1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py 2; RUN: opt < %s -basicaa -slp-vectorizer -dce -S -mtriple=x86_64-apple-macosx10.8.0 -mcpu=corei7 | FileCheck %s 3 4target 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-S128" 5target triple = "x86_64-apple-macosx10.8.0" 6 7%struct._exon_t.12.103.220.363.480.649.740.857.1039.1065.1078.1091.1117.1130.1156.1169.1195.1221.1234.1286.1299.1312.1338.1429.1455.1468.1494.1520.1884.1897.1975.2066.2105.2170.2171 = type { i32, i32, i32, i32, i32, i32, [8 x i8] } 8 9define void @SIM4() { 10; CHECK-LABEL: @SIM4( 11; CHECK-NEXT: entry: 12; CHECK-NEXT: br i1 undef, label [[RETURN:%.*]], label [[LOR_LHS_FALSE:%.*]] 13; CHECK: lor.lhs.false: 14; CHECK-NEXT: br i1 undef, label [[RETURN]], label [[IF_END:%.*]] 15; CHECK: if.end: 16; CHECK-NEXT: br i1 undef, label [[FOR_END605:%.*]], label [[FOR_BODY_LR_PH:%.*]] 17; CHECK: for.body.lr.ph: 18; CHECK-NEXT: br label [[FOR_BODY:%.*]] 19; CHECK: for.body: 20; CHECK-NEXT: br i1 undef, label [[FOR_INC603:%.*]], label [[IF_END12:%.*]] 21; CHECK: if.end12: 22; CHECK-NEXT: br i1 undef, label [[LAND_LHS_TRUE:%.*]], label [[LAND_LHS_TRUE167:%.*]] 23; CHECK: land.lhs.true: 24; CHECK-NEXT: br i1 undef, label [[IF_THEN17:%.*]], label [[LAND_LHS_TRUE167]] 25; CHECK: if.then17: 26; CHECK-NEXT: br i1 undef, label [[IF_END98:%.*]], label [[LAND_RHS_LR_PH:%.*]] 27; CHECK: land.rhs.lr.ph: 28; CHECK-NEXT: unreachable 29; CHECK: if.end98: 30; CHECK-NEXT: [[FROM299:%.*]] = getelementptr inbounds [[STRUCT__EXON_T_12_103_220_363_480_649_740_857_1039_1065_1078_1091_1117_1130_1156_1169_1195_1221_1234_1286_1299_1312_1338_1429_1455_1468_1494_1520_1884_1897_1975_2066_2105_2170_2171:%.*]], %struct._exon_t.12.103.220.363.480.649.740.857.1039.1065.1078.1091.1117.1130.1156.1169.1195.1221.1234.1286.1299.1312.1338.1429.1455.1468.1494.1520.1884.1897.1975.2066.2105.2170.2171* undef, i64 0, i32 1 31; CHECK-NEXT: br i1 undef, label [[LAND_LHS_TRUE167]], label [[IF_THEN103:%.*]] 32; CHECK: if.then103: 33; CHECK-NEXT: [[DOTSUB100:%.*]] = select i1 undef, i32 250, i32 undef 34; CHECK-NEXT: [[MUL114:%.*]] = shl nsw i32 [[DOTSUB100]], 2 35; CHECK-NEXT: [[FROM1115:%.*]] = getelementptr inbounds [[STRUCT__EXON_T_12_103_220_363_480_649_740_857_1039_1065_1078_1091_1117_1130_1156_1169_1195_1221_1234_1286_1299_1312_1338_1429_1455_1468_1494_1520_1884_1897_1975_2066_2105_2170_2171]], %struct._exon_t.12.103.220.363.480.649.740.857.1039.1065.1078.1091.1117.1130.1156.1169.1195.1221.1234.1286.1299.1312.1338.1429.1455.1468.1494.1520.1884.1897.1975.2066.2105.2170.2171* undef, i64 0, i32 0 36; CHECK-NEXT: [[COND125:%.*]] = select i1 undef, i32 undef, i32 [[MUL114]] 37; CHECK-NEXT: br label [[FOR_COND_I:%.*]] 38; CHECK: for.cond.i: 39; CHECK-NEXT: [[ROW_0_I:%.*]] = phi i32 [ undef, [[LAND_RHS_I874:%.*]] ], [ [[DOTSUB100]], [[IF_THEN103]] ] 40; CHECK-NEXT: [[COL_0_I:%.*]] = phi i32 [ undef, [[LAND_RHS_I874]] ], [ [[COND125]], [[IF_THEN103]] ] 41; CHECK-NEXT: br i1 undef, label [[LAND_RHS_I874]], label [[FOR_END_I:%.*]] 42; CHECK: land.rhs.i874: 43; CHECK-NEXT: br i1 undef, label [[FOR_COND_I]], label [[FOR_END_I]] 44; CHECK: for.end.i: 45; CHECK-NEXT: br i1 undef, label [[IF_THEN_I:%.*]], label [[IF_END_I:%.*]] 46; CHECK: if.then.i: 47; CHECK-NEXT: [[ADD14_I:%.*]] = add nsw i32 [[ROW_0_I]], undef 48; CHECK-NEXT: [[ADD15_I:%.*]] = add nsw i32 [[COL_0_I]], undef 49; CHECK-NEXT: br label [[EXTEND_BW_EXIT:%.*]] 50; CHECK: if.end.i: 51; CHECK-NEXT: [[ADD16_I:%.*]] = add i32 [[COND125]], [[DOTSUB100]] 52; CHECK-NEXT: [[CMP26514_I:%.*]] = icmp slt i32 [[ADD16_I]], 0 53; CHECK-NEXT: br i1 [[CMP26514_I]], label [[FOR_END33_I:%.*]], label [[FOR_BODY28_LR_PH_I:%.*]] 54; CHECK: for.body28.lr.ph.i: 55; CHECK-NEXT: br label [[FOR_END33_I]] 56; CHECK: for.end33.i: 57; CHECK-NEXT: br i1 undef, label [[FOR_END58_I:%.*]], label [[FOR_BODY52_LR_PH_I:%.*]] 58; CHECK: for.body52.lr.ph.i: 59; CHECK-NEXT: br label [[FOR_END58_I]] 60; CHECK: for.end58.i: 61; CHECK-NEXT: br label [[WHILE_COND260_I:%.*]] 62; CHECK: while.cond260.i: 63; CHECK-NEXT: br i1 undef, label [[LAND_RHS263_I:%.*]], label [[WHILE_END275_I:%.*]] 64; CHECK: land.rhs263.i: 65; CHECK-NEXT: br i1 undef, label [[WHILE_COND260_I]], label [[WHILE_END275_I]] 66; CHECK: while.end275.i: 67; CHECK-NEXT: br label [[EXTEND_BW_EXIT]] 68; CHECK: extend_bw.exit: 69; CHECK-NEXT: [[ADD14_I1262:%.*]] = phi i32 [ [[ADD14_I]], [[IF_THEN_I]] ], [ undef, [[WHILE_END275_I]] ] 70; CHECK-NEXT: [[ADD15_I1261:%.*]] = phi i32 [ [[ADD15_I]], [[IF_THEN_I]] ], [ undef, [[WHILE_END275_I]] ] 71; CHECK-NEXT: br i1 false, label [[IF_THEN157:%.*]], label [[LAND_LHS_TRUE167]] 72; CHECK: if.then157: 73; CHECK-NEXT: [[ADD158:%.*]] = add nsw i32 [[ADD14_I1262]], 1 74; CHECK-NEXT: store i32 [[ADD158]], i32* [[FROM299]], align 4 75; CHECK-NEXT: [[ADD160:%.*]] = add nsw i32 [[ADD15_I1261]], 1 76; CHECK-NEXT: store i32 [[ADD160]], i32* [[FROM1115]], align 4 77; CHECK-NEXT: br label [[LAND_LHS_TRUE167]] 78; CHECK: land.lhs.true167: 79; CHECK-NEXT: unreachable 80; CHECK: for.inc603: 81; CHECK-NEXT: br i1 undef, label [[FOR_BODY]], label [[FOR_END605]] 82; CHECK: for.end605: 83; CHECK-NEXT: unreachable 84; CHECK: return: 85; CHECK-NEXT: ret void 86; 87entry: 88 br i1 undef, label %return, label %lor.lhs.false 89 90lor.lhs.false: ; preds = %entry 91 br i1 undef, label %return, label %if.end 92 93if.end: ; preds = %lor.lhs.false 94 br i1 undef, label %for.end605, label %for.body.lr.ph 95 96for.body.lr.ph: ; preds = %if.end 97 br label %for.body 98 99for.body: ; preds = %for.inc603, %for.body.lr.ph 100 br i1 undef, label %for.inc603, label %if.end12 101 102if.end12: ; preds = %for.body 103 br i1 undef, label %land.lhs.true, label %land.lhs.true167 104 105land.lhs.true: ; preds = %if.end12 106 br i1 undef, label %if.then17, label %land.lhs.true167 107 108if.then17: ; preds = %land.lhs.true 109 br i1 undef, label %if.end98, label %land.rhs.lr.ph 110 111land.rhs.lr.ph: ; preds = %if.then17 112 unreachable 113 114if.end98: ; preds = %if.then17 115 %from299 = getelementptr inbounds %struct._exon_t.12.103.220.363.480.649.740.857.1039.1065.1078.1091.1117.1130.1156.1169.1195.1221.1234.1286.1299.1312.1338.1429.1455.1468.1494.1520.1884.1897.1975.2066.2105.2170.2171, %struct._exon_t.12.103.220.363.480.649.740.857.1039.1065.1078.1091.1117.1130.1156.1169.1195.1221.1234.1286.1299.1312.1338.1429.1455.1468.1494.1520.1884.1897.1975.2066.2105.2170.2171* undef, i64 0, i32 1 116 br i1 undef, label %land.lhs.true167, label %if.then103 117 118if.then103: ; preds = %if.end98 119 %.sub100 = select i1 undef, i32 250, i32 undef 120 %mul114 = shl nsw i32 %.sub100, 2 121 %from1115 = getelementptr inbounds %struct._exon_t.12.103.220.363.480.649.740.857.1039.1065.1078.1091.1117.1130.1156.1169.1195.1221.1234.1286.1299.1312.1338.1429.1455.1468.1494.1520.1884.1897.1975.2066.2105.2170.2171, %struct._exon_t.12.103.220.363.480.649.740.857.1039.1065.1078.1091.1117.1130.1156.1169.1195.1221.1234.1286.1299.1312.1338.1429.1455.1468.1494.1520.1884.1897.1975.2066.2105.2170.2171* undef, i64 0, i32 0 122 %cond125 = select i1 undef, i32 undef, i32 %mul114 123 br label %for.cond.i 124 125for.cond.i: ; preds = %land.rhs.i874, %if.then103 126 %row.0.i = phi i32 [ undef, %land.rhs.i874 ], [ %.sub100, %if.then103 ] 127 %col.0.i = phi i32 [ undef, %land.rhs.i874 ], [ %cond125, %if.then103 ] 128 br i1 undef, label %land.rhs.i874, label %for.end.i 129 130land.rhs.i874: ; preds = %for.cond.i 131 br i1 undef, label %for.cond.i, label %for.end.i 132 133for.end.i: ; preds = %land.rhs.i874, %for.cond.i 134 br i1 undef, label %if.then.i, label %if.end.i 135 136if.then.i: ; preds = %for.end.i 137 %add14.i = add nsw i32 %row.0.i, undef 138 %add15.i = add nsw i32 %col.0.i, undef 139 br label %extend_bw.exit 140 141if.end.i: ; preds = %for.end.i 142 %add16.i = add i32 %cond125, %.sub100 143 %cmp26514.i = icmp slt i32 %add16.i, 0 144 br i1 %cmp26514.i, label %for.end33.i, label %for.body28.lr.ph.i 145 146for.body28.lr.ph.i: ; preds = %if.end.i 147 br label %for.end33.i 148 149for.end33.i: ; preds = %for.body28.lr.ph.i, %if.end.i 150 br i1 undef, label %for.end58.i, label %for.body52.lr.ph.i 151 152for.body52.lr.ph.i: ; preds = %for.end33.i 153 br label %for.end58.i 154 155for.end58.i: ; preds = %for.body52.lr.ph.i, %for.end33.i 156 br label %while.cond260.i 157 158while.cond260.i: ; preds = %land.rhs263.i, %for.end58.i 159 br i1 undef, label %land.rhs263.i, label %while.end275.i 160 161land.rhs263.i: ; preds = %while.cond260.i 162 br i1 undef, label %while.cond260.i, label %while.end275.i 163 164while.end275.i: ; preds = %land.rhs263.i, %while.cond260.i 165 br label %extend_bw.exit 166 167extend_bw.exit: ; preds = %while.end275.i, %if.then.i 168 %add14.i1262 = phi i32 [ %add14.i, %if.then.i ], [ undef, %while.end275.i ] 169 %add15.i1261 = phi i32 [ %add15.i, %if.then.i ], [ undef, %while.end275.i ] 170 br i1 false, label %if.then157, label %land.lhs.true167 171 172if.then157: ; preds = %extend_bw.exit 173 %add158 = add nsw i32 %add14.i1262, 1 174 store i32 %add158, i32* %from299, align 4 175 %add160 = add nsw i32 %add15.i1261, 1 176 store i32 %add160, i32* %from1115, align 4 177 br label %land.lhs.true167 178 179land.lhs.true167: ; preds = %if.then157, %extend_bw.exit, %if.end98, %land.lhs.true, %if.end12 180 unreachable 181 182for.inc603: ; preds = %for.body 183 br i1 undef, label %for.body, label %for.end605 184 185for.end605: ; preds = %for.inc603, %if.end 186 unreachable 187 188return: ; preds = %lor.lhs.false, %entry 189 ret void 190} 191 192