33
44define float @select_fadd (i1 %cond , float %A , float %B ) {
55; CHECK-LABEL: @select_fadd(
6- ; CHECK-NEXT: [[C:%.*]] = fadd float [[A :%.*]], [[B:%.*]]
7- ; CHECK-NEXT: [[D:%.*]] = select i1 [[COND:%.*]], float [[C]], float [[A]]
6+ ; CHECK-NEXT: [[C:%.*]] = select i1 [[COND :%.*]], float [[B:%.*]], float -0.000000e+00
7+ ; CHECK-NEXT: [[D:%.*]] = fadd float [[C]], [[A:%.* ]]
88; CHECK-NEXT: ret float [[D]]
99;
1010 %C = fadd float %A , %B
@@ -14,8 +14,8 @@ define float @select_fadd(i1 %cond, float %A, float %B) {
1414
1515define float @select_fadd_swapped (i1 %cond , float %A , float %B ) {
1616; CHECK-LABEL: @select_fadd_swapped(
17- ; CHECK-NEXT: [[C:%.*]] = fadd float [[A :%.*]], [[B:%.*]]
18- ; CHECK-NEXT: [[D:%.*]] = select i1 [[COND:%.*]], float [[A ]], float [[C ]]
17+ ; CHECK-NEXT: [[C:%.*]] = select i1 [[COND :%.*]], float -0.000000e+00, float [[B:%.*]]
18+ ; CHECK-NEXT: [[D:%.*]] = fadd float [[C ]], [[A:%.* ]]
1919; CHECK-NEXT: ret float [[D]]
2020;
2121 %C = fadd float %A , %B
@@ -25,8 +25,8 @@ define float @select_fadd_swapped(i1 %cond, float %A, float %B) {
2525
2626define float @select_fadd_fast_math (i1 %cond , float %A , float %B ) {
2727; CHECK-LABEL: @select_fadd_fast_math(
28- ; CHECK-NEXT: [[C:%.*]] = fadd fast float [[A :%.*]], [[B:%.*]]
29- ; CHECK-NEXT: [[D:%.*]] = select i1 [[COND:%.*]], float [[C]], float [[A]]
28+ ; CHECK-NEXT: [[C:%.*]] = select i1 [[COND :%.*]], float [[B:%.*]], float -0.000000e+00
29+ ; CHECK-NEXT: [[D:%.*]] = fadd fast float [[C]], [[A:%.* ]]
3030; CHECK-NEXT: ret float [[D]]
3131;
3232 %C = fadd fast float %A , %B
@@ -36,8 +36,8 @@ define float @select_fadd_fast_math(i1 %cond, float %A, float %B) {
3636
3737define float @select_fadd_swapped_fast_math (i1 %cond , float %A , float %B ) {
3838; CHECK-LABEL: @select_fadd_swapped_fast_math(
39- ; CHECK-NEXT: [[C:%.*]] = fadd fast float [[A :%.*]], [[B:%.*]]
40- ; CHECK-NEXT: [[D:%.*]] = select i1 [[COND:%.*]], float [[A ]], float [[C ]]
39+ ; CHECK-NEXT: [[C:%.*]] = select i1 [[COND :%.*]], float -0.000000e+00, float [[B:%.*]]
40+ ; CHECK-NEXT: [[D:%.*]] = fadd fast float [[C ]], [[A:%.* ]]
4141; CHECK-NEXT: ret float [[D]]
4242;
4343 %C = fadd fast float %A , %B
@@ -47,8 +47,8 @@ define float @select_fadd_swapped_fast_math(i1 %cond, float %A, float %B) {
4747
4848define float @select_fmul (i1 %cond , float %A , float %B ) {
4949; CHECK-LABEL: @select_fmul(
50- ; CHECK-NEXT: [[C:%.*]] = fmul float [[A :%.*]], [[B:%.*]]
51- ; CHECK-NEXT: [[D:%.*]] = select i1 [[COND:%.*]], float [[C]], float [[A]]
50+ ; CHECK-NEXT: [[C:%.*]] = select i1 [[COND :%.*]], float [[B:%.*]], float 1.000000e+00
51+ ; CHECK-NEXT: [[D:%.*]] = fmul float [[C]], [[A:%.* ]]
5252; CHECK-NEXT: ret float [[D]]
5353;
5454 %C = fmul float %A , %B
@@ -58,8 +58,8 @@ define float @select_fmul(i1 %cond, float %A, float %B) {
5858
5959define float @select_fmul_swapped (i1 %cond , float %A , float %B ) {
6060; CHECK-LABEL: @select_fmul_swapped(
61- ; CHECK-NEXT: [[C:%.*]] = fmul float [[A :%.*]], [[B:%.*]]
62- ; CHECK-NEXT: [[D:%.*]] = select i1 [[COND:%.*]], float [[A ]], float [[C ]]
61+ ; CHECK-NEXT: [[C:%.*]] = select i1 [[COND :%.*]], float 1.000000e+00, float [[B:%.*]]
62+ ; CHECK-NEXT: [[D:%.*]] = fmul float [[C ]], [[A:%.* ]]
6363; CHECK-NEXT: ret float [[D]]
6464;
6565 %C = fmul float %A , %B
@@ -69,8 +69,8 @@ define float @select_fmul_swapped(i1 %cond, float %A, float %B) {
6969
7070define float @select_fmul_fast_math (i1 %cond , float %A , float %B ) {
7171; CHECK-LABEL: @select_fmul_fast_math(
72- ; CHECK-NEXT: [[C:%.*]] = fmul fast float [[A :%.*]], [[B:%.*]]
73- ; CHECK-NEXT: [[D:%.*]] = select i1 [[COND:%.*]], float [[C]], float [[A]]
72+ ; CHECK-NEXT: [[C:%.*]] = select i1 [[COND :%.*]], float [[B:%.*]], float 1.000000e+00
73+ ; CHECK-NEXT: [[D:%.*]] = fmul fast float [[C]], [[A:%.* ]]
7474; CHECK-NEXT: ret float [[D]]
7575;
7676 %C = fmul fast float %A , %B
@@ -80,8 +80,8 @@ define float @select_fmul_fast_math(i1 %cond, float %A, float %B) {
8080
8181define float @select_fmul_swapped_fast_math (i1 %cond , float %A , float %B ) {
8282; CHECK-LABEL: @select_fmul_swapped_fast_math(
83- ; CHECK-NEXT: [[C:%.*]] = fmul fast float [[A :%.*]], [[B:%.*]]
84- ; CHECK-NEXT: [[D:%.*]] = select i1 [[COND:%.*]], float [[A ]], float [[C ]]
83+ ; CHECK-NEXT: [[C:%.*]] = select i1 [[COND :%.*]], float 1.000000e+00, float [[B:%.*]]
84+ ; CHECK-NEXT: [[D:%.*]] = fmul fast float [[C ]], [[A:%.* ]]
8585; CHECK-NEXT: ret float [[D]]
8686;
8787 %C = fmul fast float %A , %B
@@ -91,8 +91,8 @@ define float @select_fmul_swapped_fast_math(i1 %cond, float %A, float %B) {
9191
9292define float @select_fsub (i1 %cond , float %A , float %B ) {
9393; CHECK-LABEL: @select_fsub(
94- ; CHECK-NEXT: [[C:%.*]] = fsub float [[A :%.*]], [[B:%.*]]
95- ; CHECK-NEXT: [[D:%.*]] = select i1 [[COND :%.*]], float [[C]], float [[A ]]
94+ ; CHECK-NEXT: [[C:%.*]] = select i1 [[COND :%.*]], float [[B:%.*]], float 0.000000e+00
95+ ; CHECK-NEXT: [[D:%.*]] = fsub float [[A :%.*]], [[C]]
9696; CHECK-NEXT: ret float [[D]]
9797;
9898 %C = fsub float %A , %B
@@ -102,8 +102,8 @@ define float @select_fsub(i1 %cond, float %A, float %B) {
102102
103103define float @select_fsub_swapped (i1 %cond , float %A , float %B ) {
104104; CHECK-LABEL: @select_fsub_swapped(
105- ; CHECK-NEXT: [[C:%.*]] = fsub float [[A :%.*]], [[B:%.*]]
106- ; CHECK-NEXT: [[D:%.*]] = select i1 [[COND :%.*]], float [[A]], float [[C]]
105+ ; CHECK-NEXT: [[C:%.*]] = select i1 [[COND :%.*]], float 0.000000e+00, float [[B:%.*]]
106+ ; CHECK-NEXT: [[D:%.*]] = fsub float [[A :%.*]], [[C]]
107107; CHECK-NEXT: ret float [[D]]
108108;
109109 %C = fsub float %A , %B
@@ -113,8 +113,8 @@ define float @select_fsub_swapped(i1 %cond, float %A, float %B) {
113113
114114define float @select_fsub_fast_math (i1 %cond , float %A , float %B ) {
115115; CHECK-LABEL: @select_fsub_fast_math(
116- ; CHECK-NEXT: [[C:%.*]] = fsub fast float [[A :%.*]], [[B:%.*]]
117- ; CHECK-NEXT: [[D:%.*]] = select i1 [[COND :%.*]], float [[C]], float [[A ]]
116+ ; CHECK-NEXT: [[C:%.*]] = select i1 [[COND :%.*]], float [[B:%.*]], float 0.000000e+00
117+ ; CHECK-NEXT: [[D:%.*]] = fsub fast float [[A :%.*]], [[C]]
118118; CHECK-NEXT: ret float [[D]]
119119;
120120 %C = fsub fast float %A , %B
@@ -124,8 +124,8 @@ define float @select_fsub_fast_math(i1 %cond, float %A, float %B) {
124124
125125define float @select_fsub_swapped_fast_math (i1 %cond , float %A , float %B ) {
126126; CHECK-LABEL: @select_fsub_swapped_fast_math(
127- ; CHECK-NEXT: [[C:%.*]] = fsub fast float [[A :%.*]], [[B:%.*]]
128- ; CHECK-NEXT: [[D:%.*]] = select i1 [[COND :%.*]], float [[A]], float [[C]]
127+ ; CHECK-NEXT: [[C:%.*]] = select i1 [[COND :%.*]], float 0.000000e+00, float [[B:%.*]]
128+ ; CHECK-NEXT: [[D:%.*]] = fsub fast float [[A :%.*]], [[C]]
129129; CHECK-NEXT: ret float [[D]]
130130;
131131 %C = fsub fast float %A , %B
@@ -147,8 +147,8 @@ define float @select_fsub_invalid(i1 %cond, float %A, float %B) {
147147
148148define float @select_fdiv (i1 %cond , float %A , float %B ) {
149149; CHECK-LABEL: @select_fdiv(
150- ; CHECK-NEXT: [[C:%.*]] = fdiv float [[A :%.*]], [[B:%.*]]
151- ; CHECK-NEXT: [[D:%.*]] = select i1 [[COND :%.*]], float [[C]], float [[A ]]
150+ ; CHECK-NEXT: [[C:%.*]] = select i1 [[COND :%.*]], float [[B:%.*]], float 1.000000e+00
151+ ; CHECK-NEXT: [[D:%.*]] = fdiv float [[A :%.*]], [[C]]
152152; CHECK-NEXT: ret float [[D]]
153153;
154154 %C = fdiv float %A , %B
@@ -158,8 +158,8 @@ define float @select_fdiv(i1 %cond, float %A, float %B) {
158158
159159define float @select_fdiv_swapped (i1 %cond , float %A , float %B ) {
160160; CHECK-LABEL: @select_fdiv_swapped(
161- ; CHECK-NEXT: [[C:%.*]] = fdiv float [[A :%.*]], [[B:%.*]]
162- ; CHECK-NEXT: [[D:%.*]] = select i1 [[COND :%.*]], float [[A]], float [[C]]
161+ ; CHECK-NEXT: [[C:%.*]] = select i1 [[COND :%.*]], float 1.000000e+00, float [[B:%.*]]
162+ ; CHECK-NEXT: [[D:%.*]] = fdiv float [[A :%.*]], [[C]]
163163; CHECK-NEXT: ret float [[D]]
164164;
165165 %C = fdiv float %A , %B
@@ -169,8 +169,8 @@ define float @select_fdiv_swapped(i1 %cond, float %A, float %B) {
169169
170170define float @select_fdiv_fast_math (i1 %cond , float %A , float %B ) {
171171; CHECK-LABEL: @select_fdiv_fast_math(
172- ; CHECK-NEXT: [[C:%.*]] = fdiv fast float [[A :%.*]], [[B:%.*]]
173- ; CHECK-NEXT: [[D:%.*]] = select i1 [[COND :%.*]], float [[C]], float [[A ]]
172+ ; CHECK-NEXT: [[C:%.*]] = select i1 [[COND :%.*]], float [[B:%.*]], float 1.000000e+00
173+ ; CHECK-NEXT: [[D:%.*]] = fdiv fast float [[A :%.*]], [[C]]
174174; CHECK-NEXT: ret float [[D]]
175175;
176176 %C = fdiv fast float %A , %B
@@ -180,8 +180,8 @@ define float @select_fdiv_fast_math(i1 %cond, float %A, float %B) {
180180
181181define float @select_fdiv_swapped_fast_math (i1 %cond , float %A , float %B ) {
182182; CHECK-LABEL: @select_fdiv_swapped_fast_math(
183- ; CHECK-NEXT: [[C:%.*]] = fdiv fast float [[A :%.*]], [[B:%.*]]
184- ; CHECK-NEXT: [[D:%.*]] = select i1 [[COND :%.*]], float [[A]], float [[C]]
183+ ; CHECK-NEXT: [[C:%.*]] = select i1 [[COND :%.*]], float 1.000000e+00, float [[B:%.*]]
184+ ; CHECK-NEXT: [[D:%.*]] = fdiv fast float [[A :%.*]], [[C]]
185185; CHECK-NEXT: ret float [[D]]
186186;
187187 %C = fdiv fast float %A , %B
0 commit comments