1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py 2; RUN: opt < %s -passes=instcombine -S | FileCheck %s 3 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.0 10 %cmp2 = fcmp ord double %y, 0.0 11 %and = and i1 %cmp1, %cmp2 12 ret i1 %and 13} 14 15; TODO: this can be supported by freezing %y 16define i1 @PR1738_logical(double %x, double %y) { 17; CHECK-LABEL: @PR1738_logical( 18; CHECK-NEXT: [[CMP1:%.*]] = fcmp ord double [[X:%.*]], 0.000000e+00 19; CHECK-NEXT: [[CMP2:%.*]] = fcmp ord double [[Y:%.*]], 0.000000e+00 20; CHECK-NEXT: [[AND:%.*]] = select i1 [[CMP1]], i1 [[CMP2]], i1 false 21; CHECK-NEXT: ret i1 [[AND]] 22; 23 %cmp1 = fcmp ord double %x, 0.0 24 %cmp2 = fcmp ord double %y, 0.0 25 %and = select i1 %cmp1, i1 %cmp2, i1 false 26 ret i1 %and 27} 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.0 35 %cmp2 = fcmp ord double %y, 0.0 36 %and = select i1 %cmp1, i1 %cmp2, i1 false 37 ret i1 %and 38} 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, %cmp2 50 ret <2 x i1> %or 51} 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, %cmp2 61 ret <2 x i1> %or 62} 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.0 71 %and = and i1 %ord1, %z 72 %ord2 = fcmp afn ord float %d, 0.0 73 %r = and i1 %and, %ord2 74 ret i1 %r 75} 76 77; FIXME: this can be supported by freezing %d 78define 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+00 81; CHECK-NEXT: [[AND:%.*]] = select i1 [[ORD1]], i1 [[Z:%.*]], i1 false 82; CHECK-NEXT: [[ORD2:%.*]] = fcmp afn ord float [[D:%.*]], 0.000000e+00 83; CHECK-NEXT: [[R:%.*]] = select i1 [[AND]], i1 [[ORD2]], i1 false 84; CHECK-NEXT: ret i1 [[R]] 85; 86 %ord1 = fcmp arcp ord float %c, 0.0 87 %and = select i1 %ord1, i1 %z, i1 false 88 %ord2 = fcmp afn ord float %d, 0.0 89 %r = select i1 %and, i1 %ord2, i1 false 90 ret i1 %r 91} 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.0 100 %and = and i1 %ord1, %z 101 %ord2 = fcmp ninf reassoc ord float %d, 0.0 102 %r = and i1 %ord2, %and 103 ret i1 %r 104} 105 106; TODO: this should be fixed using freeze 107define 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+00 110; CHECK-NEXT: [[ORD2:%.*]] = fcmp reassoc ninf ord float [[D:%.*]], 0.000000e+00 111; CHECK-NEXT: [[TMP1:%.*]] = select i1 [[ORD2]], i1 [[ORD1]], i1 false 112; CHECK-NEXT: [[R:%.*]] = select i1 [[TMP1]], i1 [[Z:%.*]], i1 false 113; CHECK-NEXT: ret i1 [[R]] 114; 115 %ord1 = fcmp ninf ord float %c, 0.0 116 %and = select i1 %ord1, i1 %z, i1 false 117 %ord2 = fcmp ninf reassoc ord float %d, 0.0 118 %r = select i1 %ord2, i1 %and, i1 false 119 ret i1 %r 120} 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:%.*]], zeroinitializer 130; 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, %b 134 %ord2 = fcmp ord <2 x double> %c, <double 0.0, double undef> 135 %and = and <2 x i1> %ord1, %ord2 136 %ord3 = fcmp ord <2 x double> %d, zeroinitializer 137 %r = and <2 x i1> %and, %ord3 138 ret <2 x i1> %r 139} 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:%.*]], zeroinitializer 147; 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, %b 151 %ord2 = fcmp ord <2 x double> %c, <double 0.0, double undef> 152 %and = and <2 x i1> %ord1, %ord2 153 %ord3 = fcmp ord <2 x double> %d, zeroinitializer 154 %r = and <2 x i1> %ord3, %and 155 ret <2 x i1> %r 156} 157 158define i1 @PR15737(float %a, double %b) { 159; CHECK-LABEL: @PR15737( 160; CHECK-NEXT: [[CMP:%.*]] = fcmp ord float [[A:%.*]], 0.000000e+00 161; CHECK-NEXT: [[CMP1:%.*]] = fcmp ord double [[B:%.*]], 0.000000e+00 162; CHECK-NEXT: [[AND:%.*]] = and i1 [[CMP]], [[CMP1]] 163; CHECK-NEXT: ret i1 [[AND]] 164; 165 %cmp = fcmp ord float %a, 0.000000e+00 166 %cmp1 = fcmp ord double %b, 0.000000e+00 167 %and = and i1 %cmp, %cmp1 168 ret i1 %and 169} 170 171define i1 @PR15737_logical(float %a, double %b) { 172; CHECK-LABEL: @PR15737_logical( 173; CHECK-NEXT: [[CMP:%.*]] = fcmp ord float [[A:%.*]], 0.000000e+00 174; CHECK-NEXT: [[CMP1:%.*]] = fcmp ord double [[B:%.*]], 0.000000e+00 175; CHECK-NEXT: [[AND:%.*]] = select i1 [[CMP]], i1 [[CMP1]], i1 false 176; CHECK-NEXT: ret i1 [[AND]] 177; 178 %cmp = fcmp ord float %a, 0.000000e+00 179 %cmp1 = fcmp ord double %b, 0.000000e+00 180 %and = select i1 %cmp, i1 %cmp1, i1 false 181 ret i1 %and 182} 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:%.*]], zeroinitializer 187; CHECK-NEXT: [[CMP1:%.*]] = fcmp ord <2 x double> [[B:%.*]], zeroinitializer 188; 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, zeroinitializer 192 %cmp1 = fcmp ord <2 x double> %b, zeroinitializer 193 %and = and <2 x i1> %cmp, %cmp1 194 ret <2 x i1> %and 195} 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.0 203 %cmp2 = fcmp ord float %y, 2.0 204 %and = and i1 %cmp1, %cmp2 205 ret i1 %and 206} 207 208; TODO: this can be supported by freezing %y 209define 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+00 212; CHECK-NEXT: [[CMP2:%.*]] = fcmp ord float [[Y:%.*]], 0.000000e+00 213; CHECK-NEXT: [[AND:%.*]] = select i1 [[CMP1]], i1 [[CMP2]], i1 false 214; CHECK-NEXT: ret i1 [[AND]] 215; 216 %cmp1 = fcmp ord float %x, 1.0 217 %cmp2 = fcmp ord float %y, 2.0 218 %and = select i1 %cmp1, i1 %cmp2, i1 false 219 ret i1 %and 220} 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, %cmp2 230 ret <3 x i1> %and 231} 232 233define i1 @auto_gen_0(double %a, double %b) { 234; CHECK-LABEL: @auto_gen_0( 235; CHECK-NEXT: ret i1 false 236; 237 %cmp = fcmp false double %a, %b 238 %cmp1 = fcmp false double %a, %b 239 %retval = and i1 %cmp, %cmp1 240 ret i1 %retval 241} 242 243define i1 @auto_gen_0_logical(double %a, double %b) { 244; CHECK-LABEL: @auto_gen_0_logical( 245; CHECK-NEXT: ret i1 false 246; 247 %cmp = fcmp false double %a, %b 248 %cmp1 = fcmp false double %a, %b 249 %retval = select i1 %cmp, i1 %cmp1, i1 false 250 ret i1 %retval 251} 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 false 256; 257 %cmp = fcmp false double %a, %b 258 %cmp1 = fcmp fast false double %a, %b 259 %retval = select i1 %cmp, i1 %cmp1, i1 false 260 ret i1 %retval 261} 262 263define i1 @auto_gen_1(double %a, double %b) { 264; CHECK-LABEL: @auto_gen_1( 265; CHECK-NEXT: ret i1 false 266; 267 %cmp = fcmp oeq double %a, %b 268 %cmp1 = fcmp false double %a, %b 269 %retval = and i1 %cmp, %cmp1 270 ret i1 %retval 271} 272 273define i1 @auto_gen_1_logical(double %a, double %b) { 274; CHECK-LABEL: @auto_gen_1_logical( 275; CHECK-NEXT: ret i1 false 276; 277 %cmp = fcmp oeq double %a, %b 278 %cmp1 = fcmp false double %a, %b 279 %retval = select i1 %cmp, i1 %cmp1, i1 false 280 ret i1 %retval 281} 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 false 286; 287 %cmp = fcmp fast oeq double %a, %b 288 %cmp1 = fcmp fast false double %a, %b 289 %retval = select i1 %cmp, i1 %cmp1, i1 false 290 ret i1 %retval 291} 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, %b 299 %cmp1 = fcmp oeq double %a, %b 300 %retval = and i1 %cmp, %cmp1 301 ret i1 %retval 302} 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, %b 310 %cmp1 = fcmp oeq double %a, %b 311 %retval = select i1 %cmp, i1 %cmp1, i1 false 312 ret i1 %retval 313} 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, %b 321 %cmp1 = fcmp fast oeq double %a, %b 322 %retval = select i1 %cmp, i1 %cmp1, i1 false 323 ret i1 %retval 324} 325 326define i1 @auto_gen_3(double %a, double %b) { 327; CHECK-LABEL: @auto_gen_3( 328; CHECK-NEXT: ret i1 false 329; 330 %cmp = fcmp ogt double %a, %b 331 %cmp1 = fcmp false double %a, %b 332 %retval = and i1 %cmp, %cmp1 333 ret i1 %retval 334} 335 336define i1 @auto_gen_3_logical(double %a, double %b) { 337; CHECK-LABEL: @auto_gen_3_logical( 338; CHECK-NEXT: ret i1 false 339; 340 %cmp = fcmp ogt double %a, %b 341 %cmp1 = fcmp false double %a, %b 342 %retval = select i1 %cmp, i1 %cmp1, i1 false 343 ret i1 %retval 344} 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 false 349; 350 %cmp = fcmp fast ogt double %a, %b 351 %cmp1 = fcmp fast false double %a, %b 352 %retval = select i1 %cmp, i1 %cmp1, i1 false 353 ret i1 %retval 354} 355 356define i1 @auto_gen_4(double %a, double %b) { 357; CHECK-LABEL: @auto_gen_4( 358; CHECK-NEXT: ret i1 false 359; 360 %cmp = fcmp ogt double %a, %b 361 %cmp1 = fcmp oeq double %a, %b 362 %retval = and i1 %cmp, %cmp1 363 ret i1 %retval 364} 365 366define i1 @auto_gen_4_logical(double %a, double %b) { 367; CHECK-LABEL: @auto_gen_4_logical( 368; CHECK-NEXT: ret i1 false 369; 370 %cmp = fcmp ogt double %a, %b 371 %cmp1 = fcmp oeq double %a, %b 372 %retval = select i1 %cmp, i1 %cmp1, i1 false 373 ret i1 %retval 374} 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 false 379; 380 %cmp = fcmp ogt double %a, %b 381 %cmp1 = fcmp fast oeq double %a, %b 382 %retval = select i1 %cmp, i1 %cmp1, i1 false 383 ret i1 %retval 384} 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, %b 392 %cmp1 = fcmp ogt double %a, %b 393 %retval = and i1 %cmp, %cmp1 394 ret i1 %retval 395} 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, %b 403 %cmp1 = fcmp ogt double %a, %b 404 %retval = select i1 %cmp, i1 %cmp1, i1 false 405 ret i1 %retval 406} 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, %b 414 %cmp1 = fcmp fast ogt double %a, %b 415 %retval = select i1 %cmp, i1 %cmp1, i1 false 416 ret i1 %retval 417} 418 419define i1 @auto_gen_6(double %a, double %b) { 420; CHECK-LABEL: @auto_gen_6( 421; CHECK-NEXT: ret i1 false 422; 423 %cmp = fcmp oge double %a, %b 424 %cmp1 = fcmp false double %a, %b 425 %retval = and i1 %cmp, %cmp1 426 ret i1 %retval 427} 428 429define i1 @auto_gen_6_logical(double %a, double %b) { 430; CHECK-LABEL: @auto_gen_6_logical( 431; CHECK-NEXT: ret i1 false 432; 433 %cmp = fcmp oge double %a, %b 434 %cmp1 = fcmp false double %a, %b 435 %retval = select i1 %cmp, i1 %cmp1, i1 false 436 ret i1 %retval 437} 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 false 442; 443 %cmp = fcmp oge double %a, %b 444 %cmp1 = fcmp fast false double %a, %b 445 %retval = select i1 %cmp, i1 %cmp1, i1 false 446 ret i1 %retval 447} 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, %b 455 %cmp1 = fcmp oeq double %a, %b 456 %retval = and i1 %cmp, %cmp1 457 ret i1 %retval 458} 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, %b 466 %cmp1 = fcmp oeq double %a, %b 467 %retval = select i1 %cmp, i1 %cmp1, i1 false 468 ret i1 %retval 469} 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, %b 477 %cmp1 = fcmp fast oeq double %a, %b 478 %retval = select i1 %cmp, i1 %cmp1, i1 false 479 ret i1 %retval 480} 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, %b 488 %cmp1 = fcmp ogt double %a, %b 489 %retval = and i1 %cmp, %cmp1 490 ret i1 %retval 491} 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, %b 499 %cmp1 = fcmp ogt double %a, %b 500 %retval = select i1 %cmp, i1 %cmp1, i1 false 501 ret i1 %retval 502} 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, %b 510 %cmp1 = fcmp fast ogt double %a, %b 511 %retval = select i1 %cmp, i1 %cmp1, i1 false 512 ret i1 %retval 513} 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, %b 521 %cmp1 = fcmp oge double %a, %b 522 %retval = and i1 %cmp, %cmp1 523 ret i1 %retval 524} 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, %b 532 %cmp1 = fcmp oge double %a, %b 533 %retval = select i1 %cmp, i1 %cmp1, i1 false 534 ret i1 %retval 535} 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, %b 543 %cmp1 = fcmp fast oge double %a, %b 544 %retval = select i1 %cmp, i1 %cmp1, i1 false 545 ret i1 %retval 546} 547 548define i1 @auto_gen_10(double %a, double %b) { 549; CHECK-LABEL: @auto_gen_10( 550; CHECK-NEXT: ret i1 false 551; 552 %cmp = fcmp olt double %a, %b 553 %cmp1 = fcmp false double %a, %b 554 %retval = and i1 %cmp, %cmp1 555 ret i1 %retval 556} 557 558define i1 @auto_gen_10_logical(double %a, double %b) { 559; CHECK-LABEL: @auto_gen_10_logical( 560; CHECK-NEXT: ret i1 false 561; 562 %cmp = fcmp olt double %a, %b 563 %cmp1 = fcmp false double %a, %b 564 %retval = select i1 %cmp, i1 %cmp1, i1 false 565 ret i1 %retval 566} 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 false 571; 572 %cmp = fcmp olt double %a, %b 573 %cmp1 = fcmp fast false double %a, %b 574 %retval = select i1 %cmp, i1 %cmp1, i1 false 575 ret i1 %retval 576} 577 578define i1 @auto_gen_11(double %a, double %b) { 579; CHECK-LABEL: @auto_gen_11( 580; CHECK-NEXT: ret i1 false 581; 582 %cmp = fcmp olt double %a, %b 583 %cmp1 = fcmp oeq double %a, %b 584 %retval = and i1 %cmp, %cmp1 585 ret i1 %retval 586} 587 588define i1 @auto_gen_11_logical(double %a, double %b) { 589; CHECK-LABEL: @auto_gen_11_logical( 590; CHECK-NEXT: ret i1 false 591; 592 %cmp = fcmp olt double %a, %b 593 %cmp1 = fcmp oeq double %a, %b 594 %retval = select i1 %cmp, i1 %cmp1, i1 false 595 ret i1 %retval 596} 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 false 601; 602 %cmp = fcmp fast olt double %a, %b 603 %cmp1 = fcmp fast oeq double %a, %b 604 %retval = select i1 %cmp, i1 %cmp1, i1 false 605 ret i1 %retval 606} 607 608define i1 @auto_gen_12(double %a, double %b) { 609; CHECK-LABEL: @auto_gen_12( 610; CHECK-NEXT: ret i1 false 611; 612 %cmp = fcmp olt double %a, %b 613 %cmp1 = fcmp ogt double %a, %b 614 %retval = and i1 %cmp, %cmp1 615 ret i1 %retval 616} 617 618define i1 @auto_gen_12_logical(double %a, double %b) { 619; CHECK-LABEL: @auto_gen_12_logical( 620; CHECK-NEXT: ret i1 false 621; 622 %cmp = fcmp olt double %a, %b 623 %cmp1 = fcmp ogt double %a, %b 624 %retval = select i1 %cmp, i1 %cmp1, i1 false 625 ret i1 %retval 626} 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 false 631; 632 %cmp = fcmp olt double %a, %b 633 %cmp1 = fcmp fast ogt double %a, %b 634 %retval = select i1 %cmp, i1 %cmp1, i1 false 635 ret i1 %retval 636} 637 638define i1 @auto_gen_13(double %a, double %b) { 639; CHECK-LABEL: @auto_gen_13( 640; CHECK-NEXT: ret i1 false 641; 642 %cmp = fcmp olt double %a, %b 643 %cmp1 = fcmp oge double %a, %b 644 %retval = and i1 %cmp, %cmp1 645 ret i1 %retval 646} 647 648define i1 @auto_gen_13_logical(double %a, double %b) { 649; CHECK-LABEL: @auto_gen_13_logical( 650; CHECK-NEXT: ret i1 false 651; 652 %cmp = fcmp olt double %a, %b 653 %cmp1 = fcmp oge double %a, %b 654 %retval = select i1 %cmp, i1 %cmp1, i1 false 655 ret i1 %retval 656} 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 false 661; 662 %cmp = fcmp fast olt double %a, %b 663 %cmp1 = fcmp fast oge double %a, %b 664 %retval = select i1 %cmp, i1 %cmp1, i1 false 665 ret i1 %retval 666} 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, %b 674 %cmp1 = fcmp olt double %a, %b 675 %retval = and i1 %cmp, %cmp1 676 ret i1 %retval 677} 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, %b 685 %cmp1 = fcmp olt double %a, %b 686 %retval = select i1 %cmp, i1 %cmp1, i1 false 687 ret i1 %retval 688} 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, %b 696 %cmp1 = fcmp fast olt double %a, %b 697 %retval = select i1 %cmp, i1 %cmp1, i1 false 698 ret i1 %retval 699} 700 701define i1 @auto_gen_15(double %a, double %b) { 702; CHECK-LABEL: @auto_gen_15( 703; CHECK-NEXT: ret i1 false 704; 705 %cmp = fcmp ole double %a, %b 706 %cmp1 = fcmp false double %a, %b 707 %retval = and i1 %cmp, %cmp1 708 ret i1 %retval 709} 710 711define i1 @auto_gen_15_logical(double %a, double %b) { 712; CHECK-LABEL: @auto_gen_15_logical( 713; CHECK-NEXT: ret i1 false 714; 715 %cmp = fcmp ole double %a, %b 716 %cmp1 = fcmp false double %a, %b 717 %retval = select i1 %cmp, i1 %cmp1, i1 false 718 ret i1 %retval 719} 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 false 724; 725 %cmp = fcmp fast ole double %a, %b 726 %cmp1 = fcmp fast false double %a, %b 727 %retval = select i1 %cmp, i1 %cmp1, i1 false 728 ret i1 %retval 729} 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, %b 737 %cmp1 = fcmp oeq double %a, %b 738 %retval = and i1 %cmp, %cmp1 739 ret i1 %retval 740} 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, %b 748 %cmp1 = fcmp oeq double %a, %b 749 %retval = select i1 %cmp, i1 %cmp1, i1 false 750 ret i1 %retval 751} 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, %b 759 %cmp1 = fcmp fast oeq double %a, %b 760 %retval = select i1 %cmp, i1 %cmp1, i1 false 761 ret i1 %retval 762} 763 764define i1 @auto_gen_17(double %a, double %b) { 765; CHECK-LABEL: @auto_gen_17( 766; CHECK-NEXT: ret i1 false 767; 768 %cmp = fcmp ole double %a, %b 769 %cmp1 = fcmp ogt double %a, %b 770 %retval = and i1 %cmp, %cmp1 771 ret i1 %retval 772} 773 774define i1 @auto_gen_17_logical(double %a, double %b) { 775; CHECK-LABEL: @auto_gen_17_logical( 776; CHECK-NEXT: ret i1 false 777; 778 %cmp = fcmp ole double %a, %b 779 %cmp1 = fcmp ogt double %a, %b 780 %retval = select i1 %cmp, i1 %cmp1, i1 false 781 ret i1 %retval 782} 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 false 787; 788 %cmp = fcmp fast ole double %a, %b 789 %cmp1 = fcmp fast ogt double %a, %b 790 %retval = select i1 %cmp, i1 %cmp1, i1 false 791 ret i1 %retval 792} 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, %b 800 %cmp1 = fcmp oge double %a, %b 801 %retval = and i1 %cmp, %cmp1 802 ret i1 %retval 803} 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, %b 811 %cmp1 = fcmp oge double %a, %b 812 %retval = select i1 %cmp, i1 %cmp1, i1 false 813 ret i1 %retval 814} 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, %b 822 %cmp1 = fcmp fast oge double %a, %b 823 %retval = select i1 %cmp, i1 %cmp1, i1 false 824 ret i1 %retval 825} 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, %b 833 %cmp1 = fcmp olt double %a, %b 834 %retval = and i1 %cmp, %cmp1 835 ret i1 %retval 836} 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, %b 844 %cmp1 = fcmp olt double %a, %b 845 %retval = select i1 %cmp, i1 %cmp1, i1 false 846 ret i1 %retval 847} 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, %b 855 %cmp1 = fcmp fast olt double %a, %b 856 %retval = select i1 %cmp, i1 %cmp1, i1 false 857 ret i1 %retval 858} 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, %b 866 %cmp1 = fcmp ole double %a, %b 867 %retval = and i1 %cmp, %cmp1 868 ret i1 %retval 869} 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, %b 877 %cmp1 = fcmp ole double %a, %b 878 %retval = select i1 %cmp, i1 %cmp1, i1 false 879 ret i1 %retval 880} 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, %b 888 %cmp1 = fcmp fast ole double %a, %b 889 %retval = select i1 %cmp, i1 %cmp1, i1 false 890 ret i1 %retval 891} 892 893define i1 @auto_gen_21(double %a, double %b) { 894; CHECK-LABEL: @auto_gen_21( 895; CHECK-NEXT: ret i1 false 896; 897 %cmp = fcmp one double %a, %b 898 %cmp1 = fcmp false double %a, %b 899 %retval = and i1 %cmp, %cmp1 900 ret i1 %retval 901} 902 903define i1 @auto_gen_21_logical(double %a, double %b) { 904; CHECK-LABEL: @auto_gen_21_logical( 905; CHECK-NEXT: ret i1 false 906; 907 %cmp = fcmp one double %a, %b 908 %cmp1 = fcmp false double %a, %b 909 %retval = select i1 %cmp, i1 %cmp1, i1 false 910 ret i1 %retval 911} 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 false 916; 917 %cmp = fcmp fast one double %a, %b 918 %cmp1 = fcmp fast false double %a, %b 919 %retval = select i1 %cmp, i1 %cmp1, i1 false 920 ret i1 %retval 921} 922 923define i1 @auto_gen_22(double %a, double %b) { 924; CHECK-LABEL: @auto_gen_22( 925; CHECK-NEXT: ret i1 false 926; 927 %cmp = fcmp one double %a, %b 928 %cmp1 = fcmp oeq double %a, %b 929 %retval = and i1 %cmp, %cmp1 930 ret i1 %retval 931} 932 933define i1 @auto_gen_22_logical(double %a, double %b) { 934; CHECK-LABEL: @auto_gen_22_logical( 935; CHECK-NEXT: ret i1 false 936; 937 %cmp = fcmp one double %a, %b 938 %cmp1 = fcmp oeq double %a, %b 939 %retval = select i1 %cmp, i1 %cmp1, i1 false 940 ret i1 %retval 941} 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 false 946; 947 %cmp = fcmp one double %a, %b 948 %cmp1 = fcmp fast oeq double %a, %b 949 %retval = select i1 %cmp, i1 %cmp1, i1 false 950 ret i1 %retval 951} 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, %b 959 %cmp1 = fcmp ogt double %a, %b 960 %retval = and i1 %cmp, %cmp1 961 ret i1 %retval 962} 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, %b 970 %cmp1 = fcmp ogt double %a, %b 971 %retval = select i1 %cmp, i1 %cmp1, i1 false 972 ret i1 %retval 973} 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, %b 981 %cmp1 = fcmp fast ogt double %a, %b 982 %retval = select i1 %cmp, i1 %cmp1, i1 false 983 ret i1 %retval 984} 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, %b 992 %cmp1 = fcmp oge double %a, %b 993 %retval = and i1 %cmp, %cmp1 994 ret i1 %retval 995} 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, %b 1003 %cmp1 = fcmp oge double %a, %b 1004 %retval = select i1 %cmp, i1 %cmp1, i1 false 1005 ret i1 %retval 1006} 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, %b 1014 %cmp1 = fcmp fast oge double %a, %b 1015 %retval = select i1 %cmp, i1 %cmp1, i1 false 1016 ret i1 %retval 1017} 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, %b 1025 %cmp1 = fcmp olt double %a, %b 1026 %retval = and i1 %cmp, %cmp1 1027 ret i1 %retval 1028} 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, %b 1036 %cmp1 = fcmp olt double %a, %b 1037 %retval = select i1 %cmp, i1 %cmp1, i1 false 1038 ret i1 %retval 1039} 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, %b 1047 %cmp1 = fcmp fast olt double %a, %b 1048 %retval = select i1 %cmp, i1 %cmp1, i1 false 1049 ret i1 %retval 1050} 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, %b 1058 %cmp1 = fcmp ole double %a, %b 1059 %retval = and i1 %cmp, %cmp1 1060 ret i1 %retval 1061} 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, %b 1069 %cmp1 = fcmp ole double %a, %b 1070 %retval = select i1 %cmp, i1 %cmp1, i1 false 1071 ret i1 %retval 1072} 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, %b 1080 %cmp1 = fcmp fast ole double %a, %b 1081 %retval = select i1 %cmp, i1 %cmp1, i1 false 1082 ret i1 %retval 1083} 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, %b 1091 %cmp1 = fcmp one double %a, %b 1092 %retval = and i1 %cmp, %cmp1 1093 ret i1 %retval 1094} 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, %b 1102 %cmp1 = fcmp one double %a, %b 1103 %retval = select i1 %cmp, i1 %cmp1, i1 false 1104 ret i1 %retval 1105} 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, %b 1113 %cmp1 = fcmp fast one double %a, %b 1114 %retval = select i1 %cmp, i1 %cmp1, i1 false 1115 ret i1 %retval 1116} 1117 1118define i1 @auto_gen_28(double %a, double %b) { 1119; CHECK-LABEL: @auto_gen_28( 1120; CHECK-NEXT: ret i1 false 1121; 1122 %cmp = fcmp ord double %a, %b 1123 %cmp1 = fcmp false double %a, %b 1124 %retval = and i1 %cmp, %cmp1 1125 ret i1 %retval 1126} 1127 1128define i1 @auto_gen_28_logical(double %a, double %b) { 1129; CHECK-LABEL: @auto_gen_28_logical( 1130; CHECK-NEXT: ret i1 false 1131; 1132 %cmp = fcmp ord double %a, %b 1133 %cmp1 = fcmp false double %a, %b 1134 %retval = select i1 %cmp, i1 %cmp1, i1 false 1135 ret i1 %retval 1136} 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 false 1141; 1142 %cmp = fcmp ord double %a, %b 1143 %cmp1 = fcmp fast false double %a, %b 1144 %retval = select i1 %cmp, i1 %cmp1, i1 false 1145 ret i1 %retval 1146} 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, %b 1154 %cmp1 = fcmp oeq double %a, %b 1155 %retval = and i1 %cmp, %cmp1 1156 ret i1 %retval 1157} 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, %b 1165 %cmp1 = fcmp oeq double %a, %b 1166 %retval = select i1 %cmp, i1 %cmp1, i1 false 1167 ret i1 %retval 1168} 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, %b 1176 %cmp1 = fcmp fast oeq double %a, %b 1177 %retval = select i1 %cmp, i1 %cmp1, i1 false 1178 ret i1 %retval 1179} 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, %b 1187 %cmp1 = fcmp ogt double %a, %b 1188 %retval = and i1 %cmp, %cmp1 1189 ret i1 %retval 1190} 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, %b 1198 %cmp1 = fcmp ogt double %a, %b 1199 %retval = select i1 %cmp, i1 %cmp1, i1 false 1200 ret i1 %retval 1201} 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, %b 1209 %cmp1 = fcmp fast ogt double %a, %b 1210 %retval = select i1 %cmp, i1 %cmp1, i1 false 1211 ret i1 %retval 1212} 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, %b 1220 %cmp1 = fcmp oge double %a, %b 1221 %retval = and i1 %cmp, %cmp1 1222 ret i1 %retval 1223} 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, %b 1231 %cmp1 = fcmp oge double %a, %b 1232 %retval = select i1 %cmp, i1 %cmp1, i1 false 1233 ret i1 %retval 1234} 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, %b 1242 %cmp1 = fcmp fast oge double %a, %b 1243 %retval = select i1 %cmp, i1 %cmp1, i1 false 1244 ret i1 %retval 1245} 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, %b 1253 %cmp1 = fcmp olt double %a, %b 1254 %retval = and i1 %cmp, %cmp1 1255 ret i1 %retval 1256} 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, %b 1264 %cmp1 = fcmp olt double %a, %b 1265 %retval = select i1 %cmp, i1 %cmp1, i1 false 1266 ret i1 %retval 1267} 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, %b 1275 %cmp1 = fcmp fast olt double %a, %b 1276 %retval = select i1 %cmp, i1 %cmp1, i1 false 1277 ret i1 %retval 1278} 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, %b 1286 %cmp1 = fcmp ole double %a, %b 1287 %retval = and i1 %cmp, %cmp1 1288 ret i1 %retval 1289} 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, %b 1297 %cmp1 = fcmp ole double %a, %b 1298 %retval = select i1 %cmp, i1 %cmp1, i1 false 1299 ret i1 %retval 1300} 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, %b 1308 %cmp1 = fcmp fast ole double %a, %b 1309 %retval = select i1 %cmp, i1 %cmp1, i1 false 1310 ret i1 %retval 1311} 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, %b 1319 %cmp1 = fcmp one double %a, %b 1320 %retval = and i1 %cmp, %cmp1 1321 ret i1 %retval 1322} 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, %b 1330 %cmp1 = fcmp one double %a, %b 1331 %retval = select i1 %cmp, i1 %cmp1, i1 false 1332 ret i1 %retval 1333} 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, %b 1341 %cmp1 = fcmp fast one double %a, %b 1342 %retval = select i1 %cmp, i1 %cmp1, i1 false 1343 ret i1 %retval 1344} 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, %b 1352 %cmp1 = fcmp ord double %a, %b 1353 %retval = and i1 %cmp, %cmp1 1354 ret i1 %retval 1355} 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, %b 1363 %cmp1 = fcmp ord double %a, %b 1364 %retval = select i1 %cmp, i1 %cmp1, i1 false 1365 ret i1 %retval 1366} 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 true 1371; 1372 %cmp = fcmp fast ord double %a, %b 1373 %cmp1 = fcmp fast ord double %a, %b 1374 %retval = select i1 %cmp, i1 %cmp1, i1 false 1375 ret i1 %retval 1376} 1377 1378define i1 @auto_gen_36(double %a, double %b) { 1379; CHECK-LABEL: @auto_gen_36( 1380; CHECK-NEXT: ret i1 false 1381; 1382 %cmp = fcmp ueq double %a, %b 1383 %cmp1 = fcmp false double %a, %b 1384 %retval = and i1 %cmp, %cmp1 1385 ret i1 %retval 1386} 1387 1388define i1 @auto_gen_36_logical(double %a, double %b) { 1389; CHECK-LABEL: @auto_gen_36_logical( 1390; CHECK-NEXT: ret i1 false 1391; 1392 %cmp = fcmp ueq double %a, %b 1393 %cmp1 = fcmp false double %a, %b 1394 %retval = select i1 %cmp, i1 %cmp1, i1 false 1395 ret i1 %retval 1396} 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 false 1401; 1402 %cmp = fcmp ueq double %a, %b 1403 %cmp1 = fcmp fast false double %a, %b 1404 %retval = select i1 %cmp, i1 %cmp1, i1 false 1405 ret i1 %retval 1406} 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, %b 1414 %cmp1 = fcmp oeq double %a, %b 1415 %retval = and i1 %cmp, %cmp1 1416 ret i1 %retval 1417} 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, %b 1425 %cmp1 = fcmp oeq double %a, %b 1426 %retval = select i1 %cmp, i1 %cmp1, i1 false 1427 ret i1 %retval 1428} 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, %b 1436 %cmp1 = fcmp fast oeq double %a, %b 1437 %retval = select i1 %cmp, i1 %cmp1, i1 false 1438 ret i1 %retval 1439} 1440 1441define i1 @auto_gen_38(double %a, double %b) { 1442; CHECK-LABEL: @auto_gen_38( 1443; CHECK-NEXT: ret i1 false 1444; 1445 %cmp = fcmp ueq double %a, %b 1446 %cmp1 = fcmp ogt double %a, %b 1447 %retval = and i1 %cmp, %cmp1 1448 ret i1 %retval 1449} 1450 1451define i1 @auto_gen_38_logical(double %a, double %b) { 1452; CHECK-LABEL: @auto_gen_38_logical( 1453; CHECK-NEXT: ret i1 false 1454; 1455 %cmp = fcmp ueq double %a, %b 1456 %cmp1 = fcmp ogt double %a, %b 1457 %retval = select i1 %cmp, i1 %cmp1, i1 false 1458 ret i1 %retval 1459} 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 false 1464; 1465 %cmp = fcmp ueq double %a, %b 1466 %cmp1 = fcmp fast ogt double %a, %b 1467 %retval = select i1 %cmp, i1 %cmp1, i1 false 1468 ret i1 %retval 1469} 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, %b 1477 %cmp1 = fcmp oge double %a, %b 1478 %retval = and i1 %cmp, %cmp1 1479 ret i1 %retval 1480} 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, %b 1488 %cmp1 = fcmp oge double %a, %b 1489 %retval = select i1 %cmp, i1 %cmp1, i1 false 1490 ret i1 %retval 1491} 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, %b 1499 %cmp1 = fcmp fast oge double %a, %b 1500 %retval = select i1 %cmp, i1 %cmp1, i1 false 1501 ret i1 %retval 1502} 1503 1504define i1 @auto_gen_40(double %a, double %b) { 1505; CHECK-LABEL: @auto_gen_40( 1506; CHECK-NEXT: ret i1 false 1507; 1508 %cmp = fcmp ueq double %a, %b 1509 %cmp1 = fcmp olt double %a, %b 1510 %retval = and i1 %cmp, %cmp1 1511 ret i1 %retval 1512} 1513 1514define i1 @auto_gen_40_logical(double %a, double %b) { 1515; CHECK-LABEL: @auto_gen_40_logical( 1516; CHECK-NEXT: ret i1 false 1517; 1518 %cmp = fcmp ueq double %a, %b 1519 %cmp1 = fcmp olt double %a, %b 1520 %retval = select i1 %cmp, i1 %cmp1, i1 false 1521 ret i1 %retval 1522} 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 false 1527; 1528 %cmp = fcmp ueq double %a, %b 1529 %cmp1 = fcmp fast olt double %a, %b 1530 %retval = select i1 %cmp, i1 %cmp1, i1 false 1531 ret i1 %retval 1532} 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, %b 1540 %cmp1 = fcmp ole double %a, %b 1541 %retval = and i1 %cmp, %cmp1 1542 ret i1 %retval 1543} 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, %b 1551 %cmp1 = fcmp ole double %a, %b 1552 %retval = select i1 %cmp, i1 %cmp1, i1 false 1553 ret i1 %retval 1554} 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, %b 1562 %cmp1 = fcmp fast ole double %a, %b 1563 %retval = select i1 %cmp, i1 %cmp1, i1 false 1564 ret i1 %retval 1565} 1566 1567define i1 @auto_gen_42(double %a, double %b) { 1568; CHECK-LABEL: @auto_gen_42( 1569; CHECK-NEXT: ret i1 false 1570; 1571 %cmp = fcmp ueq double %a, %b 1572 %cmp1 = fcmp one double %a, %b 1573 %retval = and i1 %cmp, %cmp1 1574 ret i1 %retval 1575} 1576 1577define i1 @auto_gen_42_logical(double %a, double %b) { 1578; CHECK-LABEL: @auto_gen_42_logical( 1579; CHECK-NEXT: ret i1 false 1580; 1581 %cmp = fcmp ueq double %a, %b 1582 %cmp1 = fcmp one double %a, %b 1583 %retval = select i1 %cmp, i1 %cmp1, i1 false 1584 ret i1 %retval 1585} 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 false 1590; 1591 %cmp = fcmp ueq double %a, %b 1592 %cmp1 = fcmp fast one double %a, %b 1593 %retval = select i1 %cmp, i1 %cmp1, i1 false 1594 ret i1 %retval 1595} 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, %b 1603 %cmp1 = fcmp ord double %a, %b 1604 %retval = and i1 %cmp, %cmp1 1605 ret i1 %retval 1606} 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, %b 1614 %cmp1 = fcmp ord double %a, %b 1615 %retval = select i1 %cmp, i1 %cmp1, i1 false 1616 ret i1 %retval 1617} 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, %b 1625 %cmp1 = fcmp fast ord double %a, %b 1626 %retval = select i1 %cmp, i1 %cmp1, i1 false 1627 ret i1 %retval 1628} 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, %b 1636 %cmp1 = fcmp ueq double %a, %b 1637 %retval = and i1 %cmp, %cmp1 1638 ret i1 %retval 1639} 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, %b 1647 %cmp1 = fcmp ueq double %a, %b 1648 %retval = select i1 %cmp, i1 %cmp1, i1 false 1649 ret i1 %retval 1650} 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, %b 1658 %cmp1 = fcmp fast ueq double %a, %b 1659 %retval = select i1 %cmp, i1 %cmp1, i1 false 1660 ret i1 %retval 1661} 1662 1663define i1 @auto_gen_45(double %a, double %b) { 1664; CHECK-LABEL: @auto_gen_45( 1665; CHECK-NEXT: ret i1 false 1666; 1667 %cmp = fcmp ugt double %a, %b 1668 %cmp1 = fcmp false double %a, %b 1669 %retval = and i1 %cmp, %cmp1 1670 ret i1 %retval 1671} 1672 1673define i1 @auto_gen_45_logical(double %a, double %b) { 1674; CHECK-LABEL: @auto_gen_45_logical( 1675; CHECK-NEXT: ret i1 false 1676; 1677 %cmp = fcmp ugt double %a, %b 1678 %cmp1 = fcmp false double %a, %b 1679 %retval = select i1 %cmp, i1 %cmp1, i1 false 1680 ret i1 %retval 1681} 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 false 1686; 1687 %cmp = fcmp fast ugt double %a, %b 1688 %cmp1 = fcmp fast false double %a, %b 1689 %retval = select i1 %cmp, i1 %cmp1, i1 false 1690 ret i1 %retval 1691} 1692 1693define i1 @auto_gen_46(double %a, double %b) { 1694; CHECK-LABEL: @auto_gen_46( 1695; CHECK-NEXT: ret i1 false 1696; 1697 %cmp = fcmp ugt double %a, %b 1698 %cmp1 = fcmp oeq double %a, %b 1699 %retval = and i1 %cmp, %cmp1 1700 ret i1 %retval 1701} 1702 1703define i1 @auto_gen_46_logical(double %a, double %b) { 1704; CHECK-LABEL: @auto_gen_46_logical( 1705; CHECK-NEXT: ret i1 false 1706; 1707 %cmp = fcmp ugt double %a, %b 1708 %cmp1 = fcmp oeq double %a, %b 1709 %retval = select i1 %cmp, i1 %cmp1, i1 false 1710 ret i1 %retval 1711} 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 false 1716; 1717 %cmp = fcmp ugt double %a, %b 1718 %cmp1 = fcmp fast oeq double %a, %b 1719 %retval = select i1 %cmp, i1 %cmp1, i1 false 1720 ret i1 %retval 1721} 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, %b 1729 %cmp1 = fcmp ogt double %a, %b 1730 %retval = and i1 %cmp, %cmp1 1731 ret i1 %retval 1732} 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, %b 1740 %cmp1 = fcmp ogt double %a, %b 1741 %retval = select i1 %cmp, i1 %cmp1, i1 false 1742 ret i1 %retval 1743} 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, %b 1751 %cmp1 = fcmp fast ogt double %a, %b 1752 %retval = select i1 %cmp, i1 %cmp1, i1 false 1753 ret i1 %retval 1754} 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, %b 1762 %cmp1 = fcmp oge double %a, %b 1763 %retval = and i1 %cmp, %cmp1 1764 ret i1 %retval 1765} 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, %b 1773 %cmp1 = fcmp oge double %a, %b 1774 %retval = select i1 %cmp, i1 %cmp1, i1 false 1775 ret i1 %retval 1776} 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, %b 1784 %cmp1 = fcmp fast oge double %a, %b 1785 %retval = select i1 %cmp, i1 %cmp1, i1 false 1786 ret i1 %retval 1787} 1788 1789define i1 @auto_gen_49(double %a, double %b) { 1790; CHECK-LABEL: @auto_gen_49( 1791; CHECK-NEXT: ret i1 false 1792; 1793 %cmp = fcmp ugt double %a, %b 1794 %cmp1 = fcmp olt double %a, %b 1795 %retval = and i1 %cmp, %cmp1 1796 ret i1 %retval 1797} 1798 1799define i1 @auto_gen_49_logical(double %a, double %b) { 1800; CHECK-LABEL: @auto_gen_49_logical( 1801; CHECK-NEXT: ret i1 false 1802; 1803 %cmp = fcmp ugt double %a, %b 1804 %cmp1 = fcmp olt double %a, %b 1805 %retval = select i1 %cmp, i1 %cmp1, i1 false 1806 ret i1 %retval 1807} 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 false 1812; 1813 %cmp = fcmp fast ugt double %a, %b 1814 %cmp1 = fcmp fast olt double %a, %b 1815 %retval = select i1 %cmp, i1 %cmp1, i1 false 1816 ret i1 %retval 1817} 1818 1819define i1 @auto_gen_50(double %a, double %b) { 1820; CHECK-LABEL: @auto_gen_50( 1821; CHECK-NEXT: ret i1 false 1822; 1823 %cmp = fcmp ugt double %a, %b 1824 %cmp1 = fcmp ole double %a, %b 1825 %retval = and i1 %cmp, %cmp1 1826 ret i1 %retval 1827} 1828 1829define i1 @auto_gen_50_logical(double %a, double %b) { 1830; CHECK-LABEL: @auto_gen_50_logical( 1831; CHECK-NEXT: ret i1 false 1832; 1833 %cmp = fcmp ugt double %a, %b 1834 %cmp1 = fcmp ole double %a, %b 1835 %retval = select i1 %cmp, i1 %cmp1, i1 false 1836 ret i1 %retval 1837} 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 false 1842; 1843 %cmp = fcmp ugt double %a, %b 1844 %cmp1 = fcmp fast ole double %a, %b 1845 %retval = select i1 %cmp, i1 %cmp1, i1 false 1846 ret i1 %retval 1847} 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, %b 1855 %cmp1 = fcmp one double %a, %b 1856 %retval = and i1 %cmp, %cmp1 1857 ret i1 %retval 1858} 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, %b 1866 %cmp1 = fcmp one double %a, %b 1867 %retval = select i1 %cmp, i1 %cmp1, i1 false 1868 ret i1 %retval 1869} 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, %b 1877 %cmp1 = fcmp fast one double %a, %b 1878 %retval = select i1 %cmp, i1 %cmp1, i1 false 1879 ret i1 %retval 1880} 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, %b 1888 %cmp1 = fcmp ord double %a, %b 1889 %retval = and i1 %cmp, %cmp1 1890 ret i1 %retval 1891} 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, %b 1899 %cmp1 = fcmp ord double %a, %b 1900 %retval = select i1 %cmp, i1 %cmp1, i1 false 1901 ret i1 %retval 1902} 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, %b 1910 %cmp1 = fcmp fast ord double %a, %b 1911 %retval = select i1 %cmp, i1 %cmp1, i1 false 1912 ret i1 %retval 1913} 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, %b 1921 %cmp1 = fcmp ueq double %a, %b 1922 %retval = and i1 %cmp, %cmp1 1923 ret i1 %retval 1924} 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, %b 1932 %cmp1 = fcmp ueq double %a, %b 1933 %retval = select i1 %cmp, i1 %cmp1, i1 false 1934 ret i1 %retval 1935} 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 false 1940; 1941 %cmp = fcmp fast ugt double %a, %b 1942 %cmp1 = fcmp fast ueq double %a, %b 1943 %retval = select i1 %cmp, i1 %cmp1, i1 false 1944 ret i1 %retval 1945} 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, %b 1953 %cmp1 = fcmp ugt double %a, %b 1954 %retval = and i1 %cmp, %cmp1 1955 ret i1 %retval 1956} 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, %b 1964 %cmp1 = fcmp ugt double %a, %b 1965 %retval = select i1 %cmp, i1 %cmp1, i1 false 1966 ret i1 %retval 1967} 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, %b 1975 %cmp1 = fcmp fast ugt double %a, %b 1976 %retval = select i1 %cmp, i1 %cmp1, i1 false 1977 ret i1 %retval 1978} 1979 1980define i1 @auto_gen_55(double %a, double %b) { 1981; CHECK-LABEL: @auto_gen_55( 1982; CHECK-NEXT: ret i1 false 1983; 1984 %cmp = fcmp uge double %a, %b 1985 %cmp1 = fcmp false double %a, %b 1986 %retval = and i1 %cmp, %cmp1 1987 ret i1 %retval 1988} 1989 1990define i1 @auto_gen_55_logical(double %a, double %b) { 1991; CHECK-LABEL: @auto_gen_55_logical( 1992; CHECK-NEXT: ret i1 false 1993; 1994 %cmp = fcmp uge double %a, %b 1995 %cmp1 = fcmp false double %a, %b 1996 %retval = select i1 %cmp, i1 %cmp1, i1 false 1997 ret i1 %retval 1998} 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 false 2003; 2004 %cmp = fcmp fast uge double %a, %b 2005 %cmp1 = fcmp fast false double %a, %b 2006 %retval = select i1 %cmp, i1 %cmp1, i1 false 2007 ret i1 %retval 2008} 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, %b 2016 %cmp1 = fcmp oeq double %a, %b 2017 %retval = and i1 %cmp, %cmp1 2018 ret i1 %retval 2019} 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, %b 2027 %cmp1 = fcmp oeq double %a, %b 2028 %retval = select i1 %cmp, i1 %cmp1, i1 false 2029 ret i1 %retval 2030} 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, %b 2038 %cmp1 = fcmp fast oeq double %a, %b 2039 %retval = select i1 %cmp, i1 %cmp1, i1 false 2040 ret i1 %retval 2041} 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, %b 2049 %cmp1 = fcmp ogt double %a, %b 2050 %retval = and i1 %cmp, %cmp1 2051 ret i1 %retval 2052} 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, %b 2060 %cmp1 = fcmp ogt double %a, %b 2061 %retval = select i1 %cmp, i1 %cmp1, i1 false 2062 ret i1 %retval 2063} 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, %b 2071 %cmp1 = fcmp fast ogt double %a, %b 2072 %retval = select i1 %cmp, i1 %cmp1, i1 false 2073 ret i1 %retval 2074} 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, %b 2082 %cmp1 = fcmp oge double %a, %b 2083 %retval = and i1 %cmp, %cmp1 2084 ret i1 %retval 2085} 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, %b 2093 %cmp1 = fcmp oge double %a, %b 2094 %retval = select i1 %cmp, i1 %cmp1, i1 false 2095 ret i1 %retval 2096} 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, %b 2104 %cmp1 = fcmp fast oge double %a, %b 2105 %retval = select i1 %cmp, i1 %cmp1, i1 false 2106 ret i1 %retval 2107} 2108 2109define i1 @auto_gen_59(double %a, double %b) { 2110; CHECK-LABEL: @auto_gen_59( 2111; CHECK-NEXT: ret i1 false 2112; 2113 %cmp = fcmp uge double %a, %b 2114 %cmp1 = fcmp olt double %a, %b 2115 %retval = and i1 %cmp, %cmp1 2116 ret i1 %retval 2117} 2118 2119define i1 @auto_gen_59_logical(double %a, double %b) { 2120; CHECK-LABEL: @auto_gen_59_logical( 2121; CHECK-NEXT: ret i1 false 2122; 2123 %cmp = fcmp uge double %a, %b 2124 %cmp1 = fcmp olt double %a, %b 2125 %retval = select i1 %cmp, i1 %cmp1, i1 false 2126 ret i1 %retval 2127} 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 false 2132; 2133 %cmp = fcmp fast uge double %a, %b 2134 %cmp1 = fcmp fast olt double %a, %b 2135 %retval = select i1 %cmp, i1 %cmp1, i1 false 2136 ret i1 %retval 2137} 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, %b 2145 %cmp1 = fcmp ole double %a, %b 2146 %retval = and i1 %cmp, %cmp1 2147 ret i1 %retval 2148} 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, %b 2156 %cmp1 = fcmp ole double %a, %b 2157 %retval = select i1 %cmp, i1 %cmp1, i1 false 2158 ret i1 %retval 2159} 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, %b 2167 %cmp1 = fcmp fast ole double %a, %b 2168 %retval = select i1 %cmp, i1 %cmp1, i1 false 2169 ret i1 %retval 2170} 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, %b 2178 %cmp1 = fcmp one double %a, %b 2179 %retval = and i1 %cmp, %cmp1 2180 ret i1 %retval 2181} 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, %b 2189 %cmp1 = fcmp one double %a, %b 2190 %retval = select i1 %cmp, i1 %cmp1, i1 false 2191 ret i1 %retval 2192} 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, %b 2200 %cmp1 = fcmp fast one double %a, %b 2201 %retval = select i1 %cmp, i1 %cmp1, i1 false 2202 ret i1 %retval 2203} 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, %b 2211 %cmp1 = fcmp ord double %a, %b 2212 %retval = and i1 %cmp, %cmp1 2213 ret i1 %retval 2214} 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, %b 2222 %cmp1 = fcmp ord double %a, %b 2223 %retval = select i1 %cmp, i1 %cmp1, i1 false 2224 ret i1 %retval 2225} 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, %b 2233 %cmp1 = fcmp fast ord double %a, %b 2234 %retval = select i1 %cmp, i1 %cmp1, i1 false 2235 ret i1 %retval 2236} 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, %b 2244 %cmp1 = fcmp ueq double %a, %b 2245 %retval = and i1 %cmp, %cmp1 2246 ret i1 %retval 2247} 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, %b 2255 %cmp1 = fcmp ueq double %a, %b 2256 %retval = select i1 %cmp, i1 %cmp1, i1 false 2257 ret i1 %retval 2258} 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, %b 2266 %cmp1 = fcmp fast ueq double %a, %b 2267 %retval = select i1 %cmp, i1 %cmp1, i1 false 2268 ret i1 %retval 2269} 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, %b 2277 %cmp1 = fcmp ugt double %a, %b 2278 %retval = and i1 %cmp, %cmp1 2279 ret i1 %retval 2280} 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, %b 2288 %cmp1 = fcmp ugt double %a, %b 2289 %retval = select i1 %cmp, i1 %cmp1, i1 false 2290 ret i1 %retval 2291} 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, %b 2299 %cmp1 = fcmp fast ugt double %a, %b 2300 %retval = select i1 %cmp, i1 %cmp1, i1 false 2301 ret i1 %retval 2302} 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, %b 2310 %cmp1 = fcmp uge double %a, %b 2311 %retval = and i1 %cmp, %cmp1 2312 ret i1 %retval 2313} 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, %b 2321 %cmp1 = fcmp uge double %a, %b 2322 %retval = select i1 %cmp, i1 %cmp1, i1 false 2323 ret i1 %retval 2324} 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, %b 2332 %cmp1 = fcmp fast uge double %a, %b 2333 %retval = select i1 %cmp, i1 %cmp1, i1 false 2334 ret i1 %retval 2335} 2336 2337define i1 @auto_gen_66(double %a, double %b) { 2338; CHECK-LABEL: @auto_gen_66( 2339; CHECK-NEXT: ret i1 false 2340; 2341 %cmp = fcmp ult double %a, %b 2342 %cmp1 = fcmp false double %a, %b 2343 %retval = and i1 %cmp, %cmp1 2344 ret i1 %retval 2345} 2346 2347define i1 @auto_gen_66_logical(double %a, double %b) { 2348; CHECK-LABEL: @auto_gen_66_logical( 2349; CHECK-NEXT: ret i1 false 2350; 2351 %cmp = fcmp ult double %a, %b 2352 %cmp1 = fcmp false double %a, %b 2353 %retval = select i1 %cmp, i1 %cmp1, i1 false 2354 ret i1 %retval 2355} 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 false 2360; 2361 %cmp = fcmp ult double %a, %b 2362 %cmp1 = fcmp fast false double %a, %b 2363 %retval = select i1 %cmp, i1 %cmp1, i1 false 2364 ret i1 %retval 2365} 2366 2367define i1 @auto_gen_67(double %a, double %b) { 2368; CHECK-LABEL: @auto_gen_67( 2369; CHECK-NEXT: ret i1 false 2370; 2371 %cmp = fcmp ult double %a, %b 2372 %cmp1 = fcmp oeq double %a, %b 2373 %retval = and i1 %cmp, %cmp1 2374 ret i1 %retval 2375} 2376 2377define i1 @auto_gen_67_logical(double %a, double %b) { 2378; CHECK-LABEL: @auto_gen_67_logical( 2379; CHECK-NEXT: ret i1 false 2380; 2381 %cmp = fcmp ult double %a, %b 2382 %cmp1 = fcmp oeq double %a, %b 2383 %retval = select i1 %cmp, i1 %cmp1, i1 false 2384 ret i1 %retval 2385} 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 false 2390; 2391 %cmp = fcmp fast ult double %a, %b 2392 %cmp1 = fcmp fast oeq double %a, %b 2393 %retval = select i1 %cmp, i1 %cmp1, i1 false 2394 ret i1 %retval 2395} 2396 2397define i1 @auto_gen_68(double %a, double %b) { 2398; CHECK-LABEL: @auto_gen_68( 2399; CHECK-NEXT: ret i1 false 2400; 2401 %cmp = fcmp ult double %a, %b 2402 %cmp1 = fcmp ogt double %a, %b 2403 %retval = and i1 %cmp, %cmp1 2404 ret i1 %retval 2405} 2406 2407define i1 @auto_gen_68_logical(double %a, double %b) { 2408; CHECK-LABEL: @auto_gen_68_logical( 2409; CHECK-NEXT: ret i1 false 2410; 2411 %cmp = fcmp ult double %a, %b 2412 %cmp1 = fcmp ogt double %a, %b 2413 %retval = select i1 %cmp, i1 %cmp1, i1 false 2414 ret i1 %retval 2415} 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 false 2420; 2421 %cmp = fcmp ult double %a, %b 2422 %cmp1 = fcmp fast ogt double %a, %b 2423 %retval = select i1 %cmp, i1 %cmp1, i1 false 2424 ret i1 %retval 2425} 2426 2427define i1 @auto_gen_69(double %a, double %b) { 2428; CHECK-LABEL: @auto_gen_69( 2429; CHECK-NEXT: ret i1 false 2430; 2431 %cmp = fcmp ult double %a, %b 2432 %cmp1 = fcmp oge double %a, %b 2433 %retval = and i1 %cmp, %cmp1 2434 ret i1 %retval 2435} 2436 2437define i1 @auto_gen_69_logical(double %a, double %b) { 2438; CHECK-LABEL: @auto_gen_69_logical( 2439; CHECK-NEXT: ret i1 false 2440; 2441 %cmp = fcmp ult double %a, %b 2442 %cmp1 = fcmp oge double %a, %b 2443 %retval = select i1 %cmp, i1 %cmp1, i1 false 2444 ret i1 %retval 2445} 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 false 2450; 2451 %cmp = fcmp fast ult double %a, %b 2452 %cmp1 = fcmp fast oge double %a, %b 2453 %retval = select i1 %cmp, i1 %cmp1, i1 false 2454 ret i1 %retval 2455} 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, %b 2463 %cmp1 = fcmp olt double %a, %b 2464 %retval = and i1 %cmp, %cmp1 2465 ret i1 %retval 2466} 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, %b 2474 %cmp1 = fcmp olt double %a, %b 2475 %retval = select i1 %cmp, i1 %cmp1, i1 false 2476 ret i1 %retval 2477} 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, %b 2485 %cmp1 = fcmp fast olt double %a, %b 2486 %retval = select i1 %cmp, i1 %cmp1, i1 false 2487 ret i1 %retval 2488} 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, %b 2496 %cmp1 = fcmp ole double %a, %b 2497 %retval = and i1 %cmp, %cmp1 2498 ret i1 %retval 2499} 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, %b 2507 %cmp1 = fcmp ole double %a, %b 2508 %retval = select i1 %cmp, i1 %cmp1, i1 false 2509 ret i1 %retval 2510} 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, %b 2518 %cmp1 = fcmp fast ole double %a, %b 2519 %retval = select i1 %cmp, i1 %cmp1, i1 false 2520 ret i1 %retval 2521} 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, %b 2529 %cmp1 = fcmp one double %a, %b 2530 %retval = and i1 %cmp, %cmp1 2531 ret i1 %retval 2532} 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, %b 2540 %cmp1 = fcmp one double %a, %b 2541 %retval = select i1 %cmp, i1 %cmp1, i1 false 2542 ret i1 %retval 2543} 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, %b 2551 %cmp1 = fcmp fast one double %a, %b 2552 %retval = select i1 %cmp, i1 %cmp1, i1 false 2553 ret i1 %retval 2554} 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, %b 2562 %cmp1 = fcmp ord double %a, %b 2563 %retval = and i1 %cmp, %cmp1 2564 ret i1 %retval 2565} 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, %b 2573 %cmp1 = fcmp ord double %a, %b 2574 %retval = select i1 %cmp, i1 %cmp1, i1 false 2575 ret i1 %retval 2576} 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, %b 2584 %cmp1 = fcmp fast ord double %a, %b 2585 %retval = select i1 %cmp, i1 %cmp1, i1 false 2586 ret i1 %retval 2587} 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, %b 2595 %cmp1 = fcmp ueq double %a, %b 2596 %retval = and i1 %cmp, %cmp1 2597 ret i1 %retval 2598} 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, %b 2606 %cmp1 = fcmp ueq double %a, %b 2607 %retval = select i1 %cmp, i1 %cmp1, i1 false 2608 ret i1 %retval 2609} 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, %b 2617 %cmp1 = fcmp fast ueq double %a, %b 2618 %retval = select i1 %cmp, i1 %cmp1, i1 false 2619 ret i1 %retval 2620} 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, %b 2628 %cmp1 = fcmp ugt double %a, %b 2629 %retval = and i1 %cmp, %cmp1 2630 ret i1 %retval 2631} 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, %b 2639 %cmp1 = fcmp ugt double %a, %b 2640 %retval = select i1 %cmp, i1 %cmp1, i1 false 2641 ret i1 %retval 2642} 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 false 2647; 2648 %cmp = fcmp fast ult double %a, %b 2649 %cmp1 = fcmp fast ugt double %a, %b 2650 %retval = select i1 %cmp, i1 %cmp1, i1 false 2651 ret i1 %retval 2652} 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, %b 2660 %cmp1 = fcmp uge double %a, %b 2661 %retval = and i1 %cmp, %cmp1 2662 ret i1 %retval 2663} 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, %b 2671 %cmp1 = fcmp uge double %a, %b 2672 %retval = select i1 %cmp, i1 %cmp1, i1 false 2673 ret i1 %retval 2674} 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, %b 2682 %cmp1 = fcmp fast uge double %a, %b 2683 %retval = select i1 %cmp, i1 %cmp1, i1 false 2684 ret i1 %retval 2685} 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, %b 2693 %cmp1 = fcmp ult double %a, %b 2694 %retval = and i1 %cmp, %cmp1 2695 ret i1 %retval 2696} 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, %b 2704 %cmp1 = fcmp ult double %a, %b 2705 %retval = select i1 %cmp, i1 %cmp1, i1 false 2706 ret i1 %retval 2707} 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, %b 2715 %cmp1 = fcmp fast ult double %a, %b 2716 %retval = select i1 %cmp, i1 %cmp1, i1 false 2717 ret i1 %retval 2718} 2719 2720define i1 @auto_gen_78(double %a, double %b) { 2721; CHECK-LABEL: @auto_gen_78( 2722; CHECK-NEXT: ret i1 false 2723; 2724 %cmp = fcmp ule double %a, %b 2725 %cmp1 = fcmp false double %a, %b 2726 %retval = and i1 %cmp, %cmp1 2727 ret i1 %retval 2728} 2729 2730define i1 @auto_gen_78_logical(double %a, double %b) { 2731; CHECK-LABEL: @auto_gen_78_logical( 2732; CHECK-NEXT: ret i1 false 2733; 2734 %cmp = fcmp ule double %a, %b 2735 %cmp1 = fcmp false double %a, %b 2736 %retval = select i1 %cmp, i1 %cmp1, i1 false 2737 ret i1 %retval 2738} 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 false 2743; 2744 %cmp = fcmp ule double %a, %b 2745 %cmp1 = fcmp fast false double %a, %b 2746 %retval = select i1 %cmp, i1 %cmp1, i1 false 2747 ret i1 %retval 2748} 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, %b 2756 %cmp1 = fcmp oeq double %a, %b 2757 %retval = and i1 %cmp, %cmp1 2758 ret i1 %retval 2759} 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, %b 2767 %cmp1 = fcmp oeq double %a, %b 2768 %retval = select i1 %cmp, i1 %cmp1, i1 false 2769 ret i1 %retval 2770} 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, %b 2778 %cmp1 = fcmp fast oeq double %a, %b 2779 %retval = select i1 %cmp, i1 %cmp1, i1 false 2780 ret i1 %retval 2781} 2782 2783define i1 @auto_gen_80(double %a, double %b) { 2784; CHECK-LABEL: @auto_gen_80( 2785; CHECK-NEXT: ret i1 false 2786; 2787 %cmp = fcmp ule double %a, %b 2788 %cmp1 = fcmp ogt double %a, %b 2789 %retval = and i1 %cmp, %cmp1 2790 ret i1 %retval 2791} 2792 2793define i1 @auto_gen_80_logical(double %a, double %b) { 2794; CHECK-LABEL: @auto_gen_80_logical( 2795; CHECK-NEXT: ret i1 false 2796; 2797 %cmp = fcmp ule double %a, %b 2798 %cmp1 = fcmp ogt double %a, %b 2799 %retval = select i1 %cmp, i1 %cmp1, i1 false 2800 ret i1 %retval 2801} 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 false 2806; 2807 %cmp = fcmp ule double %a, %b 2808 %cmp1 = fcmp fast ogt double %a, %b 2809 %retval = select i1 %cmp, i1 %cmp1, i1 false 2810 ret i1 %retval 2811} 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, %b 2819 %cmp1 = fcmp oge double %a, %b 2820 %retval = and i1 %cmp, %cmp1 2821 ret i1 %retval 2822} 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, %b 2830 %cmp1 = fcmp oge double %a, %b 2831 %retval = select i1 %cmp, i1 %cmp1, i1 false 2832 ret i1 %retval 2833} 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, %b 2841 %cmp1 = fcmp fast oge double %a, %b 2842 %retval = select i1 %cmp, i1 %cmp1, i1 false 2843 ret i1 %retval 2844} 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, %b 2852 %cmp1 = fcmp olt double %a, %b 2853 %retval = and i1 %cmp, %cmp1 2854 ret i1 %retval 2855} 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, %b 2863 %cmp1 = fcmp olt double %a, %b 2864 %retval = select i1 %cmp, i1 %cmp1, i1 false 2865 ret i1 %retval 2866} 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, %b 2874 %cmp1 = fcmp fast olt double %a, %b 2875 %retval = select i1 %cmp, i1 %cmp1, i1 false 2876 ret i1 %retval 2877} 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, %b 2885 %cmp1 = fcmp ole double %a, %b 2886 %retval = and i1 %cmp, %cmp1 2887 ret i1 %retval 2888} 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, %b 2896 %cmp1 = fcmp ole double %a, %b 2897 %retval = select i1 %cmp, i1 %cmp1, i1 false 2898 ret i1 %retval 2899} 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, %b 2907 %cmp1 = fcmp fast ole double %a, %b 2908 %retval = select i1 %cmp, i1 %cmp1, i1 false 2909 ret i1 %retval 2910} 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, %b 2918 %cmp1 = fcmp one double %a, %b 2919 %retval = and i1 %cmp, %cmp1 2920 ret i1 %retval 2921} 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, %b 2929 %cmp1 = fcmp one double %a, %b 2930 %retval = select i1 %cmp, i1 %cmp1, i1 false 2931 ret i1 %retval 2932} 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, %b 2940 %cmp1 = fcmp fast one double %a, %b 2941 %retval = select i1 %cmp, i1 %cmp1, i1 false 2942 ret i1 %retval 2943} 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, %b 2951 %cmp1 = fcmp ord double %a, %b 2952 %retval = and i1 %cmp, %cmp1 2953 ret i1 %retval 2954} 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, %b 2962 %cmp1 = fcmp ord double %a, %b 2963 %retval = select i1 %cmp, i1 %cmp1, i1 false 2964 ret i1 %retval 2965} 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, %b 2973 %cmp1 = fcmp fast ord double %a, %b 2974 %retval = select i1 %cmp, i1 %cmp1, i1 false 2975 ret i1 %retval 2976} 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, %b 2984 %cmp1 = fcmp ueq double %a, %b 2985 %retval = and i1 %cmp, %cmp1 2986 ret i1 %retval 2987} 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, %b 2995 %cmp1 = fcmp ueq double %a, %b 2996 %retval = select i1 %cmp, i1 %cmp1, i1 false 2997 ret i1 %retval 2998} 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, %b 3006 %cmp1 = fcmp fast ueq double %a, %b 3007 %retval = select i1 %cmp, i1 %cmp1, i1 false 3008 ret i1 %retval 3009} 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, %b 3017 %cmp1 = fcmp ugt double %a, %b 3018 %retval = and i1 %cmp, %cmp1 3019 ret i1 %retval 3020} 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, %b 3028 %cmp1 = fcmp ugt double %a, %b 3029 %retval = select i1 %cmp, i1 %cmp1, i1 false 3030 ret i1 %retval 3031} 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 false 3036; 3037 %cmp = fcmp fast ule double %a, %b 3038 %cmp1 = fcmp fast ugt double %a, %b 3039 %retval = select i1 %cmp, i1 %cmp1, i1 false 3040 ret i1 %retval 3041} 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, %b 3049 %cmp1 = fcmp uge double %a, %b 3050 %retval = and i1 %cmp, %cmp1 3051 ret i1 %retval 3052} 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, %b 3060 %cmp1 = fcmp uge double %a, %b 3061 %retval = select i1 %cmp, i1 %cmp1, i1 false 3062 ret i1 %retval 3063} 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, %b 3071 %cmp1 = fcmp fast uge double %a, %b 3072 %retval = select i1 %cmp, i1 %cmp1, i1 false 3073 ret i1 %retval 3074} 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, %b 3082 %cmp1 = fcmp ult double %a, %b 3083 %retval = and i1 %cmp, %cmp1 3084 ret i1 %retval 3085} 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, %b 3093 %cmp1 = fcmp ult double %a, %b 3094 %retval = select i1 %cmp, i1 %cmp1, i1 false 3095 ret i1 %retval 3096} 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, %b 3104 %cmp1 = fcmp fast ult double %a, %b 3105 %retval = select i1 %cmp, i1 %cmp1, i1 false 3106 ret i1 %retval 3107} 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, %b 3115 %cmp1 = fcmp ule double %a, %b 3116 %retval = and i1 %cmp, %cmp1 3117 ret i1 %retval 3118} 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, %b 3126 %cmp1 = fcmp ule double %a, %b 3127 %retval = select i1 %cmp, i1 %cmp1, i1 false 3128 ret i1 %retval 3129} 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, %b 3137 %cmp1 = fcmp fast ule double %a, %b 3138 %retval = select i1 %cmp, i1 %cmp1, i1 false 3139 ret i1 %retval 3140} 3141 3142define i1 @auto_gen_91(double %a, double %b) { 3143; CHECK-LABEL: @auto_gen_91( 3144; CHECK-NEXT: ret i1 false 3145; 3146 %cmp = fcmp une double %a, %b 3147 %cmp1 = fcmp false double %a, %b 3148 %retval = and i1 %cmp, %cmp1 3149 ret i1 %retval 3150} 3151 3152define i1 @auto_gen_91_logical(double %a, double %b) { 3153; CHECK-LABEL: @auto_gen_91_logical( 3154; CHECK-NEXT: ret i1 false 3155; 3156 %cmp = fcmp une double %a, %b 3157 %cmp1 = fcmp false double %a, %b 3158 %retval = select i1 %cmp, i1 %cmp1, i1 false 3159 ret i1 %retval 3160} 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 false 3165; 3166 %cmp = fcmp fast une double %a, %b 3167 %cmp1 = fcmp fast false double %a, %b 3168 %retval = select i1 %cmp, i1 %cmp1, i1 false 3169 ret i1 %retval 3170} 3171 3172define i1 @auto_gen_92(double %a, double %b) { 3173; CHECK-LABEL: @auto_gen_92( 3174; CHECK-NEXT: ret i1 false 3175; 3176 %cmp = fcmp une double %a, %b 3177 %cmp1 = fcmp oeq double %a, %b 3178 %retval = and i1 %cmp, %cmp1 3179 ret i1 %retval 3180} 3181 3182define i1 @auto_gen_92_logical(double %a, double %b) { 3183; CHECK-LABEL: @auto_gen_92_logical( 3184; CHECK-NEXT: ret i1 false 3185; 3186 %cmp = fcmp une double %a, %b 3187 %cmp1 = fcmp oeq double %a, %b 3188 %retval = select i1 %cmp, i1 %cmp1, i1 false 3189 ret i1 %retval 3190} 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 false 3195; 3196 %cmp = fcmp une double %a, %b 3197 %cmp1 = fcmp fast oeq double %a, %b 3198 %retval = select i1 %cmp, i1 %cmp1, i1 false 3199 ret i1 %retval 3200} 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, %b 3208 %cmp1 = fcmp ogt double %a, %b 3209 %retval = and i1 %cmp, %cmp1 3210 ret i1 %retval 3211} 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, %b 3219 %cmp1 = fcmp ogt double %a, %b 3220 %retval = select i1 %cmp, i1 %cmp1, i1 false 3221 ret i1 %retval 3222} 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, %b 3230 %cmp1 = fcmp fast ogt double %a, %b 3231 %retval = select i1 %cmp, i1 %cmp1, i1 false 3232 ret i1 %retval 3233} 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, %b 3241 %cmp1 = fcmp oge double %a, %b 3242 %retval = and i1 %cmp, %cmp1 3243 ret i1 %retval 3244} 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, %b 3252 %cmp1 = fcmp oge double %a, %b 3253 %retval = select i1 %cmp, i1 %cmp1, i1 false 3254 ret i1 %retval 3255} 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, %b 3263 %cmp1 = fcmp fast oge double %a, %b 3264 %retval = select i1 %cmp, i1 %cmp1, i1 false 3265 ret i1 %retval 3266} 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, %b 3274 %cmp1 = fcmp olt double %a, %b 3275 %retval = and i1 %cmp, %cmp1 3276 ret i1 %retval 3277} 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, %b 3285 %cmp1 = fcmp olt double %a, %b 3286 %retval = select i1 %cmp, i1 %cmp1, i1 false 3287 ret i1 %retval 3288} 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, %b 3296 %cmp1 = fcmp fast olt double %a, %b 3297 %retval = select i1 %cmp, i1 %cmp1, i1 false 3298 ret i1 %retval 3299} 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, %b 3307 %cmp1 = fcmp ole double %a, %b 3308 %retval = and i1 %cmp, %cmp1 3309 ret i1 %retval 3310} 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, %b 3318 %cmp1 = fcmp ole double %a, %b 3319 %retval = select i1 %cmp, i1 %cmp1, i1 false 3320 ret i1 %retval 3321} 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, %b 3329 %cmp1 = fcmp fast ole double %a, %b 3330 %retval = select i1 %cmp, i1 %cmp1, i1 false 3331 ret i1 %retval 3332} 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, %b 3340 %cmp1 = fcmp one double %a, %b 3341 %retval = and i1 %cmp, %cmp1 3342 ret i1 %retval 3343} 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, %b 3351 %cmp1 = fcmp one double %a, %b 3352 %retval = select i1 %cmp, i1 %cmp1, i1 false 3353 ret i1 %retval 3354} 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, %b 3362 %cmp1 = fcmp fast one double %a, %b 3363 %retval = select i1 %cmp, i1 %cmp1, i1 false 3364 ret i1 %retval 3365} 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, %b 3373 %cmp1 = fcmp ord double %a, %b 3374 %retval = and i1 %cmp, %cmp1 3375 ret i1 %retval 3376} 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, %b 3384 %cmp1 = fcmp ord double %a, %b 3385 %retval = select i1 %cmp, i1 %cmp1, i1 false 3386 ret i1 %retval 3387} 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, %b 3395 %cmp1 = fcmp fast ord double %a, %b 3396 %retval = select i1 %cmp, i1 %cmp1, i1 false 3397 ret i1 %retval 3398} 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, %b 3406 %cmp1 = fcmp ueq double %a, %b 3407 %retval = and i1 %cmp, %cmp1 3408 ret i1 %retval 3409} 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, %b 3417 %cmp1 = fcmp ueq double %a, %b 3418 %retval = select i1 %cmp, i1 %cmp1, i1 false 3419 ret i1 %retval 3420} 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 false 3425; 3426 %cmp = fcmp fast une double %a, %b 3427 %cmp1 = fcmp fast ueq double %a, %b 3428 %retval = select i1 %cmp, i1 %cmp1, i1 false 3429 ret i1 %retval 3430} 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, %b 3438 %cmp1 = fcmp ugt double %a, %b 3439 %retval = and i1 %cmp, %cmp1 3440 ret i1 %retval 3441} 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, %b 3449 %cmp1 = fcmp ugt double %a, %b 3450 %retval = select i1 %cmp, i1 %cmp1, i1 false 3451 ret i1 %retval 3452} 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, %b 3460 %cmp1 = fcmp fast ugt double %a, %b 3461 %retval = select i1 %cmp, i1 %cmp1, i1 false 3462 ret i1 %retval 3463} 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, %b 3471 %cmp1 = fcmp uge double %a, %b 3472 %retval = and i1 %cmp, %cmp1 3473 ret i1 %retval 3474} 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, %b 3482 %cmp1 = fcmp uge double %a, %b 3483 %retval = select i1 %cmp, i1 %cmp1, i1 false 3484 ret i1 %retval 3485} 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, %b 3493 %cmp1 = fcmp fast uge double %a, %b 3494 %retval = select i1 %cmp, i1 %cmp1, i1 false 3495 ret i1 %retval 3496} 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, %b 3504 %cmp1 = fcmp ult double %a, %b 3505 %retval = and i1 %cmp, %cmp1 3506 ret i1 %retval 3507} 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, %b 3515 %cmp1 = fcmp ult double %a, %b 3516 %retval = select i1 %cmp, i1 %cmp1, i1 false 3517 ret i1 %retval 3518} 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, %b 3526 %cmp1 = fcmp fast ult double %a, %b 3527 %retval = select i1 %cmp, i1 %cmp1, i1 false 3528 ret i1 %retval 3529} 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, %b 3537 %cmp1 = fcmp ule double %a, %b 3538 %retval = and i1 %cmp, %cmp1 3539 ret i1 %retval 3540} 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, %b 3548 %cmp1 = fcmp ule double %a, %b 3549 %retval = select i1 %cmp, i1 %cmp1, i1 false 3550 ret i1 %retval 3551} 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, %b 3559 %cmp1 = fcmp fast ule double %a, %b 3560 %retval = select i1 %cmp, i1 %cmp1, i1 false 3561 ret i1 %retval 3562} 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, %b 3570 %cmp1 = fcmp une double %a, %b 3571 %retval = and i1 %cmp, %cmp1 3572 ret i1 %retval 3573} 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, %b 3581 %cmp1 = fcmp une double %a, %b 3582 %retval = select i1 %cmp, i1 %cmp1, i1 false 3583 ret i1 %retval 3584} 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, %b 3592 %cmp1 = fcmp fast une double %a, %b 3593 %retval = select i1 %cmp, i1 %cmp1, i1 false 3594 ret i1 %retval 3595} 3596 3597define i1 @auto_gen_105(double %a, double %b) { 3598; CHECK-LABEL: @auto_gen_105( 3599; CHECK-NEXT: ret i1 false 3600; 3601 %cmp = fcmp uno double %a, %b 3602 %cmp1 = fcmp false double %a, %b 3603 %retval = and i1 %cmp, %cmp1 3604 ret i1 %retval 3605} 3606 3607define i1 @auto_gen_105_logical(double %a, double %b) { 3608; CHECK-LABEL: @auto_gen_105_logical( 3609; CHECK-NEXT: ret i1 false 3610; 3611 %cmp = fcmp uno double %a, %b 3612 %cmp1 = fcmp false double %a, %b 3613 %retval = select i1 %cmp, i1 %cmp1, i1 false 3614 ret i1 %retval 3615} 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 false 3620; 3621 %cmp = fcmp fast uno double %a, %b 3622 %cmp1 = fcmp fast false double %a, %b 3623 %retval = select i1 %cmp, i1 %cmp1, i1 false 3624 ret i1 %retval 3625} 3626 3627define i1 @auto_gen_106(double %a, double %b) { 3628; CHECK-LABEL: @auto_gen_106( 3629; CHECK-NEXT: ret i1 false 3630; 3631 %cmp = fcmp uno double %a, %b 3632 %cmp1 = fcmp oeq double %a, %b 3633 %retval = and i1 %cmp, %cmp1 3634 ret i1 %retval 3635} 3636 3637define i1 @auto_gen_106_logical(double %a, double %b) { 3638; CHECK-LABEL: @auto_gen_106_logical( 3639; CHECK-NEXT: ret i1 false 3640; 3641 %cmp = fcmp uno double %a, %b 3642 %cmp1 = fcmp oeq double %a, %b 3643 %retval = select i1 %cmp, i1 %cmp1, i1 false 3644 ret i1 %retval 3645} 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 false 3650; 3651 %cmp = fcmp uno double %a, %b 3652 %cmp1 = fcmp fast oeq double %a, %b 3653 %retval = select i1 %cmp, i1 %cmp1, i1 false 3654 ret i1 %retval 3655} 3656 3657define i1 @auto_gen_107(double %a, double %b) { 3658; CHECK-LABEL: @auto_gen_107( 3659; CHECK-NEXT: ret i1 false 3660; 3661 %cmp = fcmp uno double %a, %b 3662 %cmp1 = fcmp ogt double %a, %b 3663 %retval = and i1 %cmp, %cmp1 3664 ret i1 %retval 3665} 3666 3667define i1 @auto_gen_107_logical(double %a, double %b) { 3668; CHECK-LABEL: @auto_gen_107_logical( 3669; CHECK-NEXT: ret i1 false 3670; 3671 %cmp = fcmp uno double %a, %b 3672 %cmp1 = fcmp ogt double %a, %b 3673 %retval = select i1 %cmp, i1 %cmp1, i1 false 3674 ret i1 %retval 3675} 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 false 3680; 3681 %cmp = fcmp fast uno double %a, %b 3682 %cmp1 = fcmp fast ogt double %a, %b 3683 %retval = select i1 %cmp, i1 %cmp1, i1 false 3684 ret i1 %retval 3685} 3686 3687define i1 @auto_gen_108(double %a, double %b) { 3688; CHECK-LABEL: @auto_gen_108( 3689; CHECK-NEXT: ret i1 false 3690; 3691 %cmp = fcmp uno double %a, %b 3692 %cmp1 = fcmp oge double %a, %b 3693 %retval = and i1 %cmp, %cmp1 3694 ret i1 %retval 3695} 3696 3697define i1 @auto_gen_108_logical(double %a, double %b) { 3698; CHECK-LABEL: @auto_gen_108_logical( 3699; CHECK-NEXT: ret i1 false 3700; 3701 %cmp = fcmp uno double %a, %b 3702 %cmp1 = fcmp oge double %a, %b 3703 %retval = select i1 %cmp, i1 %cmp1, i1 false 3704 ret i1 %retval 3705} 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 false 3710; 3711 %cmp = fcmp uno double %a, %b 3712 %cmp1 = fcmp fast oge double %a, %b 3713 %retval = select i1 %cmp, i1 %cmp1, i1 false 3714 ret i1 %retval 3715} 3716 3717define i1 @auto_gen_109(double %a, double %b) { 3718; CHECK-LABEL: @auto_gen_109( 3719; CHECK-NEXT: ret i1 false 3720; 3721 %cmp = fcmp uno double %a, %b 3722 %cmp1 = fcmp olt double %a, %b 3723 %retval = and i1 %cmp, %cmp1 3724 ret i1 %retval 3725} 3726 3727define i1 @auto_gen_109_logical(double %a, double %b) { 3728; CHECK-LABEL: @auto_gen_109_logical( 3729; CHECK-NEXT: ret i1 false 3730; 3731 %cmp = fcmp uno double %a, %b 3732 %cmp1 = fcmp olt double %a, %b 3733 %retval = select i1 %cmp, i1 %cmp1, i1 false 3734 ret i1 %retval 3735} 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 false 3740; 3741 %cmp = fcmp fast uno double %a, %b 3742 %cmp1 = fcmp fast olt double %a, %b 3743 %retval = select i1 %cmp, i1 %cmp1, i1 false 3744 ret i1 %retval 3745} 3746 3747define i1 @auto_gen_110(double %a, double %b) { 3748; CHECK-LABEL: @auto_gen_110( 3749; CHECK-NEXT: ret i1 false 3750; 3751 %cmp = fcmp uno double %a, %b 3752 %cmp1 = fcmp ole double %a, %b 3753 %retval = and i1 %cmp, %cmp1 3754 ret i1 %retval 3755} 3756 3757define i1 @auto_gen_110_logical(double %a, double %b) { 3758; CHECK-LABEL: @auto_gen_110_logical( 3759; CHECK-NEXT: ret i1 false 3760; 3761 %cmp = fcmp uno double %a, %b 3762 %cmp1 = fcmp ole double %a, %b 3763 %retval = select i1 %cmp, i1 %cmp1, i1 false 3764 ret i1 %retval 3765} 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 false 3770; 3771 %cmp = fcmp uno double %a, %b 3772 %cmp1 = fcmp fast ole double %a, %b 3773 %retval = select i1 %cmp, i1 %cmp1, i1 false 3774 ret i1 %retval 3775} 3776 3777define i1 @auto_gen_111(double %a, double %b) { 3778; CHECK-LABEL: @auto_gen_111( 3779; CHECK-NEXT: ret i1 false 3780; 3781 %cmp = fcmp uno double %a, %b 3782 %cmp1 = fcmp one double %a, %b 3783 %retval = and i1 %cmp, %cmp1 3784 ret i1 %retval 3785} 3786 3787define i1 @auto_gen_111_logical(double %a, double %b) { 3788; CHECK-LABEL: @auto_gen_111_logical( 3789; CHECK-NEXT: ret i1 false 3790; 3791 %cmp = fcmp uno double %a, %b 3792 %cmp1 = fcmp one double %a, %b 3793 %retval = select i1 %cmp, i1 %cmp1, i1 false 3794 ret i1 %retval 3795} 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 false 3800; 3801 %cmp = fcmp fast uno double %a, %b 3802 %cmp1 = fcmp fast one double %a, %b 3803 %retval = select i1 %cmp, i1 %cmp1, i1 false 3804 ret i1 %retval 3805} 3806 3807define i1 @auto_gen_112(double %a, double %b) { 3808; CHECK-LABEL: @auto_gen_112( 3809; CHECK-NEXT: ret i1 false 3810; 3811 %cmp = fcmp uno double %a, %b 3812 %cmp1 = fcmp ord double %a, %b 3813 %retval = and i1 %cmp, %cmp1 3814 ret i1 %retval 3815} 3816 3817define i1 @auto_gen_112_logical(double %a, double %b) { 3818; CHECK-LABEL: @auto_gen_112_logical( 3819; CHECK-NEXT: ret i1 false 3820; 3821 %cmp = fcmp uno double %a, %b 3822 %cmp1 = fcmp ord double %a, %b 3823 %retval = select i1 %cmp, i1 %cmp1, i1 false 3824 ret i1 %retval 3825} 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, %b 3833 %cmp1 = fcmp fast ord double %a, %b 3834 %retval = select i1 %cmp, i1 %cmp1, i1 false 3835 ret i1 %retval 3836} 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, %b 3844 %cmp1 = fcmp ueq double %a, %b 3845 %retval = and i1 %cmp, %cmp1 3846 ret i1 %retval 3847} 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, %b 3855 %cmp1 = fcmp ueq double %a, %b 3856 %retval = select i1 %cmp, i1 %cmp1, i1 false 3857 ret i1 %retval 3858} 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 false 3863; 3864 %cmp = fcmp fast uno double %a, %b 3865 %cmp1 = fcmp fast ueq double %a, %b 3866 %retval = select i1 %cmp, i1 %cmp1, i1 false 3867 ret i1 %retval 3868} 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, %b 3876 %cmp1 = fcmp ugt double %a, %b 3877 %retval = and i1 %cmp, %cmp1 3878 ret i1 %retval 3879} 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, %b 3887 %cmp1 = fcmp ugt double %a, %b 3888 %retval = select i1 %cmp, i1 %cmp1, i1 false 3889 ret i1 %retval 3890} 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, %b 3898 %cmp1 = fcmp fast ugt double %a, %b 3899 %retval = select i1 %cmp, i1 %cmp1, i1 false 3900 ret i1 %retval 3901} 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, %b 3909 %cmp1 = fcmp uge double %a, %b 3910 %retval = and i1 %cmp, %cmp1 3911 ret i1 %retval 3912} 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, %b 3920 %cmp1 = fcmp uge double %a, %b 3921 %retval = select i1 %cmp, i1 %cmp1, i1 false 3922 ret i1 %retval 3923} 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 false 3928; 3929 %cmp = fcmp fast uno double %a, %b 3930 %cmp1 = fcmp fast uge double %a, %b 3931 %retval = select i1 %cmp, i1 %cmp1, i1 false 3932 ret i1 %retval 3933} 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, %b 3941 %cmp1 = fcmp ult double %a, %b 3942 %retval = and i1 %cmp, %cmp1 3943 ret i1 %retval 3944} 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, %b 3952 %cmp1 = fcmp ult double %a, %b 3953 %retval = select i1 %cmp, i1 %cmp1, i1 false 3954 ret i1 %retval 3955} 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, %b 3963 %cmp1 = fcmp fast ult double %a, %b 3964 %retval = select i1 %cmp, i1 %cmp1, i1 false 3965 ret i1 %retval 3966} 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, %b 3974 %cmp1 = fcmp ule double %a, %b 3975 %retval = and i1 %cmp, %cmp1 3976 ret i1 %retval 3977} 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, %b 3985 %cmp1 = fcmp ule double %a, %b 3986 %retval = select i1 %cmp, i1 %cmp1, i1 false 3987 ret i1 %retval 3988} 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 false 3993; 3994 %cmp = fcmp fast uno double %a, %b 3995 %cmp1 = fcmp fast ule double %a, %b 3996 %retval = select i1 %cmp, i1 %cmp1, i1 false 3997 ret i1 %retval 3998} 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, %b 4006 %cmp1 = fcmp une double %a, %b 4007 %retval = and i1 %cmp, %cmp1 4008 ret i1 %retval 4009} 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, %b 4017 %cmp1 = fcmp une double %a, %b 4018 %retval = select i1 %cmp, i1 %cmp1, i1 false 4019 ret i1 %retval 4020} 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, %b 4028 %cmp1 = fcmp fast une double %a, %b 4029 %retval = select i1 %cmp, i1 %cmp1, i1 false 4030 ret i1 %retval 4031} 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, %b 4039 %cmp1 = fcmp uno double %a, %b 4040 %retval = and i1 %cmp, %cmp1 4041 ret i1 %retval 4042} 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, %b 4050 %cmp1 = fcmp uno double %a, %b 4051 %retval = select i1 %cmp, i1 %cmp1, i1 false 4052 ret i1 %retval 4053} 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 false 4058; 4059 %cmp = fcmp fast uno double %a, %b 4060 %cmp1 = fcmp fast uno double %a, %b 4061 %retval = select i1 %cmp, i1 %cmp1, i1 false 4062 ret i1 %retval 4063} 4064 4065define i1 @auto_gen_120(double %a, double %b) { 4066; CHECK-LABEL: @auto_gen_120( 4067; CHECK-NEXT: ret i1 false 4068; 4069 %cmp = fcmp true double %a, %b 4070 %cmp1 = fcmp false double %a, %b 4071 %retval = and i1 %cmp, %cmp1 4072 ret i1 %retval 4073} 4074 4075define i1 @auto_gen_120_logical(double %a, double %b) { 4076; CHECK-LABEL: @auto_gen_120_logical( 4077; CHECK-NEXT: ret i1 false 4078; 4079 %cmp = fcmp true double %a, %b 4080 %cmp1 = fcmp false double %a, %b 4081 %retval = select i1 %cmp, i1 %cmp1, i1 false 4082 ret i1 %retval 4083} 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 false 4088; 4089 %cmp = fcmp true double %a, %b 4090 %cmp1 = fcmp fast false double %a, %b 4091 %retval = select i1 %cmp, i1 %cmp1, i1 false 4092 ret i1 %retval 4093} 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, %b 4101 %cmp1 = fcmp oeq double %a, %b 4102 %retval = and i1 %cmp, %cmp1 4103 ret i1 %retval 4104} 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, %b 4112 %cmp1 = fcmp oeq double %a, %b 4113 %retval = select i1 %cmp, i1 %cmp1, i1 false 4114 ret i1 %retval 4115} 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, %b 4123 %cmp1 = fcmp fast oeq double %a, %b 4124 %retval = select i1 %cmp, i1 %cmp1, i1 false 4125 ret i1 %retval 4126} 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, %b 4134 %cmp1 = fcmp ogt double %a, %b 4135 %retval = and i1 %cmp, %cmp1 4136 ret i1 %retval 4137} 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, %b 4145 %cmp1 = fcmp ogt double %a, %b 4146 %retval = select i1 %cmp, i1 %cmp1, i1 false 4147 ret i1 %retval 4148} 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, %b 4156 %cmp1 = fcmp fast ogt double %a, %b 4157 %retval = select i1 %cmp, i1 %cmp1, i1 false 4158 ret i1 %retval 4159} 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, %b 4167 %cmp1 = fcmp oge double %a, %b 4168 %retval = and i1 %cmp, %cmp1 4169 ret i1 %retval 4170} 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, %b 4178 %cmp1 = fcmp oge double %a, %b 4179 %retval = select i1 %cmp, i1 %cmp1, i1 false 4180 ret i1 %retval 4181} 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, %b 4189 %cmp1 = fcmp fast oge double %a, %b 4190 %retval = select i1 %cmp, i1 %cmp1, i1 false 4191 ret i1 %retval 4192} 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, %b 4200 %cmp1 = fcmp olt double %a, %b 4201 %retval = and i1 %cmp, %cmp1 4202 ret i1 %retval 4203} 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, %b 4211 %cmp1 = fcmp olt double %a, %b 4212 %retval = select i1 %cmp, i1 %cmp1, i1 false 4213 ret i1 %retval 4214} 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, %b 4222 %cmp1 = fcmp fast olt double %a, %b 4223 %retval = select i1 %cmp, i1 %cmp1, i1 false 4224 ret i1 %retval 4225} 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, %b 4233 %cmp1 = fcmp ole double %a, %b 4234 %retval = and i1 %cmp, %cmp1 4235 ret i1 %retval 4236} 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, %b 4244 %cmp1 = fcmp ole double %a, %b 4245 %retval = select i1 %cmp, i1 %cmp1, i1 false 4246 ret i1 %retval 4247} 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, %b 4255 %cmp1 = fcmp fast ole double %a, %b 4256 %retval = select i1 %cmp, i1 %cmp1, i1 false 4257 ret i1 %retval 4258} 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, %b 4266 %cmp1 = fcmp one double %a, %b 4267 %retval = and i1 %cmp, %cmp1 4268 ret i1 %retval 4269} 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, %b 4277 %cmp1 = fcmp one double %a, %b 4278 %retval = select i1 %cmp, i1 %cmp1, i1 false 4279 ret i1 %retval 4280} 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, %b 4288 %cmp1 = fcmp fast one double %a, %b 4289 %retval = select i1 %cmp, i1 %cmp1, i1 false 4290 ret i1 %retval 4291} 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, %b 4299 %cmp1 = fcmp ord double %a, %b 4300 %retval = and i1 %cmp, %cmp1 4301 ret i1 %retval 4302} 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, %b 4310 %cmp1 = fcmp ord double %a, %b 4311 %retval = select i1 %cmp, i1 %cmp1, i1 false 4312 ret i1 %retval 4313} 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 true 4318; 4319 %cmp = fcmp fast true double %a, %b 4320 %cmp1 = fcmp fast ord double %a, %b 4321 %retval = select i1 %cmp, i1 %cmp1, i1 false 4322 ret i1 %retval 4323} 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, %b 4331 %cmp1 = fcmp ueq double %a, %b 4332 %retval = and i1 %cmp, %cmp1 4333 ret i1 %retval 4334} 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, %b 4342 %cmp1 = fcmp ueq double %a, %b 4343 %retval = select i1 %cmp, i1 %cmp1, i1 false 4344 ret i1 %retval 4345} 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, %b 4353 %cmp1 = fcmp fast ueq double %a, %b 4354 %retval = select i1 %cmp, i1 %cmp1, i1 false 4355 ret i1 %retval 4356} 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, %b 4364 %cmp1 = fcmp ugt double %a, %b 4365 %retval = and i1 %cmp, %cmp1 4366 ret i1 %retval 4367} 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, %b 4375 %cmp1 = fcmp ugt double %a, %b 4376 %retval = select i1 %cmp, i1 %cmp1, i1 false 4377 ret i1 %retval 4378} 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, %b 4386 %cmp1 = fcmp fast ugt double %a, %b 4387 %retval = select i1 %cmp, i1 %cmp1, i1 false 4388 ret i1 %retval 4389} 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, %b 4397 %cmp1 = fcmp uge double %a, %b 4398 %retval = and i1 %cmp, %cmp1 4399 ret i1 %retval 4400} 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, %b 4408 %cmp1 = fcmp uge double %a, %b 4409 %retval = select i1 %cmp, i1 %cmp1, i1 false 4410 ret i1 %retval 4411} 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, %b 4419 %cmp1 = fcmp fast uge double %a, %b 4420 %retval = select i1 %cmp, i1 %cmp1, i1 false 4421 ret i1 %retval 4422} 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, %b 4430 %cmp1 = fcmp ult double %a, %b 4431 %retval = and i1 %cmp, %cmp1 4432 ret i1 %retval 4433} 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, %b 4441 %cmp1 = fcmp ult double %a, %b 4442 %retval = select i1 %cmp, i1 %cmp1, i1 false 4443 ret i1 %retval 4444} 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, %b 4452 %cmp1 = fcmp fast ult double %a, %b 4453 %retval = select i1 %cmp, i1 %cmp1, i1 false 4454 ret i1 %retval 4455} 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, %b 4463 %cmp1 = fcmp ule double %a, %b 4464 %retval = and i1 %cmp, %cmp1 4465 ret i1 %retval 4466} 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, %b 4474 %cmp1 = fcmp ule double %a, %b 4475 %retval = select i1 %cmp, i1 %cmp1, i1 false 4476 ret i1 %retval 4477} 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, %b 4485 %cmp1 = fcmp fast ule double %a, %b 4486 %retval = select i1 %cmp, i1 %cmp1, i1 false 4487 ret i1 %retval 4488} 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, %b 4496 %cmp1 = fcmp une double %a, %b 4497 %retval = and i1 %cmp, %cmp1 4498 ret i1 %retval 4499} 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, %b 4507 %cmp1 = fcmp une double %a, %b 4508 %retval = select i1 %cmp, i1 %cmp1, i1 false 4509 ret i1 %retval 4510} 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, %b 4518 %cmp1 = fcmp fast une double %a, %b 4519 %retval = select i1 %cmp, i1 %cmp1, i1 false 4520 ret i1 %retval 4521} 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, %b 4529 %cmp1 = fcmp uno double %a, %b 4530 %retval = and i1 %cmp, %cmp1 4531 ret i1 %retval 4532} 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, %b 4540 %cmp1 = fcmp uno double %a, %b 4541 %retval = select i1 %cmp, i1 %cmp1, i1 false 4542 ret i1 %retval 4543} 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 false 4548; 4549 %cmp = fcmp true double %a, %b 4550 %cmp1 = fcmp fast uno double %a, %b 4551 %retval = select i1 %cmp, i1 %cmp1, i1 false 4552 ret i1 %retval 4553} 4554 4555define i1 @auto_gen_135(double %a, double %b) { 4556; CHECK-LABEL: @auto_gen_135( 4557; CHECK-NEXT: ret i1 true 4558; 4559 %cmp = fcmp true double %a, %b 4560 %cmp1 = fcmp true double %a, %b 4561 %retval = and i1 %cmp, %cmp1 4562 ret i1 %retval 4563} 4564 4565define i1 @auto_gen_135_logical(double %a, double %b) { 4566; CHECK-LABEL: @auto_gen_135_logical( 4567; CHECK-NEXT: ret i1 true 4568; 4569 %cmp = fcmp true double %a, %b 4570 %cmp1 = fcmp true double %a, %b 4571 %retval = select i1 %cmp, i1 %cmp1, i1 false 4572 ret i1 %retval 4573} 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 true 4578; 4579 %cmp = fcmp fast true double %a, %b 4580 %cmp1 = fcmp fast true double %a, %b 4581 %retval = select i1 %cmp, i1 %cmp1, i1 false 4582 ret i1 %retval 4583} 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, %b 4591 %cmp1 = fcmp fast oge double %a, %b 4592 %retval = and i1 %cmp, %cmp1 4593 ret i1 %retval 4594} 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, %b 4602 %cmp1 = fcmp oge double %a, %b 4603 %retval = and i1 %cmp, %cmp1 4604 ret i1 %retval 4605} 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, %b 4613 %cmp1 = fcmp fast oge double %a, %b 4614 %retval = and i1 %cmp, %cmp1 4615 ret i1 %retval 4616} 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, %b 4624 %cmp1 = fcmp nnan oge double %a, %b 4625 %retval = and i1 %cmp, %cmp1 4626 ret i1 %retval 4627} 4628 4629; Clang used to emit this pattern in __builtin_isnormal 4630; https://alive2.llvm.org/ce/z/8sw9vi 4631define 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]], 0xH7C00 4635; CHECK-NEXT: ret i1 [[AND]] 4636; 4637 %fabs.x = call half @llvm.fabs.f16(half %x) 4638 %ord = fcmp ord half %fabs.x, 0.0 4639 %cmp = fcmp uge half %fabs.x, 0xH7C00 4640 %and = and i1 %ord, %cmp 4641 ret i1 %and 4642} 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, zeroinitializer 4652 %cmp = fcmp uge <2 x half> %fabs.x, <half 0xH7C00, half 0xH7C00> 4653 %and = and <2 x i1> %ord, %cmp 4654 ret <2 x i1> %and 4655} 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]], 0xH7C00 4661; CHECK-NEXT: ret i1 [[AND]] 4662; 4663 %fabs.x = call half @llvm.fabs.f16(half %x) 4664 %ord = fcmp ord half %fabs.x, 0.0 4665 %cmp = fcmp uge half %fabs.x, 0xH7C00 4666 %and = and i1 %cmp, %ord 4667 ret i1 %and 4668} 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]], 0xH7C00 4674; 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.0 4678 %cmp = fcmp uge half %fabs.x, 0xH7C00 4679 %and = and i1 %cmp, %ord 4680 ret i1 %and 4681} 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]], 0xH7C00 4687; CHECK-NEXT: ret i1 [[AND]] 4688; 4689 %fabs.x = call half @llvm.fabs.f16(half %x) 4690 %ord = fcmp ord half %fabs.x, 0.0 4691 %cmp = fcmp nsz uge half %fabs.x, 0xH7C00 4692 %and = and i1 %cmp, %ord 4693 ret i1 %and 4694} 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:%.*]], 0xH7C00 4699; CHECK-NEXT: ret i1 [[AND]] 4700; 4701 %ord = fcmp ord half %x, 0.0 4702 %cmp = fcmp ueq half %x, 0xH7C00 4703 %and = and i1 %cmp, %ord 4704 ret i1 %and 4705} 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]], 0xH7C00 4711; 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.0 4715 %cmp = fcmp nsz uge half %fabs.x, 0xH7C00 4716 %and = and i1 %cmp, %ord 4717 ret i1 %and 4718} 4719 4720; ugt -> ogt 4721define i1 @clang_builtin_isnormal_inf_check_ugt(half %x) { 4722; CHECK-LABEL: @clang_builtin_isnormal_inf_check_ugt( 4723; CHECK-NEXT: ret i1 false 4724; 4725 %fabs.x = call half @llvm.fabs.f16(half %x) 4726 %ord = fcmp ord half %fabs.x, 0.0 4727 %cmp = fcmp ugt half %fabs.x, 0xH7C00 4728 %and = and i1 %ord, %cmp 4729 ret i1 %and 4730} 4731 4732; ult -> olt 4733define 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]], 0xH7C00 4737; CHECK-NEXT: ret i1 [[AND]] 4738; 4739 %fabs.x = call half @llvm.fabs.f16(half %x) 4740 %ord = fcmp ord half %fabs.x, 0.0 4741 %cmp = fcmp ult half %fabs.x, 0xH7C00 4742 %and = and i1 %ord, %cmp 4743 ret i1 %and 4744} 4745 4746; ule -> ole 4747define 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:%.*]], 0xH0000 4750; CHECK-NEXT: ret i1 [[ORD]] 4751; 4752 %fabs.x = call half @llvm.fabs.f16(half %x) 4753 %ord = fcmp ord half %fabs.x, 0.0 4754 %cmp = fcmp ule half %fabs.x, 0xH7C00 4755 %and = and i1 %ord, %cmp 4756 ret i1 %and 4757} 4758 4759; ueq -> oeq 4760define 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]], 0xH7C00 4764; CHECK-NEXT: ret i1 [[AND]] 4765; 4766 %fabs.x = call half @llvm.fabs.f16(half %x) 4767 %ord = fcmp ord half %fabs.x, 0.0 4768 %cmp = fcmp ueq half %fabs.x, 0xH7C00 4769 %and = and i1 %ord, %cmp 4770 ret i1 %and 4771} 4772 4773; une -> ole 4774define 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]], 0xH7C00 4778; CHECK-NEXT: ret i1 [[AND]] 4779; 4780 %fabs.x = call half @llvm.fabs.f16(half %x) 4781 %ord = fcmp ord half %fabs.x, 0.0 4782 %cmp = fcmp une half %fabs.x, 0xH7C00 4783 %and = and i1 %ord, %cmp 4784 ret i1 %and 4785} 4786 4787; uno -> ord 4788define i1 @clang_builtin_isnormal_inf_check_uno(half %x) { 4789; CHECK-LABEL: @clang_builtin_isnormal_inf_check_uno( 4790; CHECK-NEXT: ret i1 false 4791; 4792 %fabs.x = call half @llvm.fabs.f16(half %x) 4793 %ord = fcmp ord half %fabs.x, 0.0 4794 %cmp = fcmp uno half %fabs.x, 0xH7C00 4795 %and = and i1 %ord, %cmp 4796 ret i1 %and 4797} 4798 4799; ord -> ord 4800define 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:%.*]], 0xH0000 4803; CHECK-NEXT: ret i1 [[CMP]] 4804; 4805 %fabs.x = call half @llvm.fabs.f16(half %x) 4806 %ord = fcmp ord half %fabs.x, 0.0 4807 %cmp = fcmp ord half %fabs.x, 0xH7C00 4808 %and = and i1 %ord, %cmp 4809 ret i1 %and 4810} 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]], 0xH7C00 4816; CHECK-NEXT: ret i1 [[AND]] 4817; 4818 %fabs.x = call half @llvm.fabs.f16(half %x) 4819 %ord = fcmp ord half %fabs.x, 0.0 4820 %cmp = fcmp oge half %fabs.x, 0xH7C00 4821 %and = and i1 %ord, %cmp 4822 ret i1 %and 4823} 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]], 0xH7C00 4829; CHECK-NEXT: ret i1 [[AND]] 4830; 4831 %fabs.x = call half @llvm.fabs.f16(half %x) 4832 %ord = fcmp ord half %fabs.x, 0.0 4833 %cmp = fcmp olt half %fabs.x, 0xH7C00 4834 %and = and i1 %ord, %cmp 4835 ret i1 %and 4836} 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:%.*]], 0xH0000 4841; CHECK-NEXT: ret i1 [[CMP]] 4842; 4843 %fabs.x = call half @llvm.fabs.f16(half %x) 4844 %ord = fcmp ord half %fabs.x, 0.0 4845 %cmp = fcmp ole half %fabs.x, 0xH7C00 4846 %and = and i1 %ord, %cmp 4847 ret i1 %and 4848} 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]], 0xH7C00 4854; CHECK-NEXT: ret i1 [[AND]] 4855; 4856 %fabs.x = call half @llvm.fabs.f16(half %x) 4857 %ord = fcmp ord half %fabs.x, 0.0 4858 %cmp = fcmp oeq half %fabs.x, 0xH7C00 4859 %and = and i1 %ord, %cmp 4860 ret i1 %and 4861} 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]], 0xH7C00 4867; CHECK-NEXT: ret i1 [[AND]] 4868; 4869 %fabs.x = call half @llvm.fabs.f16(half %x) 4870 %ord = fcmp ord half %x, 0.0 4871 %ueq = fcmp uge half %fabs.x, 0xH7C00 4872 %and = and i1 %ord, %ueq 4873 ret i1 %and 4874} 4875 4876; Negative test 4877define 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:%.*]], 0xH0000 4880; CHECK-NEXT: ret i1 [[AND]] 4881; 4882 %fabs.x = call half @llvm.fabs.f16(half %x) 4883 %ord = fcmp uno half %fabs.x, 0.0 4884 %ueq = fcmp uge half %fabs.x, 0xH7C00 4885 %and = and i1 %ord, %ueq 4886 ret i1 %and 4887} 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:%.*]], 0xH7C00 4892; CHECK-NEXT: ret i1 [[AND]] 4893; 4894 %fabs.x = call half @llvm.fabs.f16(half %x) 4895 %ord = fcmp ord half %x, 0.0 4896 %ueq = fcmp uge half %x, 0xH7C00 4897 %and = and i1 %ord, %ueq 4898 ret i1 %and 4899} 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:%.*]], 0xH0000 4904; CHECK-NEXT: ret i1 [[ORD]] 4905; 4906 %fabs.x = call half @llvm.fabs.f16(half %x) 4907 %ord = fcmp ord half %fabs.x, 0.0 4908 %ueq = fcmp uge half %fabs.x, 0xHFC00 4909 %and = and i1 %ord, %ueq 4910 ret i1 %and 4911} 4912 4913; Negative test 4914define 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]], 0xH0000 4918; CHECK-NEXT: [[UEQ:%.*]] = fcmp uge half [[FABS_X]], 0xH7BFF 4919; 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.0 4924 %ueq = fcmp uge half %fabs.x, 0xH7BFF 4925 %and = and i1 %ord, %ueq 4926 ret i1 %and 4927} 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]], 0xH7C00 4933; 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.0 4937 %ueq = fcmp uge half %fabs.x, 0xH7C00 4938 %and = and i1 %ord, %ueq 4939 ret i1 %and 4940} 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]], 0xH7C00 4946; CHECK-NEXT: ret i1 [[AND]] 4947; 4948 %fabs.x = call half @llvm.fabs.f16(half %x) 4949 %ord = fcmp ord half %fabs.x, 0.0 4950 %ueq = fcmp nsz uge half %fabs.x, 0xH7C00 4951 %and = and i1 %ord, %ueq 4952 ret i1 %and 4953} 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]], 0xH7C00 4959; 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.0 4963 %ueq = fcmp nsz uge half %fabs.x, 0xH7C00 4964 %and = and i1 %ord, %ueq 4965 ret i1 %and 4966} 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:%.*]], 0xH7C00 4971; CHECK-NEXT: ret i1 [[AND]] 4972; 4973 %fneg.x = fneg half %x 4974 %ord = fcmp ord half %fneg.x, 0.0 4975 %cmp = fcmp uge half %x, 0xH7C00 4976 %and = and i1 %ord, %cmp 4977 ret i1 %and 4978} 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]], 0xH7C00 4984; 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.0 4988 %cmp = fcmp uge half %copysign.x, 0xH7C00 4989 %and = and i1 %ord, %cmp 4990 ret i1 %and 4991} 4992 4993define i1 @isnormal_logical_select_0(half %x) { 4994; CHECK-LABEL: @isnormal_logical_select_0( 4995; CHECK-NEXT: [[FABS_X:%.*]] = call half @llvm.fabs.f16(half [[X:%.*]]) 4996; CHECK-NEXT: [[AND:%.*]] = fcmp oeq half [[FABS_X]], 0xH7C00 4997; CHECK-NEXT: ret i1 [[AND]] 4998; 4999 %fabs.x = call half @llvm.fabs.f16(half %x) 5000 %ord = fcmp ord half %fabs.x, 0.0 5001 %cmp.inf = fcmp uge half %fabs.x, 0xH7C00 5002 %and = select i1 %ord, i1 %cmp.inf, i1 false 5003 ret i1 %and 5004} 5005 5006define i1 @isnormal_logical_select_1(half %x) { 5007; CHECK-LABEL: @isnormal_logical_select_1( 5008; CHECK-NEXT: [[FABS_X:%.*]] = call half @llvm.fabs.f16(half [[X:%.*]]) 5009; CHECK-NEXT: [[AND:%.*]] = fcmp oeq half [[FABS_X]], 0xH7C00 5010; CHECK-NEXT: ret i1 [[AND]] 5011; 5012 %fabs.x = call half @llvm.fabs.f16(half %x) 5013 %ord = fcmp ord half %fabs.x, 0.0 5014 %cmp.inf = fcmp uge half %fabs.x, 0xH7C00 5015 %and = select i1 %cmp.inf, i1 %ord, i1 false 5016 ret i1 %and 5017} 5018 5019define i1 @isnormal_logical_select_0_fmf0(half %x) { 5020; CHECK-LABEL: @isnormal_logical_select_0_fmf0( 5021; CHECK-NEXT: [[FABS_X:%.*]] = call half @llvm.fabs.f16(half [[X:%.*]]) 5022; CHECK-NEXT: [[AND:%.*]] = fcmp reassoc nsz arcp oeq half [[FABS_X]], 0xH7C00 5023; CHECK-NEXT: ret i1 [[AND]] 5024; 5025 %fabs.x = call half @llvm.fabs.f16(half %x) 5026 %ord = fcmp nsz arcp reassoc ord half %fabs.x, 0.0 5027 %cmp.inf = fcmp nsz arcp reassoc uge half %fabs.x, 0xH7C00 5028 %and = select i1 %ord, i1 %cmp.inf, i1 false 5029 ret i1 %and 5030} 5031 5032define i1 @isnormal_logical_select_0_fmf1(half %x) { 5033; CHECK-LABEL: @isnormal_logical_select_0_fmf1( 5034; CHECK-NEXT: [[FABS_X:%.*]] = call half @llvm.fabs.f16(half [[X:%.*]]) 5035; CHECK-NEXT: [[AND:%.*]] = fcmp oeq half [[FABS_X]], 0xH7C00 5036; CHECK-NEXT: ret i1 [[AND]] 5037; 5038 %fabs.x = call half @llvm.fabs.f16(half %x) 5039 %ord = fcmp ord half %fabs.x, 0.0 5040 %cmp.inf = fcmp nsz arcp reassoc uge half %fabs.x, 0xH7C00 5041 %and = select i1 %ord, i1 %cmp.inf, i1 false 5042 ret i1 %and 5043} 5044 5045define i1 @and_fcmp_reassoc1(i1 %x, double %a, double %b) { 5046; CHECK-LABEL: @and_fcmp_reassoc1( 5047; CHECK-NEXT: [[TMP1:%.*]] = fcmp uno double [[A:%.*]], [[B:%.*]] 5048; CHECK-NEXT: [[RETVAL:%.*]] = and i1 [[TMP1]], [[X:%.*]] 5049; CHECK-NEXT: ret i1 [[RETVAL]] 5050; 5051 %cmp = fcmp ult double %a, %b 5052 %cmp1 = fcmp ugt double %a, %b 5053 %and = and i1 %cmp, %x 5054 %retval = and i1 %and, %cmp1 5055 ret i1 %retval 5056} 5057 5058define i1 @and_fcmp_reassoc2(i1 %x, double %a, double %b) { 5059; CHECK-LABEL: @and_fcmp_reassoc2( 5060; CHECK-NEXT: [[TMP1:%.*]] = fcmp uno double [[A:%.*]], [[B:%.*]] 5061; CHECK-NEXT: [[RETVAL:%.*]] = and i1 [[X:%.*]], [[TMP1]] 5062; CHECK-NEXT: ret i1 [[RETVAL]] 5063; 5064 %cmp = fcmp ult double %a, %b 5065 %cmp1 = fcmp ugt double %a, %b 5066 %and = and i1 %x, %cmp 5067 %retval = and i1 %and, %cmp1 5068 ret i1 %retval 5069} 5070 5071define i1 @and_fcmp_reassoc3(i1 %x, double %a, double %b) { 5072; CHECK-LABEL: @and_fcmp_reassoc3( 5073; CHECK-NEXT: [[TMP1:%.*]] = fcmp uno double [[A:%.*]], [[B:%.*]] 5074; CHECK-NEXT: [[RETVAL:%.*]] = and i1 [[TMP1]], [[X:%.*]] 5075; CHECK-NEXT: ret i1 [[RETVAL]] 5076; 5077 %cmp = fcmp ult double %a, %b 5078 %cmp1 = fcmp ugt double %a, %b 5079 %and = and i1 %cmp, %x 5080 %retval = and i1 %cmp1, %and 5081 ret i1 %retval 5082} 5083 5084define i1 @and_fcmp_reassoc4(i1 %x, double %a, double %b) { 5085; CHECK-LABEL: @and_fcmp_reassoc4( 5086; CHECK-NEXT: [[TMP1:%.*]] = fcmp uno double [[A:%.*]], [[B:%.*]] 5087; CHECK-NEXT: [[RETVAL:%.*]] = and i1 [[X:%.*]], [[TMP1]] 5088; CHECK-NEXT: ret i1 [[RETVAL]] 5089; 5090 %cmp = fcmp ult double %a, %b 5091 %cmp1 = fcmp ugt double %a, %b 5092 %and = and i1 %x, %cmp 5093 %retval = and i1 %cmp1, %and 5094 ret i1 %retval 5095} 5096 5097declare half @llvm.fabs.f16(half) 5098declare <2 x half> @llvm.fabs.v2f16(<2 x half>) 5099declare half @llvm.copysign.f16(half, half) 5100