[clang] [HLSL] Add various overloads for MiniEngine (PR #139800)
Sarah Spall via cfe-commits
cfe-commits at lists.llvm.org
Tue May 13 15:01:53 PDT 2025
================
@@ -158,6 +158,42 @@ namespace hlsl {
return fn((float4)V1, (float4)V2, (float4)V3); \
}
+#define _DXC_COMPAT_BINARY_VECTOR_SCALAR_OVERLOADS(fn) \
+ template <typename T, uint N> \
+ constexpr __detail::enable_if_t<(N > 1 && N <= 4), vector<T, N>> fn( \
+ vector<T, N> V1, T V2) { \
+ return fn(V1, (vector<T, N>)V2); \
+ } \
+ template <typename T, uint N> \
+ constexpr __detail::enable_if_t<(N > 1 && N <= 4), vector<T, N>> fn( \
+ T V1, vector<T, N> V2) { \
+ return fn((vector<T, N>)V1, V2); \
+ }
+
+#define _DXC_COMPAT_TERNARY_VECTOR_SCALAR_OVERLOADS(fn) \
+ template <typename T, uint N> \
+ constexpr __detail::enable_if_t<(N > 1 && N <= 4), vector<T, N>> fn( \
+ T V1, vector<T, N> V2, vector<T, N> V3) { \
+ return fn((vector<T, N>)V1, V2, V3); \
+ } \
+ template <typename T, uint N> \
+ constexpr __detail::enable_if_t<(N > 1 && N <= 4), vector<T, N>> fn( \
+ vector<T, N> V1, T V2, vector<T, N> V3) { \
+ return fn(V1, (vector<T, N>)V2, V3); \
+ } \
+ template <typename T, uint N> \
+ constexpr __detail::enable_if_t<(N > 1 && N <= 4), vector<T, N>> fn( \
+ vector<T, N> V1, vector<T, N> V2, T V3) { \
+ return fn(V1, V2, (vector<T, N>)V3); \
+ }
+
+#define _DXC_COMPAT_TERNARY_SINGLE_VECTOR_SCALAR_OVERLOADS(fn) \
----------------
spall wrote:
why did you put this overload in its own macro and not in the previous one?
https://github.com/llvm/llvm-project/pull/139800
More information about the cfe-commits
mailing list