Lines Matching defs:GRLen
24 unsigned GRLen;
38 LoongArchABIInfo(CodeGen::CodeGenTypes &CGT, unsigned GRLen, unsigned FRLen)
39 : DefaultABIInfo(CGT), GRLen(GRLen), FRLen(FRLen) {}
69 // be passed indirect, or if the type size is a scalar greater than 2*GRLen
75 getContext().getTypeSize(RetTy) > (2 * GRLen)) {
80 // This is a normal scalar > 2*GRLen, such as fp128 on LA32.
111 if (IsInt && Size > GRLen)
199 // Allow a bitfield with a type greater than GRLen as long as the
200 // bitwidth is GRLen or less.
201 if (getContext().getTypeSize(QTy) > GRLen && BitWidth <= GRLen) {
202 QTy = getContext().getIntTypeForBitwidth(GRLen, false);
356 // according to the ABI. 2*GRLen-aligned varargs are passed in "aligned"
359 if (!IsFixed && NeededAlign == 2 * GRLen)
361 else if (Size > GRLen && Size <= 2 * GRLen)
374 // All integral types are promoted to GRLen width.
375 if (Size < GRLen && Ty->isIntegralOrEnumerationType())
379 if (EIT->getNumBits() < GRLen)
390 // Aggregates which are <= 2*GRLen will be passed in registers if possible,
392 if (Size <= 2 * GRLen) {
393 // Use a single GRLen int if possible, 2*GRLen if 2*GRLen alignment is
394 // required, and a 2-element GRLen array if only GRLen alignment is
396 if (Size <= GRLen) {
398 llvm::IntegerType::get(getVMContext(), GRLen));
400 if (getContext().getTypeAlign(Ty) == 2 * GRLen) {
402 llvm::IntegerType::get(getVMContext(), 2 * GRLen));
405 llvm::ArrayType::get(llvm::IntegerType::get(getVMContext(), GRLen), 2));
422 CharUnits SlotSize = CharUnits::fromQuantity(GRLen / 8);
430 // Arguments bigger than 2*GRLen bytes are passed indirectly.
440 if (GRLen == 64 && Ty->isUnsignedIntegerOrEnumerationType() && TySize == 32)
448 LoongArchTargetCodeGenInfo(CodeGen::CodeGenTypes &CGT, unsigned GRLen,
451 std::make_unique<LoongArchABIInfo>(CGT, GRLen, FRLen)) {}
456 CodeGen::createLoongArchTargetCodeGenInfo(CodeGenModule &CGM, unsigned GRLen,
458 return std::make_unique<LoongArchTargetCodeGenInfo>(CGM.getTypes(), GRLen,