3
3
4
4
define float @select_fcmp_fsub_oeq (float %x ) {
5
5
; CHECK-LABEL: @select_fcmp_fsub_oeq(
6
- ; CHECK-NEXT: [[FCMP:%.*]] = fcmp oeq float [[X:%.*]], 2.000000e+00
7
- ; CHECK-NEXT: [[FADD:%.*]] = fsub float [[X]], 2.000000e+00
8
- ; CHECK-NEXT: [[SEL:%.*]] = select i1 [[FCMP]], float [[FADD]], float 0.000000e+00
9
- ; CHECK-NEXT: ret float [[SEL]]
6
+ ; CHECK-NEXT: ret float 0.000000e+00
10
7
;
11
8
%fcmp = fcmp oeq float %x , 2 .0
12
9
%fadd = fsub float %x , 2 .0
@@ -42,10 +39,7 @@ define float @select_fcmp_fsub_ueq(float %x) {
42
39
43
40
define float @select_fcmp_fsub_ueq_nnan (float %x ) {
44
41
; CHECK-LABEL: @select_fcmp_fsub_ueq_nnan(
45
- ; CHECK-NEXT: [[FCMP:%.*]] = fcmp nnan ueq float [[X:%.*]], 2.000000e+00
46
- ; CHECK-NEXT: [[FADD:%.*]] = fsub float [[X]], 2.000000e+00
47
- ; CHECK-NEXT: [[SEL:%.*]] = select i1 [[FCMP]], float [[FADD]], float 0.000000e+00
48
- ; CHECK-NEXT: ret float [[SEL]]
42
+ ; CHECK-NEXT: ret float 0.000000e+00
49
43
;
50
44
%fcmp = fcmp nnan ueq float %x , 2 .0
51
45
%fadd = fsub float %x , 2 .0
@@ -55,10 +49,7 @@ define float @select_fcmp_fsub_ueq_nnan(float %x) {
55
49
56
50
define float @select_fcmp_fsub_une (float %x ) {
57
51
; CHECK-LABEL: @select_fcmp_fsub_une(
58
- ; CHECK-NEXT: [[FCMP:%.*]] = fcmp une float [[X:%.*]], 2.000000e+00
59
- ; CHECK-NEXT: [[FADD:%.*]] = fsub float [[X]], 2.000000e+00
60
- ; CHECK-NEXT: [[SEL:%.*]] = select i1 [[FCMP]], float 0.000000e+00, float [[FADD]]
61
- ; CHECK-NEXT: ret float [[SEL]]
52
+ ; CHECK-NEXT: ret float 0.000000e+00
62
53
;
63
54
%fcmp = fcmp une float %x , 2 .0
64
55
%fadd = fsub float %x , 2 .0
@@ -94,10 +85,7 @@ define float @select_fcmp_fsub_one(float %x) {
94
85
95
86
define float @select_fcmp_fsub_one_nnan (float %x ) {
96
87
; CHECK-LABEL: @select_fcmp_fsub_one_nnan(
97
- ; CHECK-NEXT: [[FCMP:%.*]] = fcmp nnan one float [[X:%.*]], 2.000000e+00
98
- ; CHECK-NEXT: [[FADD:%.*]] = fsub float [[X]], 2.000000e+00
99
- ; CHECK-NEXT: [[SEL:%.*]] = select i1 [[FCMP]], float 0.000000e+00, float [[FADD]]
100
- ; CHECK-NEXT: ret float [[SEL]]
88
+ ; CHECK-NEXT: ret float 0.000000e+00
101
89
;
102
90
%fcmp = fcmp nnan one float %x , 2 .0
103
91
%fadd = fsub float %x , 2 .0
@@ -107,10 +95,7 @@ define float @select_fcmp_fsub_one_nnan(float %x) {
107
95
108
96
define float @select_fcmp_fadd (float %x ) {
109
97
; CHECK-LABEL: @select_fcmp_fadd(
110
- ; CHECK-NEXT: [[FCMP:%.*]] = fcmp oeq float [[X:%.*]], 2.000000e+00
111
- ; CHECK-NEXT: [[FADD:%.*]] = fadd float [[X]], 2.000000e+00
112
- ; CHECK-NEXT: [[SEL:%.*]] = select i1 [[FCMP]], float [[FADD]], float 4.000000e+00
113
- ; CHECK-NEXT: ret float [[SEL]]
98
+ ; CHECK-NEXT: ret float 4.000000e+00
114
99
;
115
100
%fcmp = fcmp oeq float %x , 2 .0
116
101
%fadd = fadd float %x , 2 .0
@@ -120,10 +105,7 @@ define float @select_fcmp_fadd(float %x) {
120
105
121
106
define <2 x float > @select_fcmp_fadd_vec (<2 x float > %x ) {
122
107
; CHECK-LABEL: @select_fcmp_fadd_vec(
123
- ; CHECK-NEXT: [[FCMP:%.*]] = fcmp oeq <2 x float> [[X:%.*]], splat (float 2.000000e+00)
124
- ; CHECK-NEXT: [[FADD:%.*]] = fadd <2 x float> [[X]], splat (float 2.000000e+00)
125
- ; CHECK-NEXT: [[SEL:%.*]] = select <2 x i1> [[FCMP]], <2 x float> [[FADD]], <2 x float> splat (float 4.000000e+00)
126
- ; CHECK-NEXT: ret <2 x float> [[SEL]]
108
+ ; CHECK-NEXT: ret <2 x float> splat (float 4.000000e+00)
127
109
;
128
110
%fcmp = fcmp oeq <2 x float > %x , <float 2 .0 , float 2 .0 >
129
111
%fadd = fadd <2 x float > %x , <float 2 .0 , float 2 .0 >
@@ -134,10 +116,8 @@ define <2 x float> @select_fcmp_fadd_vec(<2 x float> %x) {
134
116
135
117
define float @select_fcmp_fmul_nonrefinement (float %x , float %y ) {
136
118
; CHECK-LABEL: @select_fcmp_fmul_nonrefinement(
137
- ; CHECK-NEXT: [[FCMP:%.*]] = fcmp oeq float [[X:%.*]], 1.000000e+00
138
- ; CHECK-NEXT: [[FMUL:%.*]] = fmul float [[Y:%.*]], [[X]]
139
- ; CHECK-NEXT: [[SEL:%.*]] = select i1 [[FCMP]], float [[Y]], float [[FMUL]]
140
- ; CHECK-NEXT: ret float [[SEL]]
119
+ ; CHECK-NEXT: [[FMUL:%.*]] = fmul float [[Y:%.*]], [[X:%.*]]
120
+ ; CHECK-NEXT: ret float [[FMUL]]
141
121
;
142
122
%fcmp = fcmp oeq float %x , 1 .0
143
123
%fmul = fmul float %y , %x
@@ -147,10 +127,7 @@ define float @select_fcmp_fmul_nonrefinement(float %x, float %y) {
147
127
148
128
define float @select_fcmp_fmul (float %x ) {
149
129
; CHECK-LABEL: @select_fcmp_fmul(
150
- ; CHECK-NEXT: [[FCMP:%.*]] = fcmp oeq float [[X:%.*]], 2.000000e+00
151
- ; CHECK-NEXT: [[FMUL:%.*]] = fmul float [[X]], 2.000000e+00
152
- ; CHECK-NEXT: [[SEL:%.*]] = select i1 [[FCMP]], float [[FMUL]], float 4.000000e+00
153
- ; CHECK-NEXT: ret float [[SEL]]
130
+ ; CHECK-NEXT: ret float 4.000000e+00
154
131
;
155
132
%fcmp = fcmp oeq float %x , 2 .0
156
133
%fmul = fmul float %x , 2 .0
@@ -160,10 +137,8 @@ define float @select_fcmp_fmul(float %x) {
160
137
161
138
define float @select_fcmp_fdiv_nonrefinement (float %x , float %y ) {
162
139
; CHECK-LABEL: @select_fcmp_fdiv_nonrefinement(
163
- ; CHECK-NEXT: [[FCMP:%.*]] = fcmp oeq float [[X:%.*]], 1.000000e+00
164
- ; CHECK-NEXT: [[FDIV:%.*]] = fdiv float [[Y:%.*]], [[X]]
165
- ; CHECK-NEXT: [[SEL:%.*]] = select i1 [[FCMP]], float [[Y]], float [[FDIV]]
166
- ; CHECK-NEXT: ret float [[SEL]]
140
+ ; CHECK-NEXT: [[FDIV:%.*]] = fdiv float [[Y:%.*]], [[X:%.*]]
141
+ ; CHECK-NEXT: ret float [[FDIV]]
167
142
;
168
143
%fcmp = fcmp oeq float %x , 1 .0
169
144
%fdiv = fdiv float %y , %x
@@ -173,10 +148,7 @@ define float @select_fcmp_fdiv_nonrefinement(float %x, float %y) {
173
148
174
149
define float @select_fcmp_fdiv (float %x ) {
175
150
; CHECK-LABEL: @select_fcmp_fdiv(
176
- ; CHECK-NEXT: [[FCMP:%.*]] = fcmp oeq float [[X:%.*]], 2.000000e+00
177
- ; CHECK-NEXT: [[FDIV:%.*]] = fdiv float [[X]], 2.000000e+00
178
- ; CHECK-NEXT: [[SEL:%.*]] = select i1 [[FCMP]], float [[FDIV]], float 1.000000e+00
179
- ; CHECK-NEXT: ret float [[SEL]]
151
+ ; CHECK-NEXT: ret float 1.000000e+00
180
152
;
181
153
%fcmp = fcmp oeq float %x , 2 .0
182
154
%fdiv = fdiv float %x , 2 .0
@@ -186,10 +158,7 @@ define float @select_fcmp_fdiv(float %x) {
186
158
187
159
define float @select_fcmp_frem (float %x ) {
188
160
; CHECK-LABEL: @select_fcmp_frem(
189
- ; CHECK-NEXT: [[FCMP:%.*]] = fcmp oeq float [[X:%.*]], 3.000000e+00
190
- ; CHECK-NEXT: [[FREM:%.*]] = frem float [[X]], 2.000000e+00
191
- ; CHECK-NEXT: [[SEL:%.*]] = select i1 [[FCMP]], float [[FREM]], float 1.000000e+00
192
- ; CHECK-NEXT: ret float [[SEL]]
161
+ ; CHECK-NEXT: ret float 1.000000e+00
193
162
;
194
163
%fcmp = fcmp oeq float %x , 3 .0
195
164
%frem = frem float %x , 2 .0
@@ -199,10 +168,7 @@ define float @select_fcmp_frem(float %x) {
199
168
200
169
define <2 x float > @select_fcmp_insertelement (<2 x float > %x ) {
201
170
; CHECK-LABEL: @select_fcmp_insertelement(
202
- ; CHECK-NEXT: [[FCMP:%.*]] = fcmp oeq <2 x float> [[X:%.*]], splat (float 2.000000e+00)
203
- ; CHECK-NEXT: [[INSERT:%.*]] = insertelement <2 x float> [[X]], float 4.000000e+00, i64 0
204
- ; CHECK-NEXT: [[SEL:%.*]] = select <2 x i1> [[FCMP]], <2 x float> [[INSERT]], <2 x float> <float 4.000000e+00, float 2.000000e+00>
205
- ; CHECK-NEXT: ret <2 x float> [[SEL]]
171
+ ; CHECK-NEXT: ret <2 x float> <float 4.000000e+00, float 2.000000e+00>
206
172
;
207
173
%fcmp = fcmp oeq <2 x float > %x , <float 2 .0 , float 2 .0 >
208
174
%insert = insertelement <2 x float > %x , float 4 .0 , i64 0
@@ -212,10 +178,7 @@ define <2 x float> @select_fcmp_insertelement(<2 x float> %x) {
212
178
213
179
define <4 x float > @select_fcmp_shufflevector_select (<4 x float > %x ) {
214
180
; CHECK-LABEL: @select_fcmp_shufflevector_select(
215
- ; CHECK-NEXT: [[FCMP:%.*]] = fcmp oeq <4 x float> [[X:%.*]], splat (float 2.000000e+00)
216
- ; CHECK-NEXT: [[SHUFFLE:%.*]] = shufflevector <4 x float> [[X]], <4 x float> poison, <4 x i32> <i32 4, i32 1, i32 6, i32 3>
217
- ; CHECK-NEXT: [[SEL:%.*]] = select <4 x i1> [[FCMP]], <4 x float> [[SHUFFLE]], <4 x float> <float poison, float 2.000000e+00, float poison, float 2.000000e+00>
218
- ; CHECK-NEXT: ret <4 x float> [[SEL]]
181
+ ; CHECK-NEXT: ret <4 x float> <float poison, float 2.000000e+00, float poison, float 2.000000e+00>
219
182
;
220
183
%fcmp = fcmp oeq <4 x float > %x , <float 2 .0 , float 2 .0 , float 2 .0 , float 2 .0 >
221
184
%shuffle = shufflevector <4 x float > %x , <4 x float > poison, <4 x i32 > <i32 4 , i32 1 , i32 6 , i32 3 >
@@ -240,10 +203,7 @@ define float @select_fcmp_sin_nonrefinement(float %x) {
240
203
; The hexfloat constant is PI / 2.
241
204
define float @select_fcmp_sin (float %x ) {
242
205
; CHECK-LABEL: @select_fcmp_sin(
243
- ; CHECK-NEXT: [[FCMP:%.*]] = fcmp oeq float [[X:%.*]], 0x3FF921FB60000000
244
- ; CHECK-NEXT: [[SIN:%.*]] = call float @llvm.sin.f32(float [[X]])
245
- ; CHECK-NEXT: [[SEL:%.*]] = select i1 [[FCMP]], float [[SIN]], float 1.000000e+00
246
- ; CHECK-NEXT: ret float [[SEL]]
206
+ ; CHECK-NEXT: ret float 1.000000e+00
247
207
;
248
208
%fcmp = fcmp oeq float %x , 0x3FF921FB60000000
249
209
%sin = call float @llvm.sin.f32 (float %x )
@@ -268,10 +228,7 @@ define float @select_fcmp_cos_nonrefinement(float %x) {
268
228
; The hexfloat constant is PI.
269
229
define float @select_fcmp_cos (float %x ) {
270
230
; CHECK-LABEL: @select_fcmp_cos(
271
- ; CHECK-NEXT: [[FCMP:%.*]] = fcmp oeq float [[X:%.*]], 0x400921FB60000000
272
- ; CHECK-NEXT: [[COS:%.*]] = call float @llvm.cos.f32(float [[X]])
273
- ; CHECK-NEXT: [[SEL:%.*]] = select i1 [[FCMP]], float [[COS]], float -1.000000e+00
274
- ; CHECK-NEXT: ret float [[SEL]]
231
+ ; CHECK-NEXT: ret float -1.000000e+00
275
232
;
276
233
%fcmp = fcmp oeq float %x , 0x400921FB60000000
277
234
%cos = call float @llvm.cos.f32 (float %x )
0 commit comments