summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--prelude/slang-cpp-types-core.h60
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)