diff options
| author | Tim Foley <tfoleyNV@users.noreply.github.com> | 2017-11-07 16:47:36 -0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2017-11-07 16:47:36 -0800 |
| commit | a5dfa5cd2bfa11fb3d9e84877f8dead1815e9077 (patch) | |
| tree | fbc440ab3e7dc6843b3ef653a70e134b58758885 /source/slang/emit.cpp | |
| parent | 6e591ada0eb652c320bba4bd8a46cd579946df01 (diff) | |
IR: add support for `discard` statement (#261)
- Add definition of `discard` instruction
- A `discard` is a terminator instruction, just like `returnVoid`
- Lower `DiscardStmt` in AST to a `discard` instruction in the IR
- Emit `discard` instruction as a `discard;` statement when emitting HLSL/GLSL
- Add a test case using the "graphics compute" mode that tests discard. The test writes to one entry in a UAV before doing a conditional (always true at runtime) discard, and then writes to another entry; we expect to see the results of the first write, but not the second.
Diffstat (limited to 'source/slang/emit.cpp')
| -rw-r--r-- | source/slang/emit.cpp | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/source/slang/emit.cpp b/source/slang/emit.cpp index 332125fc6..2b7030897 100644 --- a/source/slang/emit.cpp +++ b/source/slang/emit.cpp @@ -5296,6 +5296,10 @@ emitDeclImpl(decl, nullptr); emit(";\n"); break; + case kIROp_discard: + emit("discard;\n"); + break; + case kIROp_swizzleSet: { auto ii = (IRSwizzleSet*)inst; @@ -5425,6 +5429,7 @@ emitDeclImpl(decl, nullptr); case kIROp_ReturnVal: case kIROp_ReturnVoid: + case kIROp_discard: emitIRInst(ctx, terminator); return; |
