@@ -23,6 +23,50 @@ define float @select_fpclass_fadd(i1 %cond, float nofpclass(nan) %A, float %B) {
2323 ret float %D
2424}
2525
26+ define float @select_fpclass_fadd_ninf1 (i1 %cond , float nofpclass(nan) %A , float %B ) {
27+ ; CHECK-LABEL: @select_fpclass_fadd_ninf1(
28+ ; CHECK-NEXT: [[C:%.*]] = select i1 [[COND:%.*]], float [[B:%.*]], float -0.000000e+00
29+ ; CHECK-NEXT: [[D:%.*]] = fadd float [[A:%.*]], [[C]]
30+ ; CHECK-NEXT: ret float [[D]]
31+ ;
32+ %C = fadd ninf float %A , %B
33+ %D = select i1 %cond , float %C , float %A
34+ ret float %D
35+ }
36+
37+ define float @select_fpclass_fadd_ninf2 (i1 %cond , float nofpclass(nan) %A , float %B ) {
38+ ; CHECK-LABEL: @select_fpclass_fadd_ninf2(
39+ ; CHECK-NEXT: [[C:%.*]] = select ninf i1 [[COND:%.*]], float [[B:%.*]], float -0.000000e+00
40+ ; CHECK-NEXT: [[D:%.*]] = fadd float [[A:%.*]], [[C]]
41+ ; CHECK-NEXT: ret float [[D]]
42+ ;
43+ %C = fadd float %A , %B
44+ %D = select ninf i1 %cond , float %C , float %A
45+ ret float %D
46+ }
47+
48+ define float @select_fpclass_fadd_ninf3 (i1 %cond , float nofpclass(nan) %A , float %B ) {
49+ ; CHECK-LABEL: @select_fpclass_fadd_ninf3(
50+ ; CHECK-NEXT: [[C:%.*]] = select ninf i1 [[COND:%.*]], float [[B:%.*]], float -0.000000e+00
51+ ; CHECK-NEXT: [[D:%.*]] = fadd ninf float [[A:%.*]], [[C]]
52+ ; CHECK-NEXT: ret float [[D]]
53+ ;
54+ %C = fadd ninf float %A , %B
55+ %D = select ninf i1 %cond , float %C , float %A
56+ ret float %D
57+ }
58+
59+ define float @select_fpclass_fadd_nnan_ninf (i1 %cond , float nofpclass(nan) %A , float %B ) {
60+ ; CHECK-LABEL: @select_fpclass_fadd_nnan_ninf(
61+ ; CHECK-NEXT: [[C:%.*]] = select nnan ninf i1 [[COND:%.*]], float [[B:%.*]], float -0.000000e+00
62+ ; CHECK-NEXT: [[D:%.*]] = fadd float [[A:%.*]], [[C]]
63+ ; CHECK-NEXT: ret float [[D]]
64+ ;
65+ %C = fadd float %A , %B
66+ %D = select nnan ninf i1 %cond , float %C , float %A
67+ ret float %D
68+ }
69+
2670define float @select_nnan_fadd (i1 %cond , float %A , float %B ) {
2771; CHECK-LABEL: @select_nnan_fadd(
2872; CHECK-NEXT: [[C:%.*]] = select nnan i1 [[COND:%.*]], float [[B:%.*]], float -0.000000e+00
0 commit comments