clang 23.0.0git
ExprConstShared.h File Reference
#include "clang/Basic/TypeTraits.h"
#include <cstdint>
#include <optional>

Go to the source code of this file.

Namespaces

namespace  llvm
 Diagnostic wrappers for TextAPI types for error reporting.
namespace  clang
 The JSON file list parser is used to communicate input to InstallAPI.

Enumerations

enum class  GCCTypeClass {
  None = -1 , Void = 0 , Integer = 1 , Enum = 3 ,
  Bool = 4 , Pointer = 5 , PointerToDataMember = 7 , RealFloat = 8 ,
  Complex = 9 , PointerToMemberFunction = 12 , ClassOrStruct = 12 , Union = 13 ,
  BitInt = 18 , Vector = 19
}
 Values returned by __builtin_classify_type, chosen to match the values produced by GCC's builtin. More...

Functions

GCCTypeClass EvaluateBuiltinClassifyType (QualType T, const LangOptions &LangOpts)
 EvaluateBuiltinClassifyType - Evaluate __builtin_classify_type the same way as GCC.
void HandleComplexComplexMul (llvm::APFloat A, llvm::APFloat B, llvm::APFloat C, llvm::APFloat D, llvm::APFloat &ResR, llvm::APFloat &ResI)
void HandleComplexComplexDiv (llvm::APFloat A, llvm::APFloat B, llvm::APFloat C, llvm::APFloat D, llvm::APFloat &ResR, llvm::APFloat &ResI)
CharUnits GetAlignOfExpr (const ASTContext &Ctx, const Expr *E, UnaryExprOrTypeTrait ExprKind)
unsigned ConvertBuiltinIDToX86BuiltinID (const ASTContext &Ctx, unsigned BuiltinID)
 Convert a builtin ID to the canonical x86 builtin ID the constant evaluators dispatch on in their x86 target-specific cases.
unsigned ConvertBuiltinIDToX86BuiltinID (const ASTContext &Ctx, const CallExpr *E)
uint8_t GFNIMultiplicativeInverse (uint8_t Byte)
uint8_t GFNIMul (uint8_t AByte, uint8_t BByte)
uint8_t GFNIAffine (uint8_t XByte, const llvm::APInt &AQword, const llvm::APSInt &Imm, bool Inverse=false)
llvm::APSInt NormalizeRotateAmount (const llvm::APSInt &Value, const llvm::APSInt &Amount)
std::optional< llvm::APFloat > EvalScalarMinMaxFp (const llvm::APFloat &A, const llvm::APFloat &B, std::optional< llvm::APSInt > RoundingMode, bool IsMin)

Enumeration Type Documentation

◆ GCCTypeClass

enum class GCCTypeClass
strong

Values returned by __builtin_classify_type, chosen to match the values produced by GCC's builtin.

Enumerator
None 
Void 
Integer 
Enum 
Bool 
Pointer 
PointerToDataMember 
RealFloat 
Complex 
PointerToMemberFunction 
ClassOrStruct 
Union 
BitInt 
Vector 

Definition at line 37 of file ExprConstShared.h.

Function Documentation

◆ ConvertBuiltinIDToX86BuiltinID() [1/2]

unsigned ConvertBuiltinIDToX86BuiltinID ( const ASTContext & Ctx,
const CallExpr * E )

◆ ConvertBuiltinIDToX86BuiltinID() [2/2]

unsigned ConvertBuiltinIDToX86BuiltinID ( const ASTContext & Ctx,
unsigned BuiltinID )

Convert a builtin ID to the canonical x86 builtin ID the constant evaluators dispatch on in their x86 target-specific cases.

Target-independent builtins are returned unchanged. An x86 target builtin (including an auxiliary-target x86 builtin, whose ID is shifted past the primary target's builtins) is translated to its canonical X86::BI* value. Any other target's builtin returns 0: the constant evaluators only fold x86 target builtins, and target builtin IDs of different targets overlap (each numbers from Builtin::FirstTSBuiltin), so an unrelated target's ID must not be mistaken for an x86 one.

The ID-based overload performs no work beyond a single comparison for target-independent builtins, so it is suitable for hot paths (e.g. the bytecode interpreter's builtin dispatch) where re-deriving the ID from the call expression would be wasteful.

Definition at line 10290 of file ExprConstant.cpp.

References clang::ASTContext::BuiltinInfo, clang::Builtin::FirstTSBuiltin, clang::Builtin::Context::getAuxBuiltinID(), clang::ASTContext::getAuxTargetInfo(), clang::ASTContext::getTargetInfo(), clang::TargetInfo::getTriple(), and clang::Builtin::Context::isAuxBuiltinID().

Referenced by ConvertBuiltinIDToX86BuiltinID(), and clang::interp::InterpretBuiltin().

◆ EvalScalarMinMaxFp()

std::optional< llvm::APFloat > EvalScalarMinMaxFp ( const llvm::APFloat & A,
const llvm::APFloat & B,
std::optional< llvm::APSInt > RoundingMode,
bool IsMin )

◆ EvaluateBuiltinClassifyType()

◆ GetAlignOfExpr()

◆ GFNIAffine()

uint8_t GFNIAffine ( uint8_t XByte,
const llvm::APInt & AQword,
const llvm::APSInt & Imm,
bool Inverse = false )

References uint8_t.

◆ GFNIMul()

uint8_t GFNIMul ( uint8_t AByte,
uint8_t BByte )

Definition at line 20788 of file ExprConstant.cpp.

References int32_t, uint16_t, and uint8_t.

Referenced by clang::interp::interp__builtin_ia32_gfni_mul().

◆ GFNIMultiplicativeInverse()

uint8_t GFNIMultiplicativeInverse ( uint8_t Byte)

Definition at line 20730 of file ExprConstant.cpp.

References uint8_t.

Referenced by GFNIAffine().

◆ HandleComplexComplexDiv()

void HandleComplexComplexDiv ( llvm::APFloat A,
llvm::APFloat B,
llvm::APFloat C,
llvm::APFloat D,
llvm::APFloat & ResR,
llvm::APFloat & ResI )

References clang::C, and uint8_t.

◆ HandleComplexComplexMul()

void HandleComplexComplexMul ( llvm::APFloat A,
llvm::APFloat B,
llvm::APFloat C,
llvm::APFloat D,
llvm::APFloat & ResR,
llvm::APFloat & ResI )

References clang::C.

◆ NormalizeRotateAmount()

llvm::APSInt NormalizeRotateAmount ( const llvm::APSInt & Value,
const llvm::APSInt & Amount )

Definition at line 20910 of file ExprConstant.cpp.

Referenced by clang::interp::InterpretBuiltin().