Skip to content

Commit fe7dfa5

Browse files
committed
Move all CC helpers to header + constexpr
1 parent 84692ce commit fe7dfa5

File tree

2 files changed

+73
-84
lines changed

2 files changed

+73
-84
lines changed

llvm/lib/Target/AMDGPU/Utils/AMDGPUBaseInfo.cpp

Lines changed: 0 additions & 73 deletions
Original file line numberDiff line numberDiff line change
@@ -2124,79 +2124,6 @@ bool getHasDepthExport(const Function &F) {
21242124
return F.getFnAttributeAsParsedInteger("amdgpu-depth-export", 0) != 0;
21252125
}
21262126

2127-
bool isShader(CallingConv::ID cc) {
2128-
switch (cc) {
2129-
case CallingConv::AMDGPU_VS:
2130-
case CallingConv::AMDGPU_LS:
2131-
case CallingConv::AMDGPU_HS:
2132-
case CallingConv::AMDGPU_ES:
2133-
case CallingConv::AMDGPU_GS:
2134-
case CallingConv::AMDGPU_PS:
2135-
case CallingConv::AMDGPU_CS_Chain:
2136-
case CallingConv::AMDGPU_CS_ChainPreserve:
2137-
case CallingConv::AMDGPU_CS:
2138-
return true;
2139-
default:
2140-
return false;
2141-
}
2142-
}
2143-
2144-
bool isGraphics(CallingConv::ID cc) {
2145-
return isShader(cc) || cc == CallingConv::AMDGPU_Gfx;
2146-
}
2147-
2148-
bool isCompute(CallingConv::ID cc) {
2149-
return !isGraphics(cc) || cc == CallingConv::AMDGPU_CS;
2150-
}
2151-
2152-
bool isEntryFunctionCC(CallingConv::ID CC) {
2153-
switch (CC) {
2154-
case CallingConv::AMDGPU_KERNEL:
2155-
case CallingConv::SPIR_KERNEL:
2156-
case CallingConv::AMDGPU_VS:
2157-
case CallingConv::AMDGPU_GS:
2158-
case CallingConv::AMDGPU_PS:
2159-
case CallingConv::AMDGPU_CS:
2160-
case CallingConv::AMDGPU_ES:
2161-
case CallingConv::AMDGPU_HS:
2162-
case CallingConv::AMDGPU_LS:
2163-
return true;
2164-
default:
2165-
return false;
2166-
}
2167-
}
2168-
2169-
bool isModuleEntryFunctionCC(CallingConv::ID CC) {
2170-
switch (CC) {
2171-
case CallingConv::AMDGPU_Gfx:
2172-
return true;
2173-
default:
2174-
return isEntryFunctionCC(CC) || isChainCC(CC);
2175-
}
2176-
}
2177-
2178-
bool isChainCC(CallingConv::ID CC) {
2179-
switch (CC) {
2180-
case CallingConv::AMDGPU_CS_Chain:
2181-
case CallingConv::AMDGPU_CS_ChainPreserve:
2182-
return true;
2183-
default:
2184-
return false;
2185-
}
2186-
}
2187-
2188-
bool canGuaranteeTCO(CallingConv::ID CC) { return CC == CallingConv::Fast; }
2189-
2190-
bool mayTailCallThisCC(CallingConv::ID CC) {
2191-
switch (CC) {
2192-
case CallingConv::C:
2193-
case CallingConv::AMDGPU_Gfx:
2194-
return true;
2195-
default:
2196-
return canGuaranteeTCO(CC);
2197-
}
2198-
}
2199-
22002127
bool hasXNACK(const MCSubtargetInfo &STI) {
22012128
return STI.hasFeature(AMDGPU::FeatureXNACK);
22022129
}

llvm/lib/Target/AMDGPU/Utils/AMDGPUBaseInfo.h

Lines changed: 73 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1306,16 +1306,61 @@ bool getHasColorExport(const Function &F);
13061306
bool getHasDepthExport(const Function &F);
13071307

13081308
LLVM_READNONE
1309-
bool isShader(CallingConv::ID CC);
1309+
constexpr bool isShader(CallingConv::ID CC) {
1310+
switch (CC) {
1311+
case CallingConv::AMDGPU_VS:
1312+
case CallingConv::AMDGPU_LS:
1313+
case CallingConv::AMDGPU_HS:
1314+
case CallingConv::AMDGPU_ES:
1315+
case CallingConv::AMDGPU_GS:
1316+
case CallingConv::AMDGPU_PS:
1317+
case CallingConv::AMDGPU_CS_Chain:
1318+
case CallingConv::AMDGPU_CS_ChainPreserve:
1319+
case CallingConv::AMDGPU_CS:
1320+
return true;
1321+
default:
1322+
return false;
1323+
}
1324+
}
13101325

13111326
LLVM_READNONE
1312-
bool isGraphics(CallingConv::ID CC);
1327+
constexpr bool isGraphics(CallingConv::ID CC) {
1328+
return isShader(CC) || CC == CallingConv::AMDGPU_Gfx;
1329+
}
1330+
1331+
LLVM_READNONE
1332+
constexpr bool isCompute(CallingConv::ID CC) {
1333+
return !isGraphics(CC) || CC == CallingConv::AMDGPU_CS;
1334+
}
13131335

13141336
LLVM_READNONE
1315-
bool isCompute(CallingConv::ID CC);
1337+
constexpr bool isEntryFunctionCC(CallingConv::ID CC) {
1338+
switch (CC) {
1339+
case CallingConv::AMDGPU_KERNEL:
1340+
case CallingConv::SPIR_KERNEL:
1341+
case CallingConv::AMDGPU_VS:
1342+
case CallingConv::AMDGPU_GS:
1343+
case CallingConv::AMDGPU_PS:
1344+
case CallingConv::AMDGPU_CS:
1345+
case CallingConv::AMDGPU_ES:
1346+
case CallingConv::AMDGPU_HS:
1347+
case CallingConv::AMDGPU_LS:
1348+
return true;
1349+
default:
1350+
return false;
1351+
}
1352+
}
13161353

13171354
LLVM_READNONE
1318-
bool isEntryFunctionCC(CallingConv::ID CC);
1355+
constexpr bool isChainCC(CallingConv::ID CC) {
1356+
switch (CC) {
1357+
case CallingConv::AMDGPU_CS_Chain:
1358+
case CallingConv::AMDGPU_CS_ChainPreserve:
1359+
return true;
1360+
default:
1361+
return false;
1362+
}
1363+
}
13191364

13201365
// These functions are considered entrypoints into the current module, i.e. they
13211366
// are allowed to be called from outside the current module. This is different
@@ -1324,13 +1369,17 @@ bool isEntryFunctionCC(CallingConv::ID CC);
13241369
// include functions that can be called from other functions inside or outside
13251370
// the current module. Module entry functions are allowed to allocate LDS.
13261371
LLVM_READNONE
1327-
bool isModuleEntryFunctionCC(CallingConv::ID CC);
1328-
1329-
LLVM_READNONE
1330-
bool isChainCC(CallingConv::ID CC);
1372+
constexpr bool isModuleEntryFunctionCC(CallingConv::ID CC) {
1373+
switch (CC) {
1374+
case CallingConv::AMDGPU_Gfx:
1375+
return true;
1376+
default:
1377+
return isEntryFunctionCC(CC) || isChainCC(CC);
1378+
}
1379+
}
13311380

13321381
LLVM_READNONE
1333-
inline bool isKernel(CallingConv::ID CC) {
1382+
constexpr inline bool isKernel(CallingConv::ID CC) {
13341383
switch (CC) {
13351384
case CallingConv::AMDGPU_KERNEL:
13361385
case CallingConv::SPIR_KERNEL:
@@ -1340,9 +1389,22 @@ inline bool isKernel(CallingConv::ID CC) {
13401389
}
13411390
}
13421391

1392+
LLVM_READNONE
1393+
constexpr bool canGuaranteeTCO(CallingConv::ID CC) {
1394+
return CC == CallingConv::Fast;
1395+
}
1396+
13431397
/// Return true if we might ever do TCO for calls with this calling convention.
1344-
bool mayTailCallThisCC(CallingConv::ID CC);
1345-
bool canGuaranteeTCO(CallingConv::ID CC);
1398+
LLVM_READNONE
1399+
constexpr bool mayTailCallThisCC(CallingConv::ID CC) {
1400+
switch (CC) {
1401+
case CallingConv::C:
1402+
case CallingConv::AMDGPU_Gfx:
1403+
return true;
1404+
default:
1405+
return canGuaranteeTCO(CC);
1406+
}
1407+
}
13461408

13471409
bool hasXNACK(const MCSubtargetInfo &STI);
13481410
bool hasSRAMECC(const MCSubtargetInfo &STI);

0 commit comments

Comments
 (0)