brintos

brintos / llvm-project-archived public Read only

0
0
Text · 27.0 KiB · 5697aab Raw
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