@@ -813,6 +813,35 @@ TEST(ValueTracking, propagatesPoison) {
813
813
" declare {i32, i1} @llvm.uadd.with.overflow.i32(i32 %a, i32 %b)\n "
814
814
" declare {i32, i1} @llvm.usub.with.overflow.i32(i32 %a, i32 %b)\n "
815
815
" 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 "
816
845
" define void @f(i32 %x, i32 %y, float %fx, float %fy, "
817
846
" i1 %cond, i8* %p) {\n " ;
818
847
std::string AsmTail = " ret void\n }" ;
@@ -845,7 +874,36 @@ TEST(ValueTracking, propagatesPoison) {
845
874
{true , " call {i32, i1} @llvm.smul.with.overflow.i32(i32 %x, i32 %y)" },
846
875
{true , " call {i32, i1} @llvm.uadd.with.overflow.i32(i32 %x, i32 %y)" },
847
876
{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)" }};
849
907
850
908
std::string AssemblyStr = AsmHead;
851
909
for (auto &Itm : Data)
0 commit comments