Skip to content

Commit

Permalink
Simplify calls to Builder::ReadBuiltInInput.
Browse files Browse the repository at this point in the history
In many places, we are calling Builder::CreateReadBuiltInInput with
default arguments, cluttering the call signature. This change simplifies
that a bit by adding default arguments to the declaration.
  • Loading branch information
tsymalla-AMD committed Dec 14, 2023
1 parent 2fcce3b commit 96fda75
Show file tree
Hide file tree
Showing 6 changed files with 13 additions and 18 deletions.
4 changes: 2 additions & 2 deletions lgc/interface/lgc/Builder.h
Original file line number Diff line number Diff line change
Expand Up @@ -1261,8 +1261,8 @@ class Builder : public BuilderDefs {
// @param vertexIndex : For TCS/TES/GS per-vertex input: vertex index, else nullptr
// @param index : Array or vector index to access part of an input, else nullptr
// @param instName : Name to give instruction(s)
llvm::Value *CreateReadBuiltInInput(BuiltInKind builtIn, InOutInfo inputInfo, llvm::Value *vertexIndex,
llvm::Value *index, const llvm::Twine &instName = "");
llvm::Value *CreateReadBuiltInInput(BuiltInKind builtIn, InOutInfo inputInfo = {}, llvm::Value *vertexIndex = nullptr,
llvm::Value *index = nullptr, const llvm::Twine &instName = "");

// Create a read of (part of) a built-in output value.
// The type of the returned value is the fixed type of the specified built-in (see BuiltInDefs.h),
Expand Down
3 changes: 1 addition & 2 deletions lgc/patch/LowerGpuRt.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -118,8 +118,7 @@ unsigned LowerGpuRt::getWorkgroupSize() const {
Value *LowerGpuRt::getThreadIdInGroup() const {
// Todo: for graphics shader, subgroupId * waveSize + subgroupLocalInvocationId()
unsigned builtIn = m_pipelineState->isGraphics() ? BuiltInSubgroupLocalInvocationId : BuiltInLocalInvocationIndex;
InOutInfo inputInfo = {};
return m_builder->CreateReadBuiltInInput(static_cast<BuiltInKind>(builtIn), inputInfo, nullptr, nullptr, "");
return m_builder->CreateReadBuiltInInput(static_cast<BuiltInKind>(builtIn));
}

// =====================================================================================================================
Expand Down
4 changes: 2 additions & 2 deletions llpc/lower/llpcSpirvLowerGlobal.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1125,8 +1125,8 @@ Value *SpirvLowerGlobal::addCallInstForInOutImport(Type *inOutTy, unsigned addrS
inOutInfo.setInterpLoc(interpLoc);
assert(!inOutMeta.PerPrimitive); // No per-primitive arrayed built-in
if (addrSpace == SPIRAS_Input) {
inOutValue = m_builder->CreateReadBuiltInInput(static_cast<lgc::BuiltInKind>(inOutMeta.Value), inOutInfo,
vertexIdx, nullptr);
inOutValue =
m_builder->CreateReadBuiltInInput(static_cast<lgc::BuiltInKind>(inOutMeta.Value), inOutInfo, vertexIdx);
} else {
inOutValue = m_builder->CreateReadBuiltInOutput(static_cast<lgc::BuiltInKind>(inOutMeta.Value), inOutInfo,
vertexIdx, nullptr);
Expand Down
3 changes: 1 addition & 2 deletions llpc/lower/llpcSpirvLowerInternalLibraryIntrinsicUtil.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -45,8 +45,7 @@ namespace Llpc {
// @param func : The function to process
// @param builder : The IR builder
static void createLaneIndex(Function *func, Builder *builder) {
builder->CreateRet(builder->CreateReadBuiltInInput(static_cast<lgc::BuiltInKind>(BuiltInSubgroupLocalInvocationId),
{}, nullptr, nullptr, ""));
builder->CreateRet(builder->CreateReadBuiltInInput(static_cast<lgc::BuiltInKind>(BuiltInSubgroupLocalInvocationId)));
}

// =====================================================================================================================
Expand Down
12 changes: 5 additions & 7 deletions llpc/lower/llpcSpirvLowerRayQuery.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -500,17 +500,16 @@ template <> void SpirvLowerRayQuery::createRayQueryFunc<OpRayQueryInitializeKHR>
Value *SpirvLowerRayQuery::getDispatchId() {
Value *zero = m_builder->getInt32(0);
Value *dispatchId = nullptr;
lgc::InOutInfo inputInfo = {};
// Local thread ID for graphics shader Stage, global thread ID for compute/raytracing shader stage
if (m_shaderStage < ShaderStageCompute) {
auto subThreadId =
m_builder->CreateReadBuiltInInput(lgc::BuiltInSubgroupLocalInvocationId, inputInfo, nullptr, nullptr, "");
auto subThreadId = m_builder->CreateReadBuiltInInput(lgc::BuiltInSubgroupLocalInvocationId);
dispatchId = PoisonValue::get(FixedVectorType::get(m_builder->getInt32Ty(), 3));
dispatchId = m_builder->CreateInsertElement(dispatchId, subThreadId, uint64_t(0));
dispatchId = m_builder->CreateInsertElement(dispatchId, zero, 1);
dispatchId = m_builder->CreateInsertElement(dispatchId, zero, 2);
} else
dispatchId = m_builder->CreateReadBuiltInInput(lgc::BuiltInGlobalInvocationId, inputInfo, nullptr, nullptr, "");
} else {
dispatchId = m_builder->CreateReadBuiltInInput(lgc::BuiltInGlobalInvocationId);
}

return dispatchId;
}
Expand Down Expand Up @@ -1421,8 +1420,7 @@ Value *SpirvLowerRayQuery::getThreadIdInGroup() const {
// Todo: for graphics shader, subgroupId * waveSize + subgroupLocalInvocationId()
unsigned builtIn = m_context->getPipelineType() == PipelineType::Graphics ? BuiltInSubgroupLocalInvocationId
: BuiltInLocalInvocationIndex;
lgc::InOutInfo inputInfo = {};
return m_builder->CreateReadBuiltInInput(static_cast<lgc::BuiltInKind>(builtIn), inputInfo, nullptr, nullptr, "");
return m_builder->CreateReadBuiltInInput(static_cast<lgc::BuiltInKind>(builtIn));
}

} // namespace Llpc
5 changes: 2 additions & 3 deletions llpc/lower/llpcSpirvLowerRayTracing.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1260,8 +1260,7 @@ void SpirvLowerRayTracing::createRayGenEntryFunc() {
createDispatchRaysInfoDesc();
Value *launchSize = loadShaderTableVariable(ShaderTable::LaunchSize, m_dispatchRaysInfoDesc);
auto builtIn = lgc::BuiltInGlobalInvocationId;
lgc::InOutInfo inputInfo = {};
auto launchlId = m_builder->CreateReadBuiltInInput(builtIn, inputInfo, nullptr, nullptr, "");
auto launchlId = m_builder->CreateReadBuiltInInput(builtIn);
auto launchSizeX = m_builder->CreateExtractElement(launchSize, uint64_t(0));
auto launchSizeY = m_builder->CreateExtractElement(launchSize, 1);
auto launchIdX = m_builder->CreateExtractElement(launchlId, uint64_t(0));
Expand Down Expand Up @@ -2633,7 +2632,7 @@ void SpirvLowerRayTracing::visitSetParentId(lgc::GpurtSetParentIdOp &inst) {
void SpirvLowerRayTracing::visitDispatchRayIndex(lgc::rt::DispatchRaysIndexOp &inst) {
m_builder->SetInsertPoint(&inst);

auto dispatchRayIndex = m_builder->CreateReadBuiltInInput(lgc::BuiltInGlobalInvocationId, {}, nullptr, nullptr, "");
auto dispatchRayIndex = m_builder->CreateReadBuiltInInput(lgc::BuiltInGlobalInvocationId);
inst.replaceAllUsesWith(dispatchRayIndex);

m_callsToLower.push_back(&inst);
Expand Down

0 comments on commit 96fda75

Please sign in to comment.