1; RUN: opt < %s -instcombine -S | FileCheck %s 2 3; CHECK-LABEL: @t1( 4define zeroext i8 @t1(float %x, float %y) nounwind { 5 %a = fcmp ueq float %x, %y ; <i1> [#uses=1] 6 %b = fcmp uno float %x, %y ; <i1> [#uses=1] 7 %c = or i1 %a, %b 8; CHECK-NOT: fcmp uno 9; CHECK: fcmp ueq 10 %retval = zext i1 %c to i8 11 ret i8 %retval 12} 13 14; CHECK-LABEL: @t2( 15define zeroext i8 @t2(float %x, float %y) nounwind { 16 %a = fcmp olt float %x, %y ; <i1> [#uses=1] 17 %b = fcmp oeq float %x, %y ; <i1> [#uses=1] 18; CHECK-NOT: fcmp olt 19; CHECK-NOT: fcmp oeq 20; CHECK: fcmp ole 21 %c = or i1 %a, %b 22 %retval = zext i1 %c to i8 23 ret i8 %retval 24} 25 26; CHECK-LABEL: @t3( 27define zeroext i8 @t3(float %x, float %y) nounwind { 28 %a = fcmp ult float %x, %y ; <i1> [#uses=1] 29 %b = fcmp uge float %x, %y ; <i1> [#uses=1] 30 %c = or i1 %a, %b 31 %retval = zext i1 %c to i8 32; CHECK: ret i8 1 33 ret i8 %retval 34} 35 36; CHECK-LABEL: @t4( 37define zeroext i8 @t4(float %x, float %y) nounwind { 38 %a = fcmp ult float %x, %y ; <i1> [#uses=1] 39 %b = fcmp ugt float %x, %y ; <i1> [#uses=1] 40 %c = or i1 %a, %b 41; CHECK-NOT: fcmp ult 42; CHECK-NOT: fcmp ugt 43; CHECK: fcmp une 44 %retval = zext i1 %c to i8 45 ret i8 %retval 46} 47 48; CHECK-LABEL: @t5( 49define zeroext i8 @t5(float %x, float %y) nounwind { 50 %a = fcmp olt float %x, %y ; <i1> [#uses=1] 51 %b = fcmp oge float %x, %y ; <i1> [#uses=1] 52 %c = or i1 %a, %b 53; CHECK-NOT: fcmp olt 54; CHECK-NOT: fcmp oge 55; CHECK: fcmp ord 56 %retval = zext i1 %c to i8 57 ret i8 %retval 58} 59