From faa7d6ba4d73d8e3d89f083deea103afda456a21 Mon Sep 17 00:00:00 2001 From: Yong He Date: Sun, 27 Oct 2024 09:40:50 -0700 Subject: Add implicit cast for generic vector types. (#5413) --- source/slang/core.meta.slang | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) (limited to 'source') 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 : IInteger [__unsafeForceInlineEarly] __init(int v) { this = vector(T(v)); } [OverloadRank(-1)] [__unsafeForceInlineEarly] __init(int64_t v) { this = vector(T(v)); } + + [OverloadRank(-1)] + __implicit_conversion($(kConversionCost_Default)) + __intrinsic_op($(kIROp_CastFloatToInt)) + __generic + __init(vector other); + + [OverloadRank(-1)] + __intrinsic_op($(kIROp_IntCast)) + __generic + __init(vector other); } __generic @@ -1659,6 +1670,17 @@ extension vector : IFloat __intrinsic_op($(kIROp_Mul)) This scale(T1 s); [__unsafeForceInlineEarly] float toFloat() { return __realCast(this[0]); } + [OverloadRank(-1)] + __implicit_conversion($(kConversionCost_Default)) + __intrinsic_op($(kIROp_FloatCast)) + __generic + __init(vector other); + + [OverloadRank(-1)] + __intrinsic_op($(kIROp_CastIntToFloat)) + __generic + __init(vector other); + [OverloadRank(-1)] [__unsafeForceInlineEarly] __init(int v) { this = vector(T(v)); } [OverloadRank(-1)] -- cgit v1.2.3