@@ -582,6 +582,17 @@ struct Matrix
582
582
return result; \
583
583
}
584
584
585
+ #define SLANG_MATRIX_BINARY_COMPARE_OP (T, op ) \
586
+ template <int R, int C> \
587
+ Matrix<bool , R, C> operator op (const Matrix<T, R, C>& thisVal, const Matrix<T, R, C>& other) \
588
+ { \
589
+ Matrix<bool , R, C> result; \
590
+ for (int i = 0 ; i < R; i++) \
591
+ for (int j = 0 ; j < C; j++) \
592
+ result.rows [i][j] = thisVal.rows [i][j] op other.rows [i][j]; \
593
+ return result; \
594
+ }
595
+
585
596
#define SLANG_MATRIX_UNARY_OP (T, op ) \
586
597
template <int R, int C> \
587
598
Matrix<T, R, C> operator op (const Matrix<T, R, C>& thisVal) \
@@ -592,25 +603,38 @@ struct Matrix
592
603
result[i].rows [i][j] = op thisVal.rows [i][j]; \
593
604
return result; \
594
605
}
595
- #define SLANG_INT_MATRIX_OPS (T ) \
596
- SLANG_MATRIX_BINARY_OP (T, +) \
597
- SLANG_MATRIX_BINARY_OP(T, -) \
598
- SLANG_MATRIX_BINARY_OP(T, *) \
599
- SLANG_MATRIX_BINARY_OP(T, /) \
600
- SLANG_MATRIX_BINARY_OP(T, &) \
601
- SLANG_MATRIX_BINARY_OP(T, |) \
602
- SLANG_MATRIX_BINARY_OP(T, &&) \
603
- SLANG_MATRIX_BINARY_OP(T, ||) \
604
- SLANG_MATRIX_BINARY_OP(T, ^) \
605
- SLANG_MATRIX_BINARY_OP(T, %) \
606
- SLANG_MATRIX_UNARY_OP(T, !) \
606
+
607
+ #define SLANG_INT_MATRIX_OPS (T ) \
608
+ SLANG_MATRIX_BINARY_OP (T, +) \
609
+ SLANG_MATRIX_BINARY_OP(T, -) \
610
+ SLANG_MATRIX_BINARY_OP(T, *) \
611
+ SLANG_MATRIX_BINARY_OP(T, /) \
612
+ SLANG_MATRIX_BINARY_OP(T, &) \
613
+ SLANG_MATRIX_BINARY_OP(T, |) \
614
+ SLANG_MATRIX_BINARY_OP(T, &&) \
615
+ SLANG_MATRIX_BINARY_OP(T, ||) \
616
+ SLANG_MATRIX_BINARY_OP(T, ^) \
617
+ SLANG_MATRIX_BINARY_OP(T, %) \
618
+ SLANG_MATRIX_BINARY_COMPARE_OP(T, >) \
619
+ SLANG_MATRIX_BINARY_COMPARE_OP(T, <) \
620
+ SLANG_MATRIX_BINARY_COMPARE_OP(T, >=) \
621
+ SLANG_MATRIX_BINARY_COMPARE_OP(T, <=) \
622
+ SLANG_MATRIX_BINARY_COMPARE_OP(T, ==) \
623
+ SLANG_MATRIX_BINARY_COMPARE_OP(T, !=) \
624
+ SLANG_MATRIX_UNARY_OP(T, !) \
607
625
SLANG_MATRIX_UNARY_OP(T, ~)
608
- #define SLANG_FLOAT_MATRIX_OPS (T ) \
609
- SLANG_MATRIX_BINARY_OP (T, +) \
610
- SLANG_MATRIX_BINARY_OP(T, -) \
611
- SLANG_MATRIX_BINARY_OP(T, *) \
612
- SLANG_MATRIX_BINARY_OP(T, /) \
613
- SLANG_MATRIX_UNARY_OP(T, -)
626
+ #define SLANG_FLOAT_MATRIX_OPS (T ) \
627
+ SLANG_MATRIX_BINARY_OP (T, +) \
628
+ SLANG_MATRIX_BINARY_OP(T, -) \
629
+ SLANG_MATRIX_BINARY_OP(T, *) \
630
+ SLANG_MATRIX_BINARY_OP(T, /) \
631
+ SLANG_MATRIX_UNARY_OP(T, -) \
632
+ SLANG_MATRIX_BINARY_COMPARE_OP(T, >) \
633
+ SLANG_MATRIX_BINARY_COMPARE_OP(T, <) \
634
+ SLANG_MATRIX_BINARY_COMPARE_OP(T, >=) \
635
+ SLANG_MATRIX_BINARY_COMPARE_OP(T, <=) \
636
+ SLANG_MATRIX_BINARY_COMPARE_OP(T, ==) \
637
+ SLANG_MATRIX_BINARY_COMPARE_OP(T, !=)
614
638
SLANG_INT_MATRIX_OPS(int )
615
639
SLANG_INT_MATRIX_OPS(int8_t )
616
640
SLANG_INT_MATRIX_OPS(int16_t )
0 commit comments