3
3
4
4
define float @select_fadd (i1 %cond , float %A , float %B ) {
5
5
; 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:%.* ]]
8
8
; CHECK-NEXT: ret float [[D]]
9
9
;
10
10
%C = fadd float %A , %B
@@ -14,8 +14,8 @@ define float @select_fadd(i1 %cond, float %A, float %B) {
14
14
15
15
define float @select_fadd_swapped (i1 %cond , float %A , float %B ) {
16
16
; 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:%.* ]]
19
19
; CHECK-NEXT: ret float [[D]]
20
20
;
21
21
%C = fadd float %A , %B
@@ -25,8 +25,8 @@ define float @select_fadd_swapped(i1 %cond, float %A, float %B) {
25
25
26
26
define float @select_fadd_fast_math (i1 %cond , float %A , float %B ) {
27
27
; 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:%.* ]]
30
30
; CHECK-NEXT: ret float [[D]]
31
31
;
32
32
%C = fadd fast float %A , %B
@@ -36,8 +36,8 @@ define float @select_fadd_fast_math(i1 %cond, float %A, float %B) {
36
36
37
37
define float @select_fadd_swapped_fast_math (i1 %cond , float %A , float %B ) {
38
38
; 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:%.* ]]
41
41
; CHECK-NEXT: ret float [[D]]
42
42
;
43
43
%C = fadd fast float %A , %B
@@ -47,8 +47,8 @@ define float @select_fadd_swapped_fast_math(i1 %cond, float %A, float %B) {
47
47
48
48
define float @select_fmul (i1 %cond , float %A , float %B ) {
49
49
; 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:%.* ]]
52
52
; CHECK-NEXT: ret float [[D]]
53
53
;
54
54
%C = fmul float %A , %B
@@ -58,8 +58,8 @@ define float @select_fmul(i1 %cond, float %A, float %B) {
58
58
59
59
define float @select_fmul_swapped (i1 %cond , float %A , float %B ) {
60
60
; 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:%.* ]]
63
63
; CHECK-NEXT: ret float [[D]]
64
64
;
65
65
%C = fmul float %A , %B
@@ -69,8 +69,8 @@ define float @select_fmul_swapped(i1 %cond, float %A, float %B) {
69
69
70
70
define float @select_fmul_fast_math (i1 %cond , float %A , float %B ) {
71
71
; 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:%.* ]]
74
74
; CHECK-NEXT: ret float [[D]]
75
75
;
76
76
%C = fmul fast float %A , %B
@@ -80,8 +80,8 @@ define float @select_fmul_fast_math(i1 %cond, float %A, float %B) {
80
80
81
81
define float @select_fmul_swapped_fast_math (i1 %cond , float %A , float %B ) {
82
82
; 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:%.* ]]
85
85
; CHECK-NEXT: ret float [[D]]
86
86
;
87
87
%C = fmul fast float %A , %B
@@ -91,8 +91,8 @@ define float @select_fmul_swapped_fast_math(i1 %cond, float %A, float %B) {
91
91
92
92
define float @select_fsub (i1 %cond , float %A , float %B ) {
93
93
; 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]]
96
96
; CHECK-NEXT: ret float [[D]]
97
97
;
98
98
%C = fsub float %A , %B
@@ -102,8 +102,8 @@ define float @select_fsub(i1 %cond, float %A, float %B) {
102
102
103
103
define float @select_fsub_swapped (i1 %cond , float %A , float %B ) {
104
104
; 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]]
107
107
; CHECK-NEXT: ret float [[D]]
108
108
;
109
109
%C = fsub float %A , %B
@@ -113,8 +113,8 @@ define float @select_fsub_swapped(i1 %cond, float %A, float %B) {
113
113
114
114
define float @select_fsub_fast_math (i1 %cond , float %A , float %B ) {
115
115
; 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]]
118
118
; CHECK-NEXT: ret float [[D]]
119
119
;
120
120
%C = fsub fast float %A , %B
@@ -124,8 +124,8 @@ define float @select_fsub_fast_math(i1 %cond, float %A, float %B) {
124
124
125
125
define float @select_fsub_swapped_fast_math (i1 %cond , float %A , float %B ) {
126
126
; 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]]
129
129
; CHECK-NEXT: ret float [[D]]
130
130
;
131
131
%C = fsub fast float %A , %B
@@ -147,8 +147,8 @@ define float @select_fsub_invalid(i1 %cond, float %A, float %B) {
147
147
148
148
define float @select_fdiv (i1 %cond , float %A , float %B ) {
149
149
; 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]]
152
152
; CHECK-NEXT: ret float [[D]]
153
153
;
154
154
%C = fdiv float %A , %B
@@ -158,8 +158,8 @@ define float @select_fdiv(i1 %cond, float %A, float %B) {
158
158
159
159
define float @select_fdiv_swapped (i1 %cond , float %A , float %B ) {
160
160
; 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]]
163
163
; CHECK-NEXT: ret float [[D]]
164
164
;
165
165
%C = fdiv float %A , %B
@@ -169,8 +169,8 @@ define float @select_fdiv_swapped(i1 %cond, float %A, float %B) {
169
169
170
170
define float @select_fdiv_fast_math (i1 %cond , float %A , float %B ) {
171
171
; 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]]
174
174
; CHECK-NEXT: ret float [[D]]
175
175
;
176
176
%C = fdiv fast float %A , %B
@@ -180,8 +180,8 @@ define float @select_fdiv_fast_math(i1 %cond, float %A, float %B) {
180
180
181
181
define float @select_fdiv_swapped_fast_math (i1 %cond , float %A , float %B ) {
182
182
; 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]]
185
185
; CHECK-NEXT: ret float [[D]]
186
186
;
187
187
%C = fdiv fast float %A , %B
0 commit comments