clang 20.0.0git
Public Member Functions | Public Attributes | List of all members
clang::SemaRISCV Class Reference

#include "clang/Sema/SemaRISCV.h"

Inheritance diagram for clang::SemaRISCV:
Inheritance graph
[legend]

Public Member Functions

 SemaRISCV (Sema &S)
 
bool CheckLMUL (CallExpr *TheCall, unsigned ArgNum)
 
bool CheckBuiltinFunctionCall (const TargetInfo &TI, unsigned BuiltinID, CallExpr *TheCall)
 
void checkRVVTypeSupport (QualType Ty, SourceLocation Loc, Decl *D, const llvm::StringMap< bool > &FeatureMap)
 
bool isValidRVVBitcast (QualType srcType, QualType destType)
 Are the two types RVV-bitcast-compatible types? I.e.
 
void handleInterruptAttr (Decl *D, const ParsedAttr &AL)
 
bool isAliasValid (unsigned BuiltinID, llvm::StringRef AliasName)
 
bool isValidFMVExtension (StringRef Ext)
 
- Public Member Functions inherited from clang::SemaBase
 SemaBase (Sema &S)
 
ASTContextgetASTContext () const
 
DiagnosticsEnginegetDiagnostics () const
 
const LangOptionsgetLangOpts () const
 
SemaDiagnosticBuilder Diag (SourceLocation Loc, unsigned DiagID, bool DeferHint=false)
 Emit a diagnostic.
 
SemaDiagnosticBuilder Diag (SourceLocation Loc, const PartialDiagnostic &PD, bool DeferHint=false)
 Emit a partial diagnostic.
 
PartialDiagnostic PDiag (unsigned DiagID=0)
 Build a partial diagnostic.
 

Public Attributes

bool DeclareRVVBuiltins = false
 Indicate RISC-V vector builtin functions enabled or not.
 
bool DeclareSiFiveVectorBuiltins = false
 Indicate RISC-V SiFive vector builtin functions enabled or not.
 
std::unique_ptr< sema::RISCVIntrinsicManagerIntrinsicManager
 
- Public Attributes inherited from clang::SemaBase
SemaSemaRef
 

Detailed Description

Definition at line 32 of file SemaRISCV.h.

Constructor & Destructor Documentation

◆ SemaRISCV()

clang::SemaRISCV::SemaRISCV ( Sema S)

Definition at line 1497 of file SemaRISCV.cpp.

Member Function Documentation

◆ CheckBuiltinFunctionCall()

bool clang::SemaRISCV::CheckBuiltinFunctionCall ( const TargetInfo TI,
unsigned  BuiltinID,
CallExpr TheCall 
)

Definition at line 552 of file SemaRISCV.cpp.

References clang::Sema::BuiltinConstantArgRange(), clang::Type::castAs(), clang::Sema::checkArgCountAtLeast(), clang::Sema::checkArgCountAtMost(), clang::CheckInvalidVLENandLMUL(), CheckLMUL(), clang::Sema::DefaultFunctionArrayLvalueConversion(), clang::SemaBase::Diag(), clang::ASTContext::BuiltinVectorTypeInfo::EC, clang::ASTContext::BuiltinVectorTypeInfo::ElementType, clang::ActionResult< PtrTy, Compress >::get(), clang::CallExpr::getArg(), clang::Type::getAs(), clang::SemaBase::getASTContext(), clang::DeclRefExpr::getBeginLoc(), clang::CallExpr::getBeginLoc(), clang::ASTContext::getBuiltinVectorTypeInfo(), clang::CallExpr::getCallee(), clang::QualType::getCanonicalType(), clang::Sema::getCurFunctionDecl(), clang::ASTContext::getFunctionFeatureMap(), clang::CallExpr::getNumArgs(), clang::PointerType::getPointeeType(), clang::Stmt::getSourceRange(), clang::Expr::getType(), clang::QualType::getTypePtr(), clang::ASTContext::getTypeSize(), clang::QualType::getUnqualifiedType(), clang::TargetInfo::hasFeature(), clang::Expr::IgnoreParenCasts(), clang::InitializedEntity::InitializeParameter(), clang::Type::isAnyPointerType(), clang::Type::isBlockPointerType(), clang::Type::isFloatingType(), clang::Type::isIntegerType(), clang::ActionResult< PtrTy, Compress >::isInvalid(), clang::Type::isRVVSizelessBuiltinType(), clang::Type::isVectorType(), clang::ASTContext::BuiltinVectorTypeInfo::NumVectors, clang::Sema::PerformCopyInitialization(), clang::SemaBase::SemaRef, clang::CallExpr::setArg(), clang::Expr::setType(), and clang::ASTContext::VoidTy.

◆ CheckLMUL()

bool clang::SemaRISCV::CheckLMUL ( CallExpr TheCall,
unsigned  ArgNum 
)

◆ checkRVVTypeSupport()

void clang::SemaRISCV::checkRVVTypeSupport ( QualType  Ty,
SourceLocation  Loc,
Decl D,
const llvm::StringMap< bool > &  FeatureMap 
)

◆ handleInterruptAttr()

void clang::SemaRISCV::handleInterruptAttr ( Decl D,
const ParsedAttr AL 
)

◆ isAliasValid()

bool clang::SemaRISCV::isAliasValid ( unsigned  BuiltinID,
llvm::StringRef  AliasName 
)

Definition at line 1482 of file SemaRISCV.cpp.

References clang::RISCV::FirstRVVBuiltin, and clang::RISCV::LastRVVBuiltin.

Referenced by handleBuiltinAliasAttr().

◆ isValidFMVExtension()

bool clang::SemaRISCV::isValidFMVExtension ( StringRef  Ext)

Definition at line 1487 of file SemaRISCV.cpp.

◆ isValidRVVBitcast()

bool clang::SemaRISCV::isValidRVVBitcast ( QualType  srcTy,
QualType  destTy 
)

Are the two types RVV-bitcast-compatible types? I.e.

is bitcasting from the first RVV type (e.g. an RVV scalable type) to the second type (e.g. an RVV VLS type) allowed?

This will also return false if the two given types do not make sense from the perspective of RVV bitcasts.

Definition at line 1409 of file SemaRISCV.cpp.

References clang::VectorType::getVectorKind(), clang::Type::isRVVSizelessBuiltinType(), clang::Type::isVectorType(), and clang::RVVFixedLengthData.

Member Data Documentation

◆ DeclareRVVBuiltins

bool clang::SemaRISCV::DeclareRVVBuiltins = false

Indicate RISC-V vector builtin functions enabled or not.

Definition at line 49 of file SemaRISCV.h.

◆ DeclareSiFiveVectorBuiltins

bool clang::SemaRISCV::DeclareSiFiveVectorBuiltins = false

Indicate RISC-V SiFive vector builtin functions enabled or not.

Definition at line 52 of file SemaRISCV.h.

◆ IntrinsicManager

std::unique_ptr<sema::RISCVIntrinsicManager> clang::SemaRISCV::IntrinsicManager

Definition at line 54 of file SemaRISCV.h.

Referenced by clang::Sema::LookupBuiltin().


The documentation for this class was generated from the following files: