<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=us-ascii">
<meta name=Generator content="Microsoft Word 12 (filtered medium)">
<style>
<!--
/* Font Definitions */
@font-face
{font-family:Calibri;
panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
{font-family:Tahoma;
panose-1:2 11 6 4 3 5 4 4 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{margin:0in;
margin-bottom:.0001pt;
font-size:12.0pt;
font-family:"Times New Roman","serif";}
a:link, span.MsoHyperlink
{mso-style-priority:99;
color:blue;
text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
{mso-style-priority:99;
color:purple;
text-decoration:underline;}
p
{mso-style-priority:99;
mso-margin-top-alt:auto;
margin-right:0in;
mso-margin-bottom-alt:auto;
margin-left:0in;
font-size:12.0pt;
font-family:"Times New Roman","serif";}
tt
{mso-style-priority:99;
font-family:"Courier New";}
span.EmailStyle19
{mso-style-type:personal;
font-family:"Calibri","sans-serif";
color:#1F497D;}
span.EmailStyle20
{mso-style-type:personal-reply;
font-family:"Calibri","sans-serif";
color:#1F497D;}
.MsoChpDefault
{mso-style-type:export-only;
font-size:10.0pt;}
@page Section1
{size:8.5in 11.0in;
margin:1.0in 1.0in 1.0in 1.0in;}
div.Section1
{page:Section1;}
-->
</style>
<!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang=EN-US link=blue vlink=purple>
<div class=Section1>
<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'>It looks like there is a good chance Mono.Simd.dll may start
using some of the fancier things added in C# 3.0 like extension methods. Using
extension methods would also allow OpenMetaverseTypes.dll to become a set of
zero overhead add-ons for the accelerated types instead of thin wrappers for
Vector4f (which I’m told will introduce branching overhead).<o:p></o:p></span></p>
<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'><o:p> </o:p></span></p>
<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'>How does everyone feel about making the C# 3.0 switch?<o:p></o:p></span></p>
<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'><o:p> </o:p></span></p>
<div>
<div style='border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0in 0in 0in'>
<p class=MsoNormal><b><span style='font-size:10.0pt;font-family:"Tahoma","sans-serif"'>From:</span></b><span
style='font-size:10.0pt;font-family:"Tahoma","sans-serif"'>
opensim-dev-bounces@lists.berlios.de
[mailto:opensim-dev-bounces@lists.berlios.de] <b>On Behalf Of </b>Frisby, Adam<br>
<b>Sent:</b> Tuesday, November 04, 2008 6:19 AM<br>
<b>To:</b> opensim-dev@lists.berlios.de<br>
<b>Subject:</b> Re: [Opensim-dev] FYI: Mono's SIMD Support: Making Mono safe
for Gaming<o:p></o:p></span></p>
</div>
</div>
<p class=MsoNormal><o:p> </o:p></p>
<p class=MsoNormal><span lang=EN-AU style='font-size:11.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'>Hrrm, what does it take for us to implement this – can we get
openmv to derive from the appropriate classes internally? Etc.<o:p></o:p></span></p>
<p class=MsoNormal><span lang=EN-AU style='font-size:11.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'><o:p> </o:p></span></p>
<p class=MsoNormal><span lang=EN-AU style='font-size:11.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'>Adam Frisby<o:p></o:p></span></p>
<p class=MsoNormal><span lang=EN-AU style='font-size:11.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'>Executive Director<o:p></o:p></span></p>
<p class=MsoNormal><span lang=EN-AU style='font-size:11.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'>Deep Think Labs<o:p></o:p></span></p>
<p class=MsoNormal><span lang=EN-AU style='font-size:11.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'><o:p> </o:p></span></p>
<p class=MsoNormal><span lang=EN-AU style='font-size:11.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'>p: +61 (0)8 6262-9464<o:p></o:p></span></p>
<p class=MsoNormal><span lang=EN-AU style='font-size:11.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'>m: +61 (0)410 615-247<o:p></o:p></span></p>
<p class=MsoNormal><span lang=EN-AU style='font-size:11.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'>e: adam@deepthink.com.au<o:p></o:p></span></p>
<p class=MsoNormal><span lang=EN-AU style='font-size:11.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'><o:p> </o:p></span></p>
<div style='border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0in 0in 0in'>
<p class=MsoNormal><b><span style='font-size:10.0pt;font-family:"Tahoma","sans-serif"'>From:</span></b><span
style='font-size:10.0pt;font-family:"Tahoma","sans-serif"'> opensim-dev-bounces@lists.berlios.de
[mailto:opensim-dev-bounces@lists.berlios.de] <b>On Behalf Of </b>Alan M Webb<br>
<b>Sent:</b> Tuesday, 4 November 2008 11:02 PM<br>
<b>To:</b> opensim-dev@lists.berlios.de<br>
<b>Subject:</b> Re: [Opensim-dev] FYI: Mono's SIMD Support: Making Mono safe
for Gaming<o:p></o:p></span></p>
</div>
<p class=MsoNormal><span lang=EN-AU><o:p> </o:p></span></p>
<p class=MsoNormal style='margin-bottom:12.0pt'><span lang=EN-AU><br>
</span><span lang=EN-AU style='font-size:10.0pt;font-family:"Arial","sans-serif"'>Very
cool.</span><span lang=EN-AU> <br>
</span><span lang=EN-AU style='font-size:10.0pt;font-family:"Arial","sans-serif"'><br>
Best regards<br>
Alan<br>
-------------------<br>
T.J. Watson Research Center, Hawthorne, NY<br>
1-914-784-7286<br>
alan_webb@us.ibm.com</span><span lang=EN-AU> <o:p></o:p></span></p>
<table class=MsoNormalTable border=0 cellpadding=0 width="100%"
style='width:100.0%'>
<tr>
<td width="40%" valign=top style='width:40.0%;padding:.75pt .75pt .75pt .75pt'>
<p class=MsoNormal><b><span style='font-size:7.5pt;font-family:"Arial","sans-serif"'>Eugen
Leitl <eugen@leitl.org></span></b><span style='font-size:7.5pt;
font-family:"Arial","sans-serif"'> </span><br>
<span style='font-size:7.5pt;font-family:"Arial","sans-serif"'>Sent by:
opensim-dev-bounces@lists.berlios.de</span> <o:p></o:p></p>
<p><span style='font-size:7.5pt;font-family:"Arial","sans-serif"'>11/04/2008
08:37 AM</span> <o:p></o:p></p>
<table class=MsoNormalTable border=1 cellpadding=0>
<tr>
<td valign=top style='background:white;padding:.75pt .75pt .75pt .75pt'>
<p class=MsoNormal align=center style='text-align:center'><span
style='font-size:7.5pt;font-family:"Arial","sans-serif"'>Please respond to<br>
opensim-dev@lists.berlios.de</span><o:p></o:p></p>
</td>
</tr>
</table>
</td>
<td width="59%" valign=top style='width:59.0%;padding:.75pt .75pt .75pt .75pt'>
<table class=MsoNormalTable border=0 cellpadding=0 width="100%"
style='width:100.0%'>
<tr>
<td valign=top style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoNormal align=right style='text-align:right'><span
style='font-size:7.5pt;font-family:"Arial","sans-serif"'>To</span><o:p></o:p></p>
</td>
<td valign=top style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoNormal><span style='font-size:7.5pt;font-family:"Arial","sans-serif"'>opensim-dev@lists.berlios.de</span>
<o:p></o:p></p>
</td>
</tr>
<tr>
<td valign=top style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoNormal align=right style='text-align:right'><span
style='font-size:7.5pt;font-family:"Arial","sans-serif"'>cc</span><o:p></o:p></p>
</td>
<td valign=top style='padding:.75pt .75pt .75pt .75pt'></td>
</tr>
<tr>
<td valign=top style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoNormal align=right style='text-align:right'><span
style='font-size:7.5pt;font-family:"Arial","sans-serif"'>Subject</span><o:p></o:p></p>
</td>
<td valign=top style='padding:.75pt .75pt .75pt .75pt'>
<p class=MsoNormal><span style='font-size:7.5pt;font-family:"Arial","sans-serif"'>[Opensim-dev]
FYI: Mono's SIMD Support: Making Mono safe for Gaming</span><o:p></o:p></p>
</td>
</tr>
</table>
<p class=MsoNormal><o:p> </o:p></p>
<table class=MsoNormalTable border=0 cellpadding=0>
<tr>
<td valign=top style='padding:.75pt .75pt .75pt .75pt'></td>
<td valign=top style='padding:.75pt .75pt .75pt .75pt'></td>
</tr>
</table>
<p class=MsoNormal><o:p></o:p></p>
</td>
</tr>
</table>
<p class=MsoNormal style='margin-bottom:12.0pt'><span lang=EN-AU><br>
<br>
<br>
</span><span lang=EN-AU style='font-size:10.0pt;font-family:"Courier New"'><br>
<tt>http://tirania.org/blog/archive/2008/Nov-03.html</tt><br>
<br>
<tt>Mono's SIMD Support: Making Mono safe for Gaming</tt><br>
<br>
<tt>This week at the Microsoft PDC we introduced a new feature in the Mono
virtual machine that we have been working on quietly and will appear in our
upcoming Mono 2.2 release (due in early December).</tt><br>
<br>
<tt>I believe we are the first VM for managed code that provides an
object-oriented API to the underlying CPU SIMD instructions.</tt><br>
<br>
<tt>In short, this means that developers will be able to use the types in the
Mono.Simd library and have those mapped directly to efficient vector operations
on the hardware that supports it.</tt><br>
<br>
<tt>With Mono.Simd, the core of a vector operations like updating the
coordinates on an existing vector like the following example will go from 40-60
CPU instructions into 4 or so SSE instructions.</tt><br>
<br>
<tt>Vector4f Move (Vector4f [] pos, ref Vector4f delta)</tt><br>
<tt>{</tt><br>
<tt> for (int i = 0; i
< pos.Length; i++)</tt><br>
<tt>
pos [i] += delta;</tt><br>
<tt>}</tt><br>
<tt> </tt><br>
<br>
<tt>Which in C# turns out to be a call into the method Vector4f.operator +
(Vector4f a, Vector4f b) that is implemented like this:</tt><br>
<br>
<tt>Vector3f static operator + (Vector3f a, Vector3f b)</tt><br>
<tt>{</tt><br>
<tt> return new Vector3f
(a.x+b.x, a.y+b.y, a.z+b.z, a.w+b.w);</tt><br>
<tt>}</tt><br>
<tt> </tt><br>
<br>
<tt>The core of the operation is inlined in the `Move' method and it looks like
this:</tt><br>
<br>
<tt>movups (%eax),%xmm0</tt><br>
<tt>movups (%edi),%xmm1</tt><br>
<tt>addps %xmm1,%xmm0</tt><br>
<tt>movups %xmm0,(%eax)</tt><br>
<tt> </tt><br>
<tt>etc.</tt><br>
<br>
<tt>-- </tt><br>
<tt>Eugen* Leitl <a href="http://leitl.org">leitl</a>
http://leitl.org</tt><br>
<tt>______________________________________________________________</tt><br>
<tt>ICBM: 48.07100, 11.36820 http://www.ativel.com http://postbiota.org</tt><br>
<tt>8B29F6BE: 099D 78BA 2FD3 B014 B08A 7779 75B0 2443 8B29 F6BE</tt><br>
<tt>_______________________________________________</tt><br>
<tt>Opensim-dev mailing list</tt><br>
<tt>Opensim-dev@lists.berlios.de</tt><br>
<tt>https://lists.berlios.de/mailman/listinfo/opensim-dev</tt></span><span
lang=EN-AU><o:p></o:p></span></p>
</div>
</body>
</html>