clang 24.0.0git
CIRGenBuiltinAMDGPU.cpp File Reference
#include "CIRGenFunction.h"
#include "mlir/Dialect/LLVMIR/LLVMAttrs.h"
#include "mlir/Dialect/LLVMIR/LLVMDialect.h"
#include "mlir/IR/Value.h"
#include "clang/Basic/TargetBuiltins.h"
#include "llvm/IR/IntrinsicsAMDGPU.h"
#include "llvm/Support/AMDGPUAddrSpace.h"
#include "llvm/Support/ErrorHandling.h"
#include "llvm/TargetParser/AtomicScope.h"

Go to the source code of this file.

Functions

static mlir::Value emitAMDGPUConstantPtrIntrinsic (CIRGenFunction &cgf, mlir::Location loc, llvm::StringRef name)
static cir::MemOrder decodeAtomicOrder (const Expr *arg, ASTContext &ctx)
 Map a constant integral to memory order.
static cir::SyncScopeKind decodeAMDGPUSyncScope (const Expr *arg)
 Map an AMDGPU sync-scope string-literal argument onto cir::SyncScopeKind.
static cir::SyncScopeKind convertAtomicScopeToCIR (llvm::AtomicScope scope)
static mlir::Value emitAMDGPUAtomicRMW (CIRGenFunction &cgf, const CallExpr *expr, cir::AtomicFetchKind binOp, bool hasVolatileArg)
 Emit one of the AMDGPU raw hardware atomic builtins as a cir.atomic.fetch.
static mlir::Value emitAMDGPUDispatchPtr (CIRGenFunction &cgf, mlir::Location loc, const CallExpr *e=nullptr)
static mlir::Value emitAMDGPUImplicitArgPtr (CIRGenFunction &cgf, mlir::Location loc)
static mlir::Value emitAMDGPUWorkGroupID (CIRGenFunction &cgf, mlir::Location loc, unsigned index)
static mlir::Value emitAMDGPUInvariantLoad (CIRGenFunction &cgf, mlir::Location loc, mlir::Value base, mlir::Value offset, mlir::Type ty, CharUnits align)
static mlir::Value emitAMDGPUGridSize (CIRGenFunction &cgf, mlir::Location loc, unsigned index)
static mlir::Value emitAMDGPUWorkGroupSizeV5 (CIRGenFunction &cgf, mlir::Location loc, unsigned index)
static mlir::Value emitAMDGPUWorkGroupSizeV4 (CIRGenFunction &cgf, mlir::Location loc, unsigned index)
static mlir::Value emitAMDGPUWorkGroupSize (CIRGenFunction &cgf, mlir::Location loc, unsigned index)
static mlir::Value emitBinaryExpMaybeConstrainedFPBuiltin (CIRGenFunction &cgf, const CallExpr *e, llvm::StringRef intrinsicName, llvm::StringRef constrainedIntrinsicName)
static mlir::Value emitLogbBuiltin (CIRGenFunction &cgf, const CallExpr *e, const llvm::fltSemantics &fSem)
static mlir::Value emitAMDGCNImageOverloadedReturnType (CIRGenFunction &cgf, const CallExpr *e, llvm::StringRef intrinsicName, bool isImageStore)

Function Documentation

◆ convertAtomicScopeToCIR()

cir::SyncScopeKind convertAtomicScopeToCIR ( llvm::AtomicScope scope)
static

◆ decodeAMDGPUSyncScope()

cir::SyncScopeKind decodeAMDGPUSyncScope ( const Expr * arg)
static

Map an AMDGPU sync-scope string-literal argument onto cir::SyncScopeKind.

An absent or unrecognized scope is system scope, which is the conservative choice and matches what an empty syncscope string means in LLVM.

Definition at line 61 of file CIRGenBuiltinAMDGPU.cpp.

Referenced by emitAMDGPUAtomicRMW().

◆ decodeAtomicOrder()

cir::MemOrder decodeAtomicOrder ( const Expr * arg,
ASTContext & ctx )
static

Map a constant integral to memory order.

Definition at line 39 of file CIRGenBuiltinAMDGPU.cpp.

References clang::APValue::getInt(), and clang::Expr::EvalResult::Val.

Referenced by emitAMDGPUAtomicRMW(), and clang::CIRGen::CIRGenFunction::emitAMDGPUBuiltinExpr().

◆ emitAMDGCNImageOverloadedReturnType()

◆ emitAMDGPUAtomicRMW()

◆ emitAMDGPUConstantPtrIntrinsic()

mlir::Value emitAMDGPUConstantPtrIntrinsic ( CIRGenFunction & cgf,
mlir::Location loc,
llvm::StringRef name )
static

◆ emitAMDGPUDispatchPtr()

◆ emitAMDGPUGridSize()

◆ emitAMDGPUImplicitArgPtr()

mlir::Value emitAMDGPUImplicitArgPtr ( CIRGenFunction & cgf,
mlir::Location loc )
static

◆ emitAMDGPUInvariantLoad()

◆ emitAMDGPUWorkGroupID()

◆ emitAMDGPUWorkGroupSize()

◆ emitAMDGPUWorkGroupSizeV4()

◆ emitAMDGPUWorkGroupSizeV5()

◆ emitBinaryExpMaybeConstrainedFPBuiltin()

◆ emitLogbBuiltin()