summaryrefslogtreecommitdiffstats
path: root/source/slang
diff options
context:
space:
mode:
authorYong He <yonghe@outlook.com>2024-10-27 09:40:50 -0700
committerGitHub <noreply@github.com>2024-10-27 09:40:50 -0700
commitfaa7d6ba4d73d8e3d89f083deea103afda456a21 (patch)
treee72377a1c0daf3e72d4fa6e5d6ba11109abb734b /source/slang
parent14f4b45d4b977805c5dbe472e327bdd3e856fb94 (diff)
Add implicit cast for generic vector types. (#5413)
Diffstat (limited to 'source/slang')
-rw-r--r--source/slang/core.meta.slang22
1 files changed, 22 insertions, 0 deletions
diff --git a/source/slang/core.meta.slang b/source/slang/core.meta.slang
index 478487250..249a084b1 100644
--- a/source/slang/core.meta.slang
+++ b/source/slang/core.meta.slang
@@ -1642,6 +1642,17 @@ extension vector<T,N> : IInteger
[__unsafeForceInlineEarly] __init(int v) { this = vector<T,N>(T(v)); }
[OverloadRank(-1)]
[__unsafeForceInlineEarly] __init(int64_t v) { this = vector<T,N>(T(v)); }
+
+ [OverloadRank(-1)]
+ __implicit_conversion($(kConversionCost_Default))
+ __intrinsic_op($(kIROp_CastFloatToInt))
+ __generic<U:__BuiltinFloatingPointType>
+ __init(vector<U, N> other);
+
+ [OverloadRank(-1)]
+ __intrinsic_op($(kIROp_IntCast))
+ __generic<U:__BuiltinIntegerType>
+ __init(vector<U, N> other);
}
__generic<T:__BuiltinFloatingPointType, let N : int>
@@ -1660,6 +1671,17 @@ extension vector<T,N> : IFloat
[__unsafeForceInlineEarly] float toFloat() { return __realCast<float>(this[0]); }
[OverloadRank(-1)]
+ __implicit_conversion($(kConversionCost_Default))
+ __intrinsic_op($(kIROp_FloatCast))
+ __generic<U:__BuiltinFloatingPointType>
+ __init(vector<U, N> other);
+
+ [OverloadRank(-1)]
+ __intrinsic_op($(kIROp_CastIntToFloat))
+ __generic<U:__BuiltinIntegerType>
+ __init(vector<U, N> other);
+
+ [OverloadRank(-1)]
[__unsafeForceInlineEarly] __init(int v) { this = vector<T,N>(T(v)); }
[OverloadRank(-1)]
[__unsafeForceInlineEarly] __init(float v) { this = vector<T,N>(T(v)); }