1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py 2; RUN: llc -O0 -mtriple=mipsel-linux-gnu -global-isel \ 3; RUN: -verify-machineinstrs %s -o -| FileCheck %s 4; RUN: llc -O0 -mtriple=mipsel-linux-gnu -mattr=+fp64,+mips32r2 -global-isel \ 5; RUN: -verify-machineinstrs %s -o -| FileCheck %s 6 7define i1 @false_s(float %x, float %y) { 8; CHECK-LABEL: false_s: 9; CHECK: # %bb.0: # %entry 10; CHECK-NEXT: ori $2, $zero, 0 11; CHECK-NEXT: jr $ra 12; CHECK-NEXT: nop 13entry: 14 %cmp = fcmp false float %x, %y 15 ret i1 %cmp 16} 17define i1 @true_s(float %x, float %y) { 18; CHECK-LABEL: true_s: 19; CHECK: # %bb.0: # %entry 20; CHECK-NEXT: ori $2, $zero, 1 21; CHECK-NEXT: jr $ra 22; CHECK-NEXT: nop 23entry: 24 %cmp = fcmp true float %x, %y 25 ret i1 %cmp 26} 27 28 29define i1 @uno_s(float %x, float %y) { 30; CHECK-LABEL: uno_s: 31; CHECK: # %bb.0: # %entry 32; CHECK-NEXT: addiu $2, $zero, 1 33; CHECK-NEXT: c.un.s $f12, $f14 34; CHECK-NEXT: movf $2, $zero, $fcc0 35; CHECK-NEXT: jr $ra 36; CHECK-NEXT: nop 37entry: 38 %cmp = fcmp uno float %x, %y 39 ret i1 %cmp 40} 41define i1 @ord_s(float %x, float %y) { 42; CHECK-LABEL: ord_s: 43; CHECK: # %bb.0: # %entry 44; CHECK-NEXT: addiu $2, $zero, 1 45; CHECK-NEXT: c.un.s $f12, $f14 46; CHECK-NEXT: movt $2, $zero, $fcc0 47; CHECK-NEXT: jr $ra 48; CHECK-NEXT: nop 49entry: 50 %cmp = fcmp ord float %x, %y 51 ret i1 %cmp 52} 53 54 55define i1 @oeq_s(float %x, float %y) { 56; CHECK-LABEL: oeq_s: 57; CHECK: # %bb.0: # %entry 58; CHECK-NEXT: addiu $2, $zero, 1 59; CHECK-NEXT: c.eq.s $f12, $f14 60; CHECK-NEXT: movf $2, $zero, $fcc0 61; CHECK-NEXT: jr $ra 62; CHECK-NEXT: nop 63entry: 64 %cmp = fcmp oeq float %x, %y 65 ret i1 %cmp 66} 67define i1 @une_s(float %x, float %y) { 68; CHECK-LABEL: une_s: 69; CHECK: # %bb.0: # %entry 70; CHECK-NEXT: addiu $2, $zero, 1 71; CHECK-NEXT: c.eq.s $f12, $f14 72; CHECK-NEXT: movt $2, $zero, $fcc0 73; CHECK-NEXT: jr $ra 74; CHECK-NEXT: nop 75entry: 76 %cmp = fcmp une float %x, %y 77 ret i1 %cmp 78} 79 80 81define i1 @ueq_s(float %x, float %y) { 82; CHECK-LABEL: ueq_s: 83; CHECK: # %bb.0: # %entry 84; CHECK-NEXT: addiu $2, $zero, 1 85; CHECK-NEXT: c.ueq.s $f12, $f14 86; CHECK-NEXT: movf $2, $zero, $fcc0 87; CHECK-NEXT: jr $ra 88; CHECK-NEXT: nop 89entry: 90 %cmp = fcmp ueq float %x, %y 91 ret i1 %cmp 92} 93define i1 @one_s(float %x, float %y) { 94; CHECK-LABEL: one_s: 95; CHECK: # %bb.0: # %entry 96; CHECK-NEXT: addiu $2, $zero, 1 97; CHECK-NEXT: c.ueq.s $f12, $f14 98; CHECK-NEXT: movt $2, $zero, $fcc0 99; CHECK-NEXT: jr $ra 100; CHECK-NEXT: nop 101entry: 102 %cmp = fcmp one float %x, %y 103 ret i1 %cmp 104} 105 106 107define i1 @olt_s(float %x, float %y) { 108; CHECK-LABEL: olt_s: 109; CHECK: # %bb.0: # %entry 110; CHECK-NEXT: addiu $2, $zero, 1 111; CHECK-NEXT: c.olt.s $f12, $f14 112; CHECK-NEXT: movf $2, $zero, $fcc0 113; CHECK-NEXT: jr $ra 114; CHECK-NEXT: nop 115entry: 116 %cmp = fcmp olt float %x, %y 117 ret i1 %cmp 118} 119define i1 @uge_s(float %x, float %y) { 120; CHECK-LABEL: uge_s: 121; CHECK: # %bb.0: # %entry 122; CHECK-NEXT: addiu $2, $zero, 1 123; CHECK-NEXT: c.olt.s $f12, $f14 124; CHECK-NEXT: movt $2, $zero, $fcc0 125; CHECK-NEXT: jr $ra 126; CHECK-NEXT: nop 127entry: 128 %cmp = fcmp uge float %x, %y 129 ret i1 %cmp 130} 131 132 133define i1 @ult_s(float %x, float %y) { 134; CHECK-LABEL: ult_s: 135; CHECK: # %bb.0: # %entry 136; CHECK-NEXT: addiu $2, $zero, 1 137; CHECK-NEXT: c.ult.s $f12, $f14 138; CHECK-NEXT: movf $2, $zero, $fcc0 139; CHECK-NEXT: jr $ra 140; CHECK-NEXT: nop 141entry: 142 %cmp = fcmp ult float %x, %y 143 ret i1 %cmp 144} 145define i1 @oge_s(float %x, float %y) { 146; CHECK-LABEL: oge_s: 147; CHECK: # %bb.0: # %entry 148; CHECK-NEXT: addiu $2, $zero, 1 149; CHECK-NEXT: c.ult.s $f12, $f14 150; CHECK-NEXT: movt $2, $zero, $fcc0 151; CHECK-NEXT: jr $ra 152; CHECK-NEXT: nop 153entry: 154 %cmp = fcmp oge float %x, %y 155 ret i1 %cmp 156} 157 158 159define i1 @ole_s(float %x, float %y) { 160; CHECK-LABEL: ole_s: 161; CHECK: # %bb.0: # %entry 162; CHECK-NEXT: addiu $2, $zero, 1 163; CHECK-NEXT: c.ole.s $f12, $f14 164; CHECK-NEXT: movf $2, $zero, $fcc0 165; CHECK-NEXT: jr $ra 166; CHECK-NEXT: nop 167entry: 168 %cmp = fcmp ole float %x, %y 169 ret i1 %cmp 170} 171define i1 @ugt_s(float %x, float %y) { 172; CHECK-LABEL: ugt_s: 173; CHECK: # %bb.0: # %entry 174; CHECK-NEXT: addiu $2, $zero, 1 175; CHECK-NEXT: c.ole.s $f12, $f14 176; CHECK-NEXT: movt $2, $zero, $fcc0 177; CHECK-NEXT: jr $ra 178; CHECK-NEXT: nop 179entry: 180 %cmp = fcmp ugt float %x, %y 181 ret i1 %cmp 182} 183 184 185define i1 @ule_s(float %x, float %y) { 186; CHECK-LABEL: ule_s: 187; CHECK: # %bb.0: # %entry 188; CHECK-NEXT: addiu $2, $zero, 1 189; CHECK-NEXT: c.ule.s $f12, $f14 190; CHECK-NEXT: movf $2, $zero, $fcc0 191; CHECK-NEXT: jr $ra 192; CHECK-NEXT: nop 193entry: 194 %cmp = fcmp ule float %x, %y 195 ret i1 %cmp 196} 197define i1 @ogt_s(float %x, float %y) { 198; CHECK-LABEL: ogt_s: 199; CHECK: # %bb.0: # %entry 200; CHECK-NEXT: addiu $2, $zero, 1 201; CHECK-NEXT: c.ule.s $f12, $f14 202; CHECK-NEXT: movt $2, $zero, $fcc0 203; CHECK-NEXT: jr $ra 204; CHECK-NEXT: nop 205entry: 206 %cmp = fcmp ogt float %x, %y 207 ret i1 %cmp 208} 209 210 211define i1 @false_d(double %x, double %y) { 212; CHECK-LABEL: false_d: 213; CHECK: # %bb.0: # %entry 214; CHECK-NEXT: ori $2, $zero, 0 215; CHECK-NEXT: jr $ra 216; CHECK-NEXT: nop 217entry: 218 %cmp = fcmp false double %x, %y 219 ret i1 %cmp 220} 221define i1 @true_d(double %x, double %y) { 222; CHECK-LABEL: true_d: 223; CHECK: # %bb.0: # %entry 224; CHECK-NEXT: ori $2, $zero, 1 225; CHECK-NEXT: jr $ra 226; CHECK-NEXT: nop 227entry: 228 %cmp = fcmp true double %x, %y 229 ret i1 %cmp 230} 231 232 233define i1 @uno_d(double %x, double %y) { 234; CHECK-LABEL: uno_d: 235; CHECK: # %bb.0: # %entry 236; CHECK-NEXT: addiu $2, $zero, 1 237; CHECK-NEXT: c.un.d $f12, $f14 238; CHECK-NEXT: movf $2, $zero, $fcc0 239; CHECK-NEXT: jr $ra 240; CHECK-NEXT: nop 241entry: 242 %cmp = fcmp uno double %x, %y 243 ret i1 %cmp 244} 245define i1 @ord_d(double %x, double %y) { 246; CHECK-LABEL: ord_d: 247; CHECK: # %bb.0: # %entry 248; CHECK-NEXT: addiu $2, $zero, 1 249; CHECK-NEXT: c.un.d $f12, $f14 250; CHECK-NEXT: movt $2, $zero, $fcc0 251; CHECK-NEXT: jr $ra 252; CHECK-NEXT: nop 253entry: 254 %cmp = fcmp ord double %x, %y 255 ret i1 %cmp 256} 257 258 259define i1 @oeq_d(double %x, double %y) { 260; CHECK-LABEL: oeq_d: 261; CHECK: # %bb.0: # %entry 262; CHECK-NEXT: addiu $2, $zero, 1 263; CHECK-NEXT: c.eq.d $f12, $f14 264; CHECK-NEXT: movf $2, $zero, $fcc0 265; CHECK-NEXT: jr $ra 266; CHECK-NEXT: nop 267entry: 268 %cmp = fcmp oeq double %x, %y 269 ret i1 %cmp 270} 271define i1 @une_d(double %x, double %y) { 272; CHECK-LABEL: une_d: 273; CHECK: # %bb.0: # %entry 274; CHECK-NEXT: addiu $2, $zero, 1 275; CHECK-NEXT: c.eq.d $f12, $f14 276; CHECK-NEXT: movt $2, $zero, $fcc0 277; CHECK-NEXT: jr $ra 278; CHECK-NEXT: nop 279entry: 280 %cmp = fcmp une double %x, %y 281 ret i1 %cmp 282} 283 284 285define i1 @ueq_d(double %x, double %y) { 286; CHECK-LABEL: ueq_d: 287; CHECK: # %bb.0: # %entry 288; CHECK-NEXT: addiu $2, $zero, 1 289; CHECK-NEXT: c.ueq.d $f12, $f14 290; CHECK-NEXT: movf $2, $zero, $fcc0 291; CHECK-NEXT: jr $ra 292; CHECK-NEXT: nop 293entry: 294 %cmp = fcmp ueq double %x, %y 295 ret i1 %cmp 296} 297define i1 @one_d(double %x, double %y) { 298; CHECK-LABEL: one_d: 299; CHECK: # %bb.0: # %entry 300; CHECK-NEXT: addiu $2, $zero, 1 301; CHECK-NEXT: c.ueq.d $f12, $f14 302; CHECK-NEXT: movt $2, $zero, $fcc0 303; CHECK-NEXT: jr $ra 304; CHECK-NEXT: nop 305entry: 306 %cmp = fcmp one double %x, %y 307 ret i1 %cmp 308} 309 310 311define i1 @olt_d(double %x, double %y) { 312; CHECK-LABEL: olt_d: 313; CHECK: # %bb.0: # %entry 314; CHECK-NEXT: addiu $2, $zero, 1 315; CHECK-NEXT: c.olt.d $f12, $f14 316; CHECK-NEXT: movf $2, $zero, $fcc0 317; CHECK-NEXT: jr $ra 318; CHECK-NEXT: nop 319entry: 320 %cmp = fcmp olt double %x, %y 321 ret i1 %cmp 322} 323define i1 @uge_d(double %x, double %y) { 324; CHECK-LABEL: uge_d: 325; CHECK: # %bb.0: # %entry 326; CHECK-NEXT: addiu $2, $zero, 1 327; CHECK-NEXT: c.olt.d $f12, $f14 328; CHECK-NEXT: movt $2, $zero, $fcc0 329; CHECK-NEXT: jr $ra 330; CHECK-NEXT: nop 331entry: 332 %cmp = fcmp uge double %x, %y 333 ret i1 %cmp 334} 335 336 337define i1 @ult_d(double %x, double %y) { 338; CHECK-LABEL: ult_d: 339; CHECK: # %bb.0: # %entry 340; CHECK-NEXT: addiu $2, $zero, 1 341; CHECK-NEXT: c.ult.d $f12, $f14 342; CHECK-NEXT: movf $2, $zero, $fcc0 343; CHECK-NEXT: jr $ra 344; CHECK-NEXT: nop 345entry: 346 %cmp = fcmp ult double %x, %y 347 ret i1 %cmp 348} 349define i1 @oge_d(double %x, double %y) { 350; CHECK-LABEL: oge_d: 351; CHECK: # %bb.0: # %entry 352; CHECK-NEXT: addiu $2, $zero, 1 353; CHECK-NEXT: c.ult.d $f12, $f14 354; CHECK-NEXT: movt $2, $zero, $fcc0 355; CHECK-NEXT: jr $ra 356; CHECK-NEXT: nop 357entry: 358 %cmp = fcmp oge double %x, %y 359 ret i1 %cmp 360} 361 362 363define i1 @ole_d(double %x, double %y) { 364; CHECK-LABEL: ole_d: 365; CHECK: # %bb.0: # %entry 366; CHECK-NEXT: addiu $2, $zero, 1 367; CHECK-NEXT: c.ole.d $f12, $f14 368; CHECK-NEXT: movf $2, $zero, $fcc0 369; CHECK-NEXT: jr $ra 370; CHECK-NEXT: nop 371entry: 372 %cmp = fcmp ole double %x, %y 373 ret i1 %cmp 374} 375define i1 @ugt_d(double %x, double %y) { 376; CHECK-LABEL: ugt_d: 377; CHECK: # %bb.0: # %entry 378; CHECK-NEXT: addiu $2, $zero, 1 379; CHECK-NEXT: c.ole.d $f12, $f14 380; CHECK-NEXT: movt $2, $zero, $fcc0 381; CHECK-NEXT: jr $ra 382; CHECK-NEXT: nop 383entry: 384 %cmp = fcmp ugt double %x, %y 385 ret i1 %cmp 386} 387 388 389define i1 @ule_d(double %x, double %y) { 390; CHECK-LABEL: ule_d: 391; CHECK: # %bb.0: # %entry 392; CHECK-NEXT: addiu $2, $zero, 1 393; CHECK-NEXT: c.ule.d $f12, $f14 394; CHECK-NEXT: movf $2, $zero, $fcc0 395; CHECK-NEXT: jr $ra 396; CHECK-NEXT: nop 397entry: 398 %cmp = fcmp ule double %x, %y 399 ret i1 %cmp 400} 401define i1 @ogt_d(double %x, double %y) { 402; CHECK-LABEL: ogt_d: 403; CHECK: # %bb.0: # %entry 404; CHECK-NEXT: addiu $2, $zero, 1 405; CHECK-NEXT: c.ule.d $f12, $f14 406; CHECK-NEXT: movt $2, $zero, $fcc0 407; CHECK-NEXT: jr $ra 408; CHECK-NEXT: nop 409entry: 410 %cmp = fcmp ogt double %x, %y 411 ret i1 %cmp 412} 413