Lines Matching full:arg
67 define float @ret_select_clamp_nan_to_zero_uno(float %arg) {
69 ; CHECK-SAME: (float [[ARG:%.*]]) #[[ATTR1]] {
70 ; CHECK-NEXT: [[IS_NAN:%.*]] = fcmp uno float [[ARG]], 0.000000e+00
71 ; CHECK-NEXT: [[SELECT:%.*]] = select i1 [[IS_NAN]], float 0.000000e+00, float [[ARG]]
74 %is.nan = fcmp uno float %arg, 0.0
75 %select = select i1 %is.nan, float 0.0, float %arg
79 define float @ret_select_clamp_nan_to_zero_ord(float %arg) {
81 ; CHECK-SAME: (float [[ARG:%.*]]) #[[ATTR1]] {
82 ; CHECK-NEXT: [[NOT_NAN:%.*]] = fcmp ord float [[ARG]], 0.000000e+00
83 ; CHECK-NEXT: [[SELECT:%.*]] = select i1 [[NOT_NAN]], float [[ARG]], float 0.000000e+00
86 %not.nan = fcmp ord float %arg, 0.0
87 %select = select i1 %not.nan, float %arg, float 0.0
91 define float @ret_select_clamp_onlynans(float %arg) {
93 ; CHECK-SAME: (float [[ARG:%.*]]) #[[ATTR1]] {
94 ; CHECK-NEXT: [[NOT_NAN:%.*]] = fcmp ord float [[ARG]], 0.000000e+00
95 ; CHECK-NEXT: [[SELECT:%.*]] = select i1 [[NOT_NAN]], float 0x7FF8000000000000, float [[ARG]]
98 %not.nan = fcmp ord float %arg, 0.0
99 %select = select i1 %not.nan, float 0x7FF8000000000000, float %arg
103 define float @clamp_nonfinite_to_normal_olt(float %arg) {
105 ; CHECK-SAME: (float [[ARG:%.*]]) #[[ATTR1]] {
106 ; CHECK-NEXT: [[FABS:%.*]] = call float @llvm.fabs.f32(float [[ARG]]) #[[ATTR2]]
108 ; CHECK-NEXT: [[SELECT:%.*]] = select i1 [[IS_FINITE]], float [[ARG]], float 1.024000e+03
111 %fabs = call float @llvm.fabs.f32(float %arg)
113 %select = select i1 %is.finite, float %arg, float 1024.0
117 define float @clamp_eq_inf_to_pnormal(float %arg) {
119 ; CHECK-SAME: (float [[ARG:%.*]]) #[[ATTR1]] {
120 ; CHECK-NEXT: [[FABS:%.*]] = call float @llvm.fabs.f32(float [[ARG]]) #[[ATTR2]]
122 ; CHECK-NEXT: [[SELECT:%.*]] = select i1 [[IS_INF]], float 1.024000e+03, float [[ARG]]
125 %fabs = call float @llvm.fabs.f32(float %arg)
127 %select = select i1 %is.inf, float 1024.0, float %arg
131 define float @clamp_eq_pinf_to_pnormal(float %arg) {
133 ; CHECK-SAME: (float [[ARG:%.*]]) #[[ATTR1]] {
134 ; CHECK-NEXT: [[IS_INF:%.*]] = fcmp oeq float [[ARG]], 0x7FF0000000000000
135 ; CHECK-NEXT: [[SELECT:%.*]] = select i1 [[IS_INF]], float 1.024000e+03, float [[ARG]]
138 %is.inf = fcmp oeq float %arg, 0x7FF0000000000000
139 %select = select i1 %is.inf, float 1024.0, float %arg
143 define float @clamp_eq_ninf_to_negnormal(float %arg) {
145 ; CHECK-SAME: (float [[ARG:%.*]]) #[[ATTR1]] {
146 ; CHECK-NEXT: [[IS_INF:%.*]] = fcmp oeq float [[ARG]], 0xFFF0000000000000
147 ; CHECK-NEXT: [[SELECT:%.*]] = select i1 [[IS_INF]], float -1.024000e+03, float [[ARG]]
150 %is.inf = fcmp oeq float %arg, 0xFFF0000000000000
151 %select = select i1 %is.inf, float -1024.0, float %arg
155 define float @clamp_eq_inf_to_nan(float %arg) {
157 ; CHECK-SAME: (float [[ARG:%.*]]) #[[ATTR1]] {
158 ; CHECK-NEXT: [[FABS:%.*]] = call float @llvm.fabs.f32(float [[ARG]]) #[[ATTR2]]
160 ; CHECK-NEXT: [[SELECT:%.*]] = select i1 [[IS_INF]], float 0x7FF8000000000000, float [[ARG]]
163 %fabs = call float @llvm.fabs.f32(float %arg)
165 %select = select i1 %is.inf, float 0x7FF8000000000000, float %arg
181 define float @isfinite_select_fabs_val_0(float %arg) {
183 ; CHECK-SAME: (float [[ARG:%.*]]) #[[ATTR1]] {
184 …[[FABS:%.*]] = call nofpclass(ninf nzero nsub nnorm) float @llvm.fabs.f32(float [[ARG]]) #[[ATTR2]]
189 %fabs = call float @llvm.fabs.f32(float %arg)
195 define float @isfinite_select_fabs_val_1(float %arg) {
197 ; CHECK-SAME: (float [[ARG:%.*]]) #[[ATTR1]] {
198 …[[FABS:%.*]] = call nofpclass(ninf nzero nsub nnorm) float @llvm.fabs.f32(float [[ARG]]) #[[ATTR2]]
203 %fabs = call float @llvm.fabs.f32(float %arg)
209 define float @clamp_denormal_to_poszero(float %arg) {
211 ; CHECK-SAME: (float [[ARG:%.*]]) #[[ATTR1]] {
212 ; CHECK-NEXT: [[FABS:%.*]] = call float @llvm.fabs.f32(float [[ARG]]) #[[ATTR2]]
214 ; CHECK-NEXT: [[SELECT:%.*]] = select i1 [[IS_DENORM_OR_ZERO]], float 0.000000e+00, float [[ARG]]
217 %fabs = call float @llvm.fabs.f32(float %arg)
219 %select = select i1 %is.denorm.or.zero, float 0.0, float %arg
223 define float @clamp_denormal_to_negzero(float %arg) {
225 ; CHECK-SAME: (float [[ARG:%.*]]) #[[ATTR1]] {
226 ; CHECK-NEXT: [[FABS:%.*]] = call float @llvm.fabs.f32(float [[ARG]]) #[[ATTR2]]
228 ; CHECK-NEXT: [[SELECT:%.*]] = select i1 [[IS_DENORM_OR_ZERO]], float -0.000000e+00, float [[ARG…
231 %fabs = call float @llvm.fabs.f32(float %arg)
233 %select = select i1 %is.denorm.or.zero, float -0.0, float %arg
237 define float @clamp_denormal_to_zero_copysign(float %arg) {
239 ; CHECK-SAME: (float [[ARG:%.*]]) #[[ATTR1]] {
240 ; CHECK-NEXT: [[FABS:%.*]] = call float @llvm.fabs.f32(float [[ARG]]) #[[ATTR2]]
242 … [[ZERO:%.*]] = call float @llvm.copysign.f32(float noundef 0.000000e+00, float [[ARG]]) #[[ATTR2]]
243 ; CHECK-NEXT: [[SELECT:%.*]] = select i1 [[IS_DENORM_OR_ZERO]], float [[ZERO]], float [[ARG]]
246 %fabs = call float @llvm.fabs.f32(float %arg)
248 %zero = call float @llvm.copysign.f32(float 0.0, float %arg)
249 %select = select i1 %is.denorm.or.zero, float %zero, float %arg
253 define float @clamp_only_denormal_or_zero(float %arg) {
255 ; CHECK-SAME: (float [[ARG:%.*]]) #[[ATTR1]] {
256 ; CHECK-NEXT: [[FABS:%.*]] = call float @llvm.fabs.f32(float [[ARG]]) #[[ATTR2]]
258 ; CHECK-NEXT: [[SELECT:%.*]] = select i1 [[IS_DENORM_OR_ZERO]], float [[ARG]], float 0.000000e+00
261 %fabs = call float @llvm.fabs.f32(float %arg)
263 %select = select i1 %is.denorm.or.zero, float %arg, float 0.0
267 define float @clamp_inf_to_fabs(float %arg) {
269 ; CHECK-SAME: (float [[ARG:%.*]]) #[[ATTR1]] {
270 ; CHECK-NEXT: [[FABS:%.*]] = call float @llvm.fabs.f32(float [[ARG]]) #[[ATTR2]]
272 ; CHECK-NEXT: [[SELECT:%.*]] = select i1 [[IS_INF]], float [[FABS]], float [[ARG]]
275 %fabs = call float @llvm.fabs.f32(float %arg)
277 %select = select i1 %is.inf, float %fabs, float %arg
281 define float @not_clamp_inf_to_fabs(float %arg) {
283 ; CHECK-SAME: (float [[ARG:%.*]]) #[[ATTR1]] {
284 …[[FABS:%.*]] = call nofpclass(ninf nzero nsub nnorm) float @llvm.fabs.f32(float [[ARG]]) #[[ATTR2]]
286 ; CHECK-NEXT: [[SELECT:%.*]] = select i1 [[IS_INF]], float [[ARG]], float [[FABS]]
289 %fabs = call float @llvm.fabs.f32(float %arg)
291 %select = select i1 %is.inf, float %arg, float %fabs
295 define float @clamp_zero_to_inf(float %arg) {
297 ; CHECK-SAME: (float [[ARG:%.*]]) #[[ATTR1]] {
298 ; CHECK-NEXT: [[IS_ZERO:%.*]] = fcmp oeq float [[ARG]], 0.000000e+00
299 ; CHECK-NEXT: [[SELECT:%.*]] = select i1 [[IS_ZERO]], float 0x7FF0000000000000, float [[ARG]]
302 %is.zero = fcmp oeq float %arg, 0.0
303 %select = select i1 %is.zero, float 0x7FF0000000000000, float %arg
307 define float @clamp_zero_to_only_inf(float %arg) {
309 ; CHECK-SAME: (float [[ARG:%.*]]) #[[ATTR1]] {
310 ; CHECK-NEXT: [[IS_ZERO:%.*]] = fcmp oeq float [[ARG]], 0.000000e+00
311 ; CHECK-NEXT: [[SELECT:%.*]] = select i1 [[IS_ZERO]], float [[ARG]], float 0x7FF0000000000000
314 %is.zero = fcmp oeq float %arg, 0.0
315 %select = select i1 %is.zero, float %arg, float 0x7FF0000000000000
319 define float @clamp_is_class_subnormal_or_inf_to_nan(float %arg) {
321 ; CHECK-SAME: (float [[ARG:%.*]]) #[[ATTR1]] {
322 ; CHECK-NEXT: [[IS_SUBNORMAL_OR_INF:%.*]] = call i1 @llvm.is.fpclass.f32(float [[ARG]], i32 noun…
323 …EXT: [[SELECT:%.*]] = select i1 [[IS_SUBNORMAL_OR_INF]], float 0x7FF8000000000000, float [[ARG]]
326 %is.subnormal.or.inf = call i1 @llvm.is.fpclass.f32(float %arg, i32 660)
327 %select = select i1 %is.subnormal.or.inf, float 0x7FF8000000000000, float %arg
331 define float @clamp_is_class_subnormal_or_inf_to_nan_swap(float %arg) {
333 ; CHECK-SAME: (float [[ARG:%.*]]) #[[ATTR1]] {
334 ; CHECK-NEXT: [[NOT_IS_SUBNORMAL_OR_INF:%.*]] = call i1 @llvm.is.fpclass.f32(float [[ARG]], i32 …
335 ; CHECK-NEXT: [[SELECT:%.*]] = select i1 [[NOT_IS_SUBNORMAL_OR_INF]], float [[ARG]], float 0x7FF…
338 %not.is.subnormal.or.inf = call i1 @llvm.is.fpclass.f32(float %arg, i32 363)
339 %select = select i1 %not.is.subnormal.or.inf, float %arg, float 0x7FF8000000000000
343 define float @ret_select_clamp_nan_to_zero_fpclass(float %arg) {
345 ; CHECK-SAME: (float [[ARG:%.*]]) #[[ATTR1]] {
346 ; CHECK-NEXT: [[IS_NAN:%.*]] = call i1 @llvm.is.fpclass.f32(float [[ARG]], i32 noundef 3) #[[ATT…
347 ; CHECK-NEXT: [[SELECT:%.*]] = select i1 [[IS_NAN]], float 0.000000e+00, float [[ARG]]
350 %is.nan = call i1 @llvm.is.fpclass.f32(float %arg, i32 3)
351 %select = select i1 %is.nan, float 0.0, float %arg
355 define float @ret_select_clamp_snan_to_zero_fpclass(float %arg) {
357 ; CHECK-SAME: (float [[ARG:%.*]]) #[[ATTR1]] {
358 ; CHECK-NEXT: [[IS_NAN:%.*]] = call i1 @llvm.is.fpclass.f32(float [[ARG]], i32 noundef 1) #[[ATT…
359 ; CHECK-NEXT: [[SELECT:%.*]] = select i1 [[IS_NAN]], float 0.000000e+00, float [[ARG]]
362 %is.nan = call i1 @llvm.is.fpclass.f32(float %arg, i32 1)
363 %select = select i1 %is.nan, float 0.0, float %arg
367 define float @ret_select_clamp_qnan_to_zero_fpclass(float %arg) {
369 ; CHECK-SAME: (float [[ARG:%.*]]) #[[ATTR1]] {
370 ; CHECK-NEXT: [[IS_NAN:%.*]] = call i1 @llvm.is.fpclass.f32(float [[ARG]], i32 noundef 2) #[[ATT…
371 ; CHECK-NEXT: [[SELECT:%.*]] = select i1 [[IS_NAN]], float 0.000000e+00, float [[ARG]]
374 %is.nan = call i1 @llvm.is.fpclass.f32(float %arg, i32 2)
375 %select = select i1 %is.nan, float 0.0, float %arg
391 define float @clamp_is_denorm_or_zero_to_fneg(float %arg) {
393 ; CHECK-SAME: (float [[ARG:%.*]]) #[[ATTR1]] {
394 ; CHECK-NEXT: [[FABS:%.*]] = call float @llvm.fabs.f32(float [[ARG]]) #[[ATTR2]]
396 ; CHECK-NEXT: [[NEG_ARG:%.*]] = fneg float [[ARG]]
397 ; CHECK-NEXT: [[SELECT:%.*]] = select i1 [[IS_DENORM_OR_ZERO]], float [[NEG_ARG]], float [[ARG]]
400 %fabs = call float @llvm.fabs.f32(float %arg)
402 %neg.arg = fneg float %arg
403 %select = select i1 %is.denorm.or.zero, float %neg.arg, float %arg
407 define float @select_is_denorm_or_zero_to_fneg_or_fabs(float %arg) {
409 ; CHECK-SAME: (float [[ARG:%.*]]) #[[ATTR1]] {
410 …[[FABS:%.*]] = call nofpclass(ninf nzero nsub nnorm) float @llvm.fabs.f32(float [[ARG]]) #[[ATTR2]]
412 ; CHECK-NEXT: [[NEG_ARG:%.*]] = fneg float [[ARG]]
416 %fabs = call float @llvm.fabs.f32(float %arg)
418 %neg.arg = fneg float %arg
419 %select = select i1 %is.denorm.or.zero, float %neg.arg, float %fabs
423 define float @select_is_denorm_or_zero_to_fabs_or_fneg(float %arg) {
425 ; CHECK-SAME: (float [[ARG:%.*]]) #[[ATTR1]] {
426 ; CHECK-NEXT: [[FABS:%.*]] = call float @llvm.fabs.f32(float [[ARG]]) #[[ATTR2]]
428 ; CHECK-NEXT: [[NEG_ARG:%.*]] = fneg float [[ARG]]
432 %fabs = call float @llvm.fabs.f32(float %arg)
434 %neg.arg = fneg float %arg
435 %select = select i1 %is.denorm.or.zero, float %fabs, float %neg.arg