@@ -524,8 +524,7 @@ define nofpclass(nan ninf nnorm nsub nzero) float @ret_nofpclass_nonegatives_non
524
524
define nofpclass(inf) float @ret_nofpclass_inf__copysign_unknown_select_pinf_rhs (i1 %cond , float %x , float %unknown.sign ) {
525
525
; CHECK-LABEL: define nofpclass(inf) float @ret_nofpclass_inf__copysign_unknown_select_pinf_rhs
526
526
; CHECK-SAME: (i1 [[COND:%.*]], float [[X:%.*]], float [[UNKNOWN_SIGN:%.*]]) {
527
- ; CHECK-NEXT: [[SELECT:%.*]] = select i1 [[COND]], float [[X]], float 0x7FF0000000000000
528
- ; CHECK-NEXT: [[COPYSIGN:%.*]] = call float @llvm.copysign.f32(float [[SELECT]], float [[UNKNOWN_SIGN]])
527
+ ; CHECK-NEXT: [[COPYSIGN:%.*]] = call float @llvm.copysign.f32(float [[X]], float [[UNKNOWN_SIGN]])
529
528
; CHECK-NEXT: ret float [[COPYSIGN]]
530
529
;
531
530
%select = select i1 %cond , float %x , float 0x7FF0000000000000
@@ -560,7 +559,8 @@ define nofpclass(inf) float @ret_nofpclass_inf__copysign_negative_select_pinf_rh
560
559
define nofpclass(pinf pnorm psub pzero) float @ret_nofpclass_nopositives_copysign (float %x , float %unknown.sign ) {
561
560
; CHECK-LABEL: define nofpclass(pinf pzero psub pnorm) float @ret_nofpclass_nopositives_copysign
562
561
; CHECK-SAME: (float [[X:%.*]], float [[UNKNOWN_SIGN:%.*]]) {
563
- ; CHECK-NEXT: [[COPYSIGN:%.*]] = call float @llvm.copysign.f32(float [[X]], float [[UNKNOWN_SIGN]])
562
+ ; CHECK-NEXT: [[TMP1:%.*]] = call float @llvm.fabs.f32(float [[X]])
563
+ ; CHECK-NEXT: [[COPYSIGN:%.*]] = fneg float [[TMP1]]
564
564
; CHECK-NEXT: ret float [[COPYSIGN]]
565
565
;
566
566
%copysign = call float @llvm.copysign.f32 (float %x , float %unknown.sign )
@@ -571,7 +571,8 @@ define nofpclass(pinf pnorm psub pzero) float @ret_nofpclass_nopositives_copysig
571
571
define nofpclass(pinf pnorm psub pzero) float @ret_nofpclass_nopositives_copysign_nnan_flag (float %x , float %unknown.sign ) {
572
572
; CHECK-LABEL: define nofpclass(pinf pzero psub pnorm) float @ret_nofpclass_nopositives_copysign_nnan_flag
573
573
; CHECK-SAME: (float [[X:%.*]], float [[UNKNOWN_SIGN:%.*]]) {
574
- ; CHECK-NEXT: [[COPYSIGN:%.*]] = call nnan float @llvm.copysign.f32(float [[X]], float [[UNKNOWN_SIGN]])
574
+ ; CHECK-NEXT: [[TMP1:%.*]] = call nnan float @llvm.fabs.f32(float [[X]])
575
+ ; CHECK-NEXT: [[COPYSIGN:%.*]] = fneg nnan float [[TMP1]]
575
576
; CHECK-NEXT: ret float [[COPYSIGN]]
576
577
;
577
578
%copysign = call nnan float @llvm.copysign.f32 (float %x , float %unknown.sign )
@@ -582,7 +583,8 @@ define nofpclass(pinf pnorm psub pzero) float @ret_nofpclass_nopositives_copysig
582
583
define nofpclass(nan pinf pnorm psub pzero) float @ret_nofpclass_nopositives_nonan_copysign (float %x , float %unknown.sign ) {
583
584
; CHECK-LABEL: define nofpclass(nan pinf pzero psub pnorm) float @ret_nofpclass_nopositives_nonan_copysign
584
585
; CHECK-SAME: (float [[X:%.*]], float [[UNKNOWN_SIGN:%.*]]) {
585
- ; CHECK-NEXT: [[COPYSIGN:%.*]] = call float @llvm.copysign.f32(float [[X]], float [[UNKNOWN_SIGN]])
586
+ ; CHECK-NEXT: [[TMP1:%.*]] = call float @llvm.fabs.f32(float [[X]])
587
+ ; CHECK-NEXT: [[COPYSIGN:%.*]] = fneg float [[TMP1]]
586
588
; CHECK-NEXT: ret float [[COPYSIGN]]
587
589
;
588
590
%copysign = call float @llvm.copysign.f32 (float %x , float %unknown.sign )
@@ -593,7 +595,7 @@ define nofpclass(nan pinf pnorm psub pzero) float @ret_nofpclass_nopositives_non
593
595
define nofpclass(ninf nnorm nsub nzero) float @ret_nofpclass_nonegatives_copysign (float %x , float %unknown.sign ) {
594
596
; CHECK-LABEL: define nofpclass(ninf nzero nsub nnorm) float @ret_nofpclass_nonegatives_copysign
595
597
; CHECK-SAME: (float [[X:%.*]], float [[UNKNOWN_SIGN:%.*]]) {
596
- ; CHECK-NEXT: [[COPYSIGN:%.*]] = call float @llvm.copysign .f32(float [[X]], float [[UNKNOWN_SIGN ]])
598
+ ; CHECK-NEXT: [[COPYSIGN:%.*]] = call float @llvm.fabs .f32(float [[X]])
597
599
; CHECK-NEXT: ret float [[COPYSIGN]]
598
600
;
599
601
%copysign = call float @llvm.copysign.f32 (float %x , float %unknown.sign )
@@ -604,7 +606,7 @@ define nofpclass(ninf nnorm nsub nzero) float @ret_nofpclass_nonegatives_copysig
604
606
define nofpclass(ninf nnorm nsub nzero) float @ret_nofpclass_nonegatives_copysign_nnan_flag (float %x , float %unknown.sign ) {
605
607
; CHECK-LABEL: define nofpclass(ninf nzero nsub nnorm) float @ret_nofpclass_nonegatives_copysign_nnan_flag
606
608
; CHECK-SAME: (float [[X:%.*]], float [[UNKNOWN_SIGN:%.*]]) {
607
- ; CHECK-NEXT: [[COPYSIGN:%.*]] = call nnan float @llvm.copysign .f32(float [[X]], float [[UNKNOWN_SIGN ]])
609
+ ; CHECK-NEXT: [[COPYSIGN:%.*]] = call nnan float @llvm.fabs .f32(float [[X]])
608
610
; CHECK-NEXT: ret float [[COPYSIGN]]
609
611
;
610
612
%copysign = call nnan float @llvm.copysign.f32 (float %x , float %unknown.sign )
@@ -615,7 +617,7 @@ define nofpclass(ninf nnorm nsub nzero) float @ret_nofpclass_nonegatives_copysig
615
617
define nofpclass(nan ninf nnorm nsub nzero) float @ret_nofpclass_nonegatives_nonan_copysign (float %x , float %unknown.sign ) {
616
618
; CHECK-LABEL: define nofpclass(nan ninf nzero nsub nnorm) float @ret_nofpclass_nonegatives_nonan_copysign
617
619
; CHECK-SAME: (float [[X:%.*]], float [[UNKNOWN_SIGN:%.*]]) {
618
- ; CHECK-NEXT: [[COPYSIGN:%.*]] = call float @llvm.copysign .f32(float [[X]], float [[UNKNOWN_SIGN ]])
620
+ ; CHECK-NEXT: [[COPYSIGN:%.*]] = call float @llvm.fabs .f32(float [[X]])
619
621
; CHECK-NEXT: ret float [[COPYSIGN]]
620
622
;
621
623
%copysign = call float @llvm.copysign.f32 (float %x , float %unknown.sign )
@@ -638,8 +640,7 @@ define nofpclass(pinf pnorm psub pzero) float @ret_nofpclass_nopositives__copysi
638
640
define nofpclass(inf nnorm nsub nzero) float @ret_nofpclass_no_negatives_noinf__copysign_unknown_select_pinf_rhs (i1 %cond , float %x , float %unknown.sign ) {
639
641
; CHECK-LABEL: define nofpclass(inf nzero nsub nnorm) float @ret_nofpclass_no_negatives_noinf__copysign_unknown_select_pinf_rhs
640
642
; CHECK-SAME: (i1 [[COND:%.*]], float [[X:%.*]], float [[UNKNOWN_SIGN:%.*]]) {
641
- ; CHECK-NEXT: [[SELECT:%.*]] = select i1 [[COND]], float [[X]], float 0x7FF0000000000000
642
- ; CHECK-NEXT: [[COPYSIGN:%.*]] = call float @llvm.copysign.f32(float [[SELECT]], float [[UNKNOWN_SIGN]])
643
+ ; CHECK-NEXT: [[COPYSIGN:%.*]] = call float @llvm.fabs.f32(float [[X]])
643
644
; CHECK-NEXT: ret float [[COPYSIGN]]
644
645
;
645
646
%select = select i1 %cond , float %x , float 0x7FF0000000000000
@@ -651,8 +652,8 @@ define nofpclass(inf nnorm nsub nzero) float @ret_nofpclass_no_negatives_noinf__
651
652
define nofpclass(inf pnorm psub pzero) float @ret_nofpclass_no_positives_noinf__copysign_unknown_select_pinf_rhs (i1 %cond , float %x , float %unknown.sign ) {
652
653
; CHECK-LABEL: define nofpclass(inf pzero psub pnorm) float @ret_nofpclass_no_positives_noinf__copysign_unknown_select_pinf_rhs
653
654
; CHECK-SAME: (i1 [[COND:%.*]], float [[X:%.*]], float [[UNKNOWN_SIGN:%.*]]) {
654
- ; CHECK-NEXT: [[SELECT :%.*]] = select i1 [[COND]], float [[X]], float 0x7FF0000000000000
655
- ; CHECK-NEXT: [[COPYSIGN:%.*]] = call float @llvm.copysign.f32(float [[SELECT]], float [[UNKNOWN_SIGN]])
655
+ ; CHECK-NEXT: [[TMP1 :%.*]] = call float @llvm.fabs.f32( float [[X]])
656
+ ; CHECK-NEXT: [[COPYSIGN:%.*]] = fneg float [[TMP1]]
656
657
; CHECK-NEXT: ret float [[COPYSIGN]]
657
658
;
658
659
%select = select i1 %cond , float %x , float 0x7FF0000000000000
@@ -665,7 +666,7 @@ define nofpclass(ninf nnorm nsub nzero) float @ret_nofpclass_no_negatives__copys
665
666
; CHECK-LABEL: define nofpclass(ninf nzero nsub nnorm) float @ret_nofpclass_no_negatives__copysign_unknown_select_pinf_rhs
666
667
; CHECK-SAME: (i1 [[COND:%.*]], float [[X:%.*]], float [[UNKNOWN_SIGN:%.*]]) {
667
668
; CHECK-NEXT: [[SELECT:%.*]] = select i1 [[COND]], float [[X]], float 0x7FF0000000000000
668
- ; CHECK-NEXT: [[COPYSIGN:%.*]] = call float @llvm.copysign .f32(float [[SELECT]], float [[UNKNOWN_SIGN ]])
669
+ ; CHECK-NEXT: [[COPYSIGN:%.*]] = call float @llvm.fabs .f32(float [[SELECT]])
669
670
; CHECK-NEXT: ret float [[COPYSIGN]]
670
671
;
671
672
%select = select i1 %cond , float %x , float 0x7FF0000000000000
@@ -678,7 +679,8 @@ define nofpclass(pinf pnorm psub pzero) float @ret_nofpclass_no_positives__copys
678
679
; CHECK-LABEL: define nofpclass(pinf pzero psub pnorm) float @ret_nofpclass_no_positives__copysign_unknown_select_pinf_rhs
679
680
; CHECK-SAME: (i1 [[COND:%.*]], float [[X:%.*]], float [[UNKNOWN_SIGN:%.*]]) {
680
681
; CHECK-NEXT: [[SELECT:%.*]] = select i1 [[COND]], float [[X]], float 0x7FF0000000000000
681
- ; CHECK-NEXT: [[COPYSIGN:%.*]] = call float @llvm.copysign.f32(float [[SELECT]], float [[UNKNOWN_SIGN]])
682
+ ; CHECK-NEXT: [[TMP1:%.*]] = call float @llvm.fabs.f32(float [[SELECT]])
683
+ ; CHECK-NEXT: [[COPYSIGN:%.*]] = fneg float [[TMP1]]
682
684
; CHECK-NEXT: ret float [[COPYSIGN]]
683
685
;
684
686
%select = select i1 %cond , float %x , float 0x7FF0000000000000
@@ -691,7 +693,7 @@ define nofpclass(nan ninf nnorm nsub nzero) float @ret_nofpclass_no_negatives_no
691
693
; CHECK-LABEL: define nofpclass(nan ninf nzero nsub nnorm) float @ret_nofpclass_no_negatives_nonan__copysign_unknown_select_pinf_rhs
692
694
; CHECK-SAME: (i1 [[COND:%.*]], float [[X:%.*]], float [[UNKNOWN_SIGN:%.*]]) {
693
695
; CHECK-NEXT: [[SELECT:%.*]] = select i1 [[COND]], float [[X]], float 0x7FF0000000000000
694
- ; CHECK-NEXT: [[COPYSIGN:%.*]] = call float @llvm.copysign .f32(float [[SELECT]], float [[UNKNOWN_SIGN ]])
696
+ ; CHECK-NEXT: [[COPYSIGN:%.*]] = call float @llvm.fabs .f32(float [[SELECT]])
695
697
; CHECK-NEXT: ret float [[COPYSIGN]]
696
698
;
697
699
%select = select i1 %cond , float %x , float 0x7FF0000000000000
@@ -704,7 +706,8 @@ define nofpclass(nan pinf pnorm psub pzero) float @ret_nofpclass_no_positives_no
704
706
; CHECK-LABEL: define nofpclass(nan pinf pzero psub pnorm) float @ret_nofpclass_no_positives_nonan__copysign_unknown_select_pinf_rhs
705
707
; CHECK-SAME: (i1 [[COND:%.*]], float [[X:%.*]], float [[UNKNOWN_SIGN:%.*]]) {
706
708
; CHECK-NEXT: [[SELECT:%.*]] = select i1 [[COND]], float [[X]], float 0x7FF0000000000000
707
- ; CHECK-NEXT: [[COPYSIGN:%.*]] = call float @llvm.copysign.f32(float [[SELECT]], float [[UNKNOWN_SIGN]])
709
+ ; CHECK-NEXT: [[TMP1:%.*]] = call float @llvm.fabs.f32(float [[SELECT]])
710
+ ; CHECK-NEXT: [[COPYSIGN:%.*]] = fneg float [[TMP1]]
708
711
; CHECK-NEXT: ret float [[COPYSIGN]]
709
712
;
710
713
%select = select i1 %cond , float %x , float 0x7FF0000000000000
@@ -875,11 +878,8 @@ define nofpclass(nan inf) float @pow_f32(float nofpclass(nan inf) %arg, float no
875
878
; CHECK-NEXT: [[I12:%.*]] = select i1 [[I11]], float [[ARG]], float 1.000000e+00
876
879
; CHECK-NEXT: [[I13:%.*]] = tail call noundef float @llvm.copysign.f32(float noundef [[I4]], float noundef [[I12]])
877
880
; CHECK-NEXT: [[I17:%.*]] = fcmp oeq float [[ARG]], 0.000000e+00
878
- ; CHECK-NEXT: [[I18:%.*]] = fcmp olt float [[ARG1]], 0.000000e+00
879
- ; CHECK-NEXT: [[I19:%.*]] = xor i1 [[I17]], [[I18]]
880
- ; CHECK-NEXT: [[I20:%.*]] = select i1 [[I19]], float 0.000000e+00, float 0x7FF0000000000000
881
881
; CHECK-NEXT: [[I21:%.*]] = select i1 [[I11]], float [[ARG]], float 0.000000e+00
882
- ; CHECK-NEXT: [[I22:%.*]] = tail call noundef nofpclass(nan sub norm) float @llvm.copysign.f32(float noundef [[I20]] , float noundef [[I21]])
882
+ ; CHECK-NEXT: [[I22:%.*]] = tail call noundef nofpclass(nan sub norm) float @llvm.copysign.f32(float noundef 0.000000e+00 , float noundef [[I21]])
883
883
; CHECK-NEXT: [[I23:%.*]] = select i1 [[I17]], float [[I22]], float [[I13]]
884
884
; CHECK-NEXT: [[I24:%.*]] = fcmp oeq float [[ARG]], 1.000000e+00
885
885
; CHECK-NEXT: [[I25:%.*]] = fcmp oeq float [[ARG1]], 0.000000e+00
0 commit comments