clang 22.0.0git
|
#include "PassDetail.h"
#include "clang/AST/ASTContext.h"
#include "clang/Basic/TargetInfo.h"
#include "clang/CIR/Dialect/Builder/CIRBaseBuilder.h"
#include "clang/CIR/Dialect/IR/CIRDialect.h"
#include "clang/CIR/Dialect/IR/CIROpsEnums.h"
#include "clang/CIR/Dialect/Passes.h"
#include "clang/CIR/MissingFeatures.h"
#include <memory>
Go to the source code of this file.
Functions | |
static mlir::Value | lowerScalarToComplexCast (mlir::MLIRContext &ctx, cir::CastOp op) |
static mlir::Value | lowerComplexToScalarCast (mlir::MLIRContext &ctx, cir::CastOp op, cir::CastKind elemToBoolKind) |
static mlir::Value | lowerComplexToComplexCast (mlir::MLIRContext &ctx, cir::CastOp op, cir::CastKind scalarCastKind) |
static mlir::Value | buildComplexBinOpLibCall (LoweringPreparePass &pass, CIRBaseBuilderTy &builder, llvm::StringRef(*libFuncNameGetter)(llvm::APFloat::Semantics), mlir::Location loc, cir::ComplexType ty, mlir::Value lhsReal, mlir::Value lhsImag, mlir::Value rhsReal, mlir::Value rhsImag) |
static llvm::StringRef | getComplexDivLibCallName (llvm::APFloat::Semantics semantics) |
static mlir::Value | buildAlgebraicComplexDiv (CIRBaseBuilderTy &builder, mlir::Location loc, mlir::Value lhsReal, mlir::Value lhsImag, mlir::Value rhsReal, mlir::Value rhsImag) |
static mlir::Value | buildRangeReductionComplexDiv (CIRBaseBuilderTy &builder, mlir::Location loc, mlir::Value lhsReal, mlir::Value lhsImag, mlir::Value rhsReal, mlir::Value rhsImag) |
static mlir::Type | higherPrecisionElementTypeForComplexArithmetic (mlir::MLIRContext &context, clang::ASTContext &cc, CIRBaseBuilderTy &builder, mlir::Type elementType) |
static mlir::Value | lowerComplexDiv (LoweringPreparePass &pass, CIRBaseBuilderTy &builder, mlir::Location loc, cir::ComplexDivOp op, mlir::Value lhsReal, mlir::Value lhsImag, mlir::Value rhsReal, mlir::Value rhsImag, mlir::MLIRContext &mlirCx, clang::ASTContext &cc) |
static llvm::StringRef | getComplexMulLibCallName (llvm::APFloat::Semantics semantics) |
static mlir::Value | lowerComplexMul (LoweringPreparePass &pass, CIRBaseBuilderTy &builder, mlir::Location loc, cir::ComplexMulOp op, mlir::Value lhsReal, mlir::Value lhsImag, mlir::Value rhsReal, mlir::Value rhsImag) |
static void | lowerArrayDtorCtorIntoLoop (cir::CIRBaseBuilderTy &builder, clang::ASTContext *astCtx, mlir::Operation *op, mlir::Type eltTy, mlir::Value arrayAddr, uint64_t arrayLen, bool isCtor) |
|
static |
Definition at line 206 of file LoweringPrepare.cpp.
References b, c, cir::CIRBaseBuilderTy::createBinop(), and cir::CIRBaseBuilderTy::createComplexCreate().
Referenced by lowerComplexDiv().
|
static |
Definition at line 157 of file LoweringPrepare.cpp.
References cir::CIRBaseBuilderTy::createCallOp().
Referenced by lowerComplexDiv(), and lowerComplexMul().
|
static |
Definition at line 236 of file LoweringPrepare.cpp.
References b, c, cir::CIRBaseBuilderTy::createBinop(), cir::CIRBaseBuilderTy::createCompare(), cir::CIRBaseBuilderTy::createComplexCreate(), and cir::CIRBaseBuilderTy::createYield().
Referenced by lowerComplexDiv().
|
static |
Definition at line 186 of file LoweringPrepare.cpp.
Referenced by lowerComplexDiv().
|
static |
Definition at line 460 of file LoweringPrepare.cpp.
Referenced by lowerComplexMul().
|
static |
Definition at line 316 of file LoweringPrepare.cpp.
References clang::TargetInfo::getBFloat16Format(), clang::TargetInfo::getDoubleFormat(), clang::TargetInfo::getFloat128Format(), clang::TargetInfo::getFloatFormat(), clang::TargetInfo::getHalfFormat(), clang::ASTContext::getLangOpts(), clang::TargetInfo::getLongDoubleFormat(), and clang::ASTContext::getTargetInfo().
Referenced by lowerComplexDiv().
|
static |
Definition at line 592 of file LoweringPrepare.cpp.
References b, c, cir::CIRBaseBuilderTy::createAlloca(), cir::CIRBaseBuilderTy::createCondition(), cir::CIRBaseBuilderTy::createDoWhile(), cir::CIRBaseBuilderTy::createStore(), cir::CIRBaseBuilderTy::createYield(), cir::CIRBaseBuilderTy::getAlignmentAttr(), cir::CIRBaseBuilderTy::getPointerTo(), cir::CIRBaseBuilderTy::getSignedInt(), clang::ASTContext::getSignedSizeType(), clang::ASTContext::getTypeSize(), and cir::CIRBaseBuilderTy::getUnsignedInt().
|
static |
Definition at line 387 of file LoweringPrepare.cpp.
References buildAlgebraicComplexDiv(), buildComplexBinOpLibCall(), buildRangeReductionComplexDiv(), cir::CIRBaseBuilderTy::createCast(), cir::CIRBaseBuilderTy::createComplexCreate(), cir::CIRBaseBuilderTy::createComplexImag(), cir::CIRBaseBuilderTy::createComplexReal(), getComplexDivLibCallName(), and higherPrecisionElementTypeForComplexArithmetic().
|
static |
Definition at line 479 of file LoweringPrepare.cpp.
References buildComplexBinOpLibCall(), cir::CIRBaseBuilderTy::createBinop(), cir::CIRBaseBuilderTy::createComplexCreate(), cir::CIRBaseBuilderTy::createIsNaN(), cir::CIRBaseBuilderTy::createLogicalAnd(), cir::CIRBaseBuilderTy::createYield(), cir::MissingFeatures::fastMathFlags(), and getComplexMulLibCallName().
|
static |
Definition at line 104 of file LoweringPrepare.cpp.
References cir::CIRBaseBuilderTy::createCast(), cir::CIRBaseBuilderTy::createComplexCreate(), cir::CIRBaseBuilderTy::createComplexImag(), and cir::CIRBaseBuilderTy::createComplexReal().
|
static |
Definition at line 82 of file LoweringPrepare.cpp.
References cir::CIRBaseBuilderTy::createCast(), cir::CIRBaseBuilderTy::createComplexImag(), cir::CIRBaseBuilderTy::createComplexReal(), cir::CIRBaseBuilderTy::createLogicalOr(), and cir::CIRBaseBuilderTy::getBoolTy().
|
static |
Definition at line 72 of file LoweringPrepare.cpp.
References cir::CIRBaseBuilderTy::createComplexCreate(), and cir::CIRBaseBuilderTy::getNullValue().