diff options
| author | jsmall-nvidia <jsmall@nvidia.com> | 2019-03-14 16:21:03 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2019-03-14 16:21:03 -0400 |
| commit | c8e36bd128a29654b2ec145038da9e132330581b (patch) | |
| tree | 950ce7c3bb1cc235f97ceb982643e99245c87e16 /source/slang/slang-stdlib.cpp | |
| parent | 04416431993b1d5efa8eac759a16832d40c2a159 (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.cpp | 20 |
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 }, |
