Skip to content

Commit

Permalink
With this change, I am moving 3 metadata variables from the old
Browse files Browse the repository at this point in the history
framework to the new framework.

In the old framework they were :

MetaDataList<int32_t> m_BufferLocationIndex;
MetaDataList<int32_t> m_BufferLocationCount;
MetaDataList<bool> m_IsEmulationArgument;

Refactored some portions of the front end in order to facilitate this
transition

Change-Id: I5de53768e0939cd85f8156f279d0ebf274cfb01d
  • Loading branch information
Rishipal Singh Bhatia authored and gfxbot committed Feb 14, 2019
1 parent 295b76a commit fb7c719
Show file tree
Hide file tree
Showing 9 changed files with 45 additions and 326 deletions.
4 changes: 2 additions & 2 deletions IGC/Compiler/CISACodeGen/OpenCLKernelCodeGen.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1439,7 +1439,7 @@ void COpenCLKernel::AllocatePayload()
KernelArgsOrder::InputType::INDIRECT :
KernelArgsOrder::InputType::CURBE;

KernelArgs kernelArgs(*entry, m_DL, m_pMdUtils, layout, m_ModuleMetadata);
KernelArgs kernelArgs(*entry, m_DL, m_pMdUtils, m_ModuleMetadata, layout);

if (layout == KernelArgsOrder::InputType::INDIRECT && !loadThreadPayload)
{
Expand Down Expand Up @@ -2008,7 +2008,7 @@ bool COpenCLKernel::hasReadWriteImage(llvm::Function &F)
return false;
}

KernelArgs kernelArgs(F, m_DL, m_pMdUtils, KernelArgsOrder::InputType::INDEPENDENT, m_ModuleMetadata);
KernelArgs kernelArgs(F, m_DL, m_pMdUtils, m_ModuleMetadata, KernelArgsOrder::InputType::INDEPENDENT);
for (auto KA : kernelArgs)
{
// RenderScript annotation sets "read_write" qualifier
Expand Down
110 changes: 3 additions & 107 deletions IGC/Compiler/MetaDataApi/MetaDataApi.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1901,9 +1901,7 @@ FunctionInfoMetaData::FunctionInfoMetaData(const llvm::MDNode* pNode, bool hasId
m_LocalOffsets(getLocalOffsetsNode(pNode), true),
m_ResourceAlloc(ResourceAllocMetaData::get(getResourceAllocNode(pNode), true)),
m_OpenCLVectorTypeHint(VectorTypeHintMetaData::get(getOpenCLVectorTypeHintNode(pNode), true)),
m_OpenCLArgAddressSpaces(getOpenCLArgAddressSpacesNode(pNode), true),
m_BufferLocationIndex(getBufferLocationIndexNode(pNode), true),
m_BufferLocationCount(getBufferLocationCountNode(pNode), true),
m_OpenCLArgAddressSpaces(getOpenCLArgAddressSpacesNode(pNode), true),
m_OpenCLArgAccessQualifiers(getOpenCLArgAccessQualifiersNode(pNode), true),
m_OpenCLArgTypes(getOpenCLArgTypesNode(pNode), true),
m_OpenCLArgBaseTypes(getOpenCLArgBaseTypesNode(pNode), true),
Expand All @@ -1925,9 +1923,6 @@ FunctionInfoMetaData::FunctionInfoMetaData(): m_Type("function_type"),
m_ResourceAlloc(ResourceAllocMetaDataHandle::ObjectType::get("resource_alloc")),
m_OpenCLVectorTypeHint(VectorTypeHintMetaDataHandle::ObjectType::get("opencl_vec_type_hint")),
m_OpenCLArgAddressSpaces("opencl_kernel_arg_addr_space"),
m_BufferLocationIndex("buffer_location_index"),
m_BufferLocationCount("buffer_location_count"),
m_IsEmulationArgument("is_emulation_argument"),
m_OpenCLArgAccessQualifiers("opencl_kernel_arg_access_qual"),
m_OpenCLArgTypes("opencl_kernel_arg_type"),
m_OpenCLArgBaseTypes("opencl_kernel_arg_base_type"),
Expand All @@ -1950,9 +1945,6 @@ FunctionInfoMetaData::FunctionInfoMetaData(const char* name):
m_ResourceAlloc(ResourceAllocMetaDataHandle::ObjectType::get("resource_alloc")),
m_OpenCLVectorTypeHint(VectorTypeHintMetaDataHandle::ObjectType::get("opencl_vec_type_hint")),
m_OpenCLArgAddressSpaces("opencl_kernel_arg_addr_space"),
m_BufferLocationIndex("buffer_location_index"),
m_BufferLocationCount("buffer_location_count"),
m_IsEmulationArgument("is_emulation_argument"),
m_OpenCLArgAccessQualifiers("opencl_kernel_arg_access_qual"),
m_OpenCLArgTypes("opencl_kernel_arg_type"),
m_OpenCLArgBaseTypes("opencl_kernel_arg_base_type"),
Expand Down Expand Up @@ -2019,20 +2011,7 @@ bool FunctionInfoMetaData::hasValue() const
{
return true;
}


if (m_BufferLocationIndex.hasValue())
{
return true;
}


if (m_BufferLocationCount.hasValue())
{
return true;
}



if (m_OpenCLArgAccessQualifiers.hasValue())
{
return true;
Expand Down Expand Up @@ -2107,15 +2086,7 @@ bool FunctionInfoMetaData::dirty() const
if( m_OpenCLArgAddressSpaces.dirty() )
{
return true;
}
if( m_BufferLocationIndex.dirty() )
{
return true;
}
if( m_BufferLocationCount.dirty() )
{
return true;
}
}
if( m_OpenCLArgAccessQualifiers.dirty() )
{
return true;
Expand Down Expand Up @@ -2153,9 +2124,6 @@ void FunctionInfoMetaData::discardChanges()
m_ResourceAlloc.discardChanges();
m_OpenCLVectorTypeHint.discardChanges();
m_OpenCLArgAddressSpaces.discardChanges();
m_BufferLocationIndex.discardChanges();
m_BufferLocationCount.discardChanges();
m_IsEmulationArgument.discardChanges();
m_OpenCLArgAccessQualifiers.discardChanges();
m_OpenCLArgTypes.discardChanges();
m_OpenCLArgBaseTypes.discardChanges();
Expand Down Expand Up @@ -2220,21 +2188,6 @@ llvm::Metadata* FunctionInfoMetaData::generateNode(llvm::LLVMContext& context) c
{
args.push_back(m_OpenCLArgAddressSpaces.generateNode(context));
}

if (isBufferLocationIndexHasValue())
{
args.push_back(m_BufferLocationIndex.generateNode(context));
}

if (isBufferLocationCountHasValue())
{
args.push_back(m_BufferLocationCount.generateNode(context));
}

if (isIsEmulationArgumentHasValue())
{
args.push_back(m_IsEmulationArgument.generateNode(context));
}

if (isOpenCLArgAccessQualifiersHasValue())
{
Expand Down Expand Up @@ -2294,9 +2247,6 @@ void FunctionInfoMetaData::save(llvm::LLVMContext& context, llvm::MDNode* pNode)
m_ResourceAlloc.save(context, llvm::cast<llvm::MDNode>(getResourceAllocNode(pNode)));
m_OpenCLVectorTypeHint.save(context, llvm::cast<llvm::MDNode>(getOpenCLVectorTypeHintNode(pNode)));
m_OpenCLArgAddressSpaces.save(context, llvm::cast<llvm::MDNode>(getOpenCLArgAddressSpacesNode(pNode)));
m_BufferLocationIndex.save(context, llvm::cast<llvm::MDNode>(getBufferLocationIndexNode(pNode)));
m_BufferLocationCount.save(context, llvm::cast<llvm::MDNode>(getBufferLocationCountNode(pNode)));
m_IsEmulationArgument.save(context, llvm::cast<llvm::MDNode>(getIsEmulationArgumentNode(pNode)));
m_OpenCLArgAccessQualifiers.save(context, llvm::cast<llvm::MDNode>(getOpenCLArgAccessQualifiersNode(pNode)));
m_OpenCLArgTypes.save(context, llvm::cast<llvm::MDNode>(getOpenCLArgTypesNode(pNode)));
m_OpenCLArgBaseTypes.save(context, llvm::cast<llvm::MDNode>(getOpenCLArgBaseTypesNode(pNode)));
Expand Down Expand Up @@ -2502,60 +2452,6 @@ llvm::MDNode* FunctionInfoMetaData::getOpenCLArgAddressSpacesNode( const llvm::M
return NULL;
}

llvm::MDNode* FunctionInfoMetaData::getBufferLocationIndexNode( const llvm::MDNode* pParentNode) const
{
if( !pParentNode )
{
return NULL;
}

unsigned int offset = _Mybase::getStartIndex();
for(NodeIterator i = NodeIterator(pParentNode, 0+offset), e = NodeIterator(pParentNode); i != e; ++i )
{
if( isNamedNode(i.get(), "buffer_location_index") )
{
return llvm::dyn_cast<llvm::MDNode>(i.get());
}
}
return NULL;
}

llvm::MDNode* FunctionInfoMetaData::getBufferLocationCountNode( const llvm::MDNode* pParentNode) const
{
if( !pParentNode )
{
return NULL;
}

unsigned int offset = _Mybase::getStartIndex();
for(NodeIterator i = NodeIterator(pParentNode, 0+offset), e = NodeIterator(pParentNode); i != e; ++i )
{
if( isNamedNode(i.get(), "buffer_location_count") )
{
return llvm::dyn_cast<llvm::MDNode>(i.get());
}
}
return NULL;
}

llvm::MDNode* FunctionInfoMetaData::getIsEmulationArgumentNode(const llvm::MDNode* pParentNode) const
{
if (!pParentNode)
{
return NULL;
}

unsigned int offset = _Mybase::getStartIndex();
for (NodeIterator i = NodeIterator(pParentNode, 0 + offset), e = NodeIterator(pParentNode); i != e; ++i)
{
if (isNamedNode(i.get(), "is_emulation_argument"))
{
return llvm::dyn_cast<llvm::MDNode>(i.get());
}
}
return NULL;
}

llvm::MDNode* FunctionInfoMetaData::getOpenCLArgAccessQualifiersNode( const llvm::MDNode* pParentNode) const
{
if( !pParentNode )
Expand Down

0 comments on commit fb7c719

Please sign in to comment.