diff options
| -rw-r--r-- | prelude/slang-cpp-types-core.h | 60 |
1 files changed, 42 insertions, 18 deletions
diff --git a/prelude/slang-cpp-types-core.h b/prelude/slang-cpp-types-core.h index 1f8f5bd80..82674fefb 100644 --- a/prelude/slang-cpp-types-core.h +++ b/prelude/slang-cpp-types-core.h @@ -582,6 +582,17 @@ struct Matrix return result; \ } +#define SLANG_MATRIX_BINARY_COMPARE_OP(T, op) \ + template<int R, int C> \ + Matrix<bool, R, C> operator op(const Matrix<T, R, C>& thisVal, const Matrix<T, R, C>& other) \ + { \ + Matrix<bool, R, C> result; \ + for (int i = 0; i < R; i++) \ + for (int j = 0; j < C; j++) \ + result.rows[i][j] = thisVal.rows[i][j] op other.rows[i][j]; \ + return result; \ + } + #define SLANG_MATRIX_UNARY_OP(T, op) \ template<int R, int C> \ Matrix<T, R, C> operator op(const Matrix<T, R, C>& thisVal) \ @@ -592,25 +603,38 @@ struct Matrix result[i].rows[i][j] = op thisVal.rows[i][j]; \ return result; \ } -#define SLANG_INT_MATRIX_OPS(T) \ - SLANG_MATRIX_BINARY_OP(T, +) \ - SLANG_MATRIX_BINARY_OP(T, -) \ - SLANG_MATRIX_BINARY_OP(T, *) \ - SLANG_MATRIX_BINARY_OP(T, /) \ - SLANG_MATRIX_BINARY_OP(T, &) \ - SLANG_MATRIX_BINARY_OP(T, |) \ - SLANG_MATRIX_BINARY_OP(T, &&) \ - SLANG_MATRIX_BINARY_OP(T, ||) \ - SLANG_MATRIX_BINARY_OP(T, ^) \ - SLANG_MATRIX_BINARY_OP(T, %) \ - SLANG_MATRIX_UNARY_OP(T, !) \ + +#define SLANG_INT_MATRIX_OPS(T) \ + SLANG_MATRIX_BINARY_OP(T, +) \ + SLANG_MATRIX_BINARY_OP(T, -) \ + SLANG_MATRIX_BINARY_OP(T, *) \ + SLANG_MATRIX_BINARY_OP(T, /) \ + SLANG_MATRIX_BINARY_OP(T, &) \ + SLANG_MATRIX_BINARY_OP(T, |) \ + SLANG_MATRIX_BINARY_OP(T, &&) \ + SLANG_MATRIX_BINARY_OP(T, ||) \ + SLANG_MATRIX_BINARY_OP(T, ^) \ + SLANG_MATRIX_BINARY_OP(T, %) \ + SLANG_MATRIX_BINARY_COMPARE_OP(T, >) \ + SLANG_MATRIX_BINARY_COMPARE_OP(T, <) \ + SLANG_MATRIX_BINARY_COMPARE_OP(T, >=) \ + SLANG_MATRIX_BINARY_COMPARE_OP(T, <=) \ + SLANG_MATRIX_BINARY_COMPARE_OP(T, ==) \ + SLANG_MATRIX_BINARY_COMPARE_OP(T, !=) \ + SLANG_MATRIX_UNARY_OP(T, !) \ SLANG_MATRIX_UNARY_OP(T, ~) -#define SLANG_FLOAT_MATRIX_OPS(T) \ - SLANG_MATRIX_BINARY_OP(T, +) \ - SLANG_MATRIX_BINARY_OP(T, -) \ - SLANG_MATRIX_BINARY_OP(T, *) \ - SLANG_MATRIX_BINARY_OP(T, /) \ - SLANG_MATRIX_UNARY_OP(T, -) +#define SLANG_FLOAT_MATRIX_OPS(T) \ + SLANG_MATRIX_BINARY_OP(T, +) \ + SLANG_MATRIX_BINARY_OP(T, -) \ + SLANG_MATRIX_BINARY_OP(T, *) \ + SLANG_MATRIX_BINARY_OP(T, /) \ + SLANG_MATRIX_UNARY_OP(T, -) \ + SLANG_MATRIX_BINARY_COMPARE_OP(T, >) \ + SLANG_MATRIX_BINARY_COMPARE_OP(T, <) \ + SLANG_MATRIX_BINARY_COMPARE_OP(T, >=) \ + SLANG_MATRIX_BINARY_COMPARE_OP(T, <=) \ + SLANG_MATRIX_BINARY_COMPARE_OP(T, ==) \ + SLANG_MATRIX_BINARY_COMPARE_OP(T, !=) SLANG_INT_MATRIX_OPS(int) SLANG_INT_MATRIX_OPS(int8_t) SLANG_INT_MATRIX_OPS(int16_t) |
