@@ -43,6 +43,10 @@ long naga_abs(long val) {
4343 return metal::select(as_type<long>(-as_type<ulong>(val)), val, val >= 0);
4444}
4545
46+ long naga_dot_long2(metal::long2 a, metal::long2 b) {
47+ return ( + a.x * b.x + a.y * b.y);
48+ }
49+
4650long int64_function(
4751 long x,
4852 thread long& private_variable,
@@ -111,11 +115,9 @@ long int64_function(
111115 long _e130 = val;
112116 val = as_type<long>(as_type<ulong>(_e130) + as_type<ulong>(metal::clamp(_e126, _e127, _e128)));
113117 long _e132 = val;
114- metal::long2 _e133 = metal::long2(_e132);
115118 long _e134 = val;
116- metal::long2 _e135 = metal::long2(_e134);
117119 long _e137 = val;
118- val = as_type<long>(as_type<ulong>(_e137) + as_type<ulong>(( + _e133.x * _e135.x + _e133.y * _e135.y )));
120+ val = as_type<long>(as_type<ulong>(_e137) + as_type<ulong>(naga_dot_long2(metal::long2(_e132), metal::long2(_e134) )));
119121 long _e139 = val;
120122 long _e140 = val;
121123 long _e142 = val;
@@ -135,6 +137,10 @@ ulong naga_f2u64(float value) {
135137 return static_cast<ulong>(metal::clamp(value, 0.0, 18446743000000000000.0));
136138}
137139
140+ ulong naga_dot_ulong2(metal::ulong2 a, metal::ulong2 b) {
141+ return ( + a.x * b.x + a.y * b.y);
142+ }
143+
138144ulong uint64_function(
139145 ulong x_1,
140146 constant UniformCompatible& input_uniform,
@@ -199,11 +205,9 @@ ulong uint64_function(
199205 ulong _e125 = val_1;
200206 val_1 = _e125 + metal::clamp(_e121, _e122, _e123);
201207 ulong _e127 = val_1;
202- metal::ulong2 _e128 = metal::ulong2(_e127);
203208 ulong _e129 = val_1;
204- metal::ulong2 _e130 = metal::ulong2(_e129);
205209 ulong _e132 = val_1;
206- val_1 = _e132 + ( + _e128.x * _e130.x + _e128.y * _e130.y );
210+ val_1 = _e132 + naga_dot_ulong2(metal::ulong2(_e127), metal::ulong2(_e129) );
207211 ulong _e134 = val_1;
208212 ulong _e135 = val_1;
209213 ulong _e137 = val_1;
0 commit comments