Skip to content

Commit e9f71a7

Browse files
committed
added fmf flag to fcmp
1 parent 1e2fec4 commit e9f71a7

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
@@ -8044,7 +8044,7 @@ Instruction *InstCombinerImpl::visitFCmpInst(FCmpInst &I) {
80448044
case FCmpInst::FCMP_ULE:
80458045
if (match(RHSC, m_AnyZeroFP()) &&
80468046
match(LHSI, m_FSub(m_Value(X), m_Value(Y))))
8047-
return new FCmpInst(Pred, X, Y);
8047+
return new FCmpInst(Pred, X, Y, "", &I);
80488048
break;
80498049
}
80508050
break;

llvm/test/Transforms/InstCombine/fcmp.ll

Lines changed: 48 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -1411,122 +1411,122 @@ define i1 @fcmp_une_fsub_const(float %x, float %y) {
14111411
ret i1 %cmp
14121412
}
14131413

1414-
define <8 x i1> @fcmp_vec_uge_fast_fsub_const(<8 x float> %x, <8 x float> %y) {
1415-
; CHECK-LABEL: @fcmp_vec_uge_fast_fsub_const(
1416-
; CHECK-NEXT: [[CMP:%.*]] = fcmp uge <8 x float> [[X:%.*]], [[Y:%.*]]
1414+
define <8 x i1> @fcmp_vec_uge_fsub_const_fmf(<8 x float> %x, <8 x float> %y) {
1415+
; CHECK-LABEL: @fcmp_vec_uge_fsub_const_fmf(
1416+
; CHECK-NEXT: [[CMP:%.*]] = fcmp fast uge <8 x float> [[X:%.*]], [[Y:%.*]]
14171417
; CHECK-NEXT: ret <8 x i1> [[CMP]]
14181418
;
14191419
%fs = fsub fast <8 x float> %x, %y
1420-
%cmp = fcmp uge <8 x float> %fs, zeroinitializer
1420+
%cmp = fcmp fast uge <8 x float> %fs, zeroinitializer
14211421
ret <8 x i1> %cmp
14221422
}
14231423

1424-
define <8 x i1> @fcmp_vec_ule_fast_fsub_const(<8 x float> %x, <8 x float> %y) {
1425-
; CHECK-LABEL: @fcmp_vec_ule_fast_fsub_const(
1426-
; CHECK-NEXT: [[CMP:%.*]] = fcmp ule <8 x float> [[X:%.*]], [[Y:%.*]]
1424+
define <8 x i1> @fcmp_vec_ule_fsub_const_fmf(<8 x float> %x, <8 x float> %y) {
1425+
; CHECK-LABEL: @fcmp_vec_ule_fsub_const_fmf(
1426+
; CHECK-NEXT: [[CMP:%.*]] = fcmp fast ule <8 x float> [[X:%.*]], [[Y:%.*]]
14271427
; CHECK-NEXT: ret <8 x i1> [[CMP]]
14281428
;
14291429
%fs = fsub fast <8 x float> %x, %y
1430-
%cmp = fcmp ule <8 x float> %fs, zeroinitializer
1430+
%cmp = fcmp fast ule <8 x float> %fs, zeroinitializer
14311431
ret <8 x i1> %cmp
14321432
}
14331433

1434-
define <8 x i1> @fcmp_vec_ueq_fast_fsub_const(<8 x float> %x, <8 x float> %y) {
1435-
; CHECK-LABEL: @fcmp_vec_ueq_fast_fsub_const(
1436-
; CHECK-NEXT: [[CMP:%.*]] = fcmp ueq <8 x float> [[X:%.*]], [[Y:%.*]]
1434+
define <8 x i1> @fcmp_vec_ueq_fsub_const_fmf(<8 x float> %x, <8 x float> %y) {
1435+
; CHECK-LABEL: @fcmp_vec_ueq_fsub_const_fmf(
1436+
; CHECK-NEXT: [[CMP:%.*]] = fcmp fast ueq <8 x float> [[X:%.*]], [[Y:%.*]]
14371437
; CHECK-NEXT: ret <8 x i1> [[CMP]]
14381438
;
14391439
%fs = fsub fast <8 x float> %x, %y
1440-
%cmp = fcmp ueq <8 x float> %fs, zeroinitializer
1440+
%cmp = fcmp fast ueq <8 x float> %fs, zeroinitializer
14411441
ret <8 x i1> %cmp
14421442
}
14431443

1444-
define <8 x i1> @fcmp_vec_oge_fast_fsub_const(<8 x float> %x, <8 x float> %y) {
1445-
; CHECK-LABEL: @fcmp_vec_oge_fast_fsub_const(
1446-
; CHECK-NEXT: [[CMP:%.*]] = fcmp oge <8 x float> [[X:%.*]], [[Y:%.*]]
1444+
define <8 x i1> @fcmp_vec_oge_fsub_const_fmf(<8 x float> %x, <8 x float> %y) {
1445+
; CHECK-LABEL: @fcmp_vec_oge_fsub_const_fmf(
1446+
; CHECK-NEXT: [[CMP:%.*]] = fcmp fast oge <8 x float> [[X:%.*]], [[Y:%.*]]
14471447
; CHECK-NEXT: ret <8 x i1> [[CMP]]
14481448
;
14491449
%fs = fsub fast <8 x float> %x, %y
1450-
%cmp = fcmp oge <8 x float> %fs, zeroinitializer
1450+
%cmp = fcmp fast oge <8 x float> %fs, zeroinitializer
14511451
ret <8 x i1> %cmp
14521452
}
14531453

1454-
define <8 x i1> @fcmp_vec_ole_fast_fsub_const(<8 x float> %x, <8 x float> %y) {
1455-
; CHECK-LABEL: @fcmp_vec_ole_fast_fsub_const(
1456-
; CHECK-NEXT: [[CMP:%.*]] = fcmp ole <8 x float> [[X:%.*]], [[Y:%.*]]
1454+
define <8 x i1> @fcmp_vec_ole_fsub_const_fmf(<8 x float> %x, <8 x float> %y) {
1455+
; CHECK-LABEL: @fcmp_vec_ole_fsub_const_fmf(
1456+
; CHECK-NEXT: [[CMP:%.*]] = fcmp fast ole <8 x float> [[X:%.*]], [[Y:%.*]]
14571457
; CHECK-NEXT: ret <8 x i1> [[CMP]]
14581458
;
14591459
%fs = fsub fast <8 x float> %x, %y
1460-
%cmp = fcmp ole <8 x float> %fs, zeroinitializer
1460+
%cmp = fcmp fast ole <8 x float> %fs, zeroinitializer
14611461
ret <8 x i1> %cmp
14621462
}
14631463

1464-
define <8 x i1> @fcmp_vec_oeq_fast_fsub_const(<8 x float> %x, <8 x float> %y) {
1465-
; CHECK-LABEL: @fcmp_vec_oeq_fast_fsub_const(
1466-
; CHECK-NEXT: [[CMP:%.*]] = fcmp oeq <8 x float> [[X:%.*]], [[Y:%.*]]
1464+
define <8 x i1> @fcmp_vec_oeq_fsub_const_fmf(<8 x float> %x, <8 x float> %y) {
1465+
; CHECK-LABEL: @fcmp_vec_oeq_fsub_const_fmf(
1466+
; CHECK-NEXT: [[CMP:%.*]] = fcmp fast oeq <8 x float> [[X:%.*]], [[Y:%.*]]
14671467
; CHECK-NEXT: ret <8 x i1> [[CMP]]
14681468
;
14691469
%fs = fsub fast <8 x float> %x, %y
1470-
%cmp = fcmp oeq <8 x float> %fs, zeroinitializer
1470+
%cmp = fcmp fast oeq <8 x float> %fs, zeroinitializer
14711471
ret <8 x i1> %cmp
14721472
}
14731473

1474-
define <8 x i1> @fcmp_vec_ogt_fast_fsub_const(<8 x float> %x, <8 x float> %y) {
1475-
; CHECK-LABEL: @fcmp_vec_ogt_fast_fsub_const(
1476-
; CHECK-NEXT: [[CMP:%.*]] = fcmp ogt <8 x float> [[X:%.*]], [[Y:%.*]]
1474+
define <8 x i1> @fcmp_vec_ogt_fsub_const_fmf(<8 x float> %x, <8 x float> %y) {
1475+
; CHECK-LABEL: @fcmp_vec_ogt_fsub_const_fmf(
1476+
; CHECK-NEXT: [[CMP:%.*]] = fcmp fast ogt <8 x float> [[X:%.*]], [[Y:%.*]]
14771477
; CHECK-NEXT: ret <8 x i1> [[CMP]]
14781478
;
14791479
%fs = fsub fast <8 x float> %x, %y
1480-
%cmp = fcmp ogt <8 x float> %fs, zeroinitializer
1480+
%cmp = fcmp fast ogt <8 x float> %fs, zeroinitializer
14811481
ret <8 x i1> %cmp
14821482
}
14831483

1484-
define <8 x i1> @fcmp_vec_olt_fast_fsub_const(<8 x float> %x, <8 x float> %y) {
1485-
; CHECK-LABEL: @fcmp_vec_olt_fast_fsub_const(
1486-
; CHECK-NEXT: [[CMP:%.*]] = fcmp olt <8 x float> [[X:%.*]], [[Y:%.*]]
1484+
define <8 x i1> @fcmp_vec_olt_fsub_const_fmf(<8 x float> %x, <8 x float> %y) {
1485+
; CHECK-LABEL: @fcmp_vec_olt_fsub_const_fmf(
1486+
; CHECK-NEXT: [[CMP:%.*]] = fcmp fast olt <8 x float> [[X:%.*]], [[Y:%.*]]
14871487
; CHECK-NEXT: ret <8 x i1> [[CMP]]
14881488
;
14891489
%fs = fsub fast <8 x float> %x, %y
1490-
%cmp = fcmp olt <8 x float> %fs, zeroinitializer
1490+
%cmp = fcmp fast olt <8 x float> %fs, zeroinitializer
14911491
ret <8 x i1> %cmp
14921492
}
14931493

1494-
define <8 x i1> @fcmp_vec_one_fast_fsub_const(<8 x float> %x, <8 x float> %y) {
1495-
; CHECK-LABEL: @fcmp_vec_one_fast_fsub_const(
1496-
; CHECK-NEXT: [[CMP:%.*]] = fcmp one <8 x float> [[X:%.*]], [[Y:%.*]]
1494+
define <8 x i1> @fcmp_vec_one_fsub_const_fmf(<8 x float> %x, <8 x float> %y) {
1495+
; CHECK-LABEL: @fcmp_vec_one_fsub_const_fmf(
1496+
; CHECK-NEXT: [[CMP:%.*]] = fcmp fast one <8 x float> [[X:%.*]], [[Y:%.*]]
14971497
; CHECK-NEXT: ret <8 x i1> [[CMP]]
14981498
;
14991499
%fs = fsub fast <8 x float> %x, %y
1500-
%cmp = fcmp one <8 x float> %fs, zeroinitializer
1500+
%cmp = fcmp fast one <8 x float> %fs, zeroinitializer
15011501
ret <8 x i1> %cmp
15021502
}
15031503

1504-
define <8 x i1> @fcmp_vec_ugt_fast_fsub_const(<8 x float> %x, <8 x float> %y) {
1505-
; CHECK-LABEL: @fcmp_vec_ugt_fast_fsub_const(
1506-
; CHECK-NEXT: [[CMP:%.*]] = fcmp ugt <8 x float> [[X:%.*]], [[Y:%.*]]
1504+
define <8 x i1> @fcmp_vec_ugt_fsub_const_fmf(<8 x float> %x, <8 x float> %y) {
1505+
; CHECK-LABEL: @fcmp_vec_ugt_fsub_const_fmf(
1506+
; CHECK-NEXT: [[CMP:%.*]] = fcmp fast ugt <8 x float> [[X:%.*]], [[Y:%.*]]
15071507
; CHECK-NEXT: ret <8 x i1> [[CMP]]
15081508
;
15091509
%fs = fsub fast <8 x float> %x, %y
1510-
%cmp = fcmp ugt <8 x float> %fs, zeroinitializer
1510+
%cmp = fcmp fast ugt <8 x float> %fs, zeroinitializer
15111511
ret <8 x i1> %cmp
15121512
}
15131513

1514-
define <8 x i1> @fcmp_vec_ult_fast_fsub_const(<8 x float> %x, <8 x float> %y) {
1515-
; CHECK-LABEL: @fcmp_vec_ult_fast_fsub_const(
1516-
; CHECK-NEXT: [[CMP:%.*]] = fcmp ult <8 x float> [[X:%.*]], [[Y:%.*]]
1514+
define <8 x i1> @fcmp_vec_ult_fsub_const_fmf(<8 x float> %x, <8 x float> %y) {
1515+
; CHECK-LABEL: @fcmp_vec_ult_fsub_const_fmf(
1516+
; CHECK-NEXT: [[CMP:%.*]] = fcmp fast ult <8 x float> [[X:%.*]], [[Y:%.*]]
15171517
; CHECK-NEXT: ret <8 x i1> [[CMP]]
15181518
;
15191519
%fs = fsub fast <8 x float> %x, %y
1520-
%cmp = fcmp ult <8 x float> %fs, zeroinitializer
1520+
%cmp = fcmp fast ult <8 x float> %fs, zeroinitializer
15211521
ret <8 x i1> %cmp
15221522
}
15231523

1524-
define <8 x i1> @fcmp_vec_une_fast_fsub_const(<8 x float> %x, <8 x float> %y) {
1525-
; CHECK-LABEL: @fcmp_vec_une_fast_fsub_const(
1526-
; CHECK-NEXT: [[CMP:%.*]] = fcmp une <8 x float> [[X:%.*]], [[Y:%.*]]
1524+
define <8 x i1> @fcmp_vec_une_fsub_const_fmf(<8 x float> %x, <8 x float> %y) {
1525+
; CHECK-LABEL: @fcmp_vec_une_fsub_const_fmf(
1526+
; CHECK-NEXT: [[CMP:%.*]] = fcmp fast une <8 x float> [[X:%.*]], [[Y:%.*]]
15271527
; CHECK-NEXT: ret <8 x i1> [[CMP]]
15281528
;
15291529
%fs = fsub fast <8 x float> %x, %y
1530-
%cmp = fcmp une <8 x float> %fs, zeroinitializer
1530+
%cmp = fcmp fast une <8 x float> %fs, zeroinitializer
15311531
ret <8 x i1> %cmp
15321532
}

0 commit comments

Comments
 (0)