5128 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py2; RUN: opt < %s -passes=instcombine -S | FileCheck %s3 4define i1 @PR1738(double %x, double %y) {5; CHECK-LABEL: @PR1738(6; CHECK-NEXT: [[AND:%.*]] = fcmp ord double [[X:%.*]], [[Y:%.*]]7; CHECK-NEXT: ret i1 [[AND]]8;9 %cmp1 = fcmp ord double %x, 0.010 %cmp2 = fcmp ord double %y, 0.011 %and = and i1 %cmp1, %cmp212 ret i1 %and13}14 15; TODO: this can be supported by freezing %y16define i1 @PR1738_logical(double %x, double %y) {17; CHECK-LABEL: @PR1738_logical(18; CHECK-NEXT: [[CMP1:%.*]] = fcmp ord double [[X:%.*]], 0.000000e+0019; CHECK-NEXT: [[CMP2:%.*]] = fcmp ord double [[Y:%.*]], 0.000000e+0020; CHECK-NEXT: [[AND:%.*]] = select i1 [[CMP1]], i1 [[CMP2]], i1 false21; CHECK-NEXT: ret i1 [[AND]]22;23 %cmp1 = fcmp ord double %x, 0.024 %cmp2 = fcmp ord double %y, 0.025 %and = select i1 %cmp1, i1 %cmp2, i1 false26 ret i1 %and27}28 29define i1 @PR1738_logical_noundef(double %x, double noundef %y) {30; CHECK-LABEL: @PR1738_logical_noundef(31; CHECK-NEXT: [[AND:%.*]] = fcmp ord double [[X:%.*]], [[Y:%.*]]32; CHECK-NEXT: ret i1 [[AND]]33;34 %cmp1 = fcmp ord double %x, 0.035 %cmp2 = fcmp ord double %y, 0.036 %and = select i1 %cmp1, i1 %cmp2, i1 false37 ret i1 %and38}39 40define <2 x i1> @PR1738_vec_undef(<2 x double> %x, <2 x double> %y) {41; CHECK-LABEL: @PR1738_vec_undef(42; CHECK-NEXT: [[CMP1:%.*]] = fcmp ord <2 x double> [[X:%.*]], <double 0.000000e+00, double undef>43; CHECK-NEXT: [[CMP2:%.*]] = fcmp ord <2 x double> [[Y:%.*]], <double undef, double 0.000000e+00>44; CHECK-NEXT: [[OR:%.*]] = and <2 x i1> [[CMP1]], [[CMP2]]45; CHECK-NEXT: ret <2 x i1> [[OR]]46;47 %cmp1 = fcmp ord <2 x double> %x, <double 0.0, double undef>48 %cmp2 = fcmp ord <2 x double> %y, <double undef, double 0.0>49 %or = and <2 x i1> %cmp1, %cmp250 ret <2 x i1> %or51}52 53define <2 x i1> @PR1738_vec_poison(<2 x double> %x, <2 x double> %y) {54; CHECK-LABEL: @PR1738_vec_poison(55; CHECK-NEXT: [[OR:%.*]] = fcmp ord <2 x double> [[X:%.*]], [[Y:%.*]]56; CHECK-NEXT: ret <2 x i1> [[OR]]57;58 %cmp1 = fcmp ord <2 x double> %x, <double 0.0, double poison>59 %cmp2 = fcmp ord <2 x double> %y, <double poison, double 0.0>60 %or = and <2 x i1> %cmp1, %cmp261 ret <2 x i1> %or62}63 64define i1 @PR41069(i1 %z, float %c, float %d) {65; CHECK-LABEL: @PR41069(66; CHECK-NEXT: [[TMP1:%.*]] = fcmp ord float [[D:%.*]], [[C:%.*]]67; CHECK-NEXT: [[R:%.*]] = and i1 [[TMP1]], [[Z:%.*]]68; CHECK-NEXT: ret i1 [[R]]69;70 %ord1 = fcmp arcp ord float %c, 0.071 %and = and i1 %ord1, %z72 %ord2 = fcmp afn ord float %d, 0.073 %r = and i1 %and, %ord274 ret i1 %r75}76 77; FIXME: this can be supported by freezing %d78define i1 @PR41069_logical(i1 %z, float %c, float %d) {79; CHECK-LABEL: @PR41069_logical(80; CHECK-NEXT: [[ORD1:%.*]] = fcmp arcp ord float [[C:%.*]], 0.000000e+0081; CHECK-NEXT: [[AND:%.*]] = select i1 [[ORD1]], i1 [[Z:%.*]], i1 false82; CHECK-NEXT: [[ORD2:%.*]] = fcmp afn ord float [[D:%.*]], 0.000000e+0083; CHECK-NEXT: [[R:%.*]] = select i1 [[AND]], i1 [[ORD2]], i1 false84; CHECK-NEXT: ret i1 [[R]]85;86 %ord1 = fcmp arcp ord float %c, 0.087 %and = select i1 %ord1, i1 %z, i1 false88 %ord2 = fcmp afn ord float %d, 0.089 %r = select i1 %and, i1 %ord2, i1 false90 ret i1 %r91}92 93define i1 @PR41069_commute(i1 %z, float %c, float %d) {94; CHECK-LABEL: @PR41069_commute(95; CHECK-NEXT: [[TMP1:%.*]] = fcmp ninf ord float [[D:%.*]], [[C:%.*]]96; CHECK-NEXT: [[R:%.*]] = and i1 [[TMP1]], [[Z:%.*]]97; CHECK-NEXT: ret i1 [[R]]98;99 %ord1 = fcmp ninf ord float %c, 0.0100 %and = and i1 %ord1, %z101 %ord2 = fcmp ninf reassoc ord float %d, 0.0102 %r = and i1 %ord2, %and103 ret i1 %r104}105 106; TODO: this should be fixed using freeze107define i1 @PR41069_commute_logical(i1 %z, float %c, float %d) {108; CHECK-LABEL: @PR41069_commute_logical(109; CHECK-NEXT: [[ORD1:%.*]] = fcmp ninf ord float [[C:%.*]], 0.000000e+00110; CHECK-NEXT: [[ORD2:%.*]] = fcmp reassoc ninf ord float [[D:%.*]], 0.000000e+00111; CHECK-NEXT: [[TMP1:%.*]] = select i1 [[ORD2]], i1 [[ORD1]], i1 false112; CHECK-NEXT: [[R:%.*]] = select i1 [[TMP1]], i1 [[Z:%.*]], i1 false113; CHECK-NEXT: ret i1 [[R]]114;115 %ord1 = fcmp ninf ord float %c, 0.0116 %and = select i1 %ord1, i1 %z, i1 false117 %ord2 = fcmp ninf reassoc ord float %d, 0.0118 %r = select i1 %ord2, i1 %and, i1 false119 ret i1 %r120}121 122; Commute differently and make sure vectors work.123 124define <2 x i1> @PR41069_vec(<2 x double> %a, <2 x double> %b, <2 x double> %c, <2 x double> %d) {125; CHECK-LABEL: @PR41069_vec(126; CHECK-NEXT: [[ORD1:%.*]] = fcmp ord <2 x double> [[A:%.*]], [[B:%.*]]127; CHECK-NEXT: [[ORD2:%.*]] = fcmp ord <2 x double> [[C:%.*]], <double 0.000000e+00, double undef>128; CHECK-NEXT: [[AND:%.*]] = and <2 x i1> [[ORD1]], [[ORD2]]129; CHECK-NEXT: [[ORD3:%.*]] = fcmp ord <2 x double> [[D:%.*]], zeroinitializer130; CHECK-NEXT: [[R:%.*]] = and <2 x i1> [[AND]], [[ORD3]]131; CHECK-NEXT: ret <2 x i1> [[R]]132;133 %ord1 = fcmp ord <2 x double> %a, %b134 %ord2 = fcmp ord <2 x double> %c, <double 0.0, double undef>135 %and = and <2 x i1> %ord1, %ord2136 %ord3 = fcmp ord <2 x double> %d, zeroinitializer137 %r = and <2 x i1> %and, %ord3138 ret <2 x i1> %r139}140 141define <2 x i1> @PR41069_vec_commute(<2 x double> %a, <2 x double> %b, <2 x double> %c, <2 x double> %d) {142; CHECK-LABEL: @PR41069_vec_commute(143; CHECK-NEXT: [[ORD1:%.*]] = fcmp ord <2 x double> [[A:%.*]], [[B:%.*]]144; CHECK-NEXT: [[ORD2:%.*]] = fcmp ord <2 x double> [[C:%.*]], <double 0.000000e+00, double undef>145; CHECK-NEXT: [[AND:%.*]] = and <2 x i1> [[ORD1]], [[ORD2]]146; CHECK-NEXT: [[ORD3:%.*]] = fcmp ord <2 x double> [[D:%.*]], zeroinitializer147; CHECK-NEXT: [[R:%.*]] = and <2 x i1> [[ORD3]], [[AND]]148; CHECK-NEXT: ret <2 x i1> [[R]]149;150 %ord1 = fcmp ord <2 x double> %a, %b151 %ord2 = fcmp ord <2 x double> %c, <double 0.0, double undef>152 %and = and <2 x i1> %ord1, %ord2153 %ord3 = fcmp ord <2 x double> %d, zeroinitializer154 %r = and <2 x i1> %ord3, %and155 ret <2 x i1> %r156}157 158define i1 @PR15737(float %a, double %b) {159; CHECK-LABEL: @PR15737(160; CHECK-NEXT: [[CMP:%.*]] = fcmp ord float [[A:%.*]], 0.000000e+00161; CHECK-NEXT: [[CMP1:%.*]] = fcmp ord double [[B:%.*]], 0.000000e+00162; CHECK-NEXT: [[AND:%.*]] = and i1 [[CMP]], [[CMP1]]163; CHECK-NEXT: ret i1 [[AND]]164;165 %cmp = fcmp ord float %a, 0.000000e+00166 %cmp1 = fcmp ord double %b, 0.000000e+00167 %and = and i1 %cmp, %cmp1168 ret i1 %and169}170 171define i1 @PR15737_logical(float %a, double %b) {172; CHECK-LABEL: @PR15737_logical(173; CHECK-NEXT: [[CMP:%.*]] = fcmp ord float [[A:%.*]], 0.000000e+00174; CHECK-NEXT: [[CMP1:%.*]] = fcmp ord double [[B:%.*]], 0.000000e+00175; CHECK-NEXT: [[AND:%.*]] = select i1 [[CMP]], i1 [[CMP1]], i1 false176; CHECK-NEXT: ret i1 [[AND]]177;178 %cmp = fcmp ord float %a, 0.000000e+00179 %cmp1 = fcmp ord double %b, 0.000000e+00180 %and = select i1 %cmp, i1 %cmp1, i1 false181 ret i1 %and182}183 184define <2 x i1> @t9(<2 x float> %a, <2 x double> %b) {185; CHECK-LABEL: @t9(186; CHECK-NEXT: [[CMP:%.*]] = fcmp ord <2 x float> [[A:%.*]], zeroinitializer187; CHECK-NEXT: [[CMP1:%.*]] = fcmp ord <2 x double> [[B:%.*]], zeroinitializer188; CHECK-NEXT: [[AND:%.*]] = and <2 x i1> [[CMP]], [[CMP1]]189; CHECK-NEXT: ret <2 x i1> [[AND]]190;191 %cmp = fcmp ord <2 x float> %a, zeroinitializer192 %cmp1 = fcmp ord <2 x double> %b, zeroinitializer193 %and = and <2 x i1> %cmp, %cmp1194 ret <2 x i1> %and195}196 197define i1 @fcmp_ord_nonzero(float %x, float %y) {198; CHECK-LABEL: @fcmp_ord_nonzero(199; CHECK-NEXT: [[AND:%.*]] = fcmp ord float [[X:%.*]], [[Y:%.*]]200; CHECK-NEXT: ret i1 [[AND]]201;202 %cmp1 = fcmp ord float %x, 1.0203 %cmp2 = fcmp ord float %y, 2.0204 %and = and i1 %cmp1, %cmp2205 ret i1 %and206}207 208; TODO: this can be supported by freezing %y209define i1 @fcmp_ord_nonzero_logical(float %x, float %y) {210; CHECK-LABEL: @fcmp_ord_nonzero_logical(211; CHECK-NEXT: [[CMP1:%.*]] = fcmp ord float [[X:%.*]], 0.000000e+00212; CHECK-NEXT: [[CMP2:%.*]] = fcmp ord float [[Y:%.*]], 0.000000e+00213; CHECK-NEXT: [[AND:%.*]] = select i1 [[CMP1]], i1 [[CMP2]], i1 false214; CHECK-NEXT: ret i1 [[AND]]215;216 %cmp1 = fcmp ord float %x, 1.0217 %cmp2 = fcmp ord float %y, 2.0218 %and = select i1 %cmp1, i1 %cmp2, i1 false219 ret i1 %and220}221 222define <3 x i1> @fcmp_ord_nonzero_vec(<3 x float> %x, <3 x float> %y) {223; CHECK-LABEL: @fcmp_ord_nonzero_vec(224; CHECK-NEXT: [[AND:%.*]] = fcmp ord <3 x float> [[X:%.*]], [[Y:%.*]]225; CHECK-NEXT: ret <3 x i1> [[AND]]226;227 %cmp1 = fcmp ord <3 x float> %x, <float 1.0, float 2.0, float 3.0>228 %cmp2 = fcmp ord <3 x float> %y, <float 3.0, float 2.0, float 1.0>229 %and = and <3 x i1> %cmp1, %cmp2230 ret <3 x i1> %and231}232 233define i1 @auto_gen_0(double %a, double %b) {234; CHECK-LABEL: @auto_gen_0(235; CHECK-NEXT: ret i1 false236;237 %cmp = fcmp false double %a, %b238 %cmp1 = fcmp false double %a, %b239 %retval = and i1 %cmp, %cmp1240 ret i1 %retval241}242 243define i1 @auto_gen_0_logical(double %a, double %b) {244; CHECK-LABEL: @auto_gen_0_logical(245; CHECK-NEXT: ret i1 false246;247 %cmp = fcmp false double %a, %b248 %cmp1 = fcmp false double %a, %b249 %retval = select i1 %cmp, i1 %cmp1, i1 false250 ret i1 %retval251}252 253define i1 @auto_gen_0_logical_fmf(double %a, double %b) {254; CHECK-LABEL: @auto_gen_0_logical_fmf(255; CHECK-NEXT: ret i1 false256;257 %cmp = fcmp false double %a, %b258 %cmp1 = fcmp fast false double %a, %b259 %retval = select i1 %cmp, i1 %cmp1, i1 false260 ret i1 %retval261}262 263define i1 @auto_gen_1(double %a, double %b) {264; CHECK-LABEL: @auto_gen_1(265; CHECK-NEXT: ret i1 false266;267 %cmp = fcmp oeq double %a, %b268 %cmp1 = fcmp false double %a, %b269 %retval = and i1 %cmp, %cmp1270 ret i1 %retval271}272 273define i1 @auto_gen_1_logical(double %a, double %b) {274; CHECK-LABEL: @auto_gen_1_logical(275; CHECK-NEXT: ret i1 false276;277 %cmp = fcmp oeq double %a, %b278 %cmp1 = fcmp false double %a, %b279 %retval = select i1 %cmp, i1 %cmp1, i1 false280 ret i1 %retval281}282 283define i1 @auto_gen_1_logical_fmf(double %a, double %b) {284; CHECK-LABEL: @auto_gen_1_logical_fmf(285; CHECK-NEXT: ret i1 false286;287 %cmp = fcmp fast oeq double %a, %b288 %cmp1 = fcmp fast false double %a, %b289 %retval = select i1 %cmp, i1 %cmp1, i1 false290 ret i1 %retval291}292 293define i1 @auto_gen_2(double %a, double %b) {294; CHECK-LABEL: @auto_gen_2(295; CHECK-NEXT: [[RETVAL:%.*]] = fcmp oeq double [[A:%.*]], [[B:%.*]]296; CHECK-NEXT: ret i1 [[RETVAL]]297;298 %cmp = fcmp oeq double %a, %b299 %cmp1 = fcmp oeq double %a, %b300 %retval = and i1 %cmp, %cmp1301 ret i1 %retval302}303 304define i1 @auto_gen_2_logical(double %a, double %b) {305; CHECK-LABEL: @auto_gen_2_logical(306; CHECK-NEXT: [[RETVAL:%.*]] = fcmp oeq double [[A:%.*]], [[B:%.*]]307; CHECK-NEXT: ret i1 [[RETVAL]]308;309 %cmp = fcmp oeq double %a, %b310 %cmp1 = fcmp oeq double %a, %b311 %retval = select i1 %cmp, i1 %cmp1, i1 false312 ret i1 %retval313}314 315define i1 @auto_gen_2_logical_fmf(double %a, double %b) {316; CHECK-LABEL: @auto_gen_2_logical_fmf(317; CHECK-NEXT: [[RETVAL:%.*]] = fcmp oeq double [[A:%.*]], [[B:%.*]]318; CHECK-NEXT: ret i1 [[RETVAL]]319;320 %cmp = fcmp oeq double %a, %b321 %cmp1 = fcmp fast oeq double %a, %b322 %retval = select i1 %cmp, i1 %cmp1, i1 false323 ret i1 %retval324}325 326define i1 @auto_gen_3(double %a, double %b) {327; CHECK-LABEL: @auto_gen_3(328; CHECK-NEXT: ret i1 false329;330 %cmp = fcmp ogt double %a, %b331 %cmp1 = fcmp false double %a, %b332 %retval = and i1 %cmp, %cmp1333 ret i1 %retval334}335 336define i1 @auto_gen_3_logical(double %a, double %b) {337; CHECK-LABEL: @auto_gen_3_logical(338; CHECK-NEXT: ret i1 false339;340 %cmp = fcmp ogt double %a, %b341 %cmp1 = fcmp false double %a, %b342 %retval = select i1 %cmp, i1 %cmp1, i1 false343 ret i1 %retval344}345 346define i1 @auto_gen_3_logical_fmf(double %a, double %b) {347; CHECK-LABEL: @auto_gen_3_logical_fmf(348; CHECK-NEXT: ret i1 false349;350 %cmp = fcmp fast ogt double %a, %b351 %cmp1 = fcmp fast false double %a, %b352 %retval = select i1 %cmp, i1 %cmp1, i1 false353 ret i1 %retval354}355 356define i1 @auto_gen_4(double %a, double %b) {357; CHECK-LABEL: @auto_gen_4(358; CHECK-NEXT: ret i1 false359;360 %cmp = fcmp ogt double %a, %b361 %cmp1 = fcmp oeq double %a, %b362 %retval = and i1 %cmp, %cmp1363 ret i1 %retval364}365 366define i1 @auto_gen_4_logical(double %a, double %b) {367; CHECK-LABEL: @auto_gen_4_logical(368; CHECK-NEXT: ret i1 false369;370 %cmp = fcmp ogt double %a, %b371 %cmp1 = fcmp oeq double %a, %b372 %retval = select i1 %cmp, i1 %cmp1, i1 false373 ret i1 %retval374}375 376define i1 @auto_gen_4_logical_fmf(double %a, double %b) {377; CHECK-LABEL: @auto_gen_4_logical_fmf(378; CHECK-NEXT: ret i1 false379;380 %cmp = fcmp ogt double %a, %b381 %cmp1 = fcmp fast oeq double %a, %b382 %retval = select i1 %cmp, i1 %cmp1, i1 false383 ret i1 %retval384}385 386define i1 @auto_gen_5(double %a, double %b) {387; CHECK-LABEL: @auto_gen_5(388; CHECK-NEXT: [[RETVAL:%.*]] = fcmp ogt double [[A:%.*]], [[B:%.*]]389; CHECK-NEXT: ret i1 [[RETVAL]]390;391 %cmp = fcmp ogt double %a, %b392 %cmp1 = fcmp ogt double %a, %b393 %retval = and i1 %cmp, %cmp1394 ret i1 %retval395}396 397define i1 @auto_gen_5_logical(double %a, double %b) {398; CHECK-LABEL: @auto_gen_5_logical(399; CHECK-NEXT: [[RETVAL:%.*]] = fcmp ogt double [[A:%.*]], [[B:%.*]]400; CHECK-NEXT: ret i1 [[RETVAL]]401;402 %cmp = fcmp ogt double %a, %b403 %cmp1 = fcmp ogt double %a, %b404 %retval = select i1 %cmp, i1 %cmp1, i1 false405 ret i1 %retval406}407 408define i1 @auto_gen_5_logical_fmf(double %a, double %b) {409; CHECK-LABEL: @auto_gen_5_logical_fmf(410; CHECK-NEXT: [[RETVAL:%.*]] = fcmp fast ogt double [[A:%.*]], [[B:%.*]]411; CHECK-NEXT: ret i1 [[RETVAL]]412;413 %cmp = fcmp fast ogt double %a, %b414 %cmp1 = fcmp fast ogt double %a, %b415 %retval = select i1 %cmp, i1 %cmp1, i1 false416 ret i1 %retval417}418 419define i1 @auto_gen_6(double %a, double %b) {420; CHECK-LABEL: @auto_gen_6(421; CHECK-NEXT: ret i1 false422;423 %cmp = fcmp oge double %a, %b424 %cmp1 = fcmp false double %a, %b425 %retval = and i1 %cmp, %cmp1426 ret i1 %retval427}428 429define i1 @auto_gen_6_logical(double %a, double %b) {430; CHECK-LABEL: @auto_gen_6_logical(431; CHECK-NEXT: ret i1 false432;433 %cmp = fcmp oge double %a, %b434 %cmp1 = fcmp false double %a, %b435 %retval = select i1 %cmp, i1 %cmp1, i1 false436 ret i1 %retval437}438 439define i1 @auto_gen_6_logical_fmf(double %a, double %b) {440; CHECK-LABEL: @auto_gen_6_logical_fmf(441; CHECK-NEXT: ret i1 false442;443 %cmp = fcmp oge double %a, %b444 %cmp1 = fcmp fast false double %a, %b445 %retval = select i1 %cmp, i1 %cmp1, i1 false446 ret i1 %retval447}448 449define i1 @auto_gen_7(double %a, double %b) {450; CHECK-LABEL: @auto_gen_7(451; CHECK-NEXT: [[RETVAL:%.*]] = fcmp oeq double [[A:%.*]], [[B:%.*]]452; CHECK-NEXT: ret i1 [[RETVAL]]453;454 %cmp = fcmp oge double %a, %b455 %cmp1 = fcmp oeq double %a, %b456 %retval = and i1 %cmp, %cmp1457 ret i1 %retval458}459 460define i1 @auto_gen_7_logical(double %a, double %b) {461; CHECK-LABEL: @auto_gen_7_logical(462; CHECK-NEXT: [[RETVAL:%.*]] = fcmp oeq double [[A:%.*]], [[B:%.*]]463; CHECK-NEXT: ret i1 [[RETVAL]]464;465 %cmp = fcmp oge double %a, %b466 %cmp1 = fcmp oeq double %a, %b467 %retval = select i1 %cmp, i1 %cmp1, i1 false468 ret i1 %retval469}470 471define i1 @auto_gen_7_logical_fmf(double %a, double %b) {472; CHECK-LABEL: @auto_gen_7_logical_fmf(473; CHECK-NEXT: [[RETVAL:%.*]] = fcmp fast oeq double [[A:%.*]], [[B:%.*]]474; CHECK-NEXT: ret i1 [[RETVAL]]475;476 %cmp = fcmp fast oge double %a, %b477 %cmp1 = fcmp fast oeq double %a, %b478 %retval = select i1 %cmp, i1 %cmp1, i1 false479 ret i1 %retval480}481 482define i1 @auto_gen_8(double %a, double %b) {483; CHECK-LABEL: @auto_gen_8(484; CHECK-NEXT: [[RETVAL:%.*]] = fcmp ogt double [[A:%.*]], [[B:%.*]]485; CHECK-NEXT: ret i1 [[RETVAL]]486;487 %cmp = fcmp oge double %a, %b488 %cmp1 = fcmp ogt double %a, %b489 %retval = and i1 %cmp, %cmp1490 ret i1 %retval491}492 493define i1 @auto_gen_8_logical(double %a, double %b) {494; CHECK-LABEL: @auto_gen_8_logical(495; CHECK-NEXT: [[RETVAL:%.*]] = fcmp ogt double [[A:%.*]], [[B:%.*]]496; CHECK-NEXT: ret i1 [[RETVAL]]497;498 %cmp = fcmp oge double %a, %b499 %cmp1 = fcmp ogt double %a, %b500 %retval = select i1 %cmp, i1 %cmp1, i1 false501 ret i1 %retval502}503 504define i1 @auto_gen_8_logical_fmf(double %a, double %b) {505; CHECK-LABEL: @auto_gen_8_logical_fmf(506; CHECK-NEXT: [[RETVAL:%.*]] = fcmp ogt double [[A:%.*]], [[B:%.*]]507; CHECK-NEXT: ret i1 [[RETVAL]]508;509 %cmp = fcmp oge double %a, %b510 %cmp1 = fcmp fast ogt double %a, %b511 %retval = select i1 %cmp, i1 %cmp1, i1 false512 ret i1 %retval513}514 515define i1 @auto_gen_9(double %a, double %b) {516; CHECK-LABEL: @auto_gen_9(517; CHECK-NEXT: [[RETVAL:%.*]] = fcmp oge double [[A:%.*]], [[B:%.*]]518; CHECK-NEXT: ret i1 [[RETVAL]]519;520 %cmp = fcmp oge double %a, %b521 %cmp1 = fcmp oge double %a, %b522 %retval = and i1 %cmp, %cmp1523 ret i1 %retval524}525 526define i1 @auto_gen_9_logical(double %a, double %b) {527; CHECK-LABEL: @auto_gen_9_logical(528; CHECK-NEXT: [[RETVAL:%.*]] = fcmp oge double [[A:%.*]], [[B:%.*]]529; CHECK-NEXT: ret i1 [[RETVAL]]530;531 %cmp = fcmp oge double %a, %b532 %cmp1 = fcmp oge double %a, %b533 %retval = select i1 %cmp, i1 %cmp1, i1 false534 ret i1 %retval535}536 537define i1 @auto_gen_9_logical_fmf(double %a, double %b) {538; CHECK-LABEL: @auto_gen_9_logical_fmf(539; CHECK-NEXT: [[RETVAL:%.*]] = fcmp fast oge double [[A:%.*]], [[B:%.*]]540; CHECK-NEXT: ret i1 [[RETVAL]]541;542 %cmp = fcmp fast oge double %a, %b543 %cmp1 = fcmp fast oge double %a, %b544 %retval = select i1 %cmp, i1 %cmp1, i1 false545 ret i1 %retval546}547 548define i1 @auto_gen_10(double %a, double %b) {549; CHECK-LABEL: @auto_gen_10(550; CHECK-NEXT: ret i1 false551;552 %cmp = fcmp olt double %a, %b553 %cmp1 = fcmp false double %a, %b554 %retval = and i1 %cmp, %cmp1555 ret i1 %retval556}557 558define i1 @auto_gen_10_logical(double %a, double %b) {559; CHECK-LABEL: @auto_gen_10_logical(560; CHECK-NEXT: ret i1 false561;562 %cmp = fcmp olt double %a, %b563 %cmp1 = fcmp false double %a, %b564 %retval = select i1 %cmp, i1 %cmp1, i1 false565 ret i1 %retval566}567 568define i1 @auto_gen_10_logical_fmf(double %a, double %b) {569; CHECK-LABEL: @auto_gen_10_logical_fmf(570; CHECK-NEXT: ret i1 false571;572 %cmp = fcmp olt double %a, %b573 %cmp1 = fcmp fast false double %a, %b574 %retval = select i1 %cmp, i1 %cmp1, i1 false575 ret i1 %retval576}577 578define i1 @auto_gen_11(double %a, double %b) {579; CHECK-LABEL: @auto_gen_11(580; CHECK-NEXT: ret i1 false581;582 %cmp = fcmp olt double %a, %b583 %cmp1 = fcmp oeq double %a, %b584 %retval = and i1 %cmp, %cmp1585 ret i1 %retval586}587 588define i1 @auto_gen_11_logical(double %a, double %b) {589; CHECK-LABEL: @auto_gen_11_logical(590; CHECK-NEXT: ret i1 false591;592 %cmp = fcmp olt double %a, %b593 %cmp1 = fcmp oeq double %a, %b594 %retval = select i1 %cmp, i1 %cmp1, i1 false595 ret i1 %retval596}597 598define i1 @auto_gen_11_logical_fmf(double %a, double %b) {599; CHECK-LABEL: @auto_gen_11_logical_fmf(600; CHECK-NEXT: ret i1 false601;602 %cmp = fcmp fast olt double %a, %b603 %cmp1 = fcmp fast oeq double %a, %b604 %retval = select i1 %cmp, i1 %cmp1, i1 false605 ret i1 %retval606}607 608define i1 @auto_gen_12(double %a, double %b) {609; CHECK-LABEL: @auto_gen_12(610; CHECK-NEXT: ret i1 false611;612 %cmp = fcmp olt double %a, %b613 %cmp1 = fcmp ogt double %a, %b614 %retval = and i1 %cmp, %cmp1615 ret i1 %retval616}617 618define i1 @auto_gen_12_logical(double %a, double %b) {619; CHECK-LABEL: @auto_gen_12_logical(620; CHECK-NEXT: ret i1 false621;622 %cmp = fcmp olt double %a, %b623 %cmp1 = fcmp ogt double %a, %b624 %retval = select i1 %cmp, i1 %cmp1, i1 false625 ret i1 %retval626}627 628define i1 @auto_gen_12_logical_fmf(double %a, double %b) {629; CHECK-LABEL: @auto_gen_12_logical_fmf(630; CHECK-NEXT: ret i1 false631;632 %cmp = fcmp olt double %a, %b633 %cmp1 = fcmp fast ogt double %a, %b634 %retval = select i1 %cmp, i1 %cmp1, i1 false635 ret i1 %retval636}637 638define i1 @auto_gen_13(double %a, double %b) {639; CHECK-LABEL: @auto_gen_13(640; CHECK-NEXT: ret i1 false641;642 %cmp = fcmp olt double %a, %b643 %cmp1 = fcmp oge double %a, %b644 %retval = and i1 %cmp, %cmp1645 ret i1 %retval646}647 648define i1 @auto_gen_13_logical(double %a, double %b) {649; CHECK-LABEL: @auto_gen_13_logical(650; CHECK-NEXT: ret i1 false651;652 %cmp = fcmp olt double %a, %b653 %cmp1 = fcmp oge double %a, %b654 %retval = select i1 %cmp, i1 %cmp1, i1 false655 ret i1 %retval656}657 658define i1 @auto_gen_13_logical_fmf(double %a, double %b) {659; CHECK-LABEL: @auto_gen_13_logical_fmf(660; CHECK-NEXT: ret i1 false661;662 %cmp = fcmp fast olt double %a, %b663 %cmp1 = fcmp fast oge double %a, %b664 %retval = select i1 %cmp, i1 %cmp1, i1 false665 ret i1 %retval666}667 668define i1 @auto_gen_14(double %a, double %b) {669; CHECK-LABEL: @auto_gen_14(670; CHECK-NEXT: [[RETVAL:%.*]] = fcmp olt double [[A:%.*]], [[B:%.*]]671; CHECK-NEXT: ret i1 [[RETVAL]]672;673 %cmp = fcmp olt double %a, %b674 %cmp1 = fcmp olt double %a, %b675 %retval = and i1 %cmp, %cmp1676 ret i1 %retval677}678 679define i1 @auto_gen_14_logical(double %a, double %b) {680; CHECK-LABEL: @auto_gen_14_logical(681; CHECK-NEXT: [[RETVAL:%.*]] = fcmp olt double [[A:%.*]], [[B:%.*]]682; CHECK-NEXT: ret i1 [[RETVAL]]683;684 %cmp = fcmp olt double %a, %b685 %cmp1 = fcmp olt double %a, %b686 %retval = select i1 %cmp, i1 %cmp1, i1 false687 ret i1 %retval688}689 690define i1 @auto_gen_14_logical_fmf(double %a, double %b) {691; CHECK-LABEL: @auto_gen_14_logical_fmf(692; CHECK-NEXT: [[RETVAL:%.*]] = fcmp olt double [[A:%.*]], [[B:%.*]]693; CHECK-NEXT: ret i1 [[RETVAL]]694;695 %cmp = fcmp olt double %a, %b696 %cmp1 = fcmp fast olt double %a, %b697 %retval = select i1 %cmp, i1 %cmp1, i1 false698 ret i1 %retval699}700 701define i1 @auto_gen_15(double %a, double %b) {702; CHECK-LABEL: @auto_gen_15(703; CHECK-NEXT: ret i1 false704;705 %cmp = fcmp ole double %a, %b706 %cmp1 = fcmp false double %a, %b707 %retval = and i1 %cmp, %cmp1708 ret i1 %retval709}710 711define i1 @auto_gen_15_logical(double %a, double %b) {712; CHECK-LABEL: @auto_gen_15_logical(713; CHECK-NEXT: ret i1 false714;715 %cmp = fcmp ole double %a, %b716 %cmp1 = fcmp false double %a, %b717 %retval = select i1 %cmp, i1 %cmp1, i1 false718 ret i1 %retval719}720 721define i1 @auto_gen_15_logical_fmf(double %a, double %b) {722; CHECK-LABEL: @auto_gen_15_logical_fmf(723; CHECK-NEXT: ret i1 false724;725 %cmp = fcmp fast ole double %a, %b726 %cmp1 = fcmp fast false double %a, %b727 %retval = select i1 %cmp, i1 %cmp1, i1 false728 ret i1 %retval729}730 731define i1 @auto_gen_16(double %a, double %b) {732; CHECK-LABEL: @auto_gen_16(733; CHECK-NEXT: [[RETVAL:%.*]] = fcmp oeq double [[A:%.*]], [[B:%.*]]734; CHECK-NEXT: ret i1 [[RETVAL]]735;736 %cmp = fcmp ole double %a, %b737 %cmp1 = fcmp oeq double %a, %b738 %retval = and i1 %cmp, %cmp1739 ret i1 %retval740}741 742define i1 @auto_gen_16_logical(double %a, double %b) {743; CHECK-LABEL: @auto_gen_16_logical(744; CHECK-NEXT: [[RETVAL:%.*]] = fcmp oeq double [[A:%.*]], [[B:%.*]]745; CHECK-NEXT: ret i1 [[RETVAL]]746;747 %cmp = fcmp ole double %a, %b748 %cmp1 = fcmp oeq double %a, %b749 %retval = select i1 %cmp, i1 %cmp1, i1 false750 ret i1 %retval751}752 753define i1 @auto_gen_16_logical_fmf(double %a, double %b) {754; CHECK-LABEL: @auto_gen_16_logical_fmf(755; CHECK-NEXT: [[RETVAL:%.*]] = fcmp oeq double [[A:%.*]], [[B:%.*]]756; CHECK-NEXT: ret i1 [[RETVAL]]757;758 %cmp = fcmp ole double %a, %b759 %cmp1 = fcmp fast oeq double %a, %b760 %retval = select i1 %cmp, i1 %cmp1, i1 false761 ret i1 %retval762}763 764define i1 @auto_gen_17(double %a, double %b) {765; CHECK-LABEL: @auto_gen_17(766; CHECK-NEXT: ret i1 false767;768 %cmp = fcmp ole double %a, %b769 %cmp1 = fcmp ogt double %a, %b770 %retval = and i1 %cmp, %cmp1771 ret i1 %retval772}773 774define i1 @auto_gen_17_logical(double %a, double %b) {775; CHECK-LABEL: @auto_gen_17_logical(776; CHECK-NEXT: ret i1 false777;778 %cmp = fcmp ole double %a, %b779 %cmp1 = fcmp ogt double %a, %b780 %retval = select i1 %cmp, i1 %cmp1, i1 false781 ret i1 %retval782}783 784define i1 @auto_gen_17_logical_fmf(double %a, double %b) {785; CHECK-LABEL: @auto_gen_17_logical_fmf(786; CHECK-NEXT: ret i1 false787;788 %cmp = fcmp fast ole double %a, %b789 %cmp1 = fcmp fast ogt double %a, %b790 %retval = select i1 %cmp, i1 %cmp1, i1 false791 ret i1 %retval792}793 794define i1 @auto_gen_18(double %a, double %b) {795; CHECK-LABEL: @auto_gen_18(796; CHECK-NEXT: [[RETVAL:%.*]] = fcmp oeq double [[A:%.*]], [[B:%.*]]797; CHECK-NEXT: ret i1 [[RETVAL]]798;799 %cmp = fcmp ole double %a, %b800 %cmp1 = fcmp oge double %a, %b801 %retval = and i1 %cmp, %cmp1802 ret i1 %retval803}804 805define i1 @auto_gen_18_logical(double %a, double %b) {806; CHECK-LABEL: @auto_gen_18_logical(807; CHECK-NEXT: [[RETVAL:%.*]] = fcmp oeq double [[A:%.*]], [[B:%.*]]808; CHECK-NEXT: ret i1 [[RETVAL]]809;810 %cmp = fcmp ole double %a, %b811 %cmp1 = fcmp oge double %a, %b812 %retval = select i1 %cmp, i1 %cmp1, i1 false813 ret i1 %retval814}815 816define i1 @auto_gen_18_logical_fmf(double %a, double %b) {817; CHECK-LABEL: @auto_gen_18_logical_fmf(818; CHECK-NEXT: [[RETVAL:%.*]] = fcmp oeq double [[A:%.*]], [[B:%.*]]819; CHECK-NEXT: ret i1 [[RETVAL]]820;821 %cmp = fcmp ole double %a, %b822 %cmp1 = fcmp fast oge double %a, %b823 %retval = select i1 %cmp, i1 %cmp1, i1 false824 ret i1 %retval825}826 827define i1 @auto_gen_19(double %a, double %b) {828; CHECK-LABEL: @auto_gen_19(829; CHECK-NEXT: [[RETVAL:%.*]] = fcmp olt double [[A:%.*]], [[B:%.*]]830; CHECK-NEXT: ret i1 [[RETVAL]]831;832 %cmp = fcmp ole double %a, %b833 %cmp1 = fcmp olt double %a, %b834 %retval = and i1 %cmp, %cmp1835 ret i1 %retval836}837 838define i1 @auto_gen_19_logical(double %a, double %b) {839; CHECK-LABEL: @auto_gen_19_logical(840; CHECK-NEXT: [[RETVAL:%.*]] = fcmp olt double [[A:%.*]], [[B:%.*]]841; CHECK-NEXT: ret i1 [[RETVAL]]842;843 %cmp = fcmp ole double %a, %b844 %cmp1 = fcmp olt double %a, %b845 %retval = select i1 %cmp, i1 %cmp1, i1 false846 ret i1 %retval847}848 849define i1 @auto_gen_19_logical_fmf(double %a, double %b) {850; CHECK-LABEL: @auto_gen_19_logical_fmf(851; CHECK-NEXT: [[RETVAL:%.*]] = fcmp fast olt double [[A:%.*]], [[B:%.*]]852; CHECK-NEXT: ret i1 [[RETVAL]]853;854 %cmp = fcmp fast ole double %a, %b855 %cmp1 = fcmp fast olt double %a, %b856 %retval = select i1 %cmp, i1 %cmp1, i1 false857 ret i1 %retval858}859 860define i1 @auto_gen_20(double %a, double %b) {861; CHECK-LABEL: @auto_gen_20(862; CHECK-NEXT: [[RETVAL:%.*]] = fcmp ole double [[A:%.*]], [[B:%.*]]863; CHECK-NEXT: ret i1 [[RETVAL]]864;865 %cmp = fcmp ole double %a, %b866 %cmp1 = fcmp ole double %a, %b867 %retval = and i1 %cmp, %cmp1868 ret i1 %retval869}870 871define i1 @auto_gen_20_logical(double %a, double %b) {872; CHECK-LABEL: @auto_gen_20_logical(873; CHECK-NEXT: [[RETVAL:%.*]] = fcmp ole double [[A:%.*]], [[B:%.*]]874; CHECK-NEXT: ret i1 [[RETVAL]]875;876 %cmp = fcmp ole double %a, %b877 %cmp1 = fcmp ole double %a, %b878 %retval = select i1 %cmp, i1 %cmp1, i1 false879 ret i1 %retval880}881 882define i1 @auto_gen_20_logical_fmf(double %a, double %b) {883; CHECK-LABEL: @auto_gen_20_logical_fmf(884; CHECK-NEXT: [[RETVAL:%.*]] = fcmp ole double [[A:%.*]], [[B:%.*]]885; CHECK-NEXT: ret i1 [[RETVAL]]886;887 %cmp = fcmp ole double %a, %b888 %cmp1 = fcmp fast ole double %a, %b889 %retval = select i1 %cmp, i1 %cmp1, i1 false890 ret i1 %retval891}892 893define i1 @auto_gen_21(double %a, double %b) {894; CHECK-LABEL: @auto_gen_21(895; CHECK-NEXT: ret i1 false896;897 %cmp = fcmp one double %a, %b898 %cmp1 = fcmp false double %a, %b899 %retval = and i1 %cmp, %cmp1900 ret i1 %retval901}902 903define i1 @auto_gen_21_logical(double %a, double %b) {904; CHECK-LABEL: @auto_gen_21_logical(905; CHECK-NEXT: ret i1 false906;907 %cmp = fcmp one double %a, %b908 %cmp1 = fcmp false double %a, %b909 %retval = select i1 %cmp, i1 %cmp1, i1 false910 ret i1 %retval911}912 913define i1 @auto_gen_21_logical_fmf(double %a, double %b) {914; CHECK-LABEL: @auto_gen_21_logical_fmf(915; CHECK-NEXT: ret i1 false916;917 %cmp = fcmp fast one double %a, %b918 %cmp1 = fcmp fast false double %a, %b919 %retval = select i1 %cmp, i1 %cmp1, i1 false920 ret i1 %retval921}922 923define i1 @auto_gen_22(double %a, double %b) {924; CHECK-LABEL: @auto_gen_22(925; CHECK-NEXT: ret i1 false926;927 %cmp = fcmp one double %a, %b928 %cmp1 = fcmp oeq double %a, %b929 %retval = and i1 %cmp, %cmp1930 ret i1 %retval931}932 933define i1 @auto_gen_22_logical(double %a, double %b) {934; CHECK-LABEL: @auto_gen_22_logical(935; CHECK-NEXT: ret i1 false936;937 %cmp = fcmp one double %a, %b938 %cmp1 = fcmp oeq double %a, %b939 %retval = select i1 %cmp, i1 %cmp1, i1 false940 ret i1 %retval941}942 943define i1 @auto_gen_22_logical_fmf(double %a, double %b) {944; CHECK-LABEL: @auto_gen_22_logical_fmf(945; CHECK-NEXT: ret i1 false946;947 %cmp = fcmp one double %a, %b948 %cmp1 = fcmp fast oeq double %a, %b949 %retval = select i1 %cmp, i1 %cmp1, i1 false950 ret i1 %retval951}952 953define i1 @auto_gen_23(double %a, double %b) {954; CHECK-LABEL: @auto_gen_23(955; CHECK-NEXT: [[RETVAL:%.*]] = fcmp ogt double [[A:%.*]], [[B:%.*]]956; CHECK-NEXT: ret i1 [[RETVAL]]957;958 %cmp = fcmp one double %a, %b959 %cmp1 = fcmp ogt double %a, %b960 %retval = and i1 %cmp, %cmp1961 ret i1 %retval962}963 964define i1 @auto_gen_23_logical(double %a, double %b) {965; CHECK-LABEL: @auto_gen_23_logical(966; CHECK-NEXT: [[RETVAL:%.*]] = fcmp ogt double [[A:%.*]], [[B:%.*]]967; CHECK-NEXT: ret i1 [[RETVAL]]968;969 %cmp = fcmp one double %a, %b970 %cmp1 = fcmp ogt double %a, %b971 %retval = select i1 %cmp, i1 %cmp1, i1 false972 ret i1 %retval973}974 975define i1 @auto_gen_23_logical_fmf(double %a, double %b) {976; CHECK-LABEL: @auto_gen_23_logical_fmf(977; CHECK-NEXT: [[RETVAL:%.*]] = fcmp fast ogt double [[A:%.*]], [[B:%.*]]978; CHECK-NEXT: ret i1 [[RETVAL]]979;980 %cmp = fcmp fast one double %a, %b981 %cmp1 = fcmp fast ogt double %a, %b982 %retval = select i1 %cmp, i1 %cmp1, i1 false983 ret i1 %retval984}985 986define i1 @auto_gen_24(double %a, double %b) {987; CHECK-LABEL: @auto_gen_24(988; CHECK-NEXT: [[RETVAL:%.*]] = fcmp ogt double [[A:%.*]], [[B:%.*]]989; CHECK-NEXT: ret i1 [[RETVAL]]990;991 %cmp = fcmp one double %a, %b992 %cmp1 = fcmp oge double %a, %b993 %retval = and i1 %cmp, %cmp1994 ret i1 %retval995}996 997define i1 @auto_gen_24_logical(double %a, double %b) {998; CHECK-LABEL: @auto_gen_24_logical(999; CHECK-NEXT: [[RETVAL:%.*]] = fcmp ogt double [[A:%.*]], [[B:%.*]]1000; CHECK-NEXT: ret i1 [[RETVAL]]1001;1002 %cmp = fcmp one double %a, %b1003 %cmp1 = fcmp oge double %a, %b1004 %retval = select i1 %cmp, i1 %cmp1, i1 false1005 ret i1 %retval1006}1007 1008define i1 @auto_gen_24_logical_fmf(double %a, double %b) {1009; CHECK-LABEL: @auto_gen_24_logical_fmf(1010; CHECK-NEXT: [[RETVAL:%.*]] = fcmp ogt double [[A:%.*]], [[B:%.*]]1011; CHECK-NEXT: ret i1 [[RETVAL]]1012;1013 %cmp = fcmp one double %a, %b1014 %cmp1 = fcmp fast oge double %a, %b1015 %retval = select i1 %cmp, i1 %cmp1, i1 false1016 ret i1 %retval1017}1018 1019define i1 @auto_gen_25(double %a, double %b) {1020; CHECK-LABEL: @auto_gen_25(1021; CHECK-NEXT: [[RETVAL:%.*]] = fcmp olt double [[A:%.*]], [[B:%.*]]1022; CHECK-NEXT: ret i1 [[RETVAL]]1023;1024 %cmp = fcmp one double %a, %b1025 %cmp1 = fcmp olt double %a, %b1026 %retval = and i1 %cmp, %cmp11027 ret i1 %retval1028}1029 1030define i1 @auto_gen_25_logical(double %a, double %b) {1031; CHECK-LABEL: @auto_gen_25_logical(1032; CHECK-NEXT: [[RETVAL:%.*]] = fcmp olt double [[A:%.*]], [[B:%.*]]1033; CHECK-NEXT: ret i1 [[RETVAL]]1034;1035 %cmp = fcmp one double %a, %b1036 %cmp1 = fcmp olt double %a, %b1037 %retval = select i1 %cmp, i1 %cmp1, i1 false1038 ret i1 %retval1039}1040 1041define i1 @auto_gen_25_logical_fmf(double %a, double %b) {1042; CHECK-LABEL: @auto_gen_25_logical_fmf(1043; CHECK-NEXT: [[RETVAL:%.*]] = fcmp fast olt double [[A:%.*]], [[B:%.*]]1044; CHECK-NEXT: ret i1 [[RETVAL]]1045;1046 %cmp = fcmp fast one double %a, %b1047 %cmp1 = fcmp fast olt double %a, %b1048 %retval = select i1 %cmp, i1 %cmp1, i1 false1049 ret i1 %retval1050}1051 1052define i1 @auto_gen_26(double %a, double %b) {1053; CHECK-LABEL: @auto_gen_26(1054; CHECK-NEXT: [[RETVAL:%.*]] = fcmp olt double [[A:%.*]], [[B:%.*]]1055; CHECK-NEXT: ret i1 [[RETVAL]]1056;1057 %cmp = fcmp one double %a, %b1058 %cmp1 = fcmp ole double %a, %b1059 %retval = and i1 %cmp, %cmp11060 ret i1 %retval1061}1062 1063define i1 @auto_gen_26_logical(double %a, double %b) {1064; CHECK-LABEL: @auto_gen_26_logical(1065; CHECK-NEXT: [[RETVAL:%.*]] = fcmp olt double [[A:%.*]], [[B:%.*]]1066; CHECK-NEXT: ret i1 [[RETVAL]]1067;1068 %cmp = fcmp one double %a, %b1069 %cmp1 = fcmp ole double %a, %b1070 %retval = select i1 %cmp, i1 %cmp1, i1 false1071 ret i1 %retval1072}1073 1074define i1 @auto_gen_26_logical_fmf(double %a, double %b) {1075; CHECK-LABEL: @auto_gen_26_logical_fmf(1076; CHECK-NEXT: [[RETVAL:%.*]] = fcmp olt double [[A:%.*]], [[B:%.*]]1077; CHECK-NEXT: ret i1 [[RETVAL]]1078;1079 %cmp = fcmp one double %a, %b1080 %cmp1 = fcmp fast ole double %a, %b1081 %retval = select i1 %cmp, i1 %cmp1, i1 false1082 ret i1 %retval1083}1084 1085define i1 @auto_gen_27(double %a, double %b) {1086; CHECK-LABEL: @auto_gen_27(1087; CHECK-NEXT: [[RETVAL:%.*]] = fcmp one double [[A:%.*]], [[B:%.*]]1088; CHECK-NEXT: ret i1 [[RETVAL]]1089;1090 %cmp = fcmp one double %a, %b1091 %cmp1 = fcmp one double %a, %b1092 %retval = and i1 %cmp, %cmp11093 ret i1 %retval1094}1095 1096define i1 @auto_gen_27_logical(double %a, double %b) {1097; CHECK-LABEL: @auto_gen_27_logical(1098; CHECK-NEXT: [[RETVAL:%.*]] = fcmp one double [[A:%.*]], [[B:%.*]]1099; CHECK-NEXT: ret i1 [[RETVAL]]1100;1101 %cmp = fcmp one double %a, %b1102 %cmp1 = fcmp one double %a, %b1103 %retval = select i1 %cmp, i1 %cmp1, i1 false1104 ret i1 %retval1105}1106 1107define i1 @auto_gen_27_logical_fmf(double %a, double %b) {1108; CHECK-LABEL: @auto_gen_27_logical_fmf(1109; CHECK-NEXT: [[RETVAL:%.*]] = fcmp fast one double [[A:%.*]], [[B:%.*]]1110; CHECK-NEXT: ret i1 [[RETVAL]]1111;1112 %cmp = fcmp fast one double %a, %b1113 %cmp1 = fcmp fast one double %a, %b1114 %retval = select i1 %cmp, i1 %cmp1, i1 false1115 ret i1 %retval1116}1117 1118define i1 @auto_gen_28(double %a, double %b) {1119; CHECK-LABEL: @auto_gen_28(1120; CHECK-NEXT: ret i1 false1121;1122 %cmp = fcmp ord double %a, %b1123 %cmp1 = fcmp false double %a, %b1124 %retval = and i1 %cmp, %cmp11125 ret i1 %retval1126}1127 1128define i1 @auto_gen_28_logical(double %a, double %b) {1129; CHECK-LABEL: @auto_gen_28_logical(1130; CHECK-NEXT: ret i1 false1131;1132 %cmp = fcmp ord double %a, %b1133 %cmp1 = fcmp false double %a, %b1134 %retval = select i1 %cmp, i1 %cmp1, i1 false1135 ret i1 %retval1136}1137 1138define i1 @auto_gen_28_logical_fmf(double %a, double %b) {1139; CHECK-LABEL: @auto_gen_28_logical_fmf(1140; CHECK-NEXT: ret i1 false1141;1142 %cmp = fcmp ord double %a, %b1143 %cmp1 = fcmp fast false double %a, %b1144 %retval = select i1 %cmp, i1 %cmp1, i1 false1145 ret i1 %retval1146}1147 1148define i1 @auto_gen_29(double %a, double %b) {1149; CHECK-LABEL: @auto_gen_29(1150; CHECK-NEXT: [[RETVAL:%.*]] = fcmp oeq double [[A:%.*]], [[B:%.*]]1151; CHECK-NEXT: ret i1 [[RETVAL]]1152;1153 %cmp = fcmp ord double %a, %b1154 %cmp1 = fcmp oeq double %a, %b1155 %retval = and i1 %cmp, %cmp11156 ret i1 %retval1157}1158 1159define i1 @auto_gen_29_logical(double %a, double %b) {1160; CHECK-LABEL: @auto_gen_29_logical(1161; CHECK-NEXT: [[RETVAL:%.*]] = fcmp oeq double [[A:%.*]], [[B:%.*]]1162; CHECK-NEXT: ret i1 [[RETVAL]]1163;1164 %cmp = fcmp ord double %a, %b1165 %cmp1 = fcmp oeq double %a, %b1166 %retval = select i1 %cmp, i1 %cmp1, i1 false1167 ret i1 %retval1168}1169 1170define i1 @auto_gen_29_logical_fmf(double %a, double %b) {1171; CHECK-LABEL: @auto_gen_29_logical_fmf(1172; CHECK-NEXT: [[CMP1:%.*]] = fcmp fast oeq double [[A:%.*]], [[B:%.*]]1173; CHECK-NEXT: ret i1 [[CMP1]]1174;1175 %cmp = fcmp fast ord double %a, %b1176 %cmp1 = fcmp fast oeq double %a, %b1177 %retval = select i1 %cmp, i1 %cmp1, i1 false1178 ret i1 %retval1179}1180 1181define i1 @auto_gen_30(double %a, double %b) {1182; CHECK-LABEL: @auto_gen_30(1183; CHECK-NEXT: [[RETVAL:%.*]] = fcmp ogt double [[A:%.*]], [[B:%.*]]1184; CHECK-NEXT: ret i1 [[RETVAL]]1185;1186 %cmp = fcmp ord double %a, %b1187 %cmp1 = fcmp ogt double %a, %b1188 %retval = and i1 %cmp, %cmp11189 ret i1 %retval1190}1191 1192define i1 @auto_gen_30_logical(double %a, double %b) {1193; CHECK-LABEL: @auto_gen_30_logical(1194; CHECK-NEXT: [[RETVAL:%.*]] = fcmp ogt double [[A:%.*]], [[B:%.*]]1195; CHECK-NEXT: ret i1 [[RETVAL]]1196;1197 %cmp = fcmp ord double %a, %b1198 %cmp1 = fcmp ogt double %a, %b1199 %retval = select i1 %cmp, i1 %cmp1, i1 false1200 ret i1 %retval1201}1202 1203define i1 @auto_gen_30_logical_fmf(double %a, double %b) {1204; CHECK-LABEL: @auto_gen_30_logical_fmf(1205; CHECK-NEXT: [[RETVAL:%.*]] = fcmp ogt double [[A:%.*]], [[B:%.*]]1206; CHECK-NEXT: ret i1 [[RETVAL]]1207;1208 %cmp = fcmp ord double %a, %b1209 %cmp1 = fcmp fast ogt double %a, %b1210 %retval = select i1 %cmp, i1 %cmp1, i1 false1211 ret i1 %retval1212}1213 1214define i1 @auto_gen_31(double %a, double %b) {1215; CHECK-LABEL: @auto_gen_31(1216; CHECK-NEXT: [[RETVAL:%.*]] = fcmp oge double [[A:%.*]], [[B:%.*]]1217; CHECK-NEXT: ret i1 [[RETVAL]]1218;1219 %cmp = fcmp ord double %a, %b1220 %cmp1 = fcmp oge double %a, %b1221 %retval = and i1 %cmp, %cmp11222 ret i1 %retval1223}1224 1225define i1 @auto_gen_31_logical(double %a, double %b) {1226; CHECK-LABEL: @auto_gen_31_logical(1227; CHECK-NEXT: [[RETVAL:%.*]] = fcmp oge double [[A:%.*]], [[B:%.*]]1228; CHECK-NEXT: ret i1 [[RETVAL]]1229;1230 %cmp = fcmp ord double %a, %b1231 %cmp1 = fcmp oge double %a, %b1232 %retval = select i1 %cmp, i1 %cmp1, i1 false1233 ret i1 %retval1234}1235 1236define i1 @auto_gen_31_logical_fmf(double %a, double %b) {1237; CHECK-LABEL: @auto_gen_31_logical_fmf(1238; CHECK-NEXT: [[CMP1:%.*]] = fcmp fast oge double [[A:%.*]], [[B:%.*]]1239; CHECK-NEXT: ret i1 [[CMP1]]1240;1241 %cmp = fcmp fast ord double %a, %b1242 %cmp1 = fcmp fast oge double %a, %b1243 %retval = select i1 %cmp, i1 %cmp1, i1 false1244 ret i1 %retval1245}1246 1247define i1 @auto_gen_32(double %a, double %b) {1248; CHECK-LABEL: @auto_gen_32(1249; CHECK-NEXT: [[RETVAL:%.*]] = fcmp olt double [[A:%.*]], [[B:%.*]]1250; CHECK-NEXT: ret i1 [[RETVAL]]1251;1252 %cmp = fcmp ord double %a, %b1253 %cmp1 = fcmp olt double %a, %b1254 %retval = and i1 %cmp, %cmp11255 ret i1 %retval1256}1257 1258define i1 @auto_gen_32_logical(double %a, double %b) {1259; CHECK-LABEL: @auto_gen_32_logical(1260; CHECK-NEXT: [[RETVAL:%.*]] = fcmp olt double [[A:%.*]], [[B:%.*]]1261; CHECK-NEXT: ret i1 [[RETVAL]]1262;1263 %cmp = fcmp ord double %a, %b1264 %cmp1 = fcmp olt double %a, %b1265 %retval = select i1 %cmp, i1 %cmp1, i1 false1266 ret i1 %retval1267}1268 1269define i1 @auto_gen_32_logical_fmf(double %a, double %b) {1270; CHECK-LABEL: @auto_gen_32_logical_fmf(1271; CHECK-NEXT: [[RETVAL:%.*]] = fcmp olt double [[A:%.*]], [[B:%.*]]1272; CHECK-NEXT: ret i1 [[RETVAL]]1273;1274 %cmp = fcmp ord double %a, %b1275 %cmp1 = fcmp fast olt double %a, %b1276 %retval = select i1 %cmp, i1 %cmp1, i1 false1277 ret i1 %retval1278}1279 1280define i1 @auto_gen_33(double %a, double %b) {1281; CHECK-LABEL: @auto_gen_33(1282; CHECK-NEXT: [[RETVAL:%.*]] = fcmp ole double [[A:%.*]], [[B:%.*]]1283; CHECK-NEXT: ret i1 [[RETVAL]]1284;1285 %cmp = fcmp ord double %a, %b1286 %cmp1 = fcmp ole double %a, %b1287 %retval = and i1 %cmp, %cmp11288 ret i1 %retval1289}1290 1291define i1 @auto_gen_33_logical(double %a, double %b) {1292; CHECK-LABEL: @auto_gen_33_logical(1293; CHECK-NEXT: [[RETVAL:%.*]] = fcmp ole double [[A:%.*]], [[B:%.*]]1294; CHECK-NEXT: ret i1 [[RETVAL]]1295;1296 %cmp = fcmp ord double %a, %b1297 %cmp1 = fcmp ole double %a, %b1298 %retval = select i1 %cmp, i1 %cmp1, i1 false1299 ret i1 %retval1300}1301 1302define i1 @auto_gen_33_logical_fmf(double %a, double %b) {1303; CHECK-LABEL: @auto_gen_33_logical_fmf(1304; CHECK-NEXT: [[CMP1:%.*]] = fcmp fast ole double [[A:%.*]], [[B:%.*]]1305; CHECK-NEXT: ret i1 [[CMP1]]1306;1307 %cmp = fcmp fast ord double %a, %b1308 %cmp1 = fcmp fast ole double %a, %b1309 %retval = select i1 %cmp, i1 %cmp1, i1 false1310 ret i1 %retval1311}1312 1313define i1 @auto_gen_34(double %a, double %b) {1314; CHECK-LABEL: @auto_gen_34(1315; CHECK-NEXT: [[RETVAL:%.*]] = fcmp one double [[A:%.*]], [[B:%.*]]1316; CHECK-NEXT: ret i1 [[RETVAL]]1317;1318 %cmp = fcmp ord double %a, %b1319 %cmp1 = fcmp one double %a, %b1320 %retval = and i1 %cmp, %cmp11321 ret i1 %retval1322}1323 1324define i1 @auto_gen_34_logical(double %a, double %b) {1325; CHECK-LABEL: @auto_gen_34_logical(1326; CHECK-NEXT: [[RETVAL:%.*]] = fcmp one double [[A:%.*]], [[B:%.*]]1327; CHECK-NEXT: ret i1 [[RETVAL]]1328;1329 %cmp = fcmp ord double %a, %b1330 %cmp1 = fcmp one double %a, %b1331 %retval = select i1 %cmp, i1 %cmp1, i1 false1332 ret i1 %retval1333}1334 1335define i1 @auto_gen_34_logical_fmf(double %a, double %b) {1336; CHECK-LABEL: @auto_gen_34_logical_fmf(1337; CHECK-NEXT: [[RETVAL:%.*]] = fcmp one double [[A:%.*]], [[B:%.*]]1338; CHECK-NEXT: ret i1 [[RETVAL]]1339;1340 %cmp = fcmp ord double %a, %b1341 %cmp1 = fcmp fast one double %a, %b1342 %retval = select i1 %cmp, i1 %cmp1, i1 false1343 ret i1 %retval1344}1345 1346define i1 @auto_gen_35(double %a, double %b) {1347; CHECK-LABEL: @auto_gen_35(1348; CHECK-NEXT: [[RETVAL:%.*]] = fcmp ord double [[A:%.*]], [[B:%.*]]1349; CHECK-NEXT: ret i1 [[RETVAL]]1350;1351 %cmp = fcmp ord double %a, %b1352 %cmp1 = fcmp ord double %a, %b1353 %retval = and i1 %cmp, %cmp11354 ret i1 %retval1355}1356 1357define i1 @auto_gen_35_logical(double %a, double %b) {1358; CHECK-LABEL: @auto_gen_35_logical(1359; CHECK-NEXT: [[RETVAL:%.*]] = fcmp ord double [[A:%.*]], [[B:%.*]]1360; CHECK-NEXT: ret i1 [[RETVAL]]1361;1362 %cmp = fcmp ord double %a, %b1363 %cmp1 = fcmp ord double %a, %b1364 %retval = select i1 %cmp, i1 %cmp1, i1 false1365 ret i1 %retval1366}1367 1368define i1 @auto_gen_35_logical_fmf(double %a, double %b) {1369; CHECK-LABEL: @auto_gen_35_logical_fmf(1370; CHECK-NEXT: ret i1 true1371;1372 %cmp = fcmp fast ord double %a, %b1373 %cmp1 = fcmp fast ord double %a, %b1374 %retval = select i1 %cmp, i1 %cmp1, i1 false1375 ret i1 %retval1376}1377 1378define i1 @auto_gen_36(double %a, double %b) {1379; CHECK-LABEL: @auto_gen_36(1380; CHECK-NEXT: ret i1 false1381;1382 %cmp = fcmp ueq double %a, %b1383 %cmp1 = fcmp false double %a, %b1384 %retval = and i1 %cmp, %cmp11385 ret i1 %retval1386}1387 1388define i1 @auto_gen_36_logical(double %a, double %b) {1389; CHECK-LABEL: @auto_gen_36_logical(1390; CHECK-NEXT: ret i1 false1391;1392 %cmp = fcmp ueq double %a, %b1393 %cmp1 = fcmp false double %a, %b1394 %retval = select i1 %cmp, i1 %cmp1, i1 false1395 ret i1 %retval1396}1397 1398define i1 @auto_gen_36_logical_fmf(double %a, double %b) {1399; CHECK-LABEL: @auto_gen_36_logical_fmf(1400; CHECK-NEXT: ret i1 false1401;1402 %cmp = fcmp ueq double %a, %b1403 %cmp1 = fcmp fast false double %a, %b1404 %retval = select i1 %cmp, i1 %cmp1, i1 false1405 ret i1 %retval1406}1407 1408define i1 @auto_gen_37(double %a, double %b) {1409; CHECK-LABEL: @auto_gen_37(1410; CHECK-NEXT: [[RETVAL:%.*]] = fcmp oeq double [[A:%.*]], [[B:%.*]]1411; CHECK-NEXT: ret i1 [[RETVAL]]1412;1413 %cmp = fcmp ueq double %a, %b1414 %cmp1 = fcmp oeq double %a, %b1415 %retval = and i1 %cmp, %cmp11416 ret i1 %retval1417}1418 1419define i1 @auto_gen_37_logical(double %a, double %b) {1420; CHECK-LABEL: @auto_gen_37_logical(1421; CHECK-NEXT: [[RETVAL:%.*]] = fcmp oeq double [[A:%.*]], [[B:%.*]]1422; CHECK-NEXT: ret i1 [[RETVAL]]1423;1424 %cmp = fcmp ueq double %a, %b1425 %cmp1 = fcmp oeq double %a, %b1426 %retval = select i1 %cmp, i1 %cmp1, i1 false1427 ret i1 %retval1428}1429 1430define i1 @auto_gen_37_logical_fmf(double %a, double %b) {1431; CHECK-LABEL: @auto_gen_37_logical_fmf(1432; CHECK-NEXT: [[RETVAL:%.*]] = fcmp fast oeq double [[A:%.*]], [[B:%.*]]1433; CHECK-NEXT: ret i1 [[RETVAL]]1434;1435 %cmp = fcmp fast ueq double %a, %b1436 %cmp1 = fcmp fast oeq double %a, %b1437 %retval = select i1 %cmp, i1 %cmp1, i1 false1438 ret i1 %retval1439}1440 1441define i1 @auto_gen_38(double %a, double %b) {1442; CHECK-LABEL: @auto_gen_38(1443; CHECK-NEXT: ret i1 false1444;1445 %cmp = fcmp ueq double %a, %b1446 %cmp1 = fcmp ogt double %a, %b1447 %retval = and i1 %cmp, %cmp11448 ret i1 %retval1449}1450 1451define i1 @auto_gen_38_logical(double %a, double %b) {1452; CHECK-LABEL: @auto_gen_38_logical(1453; CHECK-NEXT: ret i1 false1454;1455 %cmp = fcmp ueq double %a, %b1456 %cmp1 = fcmp ogt double %a, %b1457 %retval = select i1 %cmp, i1 %cmp1, i1 false1458 ret i1 %retval1459}1460 1461define i1 @auto_gen_38_logical_fmf(double %a, double %b) {1462; CHECK-LABEL: @auto_gen_38_logical_fmf(1463; CHECK-NEXT: ret i1 false1464;1465 %cmp = fcmp ueq double %a, %b1466 %cmp1 = fcmp fast ogt double %a, %b1467 %retval = select i1 %cmp, i1 %cmp1, i1 false1468 ret i1 %retval1469}1470 1471define i1 @auto_gen_39(double %a, double %b) {1472; CHECK-LABEL: @auto_gen_39(1473; CHECK-NEXT: [[RETVAL:%.*]] = fcmp oeq double [[A:%.*]], [[B:%.*]]1474; CHECK-NEXT: ret i1 [[RETVAL]]1475;1476 %cmp = fcmp ueq double %a, %b1477 %cmp1 = fcmp oge double %a, %b1478 %retval = and i1 %cmp, %cmp11479 ret i1 %retval1480}1481 1482define i1 @auto_gen_39_logical(double %a, double %b) {1483; CHECK-LABEL: @auto_gen_39_logical(1484; CHECK-NEXT: [[RETVAL:%.*]] = fcmp oeq double [[A:%.*]], [[B:%.*]]1485; CHECK-NEXT: ret i1 [[RETVAL]]1486;1487 %cmp = fcmp ueq double %a, %b1488 %cmp1 = fcmp oge double %a, %b1489 %retval = select i1 %cmp, i1 %cmp1, i1 false1490 ret i1 %retval1491}1492 1493define i1 @auto_gen_39_logical_fmf(double %a, double %b) {1494; CHECK-LABEL: @auto_gen_39_logical_fmf(1495; CHECK-NEXT: [[RETVAL:%.*]] = fcmp fast oeq double [[A:%.*]], [[B:%.*]]1496; CHECK-NEXT: ret i1 [[RETVAL]]1497;1498 %cmp = fcmp fast ueq double %a, %b1499 %cmp1 = fcmp fast oge double %a, %b1500 %retval = select i1 %cmp, i1 %cmp1, i1 false1501 ret i1 %retval1502}1503 1504define i1 @auto_gen_40(double %a, double %b) {1505; CHECK-LABEL: @auto_gen_40(1506; CHECK-NEXT: ret i1 false1507;1508 %cmp = fcmp ueq double %a, %b1509 %cmp1 = fcmp olt double %a, %b1510 %retval = and i1 %cmp, %cmp11511 ret i1 %retval1512}1513 1514define i1 @auto_gen_40_logical(double %a, double %b) {1515; CHECK-LABEL: @auto_gen_40_logical(1516; CHECK-NEXT: ret i1 false1517;1518 %cmp = fcmp ueq double %a, %b1519 %cmp1 = fcmp olt double %a, %b1520 %retval = select i1 %cmp, i1 %cmp1, i1 false1521 ret i1 %retval1522}1523 1524define i1 @auto_gen_40_logical_fmf(double %a, double %b) {1525; CHECK-LABEL: @auto_gen_40_logical_fmf(1526; CHECK-NEXT: ret i1 false1527;1528 %cmp = fcmp ueq double %a, %b1529 %cmp1 = fcmp fast olt double %a, %b1530 %retval = select i1 %cmp, i1 %cmp1, i1 false1531 ret i1 %retval1532}1533 1534define i1 @auto_gen_41(double %a, double %b) {1535; CHECK-LABEL: @auto_gen_41(1536; CHECK-NEXT: [[RETVAL:%.*]] = fcmp oeq double [[A:%.*]], [[B:%.*]]1537; CHECK-NEXT: ret i1 [[RETVAL]]1538;1539 %cmp = fcmp ueq double %a, %b1540 %cmp1 = fcmp ole double %a, %b1541 %retval = and i1 %cmp, %cmp11542 ret i1 %retval1543}1544 1545define i1 @auto_gen_41_logical(double %a, double %b) {1546; CHECK-LABEL: @auto_gen_41_logical(1547; CHECK-NEXT: [[RETVAL:%.*]] = fcmp oeq double [[A:%.*]], [[B:%.*]]1548; CHECK-NEXT: ret i1 [[RETVAL]]1549;1550 %cmp = fcmp ueq double %a, %b1551 %cmp1 = fcmp ole double %a, %b1552 %retval = select i1 %cmp, i1 %cmp1, i1 false1553 ret i1 %retval1554}1555 1556define i1 @auto_gen_41_logical_fmf(double %a, double %b) {1557; CHECK-LABEL: @auto_gen_41_logical_fmf(1558; CHECK-NEXT: [[RETVAL:%.*]] = fcmp fast oeq double [[A:%.*]], [[B:%.*]]1559; CHECK-NEXT: ret i1 [[RETVAL]]1560;1561 %cmp = fcmp fast ueq double %a, %b1562 %cmp1 = fcmp fast ole double %a, %b1563 %retval = select i1 %cmp, i1 %cmp1, i1 false1564 ret i1 %retval1565}1566 1567define i1 @auto_gen_42(double %a, double %b) {1568; CHECK-LABEL: @auto_gen_42(1569; CHECK-NEXT: ret i1 false1570;1571 %cmp = fcmp ueq double %a, %b1572 %cmp1 = fcmp one double %a, %b1573 %retval = and i1 %cmp, %cmp11574 ret i1 %retval1575}1576 1577define i1 @auto_gen_42_logical(double %a, double %b) {1578; CHECK-LABEL: @auto_gen_42_logical(1579; CHECK-NEXT: ret i1 false1580;1581 %cmp = fcmp ueq double %a, %b1582 %cmp1 = fcmp one double %a, %b1583 %retval = select i1 %cmp, i1 %cmp1, i1 false1584 ret i1 %retval1585}1586 1587define i1 @auto_gen_42_logical_fmf(double %a, double %b) {1588; CHECK-LABEL: @auto_gen_42_logical_fmf(1589; CHECK-NEXT: ret i1 false1590;1591 %cmp = fcmp ueq double %a, %b1592 %cmp1 = fcmp fast one double %a, %b1593 %retval = select i1 %cmp, i1 %cmp1, i1 false1594 ret i1 %retval1595}1596 1597define i1 @auto_gen_43(double %a, double %b) {1598; CHECK-LABEL: @auto_gen_43(1599; CHECK-NEXT: [[RETVAL:%.*]] = fcmp oeq double [[A:%.*]], [[B:%.*]]1600; CHECK-NEXT: ret i1 [[RETVAL]]1601;1602 %cmp = fcmp ueq double %a, %b1603 %cmp1 = fcmp ord double %a, %b1604 %retval = and i1 %cmp, %cmp11605 ret i1 %retval1606}1607 1608define i1 @auto_gen_43_logical(double %a, double %b) {1609; CHECK-LABEL: @auto_gen_43_logical(1610; CHECK-NEXT: [[RETVAL:%.*]] = fcmp oeq double [[A:%.*]], [[B:%.*]]1611; CHECK-NEXT: ret i1 [[RETVAL]]1612;1613 %cmp = fcmp ueq double %a, %b1614 %cmp1 = fcmp ord double %a, %b1615 %retval = select i1 %cmp, i1 %cmp1, i1 false1616 ret i1 %retval1617}1618 1619define i1 @auto_gen_43_logical_fmf(double %a, double %b) {1620; CHECK-LABEL: @auto_gen_43_logical_fmf(1621; CHECK-NEXT: [[CMP:%.*]] = fcmp fast ueq double [[A:%.*]], [[B:%.*]]1622; CHECK-NEXT: ret i1 [[CMP]]1623;1624 %cmp = fcmp fast ueq double %a, %b1625 %cmp1 = fcmp fast ord double %a, %b1626 %retval = select i1 %cmp, i1 %cmp1, i1 false1627 ret i1 %retval1628}1629 1630define i1 @auto_gen_44(double %a, double %b) {1631; CHECK-LABEL: @auto_gen_44(1632; CHECK-NEXT: [[RETVAL:%.*]] = fcmp ueq double [[A:%.*]], [[B:%.*]]1633; CHECK-NEXT: ret i1 [[RETVAL]]1634;1635 %cmp = fcmp ueq double %a, %b1636 %cmp1 = fcmp ueq double %a, %b1637 %retval = and i1 %cmp, %cmp11638 ret i1 %retval1639}1640 1641define i1 @auto_gen_44_logical(double %a, double %b) {1642; CHECK-LABEL: @auto_gen_44_logical(1643; CHECK-NEXT: [[RETVAL:%.*]] = fcmp ueq double [[A:%.*]], [[B:%.*]]1644; CHECK-NEXT: ret i1 [[RETVAL]]1645;1646 %cmp = fcmp ueq double %a, %b1647 %cmp1 = fcmp ueq double %a, %b1648 %retval = select i1 %cmp, i1 %cmp1, i1 false1649 ret i1 %retval1650}1651 1652define i1 @auto_gen_44_logical_fmf(double %a, double %b) {1653; CHECK-LABEL: @auto_gen_44_logical_fmf(1654; CHECK-NEXT: [[RETVAL:%.*]] = fcmp ueq double [[A:%.*]], [[B:%.*]]1655; CHECK-NEXT: ret i1 [[RETVAL]]1656;1657 %cmp = fcmp ueq double %a, %b1658 %cmp1 = fcmp fast ueq double %a, %b1659 %retval = select i1 %cmp, i1 %cmp1, i1 false1660 ret i1 %retval1661}1662 1663define i1 @auto_gen_45(double %a, double %b) {1664; CHECK-LABEL: @auto_gen_45(1665; CHECK-NEXT: ret i1 false1666;1667 %cmp = fcmp ugt double %a, %b1668 %cmp1 = fcmp false double %a, %b1669 %retval = and i1 %cmp, %cmp11670 ret i1 %retval1671}1672 1673define i1 @auto_gen_45_logical(double %a, double %b) {1674; CHECK-LABEL: @auto_gen_45_logical(1675; CHECK-NEXT: ret i1 false1676;1677 %cmp = fcmp ugt double %a, %b1678 %cmp1 = fcmp false double %a, %b1679 %retval = select i1 %cmp, i1 %cmp1, i1 false1680 ret i1 %retval1681}1682 1683define i1 @auto_gen_45_logical_fmf(double %a, double %b) {1684; CHECK-LABEL: @auto_gen_45_logical_fmf(1685; CHECK-NEXT: ret i1 false1686;1687 %cmp = fcmp fast ugt double %a, %b1688 %cmp1 = fcmp fast false double %a, %b1689 %retval = select i1 %cmp, i1 %cmp1, i1 false1690 ret i1 %retval1691}1692 1693define i1 @auto_gen_46(double %a, double %b) {1694; CHECK-LABEL: @auto_gen_46(1695; CHECK-NEXT: ret i1 false1696;1697 %cmp = fcmp ugt double %a, %b1698 %cmp1 = fcmp oeq double %a, %b1699 %retval = and i1 %cmp, %cmp11700 ret i1 %retval1701}1702 1703define i1 @auto_gen_46_logical(double %a, double %b) {1704; CHECK-LABEL: @auto_gen_46_logical(1705; CHECK-NEXT: ret i1 false1706;1707 %cmp = fcmp ugt double %a, %b1708 %cmp1 = fcmp oeq double %a, %b1709 %retval = select i1 %cmp, i1 %cmp1, i1 false1710 ret i1 %retval1711}1712 1713define i1 @auto_gen_46_logical_fmf(double %a, double %b) {1714; CHECK-LABEL: @auto_gen_46_logical_fmf(1715; CHECK-NEXT: ret i1 false1716;1717 %cmp = fcmp ugt double %a, %b1718 %cmp1 = fcmp fast oeq double %a, %b1719 %retval = select i1 %cmp, i1 %cmp1, i1 false1720 ret i1 %retval1721}1722 1723define i1 @auto_gen_47(double %a, double %b) {1724; CHECK-LABEL: @auto_gen_47(1725; CHECK-NEXT: [[RETVAL:%.*]] = fcmp ogt double [[A:%.*]], [[B:%.*]]1726; CHECK-NEXT: ret i1 [[RETVAL]]1727;1728 %cmp = fcmp ugt double %a, %b1729 %cmp1 = fcmp ogt double %a, %b1730 %retval = and i1 %cmp, %cmp11731 ret i1 %retval1732}1733 1734define i1 @auto_gen_47_logical(double %a, double %b) {1735; CHECK-LABEL: @auto_gen_47_logical(1736; CHECK-NEXT: [[RETVAL:%.*]] = fcmp ogt double [[A:%.*]], [[B:%.*]]1737; CHECK-NEXT: ret i1 [[RETVAL]]1738;1739 %cmp = fcmp ugt double %a, %b1740 %cmp1 = fcmp ogt double %a, %b1741 %retval = select i1 %cmp, i1 %cmp1, i1 false1742 ret i1 %retval1743}1744 1745define i1 @auto_gen_47_logical_fmf(double %a, double %b) {1746; CHECK-LABEL: @auto_gen_47_logical_fmf(1747; CHECK-NEXT: [[RETVAL:%.*]] = fcmp fast ogt double [[A:%.*]], [[B:%.*]]1748; CHECK-NEXT: ret i1 [[RETVAL]]1749;1750 %cmp = fcmp fast ugt double %a, %b1751 %cmp1 = fcmp fast ogt double %a, %b1752 %retval = select i1 %cmp, i1 %cmp1, i1 false1753 ret i1 %retval1754}1755 1756define i1 @auto_gen_48(double %a, double %b) {1757; CHECK-LABEL: @auto_gen_48(1758; CHECK-NEXT: [[RETVAL:%.*]] = fcmp ogt double [[A:%.*]], [[B:%.*]]1759; CHECK-NEXT: ret i1 [[RETVAL]]1760;1761 %cmp = fcmp ugt double %a, %b1762 %cmp1 = fcmp oge double %a, %b1763 %retval = and i1 %cmp, %cmp11764 ret i1 %retval1765}1766 1767define i1 @auto_gen_48_logical(double %a, double %b) {1768; CHECK-LABEL: @auto_gen_48_logical(1769; CHECK-NEXT: [[RETVAL:%.*]] = fcmp ogt double [[A:%.*]], [[B:%.*]]1770; CHECK-NEXT: ret i1 [[RETVAL]]1771;1772 %cmp = fcmp ugt double %a, %b1773 %cmp1 = fcmp oge double %a, %b1774 %retval = select i1 %cmp, i1 %cmp1, i1 false1775 ret i1 %retval1776}1777 1778define i1 @auto_gen_48_logical_fmf(double %a, double %b) {1779; CHECK-LABEL: @auto_gen_48_logical_fmf(1780; CHECK-NEXT: [[RETVAL:%.*]] = fcmp ogt double [[A:%.*]], [[B:%.*]]1781; CHECK-NEXT: ret i1 [[RETVAL]]1782;1783 %cmp = fcmp ugt double %a, %b1784 %cmp1 = fcmp fast oge double %a, %b1785 %retval = select i1 %cmp, i1 %cmp1, i1 false1786 ret i1 %retval1787}1788 1789define i1 @auto_gen_49(double %a, double %b) {1790; CHECK-LABEL: @auto_gen_49(1791; CHECK-NEXT: ret i1 false1792;1793 %cmp = fcmp ugt double %a, %b1794 %cmp1 = fcmp olt double %a, %b1795 %retval = and i1 %cmp, %cmp11796 ret i1 %retval1797}1798 1799define i1 @auto_gen_49_logical(double %a, double %b) {1800; CHECK-LABEL: @auto_gen_49_logical(1801; CHECK-NEXT: ret i1 false1802;1803 %cmp = fcmp ugt double %a, %b1804 %cmp1 = fcmp olt double %a, %b1805 %retval = select i1 %cmp, i1 %cmp1, i1 false1806 ret i1 %retval1807}1808 1809define i1 @auto_gen_49_logical_fmf(double %a, double %b) {1810; CHECK-LABEL: @auto_gen_49_logical_fmf(1811; CHECK-NEXT: ret i1 false1812;1813 %cmp = fcmp fast ugt double %a, %b1814 %cmp1 = fcmp fast olt double %a, %b1815 %retval = select i1 %cmp, i1 %cmp1, i1 false1816 ret i1 %retval1817}1818 1819define i1 @auto_gen_50(double %a, double %b) {1820; CHECK-LABEL: @auto_gen_50(1821; CHECK-NEXT: ret i1 false1822;1823 %cmp = fcmp ugt double %a, %b1824 %cmp1 = fcmp ole double %a, %b1825 %retval = and i1 %cmp, %cmp11826 ret i1 %retval1827}1828 1829define i1 @auto_gen_50_logical(double %a, double %b) {1830; CHECK-LABEL: @auto_gen_50_logical(1831; CHECK-NEXT: ret i1 false1832;1833 %cmp = fcmp ugt double %a, %b1834 %cmp1 = fcmp ole double %a, %b1835 %retval = select i1 %cmp, i1 %cmp1, i1 false1836 ret i1 %retval1837}1838 1839define i1 @auto_gen_50_logical_fmf(double %a, double %b) {1840; CHECK-LABEL: @auto_gen_50_logical_fmf(1841; CHECK-NEXT: ret i1 false1842;1843 %cmp = fcmp ugt double %a, %b1844 %cmp1 = fcmp fast ole double %a, %b1845 %retval = select i1 %cmp, i1 %cmp1, i1 false1846 ret i1 %retval1847}1848 1849define i1 @auto_gen_51(double %a, double %b) {1850; CHECK-LABEL: @auto_gen_51(1851; CHECK-NEXT: [[RETVAL:%.*]] = fcmp ogt double [[A:%.*]], [[B:%.*]]1852; CHECK-NEXT: ret i1 [[RETVAL]]1853;1854 %cmp = fcmp ugt double %a, %b1855 %cmp1 = fcmp one double %a, %b1856 %retval = and i1 %cmp, %cmp11857 ret i1 %retval1858}1859 1860define i1 @auto_gen_51_logical(double %a, double %b) {1861; CHECK-LABEL: @auto_gen_51_logical(1862; CHECK-NEXT: [[RETVAL:%.*]] = fcmp ogt double [[A:%.*]], [[B:%.*]]1863; CHECK-NEXT: ret i1 [[RETVAL]]1864;1865 %cmp = fcmp ugt double %a, %b1866 %cmp1 = fcmp one double %a, %b1867 %retval = select i1 %cmp, i1 %cmp1, i1 false1868 ret i1 %retval1869}1870 1871define i1 @auto_gen_51_logical_fmf(double %a, double %b) {1872; CHECK-LABEL: @auto_gen_51_logical_fmf(1873; CHECK-NEXT: [[RETVAL:%.*]] = fcmp fast ogt double [[A:%.*]], [[B:%.*]]1874; CHECK-NEXT: ret i1 [[RETVAL]]1875;1876 %cmp = fcmp fast ugt double %a, %b1877 %cmp1 = fcmp fast one double %a, %b1878 %retval = select i1 %cmp, i1 %cmp1, i1 false1879 ret i1 %retval1880}1881 1882define i1 @auto_gen_52(double %a, double %b) {1883; CHECK-LABEL: @auto_gen_52(1884; CHECK-NEXT: [[RETVAL:%.*]] = fcmp ogt double [[A:%.*]], [[B:%.*]]1885; CHECK-NEXT: ret i1 [[RETVAL]]1886;1887 %cmp = fcmp ugt double %a, %b1888 %cmp1 = fcmp ord double %a, %b1889 %retval = and i1 %cmp, %cmp11890 ret i1 %retval1891}1892 1893define i1 @auto_gen_52_logical(double %a, double %b) {1894; CHECK-LABEL: @auto_gen_52_logical(1895; CHECK-NEXT: [[RETVAL:%.*]] = fcmp ogt double [[A:%.*]], [[B:%.*]]1896; CHECK-NEXT: ret i1 [[RETVAL]]1897;1898 %cmp = fcmp ugt double %a, %b1899 %cmp1 = fcmp ord double %a, %b1900 %retval = select i1 %cmp, i1 %cmp1, i1 false1901 ret i1 %retval1902}1903 1904define i1 @auto_gen_52_logical_fmf(double %a, double %b) {1905; CHECK-LABEL: @auto_gen_52_logical_fmf(1906; CHECK-NEXT: [[CMP:%.*]] = fcmp ugt double [[A:%.*]], [[B:%.*]]1907; CHECK-NEXT: ret i1 [[CMP]]1908;1909 %cmp = fcmp ugt double %a, %b1910 %cmp1 = fcmp fast ord double %a, %b1911 %retval = select i1 %cmp, i1 %cmp1, i1 false1912 ret i1 %retval1913}1914 1915define i1 @auto_gen_53(double %a, double %b) {1916; CHECK-LABEL: @auto_gen_53(1917; CHECK-NEXT: [[RETVAL:%.*]] = fcmp uno double [[A:%.*]], [[B:%.*]]1918; CHECK-NEXT: ret i1 [[RETVAL]]1919;1920 %cmp = fcmp ugt double %a, %b1921 %cmp1 = fcmp ueq double %a, %b1922 %retval = and i1 %cmp, %cmp11923 ret i1 %retval1924}1925 1926define i1 @auto_gen_53_logical(double %a, double %b) {1927; CHECK-LABEL: @auto_gen_53_logical(1928; CHECK-NEXT: [[RETVAL:%.*]] = fcmp uno double [[A:%.*]], [[B:%.*]]1929; CHECK-NEXT: ret i1 [[RETVAL]]1930;1931 %cmp = fcmp ugt double %a, %b1932 %cmp1 = fcmp ueq double %a, %b1933 %retval = select i1 %cmp, i1 %cmp1, i1 false1934 ret i1 %retval1935}1936 1937define i1 @auto_gen_53_logical_fmf(double %a, double %b) {1938; CHECK-LABEL: @auto_gen_53_logical_fmf(1939; CHECK-NEXT: ret i1 false1940;1941 %cmp = fcmp fast ugt double %a, %b1942 %cmp1 = fcmp fast ueq double %a, %b1943 %retval = select i1 %cmp, i1 %cmp1, i1 false1944 ret i1 %retval1945}1946 1947define i1 @auto_gen_54(double %a, double %b) {1948; CHECK-LABEL: @auto_gen_54(1949; CHECK-NEXT: [[RETVAL:%.*]] = fcmp ugt double [[A:%.*]], [[B:%.*]]1950; CHECK-NEXT: ret i1 [[RETVAL]]1951;1952 %cmp = fcmp ugt double %a, %b1953 %cmp1 = fcmp ugt double %a, %b1954 %retval = and i1 %cmp, %cmp11955 ret i1 %retval1956}1957 1958define i1 @auto_gen_54_logical(double %a, double %b) {1959; CHECK-LABEL: @auto_gen_54_logical(1960; CHECK-NEXT: [[RETVAL:%.*]] = fcmp ugt double [[A:%.*]], [[B:%.*]]1961; CHECK-NEXT: ret i1 [[RETVAL]]1962;1963 %cmp = fcmp ugt double %a, %b1964 %cmp1 = fcmp ugt double %a, %b1965 %retval = select i1 %cmp, i1 %cmp1, i1 false1966 ret i1 %retval1967}1968 1969define i1 @auto_gen_54_logical_fmf(double %a, double %b) {1970; CHECK-LABEL: @auto_gen_54_logical_fmf(1971; CHECK-NEXT: [[RETVAL:%.*]] = fcmp ugt double [[A:%.*]], [[B:%.*]]1972; CHECK-NEXT: ret i1 [[RETVAL]]1973;1974 %cmp = fcmp ugt double %a, %b1975 %cmp1 = fcmp fast ugt double %a, %b1976 %retval = select i1 %cmp, i1 %cmp1, i1 false1977 ret i1 %retval1978}1979 1980define i1 @auto_gen_55(double %a, double %b) {1981; CHECK-LABEL: @auto_gen_55(1982; CHECK-NEXT: ret i1 false1983;1984 %cmp = fcmp uge double %a, %b1985 %cmp1 = fcmp false double %a, %b1986 %retval = and i1 %cmp, %cmp11987 ret i1 %retval1988}1989 1990define i1 @auto_gen_55_logical(double %a, double %b) {1991; CHECK-LABEL: @auto_gen_55_logical(1992; CHECK-NEXT: ret i1 false1993;1994 %cmp = fcmp uge double %a, %b1995 %cmp1 = fcmp false double %a, %b1996 %retval = select i1 %cmp, i1 %cmp1, i1 false1997 ret i1 %retval1998}1999 2000define i1 @auto_gen_55_logical_fmf(double %a, double %b) {2001; CHECK-LABEL: @auto_gen_55_logical_fmf(2002; CHECK-NEXT: ret i1 false2003;2004 %cmp = fcmp fast uge double %a, %b2005 %cmp1 = fcmp fast false double %a, %b2006 %retval = select i1 %cmp, i1 %cmp1, i1 false2007 ret i1 %retval2008}2009 2010define i1 @auto_gen_56(double %a, double %b) {2011; CHECK-LABEL: @auto_gen_56(2012; CHECK-NEXT: [[RETVAL:%.*]] = fcmp oeq double [[A:%.*]], [[B:%.*]]2013; CHECK-NEXT: ret i1 [[RETVAL]]2014;2015 %cmp = fcmp uge double %a, %b2016 %cmp1 = fcmp oeq double %a, %b2017 %retval = and i1 %cmp, %cmp12018 ret i1 %retval2019}2020 2021define i1 @auto_gen_56_logical(double %a, double %b) {2022; CHECK-LABEL: @auto_gen_56_logical(2023; CHECK-NEXT: [[RETVAL:%.*]] = fcmp oeq double [[A:%.*]], [[B:%.*]]2024; CHECK-NEXT: ret i1 [[RETVAL]]2025;2026 %cmp = fcmp uge double %a, %b2027 %cmp1 = fcmp oeq double %a, %b2028 %retval = select i1 %cmp, i1 %cmp1, i1 false2029 ret i1 %retval2030}2031 2032define i1 @auto_gen_56_logical_fmf(double %a, double %b) {2033; CHECK-LABEL: @auto_gen_56_logical_fmf(2034; CHECK-NEXT: [[RETVAL:%.*]] = fcmp oeq double [[A:%.*]], [[B:%.*]]2035; CHECK-NEXT: ret i1 [[RETVAL]]2036;2037 %cmp = fcmp uge double %a, %b2038 %cmp1 = fcmp fast oeq double %a, %b2039 %retval = select i1 %cmp, i1 %cmp1, i1 false2040 ret i1 %retval2041}2042 2043define i1 @auto_gen_57(double %a, double %b) {2044; CHECK-LABEL: @auto_gen_57(2045; CHECK-NEXT: [[RETVAL:%.*]] = fcmp ogt double [[A:%.*]], [[B:%.*]]2046; CHECK-NEXT: ret i1 [[RETVAL]]2047;2048 %cmp = fcmp uge double %a, %b2049 %cmp1 = fcmp ogt double %a, %b2050 %retval = and i1 %cmp, %cmp12051 ret i1 %retval2052}2053 2054define i1 @auto_gen_57_logical(double %a, double %b) {2055; CHECK-LABEL: @auto_gen_57_logical(2056; CHECK-NEXT: [[RETVAL:%.*]] = fcmp ogt double [[A:%.*]], [[B:%.*]]2057; CHECK-NEXT: ret i1 [[RETVAL]]2058;2059 %cmp = fcmp uge double %a, %b2060 %cmp1 = fcmp ogt double %a, %b2061 %retval = select i1 %cmp, i1 %cmp1, i1 false2062 ret i1 %retval2063}2064 2065define i1 @auto_gen_57_logical_fmf(double %a, double %b) {2066; CHECK-LABEL: @auto_gen_57_logical_fmf(2067; CHECK-NEXT: [[RETVAL:%.*]] = fcmp fast ogt double [[A:%.*]], [[B:%.*]]2068; CHECK-NEXT: ret i1 [[RETVAL]]2069;2070 %cmp = fcmp fast uge double %a, %b2071 %cmp1 = fcmp fast ogt double %a, %b2072 %retval = select i1 %cmp, i1 %cmp1, i1 false2073 ret i1 %retval2074}2075 2076define i1 @auto_gen_58(double %a, double %b) {2077; CHECK-LABEL: @auto_gen_58(2078; CHECK-NEXT: [[RETVAL:%.*]] = fcmp oge double [[A:%.*]], [[B:%.*]]2079; CHECK-NEXT: ret i1 [[RETVAL]]2080;2081 %cmp = fcmp uge double %a, %b2082 %cmp1 = fcmp oge double %a, %b2083 %retval = and i1 %cmp, %cmp12084 ret i1 %retval2085}2086 2087define i1 @auto_gen_58_logical(double %a, double %b) {2088; CHECK-LABEL: @auto_gen_58_logical(2089; CHECK-NEXT: [[RETVAL:%.*]] = fcmp oge double [[A:%.*]], [[B:%.*]]2090; CHECK-NEXT: ret i1 [[RETVAL]]2091;2092 %cmp = fcmp uge double %a, %b2093 %cmp1 = fcmp oge double %a, %b2094 %retval = select i1 %cmp, i1 %cmp1, i1 false2095 ret i1 %retval2096}2097 2098define i1 @auto_gen_58_logical_fmf(double %a, double %b) {2099; CHECK-LABEL: @auto_gen_58_logical_fmf(2100; CHECK-NEXT: [[RETVAL:%.*]] = fcmp oge double [[A:%.*]], [[B:%.*]]2101; CHECK-NEXT: ret i1 [[RETVAL]]2102;2103 %cmp = fcmp uge double %a, %b2104 %cmp1 = fcmp fast oge double %a, %b2105 %retval = select i1 %cmp, i1 %cmp1, i1 false2106 ret i1 %retval2107}2108 2109define i1 @auto_gen_59(double %a, double %b) {2110; CHECK-LABEL: @auto_gen_59(2111; CHECK-NEXT: ret i1 false2112;2113 %cmp = fcmp uge double %a, %b2114 %cmp1 = fcmp olt double %a, %b2115 %retval = and i1 %cmp, %cmp12116 ret i1 %retval2117}2118 2119define i1 @auto_gen_59_logical(double %a, double %b) {2120; CHECK-LABEL: @auto_gen_59_logical(2121; CHECK-NEXT: ret i1 false2122;2123 %cmp = fcmp uge double %a, %b2124 %cmp1 = fcmp olt double %a, %b2125 %retval = select i1 %cmp, i1 %cmp1, i1 false2126 ret i1 %retval2127}2128 2129define i1 @auto_gen_59_logical_fmf(double %a, double %b) {2130; CHECK-LABEL: @auto_gen_59_logical_fmf(2131; CHECK-NEXT: ret i1 false2132;2133 %cmp = fcmp fast uge double %a, %b2134 %cmp1 = fcmp fast olt double %a, %b2135 %retval = select i1 %cmp, i1 %cmp1, i1 false2136 ret i1 %retval2137}2138 2139define i1 @auto_gen_60(double %a, double %b) {2140; CHECK-LABEL: @auto_gen_60(2141; CHECK-NEXT: [[RETVAL:%.*]] = fcmp oeq double [[A:%.*]], [[B:%.*]]2142; CHECK-NEXT: ret i1 [[RETVAL]]2143;2144 %cmp = fcmp uge double %a, %b2145 %cmp1 = fcmp ole double %a, %b2146 %retval = and i1 %cmp, %cmp12147 ret i1 %retval2148}2149 2150define i1 @auto_gen_60_logical(double %a, double %b) {2151; CHECK-LABEL: @auto_gen_60_logical(2152; CHECK-NEXT: [[RETVAL:%.*]] = fcmp oeq double [[A:%.*]], [[B:%.*]]2153; CHECK-NEXT: ret i1 [[RETVAL]]2154;2155 %cmp = fcmp uge double %a, %b2156 %cmp1 = fcmp ole double %a, %b2157 %retval = select i1 %cmp, i1 %cmp1, i1 false2158 ret i1 %retval2159}2160 2161define i1 @auto_gen_60_logical_fmf(double %a, double %b) {2162; CHECK-LABEL: @auto_gen_60_logical_fmf(2163; CHECK-NEXT: [[RETVAL:%.*]] = fcmp oeq double [[A:%.*]], [[B:%.*]]2164; CHECK-NEXT: ret i1 [[RETVAL]]2165;2166 %cmp = fcmp uge double %a, %b2167 %cmp1 = fcmp fast ole double %a, %b2168 %retval = select i1 %cmp, i1 %cmp1, i1 false2169 ret i1 %retval2170}2171 2172define i1 @auto_gen_61(double %a, double %b) {2173; CHECK-LABEL: @auto_gen_61(2174; CHECK-NEXT: [[RETVAL:%.*]] = fcmp ogt double [[A:%.*]], [[B:%.*]]2175; CHECK-NEXT: ret i1 [[RETVAL]]2176;2177 %cmp = fcmp uge double %a, %b2178 %cmp1 = fcmp one double %a, %b2179 %retval = and i1 %cmp, %cmp12180 ret i1 %retval2181}2182 2183define i1 @auto_gen_61_logical(double %a, double %b) {2184; CHECK-LABEL: @auto_gen_61_logical(2185; CHECK-NEXT: [[RETVAL:%.*]] = fcmp ogt double [[A:%.*]], [[B:%.*]]2186; CHECK-NEXT: ret i1 [[RETVAL]]2187;2188 %cmp = fcmp uge double %a, %b2189 %cmp1 = fcmp one double %a, %b2190 %retval = select i1 %cmp, i1 %cmp1, i1 false2191 ret i1 %retval2192}2193 2194define i1 @auto_gen_61_logical_fmf(double %a, double %b) {2195; CHECK-LABEL: @auto_gen_61_logical_fmf(2196; CHECK-NEXT: [[RETVAL:%.*]] = fcmp fast ogt double [[A:%.*]], [[B:%.*]]2197; CHECK-NEXT: ret i1 [[RETVAL]]2198;2199 %cmp = fcmp fast uge double %a, %b2200 %cmp1 = fcmp fast one double %a, %b2201 %retval = select i1 %cmp, i1 %cmp1, i1 false2202 ret i1 %retval2203}2204 2205define i1 @auto_gen_62(double %a, double %b) {2206; CHECK-LABEL: @auto_gen_62(2207; CHECK-NEXT: [[RETVAL:%.*]] = fcmp oge double [[A:%.*]], [[B:%.*]]2208; CHECK-NEXT: ret i1 [[RETVAL]]2209;2210 %cmp = fcmp uge double %a, %b2211 %cmp1 = fcmp ord double %a, %b2212 %retval = and i1 %cmp, %cmp12213 ret i1 %retval2214}2215 2216define i1 @auto_gen_62_logical(double %a, double %b) {2217; CHECK-LABEL: @auto_gen_62_logical(2218; CHECK-NEXT: [[RETVAL:%.*]] = fcmp oge double [[A:%.*]], [[B:%.*]]2219; CHECK-NEXT: ret i1 [[RETVAL]]2220;2221 %cmp = fcmp uge double %a, %b2222 %cmp1 = fcmp ord double %a, %b2223 %retval = select i1 %cmp, i1 %cmp1, i1 false2224 ret i1 %retval2225}2226 2227define i1 @auto_gen_62_logical_fmf(double %a, double %b) {2228; CHECK-LABEL: @auto_gen_62_logical_fmf(2229; CHECK-NEXT: [[CMP:%.*]] = fcmp uge double [[A:%.*]], [[B:%.*]]2230; CHECK-NEXT: ret i1 [[CMP]]2231;2232 %cmp = fcmp uge double %a, %b2233 %cmp1 = fcmp fast ord double %a, %b2234 %retval = select i1 %cmp, i1 %cmp1, i1 false2235 ret i1 %retval2236}2237 2238define i1 @auto_gen_63(double %a, double %b) {2239; CHECK-LABEL: @auto_gen_63(2240; CHECK-NEXT: [[RETVAL:%.*]] = fcmp ueq double [[A:%.*]], [[B:%.*]]2241; CHECK-NEXT: ret i1 [[RETVAL]]2242;2243 %cmp = fcmp uge double %a, %b2244 %cmp1 = fcmp ueq double %a, %b2245 %retval = and i1 %cmp, %cmp12246 ret i1 %retval2247}2248 2249define i1 @auto_gen_63_logical(double %a, double %b) {2250; CHECK-LABEL: @auto_gen_63_logical(2251; CHECK-NEXT: [[RETVAL:%.*]] = fcmp ueq double [[A:%.*]], [[B:%.*]]2252; CHECK-NEXT: ret i1 [[RETVAL]]2253;2254 %cmp = fcmp uge double %a, %b2255 %cmp1 = fcmp ueq double %a, %b2256 %retval = select i1 %cmp, i1 %cmp1, i1 false2257 ret i1 %retval2258}2259 2260define i1 @auto_gen_63_logical_fmf(double %a, double %b) {2261; CHECK-LABEL: @auto_gen_63_logical_fmf(2262; CHECK-NEXT: [[RETVAL:%.*]] = fcmp fast ueq double [[A:%.*]], [[B:%.*]]2263; CHECK-NEXT: ret i1 [[RETVAL]]2264;2265 %cmp = fcmp fast uge double %a, %b2266 %cmp1 = fcmp fast ueq double %a, %b2267 %retval = select i1 %cmp, i1 %cmp1, i1 false2268 ret i1 %retval2269}2270 2271define i1 @auto_gen_64(double %a, double %b) {2272; CHECK-LABEL: @auto_gen_64(2273; CHECK-NEXT: [[RETVAL:%.*]] = fcmp ugt double [[A:%.*]], [[B:%.*]]2274; CHECK-NEXT: ret i1 [[RETVAL]]2275;2276 %cmp = fcmp uge double %a, %b2277 %cmp1 = fcmp ugt double %a, %b2278 %retval = and i1 %cmp, %cmp12279 ret i1 %retval2280}2281 2282define i1 @auto_gen_64_logical(double %a, double %b) {2283; CHECK-LABEL: @auto_gen_64_logical(2284; CHECK-NEXT: [[RETVAL:%.*]] = fcmp ugt double [[A:%.*]], [[B:%.*]]2285; CHECK-NEXT: ret i1 [[RETVAL]]2286;2287 %cmp = fcmp uge double %a, %b2288 %cmp1 = fcmp ugt double %a, %b2289 %retval = select i1 %cmp, i1 %cmp1, i1 false2290 ret i1 %retval2291}2292 2293define i1 @auto_gen_64_logical_fmf(double %a, double %b) {2294; CHECK-LABEL: @auto_gen_64_logical_fmf(2295; CHECK-NEXT: [[RETVAL:%.*]] = fcmp ugt double [[A:%.*]], [[B:%.*]]2296; CHECK-NEXT: ret i1 [[RETVAL]]2297;2298 %cmp = fcmp uge double %a, %b2299 %cmp1 = fcmp fast ugt double %a, %b2300 %retval = select i1 %cmp, i1 %cmp1, i1 false2301 ret i1 %retval2302}2303 2304define i1 @auto_gen_65(double %a, double %b) {2305; CHECK-LABEL: @auto_gen_65(2306; CHECK-NEXT: [[RETVAL:%.*]] = fcmp uge double [[A:%.*]], [[B:%.*]]2307; CHECK-NEXT: ret i1 [[RETVAL]]2308;2309 %cmp = fcmp uge double %a, %b2310 %cmp1 = fcmp uge double %a, %b2311 %retval = and i1 %cmp, %cmp12312 ret i1 %retval2313}2314 2315define i1 @auto_gen_65_logical(double %a, double %b) {2316; CHECK-LABEL: @auto_gen_65_logical(2317; CHECK-NEXT: [[RETVAL:%.*]] = fcmp uge double [[A:%.*]], [[B:%.*]]2318; CHECK-NEXT: ret i1 [[RETVAL]]2319;2320 %cmp = fcmp uge double %a, %b2321 %cmp1 = fcmp uge double %a, %b2322 %retval = select i1 %cmp, i1 %cmp1, i1 false2323 ret i1 %retval2324}2325 2326define i1 @auto_gen_65_logical_fmf(double %a, double %b) {2327; CHECK-LABEL: @auto_gen_65_logical_fmf(2328; CHECK-NEXT: [[RETVAL:%.*]] = fcmp fast uge double [[A:%.*]], [[B:%.*]]2329; CHECK-NEXT: ret i1 [[RETVAL]]2330;2331 %cmp = fcmp fast uge double %a, %b2332 %cmp1 = fcmp fast uge double %a, %b2333 %retval = select i1 %cmp, i1 %cmp1, i1 false2334 ret i1 %retval2335}2336 2337define i1 @auto_gen_66(double %a, double %b) {2338; CHECK-LABEL: @auto_gen_66(2339; CHECK-NEXT: ret i1 false2340;2341 %cmp = fcmp ult double %a, %b2342 %cmp1 = fcmp false double %a, %b2343 %retval = and i1 %cmp, %cmp12344 ret i1 %retval2345}2346 2347define i1 @auto_gen_66_logical(double %a, double %b) {2348; CHECK-LABEL: @auto_gen_66_logical(2349; CHECK-NEXT: ret i1 false2350;2351 %cmp = fcmp ult double %a, %b2352 %cmp1 = fcmp false double %a, %b2353 %retval = select i1 %cmp, i1 %cmp1, i1 false2354 ret i1 %retval2355}2356 2357define i1 @auto_gen_66_logical_fmf(double %a, double %b) {2358; CHECK-LABEL: @auto_gen_66_logical_fmf(2359; CHECK-NEXT: ret i1 false2360;2361 %cmp = fcmp ult double %a, %b2362 %cmp1 = fcmp fast false double %a, %b2363 %retval = select i1 %cmp, i1 %cmp1, i1 false2364 ret i1 %retval2365}2366 2367define i1 @auto_gen_67(double %a, double %b) {2368; CHECK-LABEL: @auto_gen_67(2369; CHECK-NEXT: ret i1 false2370;2371 %cmp = fcmp ult double %a, %b2372 %cmp1 = fcmp oeq double %a, %b2373 %retval = and i1 %cmp, %cmp12374 ret i1 %retval2375}2376 2377define i1 @auto_gen_67_logical(double %a, double %b) {2378; CHECK-LABEL: @auto_gen_67_logical(2379; CHECK-NEXT: ret i1 false2380;2381 %cmp = fcmp ult double %a, %b2382 %cmp1 = fcmp oeq double %a, %b2383 %retval = select i1 %cmp, i1 %cmp1, i1 false2384 ret i1 %retval2385}2386 2387define i1 @auto_gen_67_logical_fmf(double %a, double %b) {2388; CHECK-LABEL: @auto_gen_67_logical_fmf(2389; CHECK-NEXT: ret i1 false2390;2391 %cmp = fcmp fast ult double %a, %b2392 %cmp1 = fcmp fast oeq double %a, %b2393 %retval = select i1 %cmp, i1 %cmp1, i1 false2394 ret i1 %retval2395}2396 2397define i1 @auto_gen_68(double %a, double %b) {2398; CHECK-LABEL: @auto_gen_68(2399; CHECK-NEXT: ret i1 false2400;2401 %cmp = fcmp ult double %a, %b2402 %cmp1 = fcmp ogt double %a, %b2403 %retval = and i1 %cmp, %cmp12404 ret i1 %retval2405}2406 2407define i1 @auto_gen_68_logical(double %a, double %b) {2408; CHECK-LABEL: @auto_gen_68_logical(2409; CHECK-NEXT: ret i1 false2410;2411 %cmp = fcmp ult double %a, %b2412 %cmp1 = fcmp ogt double %a, %b2413 %retval = select i1 %cmp, i1 %cmp1, i1 false2414 ret i1 %retval2415}2416 2417define i1 @auto_gen_68_logical_fmf(double %a, double %b) {2418; CHECK-LABEL: @auto_gen_68_logical_fmf(2419; CHECK-NEXT: ret i1 false2420;2421 %cmp = fcmp ult double %a, %b2422 %cmp1 = fcmp fast ogt double %a, %b2423 %retval = select i1 %cmp, i1 %cmp1, i1 false2424 ret i1 %retval2425}2426 2427define i1 @auto_gen_69(double %a, double %b) {2428; CHECK-LABEL: @auto_gen_69(2429; CHECK-NEXT: ret i1 false2430;2431 %cmp = fcmp ult double %a, %b2432 %cmp1 = fcmp oge double %a, %b2433 %retval = and i1 %cmp, %cmp12434 ret i1 %retval2435}2436 2437define i1 @auto_gen_69_logical(double %a, double %b) {2438; CHECK-LABEL: @auto_gen_69_logical(2439; CHECK-NEXT: ret i1 false2440;2441 %cmp = fcmp ult double %a, %b2442 %cmp1 = fcmp oge double %a, %b2443 %retval = select i1 %cmp, i1 %cmp1, i1 false2444 ret i1 %retval2445}2446 2447define i1 @auto_gen_69_logical_fmf(double %a, double %b) {2448; CHECK-LABEL: @auto_gen_69_logical_fmf(2449; CHECK-NEXT: ret i1 false2450;2451 %cmp = fcmp fast ult double %a, %b2452 %cmp1 = fcmp fast oge double %a, %b2453 %retval = select i1 %cmp, i1 %cmp1, i1 false2454 ret i1 %retval2455}2456 2457define i1 @auto_gen_70(double %a, double %b) {2458; CHECK-LABEL: @auto_gen_70(2459; CHECK-NEXT: [[RETVAL:%.*]] = fcmp olt double [[A:%.*]], [[B:%.*]]2460; CHECK-NEXT: ret i1 [[RETVAL]]2461;2462 %cmp = fcmp ult double %a, %b2463 %cmp1 = fcmp olt double %a, %b2464 %retval = and i1 %cmp, %cmp12465 ret i1 %retval2466}2467 2468define i1 @auto_gen_70_logical(double %a, double %b) {2469; CHECK-LABEL: @auto_gen_70_logical(2470; CHECK-NEXT: [[RETVAL:%.*]] = fcmp olt double [[A:%.*]], [[B:%.*]]2471; CHECK-NEXT: ret i1 [[RETVAL]]2472;2473 %cmp = fcmp ult double %a, %b2474 %cmp1 = fcmp olt double %a, %b2475 %retval = select i1 %cmp, i1 %cmp1, i1 false2476 ret i1 %retval2477}2478 2479define i1 @auto_gen_70_logical_fmf(double %a, double %b) {2480; CHECK-LABEL: @auto_gen_70_logical_fmf(2481; CHECK-NEXT: [[RETVAL:%.*]] = fcmp olt double [[A:%.*]], [[B:%.*]]2482; CHECK-NEXT: ret i1 [[RETVAL]]2483;2484 %cmp = fcmp ult double %a, %b2485 %cmp1 = fcmp fast olt double %a, %b2486 %retval = select i1 %cmp, i1 %cmp1, i1 false2487 ret i1 %retval2488}2489 2490define i1 @auto_gen_71(double %a, double %b) {2491; CHECK-LABEL: @auto_gen_71(2492; CHECK-NEXT: [[RETVAL:%.*]] = fcmp olt double [[A:%.*]], [[B:%.*]]2493; CHECK-NEXT: ret i1 [[RETVAL]]2494;2495 %cmp = fcmp ult double %a, %b2496 %cmp1 = fcmp ole double %a, %b2497 %retval = and i1 %cmp, %cmp12498 ret i1 %retval2499}2500 2501define i1 @auto_gen_71_logical(double %a, double %b) {2502; CHECK-LABEL: @auto_gen_71_logical(2503; CHECK-NEXT: [[RETVAL:%.*]] = fcmp olt double [[A:%.*]], [[B:%.*]]2504; CHECK-NEXT: ret i1 [[RETVAL]]2505;2506 %cmp = fcmp ult double %a, %b2507 %cmp1 = fcmp ole double %a, %b2508 %retval = select i1 %cmp, i1 %cmp1, i1 false2509 ret i1 %retval2510}2511 2512define i1 @auto_gen_71_logical_fmf(double %a, double %b) {2513; CHECK-LABEL: @auto_gen_71_logical_fmf(2514; CHECK-NEXT: [[RETVAL:%.*]] = fcmp fast olt double [[A:%.*]], [[B:%.*]]2515; CHECK-NEXT: ret i1 [[RETVAL]]2516;2517 %cmp = fcmp fast ult double %a, %b2518 %cmp1 = fcmp fast ole double %a, %b2519 %retval = select i1 %cmp, i1 %cmp1, i1 false2520 ret i1 %retval2521}2522 2523define i1 @auto_gen_72(double %a, double %b) {2524; CHECK-LABEL: @auto_gen_72(2525; CHECK-NEXT: [[RETVAL:%.*]] = fcmp olt double [[A:%.*]], [[B:%.*]]2526; CHECK-NEXT: ret i1 [[RETVAL]]2527;2528 %cmp = fcmp ult double %a, %b2529 %cmp1 = fcmp one double %a, %b2530 %retval = and i1 %cmp, %cmp12531 ret i1 %retval2532}2533 2534define i1 @auto_gen_72_logical(double %a, double %b) {2535; CHECK-LABEL: @auto_gen_72_logical(2536; CHECK-NEXT: [[RETVAL:%.*]] = fcmp olt double [[A:%.*]], [[B:%.*]]2537; CHECK-NEXT: ret i1 [[RETVAL]]2538;2539 %cmp = fcmp ult double %a, %b2540 %cmp1 = fcmp one double %a, %b2541 %retval = select i1 %cmp, i1 %cmp1, i1 false2542 ret i1 %retval2543}2544 2545define i1 @auto_gen_72_logical_fmf(double %a, double %b) {2546; CHECK-LABEL: @auto_gen_72_logical_fmf(2547; CHECK-NEXT: [[RETVAL:%.*]] = fcmp olt double [[A:%.*]], [[B:%.*]]2548; CHECK-NEXT: ret i1 [[RETVAL]]2549;2550 %cmp = fcmp ult double %a, %b2551 %cmp1 = fcmp fast one double %a, %b2552 %retval = select i1 %cmp, i1 %cmp1, i1 false2553 ret i1 %retval2554}2555 2556define i1 @auto_gen_73(double %a, double %b) {2557; CHECK-LABEL: @auto_gen_73(2558; CHECK-NEXT: [[RETVAL:%.*]] = fcmp olt double [[A:%.*]], [[B:%.*]]2559; CHECK-NEXT: ret i1 [[RETVAL]]2560;2561 %cmp = fcmp ult double %a, %b2562 %cmp1 = fcmp ord double %a, %b2563 %retval = and i1 %cmp, %cmp12564 ret i1 %retval2565}2566 2567define i1 @auto_gen_73_logical(double %a, double %b) {2568; CHECK-LABEL: @auto_gen_73_logical(2569; CHECK-NEXT: [[RETVAL:%.*]] = fcmp olt double [[A:%.*]], [[B:%.*]]2570; CHECK-NEXT: ret i1 [[RETVAL]]2571;2572 %cmp = fcmp ult double %a, %b2573 %cmp1 = fcmp ord double %a, %b2574 %retval = select i1 %cmp, i1 %cmp1, i1 false2575 ret i1 %retval2576}2577 2578define i1 @auto_gen_73_logical_fmf(double %a, double %b) {2579; CHECK-LABEL: @auto_gen_73_logical_fmf(2580; CHECK-NEXT: [[CMP:%.*]] = fcmp fast ult double [[A:%.*]], [[B:%.*]]2581; CHECK-NEXT: ret i1 [[CMP]]2582;2583 %cmp = fcmp fast ult double %a, %b2584 %cmp1 = fcmp fast ord double %a, %b2585 %retval = select i1 %cmp, i1 %cmp1, i1 false2586 ret i1 %retval2587}2588 2589define i1 @auto_gen_74(double %a, double %b) {2590; CHECK-LABEL: @auto_gen_74(2591; CHECK-NEXT: [[RETVAL:%.*]] = fcmp uno double [[A:%.*]], [[B:%.*]]2592; CHECK-NEXT: ret i1 [[RETVAL]]2593;2594 %cmp = fcmp ult double %a, %b2595 %cmp1 = fcmp ueq double %a, %b2596 %retval = and i1 %cmp, %cmp12597 ret i1 %retval2598}2599 2600define i1 @auto_gen_74_logical(double %a, double %b) {2601; CHECK-LABEL: @auto_gen_74_logical(2602; CHECK-NEXT: [[RETVAL:%.*]] = fcmp uno double [[A:%.*]], [[B:%.*]]2603; CHECK-NEXT: ret i1 [[RETVAL]]2604;2605 %cmp = fcmp ult double %a, %b2606 %cmp1 = fcmp ueq double %a, %b2607 %retval = select i1 %cmp, i1 %cmp1, i1 false2608 ret i1 %retval2609}2610 2611define i1 @auto_gen_74_logical_fmf(double %a, double %b) {2612; CHECK-LABEL: @auto_gen_74_logical_fmf(2613; CHECK-NEXT: [[RETVAL:%.*]] = fcmp uno double [[A:%.*]], [[B:%.*]]2614; CHECK-NEXT: ret i1 [[RETVAL]]2615;2616 %cmp = fcmp ult double %a, %b2617 %cmp1 = fcmp fast ueq double %a, %b2618 %retval = select i1 %cmp, i1 %cmp1, i1 false2619 ret i1 %retval2620}2621 2622define i1 @auto_gen_75(double %a, double %b) {2623; CHECK-LABEL: @auto_gen_75(2624; CHECK-NEXT: [[RETVAL:%.*]] = fcmp uno double [[A:%.*]], [[B:%.*]]2625; CHECK-NEXT: ret i1 [[RETVAL]]2626;2627 %cmp = fcmp ult double %a, %b2628 %cmp1 = fcmp ugt double %a, %b2629 %retval = and i1 %cmp, %cmp12630 ret i1 %retval2631}2632 2633define i1 @auto_gen_75_logical(double %a, double %b) {2634; CHECK-LABEL: @auto_gen_75_logical(2635; CHECK-NEXT: [[RETVAL:%.*]] = fcmp uno double [[A:%.*]], [[B:%.*]]2636; CHECK-NEXT: ret i1 [[RETVAL]]2637;2638 %cmp = fcmp ult double %a, %b2639 %cmp1 = fcmp ugt double %a, %b2640 %retval = select i1 %cmp, i1 %cmp1, i1 false2641 ret i1 %retval2642}2643 2644define i1 @auto_gen_75_logical_fmf(double %a, double %b) {2645; CHECK-LABEL: @auto_gen_75_logical_fmf(2646; CHECK-NEXT: ret i1 false2647;2648 %cmp = fcmp fast ult double %a, %b2649 %cmp1 = fcmp fast ugt double %a, %b2650 %retval = select i1 %cmp, i1 %cmp1, i1 false2651 ret i1 %retval2652}2653 2654define i1 @auto_gen_76(double %a, double %b) {2655; CHECK-LABEL: @auto_gen_76(2656; CHECK-NEXT: [[RETVAL:%.*]] = fcmp uno double [[A:%.*]], [[B:%.*]]2657; CHECK-NEXT: ret i1 [[RETVAL]]2658;2659 %cmp = fcmp ult double %a, %b2660 %cmp1 = fcmp uge double %a, %b2661 %retval = and i1 %cmp, %cmp12662 ret i1 %retval2663}2664 2665define i1 @auto_gen_76_logical(double %a, double %b) {2666; CHECK-LABEL: @auto_gen_76_logical(2667; CHECK-NEXT: [[RETVAL:%.*]] = fcmp uno double [[A:%.*]], [[B:%.*]]2668; CHECK-NEXT: ret i1 [[RETVAL]]2669;2670 %cmp = fcmp ult double %a, %b2671 %cmp1 = fcmp uge double %a, %b2672 %retval = select i1 %cmp, i1 %cmp1, i1 false2673 ret i1 %retval2674}2675 2676define i1 @auto_gen_76_logical_fmf(double %a, double %b) {2677; CHECK-LABEL: @auto_gen_76_logical_fmf(2678; CHECK-NEXT: [[RETVAL:%.*]] = fcmp uno double [[A:%.*]], [[B:%.*]]2679; CHECK-NEXT: ret i1 [[RETVAL]]2680;2681 %cmp = fcmp ult double %a, %b2682 %cmp1 = fcmp fast uge double %a, %b2683 %retval = select i1 %cmp, i1 %cmp1, i1 false2684 ret i1 %retval2685}2686 2687define i1 @auto_gen_77(double %a, double %b) {2688; CHECK-LABEL: @auto_gen_77(2689; CHECK-NEXT: [[RETVAL:%.*]] = fcmp ult double [[A:%.*]], [[B:%.*]]2690; CHECK-NEXT: ret i1 [[RETVAL]]2691;2692 %cmp = fcmp ult double %a, %b2693 %cmp1 = fcmp ult double %a, %b2694 %retval = and i1 %cmp, %cmp12695 ret i1 %retval2696}2697 2698define i1 @auto_gen_77_logical(double %a, double %b) {2699; CHECK-LABEL: @auto_gen_77_logical(2700; CHECK-NEXT: [[RETVAL:%.*]] = fcmp ult double [[A:%.*]], [[B:%.*]]2701; CHECK-NEXT: ret i1 [[RETVAL]]2702;2703 %cmp = fcmp ult double %a, %b2704 %cmp1 = fcmp ult double %a, %b2705 %retval = select i1 %cmp, i1 %cmp1, i1 false2706 ret i1 %retval2707}2708 2709define i1 @auto_gen_77_logical_fmf(double %a, double %b) {2710; CHECK-LABEL: @auto_gen_77_logical_fmf(2711; CHECK-NEXT: [[RETVAL:%.*]] = fcmp fast ult double [[A:%.*]], [[B:%.*]]2712; CHECK-NEXT: ret i1 [[RETVAL]]2713;2714 %cmp = fcmp fast ult double %a, %b2715 %cmp1 = fcmp fast ult double %a, %b2716 %retval = select i1 %cmp, i1 %cmp1, i1 false2717 ret i1 %retval2718}2719 2720define i1 @auto_gen_78(double %a, double %b) {2721; CHECK-LABEL: @auto_gen_78(2722; CHECK-NEXT: ret i1 false2723;2724 %cmp = fcmp ule double %a, %b2725 %cmp1 = fcmp false double %a, %b2726 %retval = and i1 %cmp, %cmp12727 ret i1 %retval2728}2729 2730define i1 @auto_gen_78_logical(double %a, double %b) {2731; CHECK-LABEL: @auto_gen_78_logical(2732; CHECK-NEXT: ret i1 false2733;2734 %cmp = fcmp ule double %a, %b2735 %cmp1 = fcmp false double %a, %b2736 %retval = select i1 %cmp, i1 %cmp1, i1 false2737 ret i1 %retval2738}2739 2740define i1 @auto_gen_78_logical_fmf(double %a, double %b) {2741; CHECK-LABEL: @auto_gen_78_logical_fmf(2742; CHECK-NEXT: ret i1 false2743;2744 %cmp = fcmp ule double %a, %b2745 %cmp1 = fcmp fast false double %a, %b2746 %retval = select i1 %cmp, i1 %cmp1, i1 false2747 ret i1 %retval2748}2749 2750define i1 @auto_gen_79(double %a, double %b) {2751; CHECK-LABEL: @auto_gen_79(2752; CHECK-NEXT: [[RETVAL:%.*]] = fcmp oeq double [[A:%.*]], [[B:%.*]]2753; CHECK-NEXT: ret i1 [[RETVAL]]2754;2755 %cmp = fcmp ule double %a, %b2756 %cmp1 = fcmp oeq double %a, %b2757 %retval = and i1 %cmp, %cmp12758 ret i1 %retval2759}2760 2761define i1 @auto_gen_79_logical(double %a, double %b) {2762; CHECK-LABEL: @auto_gen_79_logical(2763; CHECK-NEXT: [[RETVAL:%.*]] = fcmp oeq double [[A:%.*]], [[B:%.*]]2764; CHECK-NEXT: ret i1 [[RETVAL]]2765;2766 %cmp = fcmp ule double %a, %b2767 %cmp1 = fcmp oeq double %a, %b2768 %retval = select i1 %cmp, i1 %cmp1, i1 false2769 ret i1 %retval2770}2771 2772define i1 @auto_gen_79_logical_fmf(double %a, double %b) {2773; CHECK-LABEL: @auto_gen_79_logical_fmf(2774; CHECK-NEXT: [[RETVAL:%.*]] = fcmp fast oeq double [[A:%.*]], [[B:%.*]]2775; CHECK-NEXT: ret i1 [[RETVAL]]2776;2777 %cmp = fcmp fast ule double %a, %b2778 %cmp1 = fcmp fast oeq double %a, %b2779 %retval = select i1 %cmp, i1 %cmp1, i1 false2780 ret i1 %retval2781}2782 2783define i1 @auto_gen_80(double %a, double %b) {2784; CHECK-LABEL: @auto_gen_80(2785; CHECK-NEXT: ret i1 false2786;2787 %cmp = fcmp ule double %a, %b2788 %cmp1 = fcmp ogt double %a, %b2789 %retval = and i1 %cmp, %cmp12790 ret i1 %retval2791}2792 2793define i1 @auto_gen_80_logical(double %a, double %b) {2794; CHECK-LABEL: @auto_gen_80_logical(2795; CHECK-NEXT: ret i1 false2796;2797 %cmp = fcmp ule double %a, %b2798 %cmp1 = fcmp ogt double %a, %b2799 %retval = select i1 %cmp, i1 %cmp1, i1 false2800 ret i1 %retval2801}2802 2803define i1 @auto_gen_80_logical_fmf(double %a, double %b) {2804; CHECK-LABEL: @auto_gen_80_logical_fmf(2805; CHECK-NEXT: ret i1 false2806;2807 %cmp = fcmp ule double %a, %b2808 %cmp1 = fcmp fast ogt double %a, %b2809 %retval = select i1 %cmp, i1 %cmp1, i1 false2810 ret i1 %retval2811}2812 2813define i1 @auto_gen_81(double %a, double %b) {2814; CHECK-LABEL: @auto_gen_81(2815; CHECK-NEXT: [[RETVAL:%.*]] = fcmp oeq double [[A:%.*]], [[B:%.*]]2816; CHECK-NEXT: ret i1 [[RETVAL]]2817;2818 %cmp = fcmp ule double %a, %b2819 %cmp1 = fcmp oge double %a, %b2820 %retval = and i1 %cmp, %cmp12821 ret i1 %retval2822}2823 2824define i1 @auto_gen_81_logical(double %a, double %b) {2825; CHECK-LABEL: @auto_gen_81_logical(2826; CHECK-NEXT: [[RETVAL:%.*]] = fcmp oeq double [[A:%.*]], [[B:%.*]]2827; CHECK-NEXT: ret i1 [[RETVAL]]2828;2829 %cmp = fcmp ule double %a, %b2830 %cmp1 = fcmp oge double %a, %b2831 %retval = select i1 %cmp, i1 %cmp1, i1 false2832 ret i1 %retval2833}2834 2835define i1 @auto_gen_81_logical_fmf(double %a, double %b) {2836; CHECK-LABEL: @auto_gen_81_logical_fmf(2837; CHECK-NEXT: [[RETVAL:%.*]] = fcmp fast oeq double [[A:%.*]], [[B:%.*]]2838; CHECK-NEXT: ret i1 [[RETVAL]]2839;2840 %cmp = fcmp fast ule double %a, %b2841 %cmp1 = fcmp fast oge double %a, %b2842 %retval = select i1 %cmp, i1 %cmp1, i1 false2843 ret i1 %retval2844}2845 2846define i1 @auto_gen_82(double %a, double %b) {2847; CHECK-LABEL: @auto_gen_82(2848; CHECK-NEXT: [[RETVAL:%.*]] = fcmp olt double [[A:%.*]], [[B:%.*]]2849; CHECK-NEXT: ret i1 [[RETVAL]]2850;2851 %cmp = fcmp ule double %a, %b2852 %cmp1 = fcmp olt double %a, %b2853 %retval = and i1 %cmp, %cmp12854 ret i1 %retval2855}2856 2857define i1 @auto_gen_82_logical(double %a, double %b) {2858; CHECK-LABEL: @auto_gen_82_logical(2859; CHECK-NEXT: [[RETVAL:%.*]] = fcmp olt double [[A:%.*]], [[B:%.*]]2860; CHECK-NEXT: ret i1 [[RETVAL]]2861;2862 %cmp = fcmp ule double %a, %b2863 %cmp1 = fcmp olt double %a, %b2864 %retval = select i1 %cmp, i1 %cmp1, i1 false2865 ret i1 %retval2866}2867 2868define i1 @auto_gen_82_logical_fmf(double %a, double %b) {2869; CHECK-LABEL: @auto_gen_82_logical_fmf(2870; CHECK-NEXT: [[RETVAL:%.*]] = fcmp olt double [[A:%.*]], [[B:%.*]]2871; CHECK-NEXT: ret i1 [[RETVAL]]2872;2873 %cmp = fcmp ule double %a, %b2874 %cmp1 = fcmp fast olt double %a, %b2875 %retval = select i1 %cmp, i1 %cmp1, i1 false2876 ret i1 %retval2877}2878 2879define i1 @auto_gen_83(double %a, double %b) {2880; CHECK-LABEL: @auto_gen_83(2881; CHECK-NEXT: [[RETVAL:%.*]] = fcmp ole double [[A:%.*]], [[B:%.*]]2882; CHECK-NEXT: ret i1 [[RETVAL]]2883;2884 %cmp = fcmp ule double %a, %b2885 %cmp1 = fcmp ole double %a, %b2886 %retval = and i1 %cmp, %cmp12887 ret i1 %retval2888}2889 2890define i1 @auto_gen_83_logical(double %a, double %b) {2891; CHECK-LABEL: @auto_gen_83_logical(2892; CHECK-NEXT: [[RETVAL:%.*]] = fcmp ole double [[A:%.*]], [[B:%.*]]2893; CHECK-NEXT: ret i1 [[RETVAL]]2894;2895 %cmp = fcmp ule double %a, %b2896 %cmp1 = fcmp ole double %a, %b2897 %retval = select i1 %cmp, i1 %cmp1, i1 false2898 ret i1 %retval2899}2900 2901define i1 @auto_gen_83_logical_fmf(double %a, double %b) {2902; CHECK-LABEL: @auto_gen_83_logical_fmf(2903; CHECK-NEXT: [[RETVAL:%.*]] = fcmp fast ole double [[A:%.*]], [[B:%.*]]2904; CHECK-NEXT: ret i1 [[RETVAL]]2905;2906 %cmp = fcmp fast ule double %a, %b2907 %cmp1 = fcmp fast ole double %a, %b2908 %retval = select i1 %cmp, i1 %cmp1, i1 false2909 ret i1 %retval2910}2911 2912define i1 @auto_gen_84(double %a, double %b) {2913; CHECK-LABEL: @auto_gen_84(2914; CHECK-NEXT: [[RETVAL:%.*]] = fcmp olt double [[A:%.*]], [[B:%.*]]2915; CHECK-NEXT: ret i1 [[RETVAL]]2916;2917 %cmp = fcmp ule double %a, %b2918 %cmp1 = fcmp one double %a, %b2919 %retval = and i1 %cmp, %cmp12920 ret i1 %retval2921}2922 2923define i1 @auto_gen_84_logical(double %a, double %b) {2924; CHECK-LABEL: @auto_gen_84_logical(2925; CHECK-NEXT: [[RETVAL:%.*]] = fcmp olt double [[A:%.*]], [[B:%.*]]2926; CHECK-NEXT: ret i1 [[RETVAL]]2927;2928 %cmp = fcmp ule double %a, %b2929 %cmp1 = fcmp one double %a, %b2930 %retval = select i1 %cmp, i1 %cmp1, i1 false2931 ret i1 %retval2932}2933 2934define i1 @auto_gen_84_logical_fmf(double %a, double %b) {2935; CHECK-LABEL: @auto_gen_84_logical_fmf(2936; CHECK-NEXT: [[RETVAL:%.*]] = fcmp olt double [[A:%.*]], [[B:%.*]]2937; CHECK-NEXT: ret i1 [[RETVAL]]2938;2939 %cmp = fcmp ule double %a, %b2940 %cmp1 = fcmp fast one double %a, %b2941 %retval = select i1 %cmp, i1 %cmp1, i1 false2942 ret i1 %retval2943}2944 2945define i1 @auto_gen_85(double %a, double %b) {2946; CHECK-LABEL: @auto_gen_85(2947; CHECK-NEXT: [[RETVAL:%.*]] = fcmp ole double [[A:%.*]], [[B:%.*]]2948; CHECK-NEXT: ret i1 [[RETVAL]]2949;2950 %cmp = fcmp ule double %a, %b2951 %cmp1 = fcmp ord double %a, %b2952 %retval = and i1 %cmp, %cmp12953 ret i1 %retval2954}2955 2956define i1 @auto_gen_85_logical(double %a, double %b) {2957; CHECK-LABEL: @auto_gen_85_logical(2958; CHECK-NEXT: [[RETVAL:%.*]] = fcmp ole double [[A:%.*]], [[B:%.*]]2959; CHECK-NEXT: ret i1 [[RETVAL]]2960;2961 %cmp = fcmp ule double %a, %b2962 %cmp1 = fcmp ord double %a, %b2963 %retval = select i1 %cmp, i1 %cmp1, i1 false2964 ret i1 %retval2965}2966 2967define i1 @auto_gen_85_logical_fmf(double %a, double %b) {2968; CHECK-LABEL: @auto_gen_85_logical_fmf(2969; CHECK-NEXT: [[CMP:%.*]] = fcmp fast ule double [[A:%.*]], [[B:%.*]]2970; CHECK-NEXT: ret i1 [[CMP]]2971;2972 %cmp = fcmp fast ule double %a, %b2973 %cmp1 = fcmp fast ord double %a, %b2974 %retval = select i1 %cmp, i1 %cmp1, i1 false2975 ret i1 %retval2976}2977 2978define i1 @auto_gen_86(double %a, double %b) {2979; CHECK-LABEL: @auto_gen_86(2980; CHECK-NEXT: [[RETVAL:%.*]] = fcmp ueq double [[A:%.*]], [[B:%.*]]2981; CHECK-NEXT: ret i1 [[RETVAL]]2982;2983 %cmp = fcmp ule double %a, %b2984 %cmp1 = fcmp ueq double %a, %b2985 %retval = and i1 %cmp, %cmp12986 ret i1 %retval2987}2988 2989define i1 @auto_gen_86_logical(double %a, double %b) {2990; CHECK-LABEL: @auto_gen_86_logical(2991; CHECK-NEXT: [[RETVAL:%.*]] = fcmp ueq double [[A:%.*]], [[B:%.*]]2992; CHECK-NEXT: ret i1 [[RETVAL]]2993;2994 %cmp = fcmp ule double %a, %b2995 %cmp1 = fcmp ueq double %a, %b2996 %retval = select i1 %cmp, i1 %cmp1, i1 false2997 ret i1 %retval2998}2999 3000define i1 @auto_gen_86_logical_fmf(double %a, double %b) {3001; CHECK-LABEL: @auto_gen_86_logical_fmf(3002; CHECK-NEXT: [[RETVAL:%.*]] = fcmp ueq double [[A:%.*]], [[B:%.*]]3003; CHECK-NEXT: ret i1 [[RETVAL]]3004;3005 %cmp = fcmp ule double %a, %b3006 %cmp1 = fcmp fast ueq double %a, %b3007 %retval = select i1 %cmp, i1 %cmp1, i1 false3008 ret i1 %retval3009}3010 3011define i1 @auto_gen_87(double %a, double %b) {3012; CHECK-LABEL: @auto_gen_87(3013; CHECK-NEXT: [[RETVAL:%.*]] = fcmp uno double [[A:%.*]], [[B:%.*]]3014; CHECK-NEXT: ret i1 [[RETVAL]]3015;3016 %cmp = fcmp ule double %a, %b3017 %cmp1 = fcmp ugt double %a, %b3018 %retval = and i1 %cmp, %cmp13019 ret i1 %retval3020}3021 3022define i1 @auto_gen_87_logical(double %a, double %b) {3023; CHECK-LABEL: @auto_gen_87_logical(3024; CHECK-NEXT: [[RETVAL:%.*]] = fcmp uno double [[A:%.*]], [[B:%.*]]3025; CHECK-NEXT: ret i1 [[RETVAL]]3026;3027 %cmp = fcmp ule double %a, %b3028 %cmp1 = fcmp ugt double %a, %b3029 %retval = select i1 %cmp, i1 %cmp1, i1 false3030 ret i1 %retval3031}3032 3033define i1 @auto_gen_87_logical_fmf(double %a, double %b) {3034; CHECK-LABEL: @auto_gen_87_logical_fmf(3035; CHECK-NEXT: ret i1 false3036;3037 %cmp = fcmp fast ule double %a, %b3038 %cmp1 = fcmp fast ugt double %a, %b3039 %retval = select i1 %cmp, i1 %cmp1, i1 false3040 ret i1 %retval3041}3042 3043define i1 @auto_gen_88(double %a, double %b) {3044; CHECK-LABEL: @auto_gen_88(3045; CHECK-NEXT: [[RETVAL:%.*]] = fcmp ueq double [[A:%.*]], [[B:%.*]]3046; CHECK-NEXT: ret i1 [[RETVAL]]3047;3048 %cmp = fcmp ule double %a, %b3049 %cmp1 = fcmp uge double %a, %b3050 %retval = and i1 %cmp, %cmp13051 ret i1 %retval3052}3053 3054define i1 @auto_gen_88_logical(double %a, double %b) {3055; CHECK-LABEL: @auto_gen_88_logical(3056; CHECK-NEXT: [[RETVAL:%.*]] = fcmp ueq double [[A:%.*]], [[B:%.*]]3057; CHECK-NEXT: ret i1 [[RETVAL]]3058;3059 %cmp = fcmp ule double %a, %b3060 %cmp1 = fcmp uge double %a, %b3061 %retval = select i1 %cmp, i1 %cmp1, i1 false3062 ret i1 %retval3063}3064 3065define i1 @auto_gen_88_logical_fmf(double %a, double %b) {3066; CHECK-LABEL: @auto_gen_88_logical_fmf(3067; CHECK-NEXT: [[RETVAL:%.*]] = fcmp ueq double [[A:%.*]], [[B:%.*]]3068; CHECK-NEXT: ret i1 [[RETVAL]]3069;3070 %cmp = fcmp ule double %a, %b3071 %cmp1 = fcmp fast uge double %a, %b3072 %retval = select i1 %cmp, i1 %cmp1, i1 false3073 ret i1 %retval3074}3075 3076define i1 @auto_gen_89(double %a, double %b) {3077; CHECK-LABEL: @auto_gen_89(3078; CHECK-NEXT: [[RETVAL:%.*]] = fcmp ult double [[A:%.*]], [[B:%.*]]3079; CHECK-NEXT: ret i1 [[RETVAL]]3080;3081 %cmp = fcmp ule double %a, %b3082 %cmp1 = fcmp ult double %a, %b3083 %retval = and i1 %cmp, %cmp13084 ret i1 %retval3085}3086 3087define i1 @auto_gen_89_logical(double %a, double %b) {3088; CHECK-LABEL: @auto_gen_89_logical(3089; CHECK-NEXT: [[RETVAL:%.*]] = fcmp ult double [[A:%.*]], [[B:%.*]]3090; CHECK-NEXT: ret i1 [[RETVAL]]3091;3092 %cmp = fcmp ule double %a, %b3093 %cmp1 = fcmp ult double %a, %b3094 %retval = select i1 %cmp, i1 %cmp1, i1 false3095 ret i1 %retval3096}3097 3098define i1 @auto_gen_89_logical_fmf(double %a, double %b) {3099; CHECK-LABEL: @auto_gen_89_logical_fmf(3100; CHECK-NEXT: [[RETVAL:%.*]] = fcmp fast ult double [[A:%.*]], [[B:%.*]]3101; CHECK-NEXT: ret i1 [[RETVAL]]3102;3103 %cmp = fcmp fast ule double %a, %b3104 %cmp1 = fcmp fast ult double %a, %b3105 %retval = select i1 %cmp, i1 %cmp1, i1 false3106 ret i1 %retval3107}3108 3109define i1 @auto_gen_90(double %a, double %b) {3110; CHECK-LABEL: @auto_gen_90(3111; CHECK-NEXT: [[RETVAL:%.*]] = fcmp ule double [[A:%.*]], [[B:%.*]]3112; CHECK-NEXT: ret i1 [[RETVAL]]3113;3114 %cmp = fcmp ule double %a, %b3115 %cmp1 = fcmp ule double %a, %b3116 %retval = and i1 %cmp, %cmp13117 ret i1 %retval3118}3119 3120define i1 @auto_gen_90_logical(double %a, double %b) {3121; CHECK-LABEL: @auto_gen_90_logical(3122; CHECK-NEXT: [[RETVAL:%.*]] = fcmp ule double [[A:%.*]], [[B:%.*]]3123; CHECK-NEXT: ret i1 [[RETVAL]]3124;3125 %cmp = fcmp ule double %a, %b3126 %cmp1 = fcmp ule double %a, %b3127 %retval = select i1 %cmp, i1 %cmp1, i1 false3128 ret i1 %retval3129}3130 3131define i1 @auto_gen_90_logical_fmf(double %a, double %b) {3132; CHECK-LABEL: @auto_gen_90_logical_fmf(3133; CHECK-NEXT: [[RETVAL:%.*]] = fcmp ule double [[A:%.*]], [[B:%.*]]3134; CHECK-NEXT: ret i1 [[RETVAL]]3135;3136 %cmp = fcmp ule double %a, %b3137 %cmp1 = fcmp fast ule double %a, %b3138 %retval = select i1 %cmp, i1 %cmp1, i1 false3139 ret i1 %retval3140}3141 3142define i1 @auto_gen_91(double %a, double %b) {3143; CHECK-LABEL: @auto_gen_91(3144; CHECK-NEXT: ret i1 false3145;3146 %cmp = fcmp une double %a, %b3147 %cmp1 = fcmp false double %a, %b3148 %retval = and i1 %cmp, %cmp13149 ret i1 %retval3150}3151 3152define i1 @auto_gen_91_logical(double %a, double %b) {3153; CHECK-LABEL: @auto_gen_91_logical(3154; CHECK-NEXT: ret i1 false3155;3156 %cmp = fcmp une double %a, %b3157 %cmp1 = fcmp false double %a, %b3158 %retval = select i1 %cmp, i1 %cmp1, i1 false3159 ret i1 %retval3160}3161 3162define i1 @auto_gen_91_logical_fmf(double %a, double %b) {3163; CHECK-LABEL: @auto_gen_91_logical_fmf(3164; CHECK-NEXT: ret i1 false3165;3166 %cmp = fcmp fast une double %a, %b3167 %cmp1 = fcmp fast false double %a, %b3168 %retval = select i1 %cmp, i1 %cmp1, i1 false3169 ret i1 %retval3170}3171 3172define i1 @auto_gen_92(double %a, double %b) {3173; CHECK-LABEL: @auto_gen_92(3174; CHECK-NEXT: ret i1 false3175;3176 %cmp = fcmp une double %a, %b3177 %cmp1 = fcmp oeq double %a, %b3178 %retval = and i1 %cmp, %cmp13179 ret i1 %retval3180}3181 3182define i1 @auto_gen_92_logical(double %a, double %b) {3183; CHECK-LABEL: @auto_gen_92_logical(3184; CHECK-NEXT: ret i1 false3185;3186 %cmp = fcmp une double %a, %b3187 %cmp1 = fcmp oeq double %a, %b3188 %retval = select i1 %cmp, i1 %cmp1, i1 false3189 ret i1 %retval3190}3191 3192define i1 @auto_gen_92_logical_fmf(double %a, double %b) {3193; CHECK-LABEL: @auto_gen_92_logical_fmf(3194; CHECK-NEXT: ret i1 false3195;3196 %cmp = fcmp une double %a, %b3197 %cmp1 = fcmp fast oeq double %a, %b3198 %retval = select i1 %cmp, i1 %cmp1, i1 false3199 ret i1 %retval3200}3201 3202define i1 @auto_gen_93(double %a, double %b) {3203; CHECK-LABEL: @auto_gen_93(3204; CHECK-NEXT: [[RETVAL:%.*]] = fcmp ogt double [[A:%.*]], [[B:%.*]]3205; CHECK-NEXT: ret i1 [[RETVAL]]3206;3207 %cmp = fcmp une double %a, %b3208 %cmp1 = fcmp ogt double %a, %b3209 %retval = and i1 %cmp, %cmp13210 ret i1 %retval3211}3212 3213define i1 @auto_gen_93_logical(double %a, double %b) {3214; CHECK-LABEL: @auto_gen_93_logical(3215; CHECK-NEXT: [[RETVAL:%.*]] = fcmp ogt double [[A:%.*]], [[B:%.*]]3216; CHECK-NEXT: ret i1 [[RETVAL]]3217;3218 %cmp = fcmp une double %a, %b3219 %cmp1 = fcmp ogt double %a, %b3220 %retval = select i1 %cmp, i1 %cmp1, i1 false3221 ret i1 %retval3222}3223 3224define i1 @auto_gen_93_logical_fmf(double %a, double %b) {3225; CHECK-LABEL: @auto_gen_93_logical_fmf(3226; CHECK-NEXT: [[RETVAL:%.*]] = fcmp fast ogt double [[A:%.*]], [[B:%.*]]3227; CHECK-NEXT: ret i1 [[RETVAL]]3228;3229 %cmp = fcmp fast une double %a, %b3230 %cmp1 = fcmp fast ogt double %a, %b3231 %retval = select i1 %cmp, i1 %cmp1, i1 false3232 ret i1 %retval3233}3234 3235define i1 @auto_gen_94(double %a, double %b) {3236; CHECK-LABEL: @auto_gen_94(3237; CHECK-NEXT: [[RETVAL:%.*]] = fcmp ogt double [[A:%.*]], [[B:%.*]]3238; CHECK-NEXT: ret i1 [[RETVAL]]3239;3240 %cmp = fcmp une double %a, %b3241 %cmp1 = fcmp oge double %a, %b3242 %retval = and i1 %cmp, %cmp13243 ret i1 %retval3244}3245 3246define i1 @auto_gen_94_logical(double %a, double %b) {3247; CHECK-LABEL: @auto_gen_94_logical(3248; CHECK-NEXT: [[RETVAL:%.*]] = fcmp ogt double [[A:%.*]], [[B:%.*]]3249; CHECK-NEXT: ret i1 [[RETVAL]]3250;3251 %cmp = fcmp une double %a, %b3252 %cmp1 = fcmp oge double %a, %b3253 %retval = select i1 %cmp, i1 %cmp1, i1 false3254 ret i1 %retval3255}3256 3257define i1 @auto_gen_94_logical_fmf(double %a, double %b) {3258; CHECK-LABEL: @auto_gen_94_logical_fmf(3259; CHECK-NEXT: [[RETVAL:%.*]] = fcmp ogt double [[A:%.*]], [[B:%.*]]3260; CHECK-NEXT: ret i1 [[RETVAL]]3261;3262 %cmp = fcmp une double %a, %b3263 %cmp1 = fcmp fast oge double %a, %b3264 %retval = select i1 %cmp, i1 %cmp1, i1 false3265 ret i1 %retval3266}3267 3268define i1 @auto_gen_95(double %a, double %b) {3269; CHECK-LABEL: @auto_gen_95(3270; CHECK-NEXT: [[RETVAL:%.*]] = fcmp olt double [[A:%.*]], [[B:%.*]]3271; CHECK-NEXT: ret i1 [[RETVAL]]3272;3273 %cmp = fcmp une double %a, %b3274 %cmp1 = fcmp olt double %a, %b3275 %retval = and i1 %cmp, %cmp13276 ret i1 %retval3277}3278 3279define i1 @auto_gen_95_logical(double %a, double %b) {3280; CHECK-LABEL: @auto_gen_95_logical(3281; CHECK-NEXT: [[RETVAL:%.*]] = fcmp olt double [[A:%.*]], [[B:%.*]]3282; CHECK-NEXT: ret i1 [[RETVAL]]3283;3284 %cmp = fcmp une double %a, %b3285 %cmp1 = fcmp olt double %a, %b3286 %retval = select i1 %cmp, i1 %cmp1, i1 false3287 ret i1 %retval3288}3289 3290define i1 @auto_gen_95_logical_fmf(double %a, double %b) {3291; CHECK-LABEL: @auto_gen_95_logical_fmf(3292; CHECK-NEXT: [[RETVAL:%.*]] = fcmp fast olt double [[A:%.*]], [[B:%.*]]3293; CHECK-NEXT: ret i1 [[RETVAL]]3294;3295 %cmp = fcmp fast une double %a, %b3296 %cmp1 = fcmp fast olt double %a, %b3297 %retval = select i1 %cmp, i1 %cmp1, i1 false3298 ret i1 %retval3299}3300 3301define i1 @auto_gen_96(double %a, double %b) {3302; CHECK-LABEL: @auto_gen_96(3303; CHECK-NEXT: [[RETVAL:%.*]] = fcmp olt double [[A:%.*]], [[B:%.*]]3304; CHECK-NEXT: ret i1 [[RETVAL]]3305;3306 %cmp = fcmp une double %a, %b3307 %cmp1 = fcmp ole double %a, %b3308 %retval = and i1 %cmp, %cmp13309 ret i1 %retval3310}3311 3312define i1 @auto_gen_96_logical(double %a, double %b) {3313; CHECK-LABEL: @auto_gen_96_logical(3314; CHECK-NEXT: [[RETVAL:%.*]] = fcmp olt double [[A:%.*]], [[B:%.*]]3315; CHECK-NEXT: ret i1 [[RETVAL]]3316;3317 %cmp = fcmp une double %a, %b3318 %cmp1 = fcmp ole double %a, %b3319 %retval = select i1 %cmp, i1 %cmp1, i1 false3320 ret i1 %retval3321}3322 3323define i1 @auto_gen_96_logical_fmf(double %a, double %b) {3324; CHECK-LABEL: @auto_gen_96_logical_fmf(3325; CHECK-NEXT: [[RETVAL:%.*]] = fcmp olt double [[A:%.*]], [[B:%.*]]3326; CHECK-NEXT: ret i1 [[RETVAL]]3327;3328 %cmp = fcmp une double %a, %b3329 %cmp1 = fcmp fast ole double %a, %b3330 %retval = select i1 %cmp, i1 %cmp1, i1 false3331 ret i1 %retval3332}3333 3334define i1 @auto_gen_97(double %a, double %b) {3335; CHECK-LABEL: @auto_gen_97(3336; CHECK-NEXT: [[RETVAL:%.*]] = fcmp one double [[A:%.*]], [[B:%.*]]3337; CHECK-NEXT: ret i1 [[RETVAL]]3338;3339 %cmp = fcmp une double %a, %b3340 %cmp1 = fcmp one double %a, %b3341 %retval = and i1 %cmp, %cmp13342 ret i1 %retval3343}3344 3345define i1 @auto_gen_97_logical(double %a, double %b) {3346; CHECK-LABEL: @auto_gen_97_logical(3347; CHECK-NEXT: [[RETVAL:%.*]] = fcmp one double [[A:%.*]], [[B:%.*]]3348; CHECK-NEXT: ret i1 [[RETVAL]]3349;3350 %cmp = fcmp une double %a, %b3351 %cmp1 = fcmp one double %a, %b3352 %retval = select i1 %cmp, i1 %cmp1, i1 false3353 ret i1 %retval3354}3355 3356define i1 @auto_gen_97_logical_fmf(double %a, double %b) {3357; CHECK-LABEL: @auto_gen_97_logical_fmf(3358; CHECK-NEXT: [[RETVAL:%.*]] = fcmp fast one double [[A:%.*]], [[B:%.*]]3359; CHECK-NEXT: ret i1 [[RETVAL]]3360;3361 %cmp = fcmp fast une double %a, %b3362 %cmp1 = fcmp fast one double %a, %b3363 %retval = select i1 %cmp, i1 %cmp1, i1 false3364 ret i1 %retval3365}3366 3367define i1 @auto_gen_98(double %a, double %b) {3368; CHECK-LABEL: @auto_gen_98(3369; CHECK-NEXT: [[RETVAL:%.*]] = fcmp one double [[A:%.*]], [[B:%.*]]3370; CHECK-NEXT: ret i1 [[RETVAL]]3371;3372 %cmp = fcmp une double %a, %b3373 %cmp1 = fcmp ord double %a, %b3374 %retval = and i1 %cmp, %cmp13375 ret i1 %retval3376}3377 3378define i1 @auto_gen_98_logical(double %a, double %b) {3379; CHECK-LABEL: @auto_gen_98_logical(3380; CHECK-NEXT: [[RETVAL:%.*]] = fcmp one double [[A:%.*]], [[B:%.*]]3381; CHECK-NEXT: ret i1 [[RETVAL]]3382;3383 %cmp = fcmp une double %a, %b3384 %cmp1 = fcmp ord double %a, %b3385 %retval = select i1 %cmp, i1 %cmp1, i1 false3386 ret i1 %retval3387}3388 3389define i1 @auto_gen_98_logical_fmf(double %a, double %b) {3390; CHECK-LABEL: @auto_gen_98_logical_fmf(3391; CHECK-NEXT: [[CMP:%.*]] = fcmp une double [[A:%.*]], [[B:%.*]]3392; CHECK-NEXT: ret i1 [[CMP]]3393;3394 %cmp = fcmp une double %a, %b3395 %cmp1 = fcmp fast ord double %a, %b3396 %retval = select i1 %cmp, i1 %cmp1, i1 false3397 ret i1 %retval3398}3399 3400define i1 @auto_gen_99(double %a, double %b) {3401; CHECK-LABEL: @auto_gen_99(3402; CHECK-NEXT: [[RETVAL:%.*]] = fcmp uno double [[A:%.*]], [[B:%.*]]3403; CHECK-NEXT: ret i1 [[RETVAL]]3404;3405 %cmp = fcmp une double %a, %b3406 %cmp1 = fcmp ueq double %a, %b3407 %retval = and i1 %cmp, %cmp13408 ret i1 %retval3409}3410 3411define i1 @auto_gen_99_logical(double %a, double %b) {3412; CHECK-LABEL: @auto_gen_99_logical(3413; CHECK-NEXT: [[RETVAL:%.*]] = fcmp uno double [[A:%.*]], [[B:%.*]]3414; CHECK-NEXT: ret i1 [[RETVAL]]3415;3416 %cmp = fcmp une double %a, %b3417 %cmp1 = fcmp ueq double %a, %b3418 %retval = select i1 %cmp, i1 %cmp1, i1 false3419 ret i1 %retval3420}3421 3422define i1 @auto_gen_99_logical_fmf(double %a, double %b) {3423; CHECK-LABEL: @auto_gen_99_logical_fmf(3424; CHECK-NEXT: ret i1 false3425;3426 %cmp = fcmp fast une double %a, %b3427 %cmp1 = fcmp fast ueq double %a, %b3428 %retval = select i1 %cmp, i1 %cmp1, i1 false3429 ret i1 %retval3430}3431 3432define i1 @auto_gen_100(double %a, double %b) {3433; CHECK-LABEL: @auto_gen_100(3434; CHECK-NEXT: [[RETVAL:%.*]] = fcmp ugt double [[A:%.*]], [[B:%.*]]3435; CHECK-NEXT: ret i1 [[RETVAL]]3436;3437 %cmp = fcmp une double %a, %b3438 %cmp1 = fcmp ugt double %a, %b3439 %retval = and i1 %cmp, %cmp13440 ret i1 %retval3441}3442 3443define i1 @auto_gen_100_logical(double %a, double %b) {3444; CHECK-LABEL: @auto_gen_100_logical(3445; CHECK-NEXT: [[RETVAL:%.*]] = fcmp ugt double [[A:%.*]], [[B:%.*]]3446; CHECK-NEXT: ret i1 [[RETVAL]]3447;3448 %cmp = fcmp une double %a, %b3449 %cmp1 = fcmp ugt double %a, %b3450 %retval = select i1 %cmp, i1 %cmp1, i1 false3451 ret i1 %retval3452}3453 3454define i1 @auto_gen_100_logical_fmf(double %a, double %b) {3455; CHECK-LABEL: @auto_gen_100_logical_fmf(3456; CHECK-NEXT: [[RETVAL:%.*]] = fcmp ugt double [[A:%.*]], [[B:%.*]]3457; CHECK-NEXT: ret i1 [[RETVAL]]3458;3459 %cmp = fcmp une double %a, %b3460 %cmp1 = fcmp fast ugt double %a, %b3461 %retval = select i1 %cmp, i1 %cmp1, i1 false3462 ret i1 %retval3463}3464 3465define i1 @auto_gen_101(double %a, double %b) {3466; CHECK-LABEL: @auto_gen_101(3467; CHECK-NEXT: [[RETVAL:%.*]] = fcmp ugt double [[A:%.*]], [[B:%.*]]3468; CHECK-NEXT: ret i1 [[RETVAL]]3469;3470 %cmp = fcmp une double %a, %b3471 %cmp1 = fcmp uge double %a, %b3472 %retval = and i1 %cmp, %cmp13473 ret i1 %retval3474}3475 3476define i1 @auto_gen_101_logical(double %a, double %b) {3477; CHECK-LABEL: @auto_gen_101_logical(3478; CHECK-NEXT: [[RETVAL:%.*]] = fcmp ugt double [[A:%.*]], [[B:%.*]]3479; CHECK-NEXT: ret i1 [[RETVAL]]3480;3481 %cmp = fcmp une double %a, %b3482 %cmp1 = fcmp uge double %a, %b3483 %retval = select i1 %cmp, i1 %cmp1, i1 false3484 ret i1 %retval3485}3486 3487define i1 @auto_gen_101_logical_fmf(double %a, double %b) {3488; CHECK-LABEL: @auto_gen_101_logical_fmf(3489; CHECK-NEXT: [[RETVAL:%.*]] = fcmp fast ugt double [[A:%.*]], [[B:%.*]]3490; CHECK-NEXT: ret i1 [[RETVAL]]3491;3492 %cmp = fcmp fast une double %a, %b3493 %cmp1 = fcmp fast uge double %a, %b3494 %retval = select i1 %cmp, i1 %cmp1, i1 false3495 ret i1 %retval3496}3497 3498define i1 @auto_gen_102(double %a, double %b) {3499; CHECK-LABEL: @auto_gen_102(3500; CHECK-NEXT: [[RETVAL:%.*]] = fcmp ult double [[A:%.*]], [[B:%.*]]3501; CHECK-NEXT: ret i1 [[RETVAL]]3502;3503 %cmp = fcmp une double %a, %b3504 %cmp1 = fcmp ult double %a, %b3505 %retval = and i1 %cmp, %cmp13506 ret i1 %retval3507}3508 3509define i1 @auto_gen_102_logical(double %a, double %b) {3510; CHECK-LABEL: @auto_gen_102_logical(3511; CHECK-NEXT: [[RETVAL:%.*]] = fcmp ult double [[A:%.*]], [[B:%.*]]3512; CHECK-NEXT: ret i1 [[RETVAL]]3513;3514 %cmp = fcmp une double %a, %b3515 %cmp1 = fcmp ult double %a, %b3516 %retval = select i1 %cmp, i1 %cmp1, i1 false3517 ret i1 %retval3518}3519 3520define i1 @auto_gen_102_logical_fmf(double %a, double %b) {3521; CHECK-LABEL: @auto_gen_102_logical_fmf(3522; CHECK-NEXT: [[RETVAL:%.*]] = fcmp ult double [[A:%.*]], [[B:%.*]]3523; CHECK-NEXT: ret i1 [[RETVAL]]3524;3525 %cmp = fcmp une double %a, %b3526 %cmp1 = fcmp fast ult double %a, %b3527 %retval = select i1 %cmp, i1 %cmp1, i1 false3528 ret i1 %retval3529}3530 3531define i1 @auto_gen_103(double %a, double %b) {3532; CHECK-LABEL: @auto_gen_103(3533; CHECK-NEXT: [[RETVAL:%.*]] = fcmp ult double [[A:%.*]], [[B:%.*]]3534; CHECK-NEXT: ret i1 [[RETVAL]]3535;3536 %cmp = fcmp une double %a, %b3537 %cmp1 = fcmp ule double %a, %b3538 %retval = and i1 %cmp, %cmp13539 ret i1 %retval3540}3541 3542define i1 @auto_gen_103_logical(double %a, double %b) {3543; CHECK-LABEL: @auto_gen_103_logical(3544; CHECK-NEXT: [[RETVAL:%.*]] = fcmp ult double [[A:%.*]], [[B:%.*]]3545; CHECK-NEXT: ret i1 [[RETVAL]]3546;3547 %cmp = fcmp une double %a, %b3548 %cmp1 = fcmp ule double %a, %b3549 %retval = select i1 %cmp, i1 %cmp1, i1 false3550 ret i1 %retval3551}3552 3553define i1 @auto_gen_103_logical_fmf(double %a, double %b) {3554; CHECK-LABEL: @auto_gen_103_logical_fmf(3555; CHECK-NEXT: [[RETVAL:%.*]] = fcmp fast ult double [[A:%.*]], [[B:%.*]]3556; CHECK-NEXT: ret i1 [[RETVAL]]3557;3558 %cmp = fcmp fast une double %a, %b3559 %cmp1 = fcmp fast ule double %a, %b3560 %retval = select i1 %cmp, i1 %cmp1, i1 false3561 ret i1 %retval3562}3563 3564define i1 @auto_gen_104(double %a, double %b) {3565; CHECK-LABEL: @auto_gen_104(3566; CHECK-NEXT: [[RETVAL:%.*]] = fcmp une double [[A:%.*]], [[B:%.*]]3567; CHECK-NEXT: ret i1 [[RETVAL]]3568;3569 %cmp = fcmp une double %a, %b3570 %cmp1 = fcmp une double %a, %b3571 %retval = and i1 %cmp, %cmp13572 ret i1 %retval3573}3574 3575define i1 @auto_gen_104_logical(double %a, double %b) {3576; CHECK-LABEL: @auto_gen_104_logical(3577; CHECK-NEXT: [[RETVAL:%.*]] = fcmp une double [[A:%.*]], [[B:%.*]]3578; CHECK-NEXT: ret i1 [[RETVAL]]3579;3580 %cmp = fcmp une double %a, %b3581 %cmp1 = fcmp une double %a, %b3582 %retval = select i1 %cmp, i1 %cmp1, i1 false3583 ret i1 %retval3584}3585 3586define i1 @auto_gen_104_logical_fmf(double %a, double %b) {3587; CHECK-LABEL: @auto_gen_104_logical_fmf(3588; CHECK-NEXT: [[RETVAL:%.*]] = fcmp une double [[A:%.*]], [[B:%.*]]3589; CHECK-NEXT: ret i1 [[RETVAL]]3590;3591 %cmp = fcmp une double %a, %b3592 %cmp1 = fcmp fast une double %a, %b3593 %retval = select i1 %cmp, i1 %cmp1, i1 false3594 ret i1 %retval3595}3596 3597define i1 @auto_gen_105(double %a, double %b) {3598; CHECK-LABEL: @auto_gen_105(3599; CHECK-NEXT: ret i1 false3600;3601 %cmp = fcmp uno double %a, %b3602 %cmp1 = fcmp false double %a, %b3603 %retval = and i1 %cmp, %cmp13604 ret i1 %retval3605}3606 3607define i1 @auto_gen_105_logical(double %a, double %b) {3608; CHECK-LABEL: @auto_gen_105_logical(3609; CHECK-NEXT: ret i1 false3610;3611 %cmp = fcmp uno double %a, %b3612 %cmp1 = fcmp false double %a, %b3613 %retval = select i1 %cmp, i1 %cmp1, i1 false3614 ret i1 %retval3615}3616 3617define i1 @auto_gen_105_logical_fmf(double %a, double %b) {3618; CHECK-LABEL: @auto_gen_105_logical_fmf(3619; CHECK-NEXT: ret i1 false3620;3621 %cmp = fcmp fast uno double %a, %b3622 %cmp1 = fcmp fast false double %a, %b3623 %retval = select i1 %cmp, i1 %cmp1, i1 false3624 ret i1 %retval3625}3626 3627define i1 @auto_gen_106(double %a, double %b) {3628; CHECK-LABEL: @auto_gen_106(3629; CHECK-NEXT: ret i1 false3630;3631 %cmp = fcmp uno double %a, %b3632 %cmp1 = fcmp oeq double %a, %b3633 %retval = and i1 %cmp, %cmp13634 ret i1 %retval3635}3636 3637define i1 @auto_gen_106_logical(double %a, double %b) {3638; CHECK-LABEL: @auto_gen_106_logical(3639; CHECK-NEXT: ret i1 false3640;3641 %cmp = fcmp uno double %a, %b3642 %cmp1 = fcmp oeq double %a, %b3643 %retval = select i1 %cmp, i1 %cmp1, i1 false3644 ret i1 %retval3645}3646 3647define i1 @auto_gen_106_logical_fmf(double %a, double %b) {3648; CHECK-LABEL: @auto_gen_106_logical_fmf(3649; CHECK-NEXT: ret i1 false3650;3651 %cmp = fcmp uno double %a, %b3652 %cmp1 = fcmp fast oeq double %a, %b3653 %retval = select i1 %cmp, i1 %cmp1, i1 false3654 ret i1 %retval3655}3656 3657define i1 @auto_gen_107(double %a, double %b) {3658; CHECK-LABEL: @auto_gen_107(3659; CHECK-NEXT: ret i1 false3660;3661 %cmp = fcmp uno double %a, %b3662 %cmp1 = fcmp ogt double %a, %b3663 %retval = and i1 %cmp, %cmp13664 ret i1 %retval3665}3666 3667define i1 @auto_gen_107_logical(double %a, double %b) {3668; CHECK-LABEL: @auto_gen_107_logical(3669; CHECK-NEXT: ret i1 false3670;3671 %cmp = fcmp uno double %a, %b3672 %cmp1 = fcmp ogt double %a, %b3673 %retval = select i1 %cmp, i1 %cmp1, i1 false3674 ret i1 %retval3675}3676 3677define i1 @auto_gen_107_logical_fmf(double %a, double %b) {3678; CHECK-LABEL: @auto_gen_107_logical_fmf(3679; CHECK-NEXT: ret i1 false3680;3681 %cmp = fcmp fast uno double %a, %b3682 %cmp1 = fcmp fast ogt double %a, %b3683 %retval = select i1 %cmp, i1 %cmp1, i1 false3684 ret i1 %retval3685}3686 3687define i1 @auto_gen_108(double %a, double %b) {3688; CHECK-LABEL: @auto_gen_108(3689; CHECK-NEXT: ret i1 false3690;3691 %cmp = fcmp uno double %a, %b3692 %cmp1 = fcmp oge double %a, %b3693 %retval = and i1 %cmp, %cmp13694 ret i1 %retval3695}3696 3697define i1 @auto_gen_108_logical(double %a, double %b) {3698; CHECK-LABEL: @auto_gen_108_logical(3699; CHECK-NEXT: ret i1 false3700;3701 %cmp = fcmp uno double %a, %b3702 %cmp1 = fcmp oge double %a, %b3703 %retval = select i1 %cmp, i1 %cmp1, i1 false3704 ret i1 %retval3705}3706 3707define i1 @auto_gen_108_logical_fmf(double %a, double %b) {3708; CHECK-LABEL: @auto_gen_108_logical_fmf(3709; CHECK-NEXT: ret i1 false3710;3711 %cmp = fcmp uno double %a, %b3712 %cmp1 = fcmp fast oge double %a, %b3713 %retval = select i1 %cmp, i1 %cmp1, i1 false3714 ret i1 %retval3715}3716 3717define i1 @auto_gen_109(double %a, double %b) {3718; CHECK-LABEL: @auto_gen_109(3719; CHECK-NEXT: ret i1 false3720;3721 %cmp = fcmp uno double %a, %b3722 %cmp1 = fcmp olt double %a, %b3723 %retval = and i1 %cmp, %cmp13724 ret i1 %retval3725}3726 3727define i1 @auto_gen_109_logical(double %a, double %b) {3728; CHECK-LABEL: @auto_gen_109_logical(3729; CHECK-NEXT: ret i1 false3730;3731 %cmp = fcmp uno double %a, %b3732 %cmp1 = fcmp olt double %a, %b3733 %retval = select i1 %cmp, i1 %cmp1, i1 false3734 ret i1 %retval3735}3736 3737define i1 @auto_gen_109_logical_fmf(double %a, double %b) {3738; CHECK-LABEL: @auto_gen_109_logical_fmf(3739; CHECK-NEXT: ret i1 false3740;3741 %cmp = fcmp fast uno double %a, %b3742 %cmp1 = fcmp fast olt double %a, %b3743 %retval = select i1 %cmp, i1 %cmp1, i1 false3744 ret i1 %retval3745}3746 3747define i1 @auto_gen_110(double %a, double %b) {3748; CHECK-LABEL: @auto_gen_110(3749; CHECK-NEXT: ret i1 false3750;3751 %cmp = fcmp uno double %a, %b3752 %cmp1 = fcmp ole double %a, %b3753 %retval = and i1 %cmp, %cmp13754 ret i1 %retval3755}3756 3757define i1 @auto_gen_110_logical(double %a, double %b) {3758; CHECK-LABEL: @auto_gen_110_logical(3759; CHECK-NEXT: ret i1 false3760;3761 %cmp = fcmp uno double %a, %b3762 %cmp1 = fcmp ole double %a, %b3763 %retval = select i1 %cmp, i1 %cmp1, i1 false3764 ret i1 %retval3765}3766 3767define i1 @auto_gen_110_logical_fmf(double %a, double %b) {3768; CHECK-LABEL: @auto_gen_110_logical_fmf(3769; CHECK-NEXT: ret i1 false3770;3771 %cmp = fcmp uno double %a, %b3772 %cmp1 = fcmp fast ole double %a, %b3773 %retval = select i1 %cmp, i1 %cmp1, i1 false3774 ret i1 %retval3775}3776 3777define i1 @auto_gen_111(double %a, double %b) {3778; CHECK-LABEL: @auto_gen_111(3779; CHECK-NEXT: ret i1 false3780;3781 %cmp = fcmp uno double %a, %b3782 %cmp1 = fcmp one double %a, %b3783 %retval = and i1 %cmp, %cmp13784 ret i1 %retval3785}3786 3787define i1 @auto_gen_111_logical(double %a, double %b) {3788; CHECK-LABEL: @auto_gen_111_logical(3789; CHECK-NEXT: ret i1 false3790;3791 %cmp = fcmp uno double %a, %b3792 %cmp1 = fcmp one double %a, %b3793 %retval = select i1 %cmp, i1 %cmp1, i1 false3794 ret i1 %retval3795}3796 3797define i1 @auto_gen_111_logical_fmf(double %a, double %b) {3798; CHECK-LABEL: @auto_gen_111_logical_fmf(3799; CHECK-NEXT: ret i1 false3800;3801 %cmp = fcmp fast uno double %a, %b3802 %cmp1 = fcmp fast one double %a, %b3803 %retval = select i1 %cmp, i1 %cmp1, i1 false3804 ret i1 %retval3805}3806 3807define i1 @auto_gen_112(double %a, double %b) {3808; CHECK-LABEL: @auto_gen_112(3809; CHECK-NEXT: ret i1 false3810;3811 %cmp = fcmp uno double %a, %b3812 %cmp1 = fcmp ord double %a, %b3813 %retval = and i1 %cmp, %cmp13814 ret i1 %retval3815}3816 3817define i1 @auto_gen_112_logical(double %a, double %b) {3818; CHECK-LABEL: @auto_gen_112_logical(3819; CHECK-NEXT: ret i1 false3820;3821 %cmp = fcmp uno double %a, %b3822 %cmp1 = fcmp ord double %a, %b3823 %retval = select i1 %cmp, i1 %cmp1, i1 false3824 ret i1 %retval3825}3826 3827define i1 @auto_gen_112_logical_fmf(double %a, double %b) {3828; CHECK-LABEL: @auto_gen_112_logical_fmf(3829; CHECK-NEXT: [[CMP:%.*]] = fcmp uno double [[A:%.*]], [[B:%.*]]3830; CHECK-NEXT: ret i1 [[CMP]]3831;3832 %cmp = fcmp uno double %a, %b3833 %cmp1 = fcmp fast ord double %a, %b3834 %retval = select i1 %cmp, i1 %cmp1, i1 false3835 ret i1 %retval3836}3837 3838define i1 @auto_gen_113(double %a, double %b) {3839; CHECK-LABEL: @auto_gen_113(3840; CHECK-NEXT: [[RETVAL:%.*]] = fcmp uno double [[A:%.*]], [[B:%.*]]3841; CHECK-NEXT: ret i1 [[RETVAL]]3842;3843 %cmp = fcmp uno double %a, %b3844 %cmp1 = fcmp ueq double %a, %b3845 %retval = and i1 %cmp, %cmp13846 ret i1 %retval3847}3848 3849define i1 @auto_gen_113_logical(double %a, double %b) {3850; CHECK-LABEL: @auto_gen_113_logical(3851; CHECK-NEXT: [[RETVAL:%.*]] = fcmp uno double [[A:%.*]], [[B:%.*]]3852; CHECK-NEXT: ret i1 [[RETVAL]]3853;3854 %cmp = fcmp uno double %a, %b3855 %cmp1 = fcmp ueq double %a, %b3856 %retval = select i1 %cmp, i1 %cmp1, i1 false3857 ret i1 %retval3858}3859 3860define i1 @auto_gen_113_logical_fmf(double %a, double %b) {3861; CHECK-LABEL: @auto_gen_113_logical_fmf(3862; CHECK-NEXT: ret i1 false3863;3864 %cmp = fcmp fast uno double %a, %b3865 %cmp1 = fcmp fast ueq double %a, %b3866 %retval = select i1 %cmp, i1 %cmp1, i1 false3867 ret i1 %retval3868}3869 3870define i1 @auto_gen_114(double %a, double %b) {3871; CHECK-LABEL: @auto_gen_114(3872; CHECK-NEXT: [[RETVAL:%.*]] = fcmp uno double [[A:%.*]], [[B:%.*]]3873; CHECK-NEXT: ret i1 [[RETVAL]]3874;3875 %cmp = fcmp uno double %a, %b3876 %cmp1 = fcmp ugt double %a, %b3877 %retval = and i1 %cmp, %cmp13878 ret i1 %retval3879}3880 3881define i1 @auto_gen_114_logical(double %a, double %b) {3882; CHECK-LABEL: @auto_gen_114_logical(3883; CHECK-NEXT: [[RETVAL:%.*]] = fcmp uno double [[A:%.*]], [[B:%.*]]3884; CHECK-NEXT: ret i1 [[RETVAL]]3885;3886 %cmp = fcmp uno double %a, %b3887 %cmp1 = fcmp ugt double %a, %b3888 %retval = select i1 %cmp, i1 %cmp1, i1 false3889 ret i1 %retval3890}3891 3892define i1 @auto_gen_114_logical_fmf(double %a, double %b) {3893; CHECK-LABEL: @auto_gen_114_logical_fmf(3894; CHECK-NEXT: [[RETVAL:%.*]] = fcmp uno double [[A:%.*]], [[B:%.*]]3895; CHECK-NEXT: ret i1 [[RETVAL]]3896;3897 %cmp = fcmp uno double %a, %b3898 %cmp1 = fcmp fast ugt double %a, %b3899 %retval = select i1 %cmp, i1 %cmp1, i1 false3900 ret i1 %retval3901}3902 3903define i1 @auto_gen_115(double %a, double %b) {3904; CHECK-LABEL: @auto_gen_115(3905; CHECK-NEXT: [[RETVAL:%.*]] = fcmp uno double [[A:%.*]], [[B:%.*]]3906; CHECK-NEXT: ret i1 [[RETVAL]]3907;3908 %cmp = fcmp uno double %a, %b3909 %cmp1 = fcmp uge double %a, %b3910 %retval = and i1 %cmp, %cmp13911 ret i1 %retval3912}3913 3914define i1 @auto_gen_115_logical(double %a, double %b) {3915; CHECK-LABEL: @auto_gen_115_logical(3916; CHECK-NEXT: [[RETVAL:%.*]] = fcmp uno double [[A:%.*]], [[B:%.*]]3917; CHECK-NEXT: ret i1 [[RETVAL]]3918;3919 %cmp = fcmp uno double %a, %b3920 %cmp1 = fcmp uge double %a, %b3921 %retval = select i1 %cmp, i1 %cmp1, i1 false3922 ret i1 %retval3923}3924 3925define i1 @auto_gen_115_logical_fmf(double %a, double %b) {3926; CHECK-LABEL: @auto_gen_115_logical_fmf(3927; CHECK-NEXT: ret i1 false3928;3929 %cmp = fcmp fast uno double %a, %b3930 %cmp1 = fcmp fast uge double %a, %b3931 %retval = select i1 %cmp, i1 %cmp1, i1 false3932 ret i1 %retval3933}3934 3935define i1 @auto_gen_116(double %a, double %b) {3936; CHECK-LABEL: @auto_gen_116(3937; CHECK-NEXT: [[RETVAL:%.*]] = fcmp uno double [[A:%.*]], [[B:%.*]]3938; CHECK-NEXT: ret i1 [[RETVAL]]3939;3940 %cmp = fcmp uno double %a, %b3941 %cmp1 = fcmp ult double %a, %b3942 %retval = and i1 %cmp, %cmp13943 ret i1 %retval3944}3945 3946define i1 @auto_gen_116_logical(double %a, double %b) {3947; CHECK-LABEL: @auto_gen_116_logical(3948; CHECK-NEXT: [[RETVAL:%.*]] = fcmp uno double [[A:%.*]], [[B:%.*]]3949; CHECK-NEXT: ret i1 [[RETVAL]]3950;3951 %cmp = fcmp uno double %a, %b3952 %cmp1 = fcmp ult double %a, %b3953 %retval = select i1 %cmp, i1 %cmp1, i1 false3954 ret i1 %retval3955}3956 3957define i1 @auto_gen_116_logical_fmf(double %a, double %b) {3958; CHECK-LABEL: @auto_gen_116_logical_fmf(3959; CHECK-NEXT: [[RETVAL:%.*]] = fcmp uno double [[A:%.*]], [[B:%.*]]3960; CHECK-NEXT: ret i1 [[RETVAL]]3961;3962 %cmp = fcmp uno double %a, %b3963 %cmp1 = fcmp fast ult double %a, %b3964 %retval = select i1 %cmp, i1 %cmp1, i1 false3965 ret i1 %retval3966}3967 3968define i1 @auto_gen_117(double %a, double %b) {3969; CHECK-LABEL: @auto_gen_117(3970; CHECK-NEXT: [[RETVAL:%.*]] = fcmp uno double [[A:%.*]], [[B:%.*]]3971; CHECK-NEXT: ret i1 [[RETVAL]]3972;3973 %cmp = fcmp uno double %a, %b3974 %cmp1 = fcmp ule double %a, %b3975 %retval = and i1 %cmp, %cmp13976 ret i1 %retval3977}3978 3979define i1 @auto_gen_117_logical(double %a, double %b) {3980; CHECK-LABEL: @auto_gen_117_logical(3981; CHECK-NEXT: [[RETVAL:%.*]] = fcmp uno double [[A:%.*]], [[B:%.*]]3982; CHECK-NEXT: ret i1 [[RETVAL]]3983;3984 %cmp = fcmp uno double %a, %b3985 %cmp1 = fcmp ule double %a, %b3986 %retval = select i1 %cmp, i1 %cmp1, i1 false3987 ret i1 %retval3988}3989 3990define i1 @auto_gen_117_logical_fmf(double %a, double %b) {3991; CHECK-LABEL: @auto_gen_117_logical_fmf(3992; CHECK-NEXT: ret i1 false3993;3994 %cmp = fcmp fast uno double %a, %b3995 %cmp1 = fcmp fast ule double %a, %b3996 %retval = select i1 %cmp, i1 %cmp1, i1 false3997 ret i1 %retval3998}3999 4000define i1 @auto_gen_118(double %a, double %b) {4001; CHECK-LABEL: @auto_gen_118(4002; CHECK-NEXT: [[RETVAL:%.*]] = fcmp uno double [[A:%.*]], [[B:%.*]]4003; CHECK-NEXT: ret i1 [[RETVAL]]4004;4005 %cmp = fcmp uno double %a, %b4006 %cmp1 = fcmp une double %a, %b4007 %retval = and i1 %cmp, %cmp14008 ret i1 %retval4009}4010 4011define i1 @auto_gen_118_logical(double %a, double %b) {4012; CHECK-LABEL: @auto_gen_118_logical(4013; CHECK-NEXT: [[RETVAL:%.*]] = fcmp uno double [[A:%.*]], [[B:%.*]]4014; CHECK-NEXT: ret i1 [[RETVAL]]4015;4016 %cmp = fcmp uno double %a, %b4017 %cmp1 = fcmp une double %a, %b4018 %retval = select i1 %cmp, i1 %cmp1, i1 false4019 ret i1 %retval4020}4021 4022define i1 @auto_gen_118_logical_fmf(double %a, double %b) {4023; CHECK-LABEL: @auto_gen_118_logical_fmf(4024; CHECK-NEXT: [[RETVAL:%.*]] = fcmp uno double [[A:%.*]], [[B:%.*]]4025; CHECK-NEXT: ret i1 [[RETVAL]]4026;4027 %cmp = fcmp uno double %a, %b4028 %cmp1 = fcmp fast une double %a, %b4029 %retval = select i1 %cmp, i1 %cmp1, i1 false4030 ret i1 %retval4031}4032 4033define i1 @auto_gen_119(double %a, double %b) {4034; CHECK-LABEL: @auto_gen_119(4035; CHECK-NEXT: [[RETVAL:%.*]] = fcmp uno double [[A:%.*]], [[B:%.*]]4036; CHECK-NEXT: ret i1 [[RETVAL]]4037;4038 %cmp = fcmp uno double %a, %b4039 %cmp1 = fcmp uno double %a, %b4040 %retval = and i1 %cmp, %cmp14041 ret i1 %retval4042}4043 4044define i1 @auto_gen_119_logical(double %a, double %b) {4045; CHECK-LABEL: @auto_gen_119_logical(4046; CHECK-NEXT: [[RETVAL:%.*]] = fcmp uno double [[A:%.*]], [[B:%.*]]4047; CHECK-NEXT: ret i1 [[RETVAL]]4048;4049 %cmp = fcmp uno double %a, %b4050 %cmp1 = fcmp uno double %a, %b4051 %retval = select i1 %cmp, i1 %cmp1, i1 false4052 ret i1 %retval4053}4054 4055define i1 @auto_gen_119_logical_fmf(double %a, double %b) {4056; CHECK-LABEL: @auto_gen_119_logical_fmf(4057; CHECK-NEXT: ret i1 false4058;4059 %cmp = fcmp fast uno double %a, %b4060 %cmp1 = fcmp fast uno double %a, %b4061 %retval = select i1 %cmp, i1 %cmp1, i1 false4062 ret i1 %retval4063}4064 4065define i1 @auto_gen_120(double %a, double %b) {4066; CHECK-LABEL: @auto_gen_120(4067; CHECK-NEXT: ret i1 false4068;4069 %cmp = fcmp true double %a, %b4070 %cmp1 = fcmp false double %a, %b4071 %retval = and i1 %cmp, %cmp14072 ret i1 %retval4073}4074 4075define i1 @auto_gen_120_logical(double %a, double %b) {4076; CHECK-LABEL: @auto_gen_120_logical(4077; CHECK-NEXT: ret i1 false4078;4079 %cmp = fcmp true double %a, %b4080 %cmp1 = fcmp false double %a, %b4081 %retval = select i1 %cmp, i1 %cmp1, i1 false4082 ret i1 %retval4083}4084 4085define i1 @auto_gen_120_logical_fmf(double %a, double %b) {4086; CHECK-LABEL: @auto_gen_120_logical_fmf(4087; CHECK-NEXT: ret i1 false4088;4089 %cmp = fcmp true double %a, %b4090 %cmp1 = fcmp fast false double %a, %b4091 %retval = select i1 %cmp, i1 %cmp1, i1 false4092 ret i1 %retval4093}4094 4095define i1 @auto_gen_121(double %a, double %b) {4096; CHECK-LABEL: @auto_gen_121(4097; CHECK-NEXT: [[CMP1:%.*]] = fcmp oeq double [[A:%.*]], [[B:%.*]]4098; CHECK-NEXT: ret i1 [[CMP1]]4099;4100 %cmp = fcmp true double %a, %b4101 %cmp1 = fcmp oeq double %a, %b4102 %retval = and i1 %cmp, %cmp14103 ret i1 %retval4104}4105 4106define i1 @auto_gen_121_logical(double %a, double %b) {4107; CHECK-LABEL: @auto_gen_121_logical(4108; CHECK-NEXT: [[CMP1:%.*]] = fcmp oeq double [[A:%.*]], [[B:%.*]]4109; CHECK-NEXT: ret i1 [[CMP1]]4110;4111 %cmp = fcmp true double %a, %b4112 %cmp1 = fcmp oeq double %a, %b4113 %retval = select i1 %cmp, i1 %cmp1, i1 false4114 ret i1 %retval4115}4116 4117define i1 @auto_gen_121_logical_fmf(double %a, double %b) {4118; CHECK-LABEL: @auto_gen_121_logical_fmf(4119; CHECK-NEXT: [[CMP1:%.*]] = fcmp fast oeq double [[A:%.*]], [[B:%.*]]4120; CHECK-NEXT: ret i1 [[CMP1]]4121;4122 %cmp = fcmp fast true double %a, %b4123 %cmp1 = fcmp fast oeq double %a, %b4124 %retval = select i1 %cmp, i1 %cmp1, i1 false4125 ret i1 %retval4126}4127 4128define i1 @auto_gen_122(double %a, double %b) {4129; CHECK-LABEL: @auto_gen_122(4130; CHECK-NEXT: [[CMP1:%.*]] = fcmp ogt double [[A:%.*]], [[B:%.*]]4131; CHECK-NEXT: ret i1 [[CMP1]]4132;4133 %cmp = fcmp true double %a, %b4134 %cmp1 = fcmp ogt double %a, %b4135 %retval = and i1 %cmp, %cmp14136 ret i1 %retval4137}4138 4139define i1 @auto_gen_122_logical(double %a, double %b) {4140; CHECK-LABEL: @auto_gen_122_logical(4141; CHECK-NEXT: [[CMP1:%.*]] = fcmp ogt double [[A:%.*]], [[B:%.*]]4142; CHECK-NEXT: ret i1 [[CMP1]]4143;4144 %cmp = fcmp true double %a, %b4145 %cmp1 = fcmp ogt double %a, %b4146 %retval = select i1 %cmp, i1 %cmp1, i1 false4147 ret i1 %retval4148}4149 4150define i1 @auto_gen_122_logical_fmf(double %a, double %b) {4151; CHECK-LABEL: @auto_gen_122_logical_fmf(4152; CHECK-NEXT: [[CMP1:%.*]] = fcmp fast ogt double [[A:%.*]], [[B:%.*]]4153; CHECK-NEXT: ret i1 [[CMP1]]4154;4155 %cmp = fcmp true double %a, %b4156 %cmp1 = fcmp fast ogt double %a, %b4157 %retval = select i1 %cmp, i1 %cmp1, i1 false4158 ret i1 %retval4159}4160 4161define i1 @auto_gen_123(double %a, double %b) {4162; CHECK-LABEL: @auto_gen_123(4163; CHECK-NEXT: [[CMP1:%.*]] = fcmp oge double [[A:%.*]], [[B:%.*]]4164; CHECK-NEXT: ret i1 [[CMP1]]4165;4166 %cmp = fcmp true double %a, %b4167 %cmp1 = fcmp oge double %a, %b4168 %retval = and i1 %cmp, %cmp14169 ret i1 %retval4170}4171 4172define i1 @auto_gen_123_logical(double %a, double %b) {4173; CHECK-LABEL: @auto_gen_123_logical(4174; CHECK-NEXT: [[CMP1:%.*]] = fcmp oge double [[A:%.*]], [[B:%.*]]4175; CHECK-NEXT: ret i1 [[CMP1]]4176;4177 %cmp = fcmp true double %a, %b4178 %cmp1 = fcmp oge double %a, %b4179 %retval = select i1 %cmp, i1 %cmp1, i1 false4180 ret i1 %retval4181}4182 4183define i1 @auto_gen_123_logical_fmf(double %a, double %b) {4184; CHECK-LABEL: @auto_gen_123_logical_fmf(4185; CHECK-NEXT: [[CMP1:%.*]] = fcmp fast oge double [[A:%.*]], [[B:%.*]]4186; CHECK-NEXT: ret i1 [[CMP1]]4187;4188 %cmp = fcmp fast true double %a, %b4189 %cmp1 = fcmp fast oge double %a, %b4190 %retval = select i1 %cmp, i1 %cmp1, i1 false4191 ret i1 %retval4192}4193 4194define i1 @auto_gen_124(double %a, double %b) {4195; CHECK-LABEL: @auto_gen_124(4196; CHECK-NEXT: [[CMP1:%.*]] = fcmp olt double [[A:%.*]], [[B:%.*]]4197; CHECK-NEXT: ret i1 [[CMP1]]4198;4199 %cmp = fcmp true double %a, %b4200 %cmp1 = fcmp olt double %a, %b4201 %retval = and i1 %cmp, %cmp14202 ret i1 %retval4203}4204 4205define i1 @auto_gen_124_logical(double %a, double %b) {4206; CHECK-LABEL: @auto_gen_124_logical(4207; CHECK-NEXT: [[CMP1:%.*]] = fcmp olt double [[A:%.*]], [[B:%.*]]4208; CHECK-NEXT: ret i1 [[CMP1]]4209;4210 %cmp = fcmp true double %a, %b4211 %cmp1 = fcmp olt double %a, %b4212 %retval = select i1 %cmp, i1 %cmp1, i1 false4213 ret i1 %retval4214}4215 4216define i1 @auto_gen_124_logical_fmf(double %a, double %b) {4217; CHECK-LABEL: @auto_gen_124_logical_fmf(4218; CHECK-NEXT: [[CMP1:%.*]] = fcmp fast olt double [[A:%.*]], [[B:%.*]]4219; CHECK-NEXT: ret i1 [[CMP1]]4220;4221 %cmp = fcmp true double %a, %b4222 %cmp1 = fcmp fast olt double %a, %b4223 %retval = select i1 %cmp, i1 %cmp1, i1 false4224 ret i1 %retval4225}4226 4227define i1 @auto_gen_125(double %a, double %b) {4228; CHECK-LABEL: @auto_gen_125(4229; CHECK-NEXT: [[CMP1:%.*]] = fcmp ole double [[A:%.*]], [[B:%.*]]4230; CHECK-NEXT: ret i1 [[CMP1]]4231;4232 %cmp = fcmp true double %a, %b4233 %cmp1 = fcmp ole double %a, %b4234 %retval = and i1 %cmp, %cmp14235 ret i1 %retval4236}4237 4238define i1 @auto_gen_125_logical(double %a, double %b) {4239; CHECK-LABEL: @auto_gen_125_logical(4240; CHECK-NEXT: [[CMP1:%.*]] = fcmp ole double [[A:%.*]], [[B:%.*]]4241; CHECK-NEXT: ret i1 [[CMP1]]4242;4243 %cmp = fcmp true double %a, %b4244 %cmp1 = fcmp ole double %a, %b4245 %retval = select i1 %cmp, i1 %cmp1, i1 false4246 ret i1 %retval4247}4248 4249define i1 @auto_gen_125_logical_fmf(double %a, double %b) {4250; CHECK-LABEL: @auto_gen_125_logical_fmf(4251; CHECK-NEXT: [[CMP1:%.*]] = fcmp fast ole double [[A:%.*]], [[B:%.*]]4252; CHECK-NEXT: ret i1 [[CMP1]]4253;4254 %cmp = fcmp fast true double %a, %b4255 %cmp1 = fcmp fast ole double %a, %b4256 %retval = select i1 %cmp, i1 %cmp1, i1 false4257 ret i1 %retval4258}4259 4260define i1 @auto_gen_126(double %a, double %b) {4261; CHECK-LABEL: @auto_gen_126(4262; CHECK-NEXT: [[CMP1:%.*]] = fcmp one double [[A:%.*]], [[B:%.*]]4263; CHECK-NEXT: ret i1 [[CMP1]]4264;4265 %cmp = fcmp true double %a, %b4266 %cmp1 = fcmp one double %a, %b4267 %retval = and i1 %cmp, %cmp14268 ret i1 %retval4269}4270 4271define i1 @auto_gen_126_logical(double %a, double %b) {4272; CHECK-LABEL: @auto_gen_126_logical(4273; CHECK-NEXT: [[CMP1:%.*]] = fcmp one double [[A:%.*]], [[B:%.*]]4274; CHECK-NEXT: ret i1 [[CMP1]]4275;4276 %cmp = fcmp true double %a, %b4277 %cmp1 = fcmp one double %a, %b4278 %retval = select i1 %cmp, i1 %cmp1, i1 false4279 ret i1 %retval4280}4281 4282define i1 @auto_gen_126_logical_fmf(double %a, double %b) {4283; CHECK-LABEL: @auto_gen_126_logical_fmf(4284; CHECK-NEXT: [[CMP1:%.*]] = fcmp fast one double [[A:%.*]], [[B:%.*]]4285; CHECK-NEXT: ret i1 [[CMP1]]4286;4287 %cmp = fcmp true double %a, %b4288 %cmp1 = fcmp fast one double %a, %b4289 %retval = select i1 %cmp, i1 %cmp1, i1 false4290 ret i1 %retval4291}4292 4293define i1 @auto_gen_127(double %a, double %b) {4294; CHECK-LABEL: @auto_gen_127(4295; CHECK-NEXT: [[CMP1:%.*]] = fcmp ord double [[A:%.*]], [[B:%.*]]4296; CHECK-NEXT: ret i1 [[CMP1]]4297;4298 %cmp = fcmp true double %a, %b4299 %cmp1 = fcmp ord double %a, %b4300 %retval = and i1 %cmp, %cmp14301 ret i1 %retval4302}4303 4304define i1 @auto_gen_127_logical(double %a, double %b) {4305; CHECK-LABEL: @auto_gen_127_logical(4306; CHECK-NEXT: [[CMP1:%.*]] = fcmp ord double [[A:%.*]], [[B:%.*]]4307; CHECK-NEXT: ret i1 [[CMP1]]4308;4309 %cmp = fcmp true double %a, %b4310 %cmp1 = fcmp ord double %a, %b4311 %retval = select i1 %cmp, i1 %cmp1, i1 false4312 ret i1 %retval4313}4314 4315define i1 @auto_gen_127_logical_fmf(double %a, double %b) {4316; CHECK-LABEL: @auto_gen_127_logical_fmf(4317; CHECK-NEXT: ret i1 true4318;4319 %cmp = fcmp fast true double %a, %b4320 %cmp1 = fcmp fast ord double %a, %b4321 %retval = select i1 %cmp, i1 %cmp1, i1 false4322 ret i1 %retval4323}4324 4325define i1 @auto_gen_128(double %a, double %b) {4326; CHECK-LABEL: @auto_gen_128(4327; CHECK-NEXT: [[CMP1:%.*]] = fcmp ueq double [[A:%.*]], [[B:%.*]]4328; CHECK-NEXT: ret i1 [[CMP1]]4329;4330 %cmp = fcmp true double %a, %b4331 %cmp1 = fcmp ueq double %a, %b4332 %retval = and i1 %cmp, %cmp14333 ret i1 %retval4334}4335 4336define i1 @auto_gen_128_logical(double %a, double %b) {4337; CHECK-LABEL: @auto_gen_128_logical(4338; CHECK-NEXT: [[CMP1:%.*]] = fcmp ueq double [[A:%.*]], [[B:%.*]]4339; CHECK-NEXT: ret i1 [[CMP1]]4340;4341 %cmp = fcmp true double %a, %b4342 %cmp1 = fcmp ueq double %a, %b4343 %retval = select i1 %cmp, i1 %cmp1, i1 false4344 ret i1 %retval4345}4346 4347define i1 @auto_gen_128_logical_fmf(double %a, double %b) {4348; CHECK-LABEL: @auto_gen_128_logical_fmf(4349; CHECK-NEXT: [[CMP1:%.*]] = fcmp fast ueq double [[A:%.*]], [[B:%.*]]4350; CHECK-NEXT: ret i1 [[CMP1]]4351;4352 %cmp = fcmp true double %a, %b4353 %cmp1 = fcmp fast ueq double %a, %b4354 %retval = select i1 %cmp, i1 %cmp1, i1 false4355 ret i1 %retval4356}4357 4358define i1 @auto_gen_129(double %a, double %b) {4359; CHECK-LABEL: @auto_gen_129(4360; CHECK-NEXT: [[CMP1:%.*]] = fcmp ugt double [[A:%.*]], [[B:%.*]]4361; CHECK-NEXT: ret i1 [[CMP1]]4362;4363 %cmp = fcmp true double %a, %b4364 %cmp1 = fcmp ugt double %a, %b4365 %retval = and i1 %cmp, %cmp14366 ret i1 %retval4367}4368 4369define i1 @auto_gen_129_logical(double %a, double %b) {4370; CHECK-LABEL: @auto_gen_129_logical(4371; CHECK-NEXT: [[CMP1:%.*]] = fcmp ugt double [[A:%.*]], [[B:%.*]]4372; CHECK-NEXT: ret i1 [[CMP1]]4373;4374 %cmp = fcmp true double %a, %b4375 %cmp1 = fcmp ugt double %a, %b4376 %retval = select i1 %cmp, i1 %cmp1, i1 false4377 ret i1 %retval4378}4379 4380define i1 @auto_gen_129_logical_fmf(double %a, double %b) {4381; CHECK-LABEL: @auto_gen_129_logical_fmf(4382; CHECK-NEXT: [[CMP1:%.*]] = fcmp fast ugt double [[A:%.*]], [[B:%.*]]4383; CHECK-NEXT: ret i1 [[CMP1]]4384;4385 %cmp = fcmp fast true double %a, %b4386 %cmp1 = fcmp fast ugt double %a, %b4387 %retval = select i1 %cmp, i1 %cmp1, i1 false4388 ret i1 %retval4389}4390 4391define i1 @auto_gen_130(double %a, double %b) {4392; CHECK-LABEL: @auto_gen_130(4393; CHECK-NEXT: [[CMP1:%.*]] = fcmp uge double [[A:%.*]], [[B:%.*]]4394; CHECK-NEXT: ret i1 [[CMP1]]4395;4396 %cmp = fcmp true double %a, %b4397 %cmp1 = fcmp uge double %a, %b4398 %retval = and i1 %cmp, %cmp14399 ret i1 %retval4400}4401 4402define i1 @auto_gen_130_logical(double %a, double %b) {4403; CHECK-LABEL: @auto_gen_130_logical(4404; CHECK-NEXT: [[CMP1:%.*]] = fcmp uge double [[A:%.*]], [[B:%.*]]4405; CHECK-NEXT: ret i1 [[CMP1]]4406;4407 %cmp = fcmp true double %a, %b4408 %cmp1 = fcmp uge double %a, %b4409 %retval = select i1 %cmp, i1 %cmp1, i1 false4410 ret i1 %retval4411}4412 4413define i1 @auto_gen_130_logical_fmf(double %a, double %b) {4414; CHECK-LABEL: @auto_gen_130_logical_fmf(4415; CHECK-NEXT: [[CMP1:%.*]] = fcmp fast uge double [[A:%.*]], [[B:%.*]]4416; CHECK-NEXT: ret i1 [[CMP1]]4417;4418 %cmp = fcmp true double %a, %b4419 %cmp1 = fcmp fast uge double %a, %b4420 %retval = select i1 %cmp, i1 %cmp1, i1 false4421 ret i1 %retval4422}4423 4424define i1 @auto_gen_131(double %a, double %b) {4425; CHECK-LABEL: @auto_gen_131(4426; CHECK-NEXT: [[CMP1:%.*]] = fcmp ult double [[A:%.*]], [[B:%.*]]4427; CHECK-NEXT: ret i1 [[CMP1]]4428;4429 %cmp = fcmp true double %a, %b4430 %cmp1 = fcmp ult double %a, %b4431 %retval = and i1 %cmp, %cmp14432 ret i1 %retval4433}4434 4435define i1 @auto_gen_131_logical(double %a, double %b) {4436; CHECK-LABEL: @auto_gen_131_logical(4437; CHECK-NEXT: [[CMP1:%.*]] = fcmp ult double [[A:%.*]], [[B:%.*]]4438; CHECK-NEXT: ret i1 [[CMP1]]4439;4440 %cmp = fcmp true double %a, %b4441 %cmp1 = fcmp ult double %a, %b4442 %retval = select i1 %cmp, i1 %cmp1, i1 false4443 ret i1 %retval4444}4445 4446define i1 @auto_gen_131_logical_fmf(double %a, double %b) {4447; CHECK-LABEL: @auto_gen_131_logical_fmf(4448; CHECK-NEXT: [[CMP1:%.*]] = fcmp fast ult double [[A:%.*]], [[B:%.*]]4449; CHECK-NEXT: ret i1 [[CMP1]]4450;4451 %cmp = fcmp fast true double %a, %b4452 %cmp1 = fcmp fast ult double %a, %b4453 %retval = select i1 %cmp, i1 %cmp1, i1 false4454 ret i1 %retval4455}4456 4457define i1 @auto_gen_132(double %a, double %b) {4458; CHECK-LABEL: @auto_gen_132(4459; CHECK-NEXT: [[CMP1:%.*]] = fcmp ule double [[A:%.*]], [[B:%.*]]4460; CHECK-NEXT: ret i1 [[CMP1]]4461;4462 %cmp = fcmp true double %a, %b4463 %cmp1 = fcmp ule double %a, %b4464 %retval = and i1 %cmp, %cmp14465 ret i1 %retval4466}4467 4468define i1 @auto_gen_132_logical(double %a, double %b) {4469; CHECK-LABEL: @auto_gen_132_logical(4470; CHECK-NEXT: [[CMP1:%.*]] = fcmp ule double [[A:%.*]], [[B:%.*]]4471; CHECK-NEXT: ret i1 [[CMP1]]4472;4473 %cmp = fcmp true double %a, %b4474 %cmp1 = fcmp ule double %a, %b4475 %retval = select i1 %cmp, i1 %cmp1, i1 false4476 ret i1 %retval4477}4478 4479define i1 @auto_gen_132_logical_fmf(double %a, double %b) {4480; CHECK-LABEL: @auto_gen_132_logical_fmf(4481; CHECK-NEXT: [[CMP1:%.*]] = fcmp fast ule double [[A:%.*]], [[B:%.*]]4482; CHECK-NEXT: ret i1 [[CMP1]]4483;4484 %cmp = fcmp true double %a, %b4485 %cmp1 = fcmp fast ule double %a, %b4486 %retval = select i1 %cmp, i1 %cmp1, i1 false4487 ret i1 %retval4488}4489 4490define i1 @auto_gen_133(double %a, double %b) {4491; CHECK-LABEL: @auto_gen_133(4492; CHECK-NEXT: [[CMP1:%.*]] = fcmp une double [[A:%.*]], [[B:%.*]]4493; CHECK-NEXT: ret i1 [[CMP1]]4494;4495 %cmp = fcmp true double %a, %b4496 %cmp1 = fcmp une double %a, %b4497 %retval = and i1 %cmp, %cmp14498 ret i1 %retval4499}4500 4501define i1 @auto_gen_133_logical(double %a, double %b) {4502; CHECK-LABEL: @auto_gen_133_logical(4503; CHECK-NEXT: [[CMP1:%.*]] = fcmp une double [[A:%.*]], [[B:%.*]]4504; CHECK-NEXT: ret i1 [[CMP1]]4505;4506 %cmp = fcmp true double %a, %b4507 %cmp1 = fcmp une double %a, %b4508 %retval = select i1 %cmp, i1 %cmp1, i1 false4509 ret i1 %retval4510}4511 4512define i1 @auto_gen_133_logical_fmf(double %a, double %b) {4513; CHECK-LABEL: @auto_gen_133_logical_fmf(4514; CHECK-NEXT: [[CMP1:%.*]] = fcmp fast une double [[A:%.*]], [[B:%.*]]4515; CHECK-NEXT: ret i1 [[CMP1]]4516;4517 %cmp = fcmp fast true double %a, %b4518 %cmp1 = fcmp fast une double %a, %b4519 %retval = select i1 %cmp, i1 %cmp1, i1 false4520 ret i1 %retval4521}4522 4523define i1 @auto_gen_134(double %a, double %b) {4524; CHECK-LABEL: @auto_gen_134(4525; CHECK-NEXT: [[CMP1:%.*]] = fcmp uno double [[A:%.*]], [[B:%.*]]4526; CHECK-NEXT: ret i1 [[CMP1]]4527;4528 %cmp = fcmp true double %a, %b4529 %cmp1 = fcmp uno double %a, %b4530 %retval = and i1 %cmp, %cmp14531 ret i1 %retval4532}4533 4534define i1 @auto_gen_134_logical(double %a, double %b) {4535; CHECK-LABEL: @auto_gen_134_logical(4536; CHECK-NEXT: [[CMP1:%.*]] = fcmp uno double [[A:%.*]], [[B:%.*]]4537; CHECK-NEXT: ret i1 [[CMP1]]4538;4539 %cmp = fcmp true double %a, %b4540 %cmp1 = fcmp uno double %a, %b4541 %retval = select i1 %cmp, i1 %cmp1, i1 false4542 ret i1 %retval4543}4544 4545define i1 @auto_gen_134_logical_fmf(double %a, double %b) {4546; CHECK-LABEL: @auto_gen_134_logical_fmf(4547; CHECK-NEXT: ret i1 false4548;4549 %cmp = fcmp true double %a, %b4550 %cmp1 = fcmp fast uno double %a, %b4551 %retval = select i1 %cmp, i1 %cmp1, i1 false4552 ret i1 %retval4553}4554 4555define i1 @auto_gen_135(double %a, double %b) {4556; CHECK-LABEL: @auto_gen_135(4557; CHECK-NEXT: ret i1 true4558;4559 %cmp = fcmp true double %a, %b4560 %cmp1 = fcmp true double %a, %b4561 %retval = and i1 %cmp, %cmp14562 ret i1 %retval4563}4564 4565define i1 @auto_gen_135_logical(double %a, double %b) {4566; CHECK-LABEL: @auto_gen_135_logical(4567; CHECK-NEXT: ret i1 true4568;4569 %cmp = fcmp true double %a, %b4570 %cmp1 = fcmp true double %a, %b4571 %retval = select i1 %cmp, i1 %cmp1, i1 false4572 ret i1 %retval4573}4574 4575define i1 @auto_gen_135_logical_fmf(double %a, double %b) {4576; CHECK-LABEL: @auto_gen_135_logical_fmf(4577; CHECK-NEXT: ret i1 true4578;4579 %cmp = fcmp fast true double %a, %b4580 %cmp1 = fcmp fast true double %a, %b4581 %retval = select i1 %cmp, i1 %cmp1, i1 false4582 ret i1 %retval4583}4584 4585define i1 @intersect_fmf_1(double %a, double %b) {4586; CHECK-LABEL: @intersect_fmf_1(4587; CHECK-NEXT: [[RETVAL:%.*]] = fcmp fast oeq double [[A:%.*]], [[B:%.*]]4588; CHECK-NEXT: ret i1 [[RETVAL]]4589;4590 %cmp = fcmp fast ole double %a, %b4591 %cmp1 = fcmp fast oge double %a, %b4592 %retval = and i1 %cmp, %cmp14593 ret i1 %retval4594}4595 4596define i1 @intersect_fmf_2(double %a, double %b) {4597; CHECK-LABEL: @intersect_fmf_2(4598; CHECK-NEXT: [[RETVAL:%.*]] = fcmp oeq double [[A:%.*]], [[B:%.*]]4599; CHECK-NEXT: ret i1 [[RETVAL]]4600;4601 %cmp = fcmp fast ole double %a, %b4602 %cmp1 = fcmp oge double %a, %b4603 %retval = and i1 %cmp, %cmp14604 ret i1 %retval4605}4606 4607define i1 @intersect_fmf_3(double %a, double %b) {4608; CHECK-LABEL: @intersect_fmf_3(4609; CHECK-NEXT: [[RETVAL:%.*]] = fcmp oeq double [[A:%.*]], [[B:%.*]]4610; CHECK-NEXT: ret i1 [[RETVAL]]4611;4612 %cmp = fcmp ole double %a, %b4613 %cmp1 = fcmp fast oge double %a, %b4614 %retval = and i1 %cmp, %cmp14615 ret i1 %retval4616}4617 4618define i1 @intersect_fmf_4(double %a, double %b) {4619; CHECK-LABEL: @intersect_fmf_4(4620; CHECK-NEXT: [[RETVAL:%.*]] = fcmp oeq double [[A:%.*]], [[B:%.*]]4621; CHECK-NEXT: ret i1 [[RETVAL]]4622;4623 %cmp = fcmp ninf ole double %a, %b4624 %cmp1 = fcmp nnan oge double %a, %b4625 %retval = and i1 %cmp, %cmp14626 ret i1 %retval4627}4628 4629; Clang used to emit this pattern in __builtin_isnormal4630; https://alive2.llvm.org/ce/z/8sw9vi4631define i1 @clang_builtin_isnormal_inf_check(half %x) {4632; CHECK-LABEL: @clang_builtin_isnormal_inf_check(4633; CHECK-NEXT: [[FABS_X:%.*]] = call half @llvm.fabs.f16(half [[X:%.*]])4634; CHECK-NEXT: [[AND:%.*]] = fcmp oeq half [[FABS_X]], 0xH7C004635; CHECK-NEXT: ret i1 [[AND]]4636;4637 %fabs.x = call half @llvm.fabs.f16(half %x)4638 %ord = fcmp ord half %fabs.x, 0.04639 %cmp = fcmp uge half %fabs.x, 0xH7C004640 %and = and i1 %ord, %cmp4641 ret i1 %and4642}4643 4644define <2 x i1> @clang_builtin_isnormal_inf_check_vector(<2 x half> %x) {4645; CHECK-LABEL: @clang_builtin_isnormal_inf_check_vector(4646; CHECK-NEXT: [[FABS_X:%.*]] = call <2 x half> @llvm.fabs.v2f16(<2 x half> [[X:%.*]])4647; CHECK-NEXT: [[AND:%.*]] = fcmp oeq <2 x half> [[FABS_X]], splat (half 0xH7C00)4648; CHECK-NEXT: ret <2 x i1> [[AND]]4649;4650 %fabs.x = call <2 x half> @llvm.fabs.v2f16(<2 x half> %x)4651 %ord = fcmp ord <2 x half> %fabs.x, zeroinitializer4652 %cmp = fcmp uge <2 x half> %fabs.x, <half 0xH7C00, half 0xH7C00>4653 %and = and <2 x i1> %ord, %cmp4654 ret <2 x i1> %and4655}4656 4657define i1 @clang_builtin_isnormal_inf_check_commute(half %x) {4658; CHECK-LABEL: @clang_builtin_isnormal_inf_check_commute(4659; CHECK-NEXT: [[FABS_X:%.*]] = call half @llvm.fabs.f16(half [[X:%.*]])4660; CHECK-NEXT: [[AND:%.*]] = fcmp oeq half [[FABS_X]], 0xH7C004661; CHECK-NEXT: ret i1 [[AND]]4662;4663 %fabs.x = call half @llvm.fabs.f16(half %x)4664 %ord = fcmp ord half %fabs.x, 0.04665 %cmp = fcmp uge half %fabs.x, 0xH7C004666 %and = and i1 %cmp, %ord4667 ret i1 %and4668}4669 4670define i1 @clang_builtin_isnormal_inf_check_commute_nsz_rhs(half %x) {4671; CHECK-LABEL: @clang_builtin_isnormal_inf_check_commute_nsz_rhs(4672; CHECK-NEXT: [[FABS_X:%.*]] = call half @llvm.fabs.f16(half [[X:%.*]])4673; CHECK-NEXT: [[AND:%.*]] = fcmp oeq half [[FABS_X]], 0xH7C004674; CHECK-NEXT: ret i1 [[AND]]4675;4676 %fabs.x = call half @llvm.fabs.f16(half %x)4677 %ord = fcmp nsz ord half %fabs.x, 0.04678 %cmp = fcmp uge half %fabs.x, 0xH7C004679 %and = and i1 %cmp, %ord4680 ret i1 %and4681}4682 4683define i1 @clang_builtin_isnormal_inf_check_commute_nsz_lhs(half %x) {4684; CHECK-LABEL: @clang_builtin_isnormal_inf_check_commute_nsz_lhs(4685; CHECK-NEXT: [[FABS_X:%.*]] = call half @llvm.fabs.f16(half [[X:%.*]])4686; CHECK-NEXT: [[AND:%.*]] = fcmp oeq half [[FABS_X]], 0xH7C004687; CHECK-NEXT: ret i1 [[AND]]4688;4689 %fabs.x = call half @llvm.fabs.f16(half %x)4690 %ord = fcmp ord half %fabs.x, 0.04691 %cmp = fcmp nsz uge half %fabs.x, 0xH7C004692 %and = and i1 %cmp, %ord4693 ret i1 %and4694}4695 4696define i1 @clang_builtin_isnormal_inf_check_commute_nofabs_ueq(half %x) {4697; CHECK-LABEL: @clang_builtin_isnormal_inf_check_commute_nofabs_ueq(4698; CHECK-NEXT: [[AND:%.*]] = fcmp oeq half [[X:%.*]], 0xH7C004699; CHECK-NEXT: ret i1 [[AND]]4700;4701 %ord = fcmp ord half %x, 0.04702 %cmp = fcmp ueq half %x, 0xH7C004703 %and = and i1 %cmp, %ord4704 ret i1 %and4705}4706 4707define i1 @clang_builtin_isnormal_inf_check_commute_nsz(half %x) {4708; CHECK-LABEL: @clang_builtin_isnormal_inf_check_commute_nsz(4709; CHECK-NEXT: [[FABS_X:%.*]] = call half @llvm.fabs.f16(half [[X:%.*]])4710; CHECK-NEXT: [[AND:%.*]] = fcmp nsz oeq half [[FABS_X]], 0xH7C004711; CHECK-NEXT: ret i1 [[AND]]4712;4713 %fabs.x = call half @llvm.fabs.f16(half %x)4714 %ord = fcmp nsz ord half %fabs.x, 0.04715 %cmp = fcmp nsz uge half %fabs.x, 0xH7C004716 %and = and i1 %cmp, %ord4717 ret i1 %and4718}4719 4720; ugt -> ogt4721define i1 @clang_builtin_isnormal_inf_check_ugt(half %x) {4722; CHECK-LABEL: @clang_builtin_isnormal_inf_check_ugt(4723; CHECK-NEXT: ret i1 false4724;4725 %fabs.x = call half @llvm.fabs.f16(half %x)4726 %ord = fcmp ord half %fabs.x, 0.04727 %cmp = fcmp ugt half %fabs.x, 0xH7C004728 %and = and i1 %ord, %cmp4729 ret i1 %and4730}4731 4732; ult -> olt4733define i1 @clang_builtin_isnormal_inf_check_ult(half %x) {4734; CHECK-LABEL: @clang_builtin_isnormal_inf_check_ult(4735; CHECK-NEXT: [[FABS_X:%.*]] = call half @llvm.fabs.f16(half [[X:%.*]])4736; CHECK-NEXT: [[AND:%.*]] = fcmp one half [[FABS_X]], 0xH7C004737; CHECK-NEXT: ret i1 [[AND]]4738;4739 %fabs.x = call half @llvm.fabs.f16(half %x)4740 %ord = fcmp ord half %fabs.x, 0.04741 %cmp = fcmp ult half %fabs.x, 0xH7C004742 %and = and i1 %ord, %cmp4743 ret i1 %and4744}4745 4746; ule -> ole4747define i1 @clang_builtin_isnormal_inf_check_ule(half %x) {4748; CHECK-LABEL: @clang_builtin_isnormal_inf_check_ule(4749; CHECK-NEXT: [[ORD:%.*]] = fcmp ord half [[X:%.*]], 0xH00004750; CHECK-NEXT: ret i1 [[ORD]]4751;4752 %fabs.x = call half @llvm.fabs.f16(half %x)4753 %ord = fcmp ord half %fabs.x, 0.04754 %cmp = fcmp ule half %fabs.x, 0xH7C004755 %and = and i1 %ord, %cmp4756 ret i1 %and4757}4758 4759; ueq -> oeq4760define i1 @clang_builtin_isnormal_inf_check_ueq(half %x) {4761; CHECK-LABEL: @clang_builtin_isnormal_inf_check_ueq(4762; CHECK-NEXT: [[FABS_X:%.*]] = call half @llvm.fabs.f16(half [[X:%.*]])4763; CHECK-NEXT: [[AND:%.*]] = fcmp oeq half [[FABS_X]], 0xH7C004764; CHECK-NEXT: ret i1 [[AND]]4765;4766 %fabs.x = call half @llvm.fabs.f16(half %x)4767 %ord = fcmp ord half %fabs.x, 0.04768 %cmp = fcmp ueq half %fabs.x, 0xH7C004769 %and = and i1 %ord, %cmp4770 ret i1 %and4771}4772 4773; une -> ole4774define i1 @clang_builtin_isnormal_inf_check_une(half %x) {4775; CHECK-LABEL: @clang_builtin_isnormal_inf_check_une(4776; CHECK-NEXT: [[FABS_X:%.*]] = call half @llvm.fabs.f16(half [[X:%.*]])4777; CHECK-NEXT: [[AND:%.*]] = fcmp one half [[FABS_X]], 0xH7C004778; CHECK-NEXT: ret i1 [[AND]]4779;4780 %fabs.x = call half @llvm.fabs.f16(half %x)4781 %ord = fcmp ord half %fabs.x, 0.04782 %cmp = fcmp une half %fabs.x, 0xH7C004783 %and = and i1 %ord, %cmp4784 ret i1 %and4785}4786 4787; uno -> ord4788define i1 @clang_builtin_isnormal_inf_check_uno(half %x) {4789; CHECK-LABEL: @clang_builtin_isnormal_inf_check_uno(4790; CHECK-NEXT: ret i1 false4791;4792 %fabs.x = call half @llvm.fabs.f16(half %x)4793 %ord = fcmp ord half %fabs.x, 0.04794 %cmp = fcmp uno half %fabs.x, 0xH7C004795 %and = and i1 %ord, %cmp4796 ret i1 %and4797}4798 4799; ord -> ord4800define i1 @clang_builtin_isnormal_inf_check_ord(half %x) {4801; CHECK-LABEL: @clang_builtin_isnormal_inf_check_ord(4802; CHECK-NEXT: [[CMP:%.*]] = fcmp ord half [[X:%.*]], 0xH00004803; CHECK-NEXT: ret i1 [[CMP]]4804;4805 %fabs.x = call half @llvm.fabs.f16(half %x)4806 %ord = fcmp ord half %fabs.x, 0.04807 %cmp = fcmp ord half %fabs.x, 0xH7C004808 %and = and i1 %ord, %cmp4809 ret i1 %and4810}4811 4812define i1 @clang_builtin_isnormal_inf_check_oge(half %x) {4813; CHECK-LABEL: @clang_builtin_isnormal_inf_check_oge(4814; CHECK-NEXT: [[TMP1:%.*]] = call half @llvm.fabs.f16(half [[X:%.*]])4815; CHECK-NEXT: [[AND:%.*]] = fcmp oeq half [[TMP1]], 0xH7C004816; CHECK-NEXT: ret i1 [[AND]]4817;4818 %fabs.x = call half @llvm.fabs.f16(half %x)4819 %ord = fcmp ord half %fabs.x, 0.04820 %cmp = fcmp oge half %fabs.x, 0xH7C004821 %and = and i1 %ord, %cmp4822 ret i1 %and4823}4824 4825define i1 @clang_builtin_isnormal_inf_check_olt(half %x) {4826; CHECK-LABEL: @clang_builtin_isnormal_inf_check_olt(4827; CHECK-NEXT: [[TMP1:%.*]] = call half @llvm.fabs.f16(half [[X:%.*]])4828; CHECK-NEXT: [[AND:%.*]] = fcmp one half [[TMP1]], 0xH7C004829; CHECK-NEXT: ret i1 [[AND]]4830;4831 %fabs.x = call half @llvm.fabs.f16(half %x)4832 %ord = fcmp ord half %fabs.x, 0.04833 %cmp = fcmp olt half %fabs.x, 0xH7C004834 %and = and i1 %ord, %cmp4835 ret i1 %and4836}4837 4838define i1 @clang_builtin_isnormal_inf_check_ole(half %x) {4839; CHECK-LABEL: @clang_builtin_isnormal_inf_check_ole(4840; CHECK-NEXT: [[CMP:%.*]] = fcmp ord half [[X:%.*]], 0xH00004841; CHECK-NEXT: ret i1 [[CMP]]4842;4843 %fabs.x = call half @llvm.fabs.f16(half %x)4844 %ord = fcmp ord half %fabs.x, 0.04845 %cmp = fcmp ole half %fabs.x, 0xH7C004846 %and = and i1 %ord, %cmp4847 ret i1 %and4848}4849 4850define i1 @clang_builtin_isnormal_inf_check_oeq(half %x) {4851; CHECK-LABEL: @clang_builtin_isnormal_inf_check_oeq(4852; CHECK-NEXT: [[TMP1:%.*]] = call half @llvm.fabs.f16(half [[X:%.*]])4853; CHECK-NEXT: [[AND:%.*]] = fcmp oeq half [[TMP1]], 0xH7C004854; CHECK-NEXT: ret i1 [[AND]]4855;4856 %fabs.x = call half @llvm.fabs.f16(half %x)4857 %ord = fcmp ord half %fabs.x, 0.04858 %cmp = fcmp oeq half %fabs.x, 0xH7C004859 %and = and i1 %ord, %cmp4860 ret i1 %and4861}4862 4863define i1 @clang_builtin_isnormal_inf_check_unnececcary_fabs(half %x) {4864; CHECK-LABEL: @clang_builtin_isnormal_inf_check_unnececcary_fabs(4865; CHECK-NEXT: [[FABS_X:%.*]] = call half @llvm.fabs.f16(half [[X:%.*]])4866; CHECK-NEXT: [[AND:%.*]] = fcmp oeq half [[FABS_X]], 0xH7C004867; CHECK-NEXT: ret i1 [[AND]]4868;4869 %fabs.x = call half @llvm.fabs.f16(half %x)4870 %ord = fcmp ord half %x, 0.04871 %ueq = fcmp uge half %fabs.x, 0xH7C004872 %and = and i1 %ord, %ueq4873 ret i1 %and4874}4875 4876; Negative test4877define i1 @clang_builtin_isnormal_inf_check_not_ord(half %x) {4878; CHECK-LABEL: @clang_builtin_isnormal_inf_check_not_ord(4879; CHECK-NEXT: [[AND:%.*]] = fcmp uno half [[X:%.*]], 0xH00004880; CHECK-NEXT: ret i1 [[AND]]4881;4882 %fabs.x = call half @llvm.fabs.f16(half %x)4883 %ord = fcmp uno half %fabs.x, 0.04884 %ueq = fcmp uge half %fabs.x, 0xH7C004885 %and = and i1 %ord, %ueq4886 ret i1 %and4887}4888 4889define i1 @clang_builtin_isnormal_inf_check_missing_fabs(half %x) {4890; CHECK-LABEL: @clang_builtin_isnormal_inf_check_missing_fabs(4891; CHECK-NEXT: [[AND:%.*]] = fcmp oeq half [[X:%.*]], 0xH7C004892; CHECK-NEXT: ret i1 [[AND]]4893;4894 %fabs.x = call half @llvm.fabs.f16(half %x)4895 %ord = fcmp ord half %x, 0.04896 %ueq = fcmp uge half %x, 0xH7C004897 %and = and i1 %ord, %ueq4898 ret i1 %and4899}4900 4901define i1 @clang_builtin_isnormal_inf_check_neg_inf(half %x) {4902; CHECK-LABEL: @clang_builtin_isnormal_inf_check_neg_inf(4903; CHECK-NEXT: [[ORD:%.*]] = fcmp ord half [[X:%.*]], 0xH00004904; CHECK-NEXT: ret i1 [[ORD]]4905;4906 %fabs.x = call half @llvm.fabs.f16(half %x)4907 %ord = fcmp ord half %fabs.x, 0.04908 %ueq = fcmp uge half %fabs.x, 0xHFC004909 %and = and i1 %ord, %ueq4910 ret i1 %and4911}4912 4913; Negative test4914define i1 @clang_builtin_isnormal_inf_check_not_inf(half %x) {4915; CHECK-LABEL: @clang_builtin_isnormal_inf_check_not_inf(4916; CHECK-NEXT: [[FABS_X:%.*]] = call half @llvm.fabs.f16(half [[X:%.*]])4917; CHECK-NEXT: [[ORD:%.*]] = fcmp ord half [[X]], 0xH00004918; CHECK-NEXT: [[UEQ:%.*]] = fcmp uge half [[FABS_X]], 0xH7BFF4919; CHECK-NEXT: [[AND:%.*]] = and i1 [[ORD]], [[UEQ]]4920; CHECK-NEXT: ret i1 [[AND]]4921;4922 %fabs.x = call half @llvm.fabs.f16(half %x)4923 %ord = fcmp ord half %fabs.x, 0.04924 %ueq = fcmp uge half %fabs.x, 0xH7BFF4925 %and = and i1 %ord, %ueq4926 ret i1 %and4927}4928 4929define i1 @clang_builtin_isnormal_inf_check_nsz_lhs(half %x) {4930; CHECK-LABEL: @clang_builtin_isnormal_inf_check_nsz_lhs(4931; CHECK-NEXT: [[FABS_X:%.*]] = call half @llvm.fabs.f16(half [[X:%.*]])4932; CHECK-NEXT: [[AND:%.*]] = fcmp oeq half [[FABS_X]], 0xH7C004933; CHECK-NEXT: ret i1 [[AND]]4934;4935 %fabs.x = call half @llvm.fabs.f16(half %x)4936 %ord = fcmp nsz ord half %fabs.x, 0.04937 %ueq = fcmp uge half %fabs.x, 0xH7C004938 %and = and i1 %ord, %ueq4939 ret i1 %and4940}4941 4942define i1 @clang_builtin_isnormal_inf_check_nsz_rhs(half %x) {4943; CHECK-LABEL: @clang_builtin_isnormal_inf_check_nsz_rhs(4944; CHECK-NEXT: [[FABS_X:%.*]] = call half @llvm.fabs.f16(half [[X:%.*]])4945; CHECK-NEXT: [[AND:%.*]] = fcmp oeq half [[FABS_X]], 0xH7C004946; CHECK-NEXT: ret i1 [[AND]]4947;4948 %fabs.x = call half @llvm.fabs.f16(half %x)4949 %ord = fcmp ord half %fabs.x, 0.04950 %ueq = fcmp nsz uge half %fabs.x, 0xH7C004951 %and = and i1 %ord, %ueq4952 ret i1 %and4953}4954 4955define i1 @clang_builtin_isnormal_inf_check_nsz(half %x) {4956; CHECK-LABEL: @clang_builtin_isnormal_inf_check_nsz(4957; CHECK-NEXT: [[FABS_X:%.*]] = call half @llvm.fabs.f16(half [[X:%.*]])4958; CHECK-NEXT: [[AND:%.*]] = fcmp nsz oeq half [[FABS_X]], 0xH7C004959; CHECK-NEXT: ret i1 [[AND]]4960;4961 %fabs.x = call half @llvm.fabs.f16(half %x)4962 %ord = fcmp nsz ord half %fabs.x, 0.04963 %ueq = fcmp nsz uge half %fabs.x, 0xH7C004964 %and = and i1 %ord, %ueq4965 ret i1 %and4966}4967 4968define i1 @clang_builtin_isnormal_inf_check_fneg(half %x) {4969; CHECK-LABEL: @clang_builtin_isnormal_inf_check_fneg(4970; CHECK-NEXT: [[AND:%.*]] = fcmp oeq half [[X:%.*]], 0xH7C004971; CHECK-NEXT: ret i1 [[AND]]4972;4973 %fneg.x = fneg half %x4974 %ord = fcmp ord half %fneg.x, 0.04975 %cmp = fcmp uge half %x, 0xH7C004976 %and = and i1 %ord, %cmp4977 ret i1 %and4978}4979 4980define i1 @clang_builtin_isnormal_inf_check_copysign(half %x, half %y) {4981; CHECK-LABEL: @clang_builtin_isnormal_inf_check_copysign(4982; CHECK-NEXT: [[COPYSIGN_X:%.*]] = call half @llvm.copysign.f16(half [[X:%.*]], half [[Y:%.*]])4983; CHECK-NEXT: [[AND:%.*]] = fcmp oeq half [[COPYSIGN_X]], 0xH7C004984; CHECK-NEXT: ret i1 [[AND]]4985;4986 %copysign.x = call half @llvm.copysign.f16(half %x, half %y)4987 %ord = fcmp ord half %x, 0.04988 %cmp = fcmp uge half %copysign.x, 0xH7C004989 %and = and i1 %ord, %cmp4990 ret i1 %and4991}4992 4993define i1 @clang_builtin_isnormal_inf_check_copysign_logical_select(half %x, half %y) {4994; CHECK-LABEL: @clang_builtin_isnormal_inf_check_copysign_logical_select(4995; CHECK-NEXT: [[COPYSIGN_X:%.*]] = call half @llvm.copysign.f16(half [[X:%.*]], half [[Y:%.*]])4996; CHECK-NEXT: [[ORD:%.*]] = fcmp ord half [[X]], 0xH00004997; CHECK-NEXT: [[CMP:%.*]] = fcmp ueq half [[COPYSIGN_X]], 0xH7C004998; CHECK-NEXT: [[AND:%.*]] = select i1 [[ORD]], i1 [[CMP]], i1 false4999; CHECK-NEXT: ret i1 [[AND]]5000;5001 %copysign.x = call half @llvm.copysign.f16(half %x, half %y)5002 %ord = fcmp ord half %x, 0.05003 %cmp = fcmp uge half %copysign.x, 0xH7C005004 %and = select i1 %ord, i1 %cmp, i1 false5005 ret i1 %and5006}5007 5008define i1 @clang_builtin_isnormal_inf_check_fabs_nnan_logical_select(half %x) {5009; CHECK-LABEL: @clang_builtin_isnormal_inf_check_fabs_nnan_logical_select(5010; CHECK-NEXT: [[COPYSIGN_X:%.*]] = call half @llvm.fabs.f16(half [[X:%.*]])5011; CHECK-NEXT: [[AND:%.*]] = fcmp oeq half [[COPYSIGN_X]], 0xH7C005012; CHECK-NEXT: ret i1 [[AND]]5013;5014 %copysign.x = call nnan half @llvm.fabs.f16(half %x)5015 %ord = fcmp ord half %x, 0.05016 %cmp = fcmp uge half %copysign.x, 0xH7C005017 %and = select i1 %ord, i1 %cmp, i1 false5018 ret i1 %and5019}5020 5021define i1 @isnormal_logical_select_0(half %x) {5022; CHECK-LABEL: @isnormal_logical_select_0(5023; CHECK-NEXT: [[FABS_X:%.*]] = call half @llvm.fabs.f16(half [[X:%.*]])5024; CHECK-NEXT: [[AND:%.*]] = fcmp oeq half [[FABS_X]], 0xH7C005025; CHECK-NEXT: ret i1 [[AND]]5026;5027 %fabs.x = call half @llvm.fabs.f16(half %x)5028 %ord = fcmp ord half %fabs.x, 0.05029 %cmp.inf = fcmp uge half %fabs.x, 0xH7C005030 %and = select i1 %ord, i1 %cmp.inf, i1 false5031 ret i1 %and5032}5033 5034define i1 @isnormal_logical_select_1(half %x) {5035; CHECK-LABEL: @isnormal_logical_select_1(5036; CHECK-NEXT: [[FABS_X:%.*]] = call half @llvm.fabs.f16(half [[X:%.*]])5037; CHECK-NEXT: [[AND:%.*]] = fcmp oeq half [[FABS_X]], 0xH7C005038; CHECK-NEXT: ret i1 [[AND]]5039;5040 %fabs.x = call half @llvm.fabs.f16(half %x)5041 %ord = fcmp ord half %fabs.x, 0.05042 %cmp.inf = fcmp uge half %fabs.x, 0xH7C005043 %and = select i1 %cmp.inf, i1 %ord, i1 false5044 ret i1 %and5045}5046 5047define i1 @isnormal_logical_select_0_fmf0(half %x) {5048; CHECK-LABEL: @isnormal_logical_select_0_fmf0(5049; CHECK-NEXT: [[FABS_X:%.*]] = call half @llvm.fabs.f16(half [[X:%.*]])5050; CHECK-NEXT: [[AND:%.*]] = fcmp reassoc nsz arcp oeq half [[FABS_X]], 0xH7C005051; CHECK-NEXT: ret i1 [[AND]]5052;5053 %fabs.x = call half @llvm.fabs.f16(half %x)5054 %ord = fcmp nsz arcp reassoc ord half %fabs.x, 0.05055 %cmp.inf = fcmp nsz arcp reassoc uge half %fabs.x, 0xH7C005056 %and = select i1 %ord, i1 %cmp.inf, i1 false5057 ret i1 %and5058}5059 5060define i1 @isnormal_logical_select_0_fmf1(half %x) {5061; CHECK-LABEL: @isnormal_logical_select_0_fmf1(5062; CHECK-NEXT: [[FABS_X:%.*]] = call half @llvm.fabs.f16(half [[X:%.*]])5063; CHECK-NEXT: [[AND:%.*]] = fcmp oeq half [[FABS_X]], 0xH7C005064; CHECK-NEXT: ret i1 [[AND]]5065;5066 %fabs.x = call half @llvm.fabs.f16(half %x)5067 %ord = fcmp ord half %fabs.x, 0.05068 %cmp.inf = fcmp nsz arcp reassoc uge half %fabs.x, 0xH7C005069 %and = select i1 %ord, i1 %cmp.inf, i1 false5070 ret i1 %and5071}5072 5073define i1 @and_fcmp_reassoc1(i1 %x, double %a, double %b) {5074; CHECK-LABEL: @and_fcmp_reassoc1(5075; CHECK-NEXT: [[TMP1:%.*]] = fcmp uno double [[A:%.*]], [[B:%.*]]5076; CHECK-NEXT: [[RETVAL:%.*]] = and i1 [[TMP1]], [[X:%.*]]5077; CHECK-NEXT: ret i1 [[RETVAL]]5078;5079 %cmp = fcmp ult double %a, %b5080 %cmp1 = fcmp ugt double %a, %b5081 %and = and i1 %cmp, %x5082 %retval = and i1 %and, %cmp15083 ret i1 %retval5084}5085 5086define i1 @and_fcmp_reassoc2(i1 %x, double %a, double %b) {5087; CHECK-LABEL: @and_fcmp_reassoc2(5088; CHECK-NEXT: [[TMP1:%.*]] = fcmp uno double [[A:%.*]], [[B:%.*]]5089; CHECK-NEXT: [[RETVAL:%.*]] = and i1 [[X:%.*]], [[TMP1]]5090; CHECK-NEXT: ret i1 [[RETVAL]]5091;5092 %cmp = fcmp ult double %a, %b5093 %cmp1 = fcmp ugt double %a, %b5094 %and = and i1 %x, %cmp5095 %retval = and i1 %and, %cmp15096 ret i1 %retval5097}5098 5099define i1 @and_fcmp_reassoc3(i1 %x, double %a, double %b) {5100; CHECK-LABEL: @and_fcmp_reassoc3(5101; CHECK-NEXT: [[TMP1:%.*]] = fcmp uno double [[A:%.*]], [[B:%.*]]5102; CHECK-NEXT: [[RETVAL:%.*]] = and i1 [[TMP1]], [[X:%.*]]5103; CHECK-NEXT: ret i1 [[RETVAL]]5104;5105 %cmp = fcmp ult double %a, %b5106 %cmp1 = fcmp ugt double %a, %b5107 %and = and i1 %cmp, %x5108 %retval = and i1 %cmp1, %and5109 ret i1 %retval5110}5111 5112define i1 @and_fcmp_reassoc4(i1 %x, double %a, double %b) {5113; CHECK-LABEL: @and_fcmp_reassoc4(5114; CHECK-NEXT: [[TMP1:%.*]] = fcmp uno double [[A:%.*]], [[B:%.*]]5115; CHECK-NEXT: [[RETVAL:%.*]] = and i1 [[X:%.*]], [[TMP1]]5116; CHECK-NEXT: ret i1 [[RETVAL]]5117;5118 %cmp = fcmp ult double %a, %b5119 %cmp1 = fcmp ugt double %a, %b5120 %and = and i1 %x, %cmp5121 %retval = and i1 %cmp1, %and5122 ret i1 %retval5123}5124 5125declare half @llvm.fabs.f16(half)5126declare <2 x half> @llvm.fabs.v2f16(<2 x half>)5127declare half @llvm.copysign.f16(half, half)5128