1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 2 2; RUN: opt < %s -passes=indvars -S | FileCheck %s 3 4; Indvars should be able to promote the hiPart induction variable in the 5; inner loop to i64. 6; TODO: it should promote hiPart to i64 in the outer loop too. 7 8target 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-n32:64" 9 10define void @t(ptr %pval1, ptr %peakWeight, ptr %nrgReducePeakrate, i32 %bandEdgeIndex, float %val1) nounwind { 11; CHECK-LABEL: define void @t 12; CHECK-SAME: (ptr [[PVAL1:%.*]], ptr [[PEAKWEIGHT:%.*]], ptr [[NRGREDUCEPEAKRATE:%.*]], i32 [[BANDEDGEINDEX:%.*]], float [[VAL1:%.*]]) #[[ATTR0:[0-9]+]] { 13; CHECK-NEXT: entry: 14; CHECK-NEXT: [[VAL:%.*]] = load float, ptr [[PEAKWEIGHT]], align 4 15; CHECK-NEXT: [[VAL2:%.*]] = icmp sgt i32 [[BANDEDGEINDEX]], 0 16; CHECK-NEXT: br i1 [[VAL2]], label [[BB_NPH22:%.*]], label [[RETURN:%.*]] 17; CHECK: bb.nph22: 18; CHECK-NEXT: [[VAL3:%.*]] = add i32 [[BANDEDGEINDEX]], -1 19; CHECK-NEXT: [[TMP0:%.*]] = sext i32 [[VAL3]] to i64 20; CHECK-NEXT: [[WIDE_TRIP_COUNT:%.*]] = zext i32 [[BANDEDGEINDEX]] to i64 21; CHECK-NEXT: br label [[BB:%.*]] 22; CHECK: bb: 23; CHECK-NEXT: [[INDVARS_IV1:%.*]] = phi i64 [ [[INDVARS_IV_NEXT2:%.*]], [[BB8:%.*]] ], [ 0, [[BB_NPH22]] ] 24; CHECK-NEXT: [[DISTERBHI_121:%.*]] = phi float [ [[DISTERBHI_2_LCSSA:%.*]], [[BB8]] ], [ 0.000000e+00, [[BB_NPH22]] ] 25; CHECK-NEXT: [[DISTERBLO_120:%.*]] = phi float [ [[DISTERBLO_0_LCSSA:%.*]], [[BB8]] ], [ 0.000000e+00, [[BB_NPH22]] ] 26; CHECK-NEXT: [[HIPART_119:%.*]] = phi i32 [ [[HIPART_0_LCSSA:%.*]], [[BB8]] ], [ 0, [[BB_NPH22]] ] 27; CHECK-NEXT: [[LOPART_118:%.*]] = phi i32 [ [[LOPART_0_LCSSA:%.*]], [[BB8]] ], [ 0, [[BB_NPH22]] ] 28; CHECK-NEXT: [[PEAKCOUNT_117:%.*]] = phi float [ [[PEAKCOUNT_2_LCSSA:%.*]], [[BB8]] ], [ [[VAL]], [[BB_NPH22]] ] 29; CHECK-NEXT: [[VAL4:%.*]] = icmp ugt i64 [[INDVARS_IV1]], 0 30; CHECK-NEXT: br i1 [[VAL4]], label [[BB1:%.*]], label [[BB3_PREHEADER:%.*]] 31; CHECK: bb1: 32; CHECK-NEXT: [[TMP1:%.*]] = add nsw i64 [[INDVARS_IV1]], -1 33; CHECK-NEXT: [[VAL7:%.*]] = getelementptr float, ptr [[PVAL1]], i64 [[TMP1]] 34; CHECK-NEXT: [[VAL8:%.*]] = load float, ptr [[VAL7]], align 4 35; CHECK-NEXT: [[VAL9:%.*]] = fadd float [[VAL8]], [[DISTERBLO_120]] 36; CHECK-NEXT: [[TMP2:%.*]] = add nsw i64 [[INDVARS_IV1]], -1 37; CHECK-NEXT: [[VAL12:%.*]] = getelementptr float, ptr [[PVAL1]], i64 [[TMP2]] 38; CHECK-NEXT: [[VAL13:%.*]] = load float, ptr [[VAL12]], align 4 39; CHECK-NEXT: [[VAL14:%.*]] = fsub float [[DISTERBHI_121]], [[VAL13]] 40; CHECK-NEXT: br label [[BB3_PREHEADER]] 41; CHECK: bb3.preheader: 42; CHECK-NEXT: [[DISTERBLO_0_PH:%.*]] = phi float [ [[DISTERBLO_120]], [[BB]] ], [ [[VAL9]], [[BB1]] ] 43; CHECK-NEXT: [[DISTERBHI_0_PH:%.*]] = phi float [ [[DISTERBHI_121]], [[BB]] ], [ [[VAL14]], [[BB1]] ] 44; CHECK-NEXT: [[VAL15:%.*]] = fcmp ogt float [[DISTERBLO_0_PH]], 2.500000e+00 45; CHECK-NEXT: br i1 [[VAL15]], label [[BB_NPH:%.*]], label [[BB5_PREHEADER:%.*]] 46; CHECK: bb.nph: 47; CHECK-NEXT: br label [[BB2:%.*]] 48; CHECK: bb2: 49; CHECK-NEXT: [[DISTERBLO_03:%.*]] = phi float [ [[VAL19:%.*]], [[BB3:%.*]] ], [ [[DISTERBLO_0_PH]], [[BB_NPH]] ] 50; CHECK-NEXT: [[LOPART_02:%.*]] = phi i32 [ [[VAL24:%.*]], [[BB3]] ], [ [[LOPART_118]], [[BB_NPH]] ] 51; CHECK-NEXT: [[PEAKCOUNT_01:%.*]] = phi float [ [[VAL23:%.*]], [[BB3]] ], [ [[PEAKCOUNT_117]], [[BB_NPH]] ] 52; CHECK-NEXT: [[VAL16:%.*]] = sext i32 [[LOPART_02]] to i64 53; CHECK-NEXT: [[VAL17:%.*]] = getelementptr float, ptr [[PVAL1]], i64 [[VAL16]] 54; CHECK-NEXT: [[VAL18:%.*]] = load float, ptr [[VAL17]], align 4 55; CHECK-NEXT: [[VAL19]] = fsub float [[DISTERBLO_03]], [[VAL18]] 56; CHECK-NEXT: [[VAL20:%.*]] = sext i32 [[LOPART_02]] to i64 57; CHECK-NEXT: [[VAL21:%.*]] = getelementptr float, ptr [[PEAKWEIGHT]], i64 [[VAL20]] 58; CHECK-NEXT: [[VAL22:%.*]] = load float, ptr [[VAL21]], align 4 59; CHECK-NEXT: [[VAL23]] = fsub float [[PEAKCOUNT_01]], [[VAL22]] 60; CHECK-NEXT: [[VAL24]] = add i32 [[LOPART_02]], 1 61; CHECK-NEXT: br label [[BB3]] 62; CHECK: bb3: 63; CHECK-NEXT: [[VAL25:%.*]] = fcmp ogt float [[VAL19]], 2.500000e+00 64; CHECK-NEXT: br i1 [[VAL25]], label [[BB2]], label [[BB3_BB5_PREHEADER_CRIT_EDGE:%.*]] 65; CHECK: bb3.bb5.preheader_crit_edge: 66; CHECK-NEXT: [[VAL24_LCSSA:%.*]] = phi i32 [ [[VAL24]], [[BB3]] ] 67; CHECK-NEXT: [[VAL23_LCSSA:%.*]] = phi float [ [[VAL23]], [[BB3]] ] 68; CHECK-NEXT: [[VAL19_LCSSA:%.*]] = phi float [ [[VAL19]], [[BB3]] ] 69; CHECK-NEXT: br label [[BB5_PREHEADER]] 70; CHECK: bb5.preheader: 71; CHECK-NEXT: [[DISTERBLO_0_LCSSA]] = phi float [ [[VAL19_LCSSA]], [[BB3_BB5_PREHEADER_CRIT_EDGE]] ], [ [[DISTERBLO_0_PH]], [[BB3_PREHEADER]] ] 72; CHECK-NEXT: [[LOPART_0_LCSSA]] = phi i32 [ [[VAL24_LCSSA]], [[BB3_BB5_PREHEADER_CRIT_EDGE]] ], [ [[LOPART_118]], [[BB3_PREHEADER]] ] 73; CHECK-NEXT: [[PEAKCOUNT_0_LCSSA:%.*]] = phi float [ [[VAL23_LCSSA]], [[BB3_BB5_PREHEADER_CRIT_EDGE]] ], [ [[PEAKCOUNT_117]], [[BB3_PREHEADER]] ] 74; CHECK-NEXT: [[DOTNOT10:%.*]] = fcmp olt float [[DISTERBHI_0_PH]], 2.500000e+00 75; CHECK-NEXT: [[VAL26:%.*]] = icmp sgt i32 [[VAL3]], [[HIPART_119]] 76; CHECK-NEXT: [[OR_COND11:%.*]] = and i1 [[VAL26]], [[DOTNOT10]] 77; CHECK-NEXT: br i1 [[OR_COND11]], label [[BB_NPH12:%.*]], label [[BB7:%.*]] 78; CHECK: bb.nph12: 79; CHECK-NEXT: [[TMP3:%.*]] = sext i32 [[HIPART_119]] to i64 80; CHECK-NEXT: br label [[BB4:%.*]] 81; CHECK: bb4: 82; CHECK-NEXT: [[INDVARS_IV:%.*]] = phi i64 [ [[INDVARS_IV_NEXT:%.*]], [[BB5:%.*]] ], [ [[TMP3]], [[BB_NPH12]] ] 83; CHECK-NEXT: [[DISTERBHI_29:%.*]] = phi float [ [[VAL30:%.*]], [[BB5]] ], [ [[DISTERBHI_0_PH]], [[BB_NPH12]] ] 84; CHECK-NEXT: [[PEAKCOUNT_27:%.*]] = phi float [ [[VAL35:%.*]], [[BB5]] ], [ [[PEAKCOUNT_0_LCSSA]], [[BB_NPH12]] ] 85; CHECK-NEXT: [[VAL28:%.*]] = getelementptr float, ptr [[PVAL1]], i64 [[INDVARS_IV]] 86; CHECK-NEXT: [[VAL29:%.*]] = load float, ptr [[VAL28]], align 4 87; CHECK-NEXT: [[VAL30]] = fadd float [[VAL29]], [[DISTERBHI_29]] 88; CHECK-NEXT: [[INDVARS_IV_NEXT]] = add nsw i64 [[INDVARS_IV]], 1 89; CHECK-NEXT: [[VAL33:%.*]] = getelementptr float, ptr [[PEAKWEIGHT]], i64 [[INDVARS_IV_NEXT]] 90; CHECK-NEXT: [[VAL34:%.*]] = load float, ptr [[VAL33]], align 4 91; CHECK-NEXT: [[VAL35]] = fadd float [[VAL34]], [[PEAKCOUNT_27]] 92; CHECK-NEXT: br label [[BB5]] 93; CHECK: bb5: 94; CHECK-NEXT: [[DOTNOT:%.*]] = fcmp olt float [[VAL30]], 2.500000e+00 95; CHECK-NEXT: [[VAL36:%.*]] = icmp sgt i64 [[TMP0]], [[INDVARS_IV_NEXT]] 96; CHECK-NEXT: [[OR_COND:%.*]] = and i1 [[VAL36]], [[DOTNOT]] 97; CHECK-NEXT: br i1 [[OR_COND]], label [[BB4]], label [[BB5_BB7_CRIT_EDGE:%.*]] 98; CHECK: bb5.bb7_crit_edge: 99; CHECK-NEXT: [[VAL35_LCSSA:%.*]] = phi float [ [[VAL35]], [[BB5]] ] 100; CHECK-NEXT: [[VAL31_LCSSA_WIDE:%.*]] = phi i64 [ [[INDVARS_IV_NEXT]], [[BB5]] ] 101; CHECK-NEXT: [[VAL30_LCSSA:%.*]] = phi float [ [[VAL30]], [[BB5]] ] 102; CHECK-NEXT: [[TMP4:%.*]] = trunc nsw i64 [[VAL31_LCSSA_WIDE]] to i32 103; CHECK-NEXT: br label [[BB7]] 104; CHECK: bb7: 105; CHECK-NEXT: [[DISTERBHI_2_LCSSA]] = phi float [ [[VAL30_LCSSA]], [[BB5_BB7_CRIT_EDGE]] ], [ [[DISTERBHI_0_PH]], [[BB5_PREHEADER]] ] 106; CHECK-NEXT: [[HIPART_0_LCSSA]] = phi i32 [ [[TMP4]], [[BB5_BB7_CRIT_EDGE]] ], [ [[HIPART_119]], [[BB5_PREHEADER]] ] 107; CHECK-NEXT: [[PEAKCOUNT_2_LCSSA]] = phi float [ [[VAL35_LCSSA]], [[BB5_BB7_CRIT_EDGE]] ], [ [[PEAKCOUNT_0_LCSSA]], [[BB5_PREHEADER]] ] 108; CHECK-NEXT: [[VAL37:%.*]] = fadd float [[DISTERBLO_0_LCSSA]], [[DISTERBHI_2_LCSSA]] 109; CHECK-NEXT: [[VAL38:%.*]] = fdiv float [[PEAKCOUNT_2_LCSSA]], [[VAL37]] 110; CHECK-NEXT: [[VAL39:%.*]] = fmul float [[VAL38]], [[VAL1]] 111; CHECK-NEXT: [[VAL40:%.*]] = fmul float [[VAL39]], [[VAL39]] 112; CHECK-NEXT: [[VAL41:%.*]] = fmul float [[VAL40]], [[VAL40]] 113; CHECK-NEXT: [[VAL42:%.*]] = fadd float [[VAL41]], 1.000000e+00 114; CHECK-NEXT: [[VAL43:%.*]] = fdiv float 1.000000e+00, [[VAL42]] 115; CHECK-NEXT: [[VAL45:%.*]] = getelementptr float, ptr [[NRGREDUCEPEAKRATE]], i64 [[INDVARS_IV1]] 116; CHECK-NEXT: store float [[VAL43]], ptr [[VAL45]], align 4 117; CHECK-NEXT: [[INDVARS_IV_NEXT2]] = add nuw nsw i64 [[INDVARS_IV1]], 1 118; CHECK-NEXT: br label [[BB8]] 119; CHECK: bb8: 120; CHECK-NEXT: [[EXITCOND:%.*]] = icmp ne i64 [[INDVARS_IV_NEXT2]], [[WIDE_TRIP_COUNT]] 121; CHECK-NEXT: br i1 [[EXITCOND]], label [[BB]], label [[BB8_RETURN_CRIT_EDGE:%.*]] 122; CHECK: bb8.return_crit_edge: 123; CHECK-NEXT: br label [[RETURN]] 124; CHECK: return: 125; CHECK-NEXT: ret void 126; 127entry: 128 %val = load float, ptr %peakWeight, align 4 ; <float> [#uses=1] 129 %val2 = icmp sgt i32 %bandEdgeIndex, 0 ; <i1> [#uses=1] 130 br i1 %val2, label %bb.nph22, label %return 131 132bb.nph22: ; preds = %entry 133 %val3 = add i32 %bandEdgeIndex, -1 ; <i32> [#uses=2] 134 br label %bb 135 136bb: ; preds = %bb8, %bb.nph22 137 %distERBhi.121 = phi float [ %distERBhi.2.lcssa, %bb8 ], [ 0.000000e+00, %bb.nph22 ] ; <float> [#uses=2] 138 %distERBlo.120 = phi float [ %distERBlo.0.lcssa, %bb8 ], [ 0.000000e+00, %bb.nph22 ] ; <float> [#uses=2] 139 %hiPart.119 = phi i32 [ %hiPart.0.lcssa, %bb8 ], [ 0, %bb.nph22 ] ; <i32> [#uses=3] 140 %loPart.118 = phi i32 [ %loPart.0.lcssa, %bb8 ], [ 0, %bb.nph22 ] ; <i32> [#uses=2] 141 %peakCount.117 = phi float [ %peakCount.2.lcssa, %bb8 ], [ %val, %bb.nph22 ] ; <float> [#uses=2] 142 %part.016 = phi i32 [ %val46, %bb8 ], [ 0, %bb.nph22 ] ; <i32> [#uses=5] 143 %val4 = icmp sgt i32 %part.016, 0 ; <i1> [#uses=1] 144 br i1 %val4, label %bb1, label %bb3.preheader 145 146bb1: ; preds = %bb 147 %val5 = add i32 %part.016, -1 ; <i32> [#uses=1] 148 %val6 = sext i32 %val5 to i64 ; <i64> [#uses=1] 149 %val7 = getelementptr float, ptr %pval1, i64 %val6 ; <ptr> [#uses=1] 150 %val8 = load float, ptr %val7, align 4 ; <float> [#uses=1] 151 %val9 = fadd float %val8, %distERBlo.120 ; <float> [#uses=1] 152 %val10 = add i32 %part.016, -1 ; <i32> [#uses=1] 153 %val11 = sext i32 %val10 to i64 ; <i64> [#uses=1] 154 %val12 = getelementptr float, ptr %pval1, i64 %val11 ; <ptr> [#uses=1] 155 %val13 = load float, ptr %val12, align 4 ; <float> [#uses=1] 156 %val14 = fsub float %distERBhi.121, %val13 ; <float> [#uses=1] 157 br label %bb3.preheader 158 159bb3.preheader: ; preds = %bb1, %bb 160 %distERBlo.0.ph = phi float [ %distERBlo.120, %bb ], [ %val9, %bb1 ] ; <float> [#uses=3] 161 %distERBhi.0.ph = phi float [ %distERBhi.121, %bb ], [ %val14, %bb1 ] ; <float> [#uses=3] 162 %val15 = fcmp ogt float %distERBlo.0.ph, 2.500000e+00 ; <i1> [#uses=1] 163 br i1 %val15, label %bb.nph, label %bb5.preheader 164 165bb.nph: ; preds = %bb3.preheader 166 br label %bb2 167 168bb2: ; preds = %bb3, %bb.nph 169 %distERBlo.03 = phi float [ %val19, %bb3 ], [ %distERBlo.0.ph, %bb.nph ] ; <float> [#uses=1] 170 %loPart.02 = phi i32 [ %val24, %bb3 ], [ %loPart.118, %bb.nph ] ; <i32> [#uses=3] 171 %peakCount.01 = phi float [ %val23, %bb3 ], [ %peakCount.117, %bb.nph ] ; <float> [#uses=1] 172 %val16 = sext i32 %loPart.02 to i64 ; <i64> [#uses=1] 173 %val17 = getelementptr float, ptr %pval1, i64 %val16 ; <ptr> [#uses=1] 174 %val18 = load float, ptr %val17, align 4 ; <float> [#uses=1] 175 %val19 = fsub float %distERBlo.03, %val18 ; <float> [#uses=3] 176 %val20 = sext i32 %loPart.02 to i64 ; <i64> [#uses=1] 177 %val21 = getelementptr float, ptr %peakWeight, i64 %val20 ; <ptr> [#uses=1] 178 %val22 = load float, ptr %val21, align 4 ; <float> [#uses=1] 179 %val23 = fsub float %peakCount.01, %val22 ; <float> [#uses=2] 180 %val24 = add i32 %loPart.02, 1 ; <i32> [#uses=2] 181 br label %bb3 182 183bb3: ; preds = %bb2 184 %val25 = fcmp ogt float %val19, 2.500000e+00 ; <i1> [#uses=1] 185 br i1 %val25, label %bb2, label %bb3.bb5.preheader_crit_edge 186 187bb3.bb5.preheader_crit_edge: ; preds = %bb3 188 %val24.lcssa = phi i32 [ %val24, %bb3 ] ; <i32> [#uses=1] 189 %val23.lcssa = phi float [ %val23, %bb3 ] ; <float> [#uses=1] 190 %val19.lcssa = phi float [ %val19, %bb3 ] ; <float> [#uses=1] 191 br label %bb5.preheader 192 193bb5.preheader: ; preds = %bb3.bb5.preheader_crit_edge, %bb3.preheader 194 %distERBlo.0.lcssa = phi float [ %val19.lcssa, %bb3.bb5.preheader_crit_edge ], [ %distERBlo.0.ph, %bb3.preheader ] ; <float> [#uses=2] 195 %loPart.0.lcssa = phi i32 [ %val24.lcssa, %bb3.bb5.preheader_crit_edge ], [ %loPart.118, %bb3.preheader ] ; <i32> [#uses=1] 196 %peakCount.0.lcssa = phi float [ %val23.lcssa, %bb3.bb5.preheader_crit_edge ], [ %peakCount.117, %bb3.preheader ] ; <float> [#uses=2] 197 %.not10 = fcmp olt float %distERBhi.0.ph, 2.500000e+00 ; <i1> [#uses=1] 198 %val26 = icmp sgt i32 %val3, %hiPart.119 ; <i1> [#uses=1] 199 %or.cond11 = and i1 %val26, %.not10 ; <i1> [#uses=1] 200 br i1 %or.cond11, label %bb.nph12, label %bb7 201 202bb.nph12: ; preds = %bb5.preheader 203 br label %bb4 204bb4: ; preds = %bb5, %bb.nph12 205 %distERBhi.29 = phi float [ %val30, %bb5 ], [ %distERBhi.0.ph, %bb.nph12 ] ; <float> [#uses=1] 206 %hiPart.08 = phi i32 [ %val31, %bb5 ], [ %hiPart.119, %bb.nph12 ] ; <i32> [#uses=2] 207 %peakCount.27 = phi float [ %val35, %bb5 ], [ %peakCount.0.lcssa, %bb.nph12 ] ; <float> [#uses=1] 208 %val27 = sext i32 %hiPart.08 to i64 ; <i64> [#uses=1] 209 %val28 = getelementptr float, ptr %pval1, i64 %val27 ; <ptr> [#uses=1] 210 %val29 = load float, ptr %val28, align 4 ; <float> [#uses=1] 211 %val30 = fadd float %val29, %distERBhi.29 ; <float> [#uses=3] 212 %val31 = add i32 %hiPart.08, 1 ; <i32> [#uses=4] 213 %val32 = sext i32 %val31 to i64 ; <i64> [#uses=1] 214 %val33 = getelementptr float, ptr %peakWeight, i64 %val32 ; <ptr> [#uses=1] 215 %val34 = load float, ptr %val33, align 4 ; <float> [#uses=1] 216 %val35 = fadd float %val34, %peakCount.27 ; <float> [#uses=2] 217 br label %bb5 218 219bb5: ; preds = %bb4 220 %.not = fcmp olt float %val30, 2.500000e+00 ; <i1> [#uses=1] 221 %val36 = icmp sgt i32 %val3, %val31 ; <i1> [#uses=1] 222 %or.cond = and i1 %val36, %.not ; <i1> [#uses=1] 223 br i1 %or.cond, label %bb4, label %bb5.bb7_crit_edge 224 225bb5.bb7_crit_edge: ; preds = %bb5 226 %val35.lcssa = phi float [ %val35, %bb5 ] ; <float> [#uses=1] 227 %val31.lcssa = phi i32 [ %val31, %bb5 ] ; <i32> [#uses=1] 228 %val30.lcssa = phi float [ %val30, %bb5 ] ; <float> [#uses=1] 229 br label %bb7 230 231bb7: ; preds = %bb5.bb7_crit_edge, %bb5.preheader 232 %distERBhi.2.lcssa = phi float [ %val30.lcssa, %bb5.bb7_crit_edge ], [ %distERBhi.0.ph, %bb5.preheader ] ; <float> [#uses=2] 233 %hiPart.0.lcssa = phi i32 [ %val31.lcssa, %bb5.bb7_crit_edge ], [ %hiPart.119, %bb5.preheader ] ; <i32> [#uses=1] 234 %peakCount.2.lcssa = phi float [ %val35.lcssa, %bb5.bb7_crit_edge ], [ %peakCount.0.lcssa, %bb5.preheader ] ; <float> [#uses=2] 235 %val37 = fadd float %distERBlo.0.lcssa, %distERBhi.2.lcssa ; <float> [#uses=1] 236 %val38 = fdiv float %peakCount.2.lcssa, %val37 ; <float> [#uses=1] 237 %val39 = fmul float %val38, %val1 ; <float> [#uses=2] 238 %val40 = fmul float %val39, %val39 ; <float> [#uses=2] 239 %val41 = fmul float %val40, %val40 ; <float> [#uses=1] 240 %val42 = fadd float %val41, 1.000000e+00 ; <float> [#uses=1] 241 %val43 = fdiv float 1.000000e+00, %val42 ; <float> [#uses=1] 242 %val44 = sext i32 %part.016 to i64 ; <i64> [#uses=1] 243 %val45 = getelementptr float, ptr %nrgReducePeakrate, i64 %val44 ; <ptr> [#uses=1] 244 store float %val43, ptr %val45, align 4 245 %val46 = add i32 %part.016, 1 ; <i32> [#uses=2] 246 br label %bb8 247 248bb8: ; preds = %bb7 249 %val47 = icmp slt i32 %val46, %bandEdgeIndex ; <i1> [#uses=1] 250 br i1 %val47, label %bb, label %bb8.return_crit_edge 251 252bb8.return_crit_edge: ; preds = %bb8 253 br label %return 254 255return: ; preds = %bb8.return_crit_edge, %entry 256 ret void 257} 258