From b8f294445b998eadb9b09e2b91eb462b881eaf2e Mon Sep 17 00:00:00 2001 From: jsmall-nvidia Date: Fri, 24 Jan 2020 15:06:08 -0500 Subject: Texture Sample available in CUDA (#1176) * WIP: Trying to figure out how texturing will work with CUDA. * WIP: Fixes for CUDA layout. Initial CUDA texture test. * WIP: Outputs something compilable by CUDA for TextureND.Sample * 2d texture working with CUDA. * Fix how binding for SamplerState occurs in CUDA. * Small tidy up of comments. --- source/slang/slang-emit-cpp.cpp | 35 +++++------------------------------ 1 file changed, 5 insertions(+), 30 deletions(-) (limited to 'source/slang/slang-emit-cpp.cpp') diff --git a/source/slang/slang-emit-cpp.cpp b/source/slang/slang-emit-cpp.cpp index 5ea3c72a2..759f980d3 100644 --- a/source/slang/slang-emit-cpp.cpp +++ b/source/slang/slang-emit-cpp.cpp @@ -1912,48 +1912,23 @@ void CPPSourceEmitter::emitIntrinsicCallExprImpl( return; } - auto prec = getInfo(EmitOp::Postfix); - needClose = maybeEmitParens(outerPrec, prec); - - if (name[0] == '.') - { - // Looks like a member function call - emitOperand(args[0].get(), leftSide(outerPrec, prec)); - m_writer->emit("."); - - name = UnownedStringSlice(name.begin() + 1, name.end()); - - args++; - argCount--; - } - else { Op op = m_opLookup->getOpByName(name); if (op != Op::Invalid) { - + // Work out the intrinsic used HLSLIntrinsic intrinsic; m_intrinsicSet.calcIntrinsic(op, inst->getDataType(), args, argCount, intrinsic); HLSLIntrinsic* specOp = m_intrinsicSet.add(intrinsic); - + emitCall(specOp, inst, args, int(argCount), inOuterPrec); return; } } - - m_writer->emit(name); - m_writer->emit("("); - for (Index i = 0; i < argCount; ++i) - { - if (i != 0) - { - m_writer->emit(", "); - } - emitOperand(args[i].get(), getInfo(EmitOp::General)); - } - m_writer->emit(")"); - maybeCloseParens(needClose); + + // Use default impl (which will do intrinsic special macro expansion as necessary) + return Super::emitIntrinsicCallExprImpl(inst, targetIntrinsic, inOuterPrec); } bool CPPSourceEmitter::_tryEmitInstExprAsIntrinsic(IRInst* inst, const EmitOpInfo& inOuterPrec) -- cgit v1.2.3