From bbaaab48af8a48daca23ed97f006855b03798b0f Mon Sep 17 00:00:00 2001 From: Julius Ikkala Date: Thu, 6 Feb 2025 07:06:27 +0200 Subject: Fix matrix comparison operators on CPU (#6296) Co-authored-by: Yong He --- prelude/slang-cpp-types-core.h | 60 +++++++++++++++++++++++++++++------------- 1 file changed, 42 insertions(+), 18 deletions(-) (limited to 'prelude') 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 \ + Matrix operator op(const Matrix& thisVal, const Matrix& other) \ + { \ + Matrix 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 \ Matrix operator op(const Matrix& 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) -- cgit v1.2.3