CodeQL / Analyze (actions) (push) Canceled after 0s
CodeQL / Analyze (python) (push) Canceled after 0s
pre-commit / pre-commit (push) Canceled after 0s
Multi-Arch CI / setup (push) Canceled after 0s
Publish build_manylinux_x86_64 images / publish_build_manylinux_x86_64 (push) Canceled after 0s
Setup (Multi-Arch) / setup (push) Canceled after 0s
Multi-Arch CI / Linux::${{ fromJSON(needs.setup.outputs.linux_build_config || '{}').build_variant_label || 'skip' }} (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish no_rocm_image_ubi10 image / publish_no_rocm_image_ubi10 (push) Canceled after 0s
Multi-Arch CI / Windows::${{ fromJSON(needs.setup.outputs.windows_build_config || '{}').build_variant_label || 'skip' }} (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Multi-Arch CI / Manifest Diff (push) Canceled after 0s
TheRock Manifest Diff Report / Generate Manifest Diff Report (push) Canceled after 0s
Multi-Arch CI / CI Summary (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04 (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04_ocl_rt images / publish_no_rocm_image_ubuntu24_04_ocl_rt (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_rocgdb (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04_rocgdb images / publish_no_rocm_image_ubuntu24_04_rocgdb (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_ocl_rt (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Unit Tests / Unit Tests :: ubuntu-24.04 (push) Canceled after 0s
Unit Tests / Unit Tests :: windows-2022 (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_media (push) Canceled after 0s
Unit Tests / Unit Tests Summary (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_openmpi (push) Canceled after 0s
1009 lines
48 KiB
C++
1009 lines
48 KiB
C++
//===---- CIRGenBuiltinAMDGPU.cpp - Emit CIR for AMDGPU builtins ----------===//
|
|
//
|
|
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
|
|
// See https://llvm.org/LICENSE.txt for license information.
|
|
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
//
|
|
// This contains code to emit AMDGPU Builtin calls.
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
#include "CIRGenFunction.h"
|
|
|
|
#include "mlir/IR/Value.h"
|
|
#include "clang/Basic/TargetBuiltins.h"
|
|
#include "llvm/Support/AMDGPUAddrSpace.h"
|
|
#include "llvm/Support/ErrorHandling.h"
|
|
|
|
using namespace clang;
|
|
using namespace clang::CIRGen;
|
|
using namespace cir;
|
|
|
|
// Emit the `amdgcn.dispatch.ptr` intrinsic, address-space-casting the
|
|
// result to match \p e's return type when needed.
|
|
// If \p e is null, returns the raw AS-4 pointer.
|
|
static mlir::Value emitAMDGPUDispatchPtr(CIRGenFunction &cgf,
|
|
const CallExpr *e = nullptr) {
|
|
CIRGenBuilderTy &builder = cgf.getBuilder();
|
|
mlir::Location loc =
|
|
e ? cgf.getLoc(e->getExprLoc()) : builder.getUnknownLoc();
|
|
// The intrinsic always returns a pointer in the constant AS.
|
|
mlir::Type retTy = cir::PointerType::get(
|
|
cir::VoidType::get(builder.getContext()),
|
|
cir::TargetAddressSpaceAttr::get(builder.getContext(),
|
|
llvm::AMDGPUAS::CONSTANT_ADDRESS));
|
|
mlir::Value call = builder.emitIntrinsicCallOp(loc, "amdgcn.dispatch.ptr",
|
|
retTy, mlir::ValueRange{});
|
|
if (!e)
|
|
return call;
|
|
// Only cast when the caller-visible AS differs from the intrinsic's AS;
|
|
auto expectedPtrTy =
|
|
mlir::cast<cir::PointerType>(cgf.convertType(e->getType()));
|
|
auto callPtrTy = mlir::cast<cir::PointerType>(call.getType());
|
|
if (expectedPtrTy.getAddrSpace() == callPtrTy.getAddrSpace())
|
|
return call;
|
|
return builder.createAddrSpaceCast(loc, call, expectedPtrTy);
|
|
}
|
|
|
|
static mlir::Value emitBinaryExpMaybeConstrainedFPBuiltin(
|
|
CIRGenFunction &cgf, const CallExpr *e, llvm::StringRef intrinsicName,
|
|
llvm::StringRef constrainedIntrinsicName) {
|
|
mlir::Value src0 = cgf.emitScalarExpr(e->getArg(0));
|
|
mlir::Value src1 = cgf.emitScalarExpr(e->getArg(1));
|
|
mlir::Location loc = cgf.getLoc(e->getExprLoc());
|
|
|
|
CIRGenBuilderTy &builder = cgf.getBuilder();
|
|
|
|
CIRGenFunction::CIRGenFPOptionsRAII fpOptsRAII(cgf, e);
|
|
|
|
if (builder.getIsFPConstrained()) {
|
|
cgf.cgm.errorNYI(e->getSourceRange(),
|
|
"constrained FP intrinsic support is NYI.");
|
|
}
|
|
|
|
return builder.emitIntrinsicCallOp(loc, intrinsicName, src0.getType(),
|
|
mlir::ValueRange{src0, src1});
|
|
}
|
|
|
|
static mlir::Value emitLogbBuiltin(CIRGenFunction &cgf, const CallExpr *e,
|
|
const llvm::fltSemantics &fSem) {
|
|
CIRGenBuilderTy &builder = cgf.getBuilder();
|
|
mlir::Location loc = cgf.getLoc(e->getExprLoc());
|
|
|
|
mlir::Value src0 = cgf.emitScalarExpr(e->getArg(0));
|
|
mlir::Type srcTy = src0.getType();
|
|
mlir::Type int32Ty = builder.getSInt32Ty();
|
|
|
|
cir::RecordType frExpResTy =
|
|
builder.getAnonRecordTy({srcTy, int32Ty}, false, false);
|
|
|
|
mlir::Value frExpResult = builder.emitIntrinsicCallOp(
|
|
loc, "frexp", frExpResTy, mlir::ValueRange{src0});
|
|
|
|
mlir::Value exp =
|
|
cir::ExtractMemberOp::create(builder, loc, int32Ty, frExpResult, 1);
|
|
|
|
mlir::Value negativeOne =
|
|
builder.getConstant(loc, cir::IntAttr::get(int32Ty, -1));
|
|
mlir::Value expMinus1 = builder.createAdd(loc, exp, negativeOne);
|
|
|
|
mlir::Value siToFp = cir::CastOp::create(
|
|
builder, loc, srcTy, cir::CastKind::int_to_float, expMinus1);
|
|
|
|
mlir::Value fabs = cir::FAbsOp::create(builder, loc, srcTy, src0);
|
|
|
|
llvm::APFloat infVal = llvm::APFloat::getInf(fSem);
|
|
mlir::Value inf = builder.getConstant(loc, cir::FPAttr::get(srcTy, infVal));
|
|
|
|
mlir::Value fabsNegInf =
|
|
builder.createCompare(loc, cir::CmpOpKind::ne, fabs, inf);
|
|
|
|
mlir::Value sel = builder.createSelect(loc, fabsNegInf, siToFp, fabs);
|
|
|
|
llvm::APFloat zeroValue = llvm::APFloat::getZero(fSem);
|
|
mlir::Value zero =
|
|
builder.getConstant(loc, cir::FPAttr::get(srcTy, zeroValue));
|
|
|
|
mlir::Value srcEqZero =
|
|
builder.createCompare(loc, cir::CmpOpKind::eq, src0, zero);
|
|
|
|
llvm::APFloat negInfVal = llvm::APFloat::getInf(fSem, true);
|
|
mlir::Value negInf =
|
|
builder.getConstant(loc, cir::FPAttr::get(srcTy, negInfVal));
|
|
|
|
mlir::Value res = builder.createSelect(loc, srcEqZero, negInf, sel);
|
|
|
|
return res;
|
|
}
|
|
|
|
static mlir::Value
|
|
emitAMDGCNImageOverloadedReturnType(CIRGenFunction &cgf, const CallExpr *e,
|
|
llvm::StringRef intrinsicName,
|
|
bool isImageStore) {
|
|
auto &builder = cgf.getBuilder();
|
|
|
|
llvm::SmallVector<mlir::Value, 10> args;
|
|
for (unsigned i = 0, n = e->getNumArgs(); i < n; ++i)
|
|
args.push_back(cgf.emitScalarExpr(e->getArg(i)));
|
|
|
|
mlir::Type retTy = isImageStore ? cir::VoidType::get(builder.getContext())
|
|
: cgf.convertType(e->getType());
|
|
|
|
auto callOp = cir::LLVMIntrinsicCallOp::create(
|
|
builder, cgf.getLoc(e->getExprLoc()),
|
|
builder.getStringAttr(intrinsicName), retTy, args);
|
|
|
|
return callOp.getResult();
|
|
}
|
|
|
|
std::optional<mlir::Value>
|
|
CIRGenFunction::emitAMDGPUBuiltinExpr(unsigned builtinId,
|
|
const CallExpr *expr) {
|
|
switch (builtinId) {
|
|
case AMDGPU::BI__builtin_amdgcn_wave_reduce_add_u32:
|
|
case AMDGPU::BI__builtin_amdgcn_wave_reduce_sub_u32:
|
|
case AMDGPU::BI__builtin_amdgcn_wave_reduce_min_i32:
|
|
case AMDGPU::BI__builtin_amdgcn_wave_reduce_min_u32:
|
|
case AMDGPU::BI__builtin_amdgcn_wave_reduce_max_i32:
|
|
case AMDGPU::BI__builtin_amdgcn_wave_reduce_max_u32:
|
|
case AMDGPU::BI__builtin_amdgcn_wave_reduce_and_b32:
|
|
case AMDGPU::BI__builtin_amdgcn_wave_reduce_or_b32:
|
|
case AMDGPU::BI__builtin_amdgcn_wave_reduce_xor_b32:
|
|
case AMDGPU::BI__builtin_amdgcn_wave_reduce_add_u64:
|
|
case AMDGPU::BI__builtin_amdgcn_wave_reduce_sub_u64:
|
|
case AMDGPU::BI__builtin_amdgcn_wave_reduce_min_i64:
|
|
case AMDGPU::BI__builtin_amdgcn_wave_reduce_min_u64:
|
|
case AMDGPU::BI__builtin_amdgcn_wave_reduce_max_i64:
|
|
case AMDGPU::BI__builtin_amdgcn_wave_reduce_max_u64:
|
|
case AMDGPU::BI__builtin_amdgcn_wave_reduce_and_b64:
|
|
case AMDGPU::BI__builtin_amdgcn_wave_reduce_or_b64:
|
|
case AMDGPU::BI__builtin_amdgcn_wave_reduce_xor_b64: {
|
|
cgm.errorNYI(expr->getSourceRange(),
|
|
std::string("unimplemented AMDGPU builtin call: ") +
|
|
getContext().BuiltinInfo.getName(builtinId));
|
|
return mlir::Value{};
|
|
}
|
|
case AMDGPU::BI__builtin_amdgcn_div_scale:
|
|
case AMDGPU::BI__builtin_amdgcn_div_scalef: {
|
|
Address flagOutPtr = emitPointerWithAlignment(expr->getArg(3));
|
|
llvm::StringRef intrinsicName = "amdgcn.div.scale";
|
|
mlir::Value x = emitScalarExpr(expr->getArg(0));
|
|
mlir::Value y = emitScalarExpr(expr->getArg(1));
|
|
mlir::Value z = emitScalarExpr(expr->getArg(2));
|
|
|
|
auto i1Ty = builder.getUIntNTy(1);
|
|
cir::RecordType resTy = builder.getAnonRecordTy(
|
|
{x.getType(), i1Ty}, /*packed=*/false, /*padded=*/false);
|
|
|
|
mlir::Value structResult =
|
|
cir::LLVMIntrinsicCallOp::create(builder, getLoc(expr->getExprLoc()),
|
|
builder.getStringAttr(intrinsicName),
|
|
resTy, {x, y, z})
|
|
.getResult();
|
|
|
|
mlir::Value result = cir::ExtractMemberOp::create(
|
|
builder, getLoc(expr->getExprLoc()), x.getType(), structResult, 0);
|
|
mlir::Value flag = cir::ExtractMemberOp::create(
|
|
builder, getLoc(expr->getExprLoc()), i1Ty, structResult, 1);
|
|
|
|
mlir::Type flagType = flagOutPtr.getElementType();
|
|
mlir::Value flagToStore =
|
|
cir::CastOp::create(builder, getLoc(expr->getExprLoc()), flagType,
|
|
cir::CastKind::int_to_bool, flag);
|
|
builder.createStore(getLoc(expr->getExprLoc()), flagToStore, flagOutPtr);
|
|
return result;
|
|
}
|
|
case AMDGPU::BI__builtin_amdgcn_div_fmas:
|
|
case AMDGPU::BI__builtin_amdgcn_div_fmasf:
|
|
return emitBuiltinWithOneOverloadedType<4>(expr, "amdgcn.div.fmas")
|
|
.getValue();
|
|
case AMDGPU::BI__builtin_amdgcn_ds_swizzle:
|
|
return emitBuiltinWithOneOverloadedType<2>(expr, "amdgcn.ds.swizzle")
|
|
.getValue();
|
|
case AMDGPU::BI__builtin_amdgcn_mov_dpp8:
|
|
case AMDGPU::BI__builtin_amdgcn_mov_dpp:
|
|
case AMDGPU::BI__builtin_amdgcn_update_dpp: {
|
|
cgm.errorNYI(expr->getSourceRange(),
|
|
std::string("unimplemented AMDGPU builtin call: ") +
|
|
getContext().BuiltinInfo.getName(builtinId));
|
|
return mlir::Value{};
|
|
}
|
|
case AMDGPU::BI__builtin_amdgcn_permlane16:
|
|
case AMDGPU::BI__builtin_amdgcn_permlanex16:
|
|
case AMDGPU::BI__builtin_amdgcn_permlane64: {
|
|
cgm.errorNYI(expr->getSourceRange(),
|
|
std::string("unimplemented AMDGPU builtin call: ") +
|
|
getContext().BuiltinInfo.getName(builtinId));
|
|
return mlir::Value{};
|
|
}
|
|
case AMDGPU::BI__builtin_amdgcn_readlane:
|
|
return emitBuiltinWithOneOverloadedType<2>(expr, "amdgcn.readlane")
|
|
.getValue();
|
|
case AMDGPU::BI__builtin_amdgcn_readfirstlane:
|
|
return emitBuiltinWithOneOverloadedType<1>(expr, "amdgcn.readfirstlane")
|
|
.getValue();
|
|
case AMDGPU::BI__builtin_amdgcn_wave_shuffle: {
|
|
cgm.errorNYI(expr->getSourceRange(),
|
|
std::string("unimplemented AMDGPU builtin call: ") +
|
|
getContext().BuiltinInfo.getName(builtinId));
|
|
return mlir::Value{};
|
|
}
|
|
case AMDGPU::BI__builtin_amdgcn_div_fixup:
|
|
case AMDGPU::BI__builtin_amdgcn_div_fixupf:
|
|
case AMDGPU::BI__builtin_amdgcn_div_fixuph: {
|
|
cgm.errorNYI(expr->getSourceRange(),
|
|
std::string("unimplemented AMDGPU builtin call: ") +
|
|
getContext().BuiltinInfo.getName(builtinId));
|
|
return mlir::Value{};
|
|
}
|
|
case AMDGPU::BI__builtin_amdgcn_trig_preop:
|
|
case AMDGPU::BI__builtin_amdgcn_trig_preopf: {
|
|
cgm.errorNYI(expr->getSourceRange(),
|
|
std::string("unimplemented AMDGPU builtin call: ") +
|
|
getContext().BuiltinInfo.getName(builtinId));
|
|
return mlir::Value{};
|
|
}
|
|
case AMDGPU::BI__builtin_amdgcn_rcp:
|
|
case AMDGPU::BI__builtin_amdgcn_rcpf:
|
|
case AMDGPU::BI__builtin_amdgcn_rcph:
|
|
case AMDGPU::BI__builtin_amdgcn_rcp_bf16: {
|
|
cgm.errorNYI(expr->getSourceRange(),
|
|
std::string("unimplemented AMDGPU builtin call: ") +
|
|
getContext().BuiltinInfo.getName(builtinId));
|
|
return mlir::Value{};
|
|
}
|
|
case AMDGPU::BI__builtin_amdgcn_sqrt:
|
|
case AMDGPU::BI__builtin_amdgcn_sqrtf:
|
|
case AMDGPU::BI__builtin_amdgcn_sqrth:
|
|
case AMDGPU::BI__builtin_amdgcn_sqrt_bf16: {
|
|
cgm.errorNYI(expr->getSourceRange(),
|
|
std::string("unimplemented AMDGPU builtin call: ") +
|
|
getContext().BuiltinInfo.getName(builtinId));
|
|
return mlir::Value{};
|
|
}
|
|
case AMDGPU::BI__builtin_amdgcn_rsq:
|
|
case AMDGPU::BI__builtin_amdgcn_rsqf:
|
|
case AMDGPU::BI__builtin_amdgcn_rsqh:
|
|
case AMDGPU::BI__builtin_amdgcn_rsq_bf16: {
|
|
cgm.errorNYI(expr->getSourceRange(),
|
|
std::string("unimplemented AMDGPU builtin call: ") +
|
|
getContext().BuiltinInfo.getName(builtinId));
|
|
return mlir::Value{};
|
|
}
|
|
case AMDGPU::BI__builtin_amdgcn_rsq_clamp:
|
|
case AMDGPU::BI__builtin_amdgcn_rsq_clampf: {
|
|
cgm.errorNYI(expr->getSourceRange(),
|
|
std::string("unimplemented AMDGPU builtin call: ") +
|
|
getContext().BuiltinInfo.getName(builtinId));
|
|
return mlir::Value{};
|
|
}
|
|
case AMDGPU::BI__builtin_amdgcn_sinf:
|
|
case AMDGPU::BI__builtin_amdgcn_sinh:
|
|
case AMDGPU::BI__builtin_amdgcn_sin_bf16: {
|
|
cgm.errorNYI(expr->getSourceRange(),
|
|
std::string("unimplemented AMDGPU builtin call: ") +
|
|
getContext().BuiltinInfo.getName(builtinId));
|
|
return mlir::Value{};
|
|
}
|
|
case AMDGPU::BI__builtin_amdgcn_cosf:
|
|
case AMDGPU::BI__builtin_amdgcn_cosh:
|
|
case AMDGPU::BI__builtin_amdgcn_cos_bf16: {
|
|
cgm.errorNYI(expr->getSourceRange(),
|
|
std::string("unimplemented AMDGPU builtin call: ") +
|
|
getContext().BuiltinInfo.getName(builtinId));
|
|
return mlir::Value{};
|
|
}
|
|
case AMDGPU::BI__builtin_amdgcn_dispatch_ptr:
|
|
return emitAMDGPUDispatchPtr(*this, expr);
|
|
case AMDGPU::BI__builtin_amdgcn_logf:
|
|
case AMDGPU::BI__builtin_amdgcn_log_bf16: {
|
|
cgm.errorNYI(expr->getSourceRange(),
|
|
std::string("unimplemented AMDGPU builtin call: ") +
|
|
getContext().BuiltinInfo.getName(builtinId));
|
|
return mlir::Value{};
|
|
}
|
|
case AMDGPU::BI__builtin_amdgcn_exp2f:
|
|
case AMDGPU::BI__builtin_amdgcn_exp2_bf16: {
|
|
cgm.errorNYI(expr->getSourceRange(),
|
|
std::string("unimplemented AMDGPU builtin call: ") +
|
|
getContext().BuiltinInfo.getName(builtinId));
|
|
return mlir::Value{};
|
|
}
|
|
case AMDGPU::BI__builtin_amdgcn_log_clampf: {
|
|
cgm.errorNYI(expr->getSourceRange(),
|
|
std::string("unimplemented AMDGPU builtin call: ") +
|
|
getContext().BuiltinInfo.getName(builtinId));
|
|
return mlir::Value{};
|
|
}
|
|
case AMDGPU::BI__builtin_amdgcn_ldexp:
|
|
case AMDGPU::BI__builtin_amdgcn_ldexpf:
|
|
case AMDGPU::BI__builtin_amdgcn_ldexph: {
|
|
cgm.errorNYI(expr->getSourceRange(),
|
|
std::string("unimplemented AMDGPU builtin call: ") +
|
|
getContext().BuiltinInfo.getName(builtinId));
|
|
return mlir::Value{};
|
|
}
|
|
case AMDGPU::BI__builtin_amdgcn_frexp_mant:
|
|
case AMDGPU::BI__builtin_amdgcn_frexp_mantf:
|
|
case AMDGPU::BI__builtin_amdgcn_frexp_manth: {
|
|
cgm.errorNYI(expr->getSourceRange(),
|
|
std::string("unimplemented AMDGPU builtin call: ") +
|
|
getContext().BuiltinInfo.getName(builtinId));
|
|
return mlir::Value{};
|
|
}
|
|
case AMDGPU::BI__builtin_amdgcn_frexp_exp:
|
|
case AMDGPU::BI__builtin_amdgcn_frexp_expf:
|
|
case AMDGPU::BI__builtin_amdgcn_frexp_exph: {
|
|
cgm.errorNYI(expr->getSourceRange(),
|
|
std::string("unimplemented AMDGPU builtin call: ") +
|
|
getContext().BuiltinInfo.getName(builtinId));
|
|
return mlir::Value{};
|
|
}
|
|
case AMDGPU::BI__builtin_amdgcn_fract:
|
|
case AMDGPU::BI__builtin_amdgcn_fractf:
|
|
case AMDGPU::BI__builtin_amdgcn_fracth: {
|
|
cgm.errorNYI(expr->getSourceRange(),
|
|
std::string("unimplemented AMDGPU builtin call: ") +
|
|
getContext().BuiltinInfo.getName(builtinId));
|
|
return mlir::Value{};
|
|
}
|
|
case AMDGPU::BI__builtin_amdgcn_lerp: {
|
|
cgm.errorNYI(expr->getSourceRange(),
|
|
std::string("unimplemented AMDGPU builtin call: ") +
|
|
getContext().BuiltinInfo.getName(builtinId));
|
|
return mlir::Value{};
|
|
}
|
|
case AMDGPU::BI__builtin_amdgcn_ubfe: {
|
|
cgm.errorNYI(expr->getSourceRange(),
|
|
std::string("unimplemented AMDGPU builtin call: ") +
|
|
getContext().BuiltinInfo.getName(builtinId));
|
|
return mlir::Value{};
|
|
}
|
|
case AMDGPU::BI__builtin_amdgcn_sbfe: {
|
|
cgm.errorNYI(expr->getSourceRange(),
|
|
std::string("unimplemented AMDGPU builtin call: ") +
|
|
getContext().BuiltinInfo.getName(builtinId));
|
|
return mlir::Value{};
|
|
}
|
|
case AMDGPU::BI__builtin_amdgcn_ballot_w32:
|
|
case AMDGPU::BI__builtin_amdgcn_ballot_w64: {
|
|
cgm.errorNYI(expr->getSourceRange(),
|
|
std::string("unimplemented AMDGPU builtin call: ") +
|
|
getContext().BuiltinInfo.getName(builtinId));
|
|
return mlir::Value{};
|
|
}
|
|
case AMDGPU::BI__builtin_amdgcn_inverse_ballot_w32:
|
|
case AMDGPU::BI__builtin_amdgcn_inverse_ballot_w64: {
|
|
cgm.errorNYI(expr->getSourceRange(),
|
|
std::string("unimplemented AMDGPU builtin call: ") +
|
|
getContext().BuiltinInfo.getName(builtinId));
|
|
return mlir::Value{};
|
|
}
|
|
case AMDGPU::BI__builtin_amdgcn_tanhf:
|
|
case AMDGPU::BI__builtin_amdgcn_tanhh:
|
|
case AMDGPU::BI__builtin_amdgcn_tanh_bf16: {
|
|
cgm.errorNYI(expr->getSourceRange(),
|
|
std::string("unimplemented AMDGPU builtin call: ") +
|
|
getContext().BuiltinInfo.getName(builtinId));
|
|
return mlir::Value{};
|
|
}
|
|
case AMDGPU::BI__builtin_amdgcn_uicmp:
|
|
case AMDGPU::BI__builtin_amdgcn_uicmpl:
|
|
case AMDGPU::BI__builtin_amdgcn_sicmp:
|
|
case AMDGPU::BI__builtin_amdgcn_sicmpl: {
|
|
cgm.errorNYI(expr->getSourceRange(),
|
|
std::string("unimplemented AMDGPU builtin call: ") +
|
|
getContext().BuiltinInfo.getName(builtinId));
|
|
return mlir::Value{};
|
|
}
|
|
case AMDGPU::BI__builtin_amdgcn_fcmp:
|
|
case AMDGPU::BI__builtin_amdgcn_fcmpf: {
|
|
cgm.errorNYI(expr->getSourceRange(),
|
|
std::string("unimplemented AMDGPU builtin call: ") +
|
|
getContext().BuiltinInfo.getName(builtinId));
|
|
return mlir::Value{};
|
|
}
|
|
case AMDGPU::BI__builtin_amdgcn_class:
|
|
case AMDGPU::BI__builtin_amdgcn_classf:
|
|
case AMDGPU::BI__builtin_amdgcn_classh: {
|
|
cgm.errorNYI(expr->getSourceRange(),
|
|
std::string("unimplemented AMDGPU builtin call: ") +
|
|
getContext().BuiltinInfo.getName(builtinId));
|
|
return mlir::Value{};
|
|
}
|
|
case AMDGPU::BI__builtin_amdgcn_fmed3f:
|
|
case AMDGPU::BI__builtin_amdgcn_fmed3h: {
|
|
cgm.errorNYI(expr->getSourceRange(),
|
|
std::string("unimplemented AMDGPU builtin call: ") +
|
|
getContext().BuiltinInfo.getName(builtinId));
|
|
return mlir::Value{};
|
|
}
|
|
case AMDGPU::BI__builtin_amdgcn_ds_append:
|
|
case AMDGPU::BI__builtin_amdgcn_ds_consume: {
|
|
cgm.errorNYI(expr->getSourceRange(),
|
|
std::string("unimplemented AMDGPU builtin call: ") +
|
|
getContext().BuiltinInfo.getName(builtinId));
|
|
return mlir::Value{};
|
|
}
|
|
case AMDGPU::BI__builtin_amdgcn_global_load_tr_b64_i32:
|
|
case AMDGPU::BI__builtin_amdgcn_global_load_tr_b64_v2i32:
|
|
case AMDGPU::BI__builtin_amdgcn_global_load_tr_b128_v4i16:
|
|
case AMDGPU::BI__builtin_amdgcn_global_load_tr_b128_v4f16:
|
|
case AMDGPU::BI__builtin_amdgcn_global_load_tr_b128_v4bf16:
|
|
case AMDGPU::BI__builtin_amdgcn_global_load_tr_b128_v8i16:
|
|
case AMDGPU::BI__builtin_amdgcn_global_load_tr_b128_v8f16:
|
|
case AMDGPU::BI__builtin_amdgcn_global_load_tr_b128_v8bf16:
|
|
case AMDGPU::BI__builtin_amdgcn_global_load_tr4_b64_v2i32:
|
|
case AMDGPU::BI__builtin_amdgcn_global_load_tr8_b64_v2i32:
|
|
case AMDGPU::BI__builtin_amdgcn_global_load_tr6_b96_v3i32:
|
|
case AMDGPU::BI__builtin_amdgcn_global_load_tr16_b128_v8i16:
|
|
case AMDGPU::BI__builtin_amdgcn_global_load_tr16_b128_v8f16:
|
|
case AMDGPU::BI__builtin_amdgcn_global_load_tr16_b128_v8bf16: {
|
|
cgm.errorNYI(expr->getSourceRange(),
|
|
std::string("unimplemented AMDGPU builtin call: ") +
|
|
getContext().BuiltinInfo.getName(builtinId));
|
|
return mlir::Value{};
|
|
}
|
|
case AMDGPU::BI__builtin_amdgcn_ds_load_tr4_b64_v2i32:
|
|
case AMDGPU::BI__builtin_amdgcn_ds_load_tr8_b64_v2i32:
|
|
case AMDGPU::BI__builtin_amdgcn_ds_load_tr6_b96_v3i32:
|
|
case AMDGPU::BI__builtin_amdgcn_ds_load_tr16_b128_v8i16:
|
|
case AMDGPU::BI__builtin_amdgcn_ds_load_tr16_b128_v8f16:
|
|
case AMDGPU::BI__builtin_amdgcn_ds_load_tr16_b128_v8bf16: {
|
|
cgm.errorNYI(expr->getSourceRange(),
|
|
std::string("unimplemented AMDGPU builtin call: ") +
|
|
getContext().BuiltinInfo.getName(builtinId));
|
|
return mlir::Value{};
|
|
}
|
|
case AMDGPU::BI__builtin_amdgcn_ds_read_tr4_b64_v2i32:
|
|
case AMDGPU::BI__builtin_amdgcn_ds_read_tr8_b64_v2i32:
|
|
case AMDGPU::BI__builtin_amdgcn_ds_read_tr6_b96_v3i32:
|
|
case AMDGPU::BI__builtin_amdgcn_ds_read_tr16_b64_v4f16:
|
|
case AMDGPU::BI__builtin_amdgcn_ds_read_tr16_b64_v4bf16:
|
|
case AMDGPU::BI__builtin_amdgcn_ds_read_tr16_b64_v4i16: {
|
|
cgm.errorNYI(expr->getSourceRange(),
|
|
std::string("unimplemented AMDGPU builtin call: ") +
|
|
getContext().BuiltinInfo.getName(builtinId));
|
|
return mlir::Value{};
|
|
}
|
|
case AMDGPU::BI__builtin_amdgcn_global_load_monitor_b32:
|
|
case AMDGPU::BI__builtin_amdgcn_global_load_monitor_b64:
|
|
case AMDGPU::BI__builtin_amdgcn_global_load_monitor_b128:
|
|
case AMDGPU::BI__builtin_amdgcn_flat_load_monitor_b32:
|
|
case AMDGPU::BI__builtin_amdgcn_flat_load_monitor_b64:
|
|
case AMDGPU::BI__builtin_amdgcn_flat_load_monitor_b128: {
|
|
cgm.errorNYI(expr->getSourceRange(),
|
|
std::string("unimplemented AMDGPU builtin call: ") +
|
|
getContext().BuiltinInfo.getName(builtinId));
|
|
return mlir::Value{};
|
|
}
|
|
case AMDGPU::BI__builtin_amdgcn_cluster_load_b32:
|
|
case AMDGPU::BI__builtin_amdgcn_cluster_load_b64:
|
|
case AMDGPU::BI__builtin_amdgcn_cluster_load_b128: {
|
|
cgm.errorNYI(expr->getSourceRange(),
|
|
std::string("unimplemented AMDGPU builtin call: ") +
|
|
getContext().BuiltinInfo.getName(builtinId));
|
|
return mlir::Value{};
|
|
}
|
|
case AMDGPU::BI__builtin_amdgcn_load_to_lds: {
|
|
cgm.errorNYI(expr->getSourceRange(),
|
|
std::string("unimplemented AMDGPU builtin call: ") +
|
|
getContext().BuiltinInfo.getName(builtinId));
|
|
return mlir::Value{};
|
|
}
|
|
case AMDGPU::BI__builtin_amdgcn_cooperative_atomic_load_32x4B:
|
|
case AMDGPU::BI__builtin_amdgcn_cooperative_atomic_store_32x4B:
|
|
case AMDGPU::BI__builtin_amdgcn_cooperative_atomic_load_16x8B:
|
|
case AMDGPU::BI__builtin_amdgcn_cooperative_atomic_store_16x8B:
|
|
case AMDGPU::BI__builtin_amdgcn_cooperative_atomic_load_8x16B:
|
|
case AMDGPU::BI__builtin_amdgcn_cooperative_atomic_store_8x16B: {
|
|
cgm.errorNYI(expr->getSourceRange(),
|
|
std::string("unimplemented AMDGPU builtin call: ") +
|
|
getContext().BuiltinInfo.getName(builtinId));
|
|
return mlir::Value{};
|
|
}
|
|
case AMDGPU::BI__builtin_amdgcn_get_fpenv:
|
|
case AMDGPU::BI__builtin_amdgcn_set_fpenv: {
|
|
cgm.errorNYI(expr->getSourceRange(),
|
|
std::string("unimplemented AMDGPU builtin call: ") +
|
|
getContext().BuiltinInfo.getName(builtinId));
|
|
return mlir::Value{};
|
|
}
|
|
case AMDGPU::BI__builtin_amdgcn_read_exec:
|
|
case AMDGPU::BI__builtin_amdgcn_read_exec_lo:
|
|
case AMDGPU::BI__builtin_amdgcn_read_exec_hi: {
|
|
cgm.errorNYI(expr->getSourceRange(),
|
|
std::string("unimplemented AMDGPU builtin call: ") +
|
|
getContext().BuiltinInfo.getName(builtinId));
|
|
return mlir::Value{};
|
|
}
|
|
case AMDGPU::BI__builtin_amdgcn_image_bvh_intersect_ray:
|
|
case AMDGPU::BI__builtin_amdgcn_image_bvh_intersect_ray_h:
|
|
case AMDGPU::BI__builtin_amdgcn_image_bvh_intersect_ray_l:
|
|
case AMDGPU::BI__builtin_amdgcn_image_bvh_intersect_ray_lh: {
|
|
cgm.errorNYI(expr->getSourceRange(),
|
|
std::string("unimplemented AMDGPU builtin call: ") +
|
|
getContext().BuiltinInfo.getName(builtinId));
|
|
return mlir::Value{};
|
|
}
|
|
case AMDGPU::BI__builtin_amdgcn_image_bvh8_intersect_ray:
|
|
case AMDGPU::BI__builtin_amdgcn_image_bvh_dual_intersect_ray: {
|
|
cgm.errorNYI(expr->getSourceRange(),
|
|
std::string("unimplemented AMDGPU builtin call: ") +
|
|
getContext().BuiltinInfo.getName(builtinId));
|
|
return mlir::Value{};
|
|
}
|
|
case AMDGPU::BI__builtin_amdgcn_ds_bvh_stack_rtn:
|
|
case AMDGPU::BI__builtin_amdgcn_ds_bvh_stack_push4_pop1_rtn:
|
|
case AMDGPU::BI__builtin_amdgcn_ds_bvh_stack_push8_pop1_rtn:
|
|
case AMDGPU::BI__builtin_amdgcn_ds_bvh_stack_push8_pop2_rtn: {
|
|
cgm.errorNYI(expr->getSourceRange(),
|
|
std::string("unimplemented AMDGPU builtin call: ") +
|
|
getContext().BuiltinInfo.getName(builtinId));
|
|
return mlir::Value{};
|
|
}
|
|
case AMDGPU::BI__builtin_amdgcn_image_load_1d_v4f32_i32:
|
|
case AMDGPU::BI__builtin_amdgcn_image_load_1d_v4f16_i32:
|
|
return emitAMDGCNImageOverloadedReturnType(*this, expr,
|
|
"amdgcn.image.load.1d", false);
|
|
case AMDGPU::BI__builtin_amdgcn_image_load_1darray_v4f32_i32:
|
|
case AMDGPU::BI__builtin_amdgcn_image_load_1darray_v4f16_i32:
|
|
return emitAMDGCNImageOverloadedReturnType(
|
|
*this, expr, "amdgcn.image.load.1darray", false);
|
|
case AMDGPU::BI__builtin_amdgcn_image_load_2d_f32_i32:
|
|
case AMDGPU::BI__builtin_amdgcn_image_load_2d_v4f32_i32:
|
|
case AMDGPU::BI__builtin_amdgcn_image_load_2d_v4f16_i32:
|
|
return emitAMDGCNImageOverloadedReturnType(*this, expr,
|
|
"amdgcn.image.load.2d", false);
|
|
case AMDGPU::BI__builtin_amdgcn_image_load_2darray_f32_i32:
|
|
case AMDGPU::BI__builtin_amdgcn_image_load_2darray_v4f32_i32:
|
|
case AMDGPU::BI__builtin_amdgcn_image_load_2darray_v4f16_i32:
|
|
return emitAMDGCNImageOverloadedReturnType(
|
|
*this, expr, "amdgcn.image.load.2darray", false);
|
|
case AMDGPU::BI__builtin_amdgcn_image_load_3d_v4f32_i32:
|
|
case AMDGPU::BI__builtin_amdgcn_image_load_3d_v4f16_i32:
|
|
return emitAMDGCNImageOverloadedReturnType(*this, expr,
|
|
"amdgcn.image.load.3d", false);
|
|
case AMDGPU::BI__builtin_amdgcn_image_load_cube_v4f32_i32:
|
|
case AMDGPU::BI__builtin_amdgcn_image_load_cube_v4f16_i32:
|
|
return emitAMDGCNImageOverloadedReturnType(*this, expr,
|
|
"amdgcn.image.load.cube", false);
|
|
case AMDGPU::BI__builtin_amdgcn_image_load_mip_1d_v4f32_i32:
|
|
case AMDGPU::BI__builtin_amdgcn_image_load_mip_1d_v4f16_i32:
|
|
return emitAMDGCNImageOverloadedReturnType(
|
|
*this, expr, "amdgcn.image.load.mip.1d", false);
|
|
case AMDGPU::BI__builtin_amdgcn_image_load_mip_1darray_v4f32_i32:
|
|
case AMDGPU::BI__builtin_amdgcn_image_load_mip_1darray_v4f16_i32:
|
|
return emitAMDGCNImageOverloadedReturnType(
|
|
*this, expr, "amdgcn.image.load.mip.1darray", false);
|
|
case AMDGPU::BI__builtin_amdgcn_image_load_mip_2d_f32_i32:
|
|
case AMDGPU::BI__builtin_amdgcn_image_load_mip_2d_v4f32_i32:
|
|
case AMDGPU::BI__builtin_amdgcn_image_load_mip_2d_v4f16_i32:
|
|
return emitAMDGCNImageOverloadedReturnType(
|
|
*this, expr, "amdgcn.image.load.mip.2d", false);
|
|
case AMDGPU::BI__builtin_amdgcn_image_load_mip_2darray_f32_i32:
|
|
case AMDGPU::BI__builtin_amdgcn_image_load_mip_2darray_v4f32_i32:
|
|
case AMDGPU::BI__builtin_amdgcn_image_load_mip_2darray_v4f16_i32:
|
|
return emitAMDGCNImageOverloadedReturnType(
|
|
*this, expr, "amdgcn.image.load.mip.2darray", false);
|
|
case AMDGPU::BI__builtin_amdgcn_image_load_mip_3d_v4f32_i32:
|
|
case AMDGPU::BI__builtin_amdgcn_image_load_mip_3d_v4f16_i32:
|
|
return emitAMDGCNImageOverloadedReturnType(
|
|
*this, expr, "amdgcn.image.load.mip.3d", false);
|
|
case AMDGPU::BI__builtin_amdgcn_image_load_mip_cube_v4f32_i32:
|
|
case AMDGPU::BI__builtin_amdgcn_image_load_mip_cube_v4f16_i32:
|
|
return emitAMDGCNImageOverloadedReturnType(
|
|
*this, expr, "amdgcn.image.load.mip.cube", false);
|
|
case AMDGPU::BI__builtin_amdgcn_image_store_1d_v4f32_i32:
|
|
case AMDGPU::BI__builtin_amdgcn_image_store_1d_v4f16_i32:
|
|
return emitAMDGCNImageOverloadedReturnType(*this, expr,
|
|
"amdgcn.image.store.1d", true);
|
|
case AMDGPU::BI__builtin_amdgcn_image_store_1darray_v4f32_i32:
|
|
case AMDGPU::BI__builtin_amdgcn_image_store_1darray_v4f16_i32:
|
|
return emitAMDGCNImageOverloadedReturnType(
|
|
*this, expr, "amdgcn.image.store.1darray", true);
|
|
case AMDGPU::BI__builtin_amdgcn_image_store_2d_f32_i32:
|
|
case AMDGPU::BI__builtin_amdgcn_image_store_2d_v4f32_i32:
|
|
case AMDGPU::BI__builtin_amdgcn_image_store_2d_v4f16_i32:
|
|
return emitAMDGCNImageOverloadedReturnType(*this, expr,
|
|
"amdgcn.image.store.2d", true);
|
|
case AMDGPU::BI__builtin_amdgcn_image_store_2darray_f32_i32:
|
|
case AMDGPU::BI__builtin_amdgcn_image_store_2darray_v4f32_i32:
|
|
case AMDGPU::BI__builtin_amdgcn_image_store_2darray_v4f16_i32:
|
|
return emitAMDGCNImageOverloadedReturnType(
|
|
*this, expr, "amdgcn.image.store.2darray", true);
|
|
case AMDGPU::BI__builtin_amdgcn_image_store_3d_v4f32_i32:
|
|
case AMDGPU::BI__builtin_amdgcn_image_store_3d_v4f16_i32:
|
|
return emitAMDGCNImageOverloadedReturnType(*this, expr,
|
|
"amdgcn.image.store.3d", true);
|
|
case AMDGPU::BI__builtin_amdgcn_image_store_cube_v4f32_i32:
|
|
case AMDGPU::BI__builtin_amdgcn_image_store_cube_v4f16_i32:
|
|
return emitAMDGCNImageOverloadedReturnType(*this, expr,
|
|
"amdgcn.image.store.cube", true);
|
|
case AMDGPU::BI__builtin_amdgcn_image_store_mip_1d_v4f32_i32:
|
|
case AMDGPU::BI__builtin_amdgcn_image_store_mip_1d_v4f16_i32:
|
|
return emitAMDGCNImageOverloadedReturnType(
|
|
*this, expr, "amdgcn.image.store.mip.1d", true);
|
|
case AMDGPU::BI__builtin_amdgcn_image_store_mip_1darray_v4f32_i32:
|
|
case AMDGPU::BI__builtin_amdgcn_image_store_mip_1darray_v4f16_i32:
|
|
return emitAMDGCNImageOverloadedReturnType(
|
|
*this, expr, "amdgcn.image.store.mip.1darray", true);
|
|
case AMDGPU::BI__builtin_amdgcn_image_store_mip_2d_f32_i32:
|
|
case AMDGPU::BI__builtin_amdgcn_image_store_mip_2d_v4f32_i32:
|
|
case AMDGPU::BI__builtin_amdgcn_image_store_mip_2d_v4f16_i32:
|
|
return emitAMDGCNImageOverloadedReturnType(
|
|
*this, expr, "amdgcn.image.store.mip.2d", true);
|
|
case AMDGPU::BI__builtin_amdgcn_image_store_mip_2darray_f32_i32:
|
|
case AMDGPU::BI__builtin_amdgcn_image_store_mip_2darray_v4f32_i32:
|
|
case AMDGPU::BI__builtin_amdgcn_image_store_mip_2darray_v4f16_i32:
|
|
return emitAMDGCNImageOverloadedReturnType(
|
|
*this, expr, "amdgcn.image.store.mip.2darray", true);
|
|
case AMDGPU::BI__builtin_amdgcn_image_store_mip_3d_v4f32_i32:
|
|
case AMDGPU::BI__builtin_amdgcn_image_store_mip_3d_v4f16_i32:
|
|
return emitAMDGCNImageOverloadedReturnType(
|
|
*this, expr, "amdgcn.image.store.mip.3d", true);
|
|
case AMDGPU::BI__builtin_amdgcn_image_store_mip_cube_v4f32_i32:
|
|
case AMDGPU::BI__builtin_amdgcn_image_store_mip_cube_v4f16_i32:
|
|
return emitAMDGCNImageOverloadedReturnType(
|
|
*this, expr, "amdgcn.image.store.mip.cube", true);
|
|
case AMDGPU::BI__builtin_amdgcn_image_sample_1d_v4f32_f32:
|
|
case AMDGPU::BI__builtin_amdgcn_image_sample_1d_v4f16_f32:
|
|
case AMDGPU::BI__builtin_amdgcn_image_sample_1darray_v4f32_f32:
|
|
case AMDGPU::BI__builtin_amdgcn_image_sample_1darray_v4f16_f32:
|
|
case AMDGPU::BI__builtin_amdgcn_image_sample_2d_f32_f32:
|
|
case AMDGPU::BI__builtin_amdgcn_image_sample_2d_v4f32_f32:
|
|
case AMDGPU::BI__builtin_amdgcn_image_sample_2d_v4f16_f32:
|
|
case AMDGPU::BI__builtin_amdgcn_image_sample_2darray_f32_f32:
|
|
case AMDGPU::BI__builtin_amdgcn_image_sample_2darray_v4f32_f32:
|
|
case AMDGPU::BI__builtin_amdgcn_image_sample_2darray_v4f16_f32:
|
|
case AMDGPU::BI__builtin_amdgcn_image_sample_3d_v4f32_f32:
|
|
case AMDGPU::BI__builtin_amdgcn_image_sample_3d_v4f16_f32:
|
|
case AMDGPU::BI__builtin_amdgcn_image_sample_cube_v4f32_f32:
|
|
case AMDGPU::BI__builtin_amdgcn_image_sample_cube_v4f16_f32:
|
|
case AMDGPU::BI__builtin_amdgcn_image_sample_lz_1d_v4f32_f32:
|
|
case AMDGPU::BI__builtin_amdgcn_image_sample_lz_1d_v4f16_f32:
|
|
case AMDGPU::BI__builtin_amdgcn_image_sample_l_1d_v4f32_f32:
|
|
case AMDGPU::BI__builtin_amdgcn_image_sample_l_1d_v4f16_f32:
|
|
case AMDGPU::BI__builtin_amdgcn_image_sample_d_1d_v4f32_f32:
|
|
case AMDGPU::BI__builtin_amdgcn_image_sample_d_1d_v4f16_f32:
|
|
case AMDGPU::BI__builtin_amdgcn_image_sample_lz_2d_v4f32_f32:
|
|
case AMDGPU::BI__builtin_amdgcn_image_sample_lz_2d_v4f16_f32:
|
|
case AMDGPU::BI__builtin_amdgcn_image_sample_lz_2d_f32_f32:
|
|
case AMDGPU::BI__builtin_amdgcn_image_sample_l_2d_v4f32_f32:
|
|
case AMDGPU::BI__builtin_amdgcn_image_sample_l_2d_v4f16_f32:
|
|
case AMDGPU::BI__builtin_amdgcn_image_sample_l_2d_f32_f32:
|
|
case AMDGPU::BI__builtin_amdgcn_image_sample_d_2d_v4f32_f32:
|
|
case AMDGPU::BI__builtin_amdgcn_image_sample_d_2d_v4f16_f32:
|
|
case AMDGPU::BI__builtin_amdgcn_image_sample_d_2d_f32_f32:
|
|
case AMDGPU::BI__builtin_amdgcn_image_sample_lz_3d_v4f32_f32:
|
|
case AMDGPU::BI__builtin_amdgcn_image_sample_lz_3d_v4f16_f32:
|
|
case AMDGPU::BI__builtin_amdgcn_image_sample_l_3d_v4f32_f32:
|
|
case AMDGPU::BI__builtin_amdgcn_image_sample_l_3d_v4f16_f32:
|
|
case AMDGPU::BI__builtin_amdgcn_image_sample_d_3d_v4f32_f32:
|
|
case AMDGPU::BI__builtin_amdgcn_image_sample_d_3d_v4f16_f32:
|
|
case AMDGPU::BI__builtin_amdgcn_image_sample_lz_cube_v4f32_f32:
|
|
case AMDGPU::BI__builtin_amdgcn_image_sample_lz_cube_v4f16_f32:
|
|
case AMDGPU::BI__builtin_amdgcn_image_sample_l_cube_v4f32_f32:
|
|
case AMDGPU::BI__builtin_amdgcn_image_sample_l_cube_v4f16_f32:
|
|
case AMDGPU::BI__builtin_amdgcn_image_sample_lz_1darray_v4f32_f32:
|
|
case AMDGPU::BI__builtin_amdgcn_image_sample_lz_1darray_v4f16_f32:
|
|
case AMDGPU::BI__builtin_amdgcn_image_sample_l_1darray_v4f32_f32:
|
|
case AMDGPU::BI__builtin_amdgcn_image_sample_l_1darray_v4f16_f32:
|
|
case AMDGPU::BI__builtin_amdgcn_image_sample_d_1darray_v4f32_f32:
|
|
case AMDGPU::BI__builtin_amdgcn_image_sample_d_1darray_v4f16_f32:
|
|
case AMDGPU::BI__builtin_amdgcn_image_sample_lz_2darray_v4f32_f32:
|
|
case AMDGPU::BI__builtin_amdgcn_image_sample_lz_2darray_v4f16_f32:
|
|
case AMDGPU::BI__builtin_amdgcn_image_sample_lz_2darray_f32_f32:
|
|
case AMDGPU::BI__builtin_amdgcn_image_sample_l_2darray_v4f32_f32:
|
|
case AMDGPU::BI__builtin_amdgcn_image_sample_l_2darray_v4f16_f32:
|
|
case AMDGPU::BI__builtin_amdgcn_image_sample_l_2darray_f32_f32:
|
|
case AMDGPU::BI__builtin_amdgcn_image_sample_d_2darray_v4f32_f32:
|
|
case AMDGPU::BI__builtin_amdgcn_image_sample_d_2darray_v4f16_f32:
|
|
case AMDGPU::BI__builtin_amdgcn_image_sample_d_2darray_f32_f32: {
|
|
cgm.errorNYI(expr->getSourceRange(),
|
|
std::string("unimplemented AMDGPU builtin call: ") +
|
|
getContext().BuiltinInfo.getName(builtinId));
|
|
return mlir::Value{};
|
|
}
|
|
case AMDGPU::BI__builtin_amdgcn_image_gather4_lz_2d_v4f32_f32: {
|
|
cgm.errorNYI(expr->getSourceRange(),
|
|
std::string("unimplemented AMDGPU builtin call: ") +
|
|
getContext().BuiltinInfo.getName(builtinId));
|
|
return mlir::Value{};
|
|
}
|
|
case AMDGPU::BI__builtin_amdgcn_mfma_scale_f32_16x16x128_f8f6f4:
|
|
case AMDGPU::BI__builtin_amdgcn_mfma_scale_f32_32x32x64_f8f6f4: {
|
|
cgm.errorNYI(expr->getSourceRange(),
|
|
std::string("unimplemented AMDGPU builtin call: ") +
|
|
getContext().BuiltinInfo.getName(builtinId));
|
|
return mlir::Value{};
|
|
}
|
|
case AMDGPU::BI__builtin_amdgcn_wmma_bf16_16x16x16_bf16_w32:
|
|
case AMDGPU::BI__builtin_amdgcn_wmma_bf16_16x16x16_bf16_tied_w32:
|
|
case AMDGPU::BI__builtin_amdgcn_wmma_bf16_16x16x16_bf16_w64:
|
|
case AMDGPU::BI__builtin_amdgcn_wmma_bf16_16x16x16_bf16_tied_w64:
|
|
case AMDGPU::BI__builtin_amdgcn_wmma_f16_16x16x16_f16_w32:
|
|
case AMDGPU::BI__builtin_amdgcn_wmma_f16_16x16x16_f16_tied_w32:
|
|
case AMDGPU::BI__builtin_amdgcn_wmma_f16_16x16x16_f16_w64:
|
|
case AMDGPU::BI__builtin_amdgcn_wmma_f16_16x16x16_f16_tied_w64:
|
|
case AMDGPU::BI__builtin_amdgcn_wmma_f32_16x16x16_bf16_w32:
|
|
case AMDGPU::BI__builtin_amdgcn_wmma_f32_16x16x16_bf16_w64:
|
|
case AMDGPU::BI__builtin_amdgcn_wmma_f32_16x16x16_f16_w32:
|
|
case AMDGPU::BI__builtin_amdgcn_wmma_f32_16x16x16_f16_w64:
|
|
case AMDGPU::BI__builtin_amdgcn_wmma_i32_16x16x16_iu4_w32:
|
|
case AMDGPU::BI__builtin_amdgcn_wmma_i32_16x16x16_iu4_w64:
|
|
case AMDGPU::BI__builtin_amdgcn_wmma_i32_16x16x16_iu8_w32:
|
|
case AMDGPU::BI__builtin_amdgcn_wmma_i32_16x16x16_iu8_w64:
|
|
case AMDGPU::BI__builtin_amdgcn_wmma_bf16_16x16x16_bf16_w32_gfx12:
|
|
case AMDGPU::BI__builtin_amdgcn_wmma_bf16_16x16x16_bf16_w64_gfx12:
|
|
case AMDGPU::BI__builtin_amdgcn_wmma_f16_16x16x16_f16_w32_gfx12:
|
|
case AMDGPU::BI__builtin_amdgcn_wmma_f16_16x16x16_f16_w64_gfx12:
|
|
case AMDGPU::BI__builtin_amdgcn_wmma_f32_16x16x16_bf16_w32_gfx12:
|
|
case AMDGPU::BI__builtin_amdgcn_wmma_f32_16x16x16_bf16_w64_gfx12:
|
|
case AMDGPU::BI__builtin_amdgcn_wmma_f32_16x16x16_f16_w32_gfx12:
|
|
case AMDGPU::BI__builtin_amdgcn_wmma_f32_16x16x16_f16_w64_gfx12:
|
|
case AMDGPU::BI__builtin_amdgcn_wmma_i32_16x16x16_iu4_w32_gfx12:
|
|
case AMDGPU::BI__builtin_amdgcn_wmma_i32_16x16x16_iu4_w64_gfx12:
|
|
case AMDGPU::BI__builtin_amdgcn_wmma_i32_16x16x16_iu8_w32_gfx12:
|
|
case AMDGPU::BI__builtin_amdgcn_wmma_i32_16x16x16_iu8_w64_gfx12:
|
|
case AMDGPU::BI__builtin_amdgcn_wmma_f32_16x16x16_fp8_fp8_w32_gfx12:
|
|
case AMDGPU::BI__builtin_amdgcn_wmma_f32_16x16x16_fp8_fp8_w64_gfx12:
|
|
case AMDGPU::BI__builtin_amdgcn_wmma_f32_16x16x16_fp8_bf8_w32_gfx12:
|
|
case AMDGPU::BI__builtin_amdgcn_wmma_f32_16x16x16_fp8_bf8_w64_gfx12:
|
|
case AMDGPU::BI__builtin_amdgcn_wmma_f32_16x16x16_bf8_fp8_w32_gfx12:
|
|
case AMDGPU::BI__builtin_amdgcn_wmma_f32_16x16x16_bf8_fp8_w64_gfx12:
|
|
case AMDGPU::BI__builtin_amdgcn_wmma_f32_16x16x16_bf8_bf8_w32_gfx12:
|
|
case AMDGPU::BI__builtin_amdgcn_wmma_f32_16x16x16_bf8_bf8_w64_gfx12:
|
|
case AMDGPU::BI__builtin_amdgcn_wmma_i32_16x16x32_iu4_w32_gfx12:
|
|
case AMDGPU::BI__builtin_amdgcn_wmma_i32_16x16x32_iu4_w64_gfx12: {
|
|
cgm.errorNYI(expr->getSourceRange(),
|
|
std::string("unimplemented AMDGPU builtin call: ") +
|
|
getContext().BuiltinInfo.getName(builtinId));
|
|
return mlir::Value{};
|
|
}
|
|
case AMDGPU::BI__builtin_amdgcn_swmmac_f32_16x16x32_f16_w32:
|
|
case AMDGPU::BI__builtin_amdgcn_swmmac_f32_16x16x32_f16_w64:
|
|
case AMDGPU::BI__builtin_amdgcn_swmmac_f32_16x16x32_bf16_w32:
|
|
case AMDGPU::BI__builtin_amdgcn_swmmac_f32_16x16x32_bf16_w64:
|
|
case AMDGPU::BI__builtin_amdgcn_swmmac_f16_16x16x32_f16_w32:
|
|
case AMDGPU::BI__builtin_amdgcn_swmmac_f16_16x16x32_f16_w64:
|
|
case AMDGPU::BI__builtin_amdgcn_swmmac_bf16_16x16x32_bf16_w32:
|
|
case AMDGPU::BI__builtin_amdgcn_swmmac_bf16_16x16x32_bf16_w64:
|
|
case AMDGPU::BI__builtin_amdgcn_swmmac_i32_16x16x32_iu8_w32:
|
|
case AMDGPU::BI__builtin_amdgcn_swmmac_i32_16x16x32_iu8_w64:
|
|
case AMDGPU::BI__builtin_amdgcn_swmmac_i32_16x16x32_iu4_w32:
|
|
case AMDGPU::BI__builtin_amdgcn_swmmac_i32_16x16x32_iu4_w64:
|
|
case AMDGPU::BI__builtin_amdgcn_swmmac_i32_16x16x64_iu4_w32:
|
|
case AMDGPU::BI__builtin_amdgcn_swmmac_i32_16x16x64_iu4_w64:
|
|
case AMDGPU::BI__builtin_amdgcn_swmmac_f32_16x16x32_fp8_fp8_w32:
|
|
case AMDGPU::BI__builtin_amdgcn_swmmac_f32_16x16x32_fp8_fp8_w64:
|
|
case AMDGPU::BI__builtin_amdgcn_swmmac_f32_16x16x32_fp8_bf8_w32:
|
|
case AMDGPU::BI__builtin_amdgcn_swmmac_f32_16x16x32_fp8_bf8_w64:
|
|
case AMDGPU::BI__builtin_amdgcn_swmmac_f32_16x16x32_bf8_fp8_w32:
|
|
case AMDGPU::BI__builtin_amdgcn_swmmac_f32_16x16x32_bf8_fp8_w64:
|
|
case AMDGPU::BI__builtin_amdgcn_swmmac_f32_16x16x32_bf8_bf8_w32:
|
|
case AMDGPU::BI__builtin_amdgcn_swmmac_f32_16x16x32_bf8_bf8_w64: {
|
|
cgm.errorNYI(expr->getSourceRange(),
|
|
std::string("unimplemented AMDGPU builtin call: ") +
|
|
getContext().BuiltinInfo.getName(builtinId));
|
|
return mlir::Value{};
|
|
}
|
|
case AMDGPU::BI__builtin_amdgcn_wmma_f32_16x16x4_f32:
|
|
case AMDGPU::BI__builtin_amdgcn_wmma_f32_16x16x32_bf16:
|
|
case AMDGPU::BI__builtin_amdgcn_wmma_f32_16x16x32_f16:
|
|
case AMDGPU::BI__builtin_amdgcn_wmma_f16_16x16x32_f16:
|
|
case AMDGPU::BI__builtin_amdgcn_wmma_bf16_16x16x32_bf16:
|
|
case AMDGPU::BI__builtin_amdgcn_wmma_bf16f32_16x16x32_bf16:
|
|
case AMDGPU::BI__builtin_amdgcn_wmma_f32_16x16x64_fp8_fp8:
|
|
case AMDGPU::BI__builtin_amdgcn_wmma_f32_16x16x64_fp8_bf8:
|
|
case AMDGPU::BI__builtin_amdgcn_wmma_f32_16x16x64_bf8_fp8:
|
|
case AMDGPU::BI__builtin_amdgcn_wmma_f32_16x16x64_bf8_bf8:
|
|
case AMDGPU::BI__builtin_amdgcn_wmma_f16_16x16x64_fp8_fp8:
|
|
case AMDGPU::BI__builtin_amdgcn_wmma_f16_16x16x64_fp8_bf8:
|
|
case AMDGPU::BI__builtin_amdgcn_wmma_f16_16x16x64_bf8_fp8:
|
|
case AMDGPU::BI__builtin_amdgcn_wmma_f16_16x16x64_bf8_bf8:
|
|
case AMDGPU::BI__builtin_amdgcn_wmma_f16_16x16x128_fp8_fp8:
|
|
case AMDGPU::BI__builtin_amdgcn_wmma_f16_16x16x128_fp8_bf8:
|
|
case AMDGPU::BI__builtin_amdgcn_wmma_f16_16x16x128_bf8_fp8:
|
|
case AMDGPU::BI__builtin_amdgcn_wmma_f16_16x16x128_bf8_bf8:
|
|
case AMDGPU::BI__builtin_amdgcn_wmma_f32_16x16x128_fp8_fp8:
|
|
case AMDGPU::BI__builtin_amdgcn_wmma_f32_16x16x128_fp8_bf8:
|
|
case AMDGPU::BI__builtin_amdgcn_wmma_f32_16x16x128_bf8_fp8:
|
|
case AMDGPU::BI__builtin_amdgcn_wmma_f32_16x16x128_bf8_bf8:
|
|
case AMDGPU::BI__builtin_amdgcn_wmma_i32_16x16x64_iu8:
|
|
case AMDGPU::BI__builtin_amdgcn_wmma_f32_16x16x128_f8f6f4:
|
|
case AMDGPU::BI__builtin_amdgcn_wmma_f32_32x16x128_f4:
|
|
case AMDGPU::BI__builtin_amdgcn_wmma_scale_f32_16x16x128_f8f6f4:
|
|
case AMDGPU::BI__builtin_amdgcn_wmma_scale16_f32_16x16x128_f8f6f4:
|
|
case AMDGPU::BI__builtin_amdgcn_wmma_scale_f32_32x16x128_f4:
|
|
case AMDGPU::BI__builtin_amdgcn_wmma_scale16_f32_32x16x128_f4: {
|
|
cgm.errorNYI(expr->getSourceRange(),
|
|
std::string("unimplemented AMDGPU builtin call: ") +
|
|
getContext().BuiltinInfo.getName(builtinId));
|
|
return mlir::Value{};
|
|
}
|
|
case AMDGPU::BI__builtin_amdgcn_swmmac_f32_16x16x64_f16:
|
|
case AMDGPU::BI__builtin_amdgcn_swmmac_f32_16x16x64_bf16:
|
|
case AMDGPU::BI__builtin_amdgcn_swmmac_f16_16x16x64_f16:
|
|
case AMDGPU::BI__builtin_amdgcn_swmmac_bf16_16x16x64_bf16:
|
|
case AMDGPU::BI__builtin_amdgcn_swmmac_bf16f32_16x16x64_bf16:
|
|
case AMDGPU::BI__builtin_amdgcn_swmmac_f32_16x16x128_fp8_fp8:
|
|
case AMDGPU::BI__builtin_amdgcn_swmmac_f32_16x16x128_fp8_bf8:
|
|
case AMDGPU::BI__builtin_amdgcn_swmmac_f32_16x16x128_bf8_fp8:
|
|
case AMDGPU::BI__builtin_amdgcn_swmmac_f32_16x16x128_bf8_bf8:
|
|
case AMDGPU::BI__builtin_amdgcn_swmmac_f16_16x16x128_fp8_fp8:
|
|
case AMDGPU::BI__builtin_amdgcn_swmmac_f16_16x16x128_fp8_bf8:
|
|
case AMDGPU::BI__builtin_amdgcn_swmmac_f16_16x16x128_bf8_fp8:
|
|
case AMDGPU::BI__builtin_amdgcn_swmmac_f16_16x16x128_bf8_bf8:
|
|
case AMDGPU::BI__builtin_amdgcn_swmmac_i32_16x16x128_iu8: {
|
|
cgm.errorNYI(expr->getSourceRange(),
|
|
std::string("unimplemented AMDGPU builtin call: ") +
|
|
getContext().BuiltinInfo.getName(builtinId));
|
|
return mlir::Value{};
|
|
}
|
|
// amdgcn workgroup size
|
|
case AMDGPU::BI__builtin_amdgcn_workgroup_size_x:
|
|
case AMDGPU::BI__builtin_amdgcn_workgroup_size_y:
|
|
case AMDGPU::BI__builtin_amdgcn_workgroup_size_z: {
|
|
cgm.errorNYI(expr->getSourceRange(),
|
|
std::string("unimplemented AMDGPU builtin call: ") +
|
|
getContext().BuiltinInfo.getName(builtinId));
|
|
return mlir::Value{};
|
|
}
|
|
case AMDGPU::BI__builtin_amdgcn_grid_size_x:
|
|
case AMDGPU::BI__builtin_amdgcn_grid_size_y:
|
|
case AMDGPU::BI__builtin_amdgcn_grid_size_z: {
|
|
cgm.errorNYI(expr->getSourceRange(),
|
|
std::string("unimplemented AMDGPU builtin call: ") +
|
|
getContext().BuiltinInfo.getName(builtinId));
|
|
return mlir::Value{};
|
|
}
|
|
case AMDGPU::BI__builtin_r600_recipsqrt_ieee:
|
|
case AMDGPU::BI__builtin_r600_recipsqrt_ieeef: {
|
|
cgm.errorNYI(expr->getSourceRange(),
|
|
std::string("unimplemented AMDGPU builtin call: ") +
|
|
getContext().BuiltinInfo.getName(builtinId));
|
|
return mlir::Value{};
|
|
}
|
|
case AMDGPU::BI__builtin_amdgcn_alignbit: {
|
|
cgm.errorNYI(expr->getSourceRange(),
|
|
std::string("unimplemented AMDGPU builtin call: ") +
|
|
getContext().BuiltinInfo.getName(builtinId));
|
|
return mlir::Value{};
|
|
}
|
|
case AMDGPU::BI__builtin_amdgcn_fence: {
|
|
cgm.errorNYI(expr->getSourceRange(),
|
|
std::string("unimplemented AMDGPU builtin call: ") +
|
|
getContext().BuiltinInfo.getName(builtinId));
|
|
return mlir::Value{};
|
|
}
|
|
case AMDGPU::BI__builtin_amdgcn_atomic_inc32:
|
|
case AMDGPU::BI__builtin_amdgcn_atomic_inc64:
|
|
case AMDGPU::BI__builtin_amdgcn_atomic_dec32:
|
|
case AMDGPU::BI__builtin_amdgcn_atomic_dec64:
|
|
case AMDGPU::BI__builtin_amdgcn_ds_atomic_fadd_f64:
|
|
case AMDGPU::BI__builtin_amdgcn_ds_atomic_fadd_f32:
|
|
case AMDGPU::BI__builtin_amdgcn_ds_atomic_fadd_v2f16:
|
|
case AMDGPU::BI__builtin_amdgcn_ds_atomic_fadd_v2bf16:
|
|
case AMDGPU::BI__builtin_amdgcn_ds_faddf:
|
|
case AMDGPU::BI__builtin_amdgcn_ds_fminf:
|
|
case AMDGPU::BI__builtin_amdgcn_ds_fmaxf:
|
|
case AMDGPU::BI__builtin_amdgcn_global_atomic_fadd_f32:
|
|
case AMDGPU::BI__builtin_amdgcn_global_atomic_fadd_f64:
|
|
case AMDGPU::BI__builtin_amdgcn_global_atomic_fadd_v2f16:
|
|
case AMDGPU::BI__builtin_amdgcn_flat_atomic_fadd_v2f16:
|
|
case AMDGPU::BI__builtin_amdgcn_flat_atomic_fadd_f32:
|
|
case AMDGPU::BI__builtin_amdgcn_flat_atomic_fadd_f64:
|
|
case AMDGPU::BI__builtin_amdgcn_global_atomic_fadd_v2bf16:
|
|
case AMDGPU::BI__builtin_amdgcn_flat_atomic_fadd_v2bf16:
|
|
case AMDGPU::BI__builtin_amdgcn_global_atomic_fmin_f64:
|
|
case AMDGPU::BI__builtin_amdgcn_global_atomic_fmax_f64:
|
|
case AMDGPU::BI__builtin_amdgcn_flat_atomic_fmin_f64:
|
|
case AMDGPU::BI__builtin_amdgcn_flat_atomic_fmax_f64: {
|
|
cgm.errorNYI(expr->getSourceRange(),
|
|
std::string("unimplemented AMDGPU builtin call: ") +
|
|
getContext().BuiltinInfo.getName(builtinId));
|
|
return mlir::Value{};
|
|
}
|
|
case AMDGPU::BI__builtin_amdgcn_s_sendmsg_rtn:
|
|
case AMDGPU::BI__builtin_amdgcn_s_sendmsg_rtnl: {
|
|
cgm.errorNYI(expr->getSourceRange(),
|
|
std::string("unimplemented AMDGPU builtin call: ") +
|
|
getContext().BuiltinInfo.getName(builtinId));
|
|
return mlir::Value{};
|
|
}
|
|
case AMDGPU::BI__builtin_amdgcn_permlane16_swap:
|
|
case AMDGPU::BI__builtin_amdgcn_permlane32_swap: {
|
|
cgm.errorNYI(expr->getSourceRange(),
|
|
std::string("unimplemented AMDGPU builtin call: ") +
|
|
getContext().BuiltinInfo.getName(builtinId));
|
|
return mlir::Value{};
|
|
}
|
|
case AMDGPU::BI__builtin_amdgcn_bitop3_b32:
|
|
case AMDGPU::BI__builtin_amdgcn_bitop3_b16: {
|
|
cgm.errorNYI(expr->getSourceRange(),
|
|
std::string("unimplemented AMDGPU builtin call: ") +
|
|
getContext().BuiltinInfo.getName(builtinId));
|
|
return mlir::Value{};
|
|
}
|
|
case AMDGPU::BI__builtin_amdgcn_make_buffer_rsrc: {
|
|
cgm.errorNYI(expr->getSourceRange(),
|
|
std::string("unimplemented AMDGPU builtin call: ") +
|
|
getContext().BuiltinInfo.getName(builtinId));
|
|
return mlir::Value{};
|
|
}
|
|
case AMDGPU::BI__builtin_amdgcn_raw_buffer_store_b8:
|
|
case AMDGPU::BI__builtin_amdgcn_raw_buffer_store_b16:
|
|
case AMDGPU::BI__builtin_amdgcn_raw_buffer_store_b32:
|
|
case AMDGPU::BI__builtin_amdgcn_raw_buffer_store_b64:
|
|
case AMDGPU::BI__builtin_amdgcn_raw_buffer_store_b96:
|
|
case AMDGPU::BI__builtin_amdgcn_raw_buffer_store_b128: {
|
|
cgm.errorNYI(expr->getSourceRange(),
|
|
std::string("unimplemented AMDGPU builtin call: ") +
|
|
getContext().BuiltinInfo.getName(builtinId));
|
|
return mlir::Value{};
|
|
}
|
|
case AMDGPU::BI__builtin_amdgcn_raw_buffer_load_b8:
|
|
case AMDGPU::BI__builtin_amdgcn_raw_buffer_load_b16:
|
|
case AMDGPU::BI__builtin_amdgcn_raw_buffer_load_b32:
|
|
case AMDGPU::BI__builtin_amdgcn_raw_buffer_load_b64:
|
|
case AMDGPU::BI__builtin_amdgcn_raw_buffer_load_b96:
|
|
case AMDGPU::BI__builtin_amdgcn_raw_buffer_load_b128: {
|
|
cgm.errorNYI(expr->getSourceRange(),
|
|
std::string("unimplemented AMDGPU builtin call: ") +
|
|
getContext().BuiltinInfo.getName(builtinId));
|
|
return mlir::Value{};
|
|
}
|
|
case AMDGPU::BI__builtin_amdgcn_raw_ptr_buffer_atomic_add_i32: {
|
|
cgm.errorNYI(expr->getSourceRange(),
|
|
std::string("unimplemented AMDGPU builtin call: ") +
|
|
getContext().BuiltinInfo.getName(builtinId));
|
|
return mlir::Value{};
|
|
}
|
|
case AMDGPU::BI__builtin_amdgcn_raw_ptr_buffer_atomic_fadd_f32:
|
|
case AMDGPU::BI__builtin_amdgcn_raw_ptr_buffer_atomic_fadd_v2f16: {
|
|
cgm.errorNYI(expr->getSourceRange(),
|
|
std::string("unimplemented AMDGPU builtin call: ") +
|
|
getContext().BuiltinInfo.getName(builtinId));
|
|
return mlir::Value{};
|
|
}
|
|
case AMDGPU::BI__builtin_amdgcn_raw_ptr_buffer_atomic_fmin_f32:
|
|
case AMDGPU::BI__builtin_amdgcn_raw_ptr_buffer_atomic_fmin_f64: {
|
|
cgm.errorNYI(expr->getSourceRange(),
|
|
std::string("unimplemented AMDGPU builtin call: ") +
|
|
getContext().BuiltinInfo.getName(builtinId));
|
|
return mlir::Value{};
|
|
}
|
|
case AMDGPU::BI__builtin_amdgcn_raw_ptr_buffer_atomic_fmax_f32:
|
|
case AMDGPU::BI__builtin_amdgcn_raw_ptr_buffer_atomic_fmax_f64: {
|
|
cgm.errorNYI(expr->getSourceRange(),
|
|
std::string("unimplemented AMDGPU builtin call: ") +
|
|
getContext().BuiltinInfo.getName(builtinId));
|
|
return mlir::Value{};
|
|
}
|
|
case AMDGPU::BI__builtin_amdgcn_s_prefetch_data: {
|
|
cgm.errorNYI(expr->getSourceRange(),
|
|
std::string("unimplemented AMDGPU builtin call: ") +
|
|
getContext().BuiltinInfo.getName(builtinId));
|
|
return mlir::Value{};
|
|
}
|
|
case Builtin::BIlogbf:
|
|
case Builtin::BI__builtin_logbf:
|
|
return emitLogbBuiltin(*this, expr, llvm::APFloat::IEEEsingle());
|
|
case Builtin::BIlogb:
|
|
case Builtin::BI__builtin_logb:
|
|
return emitLogbBuiltin(*this, expr, llvm::APFloat::IEEEdouble());
|
|
case Builtin::BIscalbnf:
|
|
case Builtin::BI__builtin_scalbnf:
|
|
case Builtin::BIscalbn:
|
|
case Builtin::BI__builtin_scalbn: {
|
|
return emitBinaryExpMaybeConstrainedFPBuiltin(
|
|
*this, expr, "ldexp", "experimental.constrained.ldexp");
|
|
}
|
|
default:
|
|
return std::nullopt;
|
|
}
|
|
}
|