brintos

brintos / llvm-project-archived public Read only

0
0
Text · 19.5 KiB · a232853 Raw
494 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -mtriple=wasm32 -wasm-keep-registers %s -o - | FileCheck %s3 4target datalayout = "e-m:e-p:32:32-p10:8:8-p20:8:8-i64:64-n32:64-S128-ni:1:10:20"5 6define hidden void @one_dim(ptr nocapture noundef readonly %arg, ptr nocapture noundef readonly %arg1, ptr nocapture noundef writeonly %arg2) {7; CHECK-LABEL: one_dim:8; CHECK:         .functype one_dim (i32, i32, i32) -> ()9; CHECK-NEXT:    .local i32, i32, i3210; CHECK-NEXT:  # %bb.0: # %bb11; CHECK-NEXT:    i32.const $push22=, 012; CHECK-NEXT:    local.set 3, $pop2213; CHECK-NEXT:  .LBB0_1: # %bb414; CHECK-NEXT:    # =>This Inner Loop Header: Depth=115; CHECK-NEXT:    loop # label0:16; CHECK-NEXT:    local.get $push27=, 217; CHECK-NEXT:    local.get $push24=, 118; CHECK-NEXT:    local.get $push23=, 319; CHECK-NEXT:    i32.add $push21=, $pop24, $pop2320; CHECK-NEXT:    local.tee $push20=, 4, $pop2121; CHECK-NEXT:    i32.load16_s $push1=, 0($pop20)22; CHECK-NEXT:    local.get $push26=, 023; CHECK-NEXT:    local.get $push25=, 324; CHECK-NEXT:    i32.add $push19=, $pop26, $pop2525; CHECK-NEXT:    local.tee $push18=, 5, $pop1926; CHECK-NEXT:    i32.load16_s $push0=, 0($pop18)27; CHECK-NEXT:    i32.add $push2=, $pop1, $pop028; CHECK-NEXT:    i32.store 0($pop27), $pop229; CHECK-NEXT:    local.get $push28=, 230; CHECK-NEXT:    i32.const $push17=, 431; CHECK-NEXT:    i32.add $push8=, $pop28, $pop1732; CHECK-NEXT:    local.get $push29=, 433; CHECK-NEXT:    i32.const $push16=, 234; CHECK-NEXT:    i32.add $push5=, $pop29, $pop1635; CHECK-NEXT:    i32.load16_s $push6=, 0($pop5)36; CHECK-NEXT:    local.get $push30=, 537; CHECK-NEXT:    i32.const $push15=, 238; CHECK-NEXT:    i32.add $push3=, $pop30, $pop1539; CHECK-NEXT:    i32.load16_s $push4=, 0($pop3)40; CHECK-NEXT:    i32.add $push7=, $pop6, $pop441; CHECK-NEXT:    i32.store 0($pop8), $pop742; CHECK-NEXT:    local.get $push32=, 243; CHECK-NEXT:    i32.const $push14=, 844; CHECK-NEXT:    i32.add $push31=, $pop32, $pop1445; CHECK-NEXT:    local.set 2, $pop3146; CHECK-NEXT:    local.get $push33=, 347; CHECK-NEXT:    i32.const $push13=, 448; CHECK-NEXT:    i32.add $push12=, $pop33, $pop1349; CHECK-NEXT:    local.tee $push11=, 3, $pop1250; CHECK-NEXT:    i32.const $push10=, 2000051; CHECK-NEXT:    i32.ne $push9=, $pop11, $pop1052; CHECK-NEXT:    br_if 0, $pop9 # 0: up to label053; CHECK-NEXT:  # %bb.2: # %bb354; CHECK-NEXT:    end_loop55; CHECK-NEXT:    # fallthrough-return56bb:57  br label %bb458 59bb3:                                              ; preds = %bb460  ret void61 62bb4:                                              ; preds = %bb4, %bb63  %i = phi i32 [ 0, %bb ], [ %i22, %bb4 ]64  %i5 = getelementptr inbounds i16, ptr %arg, i32 %i65  %i6 = load i16, ptr %i5, align 266  %i7 = sext i16 %i6 to i3267  %i8 = getelementptr inbounds i16, ptr %arg1, i32 %i68  %i9 = load i16, ptr %i8, align 269  %i10 = sext i16 %i9 to i3270  %i11 = add nsw i32 %i10, %i771  %i12 = getelementptr inbounds i32, ptr %arg2, i32 %i72  store i32 %i11, ptr %i12, align 473  %i13 = or disjoint i32 %i, 174  %i14 = getelementptr inbounds i16, ptr %arg, i32 %i1375  %i15 = load i16, ptr %i14, align 276  %i16 = sext i16 %i15 to i3277  %i17 = getelementptr inbounds i16, ptr %arg1, i32 %i1378  %i18 = load i16, ptr %i17, align 279  %i19 = sext i16 %i18 to i3280  %i20 = add nsw i32 %i19, %i1681  %i21 = getelementptr inbounds i32, ptr %arg2, i32 %i1382  store i32 %i20, ptr %i21, align 483  %i22 = add nuw nsw i32 %i, 284  %i23 = icmp eq i32 %i22, 1000085  br i1 %i23, label %bb3, label %bb486}87 88define hidden void @one_dim_no_inbound_loads(ptr nocapture noundef readonly %arg, ptr nocapture noundef readonly %arg1, ptr nocapture noundef writeonly %arg2) {89; CHECK-LABEL: one_dim_no_inbound_loads:90; CHECK:         .functype one_dim_no_inbound_loads (i32, i32, i32) -> ()91; CHECK-NEXT:    .local i32, i32, i3292; CHECK-NEXT:  # %bb.0: # %bb93; CHECK-NEXT:    i32.const $push22=, 094; CHECK-NEXT:    local.set 3, $pop2295; CHECK-NEXT:  .LBB1_1: # %bb496; CHECK-NEXT:    # =>This Inner Loop Header: Depth=197; CHECK-NEXT:    loop # label1:98; CHECK-NEXT:    local.get $push27=, 299; CHECK-NEXT:    local.get $push24=, 1100; CHECK-NEXT:    local.get $push23=, 3101; CHECK-NEXT:    i32.add $push21=, $pop24, $pop23102; CHECK-NEXT:    local.tee $push20=, 4, $pop21103; CHECK-NEXT:    i32.load16_s $push1=, 0($pop20)104; CHECK-NEXT:    local.get $push26=, 0105; CHECK-NEXT:    local.get $push25=, 3106; CHECK-NEXT:    i32.add $push19=, $pop26, $pop25107; CHECK-NEXT:    local.tee $push18=, 5, $pop19108; CHECK-NEXT:    i32.load16_s $push0=, 0($pop18)109; CHECK-NEXT:    i32.add $push2=, $pop1, $pop0110; CHECK-NEXT:    i32.store 0($pop27), $pop2111; CHECK-NEXT:    local.get $push28=, 2112; CHECK-NEXT:    i32.const $push17=, 4113; CHECK-NEXT:    i32.add $push8=, $pop28, $pop17114; CHECK-NEXT:    local.get $push29=, 4115; CHECK-NEXT:    i32.const $push16=, 2116; CHECK-NEXT:    i32.add $push5=, $pop29, $pop16117; CHECK-NEXT:    i32.load16_s $push6=, 0($pop5)118; CHECK-NEXT:    local.get $push30=, 5119; CHECK-NEXT:    i32.const $push15=, 2120; CHECK-NEXT:    i32.add $push3=, $pop30, $pop15121; CHECK-NEXT:    i32.load16_s $push4=, 0($pop3)122; CHECK-NEXT:    i32.add $push7=, $pop6, $pop4123; CHECK-NEXT:    i32.store 0($pop8), $pop7124; CHECK-NEXT:    local.get $push32=, 2125; CHECK-NEXT:    i32.const $push14=, 8126; CHECK-NEXT:    i32.add $push31=, $pop32, $pop14127; CHECK-NEXT:    local.set 2, $pop31128; CHECK-NEXT:    local.get $push33=, 3129; CHECK-NEXT:    i32.const $push13=, 4130; CHECK-NEXT:    i32.add $push12=, $pop33, $pop13131; CHECK-NEXT:    local.tee $push11=, 3, $pop12132; CHECK-NEXT:    i32.const $push10=, 20000133; CHECK-NEXT:    i32.ne $push9=, $pop11, $pop10134; CHECK-NEXT:    br_if 0, $pop9 # 0: up to label1135; CHECK-NEXT:  # %bb.2: # %bb3136; CHECK-NEXT:    end_loop137; CHECK-NEXT:    # fallthrough-return138bb:139  br label %bb4140 141bb3:                                              ; preds = %bb4142  ret void143 144bb4:                                              ; preds = %bb4, %bb145  %i = phi i32 [ 0, %bb ], [ %i22, %bb4 ]146  %i5 = getelementptr i16, ptr %arg, i32 %i147  %i6 = load i16, ptr %i5, align 2148  %i7 = sext i16 %i6 to i32149  %i8 = getelementptr i16, ptr %arg1, i32 %i150  %i9 = load i16, ptr %i8, align 2151  %i10 = sext i16 %i9 to i32152  %i11 = add nsw i32 %i10, %i7153  %i12 = getelementptr inbounds i32, ptr %arg2, i32 %i154  store i32 %i11, ptr %i12, align 4155  %i13 = or disjoint i32 %i, 1156  %i14 = getelementptr i16, ptr %arg, i32 %i13157  %i15 = load i16, ptr %i14, align 2158  %i16 = sext i16 %i15 to i32159  %i17 = getelementptr i16, ptr %arg1, i32 %i13160  %i18 = load i16, ptr %i17, align 2161  %i19 = sext i16 %i18 to i32162  %i20 = add nsw i32 %i19, %i16163  %i21 = getelementptr inbounds i32, ptr %arg2, i32 %i13164  store i32 %i20, ptr %i21, align 4165  %i22 = add nuw nsw i32 %i, 2166  %i23 = icmp eq i32 %i22, 10000167  br i1 %i23, label %bb3, label %bb4168}169 170define hidden void @two_dims(ptr nocapture noundef readonly %arg, ptr nocapture noundef readonly %arg1, ptr nocapture noundef %arg2) {171; CHECK-LABEL: two_dims:172; CHECK:         .functype two_dims (i32, i32, i32) -> ()173; CHECK-NEXT:    .local i32, i32, i32, i32, i32, i32, i32, i32174; CHECK-NEXT:  # %bb.0: # %bb175; CHECK-NEXT:    i32.const $push48=, 0176; CHECK-NEXT:    local.set 3, $pop48177; CHECK-NEXT:  .LBB2_1: # %bb3178; CHECK-NEXT:    # =>This Loop Header: Depth=1179; CHECK-NEXT:    # Child Loop BB2_2 Depth 2180; CHECK-NEXT:    loop # label2:181; CHECK-NEXT:    local.get $push50=, 2182; CHECK-NEXT:    local.get $push49=, 3183; CHECK-NEXT:    i32.const $push29=, 2184; CHECK-NEXT:    i32.shl $push28=, $pop49, $pop29185; CHECK-NEXT:    local.tee $push27=, 4, $pop28186; CHECK-NEXT:    i32.add $push26=, $pop50, $pop27187; CHECK-NEXT:    local.tee $push25=, 5, $pop26188; CHECK-NEXT:    i32.load $push51=, 0($pop25)189; CHECK-NEXT:    local.set 6, $pop51190; CHECK-NEXT:    local.get $push53=, 1191; CHECK-NEXT:    local.get $push52=, 4192; CHECK-NEXT:    i32.add $push0=, $pop53, $pop52193; CHECK-NEXT:    i32.load $push54=, 0($pop0)194; CHECK-NEXT:    local.set 7, $pop54195; CHECK-NEXT:    local.get $push56=, 0196; CHECK-NEXT:    local.get $push55=, 4197; CHECK-NEXT:    i32.add $push1=, $pop56, $pop55198; CHECK-NEXT:    i32.load $push57=, 0($pop1)199; CHECK-NEXT:    local.set 8, $pop57200; CHECK-NEXT:    i32.const $push58=, 0201; CHECK-NEXT:    local.set 4, $pop58202; CHECK-NEXT:  .LBB2_2: # %bb14203; CHECK-NEXT:    # Parent Loop BB2_1 Depth=1204; CHECK-NEXT:    # => This Inner Loop Header: Depth=2205; CHECK-NEXT:    loop # label3:206; CHECK-NEXT:    local.get $push60=, 7207; CHECK-NEXT:    local.get $push59=, 4208; CHECK-NEXT:    i32.add $push43=, $pop60, $pop59209; CHECK-NEXT:    local.tee $push42=, 9, $pop43210; CHECK-NEXT:    i32.const $push41=, 6211; CHECK-NEXT:    i32.add $push20=, $pop42, $pop41212; CHECK-NEXT:    i32.load16_s $push21=, 0($pop20)213; CHECK-NEXT:    local.get $push62=, 8214; CHECK-NEXT:    local.get $push61=, 4215; CHECK-NEXT:    i32.add $push40=, $pop62, $pop61216; CHECK-NEXT:    local.tee $push39=, 10, $pop40217; CHECK-NEXT:    i32.const $push38=, 6218; CHECK-NEXT:    i32.add $push18=, $pop39, $pop38219; CHECK-NEXT:    i32.load16_s $push19=, 0($pop18)220; CHECK-NEXT:    i32.add $push22=, $pop21, $pop19221; CHECK-NEXT:    local.get $push63=, 9222; CHECK-NEXT:    i32.const $push37=, 4223; CHECK-NEXT:    i32.add $push14=, $pop63, $pop37224; CHECK-NEXT:    i32.load16_s $push15=, 0($pop14)225; CHECK-NEXT:    local.get $push64=, 10226; CHECK-NEXT:    i32.const $push36=, 4227; CHECK-NEXT:    i32.add $push12=, $pop64, $pop36228; CHECK-NEXT:    i32.load16_s $push13=, 0($pop12)229; CHECK-NEXT:    i32.add $push16=, $pop15, $pop13230; CHECK-NEXT:    local.get $push65=, 9231; CHECK-NEXT:    i32.const $push35=, 2232; CHECK-NEXT:    i32.add $push8=, $pop65, $pop35233; CHECK-NEXT:    i32.load16_s $push9=, 0($pop8)234; CHECK-NEXT:    local.get $push66=, 10235; CHECK-NEXT:    i32.const $push34=, 2236; CHECK-NEXT:    i32.add $push6=, $pop66, $pop34237; CHECK-NEXT:    i32.load16_s $push7=, 0($pop6)238; CHECK-NEXT:    i32.add $push10=, $pop9, $pop7239; CHECK-NEXT:    local.get $push67=, 9240; CHECK-NEXT:    i32.load16_s $push3=, 0($pop67)241; CHECK-NEXT:    local.get $push68=, 10242; CHECK-NEXT:    i32.load16_s $push2=, 0($pop68)243; CHECK-NEXT:    i32.add $push4=, $pop3, $pop2244; CHECK-NEXT:    local.get $push69=, 6245; CHECK-NEXT:    i32.add $push5=, $pop4, $pop69246; CHECK-NEXT:    i32.add $push11=, $pop10, $pop5247; CHECK-NEXT:    i32.add $push17=, $pop16, $pop11248; CHECK-NEXT:    i32.add $push70=, $pop22, $pop17249; CHECK-NEXT:    local.set 6, $pop70250; CHECK-NEXT:    local.get $push71=, 4251; CHECK-NEXT:    i32.const $push33=, 8252; CHECK-NEXT:    i32.add $push32=, $pop71, $pop33253; CHECK-NEXT:    local.tee $push31=, 4, $pop32254; CHECK-NEXT:    i32.const $push30=, 20000255; CHECK-NEXT:    i32.ne $push23=, $pop31, $pop30256; CHECK-NEXT:    br_if 0, $pop23 # 0: up to label3257; CHECK-NEXT:  # %bb.3: # %bb11258; CHECK-NEXT:    # in Loop: Header=BB2_1 Depth=1259; CHECK-NEXT:    end_loop260; CHECK-NEXT:    local.get $push73=, 5261; CHECK-NEXT:    local.get $push72=, 6262; CHECK-NEXT:    i32.store 0($pop73), $pop72263; CHECK-NEXT:    local.get $push74=, 3264; CHECK-NEXT:    i32.const $push47=, 1265; CHECK-NEXT:    i32.add $push46=, $pop74, $pop47266; CHECK-NEXT:    local.tee $push45=, 3, $pop46267; CHECK-NEXT:    i32.const $push44=, 10000268; CHECK-NEXT:    i32.ne $push24=, $pop45, $pop44269; CHECK-NEXT:    br_if 0, $pop24 # 0: up to label2270; CHECK-NEXT:  # %bb.4: # %bb10271; CHECK-NEXT:    end_loop272; CHECK-NEXT:    # fallthrough-return273bb:274  br label %bb3275 276bb3:                                              ; preds = %bb11, %bb277  %i = phi i32 [ 0, %bb ], [ %i12, %bb11 ]278  %i4 = getelementptr inbounds ptr, ptr %arg, i32 %i279  %i5 = load ptr, ptr %i4, align 4280  %i6 = getelementptr inbounds ptr, ptr %arg1, i32 %i281  %i7 = load ptr, ptr %i6, align 4282  %i8 = getelementptr inbounds i32, ptr %arg2, i32 %i283  %i9 = load i32, ptr %i8, align 4284  br label %bb14285 286bb10:                                             ; preds = %bb11287  ret void288 289bb11:                                             ; preds = %bb14290  store i32 %i51, ptr %i8, align 4291  %i12 = add nuw nsw i32 %i, 1292  %i13 = icmp eq i32 %i12, 10000293  br i1 %i13, label %bb10, label %bb3294 295bb14:                                             ; preds = %bb14, %bb3296  %i15 = phi i32 [ 0, %bb3 ], [ %i52, %bb14 ]297  %i16 = phi i32 [ %i9, %bb3 ], [ %i51, %bb14 ]298  %i17 = getelementptr inbounds i16, ptr %i5, i32 %i15299  %i18 = load i16, ptr %i17, align 2300  %i19 = sext i16 %i18 to i32301  %i20 = getelementptr inbounds i16, ptr %i7, i32 %i15302  %i21 = load i16, ptr %i20, align 2303  %i22 = sext i16 %i21 to i32304  %i23 = add nsw i32 %i22, %i19305  %i24 = add nsw i32 %i23, %i16306  %i25 = or disjoint i32 %i15, 1307  %i26 = getelementptr inbounds i16, ptr %i5, i32 %i25308  %i27 = load i16, ptr %i26, align 2309  %i28 = sext i16 %i27 to i32310  %i29 = getelementptr inbounds i16, ptr %i7, i32 %i25311  %i30 = load i16, ptr %i29, align 2312  %i31 = sext i16 %i30 to i32313  %i32 = add nsw i32 %i31, %i28314  %i33 = add nsw i32 %i32, %i24315  %i34 = or disjoint i32 %i15, 2316  %i35 = getelementptr inbounds i16, ptr %i5, i32 %i34317  %i36 = load i16, ptr %i35, align 2318  %i37 = sext i16 %i36 to i32319  %i38 = getelementptr inbounds i16, ptr %i7, i32 %i34320  %i39 = load i16, ptr %i38, align 2321  %i40 = sext i16 %i39 to i32322  %i41 = add nsw i32 %i40, %i37323  %i42 = add nsw i32 %i41, %i33324  %i43 = or disjoint i32 %i15, 3325  %i44 = getelementptr inbounds i16, ptr %i5, i32 %i43326  %i45 = load i16, ptr %i44, align 2327  %i46 = sext i16 %i45 to i32328  %i47 = getelementptr inbounds i16, ptr %i7, i32 %i43329  %i48 = load i16, ptr %i47, align 2330  %i49 = sext i16 %i48 to i32331  %i50 = add nsw i32 %i49, %i46332  %i51 = add nsw i32 %i50, %i42333  %i52 = add nuw nsw i32 %i15, 4334  %i53 = icmp eq i32 %i52, 10000335  br i1 %i53, label %bb11, label %bb14336}337 338define hidden void @runtime(ptr nocapture noundef readonly %arg, ptr nocapture noundef readonly %arg1, ptr nocapture noundef writeonly %arg2, i32 noundef %arg3) {339; CHECK-LABEL: runtime:340; CHECK:         .functype runtime (i32, i32, i32, i32) -> ()341; CHECK-NEXT:    .local i32, i32, i32, i32, i32342; CHECK-NEXT:  # %bb.0: # %bb343; CHECK-NEXT:    block344; CHECK-NEXT:    local.get $push32=, 3345; CHECK-NEXT:    i32.eqz $push64=, $pop32346; CHECK-NEXT:    br_if 0, $pop64 # 0: down to label4347; CHECK-NEXT:  # %bb.1: # %bb4348; CHECK-NEXT:    local.get $push34=, 3349; CHECK-NEXT:    i32.const $push0=, 1350; CHECK-NEXT:    i32.and $push33=, $pop34, $pop0351; CHECK-NEXT:    local.set 4, $pop33352; CHECK-NEXT:    i32.const $push35=, 0353; CHECK-NEXT:    local.set 5, $pop35354; CHECK-NEXT:    block355; CHECK-NEXT:    local.get $push36=, 3356; CHECK-NEXT:    i32.const $push20=, 1357; CHECK-NEXT:    i32.eq $push1=, $pop36, $pop20358; CHECK-NEXT:    br_if 0, $pop1 # 0: down to label5359; CHECK-NEXT:  # %bb.2: # %bb7360; CHECK-NEXT:    local.get $push38=, 3361; CHECK-NEXT:    i32.const $push2=, -2362; CHECK-NEXT:    i32.and $push37=, $pop38, $pop2363; CHECK-NEXT:    local.set 6, $pop37364; CHECK-NEXT:    i32.const $push39=, 0365; CHECK-NEXT:    local.set 5, $pop39366; CHECK-NEXT:    local.get $push40=, 0367; CHECK-NEXT:    local.set 3, $pop40368; CHECK-NEXT:    local.get $push41=, 1369; CHECK-NEXT:    local.set 7, $pop41370; CHECK-NEXT:    local.get $push42=, 2371; CHECK-NEXT:    local.set 8, $pop42372; CHECK-NEXT:  .LBB3_3: # %bb20373; CHECK-NEXT:    # =>This Inner Loop Header: Depth=1374; CHECK-NEXT:    loop # label6:375; CHECK-NEXT:    local.get $push45=, 8376; CHECK-NEXT:    local.get $push43=, 3377; CHECK-NEXT:    f32.load $push4=, 0($pop43)378; CHECK-NEXT:    local.get $push44=, 7379; CHECK-NEXT:    f32.load $push3=, 0($pop44)380; CHECK-NEXT:    f32.add $push5=, $pop4, $pop3381; CHECK-NEXT:    f32.store 0($pop45), $pop5382; CHECK-NEXT:    local.get $push46=, 8383; CHECK-NEXT:    i32.const $push29=, 4384; CHECK-NEXT:    i32.add $push11=, $pop46, $pop29385; CHECK-NEXT:    local.get $push47=, 3386; CHECK-NEXT:    i32.const $push28=, 4387; CHECK-NEXT:    i32.add $push8=, $pop47, $pop28388; CHECK-NEXT:    f32.load $push9=, 0($pop8)389; CHECK-NEXT:    local.get $push48=, 7390; CHECK-NEXT:    i32.const $push27=, 4391; CHECK-NEXT:    i32.add $push6=, $pop48, $pop27392; CHECK-NEXT:    f32.load $push7=, 0($pop6)393; CHECK-NEXT:    f32.add $push10=, $pop9, $pop7394; CHECK-NEXT:    f32.store 0($pop11), $pop10395; CHECK-NEXT:    local.get $push50=, 3396; CHECK-NEXT:    i32.const $push26=, 8397; CHECK-NEXT:    i32.add $push49=, $pop50, $pop26398; CHECK-NEXT:    local.set 3, $pop49399; CHECK-NEXT:    local.get $push52=, 7400; CHECK-NEXT:    i32.const $push25=, 8401; CHECK-NEXT:    i32.add $push51=, $pop52, $pop25402; CHECK-NEXT:    local.set 7, $pop51403; CHECK-NEXT:    local.get $push54=, 8404; CHECK-NEXT:    i32.const $push24=, 8405; CHECK-NEXT:    i32.add $push53=, $pop54, $pop24406; CHECK-NEXT:    local.set 8, $pop53407; CHECK-NEXT:    local.get $push56=, 6408; CHECK-NEXT:    local.get $push55=, 5409; CHECK-NEXT:    i32.const $push23=, 2410; CHECK-NEXT:    i32.add $push22=, $pop55, $pop23411; CHECK-NEXT:    local.tee $push21=, 5, $pop22412; CHECK-NEXT:    i32.ne $push12=, $pop56, $pop21413; CHECK-NEXT:    br_if 0, $pop12 # 0: up to label6414; CHECK-NEXT:  .LBB3_4: # %bb9415; CHECK-NEXT:    end_loop416; CHECK-NEXT:    end_block # label5:417; CHECK-NEXT:    local.get $push57=, 4418; CHECK-NEXT:    i32.eqz $push65=, $pop57419; CHECK-NEXT:    br_if 0, $pop65 # 0: down to label4420; CHECK-NEXT:  # %bb.5: # %bb12421; CHECK-NEXT:    local.get $push59=, 2422; CHECK-NEXT:    local.get $push58=, 5423; CHECK-NEXT:    i32.const $push13=, 2424; CHECK-NEXT:    i32.shl $push31=, $pop58, $pop13425; CHECK-NEXT:    local.tee $push30=, 3, $pop31426; CHECK-NEXT:    i32.add $push19=, $pop59, $pop30427; CHECK-NEXT:    local.get $push61=, 0428; CHECK-NEXT:    local.get $push60=, 3429; CHECK-NEXT:    i32.add $push16=, $pop61, $pop60430; CHECK-NEXT:    f32.load $push17=, 0($pop16)431; CHECK-NEXT:    local.get $push63=, 1432; CHECK-NEXT:    local.get $push62=, 3433; CHECK-NEXT:    i32.add $push14=, $pop63, $pop62434; CHECK-NEXT:    f32.load $push15=, 0($pop14)435; CHECK-NEXT:    f32.add $push18=, $pop17, $pop15436; CHECK-NEXT:    f32.store 0($pop19), $pop18437; CHECK-NEXT:  .LBB3_6: # %bb19438; CHECK-NEXT:    end_block # label4:439; CHECK-NEXT:    # fallthrough-return440bb:441  %i = icmp eq i32 %arg3, 0442  br i1 %i, label %bb19, label %bb4443 444bb4:                                              ; preds = %bb445  %i5 = and i32 %arg3, 1446  %i6 = icmp eq i32 %arg3, 1447  br i1 %i6, label %bb9, label %bb7448 449bb7:                                              ; preds = %bb4450  %i8 = and i32 %arg3, -2451  br label %bb20452 453bb9:                                              ; preds = %bb20, %bb4454  %i10 = phi i32 [ 0, %bb4 ], [ %i36, %bb20 ]455  %i11 = icmp eq i32 %i5, 0456  br i1 %i11, label %bb19, label %bb12457 458bb12:                                             ; preds = %bb9459  %i13 = getelementptr inbounds float, ptr %arg, i32 %i10460  %i14 = load float, ptr %i13, align 4461  %i15 = getelementptr inbounds float, ptr %arg1, i32 %i10462  %i16 = load float, ptr %i15, align 4463  %i17 = fadd float %i14, %i16464  %i18 = getelementptr inbounds float, ptr %arg2, i32 %i10465  store float %i17, ptr %i18, align 4466  br label %bb19467 468bb19:                                             ; preds = %bb12, %bb9, %bb469  ret void470 471bb20:                                             ; preds = %bb20, %bb7472  %i21 = phi i32 [ 0, %bb7 ], [ %i36, %bb20 ]473  %i22 = phi i32 [ 0, %bb7 ], [ %i37, %bb20 ]474  %i23 = getelementptr inbounds float, ptr %arg, i32 %i21475  %i24 = load float, ptr %i23, align 4476  %i25 = getelementptr inbounds float, ptr %arg1, i32 %i21477  %i26 = load float, ptr %i25, align 4478  %i27 = fadd float %i24, %i26479  %i28 = getelementptr inbounds float, ptr %arg2, i32 %i21480  store float %i27, ptr %i28, align 4481  %i29 = or disjoint i32 %i21, 1482  %i30 = getelementptr inbounds float, ptr %arg, i32 %i29483  %i31 = load float, ptr %i30, align 4484  %i32 = getelementptr inbounds float, ptr %arg1, i32 %i29485  %i33 = load float, ptr %i32, align 4486  %i34 = fadd float %i31, %i33487  %i35 = getelementptr inbounds float, ptr %arg2, i32 %i29488  store float %i34, ptr %i35, align 4489  %i36 = add nuw i32 %i21, 2490  %i37 = add i32 %i22, 2491  %i38 = icmp eq i32 %i37, %i8492  br i1 %i38, label %bb9, label %bb20493}494