summaryrefslogtreecommitdiffstats
path: root/source/slang/slang-emit-cpp.cpp
diff options
context:
space:
mode:
authorjsmall-nvidia <jsmall@nvidia.com>2020-01-24 15:06:08 -0500
committerGitHub <noreply@github.com>2020-01-24 15:06:08 -0500
commitb8f294445b998eadb9b09e2b91eb462b881eaf2e (patch)
tree8607e5d2f6c2c2b4b7545a721d6d58e6e557e5c0 /source/slang/slang-emit-cpp.cpp
parent394983d61efa2bf99ba96aa68a47df8927a8a634 (diff)
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.
Diffstat (limited to 'source/slang/slang-emit-cpp.cpp')
-rw-r--r--source/slang/slang-emit-cpp.cpp35
1 files changed, 5 insertions, 30 deletions
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)