Lines Matching refs:Ty
72 ABIArgInfo classifyHomogeneousAggregate(QualType Ty, const Type *Base,
74 ABIArgInfo coerceIllegalVector(QualType Ty) const;
75 bool isIllegalVectorType(QualType Ty) const;
76 bool containsAnyFP16Vectors(QualType Ty) const;
78 bool isHomogeneousAggregateBaseType(QualType Ty) const override;
79 bool isHomogeneousAggregateSmallEnough(const Type *Ty,
87 RValue EmitVAArg(CodeGenFunction &CGF, Address VAListAddr, QualType Ty,
289 ABIArgInfo ARMABIInfo::coerceIllegalVector(QualType Ty) const { in coerceIllegalVector()
290 uint64_t Size = getContext().getTypeSize(Ty); in coerceIllegalVector()
301 return getNaturalAlignIndirect(Ty, /*ByVal=*/false); in coerceIllegalVector()
304 ABIArgInfo ARMABIInfo::classifyHomogeneousAggregate(QualType Ty, in classifyHomogeneousAggregate() argument
311 if (!getTarget().hasLegalHalfType() && containsAnyFP16Vectors(Ty)) { in classifyHomogeneousAggregate()
315 llvm::Type *Ty = llvm::ArrayType::get(NewVecTy, Members); in classifyHomogeneousAggregate() local
316 return ABIArgInfo::getDirect(Ty, 0, nullptr, false); in classifyHomogeneousAggregate()
324 Align = getContext().getTypeUnadjustedAlignInChars(Ty).getQuantity(); in classifyHomogeneousAggregate()
331 ABIArgInfo ARMABIInfo::classifyArgumentType(QualType Ty, bool isVariadic, in classifyArgumentType() argument
344 Ty = useFirstFieldIfTransparentUnion(Ty); in classifyArgumentType()
347 if (isIllegalVectorType(Ty)) in classifyArgumentType()
348 return coerceIllegalVector(Ty); in classifyArgumentType()
350 if (!isAggregateTypeForABI(Ty)) { in classifyArgumentType()
352 if (const EnumType *EnumTy = Ty->getAs<EnumType>()) { in classifyArgumentType()
353 Ty = EnumTy->getDecl()->getIntegerType(); in classifyArgumentType()
356 if (const auto *EIT = Ty->getAs<BitIntType>()) in classifyArgumentType()
358 return getNaturalAlignIndirect(Ty, /*ByVal=*/true); in classifyArgumentType()
360 return (isPromotableIntegerTypeForABI(Ty) ? ABIArgInfo::getExtend(Ty) in classifyArgumentType()
364 if (CGCXXABI::RecordArgABI RAA = getRecordArgABI(Ty, getCXXABI())) { in classifyArgumentType()
365 return getNaturalAlignIndirect(Ty, RAA == CGCXXABI::RAA_DirectInMemory); in classifyArgumentType()
369 if (isEmptyRecord(getContext(), Ty, true)) in classifyArgumentType()
377 if (isHomogeneousAggregate(Ty, Base, Members)) in classifyArgumentType()
378 return classifyHomogeneousAggregate(Ty, Base, Members); in classifyArgumentType()
385 if (isHomogeneousAggregate(Ty, Base, Members)) { in classifyArgumentType()
387 llvm::Type *Ty = in classifyArgumentType() local
389 return ABIArgInfo::getDirect(Ty, 0, nullptr, false); in classifyArgumentType()
394 getContext().getTypeSizeInChars(Ty) > CharUnits::fromQuantity(16)) { in classifyArgumentType()
399 CharUnits::fromQuantity(getContext().getTypeAlign(Ty) / 8), false); in classifyArgumentType()
410 TyAlign = getContext().getTypeUnadjustedAlignInChars(Ty).getQuantity(); in classifyArgumentType()
413 TyAlign = getContext().getTypeAlignInChars(Ty).getQuantity(); in classifyArgumentType()
415 if (getContext().getTypeSizeInChars(Ty) > CharUnits::fromQuantity(64)) { in classifyArgumentType()
425 return coerceToIntArray(Ty, getContext(), getVMContext()); in classifyArgumentType()
435 SizeRegs = (getContext().getTypeSize(Ty) + 31) / 32; in classifyArgumentType()
438 SizeRegs = (getContext().getTypeSize(Ty) + 63) / 64; in classifyArgumentType()
444 static bool isIntegerLikeType(QualType Ty, ASTContext &Context, in isIntegerLikeType() argument
450 uint64_t Size = Context.getTypeSize(Ty); in isIntegerLikeType()
457 if (Ty->isVectorType()) in isIntegerLikeType()
461 if (Ty->isRealFloatingType()) in isIntegerLikeType()
465 if (Ty->getAs<BuiltinType>() || Ty->isPointerType()) in isIntegerLikeType()
469 if (const ComplexType *CT = Ty->getAs<ComplexType>()) in isIntegerLikeType()
476 const RecordType *RT = Ty->getAs<RecordType>(); in isIntegerLikeType()
637 bool ARMABIInfo::isIllegalVectorType(QualType Ty) const { in isIllegalVectorType()
638 if (const VectorType *VT = Ty->getAs<VectorType> ()) { in isIllegalVectorType()
676 bool ARMABIInfo::containsAnyFP16Vectors(QualType Ty) const { in containsAnyFP16Vectors()
677 if (const ConstantArrayType *AT = getContext().getAsConstantArrayType(Ty)) { in containsAnyFP16Vectors()
682 } else if (const RecordType *RT = Ty->getAs<RecordType>()) { in containsAnyFP16Vectors()
699 if (const VectorType *VT = Ty->getAs<VectorType>()) in containsAnyFP16Vectors()
720 bool ARMABIInfo::isHomogeneousAggregateBaseType(QualType Ty) const { in isHomogeneousAggregateBaseType()
723 if (const BuiltinType *BT = Ty->getAs<BuiltinType>()) { in isHomogeneousAggregateBaseType()
728 } else if (const VectorType *VT = Ty->getAs<VectorType>()) { in isHomogeneousAggregateBaseType()
761 QualType Ty, AggValueSlot Slot) const { in EmitVAArg() argument
765 if (isEmptyRecord(getContext(), Ty, true)) in EmitVAArg()
768 CharUnits TySize = getContext().getTypeSizeInChars(Ty); in EmitVAArg()
769 CharUnits TyAlignForABI = getContext().getTypeUnadjustedAlignInChars(Ty); in EmitVAArg()
775 if (TySize > CharUnits::fromQuantity(16) && isIllegalVectorType(Ty)) { in EmitVAArg()
782 !isHomogeneousAggregate(Ty, Base, Members)) { in EmitVAArg()
802 return emitVoidPtrVAArg(CGF, VAListAddr, Ty, IsIndirect, TyInfo, SlotSize, in EmitVAArg()