reference, declarationdefinition
definition → references, declarations, derived classes, virtual overrides
reference to multiple definitions → definitions
unreferenced

References

tools/clang/lib/CodeGen/CGBuiltin.cpp
 5277       return EmitNeonCall(CGM.getIntrinsic(Intrinsic::fabs, Ty), Ops, "vabs");
 5278     return EmitNeonCall(CGM.getIntrinsic(LLVMIntrinsic, Ty), Ops, "vabs");
 5284     Ops[0] = Builder.CreateBitCast(Ops[0], SrcTy);
 5284     Ops[0] = Builder.CreateBitCast(Ops[0], SrcTy);
 5285     Ops[1] = Builder.CreateBitCast(Ops[1], SrcTy);
 5285     Ops[1] = Builder.CreateBitCast(Ops[1], SrcTy);
 5286     Ops[0] = Builder.CreateAdd(Ops[0], Ops[1], "vaddhn");
 5286     Ops[0] = Builder.CreateAdd(Ops[0], Ops[1], "vaddhn");
 5286     Ops[0] = Builder.CreateAdd(Ops[0], Ops[1], "vaddhn");
 5291     Ops[0] = Builder.CreateLShr(Ops[0], ShiftAmt, "vaddhn");
 5291     Ops[0] = Builder.CreateLShr(Ops[0], ShiftAmt, "vaddhn");
 5294     return Builder.CreateTrunc(Ops[0], VTy, "vaddhn");
 5300     std::swap(Ops[0], Ops[1]);
 5300     std::swap(Ops[0], Ops[1]);
 5322     return EmitNeonCall(F, Ops, NameHint);
 5326     return EmitAArch64CompareBuiltinExpr(Ops[0], Ty, ICmpInst::FCMP_OEQ,
 5330     return EmitAArch64CompareBuiltinExpr(Ops[0], Ty, ICmpInst::FCMP_OGE,
 5334     return EmitAArch64CompareBuiltinExpr(Ops[0], Ty, ICmpInst::FCMP_OLE,
 5338     return EmitAArch64CompareBuiltinExpr(Ops[0], Ty, ICmpInst::FCMP_OGT,
 5342     return EmitAArch64CompareBuiltinExpr(Ops[0], Ty, ICmpInst::FCMP_OLT,
 5348     Ops.push_back(Builder.getInt1(getTarget().isCLZForZeroUndef()));
 5352     Ops[0] = Builder.CreateBitCast(Ops[0], Ty);
 5352     Ops[0] = Builder.CreateBitCast(Ops[0], Ty);
 5355     return Usgn ? Builder.CreateUIToFP(Ops[0], Ty, "vcvt")
 5356                 : Builder.CreateSIToFP(Ops[0], Ty, "vcvt");
 5359     Ops[0] = Builder.CreateBitCast(Ops[0], Ty);
 5359     Ops[0] = Builder.CreateBitCast(Ops[0], Ty);
 5362     return Usgn ? Builder.CreateUIToFP(Ops[0], Ty, "vcvt")
 5363                 : Builder.CreateSIToFP(Ops[0], Ty, "vcvt");
 5373     return EmitNeonCall(F, Ops, "vcvt_n");
 5389     return EmitNeonCall(F, Ops, "vcvt_n");
 5403     Ops[0] = Builder.CreateBitCast(Ops[0], GetFloatNeonType(this, Type));
 5403     Ops[0] = Builder.CreateBitCast(Ops[0], GetFloatNeonType(this, Type));
 5404     return Usgn ? Builder.CreateFPToUI(Ops[0], Ty, "vcvt")
 5405                 : Builder.CreateFPToSI(Ops[0], Ty, "vcvt");
 5456     return EmitNeonCall(CGM.getIntrinsic(LLVMIntrinsic, Tys), Ops, NameHint);
 5460     int CV = cast<ConstantInt>(Ops[2])->getSExtValue();
 5465     Ops[0] = Builder.CreateBitCast(Ops[0], Ty);
 5465     Ops[0] = Builder.CreateBitCast(Ops[0], Ty);
 5466     Ops[1] = Builder.CreateBitCast(Ops[1], Ty);
 5466     Ops[1] = Builder.CreateBitCast(Ops[1], Ty);
 5467     return Builder.CreateShuffleVector(Ops[0], Ops[1], Indices, "vext");
 5467     return Builder.CreateShuffleVector(Ops[0], Ops[1], Indices, "vext");
 5472     Ops[0] = Builder.CreateBitCast(Ops[0], Ty);
 5472     Ops[0] = Builder.CreateBitCast(Ops[0], Ty);
 5473     Ops[1] = Builder.CreateBitCast(Ops[1], Ty);
 5473     Ops[1] = Builder.CreateBitCast(Ops[1], Ty);
 5474     Ops[2] = Builder.CreateBitCast(Ops[2], Ty);
 5474     Ops[2] = Builder.CreateBitCast(Ops[2], Ty);
 5477     return Builder.CreateCall(F, {Ops[1], Ops[2], Ops[0]});
 5477     return Builder.CreateCall(F, {Ops[1], Ops[2], Ops[0]});
 5477     return Builder.CreateCall(F, {Ops[1], Ops[2], Ops[0]});
 5482     Ops.push_back(getAlignmentValue32(PtrOp0));
 5483     return EmitNeonCall(CGM.getIntrinsic(LLVMIntrinsic, Tys), Ops, "vld1");
 5492     Ops[1] = Builder.CreateBitCast(Ops[1], PTy);
 5492     Ops[1] = Builder.CreateBitCast(Ops[1], PTy);
 5495     Ops[1] = Builder.CreateCall(F, Ops[1], "vld1xN");
 5495     Ops[1] = Builder.CreateCall(F, Ops[1], "vld1xN");
 5496     Ty = llvm::PointerType::getUnqual(Ops[1]->getType());
 5497     Ops[0] = Builder.CreateBitCast(Ops[0], Ty);
 5497     Ops[0] = Builder.CreateBitCast(Ops[0], Ty);
 5498     return Builder.CreateDefaultAlignedStore(Ops[1], Ops[0]);
 5498     return Builder.CreateDefaultAlignedStore(Ops[1], Ops[0]);
 5515     Ops[1] = Builder.CreateCall(F, {Ops[1], Align}, NameHint);
 5515     Ops[1] = Builder.CreateCall(F, {Ops[1], Align}, NameHint);
 5516     Ty = llvm::PointerType::getUnqual(Ops[1]->getType());
 5517     Ops[0] = Builder.CreateBitCast(Ops[0], Ty);
 5517     Ops[0] = Builder.CreateBitCast(Ops[0], Ty);
 5518     return Builder.CreateDefaultAlignedStore(Ops[1], Ops[0]);
 5518     return Builder.CreateDefaultAlignedStore(Ops[1], Ops[0]);
 5527     Ops[0] = Builder.CreateInsertElement(V, Ld, CI);
 5528     return EmitNeonSplat(Ops[0], CI);
 5538     for (unsigned I = 2; I < Ops.size() - 1; ++I)
 5539       Ops[I] = Builder.CreateBitCast(Ops[I], Ty);
 5539       Ops[I] = Builder.CreateBitCast(Ops[I], Ty);
 5540     Ops.push_back(getAlignmentValue32(PtrOp1));
 5541     Ops[1] = Builder.CreateCall(F, makeArrayRef(Ops).slice(1), NameHint);
 5541     Ops[1] = Builder.CreateCall(F, makeArrayRef(Ops).slice(1), NameHint);
 5542     Ty = llvm::PointerType::getUnqual(Ops[1]->getType());
 5543     Ops[0] = Builder.CreateBitCast(Ops[0], Ty);
 5543     Ops[0] = Builder.CreateBitCast(Ops[0], Ty);
 5544     return Builder.CreateDefaultAlignedStore(Ops[1], Ops[0]);
 5544     return Builder.CreateDefaultAlignedStore(Ops[1], Ops[0]);
 5548     Ops[0] = Builder.CreateBitCast(Ops[0], DTy);
 5548     Ops[0] = Builder.CreateBitCast(Ops[0], DTy);
 5550       return Builder.CreateZExt(Ops[0], Ty, "vmovl");
 5551     return Builder.CreateSExt(Ops[0], Ty, "vmovl");
 5555     Ops[0] = Builder.CreateBitCast(Ops[0], QTy);
 5555     Ops[0] = Builder.CreateBitCast(Ops[0], QTy);
 5556     return Builder.CreateTrunc(Ops[0], Ty, "vmovn");
 5566     return EmitNeonCall(CGM.getIntrinsic(Int, Ty), Ops, "vmull");
 5576     return EmitNeonCall(CGM.getIntrinsic(Int, Tys), Ops, NameHint);
 5586     return EmitNeonCall(CGM.getIntrinsic(Int, Tys), Ops, "vpaddl");
 5590     SmallVector<Value *, 2> MulOps(Ops.begin() + 1, Ops.end());
 5590     SmallVector<Value *, 2> MulOps(Ops.begin() + 1, Ops.end());
 5591     Ops[1] =
 5593     Ops.resize(2);
 5594     return EmitNeonCall(CGM.getIntrinsic(AltLLVMIntrinsic, Ty), Ops, NameHint);
 5598     return EmitNeonCall(CGM.getIntrinsic(Int, Ty), Ops, "vqshl_n",
 5602     return EmitNeonCall(CGM.getIntrinsic(Int, Ty), Ops, "vqshlu_n",
 5609     return EmitNeonCall(CGM.getIntrinsic(Int, Ty), Ops, NameHint);
 5613     return EmitNeonCall(CGM.getIntrinsic(Int, Ty), Ops, NameHint);
 5616     return EmitNeonCall(CGM.getIntrinsic(Int, Ty), Ops, "vrshr_n",
 5620     Ops[1] = EmitNeonShiftVector(Ops[1], Ty, false);
 5620     Ops[1] = EmitNeonShiftVector(Ops[1], Ty, false);
 5621     return Builder.CreateShl(Builder.CreateBitCast(Ops[0],Ty), Ops[1],
 5621     return Builder.CreateShl(Builder.CreateBitCast(Ops[0],Ty), Ops[1],
 5625     Ops[0] = Builder.CreateBitCast(Ops[0], SrcTy);
 5625     Ops[0] = Builder.CreateBitCast(Ops[0], SrcTy);
 5627       Ops[0] = Builder.CreateZExt(Ops[0], VTy);
 5627       Ops[0] = Builder.CreateZExt(Ops[0], VTy);
 5629       Ops[0] = Builder.CreateSExt(Ops[0], VTy);
 5629       Ops[0] = Builder.CreateSExt(Ops[0], VTy);
 5630     Ops[1] = EmitNeonShiftVector(Ops[1], VTy, false);
 5630     Ops[1] = EmitNeonShiftVector(Ops[1], VTy, false);
 5631     return Builder.CreateShl(Ops[0], Ops[1], "vshll_n");
 5631     return Builder.CreateShl(Ops[0], Ops[1], "vshll_n");
 5635     Ops[0] = Builder.CreateBitCast(Ops[0], SrcTy);
 5635     Ops[0] = Builder.CreateBitCast(Ops[0], SrcTy);
 5636     Ops[1] = EmitNeonShiftVector(Ops[1], SrcTy, false);
 5636     Ops[1] = EmitNeonShiftVector(Ops[1], SrcTy, false);
 5638       Ops[0] = Builder.CreateLShr(Ops[0], Ops[1]);
 5638       Ops[0] = Builder.CreateLShr(Ops[0], Ops[1]);
 5638       Ops[0] = Builder.CreateLShr(Ops[0], Ops[1]);
 5640       Ops[0] = Builder.CreateAShr(Ops[0], Ops[1]);
 5640       Ops[0] = Builder.CreateAShr(Ops[0], Ops[1]);
 5640       Ops[0] = Builder.CreateAShr(Ops[0], Ops[1]);
 5641     return Builder.CreateTrunc(Ops[0], Ty, "vshrn_n");
 5645     return EmitNeonRShiftImm(Ops[0], Ops[1], Ty, Usgn, "vshr_n");
 5645     return EmitNeonRShiftImm(Ops[0], Ops[1], Ty, Usgn, "vshr_n");
 5661     Ops.push_back(getAlignmentValue32(PtrOp0));
 5662     return EmitNeonCall(CGM.getIntrinsic(Int, Tys), Ops, "");
 5675       std::rotate(Ops.begin(), Ops.begin() + 1, Ops.end());
 5675       std::rotate(Ops.begin(), Ops.begin() + 1, Ops.end());
 5675       std::rotate(Ops.begin(), Ops.begin() + 1, Ops.end());
 5676       return EmitNeonCall(CGM.getIntrinsic(LLVMIntrinsic, Tys), Ops, "");
 5679     return EmitNeonCall(CGM.getIntrinsic(LLVMIntrinsic, Tys), Ops, "");
 5686     Ops[0] = Builder.CreateBitCast(Ops[0], SrcTy);
 5686     Ops[0] = Builder.CreateBitCast(Ops[0], SrcTy);
 5687     Ops[1] = Builder.CreateBitCast(Ops[1], SrcTy);
 5687     Ops[1] = Builder.CreateBitCast(Ops[1], SrcTy);
 5688     Ops[0] = Builder.CreateSub(Ops[0], Ops[1], "vsubhn");
 5688     Ops[0] = Builder.CreateSub(Ops[0], Ops[1], "vsubhn");
 5688     Ops[0] = Builder.CreateSub(Ops[0], Ops[1], "vsubhn");
 5693     Ops[0] = Builder.CreateLShr(Ops[0], ShiftAmt, "vsubhn");
 5693     Ops[0] = Builder.CreateLShr(Ops[0], ShiftAmt, "vsubhn");
 5696     return Builder.CreateTrunc(Ops[0], VTy, "vsubhn");
 5700     Ops[0] = Builder.CreateBitCast(Ops[0], llvm::PointerType::getUnqual(Ty));
 5700     Ops[0] = Builder.CreateBitCast(Ops[0], llvm::PointerType::getUnqual(Ty));
 5701     Ops[1] = Builder.CreateBitCast(Ops[1], Ty);
 5701     Ops[1] = Builder.CreateBitCast(Ops[1], Ty);
 5702     Ops[2] = Builder.CreateBitCast(Ops[2], Ty);
 5702     Ops[2] = Builder.CreateBitCast(Ops[2], Ty);
 5711       Value *Addr = Builder.CreateConstInBoundsGEP1_32(Ty, Ops[0], vi);
 5712       SV = Builder.CreateShuffleVector(Ops[1], Ops[2], Indices, "vtrn");
 5712       SV = Builder.CreateShuffleVector(Ops[1], Ops[2], Indices, "vtrn");
 5719     Ops[0] = Builder.CreateBitCast(Ops[0], Ty);
 5719     Ops[0] = Builder.CreateBitCast(Ops[0], Ty);
 5720     Ops[1] = Builder.CreateBitCast(Ops[1], Ty);
 5720     Ops[1] = Builder.CreateBitCast(Ops[1], Ty);
 5721     Ops[0] = Builder.CreateAnd(Ops[0], Ops[1]);
 5721     Ops[0] = Builder.CreateAnd(Ops[0], Ops[1]);
 5721     Ops[0] = Builder.CreateAnd(Ops[0], Ops[1]);
 5722     Ops[0] = Builder.CreateICmp(ICmpInst::ICMP_NE, Ops[0],
 5722     Ops[0] = Builder.CreateICmp(ICmpInst::ICMP_NE, Ops[0],
 5724     return Builder.CreateSExt(Ops[0], Ty, "vtst");
 5728     Ops[0] = Builder.CreateBitCast(Ops[0], llvm::PointerType::getUnqual(Ty));
 5728     Ops[0] = Builder.CreateBitCast(Ops[0], llvm::PointerType::getUnqual(Ty));
 5729     Ops[1] = Builder.CreateBitCast(Ops[1], Ty);
 5729     Ops[1] = Builder.CreateBitCast(Ops[1], Ty);
 5730     Ops[2] = Builder.CreateBitCast(Ops[2], Ty);
 5730     Ops[2] = Builder.CreateBitCast(Ops[2], Ty);
 5738       Value *Addr = Builder.CreateConstInBoundsGEP1_32(Ty, Ops[0], vi);
 5739       SV = Builder.CreateShuffleVector(Ops[1], Ops[2], Indices, "vuzp");
 5739       SV = Builder.CreateShuffleVector(Ops[1], Ops[2], Indices, "vuzp");
 5746     Ops[0] = Builder.CreateBitCast(Ops[0], llvm::PointerType::getUnqual(Ty));
 5746     Ops[0] = Builder.CreateBitCast(Ops[0], llvm::PointerType::getUnqual(Ty));
 5747     Ops[1] = Builder.CreateBitCast(Ops[1], Ty);
 5747     Ops[1] = Builder.CreateBitCast(Ops[1], Ty);
 5748     Ops[2] = Builder.CreateBitCast(Ops[2], Ty);
 5748     Ops[2] = Builder.CreateBitCast(Ops[2], Ty);
 5757       Value *Addr = Builder.CreateConstInBoundsGEP1_32(Ty, Ops[0], vi);
 5758       SV = Builder.CreateShuffleVector(Ops[1], Ops[2], Indices, "vzip");
 5758       SV = Builder.CreateShuffleVector(Ops[1], Ops[2], Indices, "vzip");
 5769     return EmitNeonCall(CGM.getIntrinsic(Int, Tys), Ops, "vdot");
 5776     return EmitNeonCall(CGM.getIntrinsic(Int, Tys), Ops, "vfmlal_low");
 5783     return EmitNeonCall(CGM.getIntrinsic(Int, Tys), Ops, "vfmlsl_low");
 5790     return EmitNeonCall(CGM.getIntrinsic(Int, Tys), Ops, "vfmlal_high");
 5797     return EmitNeonCall(CGM.getIntrinsic(Int, Tys), Ops, "vfmlsl_high");
 5806   Value *Result = EmitNeonCall(F, Ops, NameHint);