summaryrefslogtreecommitdiffstats
path: root/source/slang/slang-stdlib.cpp
diff options
context:
space:
mode:
authorjsmall-nvidia <jsmall@nvidia.com>2019-03-14 16:21:03 -0400
committerGitHub <noreply@github.com>2019-03-14 16:21:03 -0400
commitc8e36bd128a29654b2ec145038da9e132330581b (patch)
tree950ce7c3bb1cc235f97ceb982643e99245c87e16 /source/slang/slang-stdlib.cpp
parent04416431993b1d5efa8eac759a16832d40c2a159 (diff)
Hotfix/bool fix (#907)
* * Handle ! for bool vector in glsl * Handle operators that have a boolean return value * || or && take bool * * Add comment in bool-op.slang test about doing || or && on vector types not supported for GLSL targets
Diffstat (limited to 'source/slang/slang-stdlib.cpp')
-rw-r--r--source/slang/slang-stdlib.cpp20
1 files changed, 10 insertions, 10 deletions
diff --git a/source/slang/slang-stdlib.cpp b/source/slang/slang-stdlib.cpp
index 936c92fdd..183bed9ba 100644
--- a/source/slang/slang-stdlib.cpp
+++ b/source/slang/slang-stdlib.cpp
@@ -46,7 +46,7 @@ namespace Slang
{
SINT_MASK = 1 << 0,
FLOAT_MASK = 1 << 1,
- COMPARISON = 1 << 2,
+ BOOL_RESULT = 1 << 2,
BOOL_MASK = 1 << 3,
UINT_MASK = 1 << 4,
ASSIGNMENT = 1 << 5,
@@ -203,7 +203,7 @@ namespace Slang
static const OpInfo unaryOps[] = {
{ kIRPseudoOp_Pos, "+", ARITHMETIC_MASK },
{ kIROp_Neg, "-", ARITHMETIC_MASK },
- { kIROp_Not, "!", ANY_MASK },
+ { kIROp_Not, "!", BOOL_MASK | BOOL_RESULT },
{ kIROp_BitNot, "~", INT_MASK },
{ kIRPseudoOp_PreInc, "++", ARITHMETIC_MASK | ASSIGNMENT },
{ kIRPseudoOp_PreDec, "--", ARITHMETIC_MASK | ASSIGNMENT },
@@ -217,19 +217,19 @@ namespace Slang
{ kIROp_Mul, "*", ARITHMETIC_MASK },
{ kIROp_Div, "/", ARITHMETIC_MASK },
{ kIROp_Mod, "%", INT_MASK },
- { kIROp_And, "&&", LOGICAL_MASK },
- { kIROp_Or, "||", LOGICAL_MASK },
+ { kIROp_And, "&&", BOOL_MASK | BOOL_RESULT},
+ { kIROp_Or, "||", BOOL_MASK | BOOL_RESULT },
{ kIROp_BitAnd, "&", LOGICAL_MASK },
{ kIROp_BitOr, "|", LOGICAL_MASK },
{ kIROp_BitXor, "^", LOGICAL_MASK },
{ kIROp_Lsh, "<<", INT_MASK },
{ kIROp_Rsh, ">>", INT_MASK },
- { kIROp_Eql, "==", ANY_MASK | COMPARISON },
- { kIROp_Neq, "!=", ANY_MASK | COMPARISON },
- { kIROp_Greater, ">", ARITHMETIC_MASK | COMPARISON },
- { kIROp_Less, "<", ARITHMETIC_MASK | COMPARISON },
- { kIROp_Geq, ">=", ARITHMETIC_MASK | COMPARISON },
- { kIROp_Leq, "<=", ARITHMETIC_MASK | COMPARISON },
+ { kIROp_Eql, "==", ANY_MASK | BOOL_RESULT },
+ { kIROp_Neq, "!=", ANY_MASK | BOOL_RESULT },
+ { kIROp_Greater, ">", ARITHMETIC_MASK | BOOL_RESULT },
+ { kIROp_Less, "<", ARITHMETIC_MASK | BOOL_RESULT },
+ { kIROp_Geq, ">=", ARITHMETIC_MASK | BOOL_RESULT },
+ { kIROp_Leq, "<=", ARITHMETIC_MASK | BOOL_RESULT },
{ kIRPseudoOp_AddAssign, "+=", ASSIGNMENT | ARITHMETIC_MASK },
{ kIRPseudoOp_SubAssign, "-=", ASSIGNMENT | ARITHMETIC_MASK },
{ kIRPseudoOp_MulAssign, "*=", ASSIGNMENT | ARITHMETIC_MASK },