diff options
| author | Ellie Hermaszewska <ellieh@nvidia.com> | 2024-07-05 21:09:13 +0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-07-05 21:09:13 +0800 |
| commit | 65194cf0a926267839ff56e47c1a1eb14e2b0977 (patch) | |
| tree | 40604c6bcb555c8e1e53d35e7d013f40c5964827 /source | |
| parent | 388de5f68ebef556f9addcf36685109d2524ee4e (diff) | |
Add vector overloads for or and and (#4529)
* Add vector overloads for or and and
Closes #4441 and #4434
* Disable cuda checks which use unsupported bool vectors
* Add tests for 4531
Diffstat (limited to 'source')
| -rw-r--r-- | source/slang/core.meta.slang | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/source/slang/core.meta.slang b/source/slang/core.meta.slang index 631c09d19..a8badc05a 100644 --- a/source/slang/core.meta.slang +++ b/source/slang/core.meta.slang @@ -2255,6 +2255,51 @@ bool and(bool v0, bool v1) return __and(v0, v1); } +[__unsafeForceInlineEarly] +[OverloadRank(-10)] +__intrinsic_op($(kIROp_And)) +vector<bool, N> and<let N : int>(vector<bool, N> v0, vector<bool, N> v1); + +[__unsafeForceInlineEarly] +[OverloadRank(-10)] +vector<bool, N> and<let N : int>(bool b, vector<bool, N> v) +{ + return and(vector<bool, N>(b), v); +} + +[__unsafeForceInlineEarly] +[OverloadRank(-10)] +vector<bool, N> and<let N : int>(vector<bool, N> v, bool b) +{ + return and(v, vector<bool, N>(b)); +} + +[__unsafeForceInlineEarly] +[OverloadRank(-10)] +bool or(bool v0, bool v1) +{ + return __or(v0, v1); +} + +[__unsafeForceInlineEarly] +[OverloadRank(-10)] +__intrinsic_op($(kIROp_Or)) +vector<bool, N> or<let N : int>(vector<bool, N> v0, vector<bool, N> v1); + +[__unsafeForceInlineEarly] +[OverloadRank(-10)] +vector<bool, N> or<let N : int>(bool b, vector<bool, N> v) +{ + return or(vector<bool, N>(b), v); +} + +[__unsafeForceInlineEarly] +[OverloadRank(-10)] +vector<bool, N> or<let N : int>(vector<bool, N> v, bool b) +{ + return or(v, vector<bool, N>(b)); +} + __generic<T : ILogical> [__unsafeForceInlineEarly] [OverloadRank(-10)] |
