forked from OSchip/llvm-project
[AMDGPU] Reformat SITargetLowering::isSDNodeSourceOfDivergence. NFC.
This commit is contained in:
parent
4ba00619ee
commit
d3a8e333ec
|
@ -11675,46 +11675,40 @@ static bool isCopyFromRegOfInlineAsm(const SDNode *N) {
|
|||
return false;
|
||||
}
|
||||
|
||||
bool SITargetLowering::isSDNodeSourceOfDivergence(const SDNode * N,
|
||||
FunctionLoweringInfo * FLI, LegacyDivergenceAnalysis * KDA) const
|
||||
{
|
||||
bool SITargetLowering::isSDNodeSourceOfDivergence(
|
||||
const SDNode *N, FunctionLoweringInfo *FLI,
|
||||
LegacyDivergenceAnalysis *KDA) const {
|
||||
switch (N->getOpcode()) {
|
||||
case ISD::CopyFromReg:
|
||||
{
|
||||
const RegisterSDNode *R = cast<RegisterSDNode>(N->getOperand(1));
|
||||
const MachineRegisterInfo &MRI = FLI->MF->getRegInfo();
|
||||
const SIRegisterInfo *TRI = Subtarget->getRegisterInfo();
|
||||
Register Reg = R->getReg();
|
||||
case ISD::CopyFromReg: {
|
||||
const RegisterSDNode *R = cast<RegisterSDNode>(N->getOperand(1));
|
||||
const MachineRegisterInfo &MRI = FLI->MF->getRegInfo();
|
||||
const SIRegisterInfo *TRI = Subtarget->getRegisterInfo();
|
||||
Register Reg = R->getReg();
|
||||
|
||||
// FIXME: Why does this need to consider isLiveIn?
|
||||
if (Reg.isPhysical() || MRI.isLiveIn(Reg))
|
||||
return !TRI->isSGPRReg(MRI, Reg);
|
||||
|
||||
if (const Value *V = FLI->getValueFromVirtualReg(R->getReg()))
|
||||
return KDA->isDivergent(V);
|
||||
|
||||
assert(Reg == FLI->DemoteRegister || isCopyFromRegOfInlineAsm(N));
|
||||
// FIXME: Why does this need to consider isLiveIn?
|
||||
if (Reg.isPhysical() || MRI.isLiveIn(Reg))
|
||||
return !TRI->isSGPRReg(MRI, Reg);
|
||||
}
|
||||
break;
|
||||
case ISD::LOAD: {
|
||||
const LoadSDNode *L = cast<LoadSDNode>(N);
|
||||
unsigned AS = L->getAddressSpace();
|
||||
// A flat load may access private memory.
|
||||
return AS == AMDGPUAS::PRIVATE_ADDRESS || AS == AMDGPUAS::FLAT_ADDRESS;
|
||||
} break;
|
||||
case ISD::CALLSEQ_END:
|
||||
return true;
|
||||
break;
|
||||
case ISD::INTRINSIC_WO_CHAIN:
|
||||
{
|
||||
|
||||
}
|
||||
return AMDGPU::isIntrinsicSourceOfDivergence(
|
||||
cast<ConstantSDNode>(N->getOperand(0))->getZExtValue());
|
||||
case ISD::INTRINSIC_W_CHAIN:
|
||||
return AMDGPU::isIntrinsicSourceOfDivergence(
|
||||
cast<ConstantSDNode>(N->getOperand(1))->getZExtValue());
|
||||
if (const Value *V = FLI->getValueFromVirtualReg(R->getReg()))
|
||||
return KDA->isDivergent(V);
|
||||
|
||||
assert(Reg == FLI->DemoteRegister || isCopyFromRegOfInlineAsm(N));
|
||||
return !TRI->isSGPRReg(MRI, Reg);
|
||||
}
|
||||
case ISD::LOAD: {
|
||||
const LoadSDNode *L = cast<LoadSDNode>(N);
|
||||
unsigned AS = L->getAddressSpace();
|
||||
// A flat load may access private memory.
|
||||
return AS == AMDGPUAS::PRIVATE_ADDRESS || AS == AMDGPUAS::FLAT_ADDRESS;
|
||||
}
|
||||
case ISD::CALLSEQ_END:
|
||||
return true;
|
||||
case ISD::INTRINSIC_WO_CHAIN:
|
||||
return AMDGPU::isIntrinsicSourceOfDivergence(
|
||||
cast<ConstantSDNode>(N->getOperand(0))->getZExtValue());
|
||||
case ISD::INTRINSIC_W_CHAIN:
|
||||
return AMDGPU::isIntrinsicSourceOfDivergence(
|
||||
cast<ConstantSDNode>(N->getOperand(1))->getZExtValue());
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue