Skip to content

Commit 9cad265

Browse files
committed
Added tests to verify fast math flag behavior
1 parent 38be749 commit 9cad265

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
@@ -1315,15 +1315,92 @@ define i1 @fcmp_one_fsub_const(float %x, float %y) {
13151315
ret i1 %cmp
13161316
}
13171317

1318-
define i1 @fcmp_fsub_neg_zero(float %x, float %y) {
1319-
; CHECK-LABEL: @fcmp_fsub_neg_zero(
1320-
; CHECK-NEXT: [[FS:%.*]] = fsub float [[X:%.*]], [[Y:%.*]]
1321-
; CHECK-NEXT: call void @use(float [[FS]])
1322-
; CHECK-NEXT: [[CMP:%.*]] = fcmp ogt float [[X]], [[Y]]
1323-
; CHECK-NEXT: ret i1 [[CMP]]
1318+
define <8 x i1> @fcmp_vec_ogt_fsub_const(<8 x float> %x, <8 x float> %y) {
1319+
; CHECK-LABEL: @fcmp_vec_ogt_fsub_const(
1320+
; CHECK-NEXT: [[CMP:%.*]] = fcmp ogt <8 x float> [[X:%.*]], [[Y:%.*]]
1321+
; CHECK-NEXT: ret <8 x i1> [[CMP]]
13241322
;
1325-
%fs = fsub float %x, %y
1326-
call void @use(float %fs)
1327-
%cmp = fcmp ogt float %fs, -0.000000e+00
1328-
ret i1 %cmp
1323+
%fs = fsub <8 x float> %x, %y
1324+
%cmp = fcmp ogt <8 x float> %fs, zeroinitializer
1325+
ret <8 x i1> %cmp
1326+
}
1327+
1328+
define <8 x i1> @fcmp_vec_olt_fsub_const(<8 x float> %x, <8 x float> %y) {
1329+
; CHECK-LABEL: @fcmp_vec_olt_fsub_const(
1330+
; CHECK-NEXT: [[CMP:%.*]] = fcmp olt <8 x float> [[X:%.*]], [[Y:%.*]]
1331+
; CHECK-NEXT: ret <8 x i1> [[CMP]]
1332+
;
1333+
%fs = fsub <8 x float> %x, %y
1334+
%cmp = fcmp olt <8 x float> %fs, zeroinitializer
1335+
ret <8 x i1> %cmp
1336+
}
1337+
1338+
define <8 x i1> @fcmp_vec_one_fsub_const(<8 x float> %x, <8 x float> %y) {
1339+
; CHECK-LABEL: @fcmp_vec_one_fsub_const(
1340+
; CHECK-NEXT: [[CMP:%.*]] = fcmp one <8 x float> [[X:%.*]], [[Y:%.*]]
1341+
; CHECK-NEXT: ret <8 x i1> [[CMP]]
1342+
;
1343+
%fs = fsub <8 x float> %x, %y
1344+
%cmp = fcmp one <8 x float> %fs, zeroinitializer
1345+
ret <8 x i1> %cmp
1346+
}
1347+
1348+
define <8 x i1> @fcmp_vec_ogt_fm_fsub_const(<8 x float> %x, <8 x float> %y) {
1349+
; CHECK-LABEL: @fcmp_vec_ogt_fm_fsub_const(
1350+
; CHECK-NEXT: [[CMP:%.*]] = fcmp ogt <8 x float> [[X:%.*]], [[Y:%.*]]
1351+
; CHECK-NEXT: ret <8 x i1> [[CMP]]
1352+
;
1353+
%fs = fsub fast <8 x float> %x, %y
1354+
%cmp = fcmp ogt <8 x float> %fs, zeroinitializer
1355+
ret <8 x i1> %cmp
1356+
}
1357+
1358+
define <8 x i1> @fcmp_vec_olt_fm_fsub_const(<8 x float> %x, <8 x float> %y) {
1359+
; CHECK-LABEL: @fcmp_vec_olt_fm_fsub_const(
1360+
; CHECK-NEXT: [[CMP:%.*]] = fcmp olt <8 x float> [[X:%.*]], [[Y:%.*]]
1361+
; CHECK-NEXT: ret <8 x i1> [[CMP]]
1362+
;
1363+
%fs = fsub fast <8 x float> %x, %y
1364+
%cmp = fcmp olt <8 x float> %fs, zeroinitializer
1365+
ret <8 x i1> %cmp
1366+
}
1367+
1368+
define <8 x i1> @fcmp_vec_one_fm_fsub_const(<8 x float> %x, <8 x float> %y) {
1369+
; CHECK-LABEL: @fcmp_vec_one_fm_fsub_const(
1370+
; CHECK-NEXT: [[CMP:%.*]] = fcmp one <8 x float> [[X:%.*]], [[Y:%.*]]
1371+
; CHECK-NEXT: ret <8 x i1> [[CMP]]
1372+
;
1373+
%fs = fsub fast <8 x float> %x, %y
1374+
%cmp = fcmp one <8 x float> %fs, zeroinitializer
1375+
ret <8 x i1> %cmp
1376+
}
1377+
1378+
define <8 x i1> @ffcmp_vec_ogt_fsub_const(<8 x float> %x, <8 x float> %y) {
1379+
; CHECK-LABEL: @ffcmp_vec_ogt_fsub_const(
1380+
; CHECK-NEXT: [[CMP:%.*]] = fcmp ogt <8 x float> [[X:%.*]], [[Y:%.*]]
1381+
; CHECK-NEXT: ret <8 x i1> [[CMP]]
1382+
;
1383+
%fs = fsub <8 x float> %x, %y
1384+
%cmp = fcmp fast ogt <8 x float> %fs, zeroinitializer
1385+
ret <8 x i1> %cmp
1386+
}
1387+
1388+
define <8 x i1> @ffcmp_vec_olt_fsub_const(<8 x float> %x, <8 x float> %y) {
1389+
; CHECK-LABEL: @ffcmp_vec_olt_fsub_const(
1390+
; CHECK-NEXT: [[CMP:%.*]] = fcmp olt <8 x float> [[X:%.*]], [[Y:%.*]]
1391+
; CHECK-NEXT: ret <8 x i1> [[CMP]]
1392+
;
1393+
%fs = fsub <8 x float> %x, %y
1394+
%cmp = fcmp fast olt <8 x float> %fs, zeroinitializer
1395+
ret <8 x i1> %cmp
1396+
}
1397+
1398+
define <8 x i1> @ffcmp_vec_one_fsub_const(<8 x float> %x, <8 x float> %y) {
1399+
; CHECK-LABEL: @ffcmp_vec_one_fsub_const(
1400+
; CHECK-NEXT: [[CMP:%.*]] = fcmp one <8 x float> [[X:%.*]], [[Y:%.*]]
1401+
; CHECK-NEXT: ret <8 x i1> [[CMP]]
1402+
;
1403+
%fs = fsub <8 x float> %x, %y
1404+
%cmp = fcmp fast one <8 x float> %fs, zeroinitializer
1405+
ret <8 x i1> %cmp
13291406
}

0 commit comments

Comments
 (0)