Skip to content

Commit c01fd1a

Browse files
committed
added fmf flag to fcmp
1 parent efba0d0 commit c01fd1a

File tree

2 files changed

+49
-49
lines changed

2 files changed

+49
-49
lines changed

llvm/lib/Transforms/InstCombine/InstCombineCompares.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8073,7 +8073,7 @@ Instruction *InstCombinerImpl::visitFCmpInst(FCmpInst &I) {
80738073
case FCmpInst::FCMP_ULE:
80748074
if (match(RHSC, m_AnyZeroFP()) &&
80758075
match(LHSI, m_FSub(m_Value(X), m_Value(Y))))
8076-
return new FCmpInst(Pred, X, Y);
8076+
return new FCmpInst(Pred, X, Y, "", &I);
80778077
break;
80788078
}
80798079
break;

llvm/test/Transforms/InstCombine/fcmp.ll

Lines changed: 48 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -1613,122 +1613,122 @@ define i1 @fcmp_une_fsub_const(float %x, float %y) {
16131613
ret i1 %cmp
16141614
}
16151615

1616-
define <8 x i1> @fcmp_vec_uge_fast_fsub_const(<8 x float> %x, <8 x float> %y) {
1617-
; CHECK-LABEL: @fcmp_vec_uge_fast_fsub_const(
1618-
; CHECK-NEXT: [[CMP:%.*]] = fcmp uge <8 x float> [[X:%.*]], [[Y:%.*]]
1616+
define <8 x i1> @fcmp_vec_uge_fsub_const_fmf(<8 x float> %x, <8 x float> %y) {
1617+
; CHECK-LABEL: @fcmp_vec_uge_fsub_const_fmf(
1618+
; CHECK-NEXT: [[CMP:%.*]] = fcmp fast uge <8 x float> [[X:%.*]], [[Y:%.*]]
16191619
; CHECK-NEXT: ret <8 x i1> [[CMP]]
16201620
;
16211621
%fs = fsub fast <8 x float> %x, %y
1622-
%cmp = fcmp uge <8 x float> %fs, zeroinitializer
1622+
%cmp = fcmp fast uge <8 x float> %fs, zeroinitializer
16231623
ret <8 x i1> %cmp
16241624
}
16251625

1626-
define <8 x i1> @fcmp_vec_ule_fast_fsub_const(<8 x float> %x, <8 x float> %y) {
1627-
; CHECK-LABEL: @fcmp_vec_ule_fast_fsub_const(
1628-
; CHECK-NEXT: [[CMP:%.*]] = fcmp ule <8 x float> [[X:%.*]], [[Y:%.*]]
1626+
define <8 x i1> @fcmp_vec_ule_fsub_const_fmf(<8 x float> %x, <8 x float> %y) {
1627+
; CHECK-LABEL: @fcmp_vec_ule_fsub_const_fmf(
1628+
; CHECK-NEXT: [[CMP:%.*]] = fcmp fast ule <8 x float> [[X:%.*]], [[Y:%.*]]
16291629
; CHECK-NEXT: ret <8 x i1> [[CMP]]
16301630
;
16311631
%fs = fsub fast <8 x float> %x, %y
1632-
%cmp = fcmp ule <8 x float> %fs, zeroinitializer
1632+
%cmp = fcmp fast ule <8 x float> %fs, zeroinitializer
16331633
ret <8 x i1> %cmp
16341634
}
16351635

1636-
define <8 x i1> @fcmp_vec_ueq_fast_fsub_const(<8 x float> %x, <8 x float> %y) {
1637-
; CHECK-LABEL: @fcmp_vec_ueq_fast_fsub_const(
1638-
; CHECK-NEXT: [[CMP:%.*]] = fcmp ueq <8 x float> [[X:%.*]], [[Y:%.*]]
1636+
define <8 x i1> @fcmp_vec_ueq_fsub_const_fmf(<8 x float> %x, <8 x float> %y) {
1637+
; CHECK-LABEL: @fcmp_vec_ueq_fsub_const_fmf(
1638+
; CHECK-NEXT: [[CMP:%.*]] = fcmp fast ueq <8 x float> [[X:%.*]], [[Y:%.*]]
16391639
; CHECK-NEXT: ret <8 x i1> [[CMP]]
16401640
;
16411641
%fs = fsub fast <8 x float> %x, %y
1642-
%cmp = fcmp ueq <8 x float> %fs, zeroinitializer
1642+
%cmp = fcmp fast ueq <8 x float> %fs, zeroinitializer
16431643
ret <8 x i1> %cmp
16441644
}
16451645

1646-
define <8 x i1> @fcmp_vec_oge_fast_fsub_const(<8 x float> %x, <8 x float> %y) {
1647-
; CHECK-LABEL: @fcmp_vec_oge_fast_fsub_const(
1648-
; CHECK-NEXT: [[CMP:%.*]] = fcmp oge <8 x float> [[X:%.*]], [[Y:%.*]]
1646+
define <8 x i1> @fcmp_vec_oge_fsub_const_fmf(<8 x float> %x, <8 x float> %y) {
1647+
; CHECK-LABEL: @fcmp_vec_oge_fsub_const_fmf(
1648+
; CHECK-NEXT: [[CMP:%.*]] = fcmp fast oge <8 x float> [[X:%.*]], [[Y:%.*]]
16491649
; CHECK-NEXT: ret <8 x i1> [[CMP]]
16501650
;
16511651
%fs = fsub fast <8 x float> %x, %y
1652-
%cmp = fcmp oge <8 x float> %fs, zeroinitializer
1652+
%cmp = fcmp fast oge <8 x float> %fs, zeroinitializer
16531653
ret <8 x i1> %cmp
16541654
}
16551655

1656-
define <8 x i1> @fcmp_vec_ole_fast_fsub_const(<8 x float> %x, <8 x float> %y) {
1657-
; CHECK-LABEL: @fcmp_vec_ole_fast_fsub_const(
1658-
; CHECK-NEXT: [[CMP:%.*]] = fcmp ole <8 x float> [[X:%.*]], [[Y:%.*]]
1656+
define <8 x i1> @fcmp_vec_ole_fsub_const_fmf(<8 x float> %x, <8 x float> %y) {
1657+
; CHECK-LABEL: @fcmp_vec_ole_fsub_const_fmf(
1658+
; CHECK-NEXT: [[CMP:%.*]] = fcmp fast ole <8 x float> [[X:%.*]], [[Y:%.*]]
16591659
; CHECK-NEXT: ret <8 x i1> [[CMP]]
16601660
;
16611661
%fs = fsub fast <8 x float> %x, %y
1662-
%cmp = fcmp ole <8 x float> %fs, zeroinitializer
1662+
%cmp = fcmp fast ole <8 x float> %fs, zeroinitializer
16631663
ret <8 x i1> %cmp
16641664
}
16651665

1666-
define <8 x i1> @fcmp_vec_oeq_fast_fsub_const(<8 x float> %x, <8 x float> %y) {
1667-
; CHECK-LABEL: @fcmp_vec_oeq_fast_fsub_const(
1668-
; CHECK-NEXT: [[CMP:%.*]] = fcmp oeq <8 x float> [[X:%.*]], [[Y:%.*]]
1666+
define <8 x i1> @fcmp_vec_oeq_fsub_const_fmf(<8 x float> %x, <8 x float> %y) {
1667+
; CHECK-LABEL: @fcmp_vec_oeq_fsub_const_fmf(
1668+
; CHECK-NEXT: [[CMP:%.*]] = fcmp fast oeq <8 x float> [[X:%.*]], [[Y:%.*]]
16691669
; CHECK-NEXT: ret <8 x i1> [[CMP]]
16701670
;
16711671
%fs = fsub fast <8 x float> %x, %y
1672-
%cmp = fcmp oeq <8 x float> %fs, zeroinitializer
1672+
%cmp = fcmp fast oeq <8 x float> %fs, zeroinitializer
16731673
ret <8 x i1> %cmp
16741674
}
16751675

1676-
define <8 x i1> @fcmp_vec_ogt_fast_fsub_const(<8 x float> %x, <8 x float> %y) {
1677-
; CHECK-LABEL: @fcmp_vec_ogt_fast_fsub_const(
1678-
; CHECK-NEXT: [[CMP:%.*]] = fcmp ogt <8 x float> [[X:%.*]], [[Y:%.*]]
1676+
define <8 x i1> @fcmp_vec_ogt_fsub_const_fmf(<8 x float> %x, <8 x float> %y) {
1677+
; CHECK-LABEL: @fcmp_vec_ogt_fsub_const_fmf(
1678+
; CHECK-NEXT: [[CMP:%.*]] = fcmp fast ogt <8 x float> [[X:%.*]], [[Y:%.*]]
16791679
; CHECK-NEXT: ret <8 x i1> [[CMP]]
16801680
;
16811681
%fs = fsub fast <8 x float> %x, %y
1682-
%cmp = fcmp ogt <8 x float> %fs, zeroinitializer
1682+
%cmp = fcmp fast ogt <8 x float> %fs, zeroinitializer
16831683
ret <8 x i1> %cmp
16841684
}
16851685

1686-
define <8 x i1> @fcmp_vec_olt_fast_fsub_const(<8 x float> %x, <8 x float> %y) {
1687-
; CHECK-LABEL: @fcmp_vec_olt_fast_fsub_const(
1688-
; CHECK-NEXT: [[CMP:%.*]] = fcmp olt <8 x float> [[X:%.*]], [[Y:%.*]]
1686+
define <8 x i1> @fcmp_vec_olt_fsub_const_fmf(<8 x float> %x, <8 x float> %y) {
1687+
; CHECK-LABEL: @fcmp_vec_olt_fsub_const_fmf(
1688+
; CHECK-NEXT: [[CMP:%.*]] = fcmp fast olt <8 x float> [[X:%.*]], [[Y:%.*]]
16891689
; CHECK-NEXT: ret <8 x i1> [[CMP]]
16901690
;
16911691
%fs = fsub fast <8 x float> %x, %y
1692-
%cmp = fcmp olt <8 x float> %fs, zeroinitializer
1692+
%cmp = fcmp fast olt <8 x float> %fs, zeroinitializer
16931693
ret <8 x i1> %cmp
16941694
}
16951695

1696-
define <8 x i1> @fcmp_vec_one_fast_fsub_const(<8 x float> %x, <8 x float> %y) {
1697-
; CHECK-LABEL: @fcmp_vec_one_fast_fsub_const(
1698-
; CHECK-NEXT: [[CMP:%.*]] = fcmp one <8 x float> [[X:%.*]], [[Y:%.*]]
1696+
define <8 x i1> @fcmp_vec_one_fsub_const_fmf(<8 x float> %x, <8 x float> %y) {
1697+
; CHECK-LABEL: @fcmp_vec_one_fsub_const_fmf(
1698+
; CHECK-NEXT: [[CMP:%.*]] = fcmp fast one <8 x float> [[X:%.*]], [[Y:%.*]]
16991699
; CHECK-NEXT: ret <8 x i1> [[CMP]]
17001700
;
17011701
%fs = fsub fast <8 x float> %x, %y
1702-
%cmp = fcmp one <8 x float> %fs, zeroinitializer
1702+
%cmp = fcmp fast one <8 x float> %fs, zeroinitializer
17031703
ret <8 x i1> %cmp
17041704
}
17051705

1706-
define <8 x i1> @fcmp_vec_ugt_fast_fsub_const(<8 x float> %x, <8 x float> %y) {
1707-
; CHECK-LABEL: @fcmp_vec_ugt_fast_fsub_const(
1708-
; CHECK-NEXT: [[CMP:%.*]] = fcmp ugt <8 x float> [[X:%.*]], [[Y:%.*]]
1706+
define <8 x i1> @fcmp_vec_ugt_fsub_const_fmf(<8 x float> %x, <8 x float> %y) {
1707+
; CHECK-LABEL: @fcmp_vec_ugt_fsub_const_fmf(
1708+
; CHECK-NEXT: [[CMP:%.*]] = fcmp fast ugt <8 x float> [[X:%.*]], [[Y:%.*]]
17091709
; CHECK-NEXT: ret <8 x i1> [[CMP]]
17101710
;
17111711
%fs = fsub fast <8 x float> %x, %y
1712-
%cmp = fcmp ugt <8 x float> %fs, zeroinitializer
1712+
%cmp = fcmp fast ugt <8 x float> %fs, zeroinitializer
17131713
ret <8 x i1> %cmp
17141714
}
17151715

1716-
define <8 x i1> @fcmp_vec_ult_fast_fsub_const(<8 x float> %x, <8 x float> %y) {
1717-
; CHECK-LABEL: @fcmp_vec_ult_fast_fsub_const(
1718-
; CHECK-NEXT: [[CMP:%.*]] = fcmp ult <8 x float> [[X:%.*]], [[Y:%.*]]
1716+
define <8 x i1> @fcmp_vec_ult_fsub_const_fmf(<8 x float> %x, <8 x float> %y) {
1717+
; CHECK-LABEL: @fcmp_vec_ult_fsub_const_fmf(
1718+
; CHECK-NEXT: [[CMP:%.*]] = fcmp fast ult <8 x float> [[X:%.*]], [[Y:%.*]]
17191719
; CHECK-NEXT: ret <8 x i1> [[CMP]]
17201720
;
17211721
%fs = fsub fast <8 x float> %x, %y
1722-
%cmp = fcmp ult <8 x float> %fs, zeroinitializer
1722+
%cmp = fcmp fast ult <8 x float> %fs, zeroinitializer
17231723
ret <8 x i1> %cmp
17241724
}
17251725

1726-
define <8 x i1> @fcmp_vec_une_fast_fsub_const(<8 x float> %x, <8 x float> %y) {
1727-
; CHECK-LABEL: @fcmp_vec_une_fast_fsub_const(
1728-
; CHECK-NEXT: [[CMP:%.*]] = fcmp une <8 x float> [[X:%.*]], [[Y:%.*]]
1726+
define <8 x i1> @fcmp_vec_une_fsub_const_fmf(<8 x float> %x, <8 x float> %y) {
1727+
; CHECK-LABEL: @fcmp_vec_une_fsub_const_fmf(
1728+
; CHECK-NEXT: [[CMP:%.*]] = fcmp fast une <8 x float> [[X:%.*]], [[Y:%.*]]
17291729
; CHECK-NEXT: ret <8 x i1> [[CMP]]
17301730
;
17311731
%fs = fsub fast <8 x float> %x, %y
1732-
%cmp = fcmp une <8 x float> %fs, zeroinitializer
1732+
%cmp = fcmp fast une <8 x float> %fs, zeroinitializer
17331733
ret <8 x i1> %cmp
17341734
}

0 commit comments

Comments
 (0)