1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py 2; RUN: llc --mtriple=loongarch32 --mattr=+f,-d < %s | FileCheck %s --check-prefix=LA32 3; RUN: llc --mtriple=loongarch64 --mattr=+f,-d < %s | FileCheck %s --check-prefix=LA64 4 5declare void @abort() 6 7define void @br_fcmp_oeq_bcnez_float(float %a, float %b) nounwind { 8; LA32-LABEL: br_fcmp_oeq_bcnez_float: 9; LA32: # %bb.0: 10; LA32-NEXT: fcmp.ceq.s $fcc0, $fa0, $fa1 11; LA32-NEXT: bcnez $fcc0, .LBB0_2 12; LA32-NEXT: # %bb.1: # %if.else 13; LA32-NEXT: ret 14; LA32-NEXT: .LBB0_2: # %if.then 15; LA32-NEXT: addi.w $sp, $sp, -16 16; LA32-NEXT: st.w $ra, $sp, 12 # 4-byte Folded Spill 17; LA32-NEXT: bl %plt(abort) 18; 19; LA64-LABEL: br_fcmp_oeq_bcnez_float: 20; LA64: # %bb.0: 21; LA64-NEXT: fcmp.ceq.s $fcc0, $fa0, $fa1 22; LA64-NEXT: bcnez $fcc0, .LBB0_2 23; LA64-NEXT: # %bb.1: # %if.else 24; LA64-NEXT: ret 25; LA64-NEXT: .LBB0_2: # %if.then 26; LA64-NEXT: addi.d $sp, $sp, -16 27; LA64-NEXT: st.d $ra, $sp, 8 # 8-byte Folded Spill 28; LA64-NEXT: bl %plt(abort) 29 %1 = fcmp oeq float %a, %b 30 br i1 %1, label %if.then, label %if.else 31if.else: 32 ret void 33if.then: 34 tail call void @abort() 35 unreachable 36} 37 38define void @br_fcmp_oeq_bceqz_float(float %a, float %b) nounwind { 39; LA32-LABEL: br_fcmp_oeq_bceqz_float: 40; LA32: # %bb.0: 41; LA32-NEXT: fcmp.cune.s $fcc0, $fa0, $fa1 42; LA32-NEXT: bceqz $fcc0, .LBB1_2 43; LA32-NEXT: # %bb.1: # %if.else 44; LA32-NEXT: ret 45; LA32-NEXT: .LBB1_2: # %if.then 46; LA32-NEXT: addi.w $sp, $sp, -16 47; LA32-NEXT: st.w $ra, $sp, 12 # 4-byte Folded Spill 48; LA32-NEXT: bl %plt(abort) 49; 50; LA64-LABEL: br_fcmp_oeq_bceqz_float: 51; LA64: # %bb.0: 52; LA64-NEXT: fcmp.cune.s $fcc0, $fa0, $fa1 53; LA64-NEXT: bceqz $fcc0, .LBB1_2 54; LA64-NEXT: # %bb.1: # %if.else 55; LA64-NEXT: ret 56; LA64-NEXT: .LBB1_2: # %if.then 57; LA64-NEXT: addi.d $sp, $sp, -16 58; LA64-NEXT: st.d $ra, $sp, 8 # 8-byte Folded Spill 59; LA64-NEXT: bl %plt(abort) 60 %1 = fcmp oeq float %a, %b 61 br i1 %1, label %if.then, label %if.else 62if.then: 63 tail call void @abort() 64 unreachable 65if.else: 66 ret void 67} 68 69define void @br_fcmp_ogt_bcnez_float(float %a, float %b) nounwind { 70; LA32-LABEL: br_fcmp_ogt_bcnez_float: 71; LA32: # %bb.0: 72; LA32-NEXT: fcmp.clt.s $fcc0, $fa1, $fa0 73; LA32-NEXT: bcnez $fcc0, .LBB2_2 74; LA32-NEXT: # %bb.1: # %if.else 75; LA32-NEXT: ret 76; LA32-NEXT: .LBB2_2: # %if.then 77; LA32-NEXT: addi.w $sp, $sp, -16 78; LA32-NEXT: st.w $ra, $sp, 12 # 4-byte Folded Spill 79; LA32-NEXT: bl %plt(abort) 80; 81; LA64-LABEL: br_fcmp_ogt_bcnez_float: 82; LA64: # %bb.0: 83; LA64-NEXT: fcmp.clt.s $fcc0, $fa1, $fa0 84; LA64-NEXT: bcnez $fcc0, .LBB2_2 85; LA64-NEXT: # %bb.1: # %if.else 86; LA64-NEXT: ret 87; LA64-NEXT: .LBB2_2: # %if.then 88; LA64-NEXT: addi.d $sp, $sp, -16 89; LA64-NEXT: st.d $ra, $sp, 8 # 8-byte Folded Spill 90; LA64-NEXT: bl %plt(abort) 91 %1 = fcmp ogt float %a, %b 92 br i1 %1, label %if.then, label %if.else 93if.else: 94 ret void 95if.then: 96 tail call void @abort() 97 unreachable 98} 99 100define void @br_fcmp_ogt_bceqz_float(float %a, float %b) nounwind { 101; LA32-LABEL: br_fcmp_ogt_bceqz_float: 102; LA32: # %bb.0: 103; LA32-NEXT: fcmp.cule.s $fcc0, $fa0, $fa1 104; LA32-NEXT: bceqz $fcc0, .LBB3_2 105; LA32-NEXT: # %bb.1: # %if.else 106; LA32-NEXT: ret 107; LA32-NEXT: .LBB3_2: # %if.then 108; LA32-NEXT: addi.w $sp, $sp, -16 109; LA32-NEXT: st.w $ra, $sp, 12 # 4-byte Folded Spill 110; LA32-NEXT: bl %plt(abort) 111; 112; LA64-LABEL: br_fcmp_ogt_bceqz_float: 113; LA64: # %bb.0: 114; LA64-NEXT: fcmp.cule.s $fcc0, $fa0, $fa1 115; LA64-NEXT: bceqz $fcc0, .LBB3_2 116; LA64-NEXT: # %bb.1: # %if.else 117; LA64-NEXT: ret 118; LA64-NEXT: .LBB3_2: # %if.then 119; LA64-NEXT: addi.d $sp, $sp, -16 120; LA64-NEXT: st.d $ra, $sp, 8 # 8-byte Folded Spill 121; LA64-NEXT: bl %plt(abort) 122 %1 = fcmp ogt float %a, %b 123 br i1 %1, label %if.then, label %if.else 124if.then: 125 tail call void @abort() 126 unreachable 127if.else: 128 ret void 129} 130 131define void @br_fcmp_oge_bcnez_float(float %a, float %b) nounwind { 132; LA32-LABEL: br_fcmp_oge_bcnez_float: 133; LA32: # %bb.0: 134; LA32-NEXT: fcmp.cle.s $fcc0, $fa1, $fa0 135; LA32-NEXT: bcnez $fcc0, .LBB4_2 136; LA32-NEXT: # %bb.1: # %if.else 137; LA32-NEXT: ret 138; LA32-NEXT: .LBB4_2: # %if.then 139; LA32-NEXT: addi.w $sp, $sp, -16 140; LA32-NEXT: st.w $ra, $sp, 12 # 4-byte Folded Spill 141; LA32-NEXT: bl %plt(abort) 142; 143; LA64-LABEL: br_fcmp_oge_bcnez_float: 144; LA64: # %bb.0: 145; LA64-NEXT: fcmp.cle.s $fcc0, $fa1, $fa0 146; LA64-NEXT: bcnez $fcc0, .LBB4_2 147; LA64-NEXT: # %bb.1: # %if.else 148; LA64-NEXT: ret 149; LA64-NEXT: .LBB4_2: # %if.then 150; LA64-NEXT: addi.d $sp, $sp, -16 151; LA64-NEXT: st.d $ra, $sp, 8 # 8-byte Folded Spill 152; LA64-NEXT: bl %plt(abort) 153 %1 = fcmp oge float %a, %b 154 br i1 %1, label %if.then, label %if.else 155if.else: 156 ret void 157if.then: 158 tail call void @abort() 159 unreachable 160} 161 162define void @br_fcmp_oge_bceqz_float(float %a, float %b) nounwind { 163; LA32-LABEL: br_fcmp_oge_bceqz_float: 164; LA32: # %bb.0: 165; LA32-NEXT: fcmp.cult.s $fcc0, $fa0, $fa1 166; LA32-NEXT: bceqz $fcc0, .LBB5_2 167; LA32-NEXT: # %bb.1: # %if.else 168; LA32-NEXT: ret 169; LA32-NEXT: .LBB5_2: # %if.then 170; LA32-NEXT: addi.w $sp, $sp, -16 171; LA32-NEXT: st.w $ra, $sp, 12 # 4-byte Folded Spill 172; LA32-NEXT: bl %plt(abort) 173; 174; LA64-LABEL: br_fcmp_oge_bceqz_float: 175; LA64: # %bb.0: 176; LA64-NEXT: fcmp.cult.s $fcc0, $fa0, $fa1 177; LA64-NEXT: bceqz $fcc0, .LBB5_2 178; LA64-NEXT: # %bb.1: # %if.else 179; LA64-NEXT: ret 180; LA64-NEXT: .LBB5_2: # %if.then 181; LA64-NEXT: addi.d $sp, $sp, -16 182; LA64-NEXT: st.d $ra, $sp, 8 # 8-byte Folded Spill 183; LA64-NEXT: bl %plt(abort) 184 %1 = fcmp oge float %a, %b 185 br i1 %1, label %if.then, label %if.else 186if.then: 187 tail call void @abort() 188 unreachable 189if.else: 190 ret void 191} 192 193define void @br_fcmp_olt_bcnez_float(float %a, float %b) nounwind { 194; LA32-LABEL: br_fcmp_olt_bcnez_float: 195; LA32: # %bb.0: 196; LA32-NEXT: fcmp.clt.s $fcc0, $fa0, $fa1 197; LA32-NEXT: bcnez $fcc0, .LBB6_2 198; LA32-NEXT: # %bb.1: # %if.else 199; LA32-NEXT: ret 200; LA32-NEXT: .LBB6_2: # %if.then 201; LA32-NEXT: addi.w $sp, $sp, -16 202; LA32-NEXT: st.w $ra, $sp, 12 # 4-byte Folded Spill 203; LA32-NEXT: bl %plt(abort) 204; 205; LA64-LABEL: br_fcmp_olt_bcnez_float: 206; LA64: # %bb.0: 207; LA64-NEXT: fcmp.clt.s $fcc0, $fa0, $fa1 208; LA64-NEXT: bcnez $fcc0, .LBB6_2 209; LA64-NEXT: # %bb.1: # %if.else 210; LA64-NEXT: ret 211; LA64-NEXT: .LBB6_2: # %if.then 212; LA64-NEXT: addi.d $sp, $sp, -16 213; LA64-NEXT: st.d $ra, $sp, 8 # 8-byte Folded Spill 214; LA64-NEXT: bl %plt(abort) 215 %1 = fcmp olt float %a, %b 216 br i1 %1, label %if.then, label %if.else 217if.else: 218 ret void 219if.then: 220 tail call void @abort() 221 unreachable 222} 223 224define void @br_fcmp_olt_bceqz_float(float %a, float %b) nounwind { 225; LA32-LABEL: br_fcmp_olt_bceqz_float: 226; LA32: # %bb.0: 227; LA32-NEXT: fcmp.cule.s $fcc0, $fa1, $fa0 228; LA32-NEXT: bceqz $fcc0, .LBB7_2 229; LA32-NEXT: # %bb.1: # %if.else 230; LA32-NEXT: ret 231; LA32-NEXT: .LBB7_2: # %if.then 232; LA32-NEXT: addi.w $sp, $sp, -16 233; LA32-NEXT: st.w $ra, $sp, 12 # 4-byte Folded Spill 234; LA32-NEXT: bl %plt(abort) 235; 236; LA64-LABEL: br_fcmp_olt_bceqz_float: 237; LA64: # %bb.0: 238; LA64-NEXT: fcmp.cule.s $fcc0, $fa1, $fa0 239; LA64-NEXT: bceqz $fcc0, .LBB7_2 240; LA64-NEXT: # %bb.1: # %if.else 241; LA64-NEXT: ret 242; LA64-NEXT: .LBB7_2: # %if.then 243; LA64-NEXT: addi.d $sp, $sp, -16 244; LA64-NEXT: st.d $ra, $sp, 8 # 8-byte Folded Spill 245; LA64-NEXT: bl %plt(abort) 246 %1 = fcmp olt float %a, %b 247 br i1 %1, label %if.then, label %if.else 248if.then: 249 tail call void @abort() 250 unreachable 251if.else: 252 ret void 253} 254 255define void @br_fcmp_ole_bcnez_float(float %a, float %b) nounwind { 256; LA32-LABEL: br_fcmp_ole_bcnez_float: 257; LA32: # %bb.0: 258; LA32-NEXT: fcmp.cle.s $fcc0, $fa0, $fa1 259; LA32-NEXT: bcnez $fcc0, .LBB8_2 260; LA32-NEXT: # %bb.1: # %if.else 261; LA32-NEXT: ret 262; LA32-NEXT: .LBB8_2: # %if.then 263; LA32-NEXT: addi.w $sp, $sp, -16 264; LA32-NEXT: st.w $ra, $sp, 12 # 4-byte Folded Spill 265; LA32-NEXT: bl %plt(abort) 266; 267; LA64-LABEL: br_fcmp_ole_bcnez_float: 268; LA64: # %bb.0: 269; LA64-NEXT: fcmp.cle.s $fcc0, $fa0, $fa1 270; LA64-NEXT: bcnez $fcc0, .LBB8_2 271; LA64-NEXT: # %bb.1: # %if.else 272; LA64-NEXT: ret 273; LA64-NEXT: .LBB8_2: # %if.then 274; LA64-NEXT: addi.d $sp, $sp, -16 275; LA64-NEXT: st.d $ra, $sp, 8 # 8-byte Folded Spill 276; LA64-NEXT: bl %plt(abort) 277 %1 = fcmp ole float %a, %b 278 br i1 %1, label %if.then, label %if.else 279if.else: 280 ret void 281if.then: 282 tail call void @abort() 283 unreachable 284} 285 286define void @br_fcmp_ole_bceqz_float(float %a, float %b) nounwind { 287; LA32-LABEL: br_fcmp_ole_bceqz_float: 288; LA32: # %bb.0: 289; LA32-NEXT: fcmp.cult.s $fcc0, $fa1, $fa0 290; LA32-NEXT: bceqz $fcc0, .LBB9_2 291; LA32-NEXT: # %bb.1: # %if.else 292; LA32-NEXT: ret 293; LA32-NEXT: .LBB9_2: # %if.then 294; LA32-NEXT: addi.w $sp, $sp, -16 295; LA32-NEXT: st.w $ra, $sp, 12 # 4-byte Folded Spill 296; LA32-NEXT: bl %plt(abort) 297; 298; LA64-LABEL: br_fcmp_ole_bceqz_float: 299; LA64: # %bb.0: 300; LA64-NEXT: fcmp.cult.s $fcc0, $fa1, $fa0 301; LA64-NEXT: bceqz $fcc0, .LBB9_2 302; LA64-NEXT: # %bb.1: # %if.else 303; LA64-NEXT: ret 304; LA64-NEXT: .LBB9_2: # %if.then 305; LA64-NEXT: addi.d $sp, $sp, -16 306; LA64-NEXT: st.d $ra, $sp, 8 # 8-byte Folded Spill 307; LA64-NEXT: bl %plt(abort) 308 %1 = fcmp ole float %a, %b 309 br i1 %1, label %if.then, label %if.else 310if.then: 311 tail call void @abort() 312 unreachable 313if.else: 314 ret void 315} 316 317define void @br_fcmp_one_bcnez_float(float %a, float %b) nounwind { 318; LA32-LABEL: br_fcmp_one_bcnez_float: 319; LA32: # %bb.0: 320; LA32-NEXT: fcmp.cne.s $fcc0, $fa0, $fa1 321; LA32-NEXT: bcnez $fcc0, .LBB10_2 322; LA32-NEXT: # %bb.1: # %if.else 323; LA32-NEXT: ret 324; LA32-NEXT: .LBB10_2: # %if.then 325; LA32-NEXT: addi.w $sp, $sp, -16 326; LA32-NEXT: st.w $ra, $sp, 12 # 4-byte Folded Spill 327; LA32-NEXT: bl %plt(abort) 328; 329; LA64-LABEL: br_fcmp_one_bcnez_float: 330; LA64: # %bb.0: 331; LA64-NEXT: fcmp.cne.s $fcc0, $fa0, $fa1 332; LA64-NEXT: bcnez $fcc0, .LBB10_2 333; LA64-NEXT: # %bb.1: # %if.else 334; LA64-NEXT: ret 335; LA64-NEXT: .LBB10_2: # %if.then 336; LA64-NEXT: addi.d $sp, $sp, -16 337; LA64-NEXT: st.d $ra, $sp, 8 # 8-byte Folded Spill 338; LA64-NEXT: bl %plt(abort) 339 %1 = fcmp one float %a, %b 340 br i1 %1, label %if.then, label %if.else 341if.else: 342 ret void 343if.then: 344 tail call void @abort() 345 unreachable 346} 347 348define void @br_fcmp_one_bceqz_float(float %a, float %b) nounwind { 349; LA32-LABEL: br_fcmp_one_bceqz_float: 350; LA32: # %bb.0: 351; LA32-NEXT: fcmp.cueq.s $fcc0, $fa0, $fa1 352; LA32-NEXT: bceqz $fcc0, .LBB11_2 353; LA32-NEXT: # %bb.1: # %if.else 354; LA32-NEXT: ret 355; LA32-NEXT: .LBB11_2: # %if.then 356; LA32-NEXT: addi.w $sp, $sp, -16 357; LA32-NEXT: st.w $ra, $sp, 12 # 4-byte Folded Spill 358; LA32-NEXT: bl %plt(abort) 359; 360; LA64-LABEL: br_fcmp_one_bceqz_float: 361; LA64: # %bb.0: 362; LA64-NEXT: fcmp.cueq.s $fcc0, $fa0, $fa1 363; LA64-NEXT: bceqz $fcc0, .LBB11_2 364; LA64-NEXT: # %bb.1: # %if.else 365; LA64-NEXT: ret 366; LA64-NEXT: .LBB11_2: # %if.then 367; LA64-NEXT: addi.d $sp, $sp, -16 368; LA64-NEXT: st.d $ra, $sp, 8 # 8-byte Folded Spill 369; LA64-NEXT: bl %plt(abort) 370 %1 = fcmp one float %a, %b 371 br i1 %1, label %if.then, label %if.else 372if.then: 373 tail call void @abort() 374 unreachable 375if.else: 376 ret void 377} 378 379define void @br_fcmp_ord_bcnez_float(float %a, float %b) nounwind { 380; LA32-LABEL: br_fcmp_ord_bcnez_float: 381; LA32: # %bb.0: 382; LA32-NEXT: fcmp.cor.s $fcc0, $fa0, $fa1 383; LA32-NEXT: bcnez $fcc0, .LBB12_2 384; LA32-NEXT: # %bb.1: # %if.else 385; LA32-NEXT: ret 386; LA32-NEXT: .LBB12_2: # %if.then 387; LA32-NEXT: addi.w $sp, $sp, -16 388; LA32-NEXT: st.w $ra, $sp, 12 # 4-byte Folded Spill 389; LA32-NEXT: bl %plt(abort) 390; 391; LA64-LABEL: br_fcmp_ord_bcnez_float: 392; LA64: # %bb.0: 393; LA64-NEXT: fcmp.cor.s $fcc0, $fa0, $fa1 394; LA64-NEXT: bcnez $fcc0, .LBB12_2 395; LA64-NEXT: # %bb.1: # %if.else 396; LA64-NEXT: ret 397; LA64-NEXT: .LBB12_2: # %if.then 398; LA64-NEXT: addi.d $sp, $sp, -16 399; LA64-NEXT: st.d $ra, $sp, 8 # 8-byte Folded Spill 400; LA64-NEXT: bl %plt(abort) 401 %1 = fcmp ord float %a, %b 402 br i1 %1, label %if.then, label %if.else 403if.else: 404 ret void 405if.then: 406 tail call void @abort() 407 unreachable 408} 409 410define void @br_fcmp_ord_bceqz_float(float %a, float %b) nounwind { 411; LA32-LABEL: br_fcmp_ord_bceqz_float: 412; LA32: # %bb.0: 413; LA32-NEXT: fcmp.cun.s $fcc0, $fa0, $fa1 414; LA32-NEXT: bceqz $fcc0, .LBB13_2 415; LA32-NEXT: # %bb.1: # %if.else 416; LA32-NEXT: ret 417; LA32-NEXT: .LBB13_2: # %if.then 418; LA32-NEXT: addi.w $sp, $sp, -16 419; LA32-NEXT: st.w $ra, $sp, 12 # 4-byte Folded Spill 420; LA32-NEXT: bl %plt(abort) 421; 422; LA64-LABEL: br_fcmp_ord_bceqz_float: 423; LA64: # %bb.0: 424; LA64-NEXT: fcmp.cun.s $fcc0, $fa0, $fa1 425; LA64-NEXT: bceqz $fcc0, .LBB13_2 426; LA64-NEXT: # %bb.1: # %if.else 427; LA64-NEXT: ret 428; LA64-NEXT: .LBB13_2: # %if.then 429; LA64-NEXT: addi.d $sp, $sp, -16 430; LA64-NEXT: st.d $ra, $sp, 8 # 8-byte Folded Spill 431; LA64-NEXT: bl %plt(abort) 432 %1 = fcmp ord float %a, %b 433 br i1 %1, label %if.then, label %if.else 434if.then: 435 tail call void @abort() 436 unreachable 437if.else: 438 ret void 439} 440 441define void @br_fcmp_ueq_bcnez_float(float %a, float %b) nounwind { 442; LA32-LABEL: br_fcmp_ueq_bcnez_float: 443; LA32: # %bb.0: 444; LA32-NEXT: fcmp.cueq.s $fcc0, $fa0, $fa1 445; LA32-NEXT: bcnez $fcc0, .LBB14_2 446; LA32-NEXT: # %bb.1: # %if.else 447; LA32-NEXT: ret 448; LA32-NEXT: .LBB14_2: # %if.then 449; LA32-NEXT: addi.w $sp, $sp, -16 450; LA32-NEXT: st.w $ra, $sp, 12 # 4-byte Folded Spill 451; LA32-NEXT: bl %plt(abort) 452; 453; LA64-LABEL: br_fcmp_ueq_bcnez_float: 454; LA64: # %bb.0: 455; LA64-NEXT: fcmp.cueq.s $fcc0, $fa0, $fa1 456; LA64-NEXT: bcnez $fcc0, .LBB14_2 457; LA64-NEXT: # %bb.1: # %if.else 458; LA64-NEXT: ret 459; LA64-NEXT: .LBB14_2: # %if.then 460; LA64-NEXT: addi.d $sp, $sp, -16 461; LA64-NEXT: st.d $ra, $sp, 8 # 8-byte Folded Spill 462; LA64-NEXT: bl %plt(abort) 463 %1 = fcmp ueq float %a, %b 464 br i1 %1, label %if.then, label %if.else 465if.else: 466 ret void 467if.then: 468 tail call void @abort() 469 unreachable 470} 471 472define void @br_fcmp_ueq_bceqz_float(float %a, float %b) nounwind { 473; LA32-LABEL: br_fcmp_ueq_bceqz_float: 474; LA32: # %bb.0: 475; LA32-NEXT: fcmp.cne.s $fcc0, $fa0, $fa1 476; LA32-NEXT: bceqz $fcc0, .LBB15_2 477; LA32-NEXT: # %bb.1: # %if.else 478; LA32-NEXT: ret 479; LA32-NEXT: .LBB15_2: # %if.then 480; LA32-NEXT: addi.w $sp, $sp, -16 481; LA32-NEXT: st.w $ra, $sp, 12 # 4-byte Folded Spill 482; LA32-NEXT: bl %plt(abort) 483; 484; LA64-LABEL: br_fcmp_ueq_bceqz_float: 485; LA64: # %bb.0: 486; LA64-NEXT: fcmp.cne.s $fcc0, $fa0, $fa1 487; LA64-NEXT: bceqz $fcc0, .LBB15_2 488; LA64-NEXT: # %bb.1: # %if.else 489; LA64-NEXT: ret 490; LA64-NEXT: .LBB15_2: # %if.then 491; LA64-NEXT: addi.d $sp, $sp, -16 492; LA64-NEXT: st.d $ra, $sp, 8 # 8-byte Folded Spill 493; LA64-NEXT: bl %plt(abort) 494 %1 = fcmp ueq float %a, %b 495 br i1 %1, label %if.then, label %if.else 496if.then: 497 tail call void @abort() 498 unreachable 499if.else: 500 ret void 501} 502 503define void @br_fcmp_ugt_bcnez_float(float %a, float %b) nounwind { 504; LA32-LABEL: br_fcmp_ugt_bcnez_float: 505; LA32: # %bb.0: 506; LA32-NEXT: fcmp.cult.s $fcc0, $fa1, $fa0 507; LA32-NEXT: bcnez $fcc0, .LBB16_2 508; LA32-NEXT: # %bb.1: # %if.else 509; LA32-NEXT: ret 510; LA32-NEXT: .LBB16_2: # %if.then 511; LA32-NEXT: addi.w $sp, $sp, -16 512; LA32-NEXT: st.w $ra, $sp, 12 # 4-byte Folded Spill 513; LA32-NEXT: bl %plt(abort) 514; 515; LA64-LABEL: br_fcmp_ugt_bcnez_float: 516; LA64: # %bb.0: 517; LA64-NEXT: fcmp.cult.s $fcc0, $fa1, $fa0 518; LA64-NEXT: bcnez $fcc0, .LBB16_2 519; LA64-NEXT: # %bb.1: # %if.else 520; LA64-NEXT: ret 521; LA64-NEXT: .LBB16_2: # %if.then 522; LA64-NEXT: addi.d $sp, $sp, -16 523; LA64-NEXT: st.d $ra, $sp, 8 # 8-byte Folded Spill 524; LA64-NEXT: bl %plt(abort) 525 %1 = fcmp ugt float %a, %b 526 br i1 %1, label %if.then, label %if.else 527if.else: 528 ret void 529if.then: 530 tail call void @abort() 531 unreachable 532} 533 534define void @br_fcmp_ugt_bceqz_float(float %a, float %b) nounwind { 535; LA32-LABEL: br_fcmp_ugt_bceqz_float: 536; LA32: # %bb.0: 537; LA32-NEXT: fcmp.cle.s $fcc0, $fa0, $fa1 538; LA32-NEXT: bceqz $fcc0, .LBB17_2 539; LA32-NEXT: # %bb.1: # %if.else 540; LA32-NEXT: ret 541; LA32-NEXT: .LBB17_2: # %if.then 542; LA32-NEXT: addi.w $sp, $sp, -16 543; LA32-NEXT: st.w $ra, $sp, 12 # 4-byte Folded Spill 544; LA32-NEXT: bl %plt(abort) 545; 546; LA64-LABEL: br_fcmp_ugt_bceqz_float: 547; LA64: # %bb.0: 548; LA64-NEXT: fcmp.cle.s $fcc0, $fa0, $fa1 549; LA64-NEXT: bceqz $fcc0, .LBB17_2 550; LA64-NEXT: # %bb.1: # %if.else 551; LA64-NEXT: ret 552; LA64-NEXT: .LBB17_2: # %if.then 553; LA64-NEXT: addi.d $sp, $sp, -16 554; LA64-NEXT: st.d $ra, $sp, 8 # 8-byte Folded Spill 555; LA64-NEXT: bl %plt(abort) 556 %1 = fcmp ugt float %a, %b 557 br i1 %1, label %if.then, label %if.else 558if.then: 559 tail call void @abort() 560 unreachable 561if.else: 562 ret void 563} 564 565define void @br_fcmp_uge_bcnez_float(float %a, float %b) nounwind { 566; LA32-LABEL: br_fcmp_uge_bcnez_float: 567; LA32: # %bb.0: 568; LA32-NEXT: fcmp.cule.s $fcc0, $fa1, $fa0 569; LA32-NEXT: bcnez $fcc0, .LBB18_2 570; LA32-NEXT: # %bb.1: # %if.else 571; LA32-NEXT: ret 572; LA32-NEXT: .LBB18_2: # %if.then 573; LA32-NEXT: addi.w $sp, $sp, -16 574; LA32-NEXT: st.w $ra, $sp, 12 # 4-byte Folded Spill 575; LA32-NEXT: bl %plt(abort) 576; 577; LA64-LABEL: br_fcmp_uge_bcnez_float: 578; LA64: # %bb.0: 579; LA64-NEXT: fcmp.cule.s $fcc0, $fa1, $fa0 580; LA64-NEXT: bcnez $fcc0, .LBB18_2 581; LA64-NEXT: # %bb.1: # %if.else 582; LA64-NEXT: ret 583; LA64-NEXT: .LBB18_2: # %if.then 584; LA64-NEXT: addi.d $sp, $sp, -16 585; LA64-NEXT: st.d $ra, $sp, 8 # 8-byte Folded Spill 586; LA64-NEXT: bl %plt(abort) 587 %1 = fcmp uge float %a, %b 588 br i1 %1, label %if.then, label %if.else 589if.else: 590 ret void 591if.then: 592 tail call void @abort() 593 unreachable 594} 595 596define void @br_fcmp_uge_bceqz_float(float %a, float %b) nounwind { 597; LA32-LABEL: br_fcmp_uge_bceqz_float: 598; LA32: # %bb.0: 599; LA32-NEXT: fcmp.clt.s $fcc0, $fa0, $fa1 600; LA32-NEXT: bceqz $fcc0, .LBB19_2 601; LA32-NEXT: # %bb.1: # %if.else 602; LA32-NEXT: ret 603; LA32-NEXT: .LBB19_2: # %if.then 604; LA32-NEXT: addi.w $sp, $sp, -16 605; LA32-NEXT: st.w $ra, $sp, 12 # 4-byte Folded Spill 606; LA32-NEXT: bl %plt(abort) 607; 608; LA64-LABEL: br_fcmp_uge_bceqz_float: 609; LA64: # %bb.0: 610; LA64-NEXT: fcmp.clt.s $fcc0, $fa0, $fa1 611; LA64-NEXT: bceqz $fcc0, .LBB19_2 612; LA64-NEXT: # %bb.1: # %if.else 613; LA64-NEXT: ret 614; LA64-NEXT: .LBB19_2: # %if.then 615; LA64-NEXT: addi.d $sp, $sp, -16 616; LA64-NEXT: st.d $ra, $sp, 8 # 8-byte Folded Spill 617; LA64-NEXT: bl %plt(abort) 618 %1 = fcmp uge float %a, %b 619 br i1 %1, label %if.then, label %if.else 620if.then: 621 tail call void @abort() 622 unreachable 623if.else: 624 ret void 625} 626 627define void @br_fcmp_ult_bcnez_float(float %a, float %b) nounwind { 628; LA32-LABEL: br_fcmp_ult_bcnez_float: 629; LA32: # %bb.0: 630; LA32-NEXT: fcmp.cult.s $fcc0, $fa0, $fa1 631; LA32-NEXT: bcnez $fcc0, .LBB20_2 632; LA32-NEXT: # %bb.1: # %if.else 633; LA32-NEXT: ret 634; LA32-NEXT: .LBB20_2: # %if.then 635; LA32-NEXT: addi.w $sp, $sp, -16 636; LA32-NEXT: st.w $ra, $sp, 12 # 4-byte Folded Spill 637; LA32-NEXT: bl %plt(abort) 638; 639; LA64-LABEL: br_fcmp_ult_bcnez_float: 640; LA64: # %bb.0: 641; LA64-NEXT: fcmp.cult.s $fcc0, $fa0, $fa1 642; LA64-NEXT: bcnez $fcc0, .LBB20_2 643; LA64-NEXT: # %bb.1: # %if.else 644; LA64-NEXT: ret 645; LA64-NEXT: .LBB20_2: # %if.then 646; LA64-NEXT: addi.d $sp, $sp, -16 647; LA64-NEXT: st.d $ra, $sp, 8 # 8-byte Folded Spill 648; LA64-NEXT: bl %plt(abort) 649 %1 = fcmp ult float %a, %b 650 br i1 %1, label %if.then, label %if.else 651if.else: 652 ret void 653if.then: 654 tail call void @abort() 655 unreachable 656} 657 658define void @br_fcmp_ult_bceqz_float(float %a, float %b) nounwind { 659; LA32-LABEL: br_fcmp_ult_bceqz_float: 660; LA32: # %bb.0: 661; LA32-NEXT: fcmp.cle.s $fcc0, $fa1, $fa0 662; LA32-NEXT: bceqz $fcc0, .LBB21_2 663; LA32-NEXT: # %bb.1: # %if.else 664; LA32-NEXT: ret 665; LA32-NEXT: .LBB21_2: # %if.then 666; LA32-NEXT: addi.w $sp, $sp, -16 667; LA32-NEXT: st.w $ra, $sp, 12 # 4-byte Folded Spill 668; LA32-NEXT: bl %plt(abort) 669; 670; LA64-LABEL: br_fcmp_ult_bceqz_float: 671; LA64: # %bb.0: 672; LA64-NEXT: fcmp.cle.s $fcc0, $fa1, $fa0 673; LA64-NEXT: bceqz $fcc0, .LBB21_2 674; LA64-NEXT: # %bb.1: # %if.else 675; LA64-NEXT: ret 676; LA64-NEXT: .LBB21_2: # %if.then 677; LA64-NEXT: addi.d $sp, $sp, -16 678; LA64-NEXT: st.d $ra, $sp, 8 # 8-byte Folded Spill 679; LA64-NEXT: bl %plt(abort) 680 %1 = fcmp ult float %a, %b 681 br i1 %1, label %if.then, label %if.else 682if.then: 683 tail call void @abort() 684 unreachable 685if.else: 686 ret void 687} 688 689define void @br_fcmp_ule_bcnez_float(float %a, float %b) nounwind { 690; LA32-LABEL: br_fcmp_ule_bcnez_float: 691; LA32: # %bb.0: 692; LA32-NEXT: fcmp.cule.s $fcc0, $fa0, $fa1 693; LA32-NEXT: bcnez $fcc0, .LBB22_2 694; LA32-NEXT: # %bb.1: # %if.else 695; LA32-NEXT: ret 696; LA32-NEXT: .LBB22_2: # %if.then 697; LA32-NEXT: addi.w $sp, $sp, -16 698; LA32-NEXT: st.w $ra, $sp, 12 # 4-byte Folded Spill 699; LA32-NEXT: bl %plt(abort) 700; 701; LA64-LABEL: br_fcmp_ule_bcnez_float: 702; LA64: # %bb.0: 703; LA64-NEXT: fcmp.cule.s $fcc0, $fa0, $fa1 704; LA64-NEXT: bcnez $fcc0, .LBB22_2 705; LA64-NEXT: # %bb.1: # %if.else 706; LA64-NEXT: ret 707; LA64-NEXT: .LBB22_2: # %if.then 708; LA64-NEXT: addi.d $sp, $sp, -16 709; LA64-NEXT: st.d $ra, $sp, 8 # 8-byte Folded Spill 710; LA64-NEXT: bl %plt(abort) 711 %1 = fcmp ule float %a, %b 712 br i1 %1, label %if.then, label %if.else 713if.else: 714 ret void 715if.then: 716 tail call void @abort() 717 unreachable 718} 719 720define void @br_fcmp_ule_bceqz_float(float %a, float %b) nounwind { 721; LA32-LABEL: br_fcmp_ule_bceqz_float: 722; LA32: # %bb.0: 723; LA32-NEXT: fcmp.clt.s $fcc0, $fa1, $fa0 724; LA32-NEXT: bceqz $fcc0, .LBB23_2 725; LA32-NEXT: # %bb.1: # %if.else 726; LA32-NEXT: ret 727; LA32-NEXT: .LBB23_2: # %if.then 728; LA32-NEXT: addi.w $sp, $sp, -16 729; LA32-NEXT: st.w $ra, $sp, 12 # 4-byte Folded Spill 730; LA32-NEXT: bl %plt(abort) 731; 732; LA64-LABEL: br_fcmp_ule_bceqz_float: 733; LA64: # %bb.0: 734; LA64-NEXT: fcmp.clt.s $fcc0, $fa1, $fa0 735; LA64-NEXT: bceqz $fcc0, .LBB23_2 736; LA64-NEXT: # %bb.1: # %if.else 737; LA64-NEXT: ret 738; LA64-NEXT: .LBB23_2: # %if.then 739; LA64-NEXT: addi.d $sp, $sp, -16 740; LA64-NEXT: st.d $ra, $sp, 8 # 8-byte Folded Spill 741; LA64-NEXT: bl %plt(abort) 742 %1 = fcmp ule float %a, %b 743 br i1 %1, label %if.then, label %if.else 744if.then: 745 tail call void @abort() 746 unreachable 747if.else: 748 ret void 749} 750 751define void @br_fcmp_une_bcnez_float(float %a, float %b) nounwind { 752; LA32-LABEL: br_fcmp_une_bcnez_float: 753; LA32: # %bb.0: 754; LA32-NEXT: fcmp.cune.s $fcc0, $fa0, $fa1 755; LA32-NEXT: bcnez $fcc0, .LBB24_2 756; LA32-NEXT: # %bb.1: # %if.else 757; LA32-NEXT: ret 758; LA32-NEXT: .LBB24_2: # %if.then 759; LA32-NEXT: addi.w $sp, $sp, -16 760; LA32-NEXT: st.w $ra, $sp, 12 # 4-byte Folded Spill 761; LA32-NEXT: bl %plt(abort) 762; 763; LA64-LABEL: br_fcmp_une_bcnez_float: 764; LA64: # %bb.0: 765; LA64-NEXT: fcmp.cune.s $fcc0, $fa0, $fa1 766; LA64-NEXT: bcnez $fcc0, .LBB24_2 767; LA64-NEXT: # %bb.1: # %if.else 768; LA64-NEXT: ret 769; LA64-NEXT: .LBB24_2: # %if.then 770; LA64-NEXT: addi.d $sp, $sp, -16 771; LA64-NEXT: st.d $ra, $sp, 8 # 8-byte Folded Spill 772; LA64-NEXT: bl %plt(abort) 773 %1 = fcmp une float %a, %b 774 br i1 %1, label %if.then, label %if.else 775if.else: 776 ret void 777if.then: 778 tail call void @abort() 779 unreachable 780} 781 782define void @br_fcmp_une_bceqz_float(float %a, float %b) nounwind { 783; LA32-LABEL: br_fcmp_une_bceqz_float: 784; LA32: # %bb.0: 785; LA32-NEXT: fcmp.ceq.s $fcc0, $fa0, $fa1 786; LA32-NEXT: bceqz $fcc0, .LBB25_2 787; LA32-NEXT: # %bb.1: # %if.else 788; LA32-NEXT: ret 789; LA32-NEXT: .LBB25_2: # %if.then 790; LA32-NEXT: addi.w $sp, $sp, -16 791; LA32-NEXT: st.w $ra, $sp, 12 # 4-byte Folded Spill 792; LA32-NEXT: bl %plt(abort) 793; 794; LA64-LABEL: br_fcmp_une_bceqz_float: 795; LA64: # %bb.0: 796; LA64-NEXT: fcmp.ceq.s $fcc0, $fa0, $fa1 797; LA64-NEXT: bceqz $fcc0, .LBB25_2 798; LA64-NEXT: # %bb.1: # %if.else 799; LA64-NEXT: ret 800; LA64-NEXT: .LBB25_2: # %if.then 801; LA64-NEXT: addi.d $sp, $sp, -16 802; LA64-NEXT: st.d $ra, $sp, 8 # 8-byte Folded Spill 803; LA64-NEXT: bl %plt(abort) 804 %1 = fcmp une float %a, %b 805 br i1 %1, label %if.then, label %if.else 806if.then: 807 tail call void @abort() 808 unreachable 809if.else: 810 ret void 811} 812 813define void @br_fcmp_uno_bcnez_float(float %a, float %b) nounwind { 814; LA32-LABEL: br_fcmp_uno_bcnez_float: 815; LA32: # %bb.0: 816; LA32-NEXT: fcmp.cun.s $fcc0, $fa0, $fa1 817; LA32-NEXT: bcnez $fcc0, .LBB26_2 818; LA32-NEXT: # %bb.1: # %if.else 819; LA32-NEXT: ret 820; LA32-NEXT: .LBB26_2: # %if.then 821; LA32-NEXT: addi.w $sp, $sp, -16 822; LA32-NEXT: st.w $ra, $sp, 12 # 4-byte Folded Spill 823; LA32-NEXT: bl %plt(abort) 824; 825; LA64-LABEL: br_fcmp_uno_bcnez_float: 826; LA64: # %bb.0: 827; LA64-NEXT: fcmp.cun.s $fcc0, $fa0, $fa1 828; LA64-NEXT: bcnez $fcc0, .LBB26_2 829; LA64-NEXT: # %bb.1: # %if.else 830; LA64-NEXT: ret 831; LA64-NEXT: .LBB26_2: # %if.then 832; LA64-NEXT: addi.d $sp, $sp, -16 833; LA64-NEXT: st.d $ra, $sp, 8 # 8-byte Folded Spill 834; LA64-NEXT: bl %plt(abort) 835 %1 = fcmp uno float %a, %b 836 br i1 %1, label %if.then, label %if.else 837if.else: 838 ret void 839if.then: 840 tail call void @abort() 841 unreachable 842} 843 844define void @br_fcmp_uno_bceqz_float(float %a, float %b) nounwind { 845; LA32-LABEL: br_fcmp_uno_bceqz_float: 846; LA32: # %bb.0: 847; LA32-NEXT: fcmp.cor.s $fcc0, $fa0, $fa1 848; LA32-NEXT: bceqz $fcc0, .LBB27_2 849; LA32-NEXT: # %bb.1: # %if.else 850; LA32-NEXT: ret 851; LA32-NEXT: .LBB27_2: # %if.then 852; LA32-NEXT: addi.w $sp, $sp, -16 853; LA32-NEXT: st.w $ra, $sp, 12 # 4-byte Folded Spill 854; LA32-NEXT: bl %plt(abort) 855; 856; LA64-LABEL: br_fcmp_uno_bceqz_float: 857; LA64: # %bb.0: 858; LA64-NEXT: fcmp.cor.s $fcc0, $fa0, $fa1 859; LA64-NEXT: bceqz $fcc0, .LBB27_2 860; LA64-NEXT: # %bb.1: # %if.else 861; LA64-NEXT: ret 862; LA64-NEXT: .LBB27_2: # %if.then 863; LA64-NEXT: addi.d $sp, $sp, -16 864; LA64-NEXT: st.d $ra, $sp, 8 # 8-byte Folded Spill 865; LA64-NEXT: bl %plt(abort) 866 %1 = fcmp uno float %a, %b 867 br i1 %1, label %if.then, label %if.else 868if.then: 869 tail call void @abort() 870 unreachable 871if.else: 872 ret void 873} 874