From b3e6f1b2cffa8def593e97a00576eeba0f947ebc Mon Sep 17 00:00:00 2001 From: jsmall-nvidia Date: Wed, 25 Mar 2020 16:45:56 -0400 Subject: Unroll target improvements (#1291) * Add unroll support for CUDA, and preliminary for C++. Document [unroll] support. * Fix loop-unroll to run on CPU, and test on CPU and elsewhere. Fix bug in emitting loop unroll condition. * Improved comment. * Added support for vk/glsl loop unrolling. --- source/slang/slang-emit-glsl.cpp | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'source/slang/slang-emit-glsl.cpp') diff --git a/source/slang/slang-emit-glsl.cpp b/source/slang/slang-emit-glsl.cpp index b433b4d94..af1cfd897 100644 --- a/source/slang/slang-emit-glsl.cpp +++ b/source/slang/slang-emit-glsl.cpp @@ -668,6 +668,16 @@ void GLSLSourceEmitter::_maybeEmitGLSLFlatModifier(IRType* valueType) } } +void GLSLSourceEmitter::emitLoopControlDecorationImpl(IRLoopControlDecoration* decl) +{ + if (decl->getMode() == kIRLoopControl_Unroll) + { + // https://github.com/KhronosGroup/GLSL/blob/master/extensions/ext/GL_EXT_control_flow_attributes.txt + m_glslExtensionTracker->requireExtension(UnownedStringSlice::fromLiteral("GL_EXT_control_flow_attributes")); + m_writer->emit("[[unroll]]\n"); + } +} + void GLSLSourceEmitter::emitSimpleValueImpl(IRInst* inst) { switch (inst->op) -- cgit v1.2.3