Lines Matching refs:Intrinsic

28 static inline bool isTriviallyVectorizable(Intrinsic::ID ID) {
30 case Intrinsic::sqrt:
31 case Intrinsic::sin:
32 case Intrinsic::cos:
33 case Intrinsic::exp:
34 case Intrinsic::exp2:
35 case Intrinsic::log:
36 case Intrinsic::log10:
37 case Intrinsic::log2:
38 case Intrinsic::fabs:
39 case Intrinsic::copysign:
40 case Intrinsic::floor:
41 case Intrinsic::ceil:
42 case Intrinsic::trunc:
43 case Intrinsic::rint:
44 case Intrinsic::nearbyint:
45 case Intrinsic::round:
46 case Intrinsic::bswap:
47 case Intrinsic::ctpop:
48 case Intrinsic::pow:
49 case Intrinsic::fma:
50 case Intrinsic::fmuladd:
51 case Intrinsic::ctlz:
52 case Intrinsic::cttz:
53 case Intrinsic::powi:
60 static bool hasVectorInstrinsicScalarOpd(Intrinsic::ID ID,
63 case Intrinsic::ctlz:
64 case Intrinsic::cttz:
65 case Intrinsic::powi:
72 static Intrinsic::ID checkUnaryFloatSignature(const CallInst &I,
73 Intrinsic::ID ValidIntrinsicID) {
78 return Intrinsic::not_intrinsic;
83 static Intrinsic::ID checkBinaryFloatSignature(const CallInst &I,
84 Intrinsic::ID ValidIntrinsicID) {
91 return Intrinsic::not_intrinsic;
96 static Intrinsic::ID
100 Intrinsic::ID ID = II->getIntrinsicID();
101 if (isTriviallyVectorizable(ID) || ID == Intrinsic::lifetime_start ||
102 ID == Intrinsic::lifetime_end)
105 return Intrinsic::not_intrinsic;
109 return Intrinsic::not_intrinsic;
117 return Intrinsic::not_intrinsic;
127 return checkUnaryFloatSignature(*CI, Intrinsic::sin);
131 return checkUnaryFloatSignature(*CI, Intrinsic::cos);
135 return checkUnaryFloatSignature(*CI, Intrinsic::exp);
139 return checkUnaryFloatSignature(*CI, Intrinsic::exp2);
143 return checkUnaryFloatSignature(*CI, Intrinsic::log);
147 return checkUnaryFloatSignature(*CI, Intrinsic::log10);
151 return checkUnaryFloatSignature(*CI, Intrinsic::log2);
155 return checkUnaryFloatSignature(*CI, Intrinsic::fabs);
159 return checkBinaryFloatSignature(*CI, Intrinsic::copysign);
163 return checkUnaryFloatSignature(*CI, Intrinsic::floor);
167 return checkUnaryFloatSignature(*CI, Intrinsic::ceil);
171 return checkUnaryFloatSignature(*CI, Intrinsic::trunc);
175 return checkUnaryFloatSignature(*CI, Intrinsic::rint);
179 return checkUnaryFloatSignature(*CI, Intrinsic::nearbyint);
183 return checkUnaryFloatSignature(*CI, Intrinsic::round);
187 return checkBinaryFloatSignature(*CI, Intrinsic::pow);
190 return Intrinsic::not_intrinsic;