summaryrefslogtreecommitdiffstats
path: root/prelude
diff options
context:
space:
mode:
authorJulius Ikkala <julius.ikkala@gmail.com>2025-02-06 07:06:27 +0200
committerGitHub <noreply@github.com>2025-02-05 21:06:27 -0800
commitbbaaab48af8a48daca23ed97f006855b03798b0f (patch)
treea15fae85baef70b4e656b4b759d0a6def028444d /prelude
parentf5700bd3e21af6387c89ea7abcf831acd505b6cc (diff)
Fix matrix comparison operators on CPU (#6296)
Co-authored-by: Yong He <yonghe@outlook.com>
Diffstat (limited to 'prelude')
-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)