diff options
| author | Julius Ikkala <julius.ikkala@gmail.com> | 2025-02-06 07:06:27 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-02-05 21:06:27 -0800 |
| commit | bbaaab48af8a48daca23ed97f006855b03798b0f (patch) | |
| tree | a15fae85baef70b4e656b4b759d0a6def028444d /prelude | |
| parent | f5700bd3e21af6387c89ea7abcf831acd505b6cc (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.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) |
