771 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -O0 -mtriple=mipsel-linux-gnu -global-isel -verify-machineinstrs %s -o -| FileCheck %s -check-prefixes=MIPS323 4define void @long_chain_ambiguous_i32_in_gpr(i1 %cnd0, i1 %cnd1, i1 %cnd2, ptr %a, ptr %b, ptr %c, ptr %result) {5; MIPS32-LABEL: long_chain_ambiguous_i32_in_gpr:6; MIPS32: # %bb.0: # %entry7; MIPS32-NEXT: addiu $sp, $sp, -488; MIPS32-NEXT: .cfi_def_cfa_offset 489; MIPS32-NEXT: sw $4, 20($sp) # 4-byte Folded Spill10; MIPS32-NEXT: sw $5, 24($sp) # 4-byte Folded Spill11; MIPS32-NEXT: sw $6, 28($sp) # 4-byte Folded Spill12; MIPS32-NEXT: sw $7, 32($sp) # 4-byte Folded Spill13; MIPS32-NEXT: addiu $1, $sp, 6414; MIPS32-NEXT: lw $1, 0($1)15; MIPS32-NEXT: sw $1, 36($sp) # 4-byte Folded Spill16; MIPS32-NEXT: addiu $1, $sp, 6817; MIPS32-NEXT: lw $1, 0($1)18; MIPS32-NEXT: sw $1, 40($sp) # 4-byte Folded Spill19; MIPS32-NEXT: addiu $1, $sp, 7220; MIPS32-NEXT: lw $1, 0($1)21; MIPS32-NEXT: sw $1, 44($sp) # 4-byte Folded Spill22; MIPS32-NEXT: andi $1, $4, 123; MIPS32-NEXT: bnez $1, $BB0_1224; MIPS32-NEXT: nop25; MIPS32-NEXT: # %bb.1: # %entry26; MIPS32-NEXT: j $BB0_227; MIPS32-NEXT: nop28; MIPS32-NEXT: $BB0_2: # %pre.PHI.129; MIPS32-NEXT: lw $1, 24($sp) # 4-byte Folded Reload30; MIPS32-NEXT: andi $1, $1, 131; MIPS32-NEXT: bnez $1, $BB0_732; MIPS32-NEXT: nop33; MIPS32-NEXT: # %bb.3: # %pre.PHI.134; MIPS32-NEXT: j $BB0_435; MIPS32-NEXT: nop36; MIPS32-NEXT: $BB0_4: # %pre.PHI.1.037; MIPS32-NEXT: lw $1, 28($sp) # 4-byte Folded Reload38; MIPS32-NEXT: andi $1, $1, 139; MIPS32-NEXT: bnez $1, $BB0_840; MIPS32-NEXT: nop41; MIPS32-NEXT: # %bb.5: # %pre.PHI.1.042; MIPS32-NEXT: j $BB0_643; MIPS32-NEXT: nop44; MIPS32-NEXT: $BB0_6: # %b.PHI.1.045; MIPS32-NEXT: lw $1, 32($sp) # 4-byte Folded Reload46; MIPS32-NEXT: lw $1, 0($1)47; MIPS32-NEXT: sw $1, 16($sp) # 4-byte Folded Spill48; MIPS32-NEXT: j $BB0_949; MIPS32-NEXT: nop50; MIPS32-NEXT: $BB0_7: # %b.PHI.1.151; MIPS32-NEXT: lw $1, 36($sp) # 4-byte Folded Reload52; MIPS32-NEXT: lw $1, 0($1)53; MIPS32-NEXT: sw $1, 16($sp) # 4-byte Folded Spill54; MIPS32-NEXT: j $BB0_955; MIPS32-NEXT: nop56; MIPS32-NEXT: $BB0_8: # %b.PHI.1.257; MIPS32-NEXT: lw $1, 40($sp) # 4-byte Folded Reload58; MIPS32-NEXT: lw $1, 0($1)59; MIPS32-NEXT: sw $1, 16($sp) # 4-byte Folded Spill60; MIPS32-NEXT: j $BB0_961; MIPS32-NEXT: nop62; MIPS32-NEXT: $BB0_9: # %b.PHI.163; MIPS32-NEXT: lw $1, 28($sp) # 4-byte Folded Reload64; MIPS32-NEXT: lw $2, 16($sp) # 4-byte Folded Reload65; MIPS32-NEXT: sw $2, 8($sp) # 4-byte Folded Spill66; MIPS32-NEXT: andi $1, $1, 167; MIPS32-NEXT: sw $2, 12($sp) # 4-byte Folded Spill68; MIPS32-NEXT: bnez $1, $BB0_1169; MIPS32-NEXT: nop70; MIPS32-NEXT: # %bb.10: # %b.PHI.171; MIPS32-NEXT: j $BB0_1972; MIPS32-NEXT: nop73; MIPS32-NEXT: $BB0_11: # %b.PHI.1.end74; MIPS32-NEXT: lw $1, 8($sp) # 4-byte Folded Reload75; MIPS32-NEXT: lw $2, 44($sp) # 4-byte Folded Reload76; MIPS32-NEXT: sw $1, 0($2)77; MIPS32-NEXT: addiu $sp, $sp, 4878; MIPS32-NEXT: jr $ra79; MIPS32-NEXT: nop80; MIPS32-NEXT: $BB0_12: # %pre.PHI.281; MIPS32-NEXT: lw $1, 20($sp) # 4-byte Folded Reload82; MIPS32-NEXT: andi $1, $1, 183; MIPS32-NEXT: bnez $1, $BB0_1484; MIPS32-NEXT: nop85; MIPS32-NEXT: # %bb.13: # %pre.PHI.286; MIPS32-NEXT: j $BB0_1587; MIPS32-NEXT: nop88; MIPS32-NEXT: $BB0_14: # %b.PHI.2.089; MIPS32-NEXT: lw $1, 32($sp) # 4-byte Folded Reload90; MIPS32-NEXT: lw $1, 0($1)91; MIPS32-NEXT: sw $1, 4($sp) # 4-byte Folded Spill92; MIPS32-NEXT: j $BB0_1693; MIPS32-NEXT: nop94; MIPS32-NEXT: $BB0_15: # %b.PHI.2.195; MIPS32-NEXT: lw $1, 36($sp) # 4-byte Folded Reload96; MIPS32-NEXT: lw $1, 0($1)97; MIPS32-NEXT: sw $1, 4($sp) # 4-byte Folded Spill98; MIPS32-NEXT: j $BB0_1699; MIPS32-NEXT: nop100; MIPS32-NEXT: $BB0_16: # %b.PHI.2101; MIPS32-NEXT: lw $1, 24($sp) # 4-byte Folded Reload102; MIPS32-NEXT: lw $2, 4($sp) # 4-byte Folded Reload103; MIPS32-NEXT: sw $2, 0($sp) # 4-byte Folded Spill104; MIPS32-NEXT: andi $1, $1, 1105; MIPS32-NEXT: sw $2, 12($sp) # 4-byte Folded Spill106; MIPS32-NEXT: bnez $1, $BB0_19107; MIPS32-NEXT: nop108; MIPS32-NEXT: # %bb.17: # %b.PHI.2109; MIPS32-NEXT: j $BB0_18110; MIPS32-NEXT: nop111; MIPS32-NEXT: $BB0_18: # %b.PHI.2.end112; MIPS32-NEXT: lw $1, 0($sp) # 4-byte Folded Reload113; MIPS32-NEXT: lw $2, 44($sp) # 4-byte Folded Reload114; MIPS32-NEXT: sw $1, 0($2)115; MIPS32-NEXT: addiu $sp, $sp, 48116; MIPS32-NEXT: jr $ra117; MIPS32-NEXT: nop118; MIPS32-NEXT: $BB0_19: # %b.PHI.3119; MIPS32-NEXT: lw $2, 44($sp) # 4-byte Folded Reload120; MIPS32-NEXT: lw $3, 24($sp) # 4-byte Folded Reload121; MIPS32-NEXT: lw $5, 28($sp) # 4-byte Folded Reload122; MIPS32-NEXT: lw $1, 12($sp) # 4-byte Folded Reload123; MIPS32-NEXT: move $4, $1124; MIPS32-NEXT: andi $5, $5, 1125; MIPS32-NEXT: movn $4, $1, $5126; MIPS32-NEXT: andi $5, $3, 1127; MIPS32-NEXT: move $3, $1128; MIPS32-NEXT: movn $3, $4, $5129; MIPS32-NEXT: sw $3, 0($2)130; MIPS32-NEXT: sw $1, 0($2)131; MIPS32-NEXT: addiu $sp, $sp, 48132; MIPS32-NEXT: jr $ra133; MIPS32-NEXT: nop134entry:135 br i1 %cnd0, label %pre.PHI.2, label %pre.PHI.1136 137pre.PHI.1:138 br i1 %cnd1, label %b.PHI.1.1, label %pre.PHI.1.0139 140pre.PHI.1.0:141 br i1 %cnd2, label %b.PHI.1.2, label %b.PHI.1.0142 143b.PHI.1.0:144 %phi1.0 = load i32, ptr %a145 br label %b.PHI.1146 147b.PHI.1.1:148 %phi1.1 = load i32, ptr %b149 br label %b.PHI.1150 151b.PHI.1.2:152 %phi1.2 = load i32, ptr %c153 br label %b.PHI.1154 155b.PHI.1:156 %phi1 = phi i32 [ %phi1.0, %b.PHI.1.0 ], [ %phi1.1, %b.PHI.1.1 ], [ %phi1.2, %b.PHI.1.2 ]157 br i1 %cnd2, label %b.PHI.1.end, label %b.PHI.3158 159b.PHI.1.end:160 store i32 %phi1, ptr %result161 ret void162 163pre.PHI.2:164 br i1 %cnd0, label %b.PHI.2.0, label %b.PHI.2.1165 166b.PHI.2.0:167 %phi2.0 = load i32, ptr %a168 br label %b.PHI.2169 170b.PHI.2.1:171 %phi2.1 = load i32, ptr %b172 br label %b.PHI.2173 174b.PHI.2:175 %phi2 = phi i32 [ %phi2.0, %b.PHI.2.0 ], [ %phi2.1, %b.PHI.2.1 ]176 br i1 %cnd1, label %b.PHI.3, label %b.PHI.2.end177 178b.PHI.2.end:179 store i32 %phi2, ptr %result180 ret void181 182b.PHI.3:183 %phi3 = phi i32 [ %phi2, %b.PHI.2], [ %phi1, %b.PHI.1 ]184 %phi4 = phi i32 [ %phi2, %b.PHI.2], [ %phi1, %b.PHI.1 ]185 %sel_1.2 = select i1 %cnd2, i32 %phi3, i32 %phi4186 %sel_3_1.2 = select i1 %cnd1, i32 %sel_1.2, i32 %phi3187 store i32 %sel_3_1.2, ptr %result188 store i32 %phi3, ptr %result189 ret void190 191}192 193define void @long_chain_i32_in_gpr(i1 %cnd0, i1 %cnd1, i1 %cnd2, ptr %a, ptr %b, ptr %c, ptr %result) {194; MIPS32-LABEL: long_chain_i32_in_gpr:195; MIPS32: # %bb.0: # %entry196; MIPS32-NEXT: addiu $sp, $sp, -56197; MIPS32-NEXT: .cfi_def_cfa_offset 56198; MIPS32-NEXT: sw $4, 24($sp) # 4-byte Folded Spill199; MIPS32-NEXT: sw $5, 28($sp) # 4-byte Folded Spill200; MIPS32-NEXT: sw $6, 32($sp) # 4-byte Folded Spill201; MIPS32-NEXT: sw $7, 36($sp) # 4-byte Folded Spill202; MIPS32-NEXT: addiu $1, $sp, 72203; MIPS32-NEXT: lw $1, 0($1)204; MIPS32-NEXT: sw $1, 40($sp) # 4-byte Folded Spill205; MIPS32-NEXT: addiu $1, $sp, 76206; MIPS32-NEXT: lw $1, 0($1)207; MIPS32-NEXT: sw $1, 44($sp) # 4-byte Folded Spill208; MIPS32-NEXT: addiu $1, $sp, 80209; MIPS32-NEXT: lw $1, 0($1)210; MIPS32-NEXT: sw $1, 48($sp) # 4-byte Folded Spill211; MIPS32-NEXT: ori $1, $zero, 0212; MIPS32-NEXT: sw $1, 52($sp) # 4-byte Folded Spill213; MIPS32-NEXT: andi $1, $4, 1214; MIPS32-NEXT: bnez $1, $BB1_12215; MIPS32-NEXT: nop216; MIPS32-NEXT: # %bb.1: # %entry217; MIPS32-NEXT: j $BB1_2218; MIPS32-NEXT: nop219; MIPS32-NEXT: $BB1_2: # %pre.PHI.1220; MIPS32-NEXT: lw $1, 28($sp) # 4-byte Folded Reload221; MIPS32-NEXT: andi $1, $1, 1222; MIPS32-NEXT: bnez $1, $BB1_7223; MIPS32-NEXT: nop224; MIPS32-NEXT: # %bb.3: # %pre.PHI.1225; MIPS32-NEXT: j $BB1_4226; MIPS32-NEXT: nop227; MIPS32-NEXT: $BB1_4: # %pre.PHI.1.0228; MIPS32-NEXT: lw $1, 32($sp) # 4-byte Folded Reload229; MIPS32-NEXT: andi $1, $1, 1230; MIPS32-NEXT: bnez $1, $BB1_8231; MIPS32-NEXT: nop232; MIPS32-NEXT: # %bb.5: # %pre.PHI.1.0233; MIPS32-NEXT: j $BB1_6234; MIPS32-NEXT: nop235; MIPS32-NEXT: $BB1_6: # %b.PHI.1.0236; MIPS32-NEXT: lw $1, 36($sp) # 4-byte Folded Reload237; MIPS32-NEXT: lw $1, 0($1)238; MIPS32-NEXT: sw $1, 20($sp) # 4-byte Folded Spill239; MIPS32-NEXT: j $BB1_9240; MIPS32-NEXT: nop241; MIPS32-NEXT: $BB1_7: # %b.PHI.1.1242; MIPS32-NEXT: lw $1, 40($sp) # 4-byte Folded Reload243; MIPS32-NEXT: lw $1, 0($1)244; MIPS32-NEXT: sw $1, 20($sp) # 4-byte Folded Spill245; MIPS32-NEXT: j $BB1_9246; MIPS32-NEXT: nop247; MIPS32-NEXT: $BB1_8: # %b.PHI.1.2248; MIPS32-NEXT: lw $1, 44($sp) # 4-byte Folded Reload249; MIPS32-NEXT: lw $1, 0($1)250; MIPS32-NEXT: sw $1, 20($sp) # 4-byte Folded Spill251; MIPS32-NEXT: j $BB1_9252; MIPS32-NEXT: nop253; MIPS32-NEXT: $BB1_9: # %b.PHI.1254; MIPS32-NEXT: lw $2, 52($sp) # 4-byte Folded Reload255; MIPS32-NEXT: lw $1, 32($sp) # 4-byte Folded Reload256; MIPS32-NEXT: lw $3, 20($sp) # 4-byte Folded Reload257; MIPS32-NEXT: sw $3, 8($sp) # 4-byte Folded Spill258; MIPS32-NEXT: andi $1, $1, 1259; MIPS32-NEXT: sw $3, 12($sp) # 4-byte Folded Spill260; MIPS32-NEXT: sw $2, 16($sp) # 4-byte Folded Spill261; MIPS32-NEXT: bnez $1, $BB1_11262; MIPS32-NEXT: nop263; MIPS32-NEXT: # %bb.10: # %b.PHI.1264; MIPS32-NEXT: j $BB1_19265; MIPS32-NEXT: nop266; MIPS32-NEXT: $BB1_11: # %b.PHI.1.end267; MIPS32-NEXT: lw $1, 8($sp) # 4-byte Folded Reload268; MIPS32-NEXT: lw $2, 48($sp) # 4-byte Folded Reload269; MIPS32-NEXT: sw $1, 0($2)270; MIPS32-NEXT: addiu $sp, $sp, 56271; MIPS32-NEXT: jr $ra272; MIPS32-NEXT: nop273; MIPS32-NEXT: $BB1_12: # %pre.PHI.2274; MIPS32-NEXT: lw $1, 24($sp) # 4-byte Folded Reload275; MIPS32-NEXT: andi $1, $1, 1276; MIPS32-NEXT: bnez $1, $BB1_14277; MIPS32-NEXT: nop278; MIPS32-NEXT: # %bb.13: # %pre.PHI.2279; MIPS32-NEXT: j $BB1_15280; MIPS32-NEXT: nop281; MIPS32-NEXT: $BB1_14: # %b.PHI.2.0282; MIPS32-NEXT: lw $1, 36($sp) # 4-byte Folded Reload283; MIPS32-NEXT: lw $1, 0($1)284; MIPS32-NEXT: sw $1, 4($sp) # 4-byte Folded Spill285; MIPS32-NEXT: j $BB1_16286; MIPS32-NEXT: nop287; MIPS32-NEXT: $BB1_15: # %b.PHI.2.1288; MIPS32-NEXT: lw $1, 40($sp) # 4-byte Folded Reload289; MIPS32-NEXT: lw $1, 0($1)290; MIPS32-NEXT: sw $1, 4($sp) # 4-byte Folded Spill291; MIPS32-NEXT: j $BB1_16292; MIPS32-NEXT: nop293; MIPS32-NEXT: $BB1_16: # %b.PHI.2294; MIPS32-NEXT: lw $1, 28($sp) # 4-byte Folded Reload295; MIPS32-NEXT: lw $2, 4($sp) # 4-byte Folded Reload296; MIPS32-NEXT: sw $2, 0($sp) # 4-byte Folded Spill297; MIPS32-NEXT: andi $1, $1, 1298; MIPS32-NEXT: move $3, $2299; MIPS32-NEXT: sw $3, 12($sp) # 4-byte Folded Spill300; MIPS32-NEXT: sw $2, 16($sp) # 4-byte Folded Spill301; MIPS32-NEXT: bnez $1, $BB1_19302; MIPS32-NEXT: nop303; MIPS32-NEXT: # %bb.17: # %b.PHI.2304; MIPS32-NEXT: j $BB1_18305; MIPS32-NEXT: nop306; MIPS32-NEXT: $BB1_18: # %b.PHI.2.end307; MIPS32-NEXT: lw $1, 0($sp) # 4-byte Folded Reload308; MIPS32-NEXT: lw $2, 48($sp) # 4-byte Folded Reload309; MIPS32-NEXT: sw $1, 0($2)310; MIPS32-NEXT: addiu $sp, $sp, 56311; MIPS32-NEXT: jr $ra312; MIPS32-NEXT: nop313; MIPS32-NEXT: $BB1_19: # %b.PHI.3314; MIPS32-NEXT: lw $2, 48($sp) # 4-byte Folded Reload315; MIPS32-NEXT: lw $3, 28($sp) # 4-byte Folded Reload316; MIPS32-NEXT: lw $5, 32($sp) # 4-byte Folded Reload317; MIPS32-NEXT: lw $1, 12($sp) # 4-byte Folded Reload318; MIPS32-NEXT: lw $4, 16($sp) # 4-byte Folded Reload319; MIPS32-NEXT: andi $5, $5, 1320; MIPS32-NEXT: movn $4, $1, $5321; MIPS32-NEXT: andi $5, $3, 1322; MIPS32-NEXT: move $3, $1323; MIPS32-NEXT: movn $3, $4, $5324; MIPS32-NEXT: sw $3, 0($2)325; MIPS32-NEXT: sw $1, 0($2)326; MIPS32-NEXT: addiu $sp, $sp, 56327; MIPS32-NEXT: jr $ra328; MIPS32-NEXT: nop329entry:330 br i1 %cnd0, label %pre.PHI.2, label %pre.PHI.1331 332pre.PHI.1:333 br i1 %cnd1, label %b.PHI.1.1, label %pre.PHI.1.0334 335pre.PHI.1.0:336 br i1 %cnd2, label %b.PHI.1.2, label %b.PHI.1.0337 338b.PHI.1.0:339 %phi1.0 = load i32, ptr %a340 br label %b.PHI.1341 342b.PHI.1.1:343 %phi1.1 = load i32, ptr %b344 br label %b.PHI.1345 346b.PHI.1.2:347 %phi1.2 = load i32, ptr %c348 br label %b.PHI.1349 350b.PHI.1:351 %phi1 = phi i32 [ %phi1.0, %b.PHI.1.0 ], [ %phi1.1, %b.PHI.1.1 ], [ %phi1.2, %b.PHI.1.2 ]352 br i1 %cnd2, label %b.PHI.1.end, label %b.PHI.3353 354b.PHI.1.end:355 store i32 %phi1, ptr %result356 ret void357 358pre.PHI.2:359 br i1 %cnd0, label %b.PHI.2.0, label %b.PHI.2.1360 361b.PHI.2.0:362 %phi2.0 = load i32, ptr %a363 br label %b.PHI.2364 365b.PHI.2.1:366 %phi2.1 = load i32, ptr %b367 br label %b.PHI.2368 369b.PHI.2:370 %phi2 = phi i32 [ %phi2.0, %b.PHI.2.0 ], [ %phi2.1, %b.PHI.2.1 ]371 br i1 %cnd1, label %b.PHI.3, label %b.PHI.2.end372 373b.PHI.2.end:374 store i32 %phi2, ptr %result375 ret void376 377b.PHI.3:378 %phi3 = phi i32 [ %phi2, %b.PHI.2], [ %phi1, %b.PHI.1 ]379 %phi4 = phi i32 [ %phi2, %b.PHI.2], [ 0, %b.PHI.1 ]380 %sel_1.2 = select i1 %cnd2, i32 %phi3, i32 %phi4381 %sel_3_1.2 = select i1 %cnd1, i32 %sel_1.2, i32 %phi3382 store i32 %sel_3_1.2, ptr %result383 store i32 %phi3, ptr %result384 ret void385}386 387define void @long_chain_ambiguous_float_in_fpr(i1 %cnd0, i1 %cnd1, i1 %cnd2, ptr %a, ptr %b, ptr %c, ptr %result) {388; MIPS32-LABEL: long_chain_ambiguous_float_in_fpr:389; MIPS32: # %bb.0: # %entry390; MIPS32-NEXT: addiu $sp, $sp, -48391; MIPS32-NEXT: .cfi_def_cfa_offset 48392; MIPS32-NEXT: sw $4, 20($sp) # 4-byte Folded Spill393; MIPS32-NEXT: sw $5, 24($sp) # 4-byte Folded Spill394; MIPS32-NEXT: sw $6, 28($sp) # 4-byte Folded Spill395; MIPS32-NEXT: sw $7, 32($sp) # 4-byte Folded Spill396; MIPS32-NEXT: addiu $1, $sp, 64397; MIPS32-NEXT: lw $1, 0($1)398; MIPS32-NEXT: sw $1, 36($sp) # 4-byte Folded Spill399; MIPS32-NEXT: addiu $1, $sp, 68400; MIPS32-NEXT: lw $1, 0($1)401; MIPS32-NEXT: sw $1, 40($sp) # 4-byte Folded Spill402; MIPS32-NEXT: addiu $1, $sp, 72403; MIPS32-NEXT: lw $1, 0($1)404; MIPS32-NEXT: sw $1, 44($sp) # 4-byte Folded Spill405; MIPS32-NEXT: andi $1, $4, 1406; MIPS32-NEXT: bnez $1, $BB2_12407; MIPS32-NEXT: nop408; MIPS32-NEXT: # %bb.1: # %entry409; MIPS32-NEXT: j $BB2_2410; MIPS32-NEXT: nop411; MIPS32-NEXT: $BB2_2: # %pre.PHI.1412; MIPS32-NEXT: lw $1, 24($sp) # 4-byte Folded Reload413; MIPS32-NEXT: andi $1, $1, 1414; MIPS32-NEXT: bnez $1, $BB2_7415; MIPS32-NEXT: nop416; MIPS32-NEXT: # %bb.3: # %pre.PHI.1417; MIPS32-NEXT: j $BB2_4418; MIPS32-NEXT: nop419; MIPS32-NEXT: $BB2_4: # %pre.PHI.1.0420; MIPS32-NEXT: lw $1, 28($sp) # 4-byte Folded Reload421; MIPS32-NEXT: andi $1, $1, 1422; MIPS32-NEXT: bnez $1, $BB2_8423; MIPS32-NEXT: nop424; MIPS32-NEXT: # %bb.5: # %pre.PHI.1.0425; MIPS32-NEXT: j $BB2_6426; MIPS32-NEXT: nop427; MIPS32-NEXT: $BB2_6: # %b.PHI.1.0428; MIPS32-NEXT: lw $1, 32($sp) # 4-byte Folded Reload429; MIPS32-NEXT: lw $1, 0($1)430; MIPS32-NEXT: sw $1, 16($sp) # 4-byte Folded Spill431; MIPS32-NEXT: j $BB2_9432; MIPS32-NEXT: nop433; MIPS32-NEXT: $BB2_7: # %b.PHI.1.1434; MIPS32-NEXT: lw $1, 36($sp) # 4-byte Folded Reload435; MIPS32-NEXT: lw $1, 0($1)436; MIPS32-NEXT: sw $1, 16($sp) # 4-byte Folded Spill437; MIPS32-NEXT: j $BB2_9438; MIPS32-NEXT: nop439; MIPS32-NEXT: $BB2_8: # %b.PHI.1.2440; MIPS32-NEXT: lw $1, 40($sp) # 4-byte Folded Reload441; MIPS32-NEXT: lw $1, 0($1)442; MIPS32-NEXT: sw $1, 16($sp) # 4-byte Folded Spill443; MIPS32-NEXT: j $BB2_9444; MIPS32-NEXT: nop445; MIPS32-NEXT: $BB2_9: # %b.PHI.1446; MIPS32-NEXT: lw $1, 28($sp) # 4-byte Folded Reload447; MIPS32-NEXT: lw $2, 16($sp) # 4-byte Folded Reload448; MIPS32-NEXT: sw $2, 8($sp) # 4-byte Folded Spill449; MIPS32-NEXT: andi $1, $1, 1450; MIPS32-NEXT: sw $2, 12($sp) # 4-byte Folded Spill451; MIPS32-NEXT: bnez $1, $BB2_11452; MIPS32-NEXT: nop453; MIPS32-NEXT: # %bb.10: # %b.PHI.1454; MIPS32-NEXT: j $BB2_19455; MIPS32-NEXT: nop456; MIPS32-NEXT: $BB2_11: # %b.PHI.1.end457; MIPS32-NEXT: lw $1, 8($sp) # 4-byte Folded Reload458; MIPS32-NEXT: lw $2, 44($sp) # 4-byte Folded Reload459; MIPS32-NEXT: sw $1, 0($2)460; MIPS32-NEXT: addiu $sp, $sp, 48461; MIPS32-NEXT: jr $ra462; MIPS32-NEXT: nop463; MIPS32-NEXT: $BB2_12: # %pre.PHI.2464; MIPS32-NEXT: lw $1, 20($sp) # 4-byte Folded Reload465; MIPS32-NEXT: andi $1, $1, 1466; MIPS32-NEXT: bnez $1, $BB2_14467; MIPS32-NEXT: nop468; MIPS32-NEXT: # %bb.13: # %pre.PHI.2469; MIPS32-NEXT: j $BB2_15470; MIPS32-NEXT: nop471; MIPS32-NEXT: $BB2_14: # %b.PHI.2.0472; MIPS32-NEXT: lw $1, 32($sp) # 4-byte Folded Reload473; MIPS32-NEXT: lw $1, 0($1)474; MIPS32-NEXT: sw $1, 4($sp) # 4-byte Folded Spill475; MIPS32-NEXT: j $BB2_16476; MIPS32-NEXT: nop477; MIPS32-NEXT: $BB2_15: # %b.PHI.2.1478; MIPS32-NEXT: lw $1, 36($sp) # 4-byte Folded Reload479; MIPS32-NEXT: lw $1, 0($1)480; MIPS32-NEXT: sw $1, 4($sp) # 4-byte Folded Spill481; MIPS32-NEXT: j $BB2_16482; MIPS32-NEXT: nop483; MIPS32-NEXT: $BB2_16: # %b.PHI.2484; MIPS32-NEXT: lw $1, 24($sp) # 4-byte Folded Reload485; MIPS32-NEXT: lw $2, 4($sp) # 4-byte Folded Reload486; MIPS32-NEXT: sw $2, 0($sp) # 4-byte Folded Spill487; MIPS32-NEXT: andi $1, $1, 1488; MIPS32-NEXT: sw $2, 12($sp) # 4-byte Folded Spill489; MIPS32-NEXT: bnez $1, $BB2_19490; MIPS32-NEXT: nop491; MIPS32-NEXT: # %bb.17: # %b.PHI.2492; MIPS32-NEXT: j $BB2_18493; MIPS32-NEXT: nop494; MIPS32-NEXT: $BB2_18: # %b.PHI.2.end495; MIPS32-NEXT: lw $1, 0($sp) # 4-byte Folded Reload496; MIPS32-NEXT: lw $2, 44($sp) # 4-byte Folded Reload497; MIPS32-NEXT: sw $1, 0($2)498; MIPS32-NEXT: addiu $sp, $sp, 48499; MIPS32-NEXT: jr $ra500; MIPS32-NEXT: nop501; MIPS32-NEXT: $BB2_19: # %b.PHI.3502; MIPS32-NEXT: lw $2, 44($sp) # 4-byte Folded Reload503; MIPS32-NEXT: lw $3, 24($sp) # 4-byte Folded Reload504; MIPS32-NEXT: lw $5, 28($sp) # 4-byte Folded Reload505; MIPS32-NEXT: lw $1, 12($sp) # 4-byte Folded Reload506; MIPS32-NEXT: move $4, $1507; MIPS32-NEXT: andi $5, $5, 1508; MIPS32-NEXT: movn $4, $1, $5509; MIPS32-NEXT: andi $5, $3, 1510; MIPS32-NEXT: move $3, $1511; MIPS32-NEXT: movn $3, $4, $5512; MIPS32-NEXT: sw $3, 0($2)513; MIPS32-NEXT: sw $1, 0($2)514; MIPS32-NEXT: addiu $sp, $sp, 48515; MIPS32-NEXT: jr $ra516; MIPS32-NEXT: nop517entry:518 br i1 %cnd0, label %pre.PHI.2, label %pre.PHI.1519 520pre.PHI.1:521 br i1 %cnd1, label %b.PHI.1.1, label %pre.PHI.1.0522 523pre.PHI.1.0:524 br i1 %cnd2, label %b.PHI.1.2, label %b.PHI.1.0525 526b.PHI.1.0:527 %phi1.0 = load float, ptr %a528 br label %b.PHI.1529 530b.PHI.1.1:531 %phi1.1 = load float, ptr %b532 br label %b.PHI.1533 534b.PHI.1.2:535 %phi1.2 = load float, ptr %c536 br label %b.PHI.1537 538b.PHI.1:539 %phi1 = phi float [ %phi1.0, %b.PHI.1.0 ], [ %phi1.1, %b.PHI.1.1 ], [ %phi1.2, %b.PHI.1.2 ]540 br i1 %cnd2, label %b.PHI.1.end, label %b.PHI.3541 542b.PHI.1.end:543 store float %phi1, ptr %result544 ret void545 546pre.PHI.2:547 br i1 %cnd0, label %b.PHI.2.0, label %b.PHI.2.1548 549b.PHI.2.0:550 %phi2.0 = load float, ptr %a551 br label %b.PHI.2552 553b.PHI.2.1:554 %phi2.1 = load float, ptr %b555 br label %b.PHI.2556 557b.PHI.2:558 %phi2 = phi float [ %phi2.0, %b.PHI.2.0 ], [ %phi2.1, %b.PHI.2.1 ]559 br i1 %cnd1, label %b.PHI.3, label %b.PHI.2.end560 561b.PHI.2.end:562 store float %phi2, ptr %result563 ret void564 565b.PHI.3:566 %phi3 = phi float [ %phi2, %b.PHI.2], [ %phi1, %b.PHI.1 ]567 %phi4 = phi float [ %phi2, %b.PHI.2], [ %phi1, %b.PHI.1 ]568 %sel_1.2 = select i1 %cnd2, float %phi3, float %phi4569 %sel_3_1.2 = select i1 %cnd1, float %sel_1.2, float %phi3570 store float %sel_3_1.2, ptr %result571 store float %phi3, ptr %result572 ret void573}574 575 576define void @long_chain_float_in_fpr(i1 %cnd0, i1 %cnd1, i1 %cnd2, ptr %a, ptr %b, ptr %c, ptr %result) {577; MIPS32-LABEL: long_chain_float_in_fpr:578; MIPS32: # %bb.0: # %entry579; MIPS32-NEXT: addiu $sp, $sp, -56580; MIPS32-NEXT: .cfi_def_cfa_offset 56581; MIPS32-NEXT: sw $4, 24($sp) # 4-byte Folded Spill582; MIPS32-NEXT: sw $5, 28($sp) # 4-byte Folded Spill583; MIPS32-NEXT: sw $6, 32($sp) # 4-byte Folded Spill584; MIPS32-NEXT: sw $7, 36($sp) # 4-byte Folded Spill585; MIPS32-NEXT: addiu $1, $sp, 72586; MIPS32-NEXT: lw $1, 0($1)587; MIPS32-NEXT: sw $1, 40($sp) # 4-byte Folded Spill588; MIPS32-NEXT: addiu $1, $sp, 76589; MIPS32-NEXT: lw $1, 0($1)590; MIPS32-NEXT: sw $1, 44($sp) # 4-byte Folded Spill591; MIPS32-NEXT: addiu $1, $sp, 80592; MIPS32-NEXT: lw $1, 0($1)593; MIPS32-NEXT: sw $1, 48($sp) # 4-byte Folded Spill594; MIPS32-NEXT: ori $1, $zero, 0595; MIPS32-NEXT: mtc1 $1, $f0596; MIPS32-NEXT: swc1 $f0, 52($sp) # 4-byte Folded Spill597; MIPS32-NEXT: andi $1, $4, 1598; MIPS32-NEXT: bnez $1, $BB3_12599; MIPS32-NEXT: nop600; MIPS32-NEXT: # %bb.1: # %entry601; MIPS32-NEXT: j $BB3_2602; MIPS32-NEXT: nop603; MIPS32-NEXT: $BB3_2: # %pre.PHI.1604; MIPS32-NEXT: lw $1, 28($sp) # 4-byte Folded Reload605; MIPS32-NEXT: andi $1, $1, 1606; MIPS32-NEXT: bnez $1, $BB3_7607; MIPS32-NEXT: nop608; MIPS32-NEXT: # %bb.3: # %pre.PHI.1609; MIPS32-NEXT: j $BB3_4610; MIPS32-NEXT: nop611; MIPS32-NEXT: $BB3_4: # %pre.PHI.1.0612; MIPS32-NEXT: lw $1, 32($sp) # 4-byte Folded Reload613; MIPS32-NEXT: andi $1, $1, 1614; MIPS32-NEXT: bnez $1, $BB3_8615; MIPS32-NEXT: nop616; MIPS32-NEXT: # %bb.5: # %pre.PHI.1.0617; MIPS32-NEXT: j $BB3_6618; MIPS32-NEXT: nop619; MIPS32-NEXT: $BB3_6: # %b.PHI.1.0620; MIPS32-NEXT: lw $1, 36($sp) # 4-byte Folded Reload621; MIPS32-NEXT: lwc1 $f0, 0($1)622; MIPS32-NEXT: swc1 $f0, 20($sp) # 4-byte Folded Spill623; MIPS32-NEXT: j $BB3_9624; MIPS32-NEXT: nop625; MIPS32-NEXT: $BB3_7: # %b.PHI.1.1626; MIPS32-NEXT: lw $1, 40($sp) # 4-byte Folded Reload627; MIPS32-NEXT: lwc1 $f0, 0($1)628; MIPS32-NEXT: swc1 $f0, 20($sp) # 4-byte Folded Spill629; MIPS32-NEXT: j $BB3_9630; MIPS32-NEXT: nop631; MIPS32-NEXT: $BB3_8: # %b.PHI.1.2632; MIPS32-NEXT: lw $1, 44($sp) # 4-byte Folded Reload633; MIPS32-NEXT: lwc1 $f0, 0($1)634; MIPS32-NEXT: swc1 $f0, 20($sp) # 4-byte Folded Spill635; MIPS32-NEXT: j $BB3_9636; MIPS32-NEXT: nop637; MIPS32-NEXT: $BB3_9: # %b.PHI.1638; MIPS32-NEXT: lwc1 $f0, 52($sp) # 4-byte Folded Reload639; MIPS32-NEXT: lw $1, 32($sp) # 4-byte Folded Reload640; MIPS32-NEXT: lwc1 $f1, 20($sp) # 4-byte Folded Reload641; MIPS32-NEXT: swc1 $f1, 8($sp) # 4-byte Folded Spill642; MIPS32-NEXT: andi $1, $1, 1643; MIPS32-NEXT: swc1 $f1, 12($sp) # 4-byte Folded Spill644; MIPS32-NEXT: swc1 $f0, 16($sp) # 4-byte Folded Spill645; MIPS32-NEXT: bnez $1, $BB3_11646; MIPS32-NEXT: nop647; MIPS32-NEXT: # %bb.10: # %b.PHI.1648; MIPS32-NEXT: j $BB3_19649; MIPS32-NEXT: nop650; MIPS32-NEXT: $BB3_11: # %b.PHI.1.end651; MIPS32-NEXT: lwc1 $f0, 8($sp) # 4-byte Folded Reload652; MIPS32-NEXT: lw $1, 48($sp) # 4-byte Folded Reload653; MIPS32-NEXT: swc1 $f0, 0($1)654; MIPS32-NEXT: addiu $sp, $sp, 56655; MIPS32-NEXT: jr $ra656; MIPS32-NEXT: nop657; MIPS32-NEXT: $BB3_12: # %pre.PHI.2658; MIPS32-NEXT: lw $1, 24($sp) # 4-byte Folded Reload659; MIPS32-NEXT: andi $1, $1, 1660; MIPS32-NEXT: bnez $1, $BB3_14661; MIPS32-NEXT: nop662; MIPS32-NEXT: # %bb.13: # %pre.PHI.2663; MIPS32-NEXT: j $BB3_15664; MIPS32-NEXT: nop665; MIPS32-NEXT: $BB3_14: # %b.PHI.2.0666; MIPS32-NEXT: lw $1, 36($sp) # 4-byte Folded Reload667; MIPS32-NEXT: lwc1 $f0, 0($1)668; MIPS32-NEXT: swc1 $f0, 4($sp) # 4-byte Folded Spill669; MIPS32-NEXT: j $BB3_16670; MIPS32-NEXT: nop671; MIPS32-NEXT: $BB3_15: # %b.PHI.2.1672; MIPS32-NEXT: lw $1, 40($sp) # 4-byte Folded Reload673; MIPS32-NEXT: lwc1 $f0, 0($1)674; MIPS32-NEXT: swc1 $f0, 4($sp) # 4-byte Folded Spill675; MIPS32-NEXT: j $BB3_16676; MIPS32-NEXT: nop677; MIPS32-NEXT: $BB3_16: # %b.PHI.2678; MIPS32-NEXT: lw $1, 28($sp) # 4-byte Folded Reload679; MIPS32-NEXT: lwc1 $f0, 4($sp) # 4-byte Folded Reload680; MIPS32-NEXT: swc1 $f0, 0($sp) # 4-byte Folded Spill681; MIPS32-NEXT: andi $1, $1, 1682; MIPS32-NEXT: mov.s $f1, $f0683; MIPS32-NEXT: swc1 $f1, 12($sp) # 4-byte Folded Spill684; MIPS32-NEXT: swc1 $f0, 16($sp) # 4-byte Folded Spill685; MIPS32-NEXT: bnez $1, $BB3_19686; MIPS32-NEXT: nop687; MIPS32-NEXT: # %bb.17: # %b.PHI.2688; MIPS32-NEXT: j $BB3_18689; MIPS32-NEXT: nop690; MIPS32-NEXT: $BB3_18: # %b.PHI.2.end691; MIPS32-NEXT: lwc1 $f0, 0($sp) # 4-byte Folded Reload692; MIPS32-NEXT: lw $1, 48($sp) # 4-byte Folded Reload693; MIPS32-NEXT: swc1 $f0, 0($1)694; MIPS32-NEXT: addiu $sp, $sp, 56695; MIPS32-NEXT: jr $ra696; MIPS32-NEXT: nop697; MIPS32-NEXT: $BB3_19: # %b.PHI.3698; MIPS32-NEXT: lw $1, 48($sp) # 4-byte Folded Reload699; MIPS32-NEXT: lw $2, 28($sp) # 4-byte Folded Reload700; MIPS32-NEXT: lw $3, 32($sp) # 4-byte Folded Reload701; MIPS32-NEXT: lwc1 $f0, 12($sp) # 4-byte Folded Reload702; MIPS32-NEXT: lwc1 $f2, 16($sp) # 4-byte Folded Reload703; MIPS32-NEXT: andi $3, $3, 1704; MIPS32-NEXT: movn.s $f2, $f0, $3705; MIPS32-NEXT: andi $2, $2, 1706; MIPS32-NEXT: mov.s $f1, $f0707; MIPS32-NEXT: movn.s $f1, $f2, $2708; MIPS32-NEXT: swc1 $f1, 0($1)709; MIPS32-NEXT: swc1 $f0, 0($1)710; MIPS32-NEXT: addiu $sp, $sp, 56711; MIPS32-NEXT: jr $ra712; MIPS32-NEXT: nop713entry:714 br i1 %cnd0, label %pre.PHI.2, label %pre.PHI.1715 716pre.PHI.1:717 br i1 %cnd1, label %b.PHI.1.1, label %pre.PHI.1.0718 719pre.PHI.1.0:720 br i1 %cnd2, label %b.PHI.1.2, label %b.PHI.1.0721 722b.PHI.1.0:723 %phi1.0 = load float, ptr %a724 br label %b.PHI.1725 726b.PHI.1.1:727 %phi1.1 = load float, ptr %b728 br label %b.PHI.1729 730b.PHI.1.2:731 %phi1.2 = load float, ptr %c732 br label %b.PHI.1733 734b.PHI.1:735 %phi1 = phi float [ %phi1.0, %b.PHI.1.0 ], [ %phi1.1, %b.PHI.1.1 ], [ %phi1.2, %b.PHI.1.2 ]736 br i1 %cnd2, label %b.PHI.1.end, label %b.PHI.3737 738b.PHI.1.end:739 store float %phi1, ptr %result740 ret void741 742pre.PHI.2:743 br i1 %cnd0, label %b.PHI.2.0, label %b.PHI.2.1744 745b.PHI.2.0:746 %phi2.0 = load float, ptr %a747 br label %b.PHI.2748 749b.PHI.2.1:750 %phi2.1 = load float, ptr %b751 br label %b.PHI.2752 753b.PHI.2:754 %phi2 = phi float [ %phi2.0, %b.PHI.2.0 ], [ %phi2.1, %b.PHI.2.1 ]755 br i1 %cnd1, label %b.PHI.3, label %b.PHI.2.end756 757b.PHI.2.end:758 store float %phi2, ptr %result759 ret void760 761b.PHI.3:762 %phi3 = phi float [ %phi2, %b.PHI.2], [ %phi1, %b.PHI.1 ]763 %phi4 = phi float [ %phi2, %b.PHI.2], [ 0.0, %b.PHI.1 ]764 %sel_1.2 = select i1 %cnd2, float %phi3, float %phi4765 %sel_3_1.2 = select i1 %cnd1, float %sel_1.2, float %phi3766 store float %sel_3_1.2, ptr %result767 store float %phi3, ptr %result768 ret void769}770 771