Skip to content

Commit a993bb0

Browse files
committed
[ValueTracking] add FP intrinsics to test for propagatesPoison; NFC
I'm not sure what behavior we want if the FP environment is not default (also not sure if there's a way to enumerate the full list of intrinsics programmatically), but currently these are all defaulting to 'false' (doesn't propagate).
1 parent 1a76bff commit a993bb0

File tree

1 file changed

+59
-1
lines changed

1 file changed

+59
-1
lines changed

llvm/unittests/Analysis/ValueTrackingTest.cpp

Lines changed: 59 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -813,6 +813,35 @@ TEST(ValueTracking, propagatesPoison) {
813813
"declare {i32, i1} @llvm.uadd.with.overflow.i32(i32 %a, i32 %b)\n"
814814
"declare {i32, i1} @llvm.usub.with.overflow.i32(i32 %a, i32 %b)\n"
815815
"declare {i32, i1} @llvm.umul.with.overflow.i32(i32 %a, i32 %b)\n"
816+
"declare float @llvm.sqrt.f32(float)\n"
817+
"declare float @llvm.powi.f32(float, i32)\n"
818+
"declare float @llvm.sin.f32(float)\n"
819+
"declare float @llvm.cos.f32(float)\n"
820+
"declare float @llvm.pow.f32(float, float)\n"
821+
"declare float @llvm.exp.f32(float)\n"
822+
"declare float @llvm.exp2.f32(float)\n"
823+
"declare float @llvm.log.f32(float)\n"
824+
"declare float @llvm.log10.f32(float)\n"
825+
"declare float @llvm.log2.f32(float)\n"
826+
"declare float @llvm.fma.f32(float, float, float)\n"
827+
"declare float @llvm.fabs.f32(float)\n"
828+
"declare float @llvm.minnum.f32(float, float)\n"
829+
"declare float @llvm.maxnum.f32(float, float)\n"
830+
"declare float @llvm.minimum.f32(float, float)\n"
831+
"declare float @llvm.maximum.f32(float, float)\n"
832+
"declare float @llvm.copysign.f32(float, float)\n"
833+
"declare float @llvm.floor.f32(float)\n"
834+
"declare float @llvm.ceil.f32(float)\n"
835+
"declare float @llvm.trunc.f32(float)\n"
836+
"declare float @llvm.rint.f32(float)\n"
837+
"declare float @llvm.nearbyint.f32(float)\n"
838+
"declare float @llvm.round.f32(float)\n"
839+
"declare float @llvm.roundeven.f32(float)\n"
840+
"declare i32 @llvm.lround.f32(float)\n"
841+
"declare i64 @llvm.llround.f32(float)\n"
842+
"declare i32 @llvm.lrint.f32(float)\n"
843+
"declare i64 @llvm.llrint.f32(float)\n"
844+
"declare float @llvm.fmuladd.f32(float, float, float)\n"
816845
"define void @f(i32 %x, i32 %y, float %fx, float %fy, "
817846
"i1 %cond, i8* %p) {\n";
818847
std::string AsmTail = " ret void\n}";
@@ -845,7 +874,36 @@ TEST(ValueTracking, propagatesPoison) {
845874
{true, "call {i32, i1} @llvm.smul.with.overflow.i32(i32 %x, i32 %y)"},
846875
{true, "call {i32, i1} @llvm.uadd.with.overflow.i32(i32 %x, i32 %y)"},
847876
{true, "call {i32, i1} @llvm.usub.with.overflow.i32(i32 %x, i32 %y)"},
848-
{true, "call {i32, i1} @llvm.umul.with.overflow.i32(i32 %x, i32 %y)"}};
877+
{true, "call {i32, i1} @llvm.umul.with.overflow.i32(i32 %x, i32 %y)"},
878+
{false, "call float @llvm.sqrt.f32(float %fx)"},
879+
{false, "call float @llvm.powi.f32(float %fx, i32 %x)"},
880+
{false, "call float @llvm.sin.f32(float %fx)"},
881+
{false, "call float @llvm.cos.f32(float %fx)"},
882+
{false, "call float @llvm.pow.f32(float %fx, float %fy)"},
883+
{false, "call float @llvm.exp.f32(float %fx)"},
884+
{false, "call float @llvm.exp2.f32(float %fx)"},
885+
{false, "call float @llvm.log.f32(float %fx)"},
886+
{false, "call float @llvm.log10.f32(float %fx)"},
887+
{false, "call float @llvm.log2.f32(float %fx)"},
888+
{false, "call float @llvm.fma.f32(float %fx, float %fx, float %fy)"},
889+
{false, "call float @llvm.fabs.f32(float %fx)"},
890+
{false, "call float @llvm.minnum.f32(float %fx, float %fy)"},
891+
{false, "call float @llvm.maxnum.f32(float %fx, float %fy)"},
892+
{false, "call float @llvm.minimum.f32(float %fx, float %fy)"},
893+
{false, "call float @llvm.maximum.f32(float %fx, float %fy)"},
894+
{false, "call float @llvm.copysign.f32(float %fx, float %fy)"},
895+
{false, "call float @llvm.floor.f32(float %fx)"},
896+
{false, "call float @llvm.ceil.f32(float %fx)"},
897+
{false, "call float @llvm.trunc.f32(float %fx)"},
898+
{false, "call float @llvm.rint.f32(float %fx)"},
899+
{false, "call float @llvm.nearbyint.f32(float %fx)"},
900+
{false, "call float @llvm.round.f32(float %fx)"},
901+
{false, "call float @llvm.roundeven.f32(float %fx)"},
902+
{false, "call i32 @llvm.lround.f32(float %fx)"},
903+
{false, "call i64 @llvm.llround.f32(float %fx)"},
904+
{false, "call i32 @llvm.lrint.f32(float %fx)"},
905+
{false, "call i64 @llvm.llrint.f32(float %fx)"},
906+
{false, "call float @llvm.fmuladd.f32(float %fx, float %fx, float %fy)"}};
849907

850908
std::string AssemblyStr = AsmHead;
851909
for (auto &Itm : Data)

0 commit comments

Comments
 (0)