|
reference, declaration → definition
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);