804 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_i64_in_fpr(i1 %cnd0, i1 %cnd1, i1 %cnd2, ptr %a, ptr %b, ptr %c, ptr %result) {5; MIPS32-LABEL: long_chain_ambiguous_i64_in_fpr:6; MIPS32: # %bb.0: # %entry7; MIPS32-NEXT: addiu $sp, $sp, -728; MIPS32-NEXT: .cfi_def_cfa_offset 729; MIPS32-NEXT: sw $4, 44($sp) # 4-byte Folded Spill10; MIPS32-NEXT: sw $5, 48($sp) # 4-byte Folded Spill11; MIPS32-NEXT: sw $6, 52($sp) # 4-byte Folded Spill12; MIPS32-NEXT: sw $7, 56($sp) # 4-byte Folded Spill13; MIPS32-NEXT: addiu $1, $sp, 8814; MIPS32-NEXT: lw $1, 0($1)15; MIPS32-NEXT: sw $1, 60($sp) # 4-byte Folded Spill16; MIPS32-NEXT: addiu $1, $sp, 9217; MIPS32-NEXT: lw $1, 0($1)18; MIPS32-NEXT: sw $1, 64($sp) # 4-byte Folded Spill19; MIPS32-NEXT: addiu $1, $sp, 9620; MIPS32-NEXT: lw $1, 0($1)21; MIPS32-NEXT: sw $1, 68($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, 48($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, 52($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, 56($sp) # 4-byte Folded Reload46; MIPS32-NEXT: ldc1 $f0, 0($1)47; MIPS32-NEXT: sdc1 $f0, 32($sp) # 8-byte Folded Spill48; MIPS32-NEXT: j $BB0_949; MIPS32-NEXT: nop50; MIPS32-NEXT: $BB0_7: # %b.PHI.1.151; MIPS32-NEXT: lw $1, 60($sp) # 4-byte Folded Reload52; MIPS32-NEXT: ldc1 $f0, 0($1)53; MIPS32-NEXT: sdc1 $f0, 32($sp) # 8-byte Folded Spill54; MIPS32-NEXT: j $BB0_955; MIPS32-NEXT: nop56; MIPS32-NEXT: $BB0_8: # %b.PHI.1.257; MIPS32-NEXT: lw $1, 64($sp) # 4-byte Folded Reload58; MIPS32-NEXT: ldc1 $f0, 0($1)59; MIPS32-NEXT: sdc1 $f0, 32($sp) # 8-byte Folded Spill60; MIPS32-NEXT: j $BB0_961; MIPS32-NEXT: nop62; MIPS32-NEXT: $BB0_9: # %b.PHI.163; MIPS32-NEXT: lw $1, 52($sp) # 4-byte Folded Reload64; MIPS32-NEXT: ldc1 $f0, 32($sp) # 8-byte Folded Reload65; MIPS32-NEXT: sdc1 $f0, 16($sp) # 8-byte Folded Spill66; MIPS32-NEXT: andi $1, $1, 167; MIPS32-NEXT: sdc1 $f0, 24($sp) # 8-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: ldc1 $f0, 16($sp) # 8-byte Folded Reload75; MIPS32-NEXT: lw $1, 68($sp) # 4-byte Folded Reload76; MIPS32-NEXT: sdc1 $f0, 0($1)77; MIPS32-NEXT: addiu $sp, $sp, 7278; MIPS32-NEXT: jr $ra79; MIPS32-NEXT: nop80; MIPS32-NEXT: $BB0_12: # %pre.PHI.281; MIPS32-NEXT: lw $1, 44($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, 56($sp) # 4-byte Folded Reload90; MIPS32-NEXT: ldc1 $f0, 0($1)91; MIPS32-NEXT: sdc1 $f0, 8($sp) # 8-byte Folded Spill92; MIPS32-NEXT: j $BB0_1693; MIPS32-NEXT: nop94; MIPS32-NEXT: $BB0_15: # %b.PHI.2.195; MIPS32-NEXT: lw $1, 60($sp) # 4-byte Folded Reload96; MIPS32-NEXT: ldc1 $f0, 0($1)97; MIPS32-NEXT: sdc1 $f0, 8($sp) # 8-byte Folded Spill98; MIPS32-NEXT: j $BB0_1699; MIPS32-NEXT: nop100; MIPS32-NEXT: $BB0_16: # %b.PHI.2101; MIPS32-NEXT: lw $1, 48($sp) # 4-byte Folded Reload102; MIPS32-NEXT: ldc1 $f0, 8($sp) # 8-byte Folded Reload103; MIPS32-NEXT: sdc1 $f0, 0($sp) # 8-byte Folded Spill104; MIPS32-NEXT: andi $1, $1, 1105; MIPS32-NEXT: sdc1 $f0, 24($sp) # 8-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: ldc1 $f0, 0($sp) # 8-byte Folded Reload113; MIPS32-NEXT: lw $1, 68($sp) # 4-byte Folded Reload114; MIPS32-NEXT: sdc1 $f0, 0($1)115; MIPS32-NEXT: addiu $sp, $sp, 72116; MIPS32-NEXT: jr $ra117; MIPS32-NEXT: nop118; MIPS32-NEXT: $BB0_19: # %b.PHI.3119; MIPS32-NEXT: lw $1, 68($sp) # 4-byte Folded Reload120; MIPS32-NEXT: lw $2, 48($sp) # 4-byte Folded Reload121; MIPS32-NEXT: lw $3, 52($sp) # 4-byte Folded Reload122; MIPS32-NEXT: ldc1 $f0, 24($sp) # 8-byte Folded Reload123; MIPS32-NEXT: mov.d $f4, $f0124; MIPS32-NEXT: andi $3, $3, 1125; MIPS32-NEXT: movn.d $f4, $f0, $3126; MIPS32-NEXT: andi $2, $2, 1127; MIPS32-NEXT: mov.d $f2, $f0128; MIPS32-NEXT: movn.d $f2, $f4, $2129; MIPS32-NEXT: sdc1 $f2, 0($1)130; MIPS32-NEXT: sdc1 $f0, 0($1)131; MIPS32-NEXT: addiu $sp, $sp, 72132; 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 i64, ptr %a145 br label %b.PHI.1146 147b.PHI.1.1:148 %phi1.1 = load i64, ptr %b149 br label %b.PHI.1150 151b.PHI.1.2:152 %phi1.2 = load i64, ptr %c153 br label %b.PHI.1154 155b.PHI.1:156 %phi1 = phi i64 [ %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 i64 %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 i64, ptr %a168 br label %b.PHI.2169 170b.PHI.2.1:171 %phi2.1 = load i64, ptr %b172 br label %b.PHI.2173 174b.PHI.2:175 %phi2 = phi i64 [ %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 i64 %phi2, ptr %result180 ret void181 182b.PHI.3:183 %phi3 = phi i64 [ %phi2, %b.PHI.2], [ %phi1, %b.PHI.1 ]184 %phi4 = phi i64 [ %phi2, %b.PHI.2], [ %phi1, %b.PHI.1 ]185 %sel_1.2 = select i1 %cnd2, i64 %phi3, i64 %phi4186 %sel_3_1.2 = select i1 %cnd1, i64 %sel_1.2, i64 %phi3187 store i64 %sel_3_1.2, ptr %result188 store i64 %phi3, ptr %result189 ret void190 191}192 193define void @long_chain_i64_in_gpr(i1 %cnd0, i1 %cnd1, i1 %cnd2, ptr %a, ptr %b, ptr %c, ptr %result) {194; MIPS32-LABEL: long_chain_i64_in_gpr:195; MIPS32: # %bb.0: # %entry196; MIPS32-NEXT: addiu $sp, $sp, -80197; MIPS32-NEXT: .cfi_def_cfa_offset 80198; MIPS32-NEXT: sw $4, 48($sp) # 4-byte Folded Spill199; MIPS32-NEXT: sw $5, 52($sp) # 4-byte Folded Spill200; MIPS32-NEXT: sw $6, 56($sp) # 4-byte Folded Spill201; MIPS32-NEXT: sw $7, 60($sp) # 4-byte Folded Spill202; MIPS32-NEXT: addiu $1, $sp, 96203; MIPS32-NEXT: lw $1, 0($1)204; MIPS32-NEXT: sw $1, 64($sp) # 4-byte Folded Spill205; MIPS32-NEXT: addiu $1, $sp, 100206; MIPS32-NEXT: lw $1, 0($1)207; MIPS32-NEXT: sw $1, 68($sp) # 4-byte Folded Spill208; MIPS32-NEXT: addiu $1, $sp, 104209; MIPS32-NEXT: lw $1, 0($1)210; MIPS32-NEXT: sw $1, 72($sp) # 4-byte Folded Spill211; MIPS32-NEXT: ori $1, $zero, 0212; MIPS32-NEXT: sw $1, 76($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, 52($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, 56($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, 60($sp) # 4-byte Folded Reload237; MIPS32-NEXT: lw $2, 0($1)238; MIPS32-NEXT: lw $1, 4($1)239; MIPS32-NEXT: sw $2, 40($sp) # 4-byte Folded Spill240; MIPS32-NEXT: sw $1, 44($sp) # 4-byte Folded Spill241; MIPS32-NEXT: j $BB1_9242; MIPS32-NEXT: nop243; MIPS32-NEXT: $BB1_7: # %b.PHI.1.1244; MIPS32-NEXT: lw $1, 64($sp) # 4-byte Folded Reload245; MIPS32-NEXT: lw $2, 0($1)246; MIPS32-NEXT: lw $1, 4($1)247; MIPS32-NEXT: sw $2, 40($sp) # 4-byte Folded Spill248; MIPS32-NEXT: sw $1, 44($sp) # 4-byte Folded Spill249; MIPS32-NEXT: j $BB1_9250; MIPS32-NEXT: nop251; MIPS32-NEXT: $BB1_8: # %b.PHI.1.2252; MIPS32-NEXT: lw $1, 68($sp) # 4-byte Folded Reload253; MIPS32-NEXT: lw $2, 0($1)254; MIPS32-NEXT: lw $1, 4($1)255; MIPS32-NEXT: sw $2, 40($sp) # 4-byte Folded Spill256; MIPS32-NEXT: sw $1, 44($sp) # 4-byte Folded Spill257; MIPS32-NEXT: j $BB1_9258; MIPS32-NEXT: nop259; MIPS32-NEXT: $BB1_9: # %b.PHI.1260; MIPS32-NEXT: lw $2, 76($sp) # 4-byte Folded Reload261; MIPS32-NEXT: lw $1, 56($sp) # 4-byte Folded Reload262; MIPS32-NEXT: lw $4, 40($sp) # 4-byte Folded Reload263; MIPS32-NEXT: lw $3, 44($sp) # 4-byte Folded Reload264; MIPS32-NEXT: sw $3, 16($sp) # 4-byte Folded Spill265; MIPS32-NEXT: sw $4, 20($sp) # 4-byte Folded Spill266; MIPS32-NEXT: andi $1, $1, 1267; MIPS32-NEXT: sw $4, 24($sp) # 4-byte Folded Spill268; MIPS32-NEXT: sw $3, 28($sp) # 4-byte Folded Spill269; MIPS32-NEXT: move $3, $2270; MIPS32-NEXT: sw $3, 32($sp) # 4-byte Folded Spill271; MIPS32-NEXT: sw $2, 36($sp) # 4-byte Folded Spill272; MIPS32-NEXT: bnez $1, $BB1_11273; MIPS32-NEXT: nop274; MIPS32-NEXT: # %bb.10: # %b.PHI.1275; MIPS32-NEXT: j $BB1_19276; MIPS32-NEXT: nop277; MIPS32-NEXT: $BB1_11: # %b.PHI.1.end278; MIPS32-NEXT: lw $1, 16($sp) # 4-byte Folded Reload279; MIPS32-NEXT: lw $2, 72($sp) # 4-byte Folded Reload280; MIPS32-NEXT: lw $3, 20($sp) # 4-byte Folded Reload281; MIPS32-NEXT: sw $3, 0($2)282; MIPS32-NEXT: sw $1, 4($2)283; MIPS32-NEXT: addiu $sp, $sp, 80284; MIPS32-NEXT: jr $ra285; MIPS32-NEXT: nop286; MIPS32-NEXT: $BB1_12: # %pre.PHI.2287; MIPS32-NEXT: lw $1, 48($sp) # 4-byte Folded Reload288; MIPS32-NEXT: andi $1, $1, 1289; MIPS32-NEXT: bnez $1, $BB1_14290; MIPS32-NEXT: nop291; MIPS32-NEXT: # %bb.13: # %pre.PHI.2292; MIPS32-NEXT: j $BB1_15293; MIPS32-NEXT: nop294; MIPS32-NEXT: $BB1_14: # %b.PHI.2.0295; MIPS32-NEXT: lw $1, 60($sp) # 4-byte Folded Reload296; MIPS32-NEXT: lw $2, 0($1)297; MIPS32-NEXT: lw $1, 4($1)298; MIPS32-NEXT: sw $2, 8($sp) # 4-byte Folded Spill299; MIPS32-NEXT: sw $1, 12($sp) # 4-byte Folded Spill300; MIPS32-NEXT: j $BB1_16301; MIPS32-NEXT: nop302; MIPS32-NEXT: $BB1_15: # %b.PHI.2.1303; MIPS32-NEXT: lw $1, 64($sp) # 4-byte Folded Reload304; MIPS32-NEXT: lw $2, 0($1)305; MIPS32-NEXT: lw $1, 4($1)306; MIPS32-NEXT: sw $2, 8($sp) # 4-byte Folded Spill307; MIPS32-NEXT: sw $1, 12($sp) # 4-byte Folded Spill308; MIPS32-NEXT: j $BB1_16309; MIPS32-NEXT: nop310; MIPS32-NEXT: $BB1_16: # %b.PHI.2311; MIPS32-NEXT: lw $1, 52($sp) # 4-byte Folded Reload312; MIPS32-NEXT: lw $3, 8($sp) # 4-byte Folded Reload313; MIPS32-NEXT: lw $2, 12($sp) # 4-byte Folded Reload314; MIPS32-NEXT: sw $2, 0($sp) # 4-byte Folded Spill315; MIPS32-NEXT: sw $3, 4($sp) # 4-byte Folded Spill316; MIPS32-NEXT: andi $1, $1, 1317; MIPS32-NEXT: move $4, $3318; MIPS32-NEXT: sw $4, 24($sp) # 4-byte Folded Spill319; MIPS32-NEXT: move $4, $2320; MIPS32-NEXT: sw $4, 28($sp) # 4-byte Folded Spill321; MIPS32-NEXT: sw $3, 32($sp) # 4-byte Folded Spill322; MIPS32-NEXT: sw $2, 36($sp) # 4-byte Folded Spill323; MIPS32-NEXT: bnez $1, $BB1_19324; MIPS32-NEXT: nop325; MIPS32-NEXT: # %bb.17: # %b.PHI.2326; MIPS32-NEXT: j $BB1_18327; MIPS32-NEXT: nop328; MIPS32-NEXT: $BB1_18: # %b.PHI.2.end329; MIPS32-NEXT: lw $1, 0($sp) # 4-byte Folded Reload330; MIPS32-NEXT: lw $2, 72($sp) # 4-byte Folded Reload331; MIPS32-NEXT: lw $3, 4($sp) # 4-byte Folded Reload332; MIPS32-NEXT: sw $3, 0($2)333; MIPS32-NEXT: sw $1, 4($2)334; MIPS32-NEXT: addiu $sp, $sp, 80335; MIPS32-NEXT: jr $ra336; MIPS32-NEXT: nop337; MIPS32-NEXT: $BB1_19: # %b.PHI.3338; MIPS32-NEXT: lw $2, 72($sp) # 4-byte Folded Reload339; MIPS32-NEXT: lw $5, 52($sp) # 4-byte Folded Reload340; MIPS32-NEXT: lw $7, 56($sp) # 4-byte Folded Reload341; MIPS32-NEXT: lw $3, 24($sp) # 4-byte Folded Reload342; MIPS32-NEXT: lw $1, 28($sp) # 4-byte Folded Reload343; MIPS32-NEXT: lw $4, 32($sp) # 4-byte Folded Reload344; MIPS32-NEXT: lw $6, 36($sp) # 4-byte Folded Reload345; MIPS32-NEXT: andi $7, $7, 1346; MIPS32-NEXT: movn $4, $3, $7347; MIPS32-NEXT: movn $6, $1, $7348; MIPS32-NEXT: andi $7, $5, 1349; MIPS32-NEXT: move $5, $3350; MIPS32-NEXT: movn $5, $4, $7351; MIPS32-NEXT: move $4, $1352; MIPS32-NEXT: movn $4, $6, $7353; MIPS32-NEXT: sw $5, 0($2)354; MIPS32-NEXT: sw $4, 4($2)355; MIPS32-NEXT: sw $3, 0($2)356; MIPS32-NEXT: sw $1, 4($2)357; MIPS32-NEXT: addiu $sp, $sp, 80358; MIPS32-NEXT: jr $ra359; MIPS32-NEXT: nop360entry:361 br i1 %cnd0, label %pre.PHI.2, label %pre.PHI.1362 363pre.PHI.1:364 br i1 %cnd1, label %b.PHI.1.1, label %pre.PHI.1.0365 366pre.PHI.1.0:367 br i1 %cnd2, label %b.PHI.1.2, label %b.PHI.1.0368 369b.PHI.1.0:370 %phi1.0 = load i64, ptr %a371 br label %b.PHI.1372 373b.PHI.1.1:374 %phi1.1 = load i64, ptr %b375 br label %b.PHI.1376 377b.PHI.1.2:378 %phi1.2 = load i64, ptr %c379 br label %b.PHI.1380 381b.PHI.1:382 %phi1 = phi i64 [ %phi1.0, %b.PHI.1.0 ], [ %phi1.1, %b.PHI.1.1 ], [ %phi1.2, %b.PHI.1.2 ]383 br i1 %cnd2, label %b.PHI.1.end, label %b.PHI.3384 385b.PHI.1.end:386 store i64 %phi1, ptr %result387 ret void388 389pre.PHI.2:390 br i1 %cnd0, label %b.PHI.2.0, label %b.PHI.2.1391 392b.PHI.2.0:393 %phi2.0 = load i64, ptr %a394 br label %b.PHI.2395 396b.PHI.2.1:397 %phi2.1 = load i64, ptr %b398 br label %b.PHI.2399 400b.PHI.2:401 %phi2 = phi i64 [ %phi2.0, %b.PHI.2.0 ], [ %phi2.1, %b.PHI.2.1 ]402 br i1 %cnd1, label %b.PHI.3, label %b.PHI.2.end403 404b.PHI.2.end:405 store i64 %phi2, ptr %result406 ret void407 408b.PHI.3:409 %phi3 = phi i64 [ %phi2, %b.PHI.2], [ %phi1, %b.PHI.1 ]410 %phi4 = phi i64 [ %phi2, %b.PHI.2], [ 0, %b.PHI.1 ]411 %sel_1.2 = select i1 %cnd2, i64 %phi3, i64 %phi4412 %sel_3_1.2 = select i1 %cnd1, i64 %sel_1.2, i64 %phi3413 store i64 %sel_3_1.2, ptr %result414 store i64 %phi3, ptr %result415 ret void416}417 418define void @long_chain_ambiguous_double_in_fpr(i1 %cnd0, i1 %cnd1, i1 %cnd2, ptr %a, ptr %b, ptr %c, ptr %result) {419; MIPS32-LABEL: long_chain_ambiguous_double_in_fpr:420; MIPS32: # %bb.0: # %entry421; MIPS32-NEXT: addiu $sp, $sp, -72422; MIPS32-NEXT: .cfi_def_cfa_offset 72423; MIPS32-NEXT: sw $4, 44($sp) # 4-byte Folded Spill424; MIPS32-NEXT: sw $5, 48($sp) # 4-byte Folded Spill425; MIPS32-NEXT: sw $6, 52($sp) # 4-byte Folded Spill426; MIPS32-NEXT: sw $7, 56($sp) # 4-byte Folded Spill427; MIPS32-NEXT: addiu $1, $sp, 88428; MIPS32-NEXT: lw $1, 0($1)429; MIPS32-NEXT: sw $1, 60($sp) # 4-byte Folded Spill430; MIPS32-NEXT: addiu $1, $sp, 92431; MIPS32-NEXT: lw $1, 0($1)432; MIPS32-NEXT: sw $1, 64($sp) # 4-byte Folded Spill433; MIPS32-NEXT: addiu $1, $sp, 96434; MIPS32-NEXT: lw $1, 0($1)435; MIPS32-NEXT: sw $1, 68($sp) # 4-byte Folded Spill436; MIPS32-NEXT: andi $1, $4, 1437; MIPS32-NEXT: bnez $1, $BB2_12438; MIPS32-NEXT: nop439; MIPS32-NEXT: # %bb.1: # %entry440; MIPS32-NEXT: j $BB2_2441; MIPS32-NEXT: nop442; MIPS32-NEXT: $BB2_2: # %pre.PHI.1443; MIPS32-NEXT: lw $1, 48($sp) # 4-byte Folded Reload444; MIPS32-NEXT: andi $1, $1, 1445; MIPS32-NEXT: bnez $1, $BB2_7446; MIPS32-NEXT: nop447; MIPS32-NEXT: # %bb.3: # %pre.PHI.1448; MIPS32-NEXT: j $BB2_4449; MIPS32-NEXT: nop450; MIPS32-NEXT: $BB2_4: # %pre.PHI.1.0451; MIPS32-NEXT: lw $1, 52($sp) # 4-byte Folded Reload452; MIPS32-NEXT: andi $1, $1, 1453; MIPS32-NEXT: bnez $1, $BB2_8454; MIPS32-NEXT: nop455; MIPS32-NEXT: # %bb.5: # %pre.PHI.1.0456; MIPS32-NEXT: j $BB2_6457; MIPS32-NEXT: nop458; MIPS32-NEXT: $BB2_6: # %b.PHI.1.0459; MIPS32-NEXT: lw $1, 56($sp) # 4-byte Folded Reload460; MIPS32-NEXT: ldc1 $f0, 0($1)461; MIPS32-NEXT: sdc1 $f0, 32($sp) # 8-byte Folded Spill462; MIPS32-NEXT: j $BB2_9463; MIPS32-NEXT: nop464; MIPS32-NEXT: $BB2_7: # %b.PHI.1.1465; MIPS32-NEXT: lw $1, 60($sp) # 4-byte Folded Reload466; MIPS32-NEXT: ldc1 $f0, 0($1)467; MIPS32-NEXT: sdc1 $f0, 32($sp) # 8-byte Folded Spill468; MIPS32-NEXT: j $BB2_9469; MIPS32-NEXT: nop470; MIPS32-NEXT: $BB2_8: # %b.PHI.1.2471; MIPS32-NEXT: lw $1, 64($sp) # 4-byte Folded Reload472; MIPS32-NEXT: ldc1 $f0, 0($1)473; MIPS32-NEXT: sdc1 $f0, 32($sp) # 8-byte Folded Spill474; MIPS32-NEXT: j $BB2_9475; MIPS32-NEXT: nop476; MIPS32-NEXT: $BB2_9: # %b.PHI.1477; MIPS32-NEXT: lw $1, 52($sp) # 4-byte Folded Reload478; MIPS32-NEXT: ldc1 $f0, 32($sp) # 8-byte Folded Reload479; MIPS32-NEXT: sdc1 $f0, 16($sp) # 8-byte Folded Spill480; MIPS32-NEXT: andi $1, $1, 1481; MIPS32-NEXT: sdc1 $f0, 24($sp) # 8-byte Folded Spill482; MIPS32-NEXT: bnez $1, $BB2_11483; MIPS32-NEXT: nop484; MIPS32-NEXT: # %bb.10: # %b.PHI.1485; MIPS32-NEXT: j $BB2_19486; MIPS32-NEXT: nop487; MIPS32-NEXT: $BB2_11: # %b.PHI.1.end488; MIPS32-NEXT: ldc1 $f0, 16($sp) # 8-byte Folded Reload489; MIPS32-NEXT: lw $1, 68($sp) # 4-byte Folded Reload490; MIPS32-NEXT: sdc1 $f0, 0($1)491; MIPS32-NEXT: addiu $sp, $sp, 72492; MIPS32-NEXT: jr $ra493; MIPS32-NEXT: nop494; MIPS32-NEXT: $BB2_12: # %pre.PHI.2495; MIPS32-NEXT: lw $1, 44($sp) # 4-byte Folded Reload496; MIPS32-NEXT: andi $1, $1, 1497; MIPS32-NEXT: bnez $1, $BB2_14498; MIPS32-NEXT: nop499; MIPS32-NEXT: # %bb.13: # %pre.PHI.2500; MIPS32-NEXT: j $BB2_15501; MIPS32-NEXT: nop502; MIPS32-NEXT: $BB2_14: # %b.PHI.2.0503; MIPS32-NEXT: lw $1, 56($sp) # 4-byte Folded Reload504; MIPS32-NEXT: ldc1 $f0, 0($1)505; MIPS32-NEXT: sdc1 $f0, 8($sp) # 8-byte Folded Spill506; MIPS32-NEXT: j $BB2_16507; MIPS32-NEXT: nop508; MIPS32-NEXT: $BB2_15: # %b.PHI.2.1509; MIPS32-NEXT: lw $1, 60($sp) # 4-byte Folded Reload510; MIPS32-NEXT: ldc1 $f0, 0($1)511; MIPS32-NEXT: sdc1 $f0, 8($sp) # 8-byte Folded Spill512; MIPS32-NEXT: j $BB2_16513; MIPS32-NEXT: nop514; MIPS32-NEXT: $BB2_16: # %b.PHI.2515; MIPS32-NEXT: lw $1, 48($sp) # 4-byte Folded Reload516; MIPS32-NEXT: ldc1 $f0, 8($sp) # 8-byte Folded Reload517; MIPS32-NEXT: sdc1 $f0, 0($sp) # 8-byte Folded Spill518; MIPS32-NEXT: andi $1, $1, 1519; MIPS32-NEXT: sdc1 $f0, 24($sp) # 8-byte Folded Spill520; MIPS32-NEXT: bnez $1, $BB2_19521; MIPS32-NEXT: nop522; MIPS32-NEXT: # %bb.17: # %b.PHI.2523; MIPS32-NEXT: j $BB2_18524; MIPS32-NEXT: nop525; MIPS32-NEXT: $BB2_18: # %b.PHI.2.end526; MIPS32-NEXT: ldc1 $f0, 0($sp) # 8-byte Folded Reload527; MIPS32-NEXT: lw $1, 68($sp) # 4-byte Folded Reload528; MIPS32-NEXT: sdc1 $f0, 0($1)529; MIPS32-NEXT: addiu $sp, $sp, 72530; MIPS32-NEXT: jr $ra531; MIPS32-NEXT: nop532; MIPS32-NEXT: $BB2_19: # %b.PHI.3533; MIPS32-NEXT: lw $1, 68($sp) # 4-byte Folded Reload534; MIPS32-NEXT: lw $2, 48($sp) # 4-byte Folded Reload535; MIPS32-NEXT: lw $3, 52($sp) # 4-byte Folded Reload536; MIPS32-NEXT: ldc1 $f0, 24($sp) # 8-byte Folded Reload537; MIPS32-NEXT: mov.d $f4, $f0538; MIPS32-NEXT: andi $3, $3, 1539; MIPS32-NEXT: movn.d $f4, $f0, $3540; MIPS32-NEXT: andi $2, $2, 1541; MIPS32-NEXT: mov.d $f2, $f0542; MIPS32-NEXT: movn.d $f2, $f4, $2543; MIPS32-NEXT: sdc1 $f2, 0($1)544; MIPS32-NEXT: sdc1 $f0, 0($1)545; MIPS32-NEXT: addiu $sp, $sp, 72546; MIPS32-NEXT: jr $ra547; MIPS32-NEXT: nop548entry:549 br i1 %cnd0, label %pre.PHI.2, label %pre.PHI.1550 551pre.PHI.1:552 br i1 %cnd1, label %b.PHI.1.1, label %pre.PHI.1.0553 554pre.PHI.1.0:555 br i1 %cnd2, label %b.PHI.1.2, label %b.PHI.1.0556 557b.PHI.1.0:558 %phi1.0 = load double, ptr %a559 br label %b.PHI.1560 561b.PHI.1.1:562 %phi1.1 = load double, ptr %b563 br label %b.PHI.1564 565b.PHI.1.2:566 %phi1.2 = load double, ptr %c567 br label %b.PHI.1568 569b.PHI.1:570 %phi1 = phi double [ %phi1.0, %b.PHI.1.0 ], [ %phi1.1, %b.PHI.1.1 ], [ %phi1.2, %b.PHI.1.2 ]571 br i1 %cnd2, label %b.PHI.1.end, label %b.PHI.3572 573b.PHI.1.end:574 store double %phi1, ptr %result575 ret void576 577pre.PHI.2:578 br i1 %cnd0, label %b.PHI.2.0, label %b.PHI.2.1579 580b.PHI.2.0:581 %phi2.0 = load double, ptr %a582 br label %b.PHI.2583 584b.PHI.2.1:585 %phi2.1 = load double, ptr %b586 br label %b.PHI.2587 588b.PHI.2:589 %phi2 = phi double [ %phi2.0, %b.PHI.2.0 ], [ %phi2.1, %b.PHI.2.1 ]590 br i1 %cnd1, label %b.PHI.3, label %b.PHI.2.end591 592b.PHI.2.end:593 store double %phi2, ptr %result594 ret void595 596b.PHI.3:597 %phi3 = phi double [ %phi2, %b.PHI.2], [ %phi1, %b.PHI.1 ]598 %phi4 = phi double [ %phi2, %b.PHI.2], [ %phi1, %b.PHI.1 ]599 %sel_1.2 = select i1 %cnd2, double %phi3, double %phi4600 %sel_3_1.2 = select i1 %cnd1, double %sel_1.2, double %phi3601 store double %sel_3_1.2, ptr %result602 store double %phi3, ptr %result603 ret void604}605 606 607define void @long_chain_double_in_fpr(i1 %cnd0, i1 %cnd1, i1 %cnd2, ptr %a, ptr %b, ptr %c, ptr %result) {608; MIPS32-LABEL: long_chain_double_in_fpr:609; MIPS32: # %bb.0: # %entry610; MIPS32-NEXT: addiu $sp, $sp, -88611; MIPS32-NEXT: .cfi_def_cfa_offset 88612; MIPS32-NEXT: sw $4, 52($sp) # 4-byte Folded Spill613; MIPS32-NEXT: sw $5, 56($sp) # 4-byte Folded Spill614; MIPS32-NEXT: sw $6, 60($sp) # 4-byte Folded Spill615; MIPS32-NEXT: sw $7, 64($sp) # 4-byte Folded Spill616; MIPS32-NEXT: addiu $1, $sp, 104617; MIPS32-NEXT: lw $1, 0($1)618; MIPS32-NEXT: sw $1, 68($sp) # 4-byte Folded Spill619; MIPS32-NEXT: addiu $1, $sp, 108620; MIPS32-NEXT: lw $1, 0($1)621; MIPS32-NEXT: sw $1, 72($sp) # 4-byte Folded Spill622; MIPS32-NEXT: addiu $1, $sp, 112623; MIPS32-NEXT: lw $1, 0($1)624; MIPS32-NEXT: sw $1, 76($sp) # 4-byte Folded Spill625; MIPS32-NEXT: ori $2, $zero, 0626; MIPS32-NEXT: ori $1, $zero, 0627; MIPS32-NEXT: mtc1 $1, $f0628; MIPS32-NEXT: mtc1 $2, $f1629; MIPS32-NEXT: sdc1 $f0, 80($sp) # 8-byte Folded Spill630; MIPS32-NEXT: andi $1, $4, 1631; MIPS32-NEXT: bnez $1, $BB3_12632; MIPS32-NEXT: nop633; MIPS32-NEXT: # %bb.1: # %entry634; MIPS32-NEXT: j $BB3_2635; MIPS32-NEXT: nop636; MIPS32-NEXT: $BB3_2: # %pre.PHI.1637; MIPS32-NEXT: lw $1, 56($sp) # 4-byte Folded Reload638; MIPS32-NEXT: andi $1, $1, 1639; MIPS32-NEXT: bnez $1, $BB3_7640; MIPS32-NEXT: nop641; MIPS32-NEXT: # %bb.3: # %pre.PHI.1642; MIPS32-NEXT: j $BB3_4643; MIPS32-NEXT: nop644; MIPS32-NEXT: $BB3_4: # %pre.PHI.1.0645; MIPS32-NEXT: lw $1, 60($sp) # 4-byte Folded Reload646; MIPS32-NEXT: andi $1, $1, 1647; MIPS32-NEXT: bnez $1, $BB3_8648; MIPS32-NEXT: nop649; MIPS32-NEXT: # %bb.5: # %pre.PHI.1.0650; MIPS32-NEXT: j $BB3_6651; MIPS32-NEXT: nop652; MIPS32-NEXT: $BB3_6: # %b.PHI.1.0653; MIPS32-NEXT: lw $1, 64($sp) # 4-byte Folded Reload654; MIPS32-NEXT: ldc1 $f0, 0($1)655; MIPS32-NEXT: sdc1 $f0, 40($sp) # 8-byte Folded Spill656; MIPS32-NEXT: j $BB3_9657; MIPS32-NEXT: nop658; MIPS32-NEXT: $BB3_7: # %b.PHI.1.1659; MIPS32-NEXT: lw $1, 68($sp) # 4-byte Folded Reload660; MIPS32-NEXT: ldc1 $f0, 0($1)661; MIPS32-NEXT: sdc1 $f0, 40($sp) # 8-byte Folded Spill662; MIPS32-NEXT: j $BB3_9663; MIPS32-NEXT: nop664; MIPS32-NEXT: $BB3_8: # %b.PHI.1.2665; MIPS32-NEXT: lw $1, 72($sp) # 4-byte Folded Reload666; MIPS32-NEXT: ldc1 $f0, 0($1)667; MIPS32-NEXT: sdc1 $f0, 40($sp) # 8-byte Folded Spill668; MIPS32-NEXT: j $BB3_9669; MIPS32-NEXT: nop670; MIPS32-NEXT: $BB3_9: # %b.PHI.1671; MIPS32-NEXT: ldc1 $f0, 80($sp) # 8-byte Folded Reload672; MIPS32-NEXT: lw $1, 60($sp) # 4-byte Folded Reload673; MIPS32-NEXT: ldc1 $f2, 40($sp) # 8-byte Folded Reload674; MIPS32-NEXT: sdc1 $f2, 16($sp) # 8-byte Folded Spill675; MIPS32-NEXT: andi $1, $1, 1676; MIPS32-NEXT: sdc1 $f2, 24($sp) # 8-byte Folded Spill677; MIPS32-NEXT: sdc1 $f0, 32($sp) # 8-byte Folded Spill678; MIPS32-NEXT: bnez $1, $BB3_11679; MIPS32-NEXT: nop680; MIPS32-NEXT: # %bb.10: # %b.PHI.1681; MIPS32-NEXT: j $BB3_19682; MIPS32-NEXT: nop683; MIPS32-NEXT: $BB3_11: # %b.PHI.1.end684; MIPS32-NEXT: ldc1 $f0, 16($sp) # 8-byte Folded Reload685; MIPS32-NEXT: lw $1, 76($sp) # 4-byte Folded Reload686; MIPS32-NEXT: sdc1 $f0, 0($1)687; MIPS32-NEXT: addiu $sp, $sp, 88688; MIPS32-NEXT: jr $ra689; MIPS32-NEXT: nop690; MIPS32-NEXT: $BB3_12: # %pre.PHI.2691; MIPS32-NEXT: lw $1, 52($sp) # 4-byte Folded Reload692; MIPS32-NEXT: andi $1, $1, 1693; MIPS32-NEXT: bnez $1, $BB3_14694; MIPS32-NEXT: nop695; MIPS32-NEXT: # %bb.13: # %pre.PHI.2696; MIPS32-NEXT: j $BB3_15697; MIPS32-NEXT: nop698; MIPS32-NEXT: $BB3_14: # %b.PHI.2.0699; MIPS32-NEXT: lw $1, 64($sp) # 4-byte Folded Reload700; MIPS32-NEXT: ldc1 $f0, 0($1)701; MIPS32-NEXT: sdc1 $f0, 8($sp) # 8-byte Folded Spill702; MIPS32-NEXT: j $BB3_16703; MIPS32-NEXT: nop704; MIPS32-NEXT: $BB3_15: # %b.PHI.2.1705; MIPS32-NEXT: lw $1, 68($sp) # 4-byte Folded Reload706; MIPS32-NEXT: ldc1 $f0, 0($1)707; MIPS32-NEXT: sdc1 $f0, 8($sp) # 8-byte Folded Spill708; MIPS32-NEXT: j $BB3_16709; MIPS32-NEXT: nop710; MIPS32-NEXT: $BB3_16: # %b.PHI.2711; MIPS32-NEXT: lw $1, 56($sp) # 4-byte Folded Reload712; MIPS32-NEXT: ldc1 $f0, 8($sp) # 8-byte Folded Reload713; MIPS32-NEXT: sdc1 $f0, 0($sp) # 8-byte Folded Spill714; MIPS32-NEXT: andi $1, $1, 1715; MIPS32-NEXT: mov.d $f2, $f0716; MIPS32-NEXT: sdc1 $f2, 24($sp) # 8-byte Folded Spill717; MIPS32-NEXT: sdc1 $f0, 32($sp) # 8-byte Folded Spill718; MIPS32-NEXT: bnez $1, $BB3_19719; MIPS32-NEXT: nop720; MIPS32-NEXT: # %bb.17: # %b.PHI.2721; MIPS32-NEXT: j $BB3_18722; MIPS32-NEXT: nop723; MIPS32-NEXT: $BB3_18: # %b.PHI.2.end724; MIPS32-NEXT: ldc1 $f0, 0($sp) # 8-byte Folded Reload725; MIPS32-NEXT: lw $1, 76($sp) # 4-byte Folded Reload726; MIPS32-NEXT: sdc1 $f0, 0($1)727; MIPS32-NEXT: addiu $sp, $sp, 88728; MIPS32-NEXT: jr $ra729; MIPS32-NEXT: nop730; MIPS32-NEXT: $BB3_19: # %b.PHI.3731; MIPS32-NEXT: lw $1, 76($sp) # 4-byte Folded Reload732; MIPS32-NEXT: lw $2, 56($sp) # 4-byte Folded Reload733; MIPS32-NEXT: lw $3, 60($sp) # 4-byte Folded Reload734; MIPS32-NEXT: ldc1 $f0, 24($sp) # 8-byte Folded Reload735; MIPS32-NEXT: ldc1 $f4, 32($sp) # 8-byte Folded Reload736; MIPS32-NEXT: andi $3, $3, 1737; MIPS32-NEXT: movn.d $f4, $f0, $3738; MIPS32-NEXT: andi $2, $2, 1739; MIPS32-NEXT: mov.d $f2, $f0740; MIPS32-NEXT: movn.d $f2, $f4, $2741; MIPS32-NEXT: sdc1 $f2, 0($1)742; MIPS32-NEXT: sdc1 $f0, 0($1)743; MIPS32-NEXT: addiu $sp, $sp, 88744; MIPS32-NEXT: jr $ra745; MIPS32-NEXT: nop746entry:747 br i1 %cnd0, label %pre.PHI.2, label %pre.PHI.1748 749pre.PHI.1:750 br i1 %cnd1, label %b.PHI.1.1, label %pre.PHI.1.0751 752pre.PHI.1.0:753 br i1 %cnd2, label %b.PHI.1.2, label %b.PHI.1.0754 755b.PHI.1.0:756 %phi1.0 = load double, ptr %a757 br label %b.PHI.1758 759b.PHI.1.1:760 %phi1.1 = load double, ptr %b761 br label %b.PHI.1762 763b.PHI.1.2:764 %phi1.2 = load double, ptr %c765 br label %b.PHI.1766 767b.PHI.1:768 %phi1 = phi double [ %phi1.0, %b.PHI.1.0 ], [ %phi1.1, %b.PHI.1.1 ], [ %phi1.2, %b.PHI.1.2 ]769 br i1 %cnd2, label %b.PHI.1.end, label %b.PHI.3770 771b.PHI.1.end:772 store double %phi1, ptr %result773 ret void774 775pre.PHI.2:776 br i1 %cnd0, label %b.PHI.2.0, label %b.PHI.2.1777 778b.PHI.2.0:779 %phi2.0 = load double, ptr %a780 br label %b.PHI.2781 782b.PHI.2.1:783 %phi2.1 = load double, ptr %b784 br label %b.PHI.2785 786b.PHI.2:787 %phi2 = phi double [ %phi2.0, %b.PHI.2.0 ], [ %phi2.1, %b.PHI.2.1 ]788 br i1 %cnd1, label %b.PHI.3, label %b.PHI.2.end789 790b.PHI.2.end:791 store double %phi2, ptr %result792 ret void793 794b.PHI.3:795 %phi3 = phi double [ %phi2, %b.PHI.2], [ %phi1, %b.PHI.1 ]796 %phi4 = phi double [ %phi2, %b.PHI.2], [ 0.0, %b.PHI.1 ]797 %sel_1.2 = select i1 %cnd2, double %phi3, double %phi4798 %sel_3_1.2 = select i1 %cnd1, double %sel_1.2, double %phi3799 store double %sel_3_1.2, ptr %result800 store double %phi3, ptr %result801 ret void802}803 804