1 ; RUN: opt < %s -instcombine -S | FileCheck %s
3 define zeroext i8 @t1(float %x, float %y) nounwind {
4 %a = fcmp ueq float %x, %y
5 %b = fcmp ord float %x, %y
7 %retval = zext i1 %c to i8
10 ; CHECK: fcmp oeq float %x, %y
11 ; CHECK-NOT: fcmp ueq float %x, %y
12 ; CHECK-NOT: fcmp ord float %x, %y
16 define zeroext i8 @t2(float %x, float %y) nounwind {
17 %a = fcmp olt float %x, %y
18 %b = fcmp ord float %x, %y
20 %retval = zext i1 %c to i8
23 ; CHECK: fcmp olt float %x, %y
24 ; CHECK-NOT: fcmp ord float %x, %y
28 define zeroext i8 @t3(float %x, float %y) nounwind {
29 %a = fcmp oge float %x, %y
30 %b = fcmp uno float %x, %y
32 %retval = zext i1 %c to i8
38 define zeroext i8 @t4(float %x, float %y) nounwind {
39 %a = fcmp one float %y, %x
40 %b = fcmp ord float %x, %y
42 %retval = zext i1 %c to i8
45 ; CHECK: fcmp one float %y, %x
46 ; CHECK-NOT: fcmp ord float %x, %y
50 define zeroext i8 @t5(float %x, float %y) nounwind {
51 %a = fcmp ord float %x, %y
52 %b = fcmp uno float %x, %y
54 %retval = zext i1 %c to i8
60 define zeroext i8 @t6(float %x, float %y) nounwind {
61 %a = fcmp uno float %x, %y
62 %b = fcmp ord float %x, %y
64 %retval = zext i1 %c to i8
70 define zeroext i8 @t7(float %x, float %y) nounwind {
71 %a = fcmp uno float %x, %y
72 %b = fcmp ult float %x, %y
74 %retval = zext i1 %c to i8
82 define i1 @t8(float %a, double %b) {
83 %cmp = fcmp ord float %a, 0.000000e+00
84 %cmp1 = fcmp ord double %b, 0.000000e+00
85 %and = and i1 %cmp, %cmp1
92 define <2 x i1> @t9(<2 x float> %a, <2 x double> %b) {
93 %cmp = fcmp ord <2 x float> %a, zeroinitializer
94 %cmp1 = fcmp ord <2 x double> %b, zeroinitializer
95 %and = and <2 x i1> %cmp, %cmp1