From 3af404da7f7f125464b78159940cb3fc06e69cc5 Mon Sep 17 00:00:00 2001 From: jsmall-nvidia Date: Tue, 17 Sep 2019 12:25:45 -0400 Subject: CPU ABI improvements (#1056) * WIP: Improving CPU performance/ABI * Optionally output code on CPU for groupThreadID and groupID. * Added ability to set compute dispatch size on command line for render-test. Dispatch compute tests taking into account dispatch size. Added test for semantics are working. * Test using GroupRange. * Fix problem with adding \n for externa diagnostic - to do it if there isn't a \n at the end. Change the ouput order (put result before) so last value is diagnostic string. --- source/slang/slang-emit-cpp.h | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) (limited to 'source/slang/slang-emit-cpp.h') diff --git a/source/slang/slang-emit-cpp.h b/source/slang/slang-emit-cpp.h index 906086d71..f15a302e5 100644 --- a/source/slang/slang-emit-cpp.h +++ b/source/slang/slang-emit-cpp.h @@ -132,6 +132,17 @@ public: SLANG_CPP_INTRINSIC_OP(SLANG_CPP_INTRINSIC_OP_ENUM) }; + typedef uint32_t SemanticUsedFlags; + struct SemanticUsedFlag + { + enum Enum : SemanticUsedFlags + { + DispatchThreadID = 0x01, + GroupThreadID = 0x02, + GroupID = 0x04, + }; + }; + struct OperationInfo { UnownedStringSlice name; @@ -257,9 +268,12 @@ protected: SlangResult _calcTextureTypeName(IRTextureTypeBase* texType, StringBuilder& outName); - void _emitEntryPointDefinitionStart(IRFunc* func, IRGlobalParam* entryPointGlobalParams, const String& funcName); + void _emitEntryPointDefinitionStart(IRFunc* func, IRGlobalParam* entryPointGlobalParams, const String& funcName, const UnownedStringSlice& varyingTypeName); void _emitEntryPointDefinitionEnd(IRFunc* func); void _emitEntryPointGroup(const UInt sizeAlongAxis[3], const String& funcName); + void _emitEntryPointGroupRange(const UInt sizeAlongAxis[3], const String& funcName); + + void _emitInitAxisValues(const UInt sizeAlongAxis[3], const UnownedStringSlice& mulName, const UnownedStringSlice& addName); Dictionary m_intrinsicNameMap; Dictionary m_typeNameMap; @@ -295,6 +309,8 @@ protected: List m_intrinsicOpMap; StringSlicePool m_slicePool; + + SemanticUsedFlags m_semanticUsedFlags; }; } -- cgit v1.2.3