Lines Matching full:intrinsic
1885 assert(Fn->getIntrinsicID() == Intrinsic::donothing);
3594 /// visitTargetIntrinsic - Lower a call of a target intrinsic to an INTRINSIC
3597 unsigned Intrinsic) {
3603 if (HasChain) { // If this intrinsic has side-effects, chainify it.
3615 bool IsTgtIntrinsic = TLI->getTgtMemIntrinsic(Info, I, Intrinsic);
3617 // Add the intrinsic ID as an integer operand if it's not a target intrinsic.
3620 Ops.push_back(DAG.getTargetConstant(Intrinsic, TLI->getPointerTy()));
3639 // This is target intrinsic that touches memory
3714 /// expandExp - Lower an exp intrinsic. Handles the special sequences for
3817 /// expandLog - Lower a log intrinsic. Handles the special sequences for
3913 /// expandLog2 - Lower a log2 intrinsic. Handles the special sequences for
4008 /// expandLog10 - Lower a log10 intrinsic. Handles the special sequences for
4096 /// expandExp2 - Lower an exp2 intrinsic. Handles the special sequences for
4191 /// visitPow - Lower a pow intrinsic. Handles the special sequences for
4300 /// ExpandPowI - Expand a llvm.powi intrinsic.
4451 /// visitIntrinsicCall - Lower the call to the specified intrinsic function. If
4455 SelectionDAGBuilder::visitIntrinsicCall(const CallInst &I, unsigned Intrinsic) {
4461 switch (Intrinsic) {
4463 // By default, turn this into a target intrinsic node.
4464 Intrinsic);
4466 case Intrinsic::vastart: visitVAStart(I); return 0;
4467 case Intrinsic::vaend: visitVAEnd(I); return 0;
4468 case Intrinsic::vacopy: visitVACopy(I); return 0;
4469 case Intrinsic::returnaddress:
4473 case Intrinsic::frameaddress:
4477 case Intrinsic::setjmp:
4479 case Intrinsic::longjmp:
4481 case Intrinsic::memcpy: {
4501 case Intrinsic::memset: {
4518 case Intrinsic::memmove: {
4538 case Intrinsic::dbg_declare: {
4618 case Intrinsic::dbg_value: {
4683 case Intrinsic::eh_typeid_for: {
4692 case Intrinsic::eh_return_i32:
4693 case Intrinsic::eh_return_i64:
4701 case Intrinsic::eh_unwind_init:
4704 case Intrinsic::eh_dwarf_cfa: {
4719 case Intrinsic::eh_sjlj_callsite: {
4728 case Intrinsic::eh_sjlj_functioncontext: {
4737 case Intrinsic::eh_sjlj_setjmp: {
4748 case Intrinsic::eh_sjlj_longjmp: {
4754 case Intrinsic::x86_mmx_pslli_w:
4755 case Intrinsic::x86_mmx_pslli_d:
4756 case Intrinsic::x86_mmx_pslli_q:
4757 case Intrinsic::x86_mmx_psrli_w:
4758 case Intrinsic::x86_mmx_psrli_d:
4759 case Intrinsic::x86_mmx_psrli_q:
4760 case Intrinsic::x86_mmx_psrai_w:
4761 case Intrinsic::x86_mmx_psrai_d: {
4764 visitTargetIntrinsic(I, Intrinsic);
4769 switch (Intrinsic) {
4770 case Intrinsic::x86_mmx_pslli_w:
4771 NewIntrinsic = Intrinsic::x86_mmx_psll_w;
4773 case Intrinsic::x86_mmx_pslli_d:
4774 NewIntrinsic = Intrinsic::x86_mmx_psll_d;
4776 case Intrinsic::x86_mmx_pslli_q:
4777 NewIntrinsic = Intrinsic::x86_mmx_psll_q;
4779 case Intrinsic::x86_mmx_psrli_w:
4780 NewIntrinsic = Intrinsic::x86_mmx_psrl_w;
4782 case Intrinsic::x86_mmx_psrli_d:
4783 NewIntrinsic = Intrinsic::x86_mmx_psrl_d;
4785 case Intrinsic::x86_mmx_psrli_q:
4786 NewIntrinsic = Intrinsic::x86_mmx_psrl_q;
4788 case Intrinsic::x86_mmx_psrai_w:
4789 NewIntrinsic = Intrinsic::x86_mmx_psra_w;
4791 case Intrinsic::x86_mmx_psrai_d:
4792 NewIntrinsic = Intrinsic::x86_mmx_psra_d;
4794 default: llvm_unreachable("Impossible intrinsic"); // Can't reach here.
4813 case Intrinsic::x86_avx_vinsertf128_pd_256:
4814 case Intrinsic::x86_avx_vinsertf128_ps_256:
4815 case Intrinsic::x86_avx_vinsertf128_si_256:
4816 case Intrinsic::x86_avx2_vinserti128: {
4828 case Intrinsic::x86_avx_vextractf128_pd_256:
4829 case Intrinsic::x86_avx_vextractf128_ps_256:
4830 case Intrinsic::x86_avx_vextractf128_si_256:
4831 case Intrinsic::x86_avx2_vextracti128: {
4841 case Intrinsic::convertff:
4842 case Intrinsic::convertfsi:
4843 case Intrinsic::convertfui:
4844 case Intrinsic::convertsif:
4845 case Intrinsic::convertuif:
4846 case Intrinsic::convertss:
4847 case Intrinsic::convertsu:
4848 case Intrinsic::convertus:
4849 case Intrinsic::convertuu: {
4851 switch (Intrinsic) {
4852 default: llvm_unreachable("Impossible intrinsic"); // Can't reach here.
4853 case Intrinsic::convertff: Code = ISD::CVT_FF; break;
4854 case Intrinsic::convertfsi: Code = ISD::CVT_FS; break;
4855 case Intrinsic::convertfui: Code = ISD::CVT_FU; break;
4856 case Intrinsic::convertsif: Code = ISD::CVT_SF; break;
4857 case Intrinsic::convertuif: Code = ISD::CVT_UF; break;
4858 case Intrinsic::convertss: Code = ISD::CVT_SS; break;
4859 case Intrinsic::convertsu: Code = ISD::CVT_SU; break;
4860 case Intrinsic::convertus: Code = ISD::CVT_US; break;
4861 case Intrinsic::convertuu: Code = ISD::CVT_UU; break;
4874 case Intrinsic::powi:
4878 case Intrinsic::log:
4881 case Intrinsic::log2:
4884 case Intrinsic::log10:
4887 case Intrinsic::exp:
4890 case Intrinsic::exp2:
4893 case Intrinsic::pow:
4897 case Intrinsic::sqrt:
4898 case Intrinsic::fabs:
4899 case Intrinsic::sin:
4900 case Intrinsic::cos:
4901 case Intrinsic::floor:
4902 case Intrinsic::ceil:
4903 case Intrinsic::trunc:
4904 case Intrinsic::rint:
4905 case Intrinsic::nearbyint: {
4907 switch (Intrinsic) {
4908 default: llvm_unreachable("Impossible intrinsic"); // Can't reach here.
4909 case Intrinsic::sqrt: Opcode = ISD::FSQRT; break;
4910 case Intrinsic::fabs: Opcode = ISD::FABS; break;
4911 case Intrinsic::sin: Opcode = ISD::FSIN; break;
4912 case Intrinsic::cos: Opcode = ISD::FCOS; break;
4913 case Intrinsic::floor: Opcode = ISD::FFLOOR; break;
4914 case Intrinsic::ceil: Opcode = ISD::FCEIL; break;
4915 case Intrinsic::trunc: Opcode = ISD::FTRUNC; break;
4916 case Intrinsic::rint: Opcode = ISD::FRINT; break;
4917 case Intrinsic::nearbyint: Opcode = ISD::FNEARBYINT; break;
4925 case Intrinsic::fma:
4932 case Intrinsic::fmuladd: {
4954 case Intrinsic::convert_to_fp16:
4958 case Intrinsic::convert_from_fp16:
4962 case Intrinsic::pcmarker: {
4967 case Intrinsic::readcyclecounter: {
4976 case Intrinsic::bswap:
4981 case Intrinsic::cttz: {
4989 case Intrinsic::ctlz: {
4997 case Intrinsic::ctpop: {
5003 case Intrinsic::stacksave: {
5011 case Intrinsic::stackrestore: {
5016 case Intrinsic::stackprotector: {
5038 case Intrinsic::objectsize: {
5055 case Intrinsic::annotation:
5056 case Intrinsic::ptr_annotation:
5057 // Drop the intrinsic, but forward the value
5060 case Intrinsic::var_annotation:
5064 case Intrinsic::init_trampoline: {
5080 case Intrinsic::adjust_trampoline: {
5086 case Intrinsic::gcroot:
5095 case Intrinsic::gcread:
5096 case Intrinsic::gcwrite:
5098 case Intrinsic::flt_rounds:
5102 case Intrinsic::expect: {
5108 case Intrinsic::debugtrap:
5109 case Intrinsic::trap: {
5112 ISD::NodeType Op = (Intrinsic == Intrinsic::trap) ?
5131 case Intrinsic::uadd_with_overflow:
5132 case Intrinsic::sadd_with_overflow:
5133 case Intrinsic::usub_with_overflow:
5134 case Intrinsic::ssub_with_overflow:
5135 case Intrinsic::umul_with_overflow:
5136 case Intrinsic::smul_with_overflow: {
5138 switch (Intrinsic) {
5139 default: llvm_unreachable("Impossible intrinsic"); // Can't reach here.
5140 case Intrinsic::uadd_with_overflow: Op = ISD::UADDO; break;
5141 case Intrinsic::sadd_with_overflow: Op = ISD::SADDO; break;
5142 case Intrinsic::usub_with_overflow: Op = ISD::USUBO; break;
5143 case Intrinsic::ssub_with_overflow: Op = ISD::SSUBO; break;
5144 case Intrinsic::umul_with_overflow: Op = ISD::UMULO; break;
5145 case Intrinsic::smul_with_overflow: Op = ISD::SMULO; break;
5154 case Intrinsic::prefetch: {
5173 case Intrinsic::lifetime_start:
5174 case Intrinsic::lifetime_end: {
5175 bool IsStart = (Intrinsic == Intrinsic::lifetime_start);
5203 case Intrinsic::invariant_start:
5207 case Intrinsic::invariant_end:
5210 case Intrinsic::donothing: