Skip to content

Commit

Permalink
add back dyn_cast
Browse files Browse the repository at this point in the history
  • Loading branch information
bob80905 committed Nov 30, 2023
1 parent cd91838 commit 46af4ea
Showing 1 changed file with 20 additions and 19 deletions.
39 changes: 20 additions & 19 deletions lib/HLSL/HLOperationLower.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -9463,25 +9463,26 @@ void EmitGetNodeRecordPtrAndUpdateUsers(HLOperationLowerHelper &helper,
Value *opArg = nullptr;
Value *Handle = CI->getArgOperand(HLOperandIndex::kHandleOpIdx);
opArg = Builder.getInt32((unsigned)DXIL::OpCode::GetNodeRecordPtr);
StructType *origRecordUDT =
cast<StructType>(cast<PointerType>(CI->getType())->getElementType());
Type *getNodeRecordPtrRT = origRecordUDT;
// Translate node record type here
auto findIt = helper.loweredTypes.find(origRecordUDT);
if (findIt != helper.loweredTypes.end()) {
getNodeRecordPtrRT = findIt->second;
} else {
getNodeRecordPtrRT = GetLoweredUDT(origRecordUDT, &helper.dxilTypeSys);
if (origRecordUDT != getNodeRecordPtrRT)
helper.loweredTypes[origRecordUDT] = getNodeRecordPtrRT;
}
getNodeRecordPtrRT =
getNodeRecordPtrRT->getPointerTo(DXIL::kNodeRecordAddrSpace);
Function *getNodeRecordPtr = helper.hlslOP.GetOpFunc(
DXIL::OpCode::GetNodeRecordPtr, getNodeRecordPtrRT);
Value *args[] = {opArg, Handle, ArrayIndex};
Value *NodeRecordPtr = Builder.CreateCall(getNodeRecordPtr, args);
ReplaceUsesForLoweredUDT(CI, NodeRecordPtr);
PointerType *pTy = cast<PointerType>(CI->getType());
if (StructType *origRecordUDT = dyn_cast<StructType>(pTy->getElementType())) {
Type *getNodeRecordPtrRT = origRecordUDT;
// Translate node record type here
auto findIt = helper.loweredTypes.find(origRecordUDT);
if (findIt != helper.loweredTypes.end()) {
getNodeRecordPtrRT = findIt->second;
} else {
getNodeRecordPtrRT = GetLoweredUDT(origRecordUDT, &helper.dxilTypeSys);
if (origRecordUDT != getNodeRecordPtrRT)
helper.loweredTypes[origRecordUDT] = getNodeRecordPtrRT;
}
getNodeRecordPtrRT =
getNodeRecordPtrRT->getPointerTo(DXIL::kNodeRecordAddrSpace);
Function *getNodeRecordPtr = helper.hlslOP.GetOpFunc(
DXIL::OpCode::GetNodeRecordPtr, getNodeRecordPtrRT);
Value *args[] = {opArg, Handle, ArrayIndex};
Value *NodeRecordPtr = Builder.CreateCall(getNodeRecordPtr, args);
ReplaceUsesForLoweredUDT(CI, NodeRecordPtr);
}
}

void LowerRecordAccessToGetNodeRecordPtr(HLModule &HLM) {
Expand Down

0 comments on commit 46af4ea

Please sign in to comment.