forked from OSchip/llvm-project
CGBuiltin.cpp - pass SVETypeFlags by const reference. NFC.
Don't pass the struct by value.
This commit is contained in:
parent
9baed023b4
commit
7f48bd3bed
|
@ -8379,7 +8379,7 @@ Value *CodeGenFunction::vectorWrapScalar16(Value *Op) {
|
|||
/// SVEBuiltinMemEltTy - Returns the memory element type for this memory
|
||||
/// access builtin. Only required if it can't be inferred from the base pointer
|
||||
/// operand.
|
||||
llvm::Type *CodeGenFunction::SVEBuiltinMemEltTy(SVETypeFlags TypeFlags) {
|
||||
llvm::Type *CodeGenFunction::SVEBuiltinMemEltTy(const SVETypeFlags &TypeFlags) {
|
||||
switch (TypeFlags.getMemEltType()) {
|
||||
case SVETypeFlags::MemEltTyDefault:
|
||||
return getEltType(TypeFlags);
|
||||
|
@ -8395,7 +8395,7 @@ llvm::Type *CodeGenFunction::SVEBuiltinMemEltTy(SVETypeFlags TypeFlags) {
|
|||
llvm_unreachable("Unknown MemEltType");
|
||||
}
|
||||
|
||||
llvm::Type *CodeGenFunction::getEltType(SVETypeFlags TypeFlags) {
|
||||
llvm::Type *CodeGenFunction::getEltType(const SVETypeFlags &TypeFlags) {
|
||||
switch (TypeFlags.getEltType()) {
|
||||
default:
|
||||
llvm_unreachable("Invalid SVETypeFlag!");
|
||||
|
@ -8430,7 +8430,7 @@ llvm::Type *CodeGenFunction::getEltType(SVETypeFlags TypeFlags) {
|
|||
// Return the llvm predicate vector type corresponding to the specified element
|
||||
// TypeFlags.
|
||||
llvm::ScalableVectorType *
|
||||
CodeGenFunction::getSVEPredType(SVETypeFlags TypeFlags) {
|
||||
CodeGenFunction::getSVEPredType(const SVETypeFlags &TypeFlags) {
|
||||
switch (TypeFlags.getEltType()) {
|
||||
default: llvm_unreachable("Unhandled SVETypeFlag!");
|
||||
|
||||
|
@ -8499,7 +8499,8 @@ CodeGenFunction::getSVEType(const SVETypeFlags &TypeFlags) {
|
|||
}
|
||||
}
|
||||
|
||||
llvm::Value *CodeGenFunction::EmitSVEAllTruePred(SVETypeFlags TypeFlags) {
|
||||
llvm::Value *
|
||||
CodeGenFunction::EmitSVEAllTruePred(const SVETypeFlags &TypeFlags) {
|
||||
Function *Ptrue =
|
||||
CGM.getIntrinsic(Intrinsic::aarch64_sve_ptrue, getSVEPredType(TypeFlags));
|
||||
return Builder.CreateCall(Ptrue, {Builder.getInt32(/*SV_ALL*/ 31)});
|
||||
|
@ -8543,7 +8544,7 @@ Value *CodeGenFunction::EmitSVEPredicateCast(Value *Pred,
|
|||
return C;
|
||||
}
|
||||
|
||||
Value *CodeGenFunction::EmitSVEGatherLoad(SVETypeFlags TypeFlags,
|
||||
Value *CodeGenFunction::EmitSVEGatherLoad(const SVETypeFlags &TypeFlags,
|
||||
SmallVectorImpl<Value *> &Ops,
|
||||
unsigned IntID) {
|
||||
auto *ResultTy = getSVEType(TypeFlags);
|
||||
|
@ -8595,7 +8596,7 @@ Value *CodeGenFunction::EmitSVEGatherLoad(SVETypeFlags TypeFlags,
|
|||
: Builder.CreateSExt(Call, ResultTy);
|
||||
}
|
||||
|
||||
Value *CodeGenFunction::EmitSVEScatterStore(SVETypeFlags TypeFlags,
|
||||
Value *CodeGenFunction::EmitSVEScatterStore(const SVETypeFlags &TypeFlags,
|
||||
SmallVectorImpl<Value *> &Ops,
|
||||
unsigned IntID) {
|
||||
auto *SrcDataTy = getSVEType(TypeFlags);
|
||||
|
@ -8650,7 +8651,7 @@ Value *CodeGenFunction::EmitSVEScatterStore(SVETypeFlags TypeFlags,
|
|||
return Builder.CreateCall(F, Ops);
|
||||
}
|
||||
|
||||
Value *CodeGenFunction::EmitSVEGatherPrefetch(SVETypeFlags TypeFlags,
|
||||
Value *CodeGenFunction::EmitSVEGatherPrefetch(const SVETypeFlags &TypeFlags,
|
||||
SmallVectorImpl<Value *> &Ops,
|
||||
unsigned IntID) {
|
||||
// The gather prefetches are overloaded on the vector input - this can either
|
||||
|
@ -8683,7 +8684,7 @@ Value *CodeGenFunction::EmitSVEGatherPrefetch(SVETypeFlags TypeFlags,
|
|||
return Builder.CreateCall(F, Ops);
|
||||
}
|
||||
|
||||
Value *CodeGenFunction::EmitSVEStructLoad(SVETypeFlags TypeFlags,
|
||||
Value *CodeGenFunction::EmitSVEStructLoad(const SVETypeFlags &TypeFlags,
|
||||
SmallVectorImpl<Value*> &Ops,
|
||||
unsigned IntID) {
|
||||
llvm::ScalableVectorType *VTy = getSVEType(TypeFlags);
|
||||
|
@ -8717,7 +8718,7 @@ Value *CodeGenFunction::EmitSVEStructLoad(SVETypeFlags TypeFlags,
|
|||
return Builder.CreateCall(F, { Predicate, BasePtr });
|
||||
}
|
||||
|
||||
Value *CodeGenFunction::EmitSVEStructStore(SVETypeFlags TypeFlags,
|
||||
Value *CodeGenFunction::EmitSVEStructStore(const SVETypeFlags &TypeFlags,
|
||||
SmallVectorImpl<Value*> &Ops,
|
||||
unsigned IntID) {
|
||||
llvm::ScalableVectorType *VTy = getSVEType(TypeFlags);
|
||||
|
@ -8764,7 +8765,7 @@ Value *CodeGenFunction::EmitSVEStructStore(SVETypeFlags TypeFlags,
|
|||
// SVE2's svpmullb and svpmullt builtins are similar to the svpmullb_pair and
|
||||
// svpmullt_pair intrinsics, with the exception that their results are bitcast
|
||||
// to a wider type.
|
||||
Value *CodeGenFunction::EmitSVEPMull(SVETypeFlags TypeFlags,
|
||||
Value *CodeGenFunction::EmitSVEPMull(const SVETypeFlags &TypeFlags,
|
||||
SmallVectorImpl<Value *> &Ops,
|
||||
unsigned BuiltinID) {
|
||||
// Splat scalar operand to vector (intrinsics with _n infix)
|
||||
|
@ -8782,14 +8783,14 @@ Value *CodeGenFunction::EmitSVEPMull(SVETypeFlags TypeFlags,
|
|||
return EmitSVEReinterpret(Call, Ty);
|
||||
}
|
||||
|
||||
Value *CodeGenFunction::EmitSVEMovl(SVETypeFlags TypeFlags,
|
||||
Value *CodeGenFunction::EmitSVEMovl(const SVETypeFlags &TypeFlags,
|
||||
ArrayRef<Value *> Ops, unsigned BuiltinID) {
|
||||
llvm::Type *OverloadedTy = getSVEType(TypeFlags);
|
||||
Function *F = CGM.getIntrinsic(BuiltinID, OverloadedTy);
|
||||
return Builder.CreateCall(F, {Ops[0], Builder.getInt32(0)});
|
||||
}
|
||||
|
||||
Value *CodeGenFunction::EmitSVEPrefetchLoad(SVETypeFlags TypeFlags,
|
||||
Value *CodeGenFunction::EmitSVEPrefetchLoad(const SVETypeFlags &TypeFlags,
|
||||
SmallVectorImpl<Value *> &Ops,
|
||||
unsigned BuiltinID) {
|
||||
auto *MemEltTy = SVEBuiltinMemEltTy(TypeFlags);
|
||||
|
@ -8898,8 +8899,10 @@ static void InsertExplicitUndefOperand(CGBuilderTy &Builder, llvm::Type *Ty,
|
|||
Ops.insert(Ops.begin(), SplatUndef);
|
||||
}
|
||||
|
||||
SmallVector<llvm::Type *, 2> CodeGenFunction::getSVEOverloadTypes(
|
||||
SVETypeFlags TypeFlags, llvm::Type *ResultType, ArrayRef<Value *> Ops) {
|
||||
SmallVector<llvm::Type *, 2>
|
||||
CodeGenFunction::getSVEOverloadTypes(const SVETypeFlags &TypeFlags,
|
||||
llvm::Type *ResultType,
|
||||
ArrayRef<Value *> Ops) {
|
||||
if (TypeFlags.isOverloadNone())
|
||||
return {};
|
||||
|
||||
|
|
|
@ -4130,30 +4130,30 @@ public:
|
|||
/// SVEBuiltinMemEltTy - Returns the memory element type for this memory
|
||||
/// access builtin. Only required if it can't be inferred from the base
|
||||
/// pointer operand.
|
||||
llvm::Type *SVEBuiltinMemEltTy(SVETypeFlags TypeFlags);
|
||||
llvm::Type *SVEBuiltinMemEltTy(const SVETypeFlags &TypeFlags);
|
||||
|
||||
SmallVector<llvm::Type *, 2> getSVEOverloadTypes(SVETypeFlags TypeFlags,
|
||||
llvm::Type *ReturnType,
|
||||
ArrayRef<llvm::Value *> Ops);
|
||||
llvm::Type *getEltType(SVETypeFlags TypeFlags);
|
||||
SmallVector<llvm::Type *, 2>
|
||||
getSVEOverloadTypes(const SVETypeFlags &TypeFlags, llvm::Type *ReturnType,
|
||||
ArrayRef<llvm::Value *> Ops);
|
||||
llvm::Type *getEltType(const SVETypeFlags &TypeFlags);
|
||||
llvm::ScalableVectorType *getSVEType(const SVETypeFlags &TypeFlags);
|
||||
llvm::ScalableVectorType *getSVEPredType(SVETypeFlags TypeFlags);
|
||||
llvm::Value *EmitSVEAllTruePred(SVETypeFlags TypeFlags);
|
||||
llvm::ScalableVectorType *getSVEPredType(const SVETypeFlags &TypeFlags);
|
||||
llvm::Value *EmitSVEAllTruePred(const SVETypeFlags &TypeFlags);
|
||||
llvm::Value *EmitSVEDupX(llvm::Value *Scalar);
|
||||
llvm::Value *EmitSVEDupX(llvm::Value *Scalar, llvm::Type *Ty);
|
||||
llvm::Value *EmitSVEReinterpret(llvm::Value *Val, llvm::Type *Ty);
|
||||
llvm::Value *EmitSVEPMull(SVETypeFlags TypeFlags,
|
||||
llvm::Value *EmitSVEPMull(const SVETypeFlags &TypeFlags,
|
||||
llvm::SmallVectorImpl<llvm::Value *> &Ops,
|
||||
unsigned BuiltinID);
|
||||
llvm::Value *EmitSVEMovl(SVETypeFlags TypeFlags,
|
||||
llvm::Value *EmitSVEMovl(const SVETypeFlags &TypeFlags,
|
||||
llvm::ArrayRef<llvm::Value *> Ops,
|
||||
unsigned BuiltinID);
|
||||
llvm::Value *EmitSVEPredicateCast(llvm::Value *Pred,
|
||||
llvm::ScalableVectorType *VTy);
|
||||
llvm::Value *EmitSVEGatherLoad(SVETypeFlags TypeFlags,
|
||||
llvm::Value *EmitSVEGatherLoad(const SVETypeFlags &TypeFlags,
|
||||
llvm::SmallVectorImpl<llvm::Value *> &Ops,
|
||||
unsigned IntID);
|
||||
llvm::Value *EmitSVEScatterStore(SVETypeFlags TypeFlags,
|
||||
llvm::Value *EmitSVEScatterStore(const SVETypeFlags &TypeFlags,
|
||||
llvm::SmallVectorImpl<llvm::Value *> &Ops,
|
||||
unsigned IntID);
|
||||
llvm::Value *EmitSVEMaskedLoad(const CallExpr *, llvm::Type *ReturnTy,
|
||||
|
@ -4162,15 +4162,16 @@ public:
|
|||
llvm::Value *EmitSVEMaskedStore(const CallExpr *,
|
||||
SmallVectorImpl<llvm::Value *> &Ops,
|
||||
unsigned BuiltinID);
|
||||
llvm::Value *EmitSVEPrefetchLoad(SVETypeFlags TypeFlags,
|
||||
llvm::Value *EmitSVEPrefetchLoad(const SVETypeFlags &TypeFlags,
|
||||
SmallVectorImpl<llvm::Value *> &Ops,
|
||||
unsigned BuiltinID);
|
||||
llvm::Value *EmitSVEGatherPrefetch(SVETypeFlags TypeFlags,
|
||||
llvm::Value *EmitSVEGatherPrefetch(const SVETypeFlags &TypeFlags,
|
||||
SmallVectorImpl<llvm::Value *> &Ops,
|
||||
unsigned IntID);
|
||||
llvm::Value *EmitSVEStructLoad(SVETypeFlags TypeFlags,
|
||||
SmallVectorImpl<llvm::Value *> &Ops, unsigned IntID);
|
||||
llvm::Value *EmitSVEStructStore(SVETypeFlags TypeFlags,
|
||||
llvm::Value *EmitSVEStructLoad(const SVETypeFlags &TypeFlags,
|
||||
SmallVectorImpl<llvm::Value *> &Ops,
|
||||
unsigned IntID);
|
||||
llvm::Value *EmitSVEStructStore(const SVETypeFlags &TypeFlags,
|
||||
SmallVectorImpl<llvm::Value *> &Ops,
|
||||
unsigned IntID);
|
||||
llvm::Value *EmitAArch64SVEBuiltinExpr(unsigned BuiltinID, const CallExpr *E);
|
||||
|
|
Loading…
Reference in New Issue