<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
<div class="moz-cite-prefix">Am 18.01.2020 um 18:52 schrieb J.
Gareth Moreton:<br>
</div>
<blockquote type="cite"
cite="mid:1ffc576a-752d-99fc-19d6-648e94f90ad1@moreton-family.com">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<p>I think more than anything I would like to see a degree of
"ease of use" for the SIMD intrinsics, since modifying __m128
data in C/C++ is not that straightforward. Just as a
straightforward example, what might be the best way to ensure
these following record types are compatible with the __m128 data
types?</p>
<p><tt><b>type </b>TVector4 = <b>record</b></tt><tt><br>
</tt><tt> X, Y, Z, W: Single;</tt><tt><br>
</tt><tt><b>end</b>; // compatible with __m128f</tt></p>
<p><tt><b>type </b>TComplex = <b>record</b></tt><tt><br>
</tt><tt> Re, Im: Double;</tt><tt><br>
</tt><tt><b>end</b>; // compatible with __m128d</tt></p>
<p>Programmers on their own projects, whether it be a game or a
mathematical program, would much rather work with those
constructs if it can be helped... or at least I would.</p>
</blockquote>
The compiler currently considers corresponding arrays as compatible,
like "array[0..3] of Single" or "array[0..1] of Double". In theory
nothing would stop us from implementing similar compatibility with
the records you mentioned.<br>
<br>
Though to be really useable it would need to be flexible enough to
handle for the following for example as well:<br>
<br>
=== code begin ===<br>
<br>
type<br>
TVector3 = record<br>
X, Y, Z: Single;<br>
end;<br>
<br>
TVector4 = record<br>
P: TVector3;<br>
W: Single;<br>
end;<br>
<br>
=== code end ===<br>
<br>
Regards,<br>
Sven<br>
</body>
</html>