902 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc --mtriple=loongarch32 --mattr=+d < %s | FileCheck %s --check-prefix=LA323; RUN: llc --mtriple=loongarch64 --mattr=+d < %s | FileCheck %s --check-prefix=LA644 5declare void @abort()6 7define void @br_fcmp_oeq_bcnez(double %a, double %b) nounwind {8; LA32-LABEL: br_fcmp_oeq_bcnez:9; LA32: # %bb.0:10; LA32-NEXT: fcmp.ceq.d $fcc0, $fa0, $fa111; LA32-NEXT: bcnez $fcc0, .LBB0_212; LA32-NEXT: # %bb.1: # %if.else13; LA32-NEXT: ret14; LA32-NEXT: .LBB0_2: # %if.then15; LA32-NEXT: addi.w $sp, $sp, -1616; LA32-NEXT: st.w $ra, $sp, 12 # 4-byte Folded Spill17; LA32-NEXT: bl abort18;19; LA64-LABEL: br_fcmp_oeq_bcnez:20; LA64: # %bb.0:21; LA64-NEXT: fcmp.ceq.d $fcc0, $fa0, $fa122; LA64-NEXT: bcnez $fcc0, .LBB0_223; LA64-NEXT: # %bb.1: # %if.else24; LA64-NEXT: ret25; LA64-NEXT: .LBB0_2: # %if.then26; LA64-NEXT: addi.d $sp, $sp, -1627; LA64-NEXT: st.d $ra, $sp, 8 # 8-byte Folded Spill28; LA64-NEXT: pcaddu18i $ra, %call36(abort)29; LA64-NEXT: jirl $ra, $ra, 030 %1 = fcmp oeq double %a, %b31 br i1 %1, label %if.then, label %if.else32if.else:33 ret void34if.then:35 tail call void @abort()36 unreachable37}38 39define void @br_fcmp_oeq_bceqz(double %a, double %b) nounwind {40; LA32-LABEL: br_fcmp_oeq_bceqz:41; LA32: # %bb.0:42; LA32-NEXT: fcmp.cune.d $fcc0, $fa0, $fa143; LA32-NEXT: bceqz $fcc0, .LBB1_244; LA32-NEXT: # %bb.1: # %if.else45; LA32-NEXT: ret46; LA32-NEXT: .LBB1_2: # %if.then47; LA32-NEXT: addi.w $sp, $sp, -1648; LA32-NEXT: st.w $ra, $sp, 12 # 4-byte Folded Spill49; LA32-NEXT: bl abort50;51; LA64-LABEL: br_fcmp_oeq_bceqz:52; LA64: # %bb.0:53; LA64-NEXT: fcmp.cune.d $fcc0, $fa0, $fa154; LA64-NEXT: bceqz $fcc0, .LBB1_255; LA64-NEXT: # %bb.1: # %if.else56; LA64-NEXT: ret57; LA64-NEXT: .LBB1_2: # %if.then58; LA64-NEXT: addi.d $sp, $sp, -1659; LA64-NEXT: st.d $ra, $sp, 8 # 8-byte Folded Spill60; LA64-NEXT: pcaddu18i $ra, %call36(abort)61; LA64-NEXT: jirl $ra, $ra, 062 %1 = fcmp oeq double %a, %b63 br i1 %1, label %if.then, label %if.else64if.then:65 tail call void @abort()66 unreachable67if.else:68 ret void69}70 71define void @br_fcmp_ogt_bcnez(double %a, double %b) nounwind {72; LA32-LABEL: br_fcmp_ogt_bcnez:73; LA32: # %bb.0:74; LA32-NEXT: fcmp.clt.d $fcc0, $fa1, $fa075; LA32-NEXT: bcnez $fcc0, .LBB2_276; LA32-NEXT: # %bb.1: # %if.else77; LA32-NEXT: ret78; LA32-NEXT: .LBB2_2: # %if.then79; LA32-NEXT: addi.w $sp, $sp, -1680; LA32-NEXT: st.w $ra, $sp, 12 # 4-byte Folded Spill81; LA32-NEXT: bl abort82;83; LA64-LABEL: br_fcmp_ogt_bcnez:84; LA64: # %bb.0:85; LA64-NEXT: fcmp.clt.d $fcc0, $fa1, $fa086; LA64-NEXT: bcnez $fcc0, .LBB2_287; LA64-NEXT: # %bb.1: # %if.else88; LA64-NEXT: ret89; LA64-NEXT: .LBB2_2: # %if.then90; LA64-NEXT: addi.d $sp, $sp, -1691; LA64-NEXT: st.d $ra, $sp, 8 # 8-byte Folded Spill92; LA64-NEXT: pcaddu18i $ra, %call36(abort)93; LA64-NEXT: jirl $ra, $ra, 094 %1 = fcmp ogt double %a, %b95 br i1 %1, label %if.then, label %if.else96if.else:97 ret void98if.then:99 tail call void @abort()100 unreachable101}102 103define void @br_fcmp_ogt_bceqz(double %a, double %b) nounwind {104; LA32-LABEL: br_fcmp_ogt_bceqz:105; LA32: # %bb.0:106; LA32-NEXT: fcmp.cule.d $fcc0, $fa0, $fa1107; LA32-NEXT: bceqz $fcc0, .LBB3_2108; LA32-NEXT: # %bb.1: # %if.else109; LA32-NEXT: ret110; LA32-NEXT: .LBB3_2: # %if.then111; LA32-NEXT: addi.w $sp, $sp, -16112; LA32-NEXT: st.w $ra, $sp, 12 # 4-byte Folded Spill113; LA32-NEXT: bl abort114;115; LA64-LABEL: br_fcmp_ogt_bceqz:116; LA64: # %bb.0:117; LA64-NEXT: fcmp.cule.d $fcc0, $fa0, $fa1118; LA64-NEXT: bceqz $fcc0, .LBB3_2119; LA64-NEXT: # %bb.1: # %if.else120; LA64-NEXT: ret121; LA64-NEXT: .LBB3_2: # %if.then122; LA64-NEXT: addi.d $sp, $sp, -16123; LA64-NEXT: st.d $ra, $sp, 8 # 8-byte Folded Spill124; LA64-NEXT: pcaddu18i $ra, %call36(abort)125; LA64-NEXT: jirl $ra, $ra, 0126 %1 = fcmp ogt double %a, %b127 br i1 %1, label %if.then, label %if.else128if.then:129 tail call void @abort()130 unreachable131if.else:132 ret void133}134 135define void @br_fcmp_oge_bcnez(double %a, double %b) nounwind {136; LA32-LABEL: br_fcmp_oge_bcnez:137; LA32: # %bb.0:138; LA32-NEXT: fcmp.cle.d $fcc0, $fa1, $fa0139; LA32-NEXT: bcnez $fcc0, .LBB4_2140; LA32-NEXT: # %bb.1: # %if.else141; LA32-NEXT: ret142; LA32-NEXT: .LBB4_2: # %if.then143; LA32-NEXT: addi.w $sp, $sp, -16144; LA32-NEXT: st.w $ra, $sp, 12 # 4-byte Folded Spill145; LA32-NEXT: bl abort146;147; LA64-LABEL: br_fcmp_oge_bcnez:148; LA64: # %bb.0:149; LA64-NEXT: fcmp.cle.d $fcc0, $fa1, $fa0150; LA64-NEXT: bcnez $fcc0, .LBB4_2151; LA64-NEXT: # %bb.1: # %if.else152; LA64-NEXT: ret153; LA64-NEXT: .LBB4_2: # %if.then154; LA64-NEXT: addi.d $sp, $sp, -16155; LA64-NEXT: st.d $ra, $sp, 8 # 8-byte Folded Spill156; LA64-NEXT: pcaddu18i $ra, %call36(abort)157; LA64-NEXT: jirl $ra, $ra, 0158 %1 = fcmp oge double %a, %b159 br i1 %1, label %if.then, label %if.else160if.else:161 ret void162if.then:163 tail call void @abort()164 unreachable165}166 167define void @br_fcmp_oge_bceqz(double %a, double %b) nounwind {168; LA32-LABEL: br_fcmp_oge_bceqz:169; LA32: # %bb.0:170; LA32-NEXT: fcmp.cult.d $fcc0, $fa0, $fa1171; LA32-NEXT: bceqz $fcc0, .LBB5_2172; LA32-NEXT: # %bb.1: # %if.else173; LA32-NEXT: ret174; LA32-NEXT: .LBB5_2: # %if.then175; LA32-NEXT: addi.w $sp, $sp, -16176; LA32-NEXT: st.w $ra, $sp, 12 # 4-byte Folded Spill177; LA32-NEXT: bl abort178;179; LA64-LABEL: br_fcmp_oge_bceqz:180; LA64: # %bb.0:181; LA64-NEXT: fcmp.cult.d $fcc0, $fa0, $fa1182; LA64-NEXT: bceqz $fcc0, .LBB5_2183; LA64-NEXT: # %bb.1: # %if.else184; LA64-NEXT: ret185; LA64-NEXT: .LBB5_2: # %if.then186; LA64-NEXT: addi.d $sp, $sp, -16187; LA64-NEXT: st.d $ra, $sp, 8 # 8-byte Folded Spill188; LA64-NEXT: pcaddu18i $ra, %call36(abort)189; LA64-NEXT: jirl $ra, $ra, 0190 %1 = fcmp oge double %a, %b191 br i1 %1, label %if.then, label %if.else192if.then:193 tail call void @abort()194 unreachable195if.else:196 ret void197}198 199define void @br_fcmp_olt_bcnez(double %a, double %b) nounwind {200; LA32-LABEL: br_fcmp_olt_bcnez:201; LA32: # %bb.0:202; LA32-NEXT: fcmp.clt.d $fcc0, $fa0, $fa1203; LA32-NEXT: bcnez $fcc0, .LBB6_2204; LA32-NEXT: # %bb.1: # %if.else205; LA32-NEXT: ret206; LA32-NEXT: .LBB6_2: # %if.then207; LA32-NEXT: addi.w $sp, $sp, -16208; LA32-NEXT: st.w $ra, $sp, 12 # 4-byte Folded Spill209; LA32-NEXT: bl abort210;211; LA64-LABEL: br_fcmp_olt_bcnez:212; LA64: # %bb.0:213; LA64-NEXT: fcmp.clt.d $fcc0, $fa0, $fa1214; LA64-NEXT: bcnez $fcc0, .LBB6_2215; LA64-NEXT: # %bb.1: # %if.else216; LA64-NEXT: ret217; LA64-NEXT: .LBB6_2: # %if.then218; LA64-NEXT: addi.d $sp, $sp, -16219; LA64-NEXT: st.d $ra, $sp, 8 # 8-byte Folded Spill220; LA64-NEXT: pcaddu18i $ra, %call36(abort)221; LA64-NEXT: jirl $ra, $ra, 0222 %1 = fcmp olt double %a, %b223 br i1 %1, label %if.then, label %if.else224if.else:225 ret void226if.then:227 tail call void @abort()228 unreachable229}230 231define void @br_fcmp_olt_bceqz(double %a, double %b) nounwind {232; LA32-LABEL: br_fcmp_olt_bceqz:233; LA32: # %bb.0:234; LA32-NEXT: fcmp.cule.d $fcc0, $fa1, $fa0235; LA32-NEXT: bceqz $fcc0, .LBB7_2236; LA32-NEXT: # %bb.1: # %if.else237; LA32-NEXT: ret238; LA32-NEXT: .LBB7_2: # %if.then239; LA32-NEXT: addi.w $sp, $sp, -16240; LA32-NEXT: st.w $ra, $sp, 12 # 4-byte Folded Spill241; LA32-NEXT: bl abort242;243; LA64-LABEL: br_fcmp_olt_bceqz:244; LA64: # %bb.0:245; LA64-NEXT: fcmp.cule.d $fcc0, $fa1, $fa0246; LA64-NEXT: bceqz $fcc0, .LBB7_2247; LA64-NEXT: # %bb.1: # %if.else248; LA64-NEXT: ret249; LA64-NEXT: .LBB7_2: # %if.then250; LA64-NEXT: addi.d $sp, $sp, -16251; LA64-NEXT: st.d $ra, $sp, 8 # 8-byte Folded Spill252; LA64-NEXT: pcaddu18i $ra, %call36(abort)253; LA64-NEXT: jirl $ra, $ra, 0254 %1 = fcmp olt double %a, %b255 br i1 %1, label %if.then, label %if.else256if.then:257 tail call void @abort()258 unreachable259if.else:260 ret void261}262 263define void @br_fcmp_ole_bcnez(double %a, double %b) nounwind {264; LA32-LABEL: br_fcmp_ole_bcnez:265; LA32: # %bb.0:266; LA32-NEXT: fcmp.cle.d $fcc0, $fa0, $fa1267; LA32-NEXT: bcnez $fcc0, .LBB8_2268; LA32-NEXT: # %bb.1: # %if.else269; LA32-NEXT: ret270; LA32-NEXT: .LBB8_2: # %if.then271; LA32-NEXT: addi.w $sp, $sp, -16272; LA32-NEXT: st.w $ra, $sp, 12 # 4-byte Folded Spill273; LA32-NEXT: bl abort274;275; LA64-LABEL: br_fcmp_ole_bcnez:276; LA64: # %bb.0:277; LA64-NEXT: fcmp.cle.d $fcc0, $fa0, $fa1278; LA64-NEXT: bcnez $fcc0, .LBB8_2279; LA64-NEXT: # %bb.1: # %if.else280; LA64-NEXT: ret281; LA64-NEXT: .LBB8_2: # %if.then282; LA64-NEXT: addi.d $sp, $sp, -16283; LA64-NEXT: st.d $ra, $sp, 8 # 8-byte Folded Spill284; LA64-NEXT: pcaddu18i $ra, %call36(abort)285; LA64-NEXT: jirl $ra, $ra, 0286 %1 = fcmp ole double %a, %b287 br i1 %1, label %if.then, label %if.else288if.else:289 ret void290if.then:291 tail call void @abort()292 unreachable293}294 295define void @br_fcmp_ole_bceqz(double %a, double %b) nounwind {296; LA32-LABEL: br_fcmp_ole_bceqz:297; LA32: # %bb.0:298; LA32-NEXT: fcmp.cult.d $fcc0, $fa1, $fa0299; LA32-NEXT: bceqz $fcc0, .LBB9_2300; LA32-NEXT: # %bb.1: # %if.else301; LA32-NEXT: ret302; LA32-NEXT: .LBB9_2: # %if.then303; LA32-NEXT: addi.w $sp, $sp, -16304; LA32-NEXT: st.w $ra, $sp, 12 # 4-byte Folded Spill305; LA32-NEXT: bl abort306;307; LA64-LABEL: br_fcmp_ole_bceqz:308; LA64: # %bb.0:309; LA64-NEXT: fcmp.cult.d $fcc0, $fa1, $fa0310; LA64-NEXT: bceqz $fcc0, .LBB9_2311; LA64-NEXT: # %bb.1: # %if.else312; LA64-NEXT: ret313; LA64-NEXT: .LBB9_2: # %if.then314; LA64-NEXT: addi.d $sp, $sp, -16315; LA64-NEXT: st.d $ra, $sp, 8 # 8-byte Folded Spill316; LA64-NEXT: pcaddu18i $ra, %call36(abort)317; LA64-NEXT: jirl $ra, $ra, 0318 %1 = fcmp ole double %a, %b319 br i1 %1, label %if.then, label %if.else320if.then:321 tail call void @abort()322 unreachable323if.else:324 ret void325}326 327define void @br_fcmp_one_bcnez(double %a, double %b) nounwind {328; LA32-LABEL: br_fcmp_one_bcnez:329; LA32: # %bb.0:330; LA32-NEXT: fcmp.cne.d $fcc0, $fa0, $fa1331; LA32-NEXT: bcnez $fcc0, .LBB10_2332; LA32-NEXT: # %bb.1: # %if.else333; LA32-NEXT: ret334; LA32-NEXT: .LBB10_2: # %if.then335; LA32-NEXT: addi.w $sp, $sp, -16336; LA32-NEXT: st.w $ra, $sp, 12 # 4-byte Folded Spill337; LA32-NEXT: bl abort338;339; LA64-LABEL: br_fcmp_one_bcnez:340; LA64: # %bb.0:341; LA64-NEXT: fcmp.cne.d $fcc0, $fa0, $fa1342; LA64-NEXT: bcnez $fcc0, .LBB10_2343; LA64-NEXT: # %bb.1: # %if.else344; LA64-NEXT: ret345; LA64-NEXT: .LBB10_2: # %if.then346; LA64-NEXT: addi.d $sp, $sp, -16347; LA64-NEXT: st.d $ra, $sp, 8 # 8-byte Folded Spill348; LA64-NEXT: pcaddu18i $ra, %call36(abort)349; LA64-NEXT: jirl $ra, $ra, 0350 %1 = fcmp one double %a, %b351 br i1 %1, label %if.then, label %if.else352if.else:353 ret void354if.then:355 tail call void @abort()356 unreachable357}358 359define void @br_fcmp_one_bceqz(double %a, double %b) nounwind {360; LA32-LABEL: br_fcmp_one_bceqz:361; LA32: # %bb.0:362; LA32-NEXT: fcmp.cueq.d $fcc0, $fa0, $fa1363; LA32-NEXT: bceqz $fcc0, .LBB11_2364; LA32-NEXT: # %bb.1: # %if.else365; LA32-NEXT: ret366; LA32-NEXT: .LBB11_2: # %if.then367; LA32-NEXT: addi.w $sp, $sp, -16368; LA32-NEXT: st.w $ra, $sp, 12 # 4-byte Folded Spill369; LA32-NEXT: bl abort370;371; LA64-LABEL: br_fcmp_one_bceqz:372; LA64: # %bb.0:373; LA64-NEXT: fcmp.cueq.d $fcc0, $fa0, $fa1374; LA64-NEXT: bceqz $fcc0, .LBB11_2375; LA64-NEXT: # %bb.1: # %if.else376; LA64-NEXT: ret377; LA64-NEXT: .LBB11_2: # %if.then378; LA64-NEXT: addi.d $sp, $sp, -16379; LA64-NEXT: st.d $ra, $sp, 8 # 8-byte Folded Spill380; LA64-NEXT: pcaddu18i $ra, %call36(abort)381; LA64-NEXT: jirl $ra, $ra, 0382 %1 = fcmp one double %a, %b383 br i1 %1, label %if.then, label %if.else384if.then:385 tail call void @abort()386 unreachable387if.else:388 ret void389}390 391define void @br_fcmp_ord_bcnez(double %a, double %b) nounwind {392; LA32-LABEL: br_fcmp_ord_bcnez:393; LA32: # %bb.0:394; LA32-NEXT: fcmp.cor.d $fcc0, $fa0, $fa1395; LA32-NEXT: bcnez $fcc0, .LBB12_2396; LA32-NEXT: # %bb.1: # %if.else397; LA32-NEXT: ret398; LA32-NEXT: .LBB12_2: # %if.then399; LA32-NEXT: addi.w $sp, $sp, -16400; LA32-NEXT: st.w $ra, $sp, 12 # 4-byte Folded Spill401; LA32-NEXT: bl abort402;403; LA64-LABEL: br_fcmp_ord_bcnez:404; LA64: # %bb.0:405; LA64-NEXT: fcmp.cor.d $fcc0, $fa0, $fa1406; LA64-NEXT: bcnez $fcc0, .LBB12_2407; LA64-NEXT: # %bb.1: # %if.else408; LA64-NEXT: ret409; LA64-NEXT: .LBB12_2: # %if.then410; LA64-NEXT: addi.d $sp, $sp, -16411; LA64-NEXT: st.d $ra, $sp, 8 # 8-byte Folded Spill412; LA64-NEXT: pcaddu18i $ra, %call36(abort)413; LA64-NEXT: jirl $ra, $ra, 0414 %1 = fcmp ord double %a, %b415 br i1 %1, label %if.then, label %if.else416if.else:417 ret void418if.then:419 tail call void @abort()420 unreachable421}422 423define void @br_fcmp_ord_bceqz(double %a, double %b) nounwind {424; LA32-LABEL: br_fcmp_ord_bceqz:425; LA32: # %bb.0:426; LA32-NEXT: fcmp.cun.d $fcc0, $fa0, $fa1427; LA32-NEXT: bceqz $fcc0, .LBB13_2428; LA32-NEXT: # %bb.1: # %if.else429; LA32-NEXT: ret430; LA32-NEXT: .LBB13_2: # %if.then431; LA32-NEXT: addi.w $sp, $sp, -16432; LA32-NEXT: st.w $ra, $sp, 12 # 4-byte Folded Spill433; LA32-NEXT: bl abort434;435; LA64-LABEL: br_fcmp_ord_bceqz:436; LA64: # %bb.0:437; LA64-NEXT: fcmp.cun.d $fcc0, $fa0, $fa1438; LA64-NEXT: bceqz $fcc0, .LBB13_2439; LA64-NEXT: # %bb.1: # %if.else440; LA64-NEXT: ret441; LA64-NEXT: .LBB13_2: # %if.then442; LA64-NEXT: addi.d $sp, $sp, -16443; LA64-NEXT: st.d $ra, $sp, 8 # 8-byte Folded Spill444; LA64-NEXT: pcaddu18i $ra, %call36(abort)445; LA64-NEXT: jirl $ra, $ra, 0446 %1 = fcmp ord double %a, %b447 br i1 %1, label %if.then, label %if.else448if.then:449 tail call void @abort()450 unreachable451if.else:452 ret void453}454 455define void @br_fcmp_ueq_bcnez(double %a, double %b) nounwind {456; LA32-LABEL: br_fcmp_ueq_bcnez:457; LA32: # %bb.0:458; LA32-NEXT: fcmp.cueq.d $fcc0, $fa0, $fa1459; LA32-NEXT: bcnez $fcc0, .LBB14_2460; LA32-NEXT: # %bb.1: # %if.else461; LA32-NEXT: ret462; LA32-NEXT: .LBB14_2: # %if.then463; LA32-NEXT: addi.w $sp, $sp, -16464; LA32-NEXT: st.w $ra, $sp, 12 # 4-byte Folded Spill465; LA32-NEXT: bl abort466;467; LA64-LABEL: br_fcmp_ueq_bcnez:468; LA64: # %bb.0:469; LA64-NEXT: fcmp.cueq.d $fcc0, $fa0, $fa1470; LA64-NEXT: bcnez $fcc0, .LBB14_2471; LA64-NEXT: # %bb.1: # %if.else472; LA64-NEXT: ret473; LA64-NEXT: .LBB14_2: # %if.then474; LA64-NEXT: addi.d $sp, $sp, -16475; LA64-NEXT: st.d $ra, $sp, 8 # 8-byte Folded Spill476; LA64-NEXT: pcaddu18i $ra, %call36(abort)477; LA64-NEXT: jirl $ra, $ra, 0478 %1 = fcmp ueq double %a, %b479 br i1 %1, label %if.then, label %if.else480if.else:481 ret void482if.then:483 tail call void @abort()484 unreachable485}486 487define void @br_fcmp_ueq_bceqz(double %a, double %b) nounwind {488; LA32-LABEL: br_fcmp_ueq_bceqz:489; LA32: # %bb.0:490; LA32-NEXT: fcmp.cne.d $fcc0, $fa0, $fa1491; LA32-NEXT: bceqz $fcc0, .LBB15_2492; LA32-NEXT: # %bb.1: # %if.else493; LA32-NEXT: ret494; LA32-NEXT: .LBB15_2: # %if.then495; LA32-NEXT: addi.w $sp, $sp, -16496; LA32-NEXT: st.w $ra, $sp, 12 # 4-byte Folded Spill497; LA32-NEXT: bl abort498;499; LA64-LABEL: br_fcmp_ueq_bceqz:500; LA64: # %bb.0:501; LA64-NEXT: fcmp.cne.d $fcc0, $fa0, $fa1502; LA64-NEXT: bceqz $fcc0, .LBB15_2503; LA64-NEXT: # %bb.1: # %if.else504; LA64-NEXT: ret505; LA64-NEXT: .LBB15_2: # %if.then506; LA64-NEXT: addi.d $sp, $sp, -16507; LA64-NEXT: st.d $ra, $sp, 8 # 8-byte Folded Spill508; LA64-NEXT: pcaddu18i $ra, %call36(abort)509; LA64-NEXT: jirl $ra, $ra, 0510 %1 = fcmp ueq double %a, %b511 br i1 %1, label %if.then, label %if.else512if.then:513 tail call void @abort()514 unreachable515if.else:516 ret void517}518 519define void @br_fcmp_ugt_bcnez(double %a, double %b) nounwind {520; LA32-LABEL: br_fcmp_ugt_bcnez:521; LA32: # %bb.0:522; LA32-NEXT: fcmp.cult.d $fcc0, $fa1, $fa0523; LA32-NEXT: bcnez $fcc0, .LBB16_2524; LA32-NEXT: # %bb.1: # %if.else525; LA32-NEXT: ret526; LA32-NEXT: .LBB16_2: # %if.then527; LA32-NEXT: addi.w $sp, $sp, -16528; LA32-NEXT: st.w $ra, $sp, 12 # 4-byte Folded Spill529; LA32-NEXT: bl abort530;531; LA64-LABEL: br_fcmp_ugt_bcnez:532; LA64: # %bb.0:533; LA64-NEXT: fcmp.cult.d $fcc0, $fa1, $fa0534; LA64-NEXT: bcnez $fcc0, .LBB16_2535; LA64-NEXT: # %bb.1: # %if.else536; LA64-NEXT: ret537; LA64-NEXT: .LBB16_2: # %if.then538; LA64-NEXT: addi.d $sp, $sp, -16539; LA64-NEXT: st.d $ra, $sp, 8 # 8-byte Folded Spill540; LA64-NEXT: pcaddu18i $ra, %call36(abort)541; LA64-NEXT: jirl $ra, $ra, 0542 %1 = fcmp ugt double %a, %b543 br i1 %1, label %if.then, label %if.else544if.else:545 ret void546if.then:547 tail call void @abort()548 unreachable549}550 551define void @br_fcmp_ugt_bceqz(double %a, double %b) nounwind {552; LA32-LABEL: br_fcmp_ugt_bceqz:553; LA32: # %bb.0:554; LA32-NEXT: fcmp.cle.d $fcc0, $fa0, $fa1555; LA32-NEXT: bceqz $fcc0, .LBB17_2556; LA32-NEXT: # %bb.1: # %if.else557; LA32-NEXT: ret558; LA32-NEXT: .LBB17_2: # %if.then559; LA32-NEXT: addi.w $sp, $sp, -16560; LA32-NEXT: st.w $ra, $sp, 12 # 4-byte Folded Spill561; LA32-NEXT: bl abort562;563; LA64-LABEL: br_fcmp_ugt_bceqz:564; LA64: # %bb.0:565; LA64-NEXT: fcmp.cle.d $fcc0, $fa0, $fa1566; LA64-NEXT: bceqz $fcc0, .LBB17_2567; LA64-NEXT: # %bb.1: # %if.else568; LA64-NEXT: ret569; LA64-NEXT: .LBB17_2: # %if.then570; LA64-NEXT: addi.d $sp, $sp, -16571; LA64-NEXT: st.d $ra, $sp, 8 # 8-byte Folded Spill572; LA64-NEXT: pcaddu18i $ra, %call36(abort)573; LA64-NEXT: jirl $ra, $ra, 0574 %1 = fcmp ugt double %a, %b575 br i1 %1, label %if.then, label %if.else576if.then:577 tail call void @abort()578 unreachable579if.else:580 ret void581}582 583define void @br_fcmp_uge_bcnez(double %a, double %b) nounwind {584; LA32-LABEL: br_fcmp_uge_bcnez:585; LA32: # %bb.0:586; LA32-NEXT: fcmp.cule.d $fcc0, $fa1, $fa0587; LA32-NEXT: bcnez $fcc0, .LBB18_2588; LA32-NEXT: # %bb.1: # %if.else589; LA32-NEXT: ret590; LA32-NEXT: .LBB18_2: # %if.then591; LA32-NEXT: addi.w $sp, $sp, -16592; LA32-NEXT: st.w $ra, $sp, 12 # 4-byte Folded Spill593; LA32-NEXT: bl abort594;595; LA64-LABEL: br_fcmp_uge_bcnez:596; LA64: # %bb.0:597; LA64-NEXT: fcmp.cule.d $fcc0, $fa1, $fa0598; LA64-NEXT: bcnez $fcc0, .LBB18_2599; LA64-NEXT: # %bb.1: # %if.else600; LA64-NEXT: ret601; LA64-NEXT: .LBB18_2: # %if.then602; LA64-NEXT: addi.d $sp, $sp, -16603; LA64-NEXT: st.d $ra, $sp, 8 # 8-byte Folded Spill604; LA64-NEXT: pcaddu18i $ra, %call36(abort)605; LA64-NEXT: jirl $ra, $ra, 0606 %1 = fcmp uge double %a, %b607 br i1 %1, label %if.then, label %if.else608if.else:609 ret void610if.then:611 tail call void @abort()612 unreachable613}614 615define void @br_fcmp_uge_bceqz(double %a, double %b) nounwind {616; LA32-LABEL: br_fcmp_uge_bceqz:617; LA32: # %bb.0:618; LA32-NEXT: fcmp.clt.d $fcc0, $fa0, $fa1619; LA32-NEXT: bceqz $fcc0, .LBB19_2620; LA32-NEXT: # %bb.1: # %if.else621; LA32-NEXT: ret622; LA32-NEXT: .LBB19_2: # %if.then623; LA32-NEXT: addi.w $sp, $sp, -16624; LA32-NEXT: st.w $ra, $sp, 12 # 4-byte Folded Spill625; LA32-NEXT: bl abort626;627; LA64-LABEL: br_fcmp_uge_bceqz:628; LA64: # %bb.0:629; LA64-NEXT: fcmp.clt.d $fcc0, $fa0, $fa1630; LA64-NEXT: bceqz $fcc0, .LBB19_2631; LA64-NEXT: # %bb.1: # %if.else632; LA64-NEXT: ret633; LA64-NEXT: .LBB19_2: # %if.then634; LA64-NEXT: addi.d $sp, $sp, -16635; LA64-NEXT: st.d $ra, $sp, 8 # 8-byte Folded Spill636; LA64-NEXT: pcaddu18i $ra, %call36(abort)637; LA64-NEXT: jirl $ra, $ra, 0638 %1 = fcmp uge double %a, %b639 br i1 %1, label %if.then, label %if.else640if.then:641 tail call void @abort()642 unreachable643if.else:644 ret void645}646 647define void @br_fcmp_ult_bcnez(double %a, double %b) nounwind {648; LA32-LABEL: br_fcmp_ult_bcnez:649; LA32: # %bb.0:650; LA32-NEXT: fcmp.cult.d $fcc0, $fa0, $fa1651; LA32-NEXT: bcnez $fcc0, .LBB20_2652; LA32-NEXT: # %bb.1: # %if.else653; LA32-NEXT: ret654; LA32-NEXT: .LBB20_2: # %if.then655; LA32-NEXT: addi.w $sp, $sp, -16656; LA32-NEXT: st.w $ra, $sp, 12 # 4-byte Folded Spill657; LA32-NEXT: bl abort658;659; LA64-LABEL: br_fcmp_ult_bcnez:660; LA64: # %bb.0:661; LA64-NEXT: fcmp.cult.d $fcc0, $fa0, $fa1662; LA64-NEXT: bcnez $fcc0, .LBB20_2663; LA64-NEXT: # %bb.1: # %if.else664; LA64-NEXT: ret665; LA64-NEXT: .LBB20_2: # %if.then666; LA64-NEXT: addi.d $sp, $sp, -16667; LA64-NEXT: st.d $ra, $sp, 8 # 8-byte Folded Spill668; LA64-NEXT: pcaddu18i $ra, %call36(abort)669; LA64-NEXT: jirl $ra, $ra, 0670 %1 = fcmp ult double %a, %b671 br i1 %1, label %if.then, label %if.else672if.else:673 ret void674if.then:675 tail call void @abort()676 unreachable677}678 679define void @br_fcmp_ult_bceqz(double %a, double %b) nounwind {680; LA32-LABEL: br_fcmp_ult_bceqz:681; LA32: # %bb.0:682; LA32-NEXT: fcmp.cle.d $fcc0, $fa1, $fa0683; LA32-NEXT: bceqz $fcc0, .LBB21_2684; LA32-NEXT: # %bb.1: # %if.else685; LA32-NEXT: ret686; LA32-NEXT: .LBB21_2: # %if.then687; LA32-NEXT: addi.w $sp, $sp, -16688; LA32-NEXT: st.w $ra, $sp, 12 # 4-byte Folded Spill689; LA32-NEXT: bl abort690;691; LA64-LABEL: br_fcmp_ult_bceqz:692; LA64: # %bb.0:693; LA64-NEXT: fcmp.cle.d $fcc0, $fa1, $fa0694; LA64-NEXT: bceqz $fcc0, .LBB21_2695; LA64-NEXT: # %bb.1: # %if.else696; LA64-NEXT: ret697; LA64-NEXT: .LBB21_2: # %if.then698; LA64-NEXT: addi.d $sp, $sp, -16699; LA64-NEXT: st.d $ra, $sp, 8 # 8-byte Folded Spill700; LA64-NEXT: pcaddu18i $ra, %call36(abort)701; LA64-NEXT: jirl $ra, $ra, 0702 %1 = fcmp ult double %a, %b703 br i1 %1, label %if.then, label %if.else704if.then:705 tail call void @abort()706 unreachable707if.else:708 ret void709}710 711define void @br_fcmp_ule_bcnez(double %a, double %b) nounwind {712; LA32-LABEL: br_fcmp_ule_bcnez:713; LA32: # %bb.0:714; LA32-NEXT: fcmp.cule.d $fcc0, $fa0, $fa1715; LA32-NEXT: bcnez $fcc0, .LBB22_2716; LA32-NEXT: # %bb.1: # %if.else717; LA32-NEXT: ret718; LA32-NEXT: .LBB22_2: # %if.then719; LA32-NEXT: addi.w $sp, $sp, -16720; LA32-NEXT: st.w $ra, $sp, 12 # 4-byte Folded Spill721; LA32-NEXT: bl abort722;723; LA64-LABEL: br_fcmp_ule_bcnez:724; LA64: # %bb.0:725; LA64-NEXT: fcmp.cule.d $fcc0, $fa0, $fa1726; LA64-NEXT: bcnez $fcc0, .LBB22_2727; LA64-NEXT: # %bb.1: # %if.else728; LA64-NEXT: ret729; LA64-NEXT: .LBB22_2: # %if.then730; LA64-NEXT: addi.d $sp, $sp, -16731; LA64-NEXT: st.d $ra, $sp, 8 # 8-byte Folded Spill732; LA64-NEXT: pcaddu18i $ra, %call36(abort)733; LA64-NEXT: jirl $ra, $ra, 0734 %1 = fcmp ule double %a, %b735 br i1 %1, label %if.then, label %if.else736if.else:737 ret void738if.then:739 tail call void @abort()740 unreachable741}742 743define void @br_fcmp_ule_bceqz(double %a, double %b) nounwind {744; LA32-LABEL: br_fcmp_ule_bceqz:745; LA32: # %bb.0:746; LA32-NEXT: fcmp.clt.d $fcc0, $fa1, $fa0747; LA32-NEXT: bceqz $fcc0, .LBB23_2748; LA32-NEXT: # %bb.1: # %if.else749; LA32-NEXT: ret750; LA32-NEXT: .LBB23_2: # %if.then751; LA32-NEXT: addi.w $sp, $sp, -16752; LA32-NEXT: st.w $ra, $sp, 12 # 4-byte Folded Spill753; LA32-NEXT: bl abort754;755; LA64-LABEL: br_fcmp_ule_bceqz:756; LA64: # %bb.0:757; LA64-NEXT: fcmp.clt.d $fcc0, $fa1, $fa0758; LA64-NEXT: bceqz $fcc0, .LBB23_2759; LA64-NEXT: # %bb.1: # %if.else760; LA64-NEXT: ret761; LA64-NEXT: .LBB23_2: # %if.then762; LA64-NEXT: addi.d $sp, $sp, -16763; LA64-NEXT: st.d $ra, $sp, 8 # 8-byte Folded Spill764; LA64-NEXT: pcaddu18i $ra, %call36(abort)765; LA64-NEXT: jirl $ra, $ra, 0766 %1 = fcmp ule double %a, %b767 br i1 %1, label %if.then, label %if.else768if.then:769 tail call void @abort()770 unreachable771if.else:772 ret void773}774 775define void @br_fcmp_une_bcnez(double %a, double %b) nounwind {776; LA32-LABEL: br_fcmp_une_bcnez:777; LA32: # %bb.0:778; LA32-NEXT: fcmp.cune.d $fcc0, $fa0, $fa1779; LA32-NEXT: bcnez $fcc0, .LBB24_2780; LA32-NEXT: # %bb.1: # %if.else781; LA32-NEXT: ret782; LA32-NEXT: .LBB24_2: # %if.then783; LA32-NEXT: addi.w $sp, $sp, -16784; LA32-NEXT: st.w $ra, $sp, 12 # 4-byte Folded Spill785; LA32-NEXT: bl abort786;787; LA64-LABEL: br_fcmp_une_bcnez:788; LA64: # %bb.0:789; LA64-NEXT: fcmp.cune.d $fcc0, $fa0, $fa1790; LA64-NEXT: bcnez $fcc0, .LBB24_2791; LA64-NEXT: # %bb.1: # %if.else792; LA64-NEXT: ret793; LA64-NEXT: .LBB24_2: # %if.then794; LA64-NEXT: addi.d $sp, $sp, -16795; LA64-NEXT: st.d $ra, $sp, 8 # 8-byte Folded Spill796; LA64-NEXT: pcaddu18i $ra, %call36(abort)797; LA64-NEXT: jirl $ra, $ra, 0798 %1 = fcmp une double %a, %b799 br i1 %1, label %if.then, label %if.else800if.else:801 ret void802if.then:803 tail call void @abort()804 unreachable805}806 807define void @br_fcmp_une_bceqz(double %a, double %b) nounwind {808; LA32-LABEL: br_fcmp_une_bceqz:809; LA32: # %bb.0:810; LA32-NEXT: fcmp.ceq.d $fcc0, $fa0, $fa1811; LA32-NEXT: bceqz $fcc0, .LBB25_2812; LA32-NEXT: # %bb.1: # %if.else813; LA32-NEXT: ret814; LA32-NEXT: .LBB25_2: # %if.then815; LA32-NEXT: addi.w $sp, $sp, -16816; LA32-NEXT: st.w $ra, $sp, 12 # 4-byte Folded Spill817; LA32-NEXT: bl abort818;819; LA64-LABEL: br_fcmp_une_bceqz:820; LA64: # %bb.0:821; LA64-NEXT: fcmp.ceq.d $fcc0, $fa0, $fa1822; LA64-NEXT: bceqz $fcc0, .LBB25_2823; LA64-NEXT: # %bb.1: # %if.else824; LA64-NEXT: ret825; LA64-NEXT: .LBB25_2: # %if.then826; LA64-NEXT: addi.d $sp, $sp, -16827; LA64-NEXT: st.d $ra, $sp, 8 # 8-byte Folded Spill828; LA64-NEXT: pcaddu18i $ra, %call36(abort)829; LA64-NEXT: jirl $ra, $ra, 0830 %1 = fcmp une double %a, %b831 br i1 %1, label %if.then, label %if.else832if.then:833 tail call void @abort()834 unreachable835if.else:836 ret void837}838 839define void @br_fcmp_uno_bcnez(double %a, double %b) nounwind {840; LA32-LABEL: br_fcmp_uno_bcnez:841; LA32: # %bb.0:842; LA32-NEXT: fcmp.cun.d $fcc0, $fa0, $fa1843; LA32-NEXT: bcnez $fcc0, .LBB26_2844; LA32-NEXT: # %bb.1: # %if.else845; LA32-NEXT: ret846; LA32-NEXT: .LBB26_2: # %if.then847; LA32-NEXT: addi.w $sp, $sp, -16848; LA32-NEXT: st.w $ra, $sp, 12 # 4-byte Folded Spill849; LA32-NEXT: bl abort850;851; LA64-LABEL: br_fcmp_uno_bcnez:852; LA64: # %bb.0:853; LA64-NEXT: fcmp.cun.d $fcc0, $fa0, $fa1854; LA64-NEXT: bcnez $fcc0, .LBB26_2855; LA64-NEXT: # %bb.1: # %if.else856; LA64-NEXT: ret857; LA64-NEXT: .LBB26_2: # %if.then858; LA64-NEXT: addi.d $sp, $sp, -16859; LA64-NEXT: st.d $ra, $sp, 8 # 8-byte Folded Spill860; LA64-NEXT: pcaddu18i $ra, %call36(abort)861; LA64-NEXT: jirl $ra, $ra, 0862 %1 = fcmp uno double %a, %b863 br i1 %1, label %if.then, label %if.else864if.else:865 ret void866if.then:867 tail call void @abort()868 unreachable869}870 871define void @br_fcmp_uno_bceqz(double %a, double %b) nounwind {872; LA32-LABEL: br_fcmp_uno_bceqz:873; LA32: # %bb.0:874; LA32-NEXT: fcmp.cor.d $fcc0, $fa0, $fa1875; LA32-NEXT: bceqz $fcc0, .LBB27_2876; LA32-NEXT: # %bb.1: # %if.else877; LA32-NEXT: ret878; LA32-NEXT: .LBB27_2: # %if.then879; LA32-NEXT: addi.w $sp, $sp, -16880; LA32-NEXT: st.w $ra, $sp, 12 # 4-byte Folded Spill881; LA32-NEXT: bl abort882;883; LA64-LABEL: br_fcmp_uno_bceqz:884; LA64: # %bb.0:885; LA64-NEXT: fcmp.cor.d $fcc0, $fa0, $fa1886; LA64-NEXT: bceqz $fcc0, .LBB27_2887; LA64-NEXT: # %bb.1: # %if.else888; LA64-NEXT: ret889; LA64-NEXT: .LBB27_2: # %if.then890; LA64-NEXT: addi.d $sp, $sp, -16891; LA64-NEXT: st.d $ra, $sp, 8 # 8-byte Folded Spill892; LA64-NEXT: pcaddu18i $ra, %call36(abort)893; LA64-NEXT: jirl $ra, $ra, 0894 %1 = fcmp uno double %a, %b895 br i1 %1, label %if.then, label %if.else896if.then:897 tail call void @abort()898 unreachable899if.else:900 ret void901}902