Lines Matching refs:fabs
6 declare float @llvm.fabs.f32(float)
7 declare <2 x float> @llvm.fabs.v2f32(<2 x float>)
8 declare double @llvm.fabs.f64(double)
9 declare fp128 @llvm.fabs.f128(fp128)
12 declare double @fabs(double)
21 ; CHECK-NEXT: [[FABSF:%.*]] = call float @llvm.fabs.f32(float [[X:%.*]])
30 ; CHECK-NEXT: [[FABS:%.*]] = call double @llvm.fabs.f64(double [[X:%.*]])
33 %fabs = tail call double @fabs(double %x)
34 ret double %fabs
39 ; CHECK-NEXT: [[FABSL:%.*]] = call fp128 @llvm.fabs.f128(fp128 [[X:%.*]])
49 ; CHECK-NEXT: [[FABSF:%.*]] = call nnan float @llvm.fabs.f32(float [[X:%.*]])
59 ; The fabs cannot be eliminated because %x may be a NaN
64 ; CHECK-NEXT: [[FABSF:%.*]] = tail call float @llvm.fabs.f32(float [[MUL]])
68 %fabsf = tail call float @llvm.fabs.f32(float %mul)
75 ; CHECK-NEXT: [[FABS:%.*]] = tail call double @llvm.fabs.f64(double [[MUL]])
79 %fabs = tail call double @llvm.fabs.f64(double %mul)
80 ret double %fabs
86 ; CHECK-NEXT: [[FABSL:%.*]] = tail call fp128 @llvm.fabs.f128(fp128 [[MUL]])
90 %fabsl = tail call fp128 @llvm.fabs.f128(fp128 %mul)
100 %fabsf = call float @llvm.fabs.f32(float %mul)
109 ; CHECK-NEXT: [[TRUNC:%.*]] = call float @llvm.fabs.f32(float [[TMP1]])
114 %fabs = call double @fabs(double %sq)
115 %trunc = fptrunc double %fabs to float
122 ; CHECK-NEXT: [[TMP1:%.*]] = call float @llvm.fabs.f32(float [[SQ]])
127 %fabs = call double @fabs(double %ext)
128 %trunc = fptrunc double %fabs to float
140 %fabs = call float @llvm.fabs.f32(float %select)
141 ret float %fabs
152 %fabs = call float @llvm.fabs.f32(float %select)
153 ret float %fabs
164 %fabs = call float @llvm.fabs.f32(float %select)
165 ret float %fabs
174 %fabs = call float @llvm.fabs.f32(float %select)
175 ret float %fabs
182 ; CHECK-NEXT: [[FABS:%.*]] = call float @llvm.fabs.f32(float [[SELECT]])
187 %fabs = call float @llvm.fabs.f32(float %select)
188 ret float %fabs
191 ; The fabs cannot be eliminated because %x may be a NaN
196 ; CHECK-NEXT: [[FABSF:%.*]] = call float @llvm.fabs.f32(float [[FMA]])
200 %fabsf = call float @llvm.fabs.f32(float %fma)
204 ; The fabs cannot be eliminated because %x may be a NaN
212 %fabsf = call float @llvm.fabs.f32(float %fma)
219 ; CHECK-NEXT: [[FABSF:%.*]] = call float @llvm.fabs.f32(float [[FMULADD]])
223 %fabsf = call float @llvm.fabs.f32(float %fmuladd)
233 %fabsf = call float @llvm.fabs.f32(float %fmuladd)
242 ; CHECK-NEXT: [[FABS:%.*]] = call double @llvm.fabs.f64(double [[FPEXT]])
247 %fabs = call double @llvm.fabs.f64(double %fpext)
249 ret double %fabs
252 ; Negative test for the fabs folds below: we require nnan, so
264 %fabs = select i1 %lezero, double %negx, double %x
265 ret double %fabs
268 ; X <= 0.0 ? (0.0 - X) : X --> fabs(X)
272 ; CHECK-NEXT: [[TMP1:%.*]] = call nnan double @llvm.fabs.f64(double [[X:%.*]])
277 %fabs = select i1 %lezero, double %negx, double %x
278 ret double %fabs
285 ; CHECK-NEXT: [[TMP1:%.*]] = call nnan double @llvm.fabs.f64(double [[X:%.*]])
290 %fabs = select i1 %lezero, double %negx, double %x
291 ret double %fabs
305 %fabs = select i1 %lezero, double %negx, double %x
306 ret double %fabs
309 ; X <= -0.0 ? (0.0 - X) : X --> fabs(X)
313 ; CHECK-NEXT: [[TMP1:%.*]] = call nnan <2 x float> @llvm.fabs.v2f32(<2 x float> [[X:%.*]])
318 %fabs = select <2 x i1> %lezero, <2 x float> %negx, <2 x float> %x
319 ret <2 x float> %fabs
322 ; X > 0.0 ? X : (0.0 - X) --> fabs(X)
326 ; CHECK-NEXT: [[TMP1:%.*]] = call nnan fp128 @llvm.fabs.f128(fp128 [[X:%.*]])
331 %fabs = select i1 %gtzero, fp128 %x, fp128 %negx
332 ret fp128 %fabs
335 ; X > -0.0 ? X : (0.0 - X) --> fabs(X)
339 ; CHECK-NEXT: [[TMP1:%.*]] = call nnan half @llvm.fabs.f16(half [[X:%.*]])
344 %fabs = select i1 %gtzero, half %x, half %negx
345 ret half %fabs
352 ; CHECK-NEXT: [[TMP1:%.*]] = call nnan half @llvm.fabs.f16(half [[X:%.*]])
357 %fabs = select i1 %gtzero, half %x, half %negx
358 ret half %fabs
372 %fabs = select i1 %gtzero, half %x, half %negx
373 ret half %fabs
376 ; X < 0.0 ? -X : X --> fabs(X)
380 ; CHECK-NEXT: [[TMP1:%.*]] = call nnan nsz double @llvm.fabs.f64(double [[X:%.*]])
385 %fabs = select i1 %ltzero, double %negx, double %x
386 ret double %fabs
393 ; CHECK-NEXT: [[TMP1:%.*]] = call nnan nsz double @llvm.fabs.f64(double [[X:%.*]])
398 %fabs = select i1 %ltzero, double %negx, double %x
399 ret double %fabs
404 ; CHECK-NEXT: [[TMP1:%.*]] = call nnan nsz double @llvm.fabs.f64(double [[X:%.*]])
409 %fabs = select i1 %ltzero, double %negx, double %x
410 ret double %fabs
417 ; CHECK-NEXT: [[TMP1:%.*]] = call nnan nsz double @llvm.fabs.f64(double [[X:%.*]])
422 %fabs = select i1 %ltzero, double %negx, double %x
423 ret double %fabs
426 ; X < -0.0 ? -X : X --> fabs(X)
430 ; CHECK-NEXT: [[TMP1:%.*]] = call nnan ninf nsz float @llvm.fabs.f32(float [[X:%.*]])
435 %fabs = select i1 %ltzero, float %negx, float %x
436 ret float %fabs
443 ; CHECK-NEXT: [[TMP1:%.*]] = call nnan ninf nsz float @llvm.fabs.f32(float [[X:%.*]])
448 %fabs = select i1 %ltzero, float %negx, float %x
449 ret float %fabs
454 ; CHECK-NEXT: [[TMP1:%.*]] = call nnan ninf nsz float @llvm.fabs.f32(float [[X:%.*]])
459 %fabs = select i1 %ltzero, float %negx, float %x
460 ret float %fabs
467 ; CHECK-NEXT: [[TMP1:%.*]] = call nnan ninf nsz float @llvm.fabs.f32(float [[X:%.*]])
472 %fabs = select i1 %ltzero, float %negx, float %x
473 ret float %fabs
476 ; X <= 0.0 ? -X : X --> fabs(X)
480 ; CHECK-NEXT: [[TMP1:%.*]] = call fast double @llvm.fabs.f64(double [[X:%.*]])
485 %fabs = select i1 %lezero, double %negx, double %x
486 ret double %fabs
493 ; CHECK-NEXT: [[TMP1:%.*]] = call fast double @llvm.fabs.f64(double [[X:%.*]])
498 %fabs = select i1 %lezero, double %negx, double %x
499 ret double %fabs
504 ; CHECK-NEXT: [[TMP1:%.*]] = call fast double @llvm.fabs.f64(double [[X:%.*]])
509 %fabs = select i1 %lezero, double %negx, double %x
510 ret double %fabs
517 ; CHECK-NEXT: [[TMP1:%.*]] = call fast double @llvm.fabs.f64(double [[X:%.*]])
522 %fabs = select i1 %lezero, double %negx, double %x
523 ret double %fabs
526 ; X <= -0.0 ? -X : X --> fabs(X)
530 ; CHECK-NEXT: [[TMP1:%.*]] = call nnan nsz float @llvm.fabs.f32(float [[X:%.*]])
535 %fabs = select i1 %lezero, float %negx, float %x
536 ret float %fabs
543 ; CHECK-NEXT: [[TMP1:%.*]] = call nnan nsz float @llvm.fabs.f32(float [[X:%.*]])
548 %fabs = select i1 %lezero, float %negx, float %x
549 ret float %fabs
554 ; CHECK-NEXT: [[TMP1:%.*]] = call nnan nsz float @llvm.fabs.f32(float [[X:%.*]])
559 %fabs = select i1 %lezero, float %negx, float %x
560 ret float %fabs
567 ; CHECK-NEXT: [[TMP1:%.*]] = call nnan nsz float @llvm.fabs.f32(float [[X:%.*]])
572 %fabs = select i1 %lezero, float %negx, float %x
573 ret float %fabs
576 ; X > 0.0 ? X : (0.0 - X) --> fabs(X)
580 ; CHECK-NEXT: [[TMP1:%.*]] = call nnan nsz arcp <2 x float> @llvm.fabs.v2f32(<2 x float> [[X:%.*…
585 %fabs = select <2 x i1> %gtzero, <2 x float> %x, <2 x float> %negx
586 ret <2 x float> %fabs
593 ; CHECK-NEXT: [[TMP1:%.*]] = call nnan nsz arcp <2 x float> @llvm.fabs.v2f32(<2 x float> [[X:%.*…
598 %fabs = select <2 x i1> %gtzero, <2 x float> %x, <2 x float> %negx
599 ret <2 x float> %fabs
604 ; CHECK-NEXT: [[TMP1:%.*]] = call nnan nsz arcp <2 x float> @llvm.fabs.v2f32(<2 x float> [[X:%.*…
609 %fabs = select <2 x i1> %gtzero, <2 x float> %x, <2 x float> %negx
610 ret <2 x float> %fabs
617 ; CHECK-NEXT: [[TMP1:%.*]] = call nnan nsz arcp <2 x float> @llvm.fabs.v2f32(<2 x float> [[X:%.*…
622 %fabs = select <2 x i1> %gtzero, <2 x float> %x, <2 x float> %negx
623 ret <2 x float> %fabs
626 ; X > -0.0 ? X : (0.0 - X) --> fabs(X)
630 ; CHECK-NEXT: [[TMP1:%.*]] = call fast half @llvm.fabs.f16(half [[X:%.*]])
635 %fabs = select i1 %gtzero, half %x, half %negx
636 ret half %fabs
643 ; CHECK-NEXT: [[TMP1:%.*]] = call fast half @llvm.fabs.f16(half [[X:%.*]])
648 %fabs = select i1 %gtzero, half %x, half %negx
649 ret half %fabs
652 ; X > 0.0 ? X : (0.0 - X) --> fabs(X)
656 ; CHECK-NEXT: [[TMP1:%.*]] = call reassoc nnan nsz <2 x double> @llvm.fabs.v2f64(<2 x double> [[…
661 %fabs = select <2 x i1> %gezero, <2 x double> %x, <2 x double> %negx
662 ret <2 x double> %fabs
669 ; CHECK-NEXT: [[TMP1:%.*]] = call reassoc nnan nsz <2 x double> @llvm.fabs.v2f64(<2 x double> [[…
674 %fabs = select <2 x i1> %gezero, <2 x double> %x, <2 x double> %negx
675 ret <2 x double> %fabs
680 ; CHECK-NEXT: [[TMP1:%.*]] = call reassoc nnan nsz <2 x double> @llvm.fabs.v2f64(<2 x double> [[…
685 %fabs = select <2 x i1> %gezero, <2 x double> %x, <2 x double> %negx
686 ret <2 x double> %fabs
693 ; CHECK-NEXT: [[TMP1:%.*]] = call reassoc nnan nsz <2 x double> @llvm.fabs.v2f64(<2 x double> [[…
698 %fabs = select <2 x i1> %gezero, <2 x double> %x, <2 x double> %negx
699 ret <2 x double> %fabs
702 ; X > -0.0 ? X : (0.0 - X) --> fabs(X)
706 ; CHECK-NEXT: [[TMP1:%.*]] = call nnan nsz half @llvm.fabs.f16(half [[X:%.*]])
711 %fabs = select i1 %gezero, half %x, half %negx
712 ret half %fabs
719 ; CHECK-NEXT: [[TMP1:%.*]] = call nnan nsz half @llvm.fabs.f16(half [[X:%.*]])
724 %fabs = select i1 %gezero, half %x, half %negx
725 ret half %fabs
730 ; CHECK-NEXT: [[TMP1:%.*]] = call nnan nsz half @llvm.fabs.f16(half [[X:%.*]])
735 %fabs = select i1 %gezero, half %x, half %negx
736 ret half %fabs
743 ; CHECK-NEXT: [[TMP1:%.*]] = call nnan nsz half @llvm.fabs.f16(half [[X:%.*]])
748 %fabs = select i1 %gezero, half %x, half %negx
749 ret half %fabs
754 ; CHECK-NEXT: [[FABS:%.*]] = call float @llvm.fabs.f32(float [[X:%.*]])
759 %fabs = call float @llvm.fabs.f32(float %s)
760 ret float %fabs
767 ; CHECK-NEXT: [[FABS:%.*]] = call fast float @llvm.fabs.f32(float [[X]])
773 %fabs = call fast float @llvm.fabs.f32(float %s)
774 ret float %fabs
782 ; CHECK-NEXT: [[FABS:%.*]] = call nnan nsz float @llvm.fabs.f32(float [[X]])
788 %fabs = call nnan nsz float @llvm.fabs.f32(float %s)
789 ret float %fabs
794 ; CHECK-NEXT: [[FABS:%.*]] = call <2 x float> @llvm.fabs.v2f32(<2 x float> [[X:%.*]])
799 %fabs = call <2 x float> @llvm.fabs.v2f32(<2 x float> %s)
800 ret <2 x float> %fabs