forked from OSchip/llvm-project
AMDGPU: Invert AMDGPUAttributor
Switch to using BitIntegerState for each of the inputs, and invert their meanings. This now diverges more from the old AMDGPUAnnotateKernelFeatures, but this isn't used yet anyway.
This commit is contained in:
parent
0150597c67
commit
088cc63640
|
@ -873,6 +873,46 @@ The AMDGPU backend supports the following LLVM IR attributes.
|
|||
"amdgpu-dx10-clamp" true/false. Specify whether the function expects the DX10_CLAMP field of
|
||||
the mode register to be set on entry. Overrides the default
|
||||
for the calling convention.
|
||||
|
||||
"amdgpu-no-workitem-id-x" Indicates the function does not depend on the value of the
|
||||
llvm.amdgcn.workitem.id.x intrinsic. If a function is marked with this
|
||||
attribute, or reached through a call site marked with this attribute,
|
||||
the value returned by the intrinsic is undefined. The backend can
|
||||
generally infer this during code generation, so typically there is no
|
||||
benefit to frontends marking functions with this.
|
||||
|
||||
"amdgpu-no-workitem-id-y" The same as amdgpu-no-workitem-id-x, except for the
|
||||
llvm.amdgcn.workitem.id.y intrinsic.
|
||||
|
||||
"amdgpu-no-workitem-id-z" The same as amdgpu-no-workitem-id-x, except for the
|
||||
llvm.amdgcn.workitem.id.z intrinsic.
|
||||
|
||||
"amdgpu-no-workgroup-id-x" The same as amdgpu-no-workitem-id-x, except for the
|
||||
llvm.amdgcn.workgroup.id.x intrinsic.
|
||||
|
||||
"amdgpu-no-workgroup-id-y" The same as amdgpu-no-workitem-id-x, except for the
|
||||
llvm.amdgcn.workgroup.id.y intrinsic.
|
||||
|
||||
"amdgpu-no-workgroup-id-z" The same as amdgpu-no-workitem-id-x, except for the
|
||||
llvm.amdgcn.workgroup.id.z intrinsic.
|
||||
|
||||
"amdgpu-no-dispatch-ptr" The same as amdgpu-no-workitem-id-x, except for the
|
||||
llvm.amdgcn.dispatch.ptr intrinsic.
|
||||
|
||||
"amdgpu-no-implicitarg-ptr" The same as amdgpu-no-workitem-id-x, except for the
|
||||
llvm.amdgcn.implicitarg.ptr intrinsic.
|
||||
|
||||
"amdgpu-no-dispatch-id" The same as amdgpu-no-workitem-id-x, except for the
|
||||
llvm.amdgcn.dispatch.id intrinsic.
|
||||
|
||||
"amdgpu-no-queue-ptr" Similar to amdgpu-no-workitem-id-x, except for the
|
||||
llvm.amdgcn.queue.ptr intrinsic. Note that unlike the other ABI hint
|
||||
attributes, the queue pointer may be required in situations where the
|
||||
intrinsic call does not directly appear in the program. Some subtargets
|
||||
require the queue pointer for to handle some addrspacecasts, as well
|
||||
as the llvm.amdgcn.is.shared, llvm.amdgcn.is.private, llvm.trap, and
|
||||
llvm.debug intrinsics.
|
||||
|
||||
======================================= ==========================================================
|
||||
|
||||
.. _amdgpu-elf-code-object:
|
||||
|
|
|
@ -22,46 +22,71 @@
|
|||
|
||||
using namespace llvm;
|
||||
|
||||
static constexpr StringLiteral ImplicitAttrNames[] = {
|
||||
// X ids unnecessarily propagated to kernels.
|
||||
"amdgpu-work-item-id-x", "amdgpu-work-item-id-y",
|
||||
"amdgpu-work-item-id-z", "amdgpu-work-group-id-x",
|
||||
"amdgpu-work-group-id-y", "amdgpu-work-group-id-z",
|
||||
"amdgpu-dispatch-ptr", "amdgpu-dispatch-id",
|
||||
"amdgpu-queue-ptr", "amdgpu-implicitarg-ptr"};
|
||||
enum ImplicitArgumentMask {
|
||||
NOT_IMPLICIT_INPUT = 0,
|
||||
|
||||
// SGPRs
|
||||
DISPATCH_PTR = 1 << 0,
|
||||
QUEUE_PTR = 1 << 1,
|
||||
DISPATCH_ID = 1 << 2,
|
||||
IMPLICIT_ARG_PTR = 1 << 3,
|
||||
WORKGROUP_ID_X = 1 << 4,
|
||||
WORKGROUP_ID_Y = 1 << 5,
|
||||
WORKGROUP_ID_Z = 1 << 6,
|
||||
|
||||
// VGPRS:
|
||||
WORKITEM_ID_X = 1 << 7,
|
||||
WORKITEM_ID_Y = 1 << 8,
|
||||
WORKITEM_ID_Z = 1 << 9,
|
||||
ALL_ARGUMENT_MASK = (1 << 10) - 1
|
||||
};
|
||||
|
||||
static constexpr std::pair<ImplicitArgumentMask,
|
||||
StringLiteral> ImplicitAttrs[] = {
|
||||
{DISPATCH_PTR, "amdgpu-no-dispatch-ptr"},
|
||||
{QUEUE_PTR, "amdgpu-no-queue-ptr"},
|
||||
{DISPATCH_ID, "amdgpu-no-dispatch-id"},
|
||||
{IMPLICIT_ARG_PTR, "amdgpu-no-implicitarg-ptr"},
|
||||
{WORKGROUP_ID_X, "amdgpu-no-workgroup-id-x"},
|
||||
{WORKGROUP_ID_Y, "amdgpu-no-workgroup-id-y"},
|
||||
{WORKGROUP_ID_Z, "amdgpu-no-workgroup-id-z"},
|
||||
{WORKITEM_ID_X, "amdgpu-no-workitem-id-x"},
|
||||
{WORKITEM_ID_Y, "amdgpu-no-workitem-id-y"},
|
||||
{WORKITEM_ID_Z, "amdgpu-no-workitem-id-z"}
|
||||
};
|
||||
|
||||
// We do not need to note the x workitem or workgroup id because they are always
|
||||
// initialized.
|
||||
//
|
||||
// TODO: We should not add the attributes if the known compile time workgroup
|
||||
// size is 1 for y/z.
|
||||
static StringRef intrinsicToAttrName(Intrinsic::ID ID, bool &NonKernelOnly,
|
||||
bool &IsQueuePtr) {
|
||||
static ImplicitArgumentMask
|
||||
intrinsicToAttrMask(Intrinsic::ID ID, bool &NonKernelOnly, bool &IsQueuePtr) {
|
||||
switch (ID) {
|
||||
case Intrinsic::amdgcn_workitem_id_x:
|
||||
NonKernelOnly = true;
|
||||
return "amdgpu-work-item-id-x";
|
||||
return WORKITEM_ID_X;
|
||||
case Intrinsic::amdgcn_workgroup_id_x:
|
||||
NonKernelOnly = true;
|
||||
return "amdgpu-work-group-id-x";
|
||||
return WORKGROUP_ID_X;
|
||||
case Intrinsic::amdgcn_workitem_id_y:
|
||||
case Intrinsic::r600_read_tidig_y:
|
||||
return "amdgpu-work-item-id-y";
|
||||
return WORKITEM_ID_Y;
|
||||
case Intrinsic::amdgcn_workitem_id_z:
|
||||
case Intrinsic::r600_read_tidig_z:
|
||||
return "amdgpu-work-item-id-z";
|
||||
return WORKITEM_ID_Z;
|
||||
case Intrinsic::amdgcn_workgroup_id_y:
|
||||
case Intrinsic::r600_read_tgid_y:
|
||||
return "amdgpu-work-group-id-y";
|
||||
return WORKGROUP_ID_Y;
|
||||
case Intrinsic::amdgcn_workgroup_id_z:
|
||||
case Intrinsic::r600_read_tgid_z:
|
||||
return "amdgpu-work-group-id-z";
|
||||
return WORKGROUP_ID_Z;
|
||||
case Intrinsic::amdgcn_dispatch_ptr:
|
||||
return "amdgpu-dispatch-ptr";
|
||||
return DISPATCH_PTR;
|
||||
case Intrinsic::amdgcn_dispatch_id:
|
||||
return "amdgpu-dispatch-id";
|
||||
return DISPATCH_ID;
|
||||
case Intrinsic::amdgcn_implicitarg_ptr:
|
||||
return "amdgpu-implicitarg-ptr";
|
||||
return IMPLICIT_ARG_PTR;
|
||||
case Intrinsic::amdgcn_queue_ptr:
|
||||
case Intrinsic::amdgcn_is_shared:
|
||||
case Intrinsic::amdgcn_is_private:
|
||||
|
@ -69,9 +94,9 @@ static StringRef intrinsicToAttrName(Intrinsic::ID ID, bool &NonKernelOnly,
|
|||
case Intrinsic::trap:
|
||||
case Intrinsic::debugtrap:
|
||||
IsQueuePtr = true;
|
||||
return "amdgpu-queue-ptr";
|
||||
return QUEUE_PTR;
|
||||
default:
|
||||
return "";
|
||||
return NOT_IMPLICIT_INPUT;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -161,8 +186,11 @@ private:
|
|||
DenseMap<const Constant *, uint8_t> ConstantStatus;
|
||||
};
|
||||
|
||||
struct AAAMDAttributes : public StateWrapper<BooleanState, AbstractAttribute> {
|
||||
using Base = StateWrapper<BooleanState, AbstractAttribute>;
|
||||
struct AAAMDAttributes : public StateWrapper<
|
||||
BitIntegerState<uint16_t, ALL_ARGUMENT_MASK, 0>, AbstractAttribute> {
|
||||
using Base = StateWrapper<BitIntegerState<uint16_t, ALL_ARGUMENT_MASK, 0>,
|
||||
AbstractAttribute>;
|
||||
|
||||
AAAMDAttributes(const IRPosition &IRP, Attributor &A) : Base(IRP) {}
|
||||
|
||||
/// Create an abstract attribute view for the position \p IRP.
|
||||
|
@ -181,8 +209,6 @@ struct AAAMDAttributes : public StateWrapper<BooleanState, AbstractAttribute> {
|
|||
return (AA->getIdAddr() == &ID);
|
||||
}
|
||||
|
||||
virtual const DenseSet<StringRef> &getAttributes() const = 0;
|
||||
|
||||
/// Unique ID (due to the unique address)
|
||||
static const char ID;
|
||||
};
|
||||
|
@ -297,8 +323,13 @@ struct AAAMDAttributesFunction : public AAAMDAttributes {
|
|||
|
||||
void initialize(Attributor &A) override {
|
||||
Function *F = getAssociatedFunction();
|
||||
CallingConv::ID CC = F->getCallingConv();
|
||||
bool CallingConvSupportsAllImplicits = (CC != CallingConv::AMDGPU_Gfx);
|
||||
for (auto Attr : ImplicitAttrs) {
|
||||
if (F->hasFnAttribute(Attr.second))
|
||||
addKnownBits(Attr.first);
|
||||
}
|
||||
|
||||
if (F->isDeclaration())
|
||||
return;
|
||||
|
||||
// Ignore functions with graphics calling conventions, these are currently
|
||||
// not allowed to have kernel arguments.
|
||||
|
@ -306,73 +337,47 @@ struct AAAMDAttributesFunction : public AAAMDAttributes {
|
|||
indicatePessimisticFixpoint();
|
||||
return;
|
||||
}
|
||||
|
||||
for (StringRef Attr : ImplicitAttrNames) {
|
||||
if (F->hasFnAttribute(Attr))
|
||||
Attributes.insert(Attr);
|
||||
}
|
||||
|
||||
// TODO: We shouldn't need this in the future.
|
||||
if (CallingConvSupportsAllImplicits &&
|
||||
F->hasAddressTaken(nullptr, true, true, true)) {
|
||||
for (StringRef AttrName : ImplicitAttrNames) {
|
||||
Attributes.insert(AttrName);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
ChangeStatus updateImpl(Attributor &A) override {
|
||||
Function *F = getAssociatedFunction();
|
||||
ChangeStatus Change = ChangeStatus::UNCHANGED;
|
||||
bool IsNonEntryFunc = !AMDGPU::isEntryFunctionCC(F->getCallingConv());
|
||||
CallingConv::ID CC = F->getCallingConv();
|
||||
bool CallingConvSupportsAllImplicits = (CC != CallingConv::AMDGPU_Gfx);
|
||||
auto &InfoCache = static_cast<AMDGPUInformationCache &>(A.getInfoCache());
|
||||
|
||||
auto AddAttribute = [&](StringRef AttrName) {
|
||||
if (Attributes.insert(AttrName).second)
|
||||
Change = ChangeStatus::CHANGED;
|
||||
};
|
||||
// The current assumed state used to determine a change.
|
||||
auto OrigAssumed = getAssumed();
|
||||
|
||||
// Check for Intrinsics and propagate attributes.
|
||||
const AACallEdges &AAEdges = A.getAAFor<AACallEdges>(
|
||||
*this, this->getIRPosition(), DepClassTy::REQUIRED);
|
||||
if (AAEdges.hasNonAsmUnknownCallee())
|
||||
return indicatePessimisticFixpoint();
|
||||
|
||||
// We have to assume that we can reach a function with these attributes.
|
||||
// We do not consider inline assembly as a unknown callee.
|
||||
if (CallingConvSupportsAllImplicits && AAEdges.hasNonAsmUnknownCallee()) {
|
||||
for (StringRef AttrName : ImplicitAttrNames) {
|
||||
AddAttribute(AttrName);
|
||||
}
|
||||
}
|
||||
bool IsNonEntryFunc = !AMDGPU::isEntryFunctionCC(F->getCallingConv());
|
||||
auto &InfoCache = static_cast<AMDGPUInformationCache &>(A.getInfoCache());
|
||||
|
||||
bool NeedsQueuePtr = false;
|
||||
|
||||
for (Function *Callee : AAEdges.getOptimisticEdges()) {
|
||||
Intrinsic::ID IID = Callee->getIntrinsicID();
|
||||
if (IID != Intrinsic::not_intrinsic) {
|
||||
bool NonKernelOnly = false;
|
||||
StringRef AttrName =
|
||||
intrinsicToAttrName(IID, NonKernelOnly, NeedsQueuePtr);
|
||||
|
||||
if (!AttrName.empty() && (IsNonEntryFunc || !NonKernelOnly))
|
||||
AddAttribute(AttrName);
|
||||
|
||||
if (IID == Intrinsic::not_intrinsic) {
|
||||
const AAAMDAttributes &AAAMD = A.getAAFor<AAAMDAttributes>(
|
||||
*this, IRPosition::function(*Callee), DepClassTy::REQUIRED);
|
||||
*this &= AAAMD;
|
||||
continue;
|
||||
}
|
||||
|
||||
const AAAMDAttributes &AAAMD = A.getAAFor<AAAMDAttributes>(
|
||||
*this, IRPosition::function(*Callee), DepClassTy::REQUIRED);
|
||||
const DenseSet<StringRef> &CalleeAttributes = AAAMD.getAttributes();
|
||||
// Propagate implicit attributes from called function.
|
||||
for (StringRef AttrName : ImplicitAttrNames)
|
||||
if (CalleeAttributes.count(AttrName))
|
||||
AddAttribute(AttrName);
|
||||
bool NonKernelOnly = false;
|
||||
ImplicitArgumentMask AttrMask =
|
||||
intrinsicToAttrMask(IID, NonKernelOnly, NeedsQueuePtr);
|
||||
if (AttrMask != NOT_IMPLICIT_INPUT) {
|
||||
if ((IsNonEntryFunc || !NonKernelOnly))
|
||||
removeAssumedBits(AttrMask);
|
||||
}
|
||||
}
|
||||
|
||||
// If we found that we need amdgpu-queue-ptr, nothing else to do.
|
||||
if (NeedsQueuePtr || Attributes.count("amdgpu-queue-ptr")) {
|
||||
AddAttribute("amdgpu-queue-ptr");
|
||||
return Change;
|
||||
if (NeedsQueuePtr) {
|
||||
removeAssumedBits(QUEUE_PTR);
|
||||
return getAssumed() != OrigAssumed ? ChangeStatus::CHANGED :
|
||||
ChangeStatus::UNCHANGED;
|
||||
}
|
||||
|
||||
auto CheckAddrSpaceCasts = [&](Instruction &I) {
|
||||
|
@ -399,53 +404,59 @@ struct AAAMDAttributesFunction : public AAAMDAttributes {
|
|||
|
||||
// If we found that we need amdgpu-queue-ptr, nothing else to do.
|
||||
if (NeedsQueuePtr) {
|
||||
AddAttribute("amdgpu-queue-ptr");
|
||||
return Change;
|
||||
removeAssumedBits(QUEUE_PTR);
|
||||
return getAssumed() != OrigAssumed ? ChangeStatus::CHANGED :
|
||||
ChangeStatus::UNCHANGED;
|
||||
}
|
||||
|
||||
if (!IsNonEntryFunc && HasApertureRegs)
|
||||
return Change;
|
||||
if (!IsNonEntryFunc && HasApertureRegs) {
|
||||
return getAssumed() != OrigAssumed ? ChangeStatus::CHANGED :
|
||||
ChangeStatus::UNCHANGED;
|
||||
}
|
||||
|
||||
for (BasicBlock &BB : *F) {
|
||||
for (Instruction &I : BB) {
|
||||
for (const Use &U : I.operands()) {
|
||||
if (const auto *C = dyn_cast<Constant>(U)) {
|
||||
if (InfoCache.needsQueuePtr(C, *F)) {
|
||||
AddAttribute("amdgpu-queue-ptr");
|
||||
return Change;
|
||||
removeAssumedBits(QUEUE_PTR);
|
||||
return getAssumed() != OrigAssumed ? ChangeStatus::CHANGED :
|
||||
ChangeStatus::UNCHANGED;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return Change;
|
||||
return getAssumed() != OrigAssumed ? ChangeStatus::CHANGED :
|
||||
ChangeStatus::UNCHANGED;
|
||||
}
|
||||
|
||||
ChangeStatus manifest(Attributor &A) override {
|
||||
SmallVector<Attribute, 8> AttrList;
|
||||
LLVMContext &Ctx = getAssociatedFunction()->getContext();
|
||||
|
||||
for (StringRef AttrName : Attributes)
|
||||
AttrList.push_back(Attribute::get(Ctx, AttrName));
|
||||
for (auto Attr : ImplicitAttrs) {
|
||||
if (isKnown(Attr.first))
|
||||
AttrList.push_back(Attribute::get(Ctx, Attr.second));
|
||||
}
|
||||
|
||||
return IRAttributeManifest::manifestAttrs(A, getIRPosition(), AttrList,
|
||||
/* ForceReplace */ true);
|
||||
}
|
||||
|
||||
const std::string getAsStr() const override {
|
||||
return "AMDInfo[" + std::to_string(Attributes.size()) + "]";
|
||||
}
|
||||
|
||||
const DenseSet<StringRef> &getAttributes() const override {
|
||||
return Attributes;
|
||||
std::string Str;
|
||||
raw_string_ostream OS(Str);
|
||||
OS << "AMDInfo[";
|
||||
for (auto Attr : ImplicitAttrs)
|
||||
OS << ' ' << Attr.second;
|
||||
OS << " ]";
|
||||
return OS.str();
|
||||
}
|
||||
|
||||
/// See AbstractAttribute::trackStatistics()
|
||||
void trackStatistics() const override {}
|
||||
|
||||
private:
|
||||
DenseSet<StringRef> Attributes;
|
||||
};
|
||||
|
||||
AAAMDAttributes &AAAMDAttributes::createForPosition(const IRPosition &IRP,
|
||||
|
|
|
@ -173,6 +173,6 @@ attributes #1 = { nounwind }
|
|||
; AKF_HSA: attributes #[[ATTR2]] = { nounwind "amdgpu-queue-ptr" }
|
||||
;.
|
||||
; ATTRIBUTOR_HSA: attributes #[[ATTR0:[0-9]+]] = { argmemonly nofree nounwind willreturn }
|
||||
; ATTRIBUTOR_HSA: attributes #[[ATTR1]] = { nounwind "uniform-work-group-size"="false" }
|
||||
; ATTRIBUTOR_HSA: attributes #[[ATTR2]] = { nounwind "amdgpu-queue-ptr" "uniform-work-group-size"="false" }
|
||||
; ATTRIBUTOR_HSA: attributes #[[ATTR1]] = { nounwind "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "uniform-work-group-size"="false" }
|
||||
; ATTRIBUTOR_HSA: attributes #[[ATTR2]] = { nounwind "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "uniform-work-group-size"="false" }
|
||||
;.
|
||||
|
|
|
@ -0,0 +1,130 @@
|
|||
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --function-signature --check-globals
|
||||
; RUN: opt -mtriple=amdgcn-unknown-amdhsa -S -amdgpu-attributor %s | FileCheck %s
|
||||
|
||||
; Check handling for pre-existing attributes on function declarations
|
||||
|
||||
declare void @marked_no_workitem_id_x() "amdgpu-no-workitem-id-x"
|
||||
declare void @marked_no_workitem_id_y() "amdgpu-no-workitem-id-y"
|
||||
declare void @marked_no_workitem_id_z() "amdgpu-no-workitem-id-z"
|
||||
|
||||
declare void @marked_no_workgroup_id_x() "amdgpu-no-workgroup-id-x"
|
||||
declare void @marked_no_workgroup_id_y() "amdgpu-no-workgroup-id-y"
|
||||
declare void @marked_no_workgroup_id_z() "amdgpu-no-workgroup-id-z"
|
||||
|
||||
declare void @marked_no_dispatch_ptr() "amdgpu-no-dispatch-ptr"
|
||||
declare void @marked_no_queue_ptr() "amdgpu-no-queue-ptr"
|
||||
declare void @marked_no_implicitarg_ptr() "amdgpu-no-implicitarg-ptr"
|
||||
declare void @marked_no_dispatch_id() "amdgpu-no-dispatch-id"
|
||||
|
||||
|
||||
define void @call_no_workitem_id_x() {
|
||||
; CHECK-LABEL: define {{[^@]+}}@call_no_workitem_id_x
|
||||
; CHECK-SAME: () #[[ATTR0:[0-9]+]] {
|
||||
; CHECK-NEXT: call void @marked_no_workitem_id_x()
|
||||
; CHECK-NEXT: ret void
|
||||
;
|
||||
call void @marked_no_workitem_id_x()
|
||||
ret void
|
||||
}
|
||||
|
||||
define void @call_no_workitem_id_y() {
|
||||
; CHECK-LABEL: define {{[^@]+}}@call_no_workitem_id_y
|
||||
; CHECK-SAME: () #[[ATTR1:[0-9]+]] {
|
||||
; CHECK-NEXT: call void @marked_no_workitem_id_y()
|
||||
; CHECK-NEXT: ret void
|
||||
;
|
||||
call void @marked_no_workitem_id_y()
|
||||
ret void
|
||||
}
|
||||
|
||||
define void @call_no_workitem_id_z() {
|
||||
; CHECK-LABEL: define {{[^@]+}}@call_no_workitem_id_z
|
||||
; CHECK-SAME: () #[[ATTR2:[0-9]+]] {
|
||||
; CHECK-NEXT: call void @marked_no_workitem_id_z()
|
||||
; CHECK-NEXT: ret void
|
||||
;
|
||||
call void @marked_no_workitem_id_z()
|
||||
ret void
|
||||
}
|
||||
|
||||
define void @call_no_workgroup_id_x() {
|
||||
; CHECK-LABEL: define {{[^@]+}}@call_no_workgroup_id_x
|
||||
; CHECK-SAME: () #[[ATTR3:[0-9]+]] {
|
||||
; CHECK-NEXT: call void @marked_no_workgroup_id_x()
|
||||
; CHECK-NEXT: ret void
|
||||
;
|
||||
call void @marked_no_workgroup_id_x()
|
||||
ret void
|
||||
}
|
||||
|
||||
define void @call_no_workgroup_id_y() {
|
||||
; CHECK-LABEL: define {{[^@]+}}@call_no_workgroup_id_y
|
||||
; CHECK-SAME: () #[[ATTR4:[0-9]+]] {
|
||||
; CHECK-NEXT: call void @marked_no_workgroup_id_y()
|
||||
; CHECK-NEXT: ret void
|
||||
;
|
||||
call void @marked_no_workgroup_id_y()
|
||||
ret void
|
||||
}
|
||||
|
||||
define void @call_no_workgroup_id_z() {
|
||||
; CHECK-LABEL: define {{[^@]+}}@call_no_workgroup_id_z
|
||||
; CHECK-SAME: () #[[ATTR5:[0-9]+]] {
|
||||
; CHECK-NEXT: call void @marked_no_workgroup_id_z()
|
||||
; CHECK-NEXT: ret void
|
||||
;
|
||||
call void @marked_no_workgroup_id_z()
|
||||
ret void
|
||||
}
|
||||
|
||||
define void @call_no_dispatch_ptr() {
|
||||
; CHECK-LABEL: define {{[^@]+}}@call_no_dispatch_ptr
|
||||
; CHECK-SAME: () #[[ATTR6:[0-9]+]] {
|
||||
; CHECK-NEXT: call void @marked_no_dispatch_ptr()
|
||||
; CHECK-NEXT: ret void
|
||||
;
|
||||
call void @marked_no_dispatch_ptr()
|
||||
ret void
|
||||
}
|
||||
|
||||
define void @call_no_queue_ptr() {
|
||||
; CHECK-LABEL: define {{[^@]+}}@call_no_queue_ptr
|
||||
; CHECK-SAME: () #[[ATTR7:[0-9]+]] {
|
||||
; CHECK-NEXT: call void @marked_no_queue_ptr()
|
||||
; CHECK-NEXT: ret void
|
||||
;
|
||||
call void @marked_no_queue_ptr()
|
||||
ret void
|
||||
}
|
||||
|
||||
define void @call_no_implicitarg_ptr() {
|
||||
; CHECK-LABEL: define {{[^@]+}}@call_no_implicitarg_ptr
|
||||
; CHECK-SAME: () #[[ATTR8:[0-9]+]] {
|
||||
; CHECK-NEXT: call void @marked_no_implicitarg_ptr()
|
||||
; CHECK-NEXT: ret void
|
||||
;
|
||||
call void @marked_no_implicitarg_ptr()
|
||||
ret void
|
||||
}
|
||||
|
||||
define void @call_no_dispatch_id() {
|
||||
; CHECK-LABEL: define {{[^@]+}}@call_no_dispatch_id
|
||||
; CHECK-SAME: () #[[ATTR9:[0-9]+]] {
|
||||
; CHECK-NEXT: call void @marked_no_dispatch_id()
|
||||
; CHECK-NEXT: ret void
|
||||
;
|
||||
call void @marked_no_dispatch_id()
|
||||
ret void
|
||||
}
|
||||
;.
|
||||
; CHECK: attributes #[[ATTR0]] = { "amdgpu-no-workitem-id-x" "uniform-work-group-size"="false" }
|
||||
; CHECK: attributes #[[ATTR1]] = { "amdgpu-no-workitem-id-y" "uniform-work-group-size"="false" }
|
||||
; CHECK: attributes #[[ATTR2]] = { "amdgpu-no-workitem-id-z" "uniform-work-group-size"="false" }
|
||||
; CHECK: attributes #[[ATTR3]] = { "amdgpu-no-workgroup-id-x" "uniform-work-group-size"="false" }
|
||||
; CHECK: attributes #[[ATTR4]] = { "amdgpu-no-workgroup-id-y" "uniform-work-group-size"="false" }
|
||||
; CHECK: attributes #[[ATTR5]] = { "amdgpu-no-workgroup-id-z" "uniform-work-group-size"="false" }
|
||||
; CHECK: attributes #[[ATTR6]] = { "amdgpu-no-dispatch-ptr" "uniform-work-group-size"="false" }
|
||||
; CHECK: attributes #[[ATTR7]] = { "amdgpu-no-queue-ptr" "uniform-work-group-size"="false" }
|
||||
; CHECK: attributes #[[ATTR8]] = { "amdgpu-no-implicitarg-ptr" "uniform-work-group-size"="false" }
|
||||
; CHECK: attributes #[[ATTR9]] = { "amdgpu-no-dispatch-id" "uniform-work-group-size"="false" }
|
||||
;.
|
|
@ -688,7 +688,7 @@ define void @func_call_asm() #3 {
|
|||
;
|
||||
; ATTRIBUTOR_HSA-LABEL: define {{[^@]+}}@func_call_asm
|
||||
; ATTRIBUTOR_HSA-SAME: () #[[ATTR16]] {
|
||||
; ATTRIBUTOR_HSA-NEXT: call void asm sideeffect "", ""() #[[ATTR18:[0-9]+]]
|
||||
; ATTRIBUTOR_HSA-NEXT: call void asm sideeffect "", ""() #[[ATTR17:[0-9]+]]
|
||||
; ATTRIBUTOR_HSA-NEXT: ret void
|
||||
;
|
||||
call void asm sideeffect "", ""() #3
|
||||
|
@ -733,7 +733,7 @@ define i32 @use_dispatch_ptr_ret_type() #1 {
|
|||
; AKF_HSA-NEXT: ret i32 0
|
||||
;
|
||||
; ATTRIBUTOR_HSA-LABEL: define {{[^@]+}}@use_dispatch_ptr_ret_type
|
||||
; ATTRIBUTOR_HSA-SAME: () #[[ATTR17:[0-9]+]] {
|
||||
; ATTRIBUTOR_HSA-SAME: () #[[ATTR7]] {
|
||||
; ATTRIBUTOR_HSA-NEXT: [[DISPATCH_PTR:%.*]] = call i8 addrspace(4)* @llvm.amdgcn.dispatch.ptr()
|
||||
; ATTRIBUTOR_HSA-NEXT: store volatile i8 addrspace(4)* [[DISPATCH_PTR]], i8 addrspace(4)* addrspace(1)* undef, align 8
|
||||
; ATTRIBUTOR_HSA-NEXT: ret i32 0
|
||||
|
@ -751,7 +751,7 @@ define float @func_indirect_use_dispatch_ptr_constexpr_cast_func() #1 {
|
|||
; AKF_HSA-NEXT: ret float [[FADD]]
|
||||
;
|
||||
; ATTRIBUTOR_HSA-LABEL: define {{[^@]+}}@func_indirect_use_dispatch_ptr_constexpr_cast_func
|
||||
; ATTRIBUTOR_HSA-SAME: () #[[ATTR17]] {
|
||||
; ATTRIBUTOR_HSA-SAME: () #[[ATTR7]] {
|
||||
; ATTRIBUTOR_HSA-NEXT: [[F:%.*]] = call float bitcast (i32 ()* @use_dispatch_ptr_ret_type to float ()*)()
|
||||
; ATTRIBUTOR_HSA-NEXT: [[FADD:%.*]] = fadd float [[F]], 1.000000e+00
|
||||
; ATTRIBUTOR_HSA-NEXT: ret float [[FADD]]
|
||||
|
@ -866,22 +866,21 @@ attributes #3 = { nounwind }
|
|||
; AKF_HSA: attributes #[[ATTR20]] = { nounwind "amdgpu-dispatch-id" "amdgpu-dispatch-ptr" "amdgpu-implicitarg-ptr" "amdgpu-queue-ptr" "amdgpu-work-group-id-x" "amdgpu-work-group-id-y" "amdgpu-work-group-id-z" "amdgpu-work-item-id-x" "amdgpu-work-item-id-y" "amdgpu-work-item-id-z" }
|
||||
;.
|
||||
; ATTRIBUTOR_HSA: attributes #[[ATTR0:[0-9]+]] = { nounwind readnone speculatable willreturn }
|
||||
; ATTRIBUTOR_HSA: attributes #[[ATTR1]] = { nounwind "amdgpu-work-item-id-x" "target-cpu"="fiji" "uniform-work-group-size"="false" }
|
||||
; ATTRIBUTOR_HSA: attributes #[[ATTR2]] = { nounwind "amdgpu-work-item-id-y" "target-cpu"="fiji" "uniform-work-group-size"="false" }
|
||||
; ATTRIBUTOR_HSA: attributes #[[ATTR3]] = { nounwind "amdgpu-work-item-id-z" "target-cpu"="fiji" "uniform-work-group-size"="false" }
|
||||
; ATTRIBUTOR_HSA: attributes #[[ATTR4]] = { nounwind "amdgpu-work-group-id-x" "target-cpu"="fiji" "uniform-work-group-size"="false" }
|
||||
; ATTRIBUTOR_HSA: attributes #[[ATTR5]] = { nounwind "amdgpu-work-group-id-y" "target-cpu"="fiji" "uniform-work-group-size"="false" }
|
||||
; ATTRIBUTOR_HSA: attributes #[[ATTR6]] = { nounwind "amdgpu-work-group-id-z" "target-cpu"="fiji" "uniform-work-group-size"="false" }
|
||||
; ATTRIBUTOR_HSA: attributes #[[ATTR7]] = { nounwind "amdgpu-dispatch-ptr" "target-cpu"="fiji" "uniform-work-group-size"="false" }
|
||||
; ATTRIBUTOR_HSA: attributes #[[ATTR8]] = { nounwind "amdgpu-queue-ptr" "target-cpu"="fiji" "uniform-work-group-size"="false" }
|
||||
; ATTRIBUTOR_HSA: attributes #[[ATTR9]] = { nounwind "amdgpu-dispatch-id" "target-cpu"="fiji" "uniform-work-group-size"="false" }
|
||||
; ATTRIBUTOR_HSA: attributes #[[ATTR10]] = { nounwind "amdgpu-work-group-id-y" "amdgpu-work-group-id-z" "target-cpu"="fiji" "uniform-work-group-size"="false" }
|
||||
; ATTRIBUTOR_HSA: attributes #[[ATTR11]] = { nounwind "target-cpu"="fiji" "uniform-work-group-size"="false" }
|
||||
; ATTRIBUTOR_HSA: attributes #[[ATTR12]] = { nounwind "target-cpu"="gfx900" "uniform-work-group-size"="false" }
|
||||
; ATTRIBUTOR_HSA: attributes #[[ATTR13]] = { nounwind "amdgpu-queue-ptr" "target-cpu"="gfx900" "uniform-work-group-size"="false" }
|
||||
; ATTRIBUTOR_HSA: attributes #[[ATTR14]] = { nounwind "amdgpu-implicitarg-ptr" "target-cpu"="fiji" "uniform-work-group-size"="false" }
|
||||
; ATTRIBUTOR_HSA: attributes #[[ATTR15]] = { nounwind "amdgpu-dispatch-id" "amdgpu-dispatch-ptr" "amdgpu-implicitarg-ptr" "amdgpu-queue-ptr" "amdgpu-work-group-id-x" "amdgpu-work-group-id-y" "amdgpu-work-group-id-z" "amdgpu-work-item-id-x" "amdgpu-work-item-id-y" "amdgpu-work-item-id-z" "uniform-work-group-size"="false" }
|
||||
; ATTRIBUTOR_HSA: attributes #[[ATTR16]] = { nounwind "uniform-work-group-size"="false" }
|
||||
; ATTRIBUTOR_HSA: attributes #[[ATTR17]] = { nounwind "amdgpu-dispatch-id" "amdgpu-dispatch-ptr" "amdgpu-implicitarg-ptr" "amdgpu-queue-ptr" "amdgpu-work-group-id-x" "amdgpu-work-group-id-y" "amdgpu-work-group-id-z" "amdgpu-work-item-id-x" "amdgpu-work-item-id-y" "amdgpu-work-item-id-z" "target-cpu"="fiji" "uniform-work-group-size"="false" }
|
||||
; ATTRIBUTOR_HSA: attributes #[[ATTR18]] = { nounwind }
|
||||
; ATTRIBUTOR_HSA: attributes #[[ATTR1]] = { nounwind "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "target-cpu"="fiji" "uniform-work-group-size"="false" }
|
||||
; ATTRIBUTOR_HSA: attributes #[[ATTR2]] = { nounwind "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-z" "target-cpu"="fiji" "uniform-work-group-size"="false" }
|
||||
; ATTRIBUTOR_HSA: attributes #[[ATTR3]] = { nounwind "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "target-cpu"="fiji" "uniform-work-group-size"="false" }
|
||||
; ATTRIBUTOR_HSA: attributes #[[ATTR4]] = { nounwind "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "target-cpu"="fiji" "uniform-work-group-size"="false" }
|
||||
; ATTRIBUTOR_HSA: attributes #[[ATTR5]] = { nounwind "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "target-cpu"="fiji" "uniform-work-group-size"="false" }
|
||||
; ATTRIBUTOR_HSA: attributes #[[ATTR6]] = { nounwind "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "target-cpu"="fiji" "uniform-work-group-size"="false" }
|
||||
; ATTRIBUTOR_HSA: attributes #[[ATTR7]] = { nounwind "amdgpu-no-dispatch-id" "amdgpu-no-implicitarg-ptr" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "target-cpu"="fiji" "uniform-work-group-size"="false" }
|
||||
; ATTRIBUTOR_HSA: attributes #[[ATTR8]] = { nounwind "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "target-cpu"="fiji" "uniform-work-group-size"="false" }
|
||||
; ATTRIBUTOR_HSA: attributes #[[ATTR9]] = { nounwind "amdgpu-no-dispatch-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "target-cpu"="fiji" "uniform-work-group-size"="false" }
|
||||
; ATTRIBUTOR_HSA: attributes #[[ATTR10]] = { nounwind "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "target-cpu"="fiji" "uniform-work-group-size"="false" }
|
||||
; ATTRIBUTOR_HSA: attributes #[[ATTR11]] = { nounwind "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "target-cpu"="fiji" "uniform-work-group-size"="false" }
|
||||
; ATTRIBUTOR_HSA: attributes #[[ATTR12]] = { nounwind "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "target-cpu"="gfx900" "uniform-work-group-size"="false" }
|
||||
; ATTRIBUTOR_HSA: attributes #[[ATTR13]] = { nounwind "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "target-cpu"="gfx900" "uniform-work-group-size"="false" }
|
||||
; ATTRIBUTOR_HSA: attributes #[[ATTR14]] = { nounwind "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "target-cpu"="fiji" "uniform-work-group-size"="false" }
|
||||
; ATTRIBUTOR_HSA: attributes #[[ATTR15]] = { nounwind "uniform-work-group-size"="false" }
|
||||
; ATTRIBUTOR_HSA: attributes #[[ATTR16]] = { nounwind "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "uniform-work-group-size"="false" }
|
||||
; ATTRIBUTOR_HSA: attributes #[[ATTR17]] = { nounwind }
|
||||
;.
|
||||
|
|
|
@ -515,15 +515,15 @@ attributes #1 = { nounwind }
|
|||
; AKF_HSA: attributes #[[ATTR12]] = { nounwind "amdgpu-stack-objects" }
|
||||
;.
|
||||
; ATTRIBUTOR_HSA: attributes #[[ATTR0:[0-9]+]] = { nounwind readnone speculatable willreturn }
|
||||
; ATTRIBUTOR_HSA: attributes #[[ATTR1]] = { nounwind "uniform-work-group-size"="false" }
|
||||
; ATTRIBUTOR_HSA: attributes #[[ATTR2]] = { nounwind "amdgpu-work-group-id-y" "uniform-work-group-size"="false" }
|
||||
; ATTRIBUTOR_HSA: attributes #[[ATTR3]] = { nounwind "amdgpu-work-group-id-z" "uniform-work-group-size"="false" }
|
||||
; ATTRIBUTOR_HSA: attributes #[[ATTR4]] = { nounwind "amdgpu-work-group-id-y" "amdgpu-work-group-id-z" "uniform-work-group-size"="false" }
|
||||
; ATTRIBUTOR_HSA: attributes #[[ATTR5]] = { nounwind "amdgpu-work-item-id-y" "uniform-work-group-size"="false" }
|
||||
; ATTRIBUTOR_HSA: attributes #[[ATTR6]] = { nounwind "amdgpu-work-item-id-z" "uniform-work-group-size"="false" }
|
||||
; ATTRIBUTOR_HSA: attributes #[[ATTR7]] = { nounwind "amdgpu-work-group-id-y" "amdgpu-work-item-id-y" "uniform-work-group-size"="false" }
|
||||
; ATTRIBUTOR_HSA: attributes #[[ATTR8]] = { nounwind "amdgpu-work-item-id-y" "amdgpu-work-item-id-z" "uniform-work-group-size"="false" }
|
||||
; ATTRIBUTOR_HSA: attributes #[[ATTR9]] = { nounwind "amdgpu-work-group-id-y" "amdgpu-work-group-id-z" "amdgpu-work-item-id-y" "amdgpu-work-item-id-z" "uniform-work-group-size"="false" }
|
||||
; ATTRIBUTOR_HSA: attributes #[[ATTR10]] = { nounwind "amdgpu-dispatch-ptr" "uniform-work-group-size"="false" }
|
||||
; ATTRIBUTOR_HSA: attributes #[[ATTR11]] = { nounwind "amdgpu-queue-ptr" "uniform-work-group-size"="false" }
|
||||
; ATTRIBUTOR_HSA: attributes #[[ATTR1]] = { nounwind "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "uniform-work-group-size"="false" }
|
||||
; ATTRIBUTOR_HSA: attributes #[[ATTR2]] = { nounwind "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "uniform-work-group-size"="false" }
|
||||
; ATTRIBUTOR_HSA: attributes #[[ATTR3]] = { nounwind "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "uniform-work-group-size"="false" }
|
||||
; ATTRIBUTOR_HSA: attributes #[[ATTR4]] = { nounwind "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "uniform-work-group-size"="false" }
|
||||
; ATTRIBUTOR_HSA: attributes #[[ATTR5]] = { nounwind "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-z" "uniform-work-group-size"="false" }
|
||||
; ATTRIBUTOR_HSA: attributes #[[ATTR6]] = { nounwind "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "uniform-work-group-size"="false" }
|
||||
; ATTRIBUTOR_HSA: attributes #[[ATTR7]] = { nounwind "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-z" "uniform-work-group-size"="false" }
|
||||
; ATTRIBUTOR_HSA: attributes #[[ATTR8]] = { nounwind "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "uniform-work-group-size"="false" }
|
||||
; ATTRIBUTOR_HSA: attributes #[[ATTR9]] = { nounwind "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workitem-id-x" "uniform-work-group-size"="false" }
|
||||
; ATTRIBUTOR_HSA: attributes #[[ATTR10]] = { nounwind "amdgpu-no-dispatch-id" "amdgpu-no-implicitarg-ptr" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "uniform-work-group-size"="false" }
|
||||
; ATTRIBUTOR_HSA: attributes #[[ATTR11]] = { nounwind "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "uniform-work-group-size"="false" }
|
||||
;.
|
||||
|
|
|
@ -326,13 +326,13 @@ attributes #1 = { nounwind }
|
|||
; AKF_CHECK: attributes #[[ATTR9]] = { nounwind "amdgpu-work-group-id-y" "amdgpu-work-group-id-z" "amdgpu-work-item-id-y" "amdgpu-work-item-id-z" }
|
||||
;.
|
||||
; ATTRIBUTOR_CHECK: attributes #[[ATTR0:[0-9]+]] = { nounwind readnone speculatable willreturn }
|
||||
; ATTRIBUTOR_CHECK: attributes #[[ATTR1]] = { nounwind "uniform-work-group-size"="false" }
|
||||
; ATTRIBUTOR_CHECK: attributes #[[ATTR2]] = { nounwind "amdgpu-work-group-id-y" "uniform-work-group-size"="false" }
|
||||
; ATTRIBUTOR_CHECK: attributes #[[ATTR3]] = { nounwind "amdgpu-work-group-id-z" "uniform-work-group-size"="false" }
|
||||
; ATTRIBUTOR_CHECK: attributes #[[ATTR4]] = { nounwind "amdgpu-work-group-id-y" "amdgpu-work-group-id-z" "uniform-work-group-size"="false" }
|
||||
; ATTRIBUTOR_CHECK: attributes #[[ATTR5]] = { nounwind "amdgpu-work-item-id-y" "uniform-work-group-size"="false" }
|
||||
; ATTRIBUTOR_CHECK: attributes #[[ATTR6]] = { nounwind "amdgpu-work-item-id-z" "uniform-work-group-size"="false" }
|
||||
; ATTRIBUTOR_CHECK: attributes #[[ATTR7]] = { nounwind "amdgpu-work-group-id-y" "amdgpu-work-item-id-y" "uniform-work-group-size"="false" }
|
||||
; ATTRIBUTOR_CHECK: attributes #[[ATTR8]] = { nounwind "amdgpu-work-item-id-y" "amdgpu-work-item-id-z" "uniform-work-group-size"="false" }
|
||||
; ATTRIBUTOR_CHECK: attributes #[[ATTR9]] = { nounwind "amdgpu-work-group-id-y" "amdgpu-work-group-id-z" "amdgpu-work-item-id-y" "amdgpu-work-item-id-z" "uniform-work-group-size"="false" }
|
||||
; ATTRIBUTOR_CHECK: attributes #[[ATTR1]] = { nounwind "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "uniform-work-group-size"="false" }
|
||||
; ATTRIBUTOR_CHECK: attributes #[[ATTR2]] = { nounwind "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "uniform-work-group-size"="false" }
|
||||
; ATTRIBUTOR_CHECK: attributes #[[ATTR3]] = { nounwind "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "uniform-work-group-size"="false" }
|
||||
; ATTRIBUTOR_CHECK: attributes #[[ATTR4]] = { nounwind "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "uniform-work-group-size"="false" }
|
||||
; ATTRIBUTOR_CHECK: attributes #[[ATTR5]] = { nounwind "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-z" "uniform-work-group-size"="false" }
|
||||
; ATTRIBUTOR_CHECK: attributes #[[ATTR6]] = { nounwind "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "uniform-work-group-size"="false" }
|
||||
; ATTRIBUTOR_CHECK: attributes #[[ATTR7]] = { nounwind "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-z" "uniform-work-group-size"="false" }
|
||||
; ATTRIBUTOR_CHECK: attributes #[[ATTR8]] = { nounwind "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "uniform-work-group-size"="false" }
|
||||
; ATTRIBUTOR_CHECK: attributes #[[ATTR9]] = { nounwind "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workitem-id-x" "uniform-work-group-size"="false" }
|
||||
;.
|
||||
|
|
|
@ -11,21 +11,13 @@ define internal void @indirect() {
|
|||
}
|
||||
|
||||
define internal void @direct() {
|
||||
; AKF_GCN-LABEL: define {{[^@]+}}@direct
|
||||
; AKF_GCN-SAME: () #[[ATTR1:[0-9]+]] {
|
||||
; AKF_GCN-NEXT: [[FPTR:%.*]] = alloca void ()*, align 8
|
||||
; AKF_GCN-NEXT: store void ()* @indirect, void ()** [[FPTR]], align 8
|
||||
; AKF_GCN-NEXT: [[FP:%.*]] = load void ()*, void ()** [[FPTR]], align 8
|
||||
; AKF_GCN-NEXT: call void [[FP]]()
|
||||
; AKF_GCN-NEXT: ret void
|
||||
;
|
||||
; ATTRIBUTOR_GCN-LABEL: define {{[^@]+}}@direct
|
||||
; ATTRIBUTOR_GCN-SAME: () #[[ATTR0]] {
|
||||
; ATTRIBUTOR_GCN-NEXT: [[FPTR:%.*]] = alloca void ()*, align 8
|
||||
; ATTRIBUTOR_GCN-NEXT: store void ()* @indirect, void ()** [[FPTR]], align 8
|
||||
; ATTRIBUTOR_GCN-NEXT: [[FP:%.*]] = load void ()*, void ()** [[FPTR]], align 8
|
||||
; ATTRIBUTOR_GCN-NEXT: call void [[FP]]()
|
||||
; ATTRIBUTOR_GCN-NEXT: ret void
|
||||
; GCN-LABEL: define {{[^@]+}}@direct
|
||||
; GCN-SAME: () #[[ATTR1:[0-9]+]] {
|
||||
; GCN-NEXT: [[FPTR:%.*]] = alloca void ()*, align 8
|
||||
; GCN-NEXT: store void ()* @indirect, void ()** [[FPTR]], align 8
|
||||
; GCN-NEXT: [[FP:%.*]] = load void ()*, void ()** [[FPTR]], align 8
|
||||
; GCN-NEXT: call void [[FP]]()
|
||||
; GCN-NEXT: ret void
|
||||
;
|
||||
%fptr = alloca void()*
|
||||
store void()* @indirect, void()** %fptr
|
||||
|
@ -41,7 +33,7 @@ define amdgpu_kernel void @test_direct_indirect_call() {
|
|||
; AKF_GCN-NEXT: ret void
|
||||
;
|
||||
; ATTRIBUTOR_GCN-LABEL: define {{[^@]+}}@test_direct_indirect_call
|
||||
; ATTRIBUTOR_GCN-SAME: () #[[ATTR0]] {
|
||||
; ATTRIBUTOR_GCN-SAME: () #[[ATTR1]] {
|
||||
; ATTRIBUTOR_GCN-NEXT: call void @direct()
|
||||
; ATTRIBUTOR_GCN-NEXT: ret void
|
||||
;
|
||||
|
@ -53,5 +45,6 @@ define amdgpu_kernel void @test_direct_indirect_call() {
|
|||
; AKF_GCN: attributes #[[ATTR1]] = { "amdgpu-dispatch-id" "amdgpu-dispatch-ptr" "amdgpu-implicitarg-ptr" "amdgpu-queue-ptr" "amdgpu-stack-objects" "amdgpu-work-group-id-x" "amdgpu-work-group-id-y" "amdgpu-work-group-id-z" "amdgpu-work-item-id-x" "amdgpu-work-item-id-y" "amdgpu-work-item-id-z" "uniform-work-group-size"="false" }
|
||||
; AKF_GCN: attributes #[[ATTR2]] = { "amdgpu-calls" "amdgpu-dispatch-id" "amdgpu-dispatch-ptr" "amdgpu-implicitarg-ptr" "amdgpu-queue-ptr" "amdgpu-work-group-id-x" "amdgpu-work-group-id-y" "amdgpu-work-group-id-z" "amdgpu-work-item-id-x" "amdgpu-work-item-id-y" "amdgpu-work-item-id-z" "uniform-work-group-size"="false" }
|
||||
;.
|
||||
; ATTRIBUTOR_GCN: attributes #[[ATTR0]] = { "amdgpu-dispatch-id" "amdgpu-dispatch-ptr" "amdgpu-implicitarg-ptr" "amdgpu-queue-ptr" "amdgpu-work-group-id-x" "amdgpu-work-group-id-y" "amdgpu-work-group-id-z" "amdgpu-work-item-id-x" "amdgpu-work-item-id-y" "amdgpu-work-item-id-z" "uniform-work-group-size"="false" }
|
||||
; ATTRIBUTOR_GCN: attributes #[[ATTR0]] = { "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "uniform-work-group-size"="false" }
|
||||
; ATTRIBUTOR_GCN: attributes #[[ATTR1]] = { "uniform-work-group-size"="false" }
|
||||
;.
|
||||
|
|
|
@ -14,21 +14,13 @@ define internal void @indirect() {
|
|||
}
|
||||
|
||||
define amdgpu_kernel void @test_simple_indirect_call() #0 {
|
||||
; AKF_GCN-LABEL: define {{[^@]+}}@test_simple_indirect_call
|
||||
; AKF_GCN-SAME: () #[[ATTR1:[0-9]+]] {
|
||||
; AKF_GCN-NEXT: [[FPTR:%.*]] = alloca void ()*, align 8
|
||||
; AKF_GCN-NEXT: store void ()* @indirect, void ()** [[FPTR]], align 8
|
||||
; AKF_GCN-NEXT: [[FP:%.*]] = load void ()*, void ()** [[FPTR]], align 8
|
||||
; AKF_GCN-NEXT: call void [[FP]]()
|
||||
; AKF_GCN-NEXT: ret void
|
||||
;
|
||||
; ATTRIBUTOR_GCN-LABEL: define {{[^@]+}}@test_simple_indirect_call
|
||||
; ATTRIBUTOR_GCN-SAME: () #[[ATTR0]] {
|
||||
; ATTRIBUTOR_GCN-NEXT: [[FPTR:%.*]] = alloca void ()*, align 8
|
||||
; ATTRIBUTOR_GCN-NEXT: store void ()* @indirect, void ()** [[FPTR]], align 8
|
||||
; ATTRIBUTOR_GCN-NEXT: [[FP:%.*]] = load void ()*, void ()** [[FPTR]], align 8
|
||||
; ATTRIBUTOR_GCN-NEXT: call void [[FP]]()
|
||||
; ATTRIBUTOR_GCN-NEXT: ret void
|
||||
; GCN-LABEL: define {{[^@]+}}@test_simple_indirect_call
|
||||
; GCN-SAME: () #[[ATTR1:[0-9]+]] {
|
||||
; GCN-NEXT: [[FPTR:%.*]] = alloca void ()*, align 8
|
||||
; GCN-NEXT: store void ()* @indirect, void ()** [[FPTR]], align 8
|
||||
; GCN-NEXT: [[FP:%.*]] = load void ()*, void ()** [[FPTR]], align 8
|
||||
; GCN-NEXT: call void [[FP]]()
|
||||
; GCN-NEXT: ret void
|
||||
;
|
||||
; CHECK-LABEL: define {{[^@]+}}@test_simple_indirect_call
|
||||
; CHECK-SAME: () #[[ATTR1:[0-9]+]] {
|
||||
|
@ -44,11 +36,13 @@ define amdgpu_kernel void @test_simple_indirect_call() #0 {
|
|||
ret void
|
||||
}
|
||||
|
||||
; FIXME: Switch this to no-dispatch-id
|
||||
attributes #0 = { "amdgpu-dispatch-id" }
|
||||
|
||||
;.
|
||||
; AKF_GCN: attributes #[[ATTR0]] = { "amdgpu-dispatch-id" "amdgpu-dispatch-ptr" "amdgpu-implicitarg-ptr" "amdgpu-queue-ptr" "amdgpu-work-group-id-x" "amdgpu-work-group-id-y" "amdgpu-work-group-id-z" "amdgpu-work-item-id-x" "amdgpu-work-item-id-y" "amdgpu-work-item-id-z" }
|
||||
; AKF_GCN: attributes #[[ATTR1]] = { "amdgpu-calls" "amdgpu-dispatch-id" "amdgpu-dispatch-ptr" "amdgpu-implicitarg-ptr" "amdgpu-queue-ptr" "amdgpu-stack-objects" "amdgpu-work-group-id-x" "amdgpu-work-group-id-y" "amdgpu-work-group-id-z" "amdgpu-work-item-id-x" "amdgpu-work-item-id-y" "amdgpu-work-item-id-z" }
|
||||
;.
|
||||
; ATTRIBUTOR_GCN: attributes #[[ATTR0]] = { "amdgpu-dispatch-id" "amdgpu-dispatch-ptr" "amdgpu-implicitarg-ptr" "amdgpu-queue-ptr" "amdgpu-work-group-id-x" "amdgpu-work-group-id-y" "amdgpu-work-group-id-z" "amdgpu-work-item-id-x" "amdgpu-work-item-id-y" "amdgpu-work-item-id-z" "uniform-work-group-size"="false" }
|
||||
; ATTRIBUTOR_GCN: attributes #[[ATTR0]] = { "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "uniform-work-group-size"="false" }
|
||||
; ATTRIBUTOR_GCN: attributes #[[ATTR1]] = { "amdgpu-dispatch-id" "uniform-work-group-size"="false" }
|
||||
;.
|
||||
|
|
|
@ -73,5 +73,5 @@ define amdgpu_kernel void @test_simple_indirect_call() {
|
|||
; AKF_GCN: attributes #[[ATTR0]] = { "amdgpu-dispatch-id" "amdgpu-dispatch-ptr" "amdgpu-implicitarg-ptr" "amdgpu-queue-ptr" "amdgpu-work-group-id-x" "amdgpu-work-group-id-y" "amdgpu-work-group-id-z" "amdgpu-work-item-id-x" "amdgpu-work-item-id-y" "amdgpu-work-item-id-z" }
|
||||
; AKF_GCN: attributes #[[ATTR1]] = { "amdgpu-calls" "amdgpu-dispatch-id" "amdgpu-dispatch-ptr" "amdgpu-implicitarg-ptr" "amdgpu-queue-ptr" "amdgpu-stack-objects" "amdgpu-work-group-id-x" "amdgpu-work-group-id-y" "amdgpu-work-group-id-z" "amdgpu-work-item-id-x" "amdgpu-work-item-id-y" "amdgpu-work-item-id-z" }
|
||||
;.
|
||||
; ATTRIBUTOR_GCN: attributes #[[ATTR0]] = { "amdgpu-dispatch-id" "amdgpu-dispatch-ptr" "amdgpu-implicitarg-ptr" "amdgpu-queue-ptr" "amdgpu-work-group-id-x" "amdgpu-work-group-id-y" "amdgpu-work-group-id-z" "amdgpu-work-item-id-x" "amdgpu-work-item-id-y" "amdgpu-work-item-id-z" "uniform-work-group-size"="false" }
|
||||
; ATTRIBUTOR_GCN: attributes #[[ATTR0]] = { "uniform-work-group-size"="false" }
|
||||
;.
|
||||
|
|
|
@ -40,5 +40,5 @@ attributes #0 = { "uniform-work-group-size"="true" }
|
|||
; AKF_CHECK: attributes #[[ATTR0]] = { "uniform-work-group-size"="false" }
|
||||
; AKF_CHECK: attributes #[[ATTR1]] = { "amdgpu-calls" "uniform-work-group-size"="false" }
|
||||
;.
|
||||
; ATTRIBUTOR_CHECK: attributes #[[ATTR0]] = { "uniform-work-group-size"="false" }
|
||||
; ATTRIBUTOR_CHECK: attributes #[[ATTR0]] = { "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "uniform-work-group-size"="false" }
|
||||
;.
|
||||
|
|
|
@ -125,6 +125,6 @@ attributes #0 = { "uniform-work-group-size"="true" }
|
|||
; AKF_CHECK: attributes #[[ATTR1]] = { "amdgpu-calls" "uniform-work-group-size"="true" }
|
||||
; AKF_CHECK: attributes #[[ATTR2]] = { "uniform-work-group-size"="true" }
|
||||
;.
|
||||
; ATTRIBUTOR_CHECK: attributes #[[ATTR0]] = { "uniform-work-group-size"="false" }
|
||||
; ATTRIBUTOR_CHECK: attributes #[[ATTR1]] = { "uniform-work-group-size"="true" }
|
||||
; ATTRIBUTOR_CHECK: attributes #[[ATTR0]] = { "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "uniform-work-group-size"="false" }
|
||||
; ATTRIBUTOR_CHECK: attributes #[[ATTR1]] = { "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "uniform-work-group-size"="true" }
|
||||
;.
|
||||
|
|
|
@ -62,6 +62,6 @@ attributes #2 = { "uniform-work-group-size"="true" }
|
|||
; AKF_CHECK: attributes #[[ATTR0]] = { "uniform-work-group-size"="true" }
|
||||
; AKF_CHECK: attributes #[[ATTR1]] = { "amdgpu-calls" "uniform-work-group-size"="true" }
|
||||
;.
|
||||
; ATTRIBUTOR_CHECK: attributes #[[ATTR0]] = { "uniform-work-group-size"="false" }
|
||||
; ATTRIBUTOR_CHECK: attributes #[[ATTR1]] = { "uniform-work-group-size"="true" }
|
||||
; ATTRIBUTOR_CHECK: attributes #[[ATTR0]] = { "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "uniform-work-group-size"="false" }
|
||||
; ATTRIBUTOR_CHECK: attributes #[[ATTR1]] = { "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "uniform-work-group-size"="true" }
|
||||
;.
|
||||
|
|
|
@ -53,6 +53,6 @@ attributes #1 = { "uniform-work-group-size"="true" }
|
|||
; AKF_CHECK: attributes #[[ATTR1]] = { "amdgpu-calls" "uniform-work-group-size"="true" }
|
||||
; AKF_CHECK: attributes #[[ATTR2]] = { "amdgpu-calls" "uniform-work-group-size"="false" }
|
||||
;.
|
||||
; ATTRIBUTOR_CHECK: attributes #[[ATTR0]] = { "uniform-work-group-size"="false" }
|
||||
; ATTRIBUTOR_CHECK: attributes #[[ATTR1]] = { "uniform-work-group-size"="true" }
|
||||
; ATTRIBUTOR_CHECK: attributes #[[ATTR0]] = { "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "uniform-work-group-size"="false" }
|
||||
; ATTRIBUTOR_CHECK: attributes #[[ATTR1]] = { "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "uniform-work-group-size"="true" }
|
||||
;.
|
||||
|
|
|
@ -57,7 +57,7 @@ attributes #2 = { "uniform-work-group-size"="true" }
|
|||
; AKF_CHECK: attributes #[[ATTR1]] = { "amdgpu-calls" "uniform-work-group-size"="false" }
|
||||
; AKF_CHECK: attributes #[[ATTR2]] = { "amdgpu-calls" "uniform-work-group-size"="true" }
|
||||
;.
|
||||
; ATTRIBUTOR_CHECK: attributes #[[ATTR0]] = { nounwind "uniform-work-group-size"="false" }
|
||||
; ATTRIBUTOR_CHECK: attributes #[[ATTR1]] = { "uniform-work-group-size"="false" }
|
||||
; ATTRIBUTOR_CHECK: attributes #[[ATTR2]] = { "uniform-work-group-size"="true" }
|
||||
; ATTRIBUTOR_CHECK: attributes #[[ATTR0]] = { nounwind "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "uniform-work-group-size"="false" }
|
||||
; ATTRIBUTOR_CHECK: attributes #[[ATTR1]] = { "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "uniform-work-group-size"="false" }
|
||||
; ATTRIBUTOR_CHECK: attributes #[[ATTR2]] = { "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "uniform-work-group-size"="true" }
|
||||
;.
|
||||
|
|
|
@ -131,7 +131,7 @@ attributes #1 = { "uniform-work-group-size"="true" }
|
|||
; AKF_CHECK: attributes #[[ATTR0]] = { nounwind readnone "uniform-work-group-size"="true" }
|
||||
; AKF_CHECK: attributes #[[ATTR1]] = { "amdgpu-calls" "uniform-work-group-size"="true" }
|
||||
;.
|
||||
; ATTRIBUTOR_CHECK: attributes #[[ATTR0]] = { nounwind readnone "uniform-work-group-size"="false" }
|
||||
; ATTRIBUTOR_CHECK: attributes #[[ATTR1]] = { nounwind readnone "uniform-work-group-size"="true" }
|
||||
; ATTRIBUTOR_CHECK: attributes #[[ATTR2]] = { "uniform-work-group-size"="true" }
|
||||
; ATTRIBUTOR_CHECK: attributes #[[ATTR0]] = { nounwind readnone "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "uniform-work-group-size"="false" }
|
||||
; ATTRIBUTOR_CHECK: attributes #[[ATTR1]] = { nounwind readnone "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "uniform-work-group-size"="true" }
|
||||
; ATTRIBUTOR_CHECK: attributes #[[ATTR2]] = { "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "uniform-work-group-size"="true" }
|
||||
;.
|
||||
|
|
|
@ -71,5 +71,5 @@ attributes #0 = { "uniform-work-group-size"="false" }
|
|||
; AKF_CHECK: attributes #[[ATTR0]] = { "uniform-work-group-size"="false" }
|
||||
; AKF_CHECK: attributes #[[ATTR1]] = { "amdgpu-calls" "uniform-work-group-size"="false" }
|
||||
;.
|
||||
; ATTRIBUTOR_CHECK: attributes #[[ATTR0]] = { "uniform-work-group-size"="false" }
|
||||
; ATTRIBUTOR_CHECK: attributes #[[ATTR0]] = { "amdgpu-no-dispatch-id" "amdgpu-no-dispatch-ptr" "amdgpu-no-implicitarg-ptr" "amdgpu-no-queue-ptr" "amdgpu-no-workgroup-id-x" "amdgpu-no-workgroup-id-y" "amdgpu-no-workgroup-id-z" "amdgpu-no-workitem-id-x" "amdgpu-no-workitem-id-y" "amdgpu-no-workitem-id-z" "uniform-work-group-size"="false" }
|
||||
;.
|
||||
|
|
Loading…
Reference in New Issue