Skip to content

Commit 71f8f99

Browse files
committed
Added tests to verify fast math flag behavior
1 parent 0382568 commit 71f8f99

File tree

1 file changed

+87
-10
lines changed
  • llvm/test/Transforms/InstCombine

1 file changed

+87
-10
lines changed

llvm/test/Transforms/InstCombine/fcmp.ll

Lines changed: 87 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1517,15 +1517,92 @@ define i1 @fcmp_one_fsub_const(float %x, float %y) {
15171517
ret i1 %cmp
15181518
}
15191519

1520-
define i1 @fcmp_fsub_neg_zero(float %x, float %y) {
1521-
; CHECK-LABEL: @fcmp_fsub_neg_zero(
1522-
; CHECK-NEXT: [[FS:%.*]] = fsub float [[X:%.*]], [[Y:%.*]]
1523-
; CHECK-NEXT: call void @use(float [[FS]])
1524-
; CHECK-NEXT: [[CMP:%.*]] = fcmp ogt float [[X]], [[Y]]
1525-
; CHECK-NEXT: ret i1 [[CMP]]
1520+
define <8 x i1> @fcmp_vec_ogt_fsub_const(<8 x float> %x, <8 x float> %y) {
1521+
; CHECK-LABEL: @fcmp_vec_ogt_fsub_const(
1522+
; CHECK-NEXT: [[CMP:%.*]] = fcmp ogt <8 x float> [[X:%.*]], [[Y:%.*]]
1523+
; CHECK-NEXT: ret <8 x i1> [[CMP]]
15261524
;
1527-
%fs = fsub float %x, %y
1528-
call void @use(float %fs)
1529-
%cmp = fcmp ogt float %fs, -0.000000e+00
1530-
ret i1 %cmp
1525+
%fs = fsub <8 x float> %x, %y
1526+
%cmp = fcmp ogt <8 x float> %fs, zeroinitializer
1527+
ret <8 x i1> %cmp
1528+
}
1529+
1530+
define <8 x i1> @fcmp_vec_olt_fsub_const(<8 x float> %x, <8 x float> %y) {
1531+
; CHECK-LABEL: @fcmp_vec_olt_fsub_const(
1532+
; CHECK-NEXT: [[CMP:%.*]] = fcmp olt <8 x float> [[X:%.*]], [[Y:%.*]]
1533+
; CHECK-NEXT: ret <8 x i1> [[CMP]]
1534+
;
1535+
%fs = fsub <8 x float> %x, %y
1536+
%cmp = fcmp olt <8 x float> %fs, zeroinitializer
1537+
ret <8 x i1> %cmp
1538+
}
1539+
1540+
define <8 x i1> @fcmp_vec_one_fsub_const(<8 x float> %x, <8 x float> %y) {
1541+
; CHECK-LABEL: @fcmp_vec_one_fsub_const(
1542+
; CHECK-NEXT: [[CMP:%.*]] = fcmp one <8 x float> [[X:%.*]], [[Y:%.*]]
1543+
; CHECK-NEXT: ret <8 x i1> [[CMP]]
1544+
;
1545+
%fs = fsub <8 x float> %x, %y
1546+
%cmp = fcmp one <8 x float> %fs, zeroinitializer
1547+
ret <8 x i1> %cmp
1548+
}
1549+
1550+
define <8 x i1> @fcmp_vec_ogt_fm_fsub_const(<8 x float> %x, <8 x float> %y) {
1551+
; CHECK-LABEL: @fcmp_vec_ogt_fm_fsub_const(
1552+
; CHECK-NEXT: [[CMP:%.*]] = fcmp ogt <8 x float> [[X:%.*]], [[Y:%.*]]
1553+
; CHECK-NEXT: ret <8 x i1> [[CMP]]
1554+
;
1555+
%fs = fsub fast <8 x float> %x, %y
1556+
%cmp = fcmp ogt <8 x float> %fs, zeroinitializer
1557+
ret <8 x i1> %cmp
1558+
}
1559+
1560+
define <8 x i1> @fcmp_vec_olt_fm_fsub_const(<8 x float> %x, <8 x float> %y) {
1561+
; CHECK-LABEL: @fcmp_vec_olt_fm_fsub_const(
1562+
; CHECK-NEXT: [[CMP:%.*]] = fcmp olt <8 x float> [[X:%.*]], [[Y:%.*]]
1563+
; CHECK-NEXT: ret <8 x i1> [[CMP]]
1564+
;
1565+
%fs = fsub fast <8 x float> %x, %y
1566+
%cmp = fcmp olt <8 x float> %fs, zeroinitializer
1567+
ret <8 x i1> %cmp
1568+
}
1569+
1570+
define <8 x i1> @fcmp_vec_one_fm_fsub_const(<8 x float> %x, <8 x float> %y) {
1571+
; CHECK-LABEL: @fcmp_vec_one_fm_fsub_const(
1572+
; CHECK-NEXT: [[CMP:%.*]] = fcmp one <8 x float> [[X:%.*]], [[Y:%.*]]
1573+
; CHECK-NEXT: ret <8 x i1> [[CMP]]
1574+
;
1575+
%fs = fsub fast <8 x float> %x, %y
1576+
%cmp = fcmp one <8 x float> %fs, zeroinitializer
1577+
ret <8 x i1> %cmp
1578+
}
1579+
1580+
define <8 x i1> @ffcmp_vec_ogt_fsub_const(<8 x float> %x, <8 x float> %y) {
1581+
; CHECK-LABEL: @ffcmp_vec_ogt_fsub_const(
1582+
; CHECK-NEXT: [[CMP:%.*]] = fcmp ogt <8 x float> [[X:%.*]], [[Y:%.*]]
1583+
; CHECK-NEXT: ret <8 x i1> [[CMP]]
1584+
;
1585+
%fs = fsub <8 x float> %x, %y
1586+
%cmp = fcmp fast ogt <8 x float> %fs, zeroinitializer
1587+
ret <8 x i1> %cmp
1588+
}
1589+
1590+
define <8 x i1> @ffcmp_vec_olt_fsub_const(<8 x float> %x, <8 x float> %y) {
1591+
; CHECK-LABEL: @ffcmp_vec_olt_fsub_const(
1592+
; CHECK-NEXT: [[CMP:%.*]] = fcmp olt <8 x float> [[X:%.*]], [[Y:%.*]]
1593+
; CHECK-NEXT: ret <8 x i1> [[CMP]]
1594+
;
1595+
%fs = fsub <8 x float> %x, %y
1596+
%cmp = fcmp fast olt <8 x float> %fs, zeroinitializer
1597+
ret <8 x i1> %cmp
1598+
}
1599+
1600+
define <8 x i1> @ffcmp_vec_one_fsub_const(<8 x float> %x, <8 x float> %y) {
1601+
; CHECK-LABEL: @ffcmp_vec_one_fsub_const(
1602+
; CHECK-NEXT: [[CMP:%.*]] = fcmp one <8 x float> [[X:%.*]], [[Y:%.*]]
1603+
; CHECK-NEXT: ret <8 x i1> [[CMP]]
1604+
;
1605+
%fs = fsub <8 x float> %x, %y
1606+
%cmp = fcmp fast one <8 x float> %fs, zeroinitializer
1607+
ret <8 x i1> %cmp
15311608
}

0 commit comments

Comments
 (0)