brintos

brintos / llvm-project-archived public Read only

0
0
Text · 25.4 KiB · 4f4bac5 Raw
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