413 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -O0 -mtriple=mipsel-linux-gnu -global-isel \3; RUN: -verify-machineinstrs %s -o -| FileCheck %s4; RUN: llc -O0 -mtriple=mipsel-linux-gnu -mattr=+fp64,+mips32r2 -global-isel \5; RUN: -verify-machineinstrs %s -o -| FileCheck %s6 7define i1 @false_s(float %x, float %y) {8; CHECK-LABEL: false_s:9; CHECK: # %bb.0: # %entry10; CHECK-NEXT: ori $2, $zero, 011; CHECK-NEXT: jr $ra12; CHECK-NEXT: nop13entry:14 %cmp = fcmp false float %x, %y15 ret i1 %cmp16}17define i1 @true_s(float %x, float %y) {18; CHECK-LABEL: true_s:19; CHECK: # %bb.0: # %entry20; CHECK-NEXT: ori $2, $zero, 121; CHECK-NEXT: jr $ra22; CHECK-NEXT: nop23entry:24 %cmp = fcmp true float %x, %y25 ret i1 %cmp26}27 28 29define i1 @uno_s(float %x, float %y) {30; CHECK-LABEL: uno_s:31; CHECK: # %bb.0: # %entry32; CHECK-NEXT: addiu $2, $zero, 133; CHECK-NEXT: c.un.s $f12, $f1434; CHECK-NEXT: movf $2, $zero, $fcc035; CHECK-NEXT: jr $ra36; CHECK-NEXT: nop37entry:38 %cmp = fcmp uno float %x, %y39 ret i1 %cmp40}41define i1 @ord_s(float %x, float %y) {42; CHECK-LABEL: ord_s:43; CHECK: # %bb.0: # %entry44; CHECK-NEXT: addiu $2, $zero, 145; CHECK-NEXT: c.un.s $f12, $f1446; CHECK-NEXT: movt $2, $zero, $fcc047; CHECK-NEXT: jr $ra48; CHECK-NEXT: nop49entry:50 %cmp = fcmp ord float %x, %y51 ret i1 %cmp52}53 54 55define i1 @oeq_s(float %x, float %y) {56; CHECK-LABEL: oeq_s:57; CHECK: # %bb.0: # %entry58; CHECK-NEXT: addiu $2, $zero, 159; CHECK-NEXT: c.eq.s $f12, $f1460; CHECK-NEXT: movf $2, $zero, $fcc061; CHECK-NEXT: jr $ra62; CHECK-NEXT: nop63entry:64 %cmp = fcmp oeq float %x, %y65 ret i1 %cmp66}67define i1 @une_s(float %x, float %y) {68; CHECK-LABEL: une_s:69; CHECK: # %bb.0: # %entry70; CHECK-NEXT: addiu $2, $zero, 171; CHECK-NEXT: c.eq.s $f12, $f1472; CHECK-NEXT: movt $2, $zero, $fcc073; CHECK-NEXT: jr $ra74; CHECK-NEXT: nop75entry:76 %cmp = fcmp une float %x, %y77 ret i1 %cmp78}79 80 81define i1 @ueq_s(float %x, float %y) {82; CHECK-LABEL: ueq_s:83; CHECK: # %bb.0: # %entry84; CHECK-NEXT: addiu $2, $zero, 185; CHECK-NEXT: c.ueq.s $f12, $f1486; CHECK-NEXT: movf $2, $zero, $fcc087; CHECK-NEXT: jr $ra88; CHECK-NEXT: nop89entry:90 %cmp = fcmp ueq float %x, %y91 ret i1 %cmp92}93define i1 @one_s(float %x, float %y) {94; CHECK-LABEL: one_s:95; CHECK: # %bb.0: # %entry96; CHECK-NEXT: addiu $2, $zero, 197; CHECK-NEXT: c.ueq.s $f12, $f1498; CHECK-NEXT: movt $2, $zero, $fcc099; CHECK-NEXT: jr $ra100; CHECK-NEXT: nop101entry:102 %cmp = fcmp one float %x, %y103 ret i1 %cmp104}105 106 107define i1 @olt_s(float %x, float %y) {108; CHECK-LABEL: olt_s:109; CHECK: # %bb.0: # %entry110; CHECK-NEXT: addiu $2, $zero, 1111; CHECK-NEXT: c.olt.s $f12, $f14112; CHECK-NEXT: movf $2, $zero, $fcc0113; CHECK-NEXT: jr $ra114; CHECK-NEXT: nop115entry:116 %cmp = fcmp olt float %x, %y117 ret i1 %cmp118}119define i1 @uge_s(float %x, float %y) {120; CHECK-LABEL: uge_s:121; CHECK: # %bb.0: # %entry122; CHECK-NEXT: addiu $2, $zero, 1123; CHECK-NEXT: c.olt.s $f12, $f14124; CHECK-NEXT: movt $2, $zero, $fcc0125; CHECK-NEXT: jr $ra126; CHECK-NEXT: nop127entry:128 %cmp = fcmp uge float %x, %y129 ret i1 %cmp130}131 132 133define i1 @ult_s(float %x, float %y) {134; CHECK-LABEL: ult_s:135; CHECK: # %bb.0: # %entry136; CHECK-NEXT: addiu $2, $zero, 1137; CHECK-NEXT: c.ult.s $f12, $f14138; CHECK-NEXT: movf $2, $zero, $fcc0139; CHECK-NEXT: jr $ra140; CHECK-NEXT: nop141entry:142 %cmp = fcmp ult float %x, %y143 ret i1 %cmp144}145define i1 @oge_s(float %x, float %y) {146; CHECK-LABEL: oge_s:147; CHECK: # %bb.0: # %entry148; CHECK-NEXT: addiu $2, $zero, 1149; CHECK-NEXT: c.ult.s $f12, $f14150; CHECK-NEXT: movt $2, $zero, $fcc0151; CHECK-NEXT: jr $ra152; CHECK-NEXT: nop153entry:154 %cmp = fcmp oge float %x, %y155 ret i1 %cmp156}157 158 159define i1 @ole_s(float %x, float %y) {160; CHECK-LABEL: ole_s:161; CHECK: # %bb.0: # %entry162; CHECK-NEXT: addiu $2, $zero, 1163; CHECK-NEXT: c.ole.s $f12, $f14164; CHECK-NEXT: movf $2, $zero, $fcc0165; CHECK-NEXT: jr $ra166; CHECK-NEXT: nop167entry:168 %cmp = fcmp ole float %x, %y169 ret i1 %cmp170}171define i1 @ugt_s(float %x, float %y) {172; CHECK-LABEL: ugt_s:173; CHECK: # %bb.0: # %entry174; CHECK-NEXT: addiu $2, $zero, 1175; CHECK-NEXT: c.ole.s $f12, $f14176; CHECK-NEXT: movt $2, $zero, $fcc0177; CHECK-NEXT: jr $ra178; CHECK-NEXT: nop179entry:180 %cmp = fcmp ugt float %x, %y181 ret i1 %cmp182}183 184 185define i1 @ule_s(float %x, float %y) {186; CHECK-LABEL: ule_s:187; CHECK: # %bb.0: # %entry188; CHECK-NEXT: addiu $2, $zero, 1189; CHECK-NEXT: c.ule.s $f12, $f14190; CHECK-NEXT: movf $2, $zero, $fcc0191; CHECK-NEXT: jr $ra192; CHECK-NEXT: nop193entry:194 %cmp = fcmp ule float %x, %y195 ret i1 %cmp196}197define i1 @ogt_s(float %x, float %y) {198; CHECK-LABEL: ogt_s:199; CHECK: # %bb.0: # %entry200; CHECK-NEXT: addiu $2, $zero, 1201; CHECK-NEXT: c.ule.s $f12, $f14202; CHECK-NEXT: movt $2, $zero, $fcc0203; CHECK-NEXT: jr $ra204; CHECK-NEXT: nop205entry:206 %cmp = fcmp ogt float %x, %y207 ret i1 %cmp208}209 210 211define i1 @false_d(double %x, double %y) {212; CHECK-LABEL: false_d:213; CHECK: # %bb.0: # %entry214; CHECK-NEXT: ori $2, $zero, 0215; CHECK-NEXT: jr $ra216; CHECK-NEXT: nop217entry:218 %cmp = fcmp false double %x, %y219 ret i1 %cmp220}221define i1 @true_d(double %x, double %y) {222; CHECK-LABEL: true_d:223; CHECK: # %bb.0: # %entry224; CHECK-NEXT: ori $2, $zero, 1225; CHECK-NEXT: jr $ra226; CHECK-NEXT: nop227entry:228 %cmp = fcmp true double %x, %y229 ret i1 %cmp230}231 232 233define i1 @uno_d(double %x, double %y) {234; CHECK-LABEL: uno_d:235; CHECK: # %bb.0: # %entry236; CHECK-NEXT: addiu $2, $zero, 1237; CHECK-NEXT: c.un.d $f12, $f14238; CHECK-NEXT: movf $2, $zero, $fcc0239; CHECK-NEXT: jr $ra240; CHECK-NEXT: nop241entry:242 %cmp = fcmp uno double %x, %y243 ret i1 %cmp244}245define i1 @ord_d(double %x, double %y) {246; CHECK-LABEL: ord_d:247; CHECK: # %bb.0: # %entry248; CHECK-NEXT: addiu $2, $zero, 1249; CHECK-NEXT: c.un.d $f12, $f14250; CHECK-NEXT: movt $2, $zero, $fcc0251; CHECK-NEXT: jr $ra252; CHECK-NEXT: nop253entry:254 %cmp = fcmp ord double %x, %y255 ret i1 %cmp256}257 258 259define i1 @oeq_d(double %x, double %y) {260; CHECK-LABEL: oeq_d:261; CHECK: # %bb.0: # %entry262; CHECK-NEXT: addiu $2, $zero, 1263; CHECK-NEXT: c.eq.d $f12, $f14264; CHECK-NEXT: movf $2, $zero, $fcc0265; CHECK-NEXT: jr $ra266; CHECK-NEXT: nop267entry:268 %cmp = fcmp oeq double %x, %y269 ret i1 %cmp270}271define i1 @une_d(double %x, double %y) {272; CHECK-LABEL: une_d:273; CHECK: # %bb.0: # %entry274; CHECK-NEXT: addiu $2, $zero, 1275; CHECK-NEXT: c.eq.d $f12, $f14276; CHECK-NEXT: movt $2, $zero, $fcc0277; CHECK-NEXT: jr $ra278; CHECK-NEXT: nop279entry:280 %cmp = fcmp une double %x, %y281 ret i1 %cmp282}283 284 285define i1 @ueq_d(double %x, double %y) {286; CHECK-LABEL: ueq_d:287; CHECK: # %bb.0: # %entry288; CHECK-NEXT: addiu $2, $zero, 1289; CHECK-NEXT: c.ueq.d $f12, $f14290; CHECK-NEXT: movf $2, $zero, $fcc0291; CHECK-NEXT: jr $ra292; CHECK-NEXT: nop293entry:294 %cmp = fcmp ueq double %x, %y295 ret i1 %cmp296}297define i1 @one_d(double %x, double %y) {298; CHECK-LABEL: one_d:299; CHECK: # %bb.0: # %entry300; CHECK-NEXT: addiu $2, $zero, 1301; CHECK-NEXT: c.ueq.d $f12, $f14302; CHECK-NEXT: movt $2, $zero, $fcc0303; CHECK-NEXT: jr $ra304; CHECK-NEXT: nop305entry:306 %cmp = fcmp one double %x, %y307 ret i1 %cmp308}309 310 311define i1 @olt_d(double %x, double %y) {312; CHECK-LABEL: olt_d:313; CHECK: # %bb.0: # %entry314; CHECK-NEXT: addiu $2, $zero, 1315; CHECK-NEXT: c.olt.d $f12, $f14316; CHECK-NEXT: movf $2, $zero, $fcc0317; CHECK-NEXT: jr $ra318; CHECK-NEXT: nop319entry:320 %cmp = fcmp olt double %x, %y321 ret i1 %cmp322}323define i1 @uge_d(double %x, double %y) {324; CHECK-LABEL: uge_d:325; CHECK: # %bb.0: # %entry326; CHECK-NEXT: addiu $2, $zero, 1327; CHECK-NEXT: c.olt.d $f12, $f14328; CHECK-NEXT: movt $2, $zero, $fcc0329; CHECK-NEXT: jr $ra330; CHECK-NEXT: nop331entry:332 %cmp = fcmp uge double %x, %y333 ret i1 %cmp334}335 336 337define i1 @ult_d(double %x, double %y) {338; CHECK-LABEL: ult_d:339; CHECK: # %bb.0: # %entry340; CHECK-NEXT: addiu $2, $zero, 1341; CHECK-NEXT: c.ult.d $f12, $f14342; CHECK-NEXT: movf $2, $zero, $fcc0343; CHECK-NEXT: jr $ra344; CHECK-NEXT: nop345entry:346 %cmp = fcmp ult double %x, %y347 ret i1 %cmp348}349define i1 @oge_d(double %x, double %y) {350; CHECK-LABEL: oge_d:351; CHECK: # %bb.0: # %entry352; CHECK-NEXT: addiu $2, $zero, 1353; CHECK-NEXT: c.ult.d $f12, $f14354; CHECK-NEXT: movt $2, $zero, $fcc0355; CHECK-NEXT: jr $ra356; CHECK-NEXT: nop357entry:358 %cmp = fcmp oge double %x, %y359 ret i1 %cmp360}361 362 363define i1 @ole_d(double %x, double %y) {364; CHECK-LABEL: ole_d:365; CHECK: # %bb.0: # %entry366; CHECK-NEXT: addiu $2, $zero, 1367; CHECK-NEXT: c.ole.d $f12, $f14368; CHECK-NEXT: movf $2, $zero, $fcc0369; CHECK-NEXT: jr $ra370; CHECK-NEXT: nop371entry:372 %cmp = fcmp ole double %x, %y373 ret i1 %cmp374}375define i1 @ugt_d(double %x, double %y) {376; CHECK-LABEL: ugt_d:377; CHECK: # %bb.0: # %entry378; CHECK-NEXT: addiu $2, $zero, 1379; CHECK-NEXT: c.ole.d $f12, $f14380; CHECK-NEXT: movt $2, $zero, $fcc0381; CHECK-NEXT: jr $ra382; CHECK-NEXT: nop383entry:384 %cmp = fcmp ugt double %x, %y385 ret i1 %cmp386}387 388 389define i1 @ule_d(double %x, double %y) {390; CHECK-LABEL: ule_d:391; CHECK: # %bb.0: # %entry392; CHECK-NEXT: addiu $2, $zero, 1393; CHECK-NEXT: c.ule.d $f12, $f14394; CHECK-NEXT: movf $2, $zero, $fcc0395; CHECK-NEXT: jr $ra396; CHECK-NEXT: nop397entry:398 %cmp = fcmp ule double %x, %y399 ret i1 %cmp400}401define i1 @ogt_d(double %x, double %y) {402; CHECK-LABEL: ogt_d:403; CHECK: # %bb.0: # %entry404; CHECK-NEXT: addiu $2, $zero, 1405; CHECK-NEXT: c.ule.d $f12, $f14406; CHECK-NEXT: movt $2, $zero, $fcc0407; CHECK-NEXT: jr $ra408; CHECK-NEXT: nop409entry:410 %cmp = fcmp ogt double %x, %y411 ret i1 %cmp412}413