Received: from mailgate1.quovadx.com (mailgate.roguewave.com [172.17.40.71]) by cvo1.cvo.roguewave.com with SMTP (Microsoft Exchange Internet Mail Service Version 5.5.2653.13)
	id 2NKZSYA7; Thu, 4 Aug 2005 14:04:03 -0700
Received: from mail.apache.org (hermes.apache.org [209.237.227.199])
	by mailgate1.quovadx.com (8.13.1/8.13.1) with SMTP id j74L3Kn6002651
	for <sebor@roguewave.com>; Thu, 4 Aug 2005 21:03:30 GMT
Received: (qmail 32266 invoked by uid 500); 4 Aug 2005 21:03:15 -0000
Mailing-List: contact stdcxx-dev-help@incubator.apache.org; run by ezmlm
Date: 4 Aug 2005 21:03:15 -0000
Message-ID: <1123189395.32265.ezmlm@incubator.apache.org>
From: stdcxx-dev-reject-1123189395.32265.jhdkagmiemlcbnkldejj@incubator.apache.org
Reply-To: stdcxx-dev-accept-1123189395.32265.jhdkagmiemlcbnkldejj@incubator.apache.org
Cc: stdcxx-dev-allow-tc.1123189395.dnoocijkpifjhphhhjpi-willson=roguewave.com@incubator.apache.org
To: Recipient list not shown: ;
MIME-Version: 1.0
Content-Type: multipart/mixed;
	boundary=jkegponklfbinbdamajo
Subject: MODERATE for stdcxx-dev@incubator.apache.org
X-Virus-Scanned: ClamAV 0.83/1003/Thu Aug  4 14:43:24 2005 on mailgate1.quovadx.com
X-Virus-Status: Clean
X-Spam-Status: No, score=0.2 required=5.0 tests=BAYES_40,HTML_90_100,
	HTML_FONT_BIG,HTML_IMAGE_RATIO_06,HTML_MESSAGE,MIME_HTML_MOSTLY,
	NO_REAL_NAME autolearn=disabled version=3.0.4
X-Spam-Checker-Version: SpamAssassin 3.0.4 (2005-06-05) on 
	mailgate1.quovadx.com

--jkegponklfbinbdamajo
Content-Type: text/plain; charset=us-ascii

To approve: stdcxx-dev-accept-1123189395.32265.jhdkagmiemlcbnkldejj@incubator.apache.org To reject: stdcxx-dev-reject-1123189395.32265.jhdkagmiemlcbnkldejj@incubator.apache.org To give a reason to reject: %%% Start comment %%% End comment 

--jkegponklfbinbdamajo
Content-Type: message/rfc822

Return-Path: <willson@roguewave.com>
Delivered-To: moderator for stdcxx-dev@incubator.apache.org
Received: (qmail 32253 invoked by uid 99); 4 Aug 2005 21:03:14 -0000
Received: from asf.osuosl.org (HELO asf.osuosl.org) (140.211.166.49)
    by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 04 Aug 2005 14:03:14 -0700
X-ASF-Spam-Status: No, hits=0.6 required=10.0
	tests=EXTRA_MPART_TYPE,HTML_90_100,HTML_FONT_BIG,HTML_MESSAGE
X-Spam-Check-By: apache.org
Received-SPF: pass (asf.osuosl.org: local policy)
Received: from [12.17.213.84] (HELO bco-exchange.bco.roguewave.com) (12.17.213.84)
    by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 04 Aug 2005 14:03:04 -0700
Received: by bco-exchange.bco.roguewave.com with Internet Mail Service (5.5.2657.72)
	id <NNYTQR65>; Thu, 4 Aug 2005 14:52:46 -0600
Message-ID: <4FA4B7B3231C5D459E7BAD020213A94202948E28@bco-exchange.bco.roguewave.com>
From: Nicole Willson <willson@roguewave.com>
To: "'stdcxx-dev@incubator.apache.org'" <stdcxx-dev@incubator.apache.org>
Subject: [PATCH] STDCXX-11: IA64 32-bit atomic operations broken
Date: Thu, 4 Aug 2005 14:52:45 -0600 
MIME-Version: 1.0
X-Mailer: Internet Mail Service (5.5.2657.72)
Content-Type: multipart/related;
	boundary="----_=_NextPart_000_01C59936.775DB200";
	type="multipart/alternative"
X-Virus-Checked: Checked by ClamAV on apache.org

This message is in MIME format. Since your mail reader does not understand
this format, some or all of this message may not be legible.

------_=_NextPart_000_01C59936.775DB200
Content-Type: multipart/alternative;
	boundary="----_=_NextPart_001_01C59936.775DB200"


------_=_NextPart_001_01C59936.775DB200
Content-Type: text/plain

  
This patch correctly implements the IA64 atomic operations in 32-bit
mode. Tested on HP-UX 11.23 on Itanium 2 with HP ANSI aC++ 6.00 [Aug 25
2004] for IA64.
 
ChangeLog:
 
2005-08-04  Nicole Willson  <willson@roguewave.com>
 
    STDCXX-11:
    * src/atomic-ia64-32.s: same as src/atomic-ia64.s but for
    IA64 in 32-bit mode.
 
Nicole Willson
Consulting Engineer
Rogue Wave Software, Inc.
A Division of Quovadx
303-545-3210
 

------_=_NextPart_001_01C59936.775DB200
Content-Type: text/html
Content-Transfer-Encoding: quoted-printable

<html xmlns:v=3D"urn:schemas-microsoft-com:vml" =
xmlns:o=3D"urn:schemas-microsoft-com:office:office" =
xmlns:w=3D"urn:schemas-microsoft-com:office:word" =
xmlns:st1=3D"urn:schemas-microsoft-com:office:smarttags" =
xmlns=3D"http://www.w3.org/TR/REC-html40">

<head>



<meta name=3DProgId content=3DWord.Document>
<meta name=3DGenerator content=3D"Microsoft Word 10">
<meta name=3DOriginator content=3D"Microsoft Word 10">
<link rel=3DFile-List href=3D"cid:filelist.xml@01C59905.2FBC4140">
<link rel=3DEdit-Time-Data href=3D"cid:editdata.mso@01C59905.2FBC4140">
<!--[if !mso]>
<style>
v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
w\:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}
</style>
<![endif]--><o:SmartTagType
 namespaceuri=3D"urn:schemas-microsoft-com:office:smarttags" =
name=3D"date"/>
<o:SmartTagType =
namespaceuri=3D"urn:schemas-microsoft-com:office:smarttags"
 name=3D"PersonName"/>
<!--[if gte mso 9]><xml>
 <o:OfficeDocumentSettings>
  <o:DoNotRelyOnCSS/>
 </o:OfficeDocumentSettings>
</xml><![endif]--><!--[if gte mso 9]><xml>
 <w:WordDocument>
  <w:SpellingState>Clean</w:SpellingState>
  <w:GrammarState>Clean</w:GrammarState>
  <w:DocumentKind>DocumentEmail</w:DocumentKind>
  <w:EnvelopeVis/>
  <w:Compatibility>
   <w:BreakWrappedTables/>
   <w:SnapToGridInCell/>
   <w:WrapTextWithPunct/>
   <w:UseAsianBreakRules/>
  </w:Compatibility>
  <w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel>
 </w:WordDocument>
</xml><![endif]--><!--[if !mso]>
<style>
st1\:*{behavior:url(#default#ieooui) }
</style>
<![endif]-->
<style>
<!--
 /* Font Definitions */
 @font-face
	{font-family:"Monotype Corsiva";
	panose-1:3 1 1 1 1 2 1 1 1 1;
	mso-font-charset:0;
	mso-generic-font-family:script;
	mso-font-pitch:variable;
	mso-font-signature:647 0 0 0 159 0;}
 /* Style Definitions */
 p.MsoNormal, li.MsoNormal, div.MsoNormal
	{mso-style-parent:"";
	margin:0in;
	margin-bottom:.0001pt;
	mso-pagination:widow-orphan;
	font-size:12.0pt;
	font-family:"Times New Roman";
	mso-fareast-font-family:"Times New Roman";
	mso-believe-normal-left:yes;}
a:link, span.MsoHyperlink
	{color:blue;
	text-decoration:underline;
	text-underline:single;}
a:visited, span.MsoHyperlinkFollowed
	{color:purple;
	text-decoration:underline;
	text-underline:single;}
span.EmailStyle17
	{mso-style-type:personal-compose;
	mso-style-noshow:yes;
	color:black;}
span.SpellE
	{mso-style-name:"";
	mso-spl-e:yes;}
span.GramE
	{mso-style-name:"";
	mso-gram-e:yes;}
@page Section1
	{size:8.5in 11.0in;
	margin:1.0in 1.25in 1.0in 1.25in;
	mso-header-margin:.5in;
	mso-footer-margin:.5in;
	mso-paper-source:0;}
div.Section1
	{page:Section1;}
-->
</style>
<!--[if gte mso 10]>
<style>
 /* Style Definitions */=20
 table.MsoNormalTable
	{mso-style-name:"Table Normal";
	mso-tstyle-rowband-size:0;
	mso-tstyle-colband-size:0;
	mso-style-noshow:yes;
	mso-style-parent:"";
	mso-padding-alt:0in 5.4pt 0in 5.4pt;
	mso-para-margin:0in;
	mso-para-margin-bottom:.0001pt;
	mso-pagination:widow-orphan;
	font-size:10.0pt;
	font-family:"Times New Roman";}
</style>
<![endif]--><![if mso 9]>
<style>
p.MsoNormal
	{margin-left:11.25pt;}
</style>
<![endif]><!--[if gte mso 9]><xml>
 <o:shapedefaults v:ext=3D"edit" spidmax=3D"1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
 <o:shapelayout v:ext=3D"edit">
  <o:idmap v:ext=3D"edit" data=3D"1" />
 </o:shapelayout></xml><![endif]-->
</head>

<body bgcolor=3Dwhite background=3D"cid:image001.jpg@01C59905.2FBC4140" =
lang=3DEN-US
link=3Dblue vlink=3Dpurple =
style=3D'tab-interval:.5in;margin-left:11.25pt;margin-top:
18.75pt'>
<img src=3D"cid:image001.jpg@01C59905.2FBC4140"
v:src=3D"cid:image001.jpg@01C59905.2FBC4140" v:shapes=3D"_x0000_Mail" =
width=3D0
height=3D0 class=3Dshape style=3D'display:none;width:0;height:0'>

<div class=3DSection1>

<p class=3DMsoNormal =
style=3D'mso-layout-grid-align:none;text-autospace:none'><font
size=3D2 face=3D"Courier New"><span =
style=3D'font-size:10.0pt;font-family:"Courier New"'>This
patch correctly implements the IA64 atomic operations in 32-bit mode. =
Tested on
HP-UX 11.23 on Itanium 2 with HP ANSI <span class=3DSpellE>aC</span>++ =
6.00 [</span></font><st1:date
Month=3D"8" Day=3D"25" Year=3D"2004"><font size=3D2 face=3D"Courier =
New"><span
 style=3D'font-size:10.0pt;font-family:"Courier New"'>Aug 25 =
2004</span></font></st1:date><font
size=3D2 face=3D"Courier New"><span =
style=3D'font-size:10.0pt;font-family:"Courier New"'>]
for IA64.<o:p></o:p></span></font></p>

<p class=3DMsoNormal =
style=3D'mso-layout-grid-align:none;text-autospace:none'><font
size=3D2 face=3D"Courier New"><span =
style=3D'font-size:10.0pt;font-family:"Courier =
New"'><o:p>&nbsp;</o:p></span></font></p>

<p class=3DMsoNormal =
style=3D'mso-layout-grid-align:none;text-autospace:none'><span
class=3DSpellE><font size=3D2 face=3D"Courier New"><span =
style=3D'font-size:10.0pt;
font-family:"Courier New"'>ChangeLog</span></font></span><font size=3D2
face=3D"Courier New"><span =
style=3D'font-size:10.0pt;font-family:"Courier =
New"'>:<o:p></o:p></span></font></p>

<p class=3DMsoNormal =
style=3D'mso-layout-grid-align:none;text-autospace:none'><font
size=3D2 face=3D"Courier New"><span =
style=3D'font-size:10.0pt;font-family:"Courier =
New"'><o:p>&nbsp;</o:p></span></font></p>

<p class=3DMsoNormal =
style=3D'mso-layout-grid-align:none;text-autospace:none'><font
size=3D2 face=3D"Courier New"><span =
style=3D'font-size:10.0pt;font-family:"Courier New"'>2005-08-<span
class=3DGramE>04<span style=3D'mso-spacerun:yes'>&nbsp; =
</span></span></span></font><st1:PersonName><span
 class=3DGramE><font size=3D2 face=3D"Courier New"><span =
style=3D'font-size:10.0pt;
 font-family:"Courier New"'>Nicole</span></font></span><font size=3D2
 face=3D"Courier New"><span =
style=3D'font-size:10.0pt;font-family:"Courier New"'>
 Willson</span></font></st1:PersonName><font size=3D2 face=3D"Courier =
New"><span
style=3D'font-size:10.0pt;font-family:"Courier New"'><span
style=3D'mso-spacerun:yes'>&nbsp; =
</span>&lt;willson@roguewave.com&gt;<o:p></o:p></span></font></p>

<p class=3DMsoNormal =
style=3D'mso-layout-grid-align:none;text-autospace:none'><font
size=3D2 face=3D"Courier New"><span =
style=3D'font-size:10.0pt;font-family:"Courier =
New"'><o:p>&nbsp;</o:p></span></font></p>

<p class=3DMsoNormal =
style=3D'mso-layout-grid-align:none;text-autospace:none'><font
size=3D2 face=3D"Courier New"><span =
style=3D'font-size:10.0pt;font-family:"Courier New"'><span
style=3D'mso-tab-count:1'>&nbsp;&nbsp;&nbsp; =
</span>STDCXX-11:<o:p></o:p></span></font></p>

<p class=3DMsoNormal =
style=3D'mso-layout-grid-align:none;text-autospace:none'><font
size=3D2 face=3D"Courier New"><span =
style=3D'font-size:10.0pt;font-family:"Courier New"'><span
style=3D'mso-tab-count:1'>&nbsp;&nbsp;&nbsp; </span>* <span =
class=3DGramE>src/atomic-ia64-32.s</span>:
same as src/atomic-ia64.s but for<o:p></o:p></span></font></p>

<p class=3DMsoNormal><font size=3D2 face=3D"Courier New"><span =
style=3D'font-size:10.0pt;
font-family:"Courier New"'><span =
style=3D'mso-tab-count:1'>&nbsp;&nbsp;&nbsp; </span><span
class=3DGramE>IA64 in 32-bit mode.</span></span></font><font =
color=3Dblack><span
style=3D'color:black'><o:p></o:p></span></font></p>

<p class=3DMsoNormal><font size=3D3 color=3Dblack face=3D"Times New =
Roman"><span
style=3D'font-size:12.0pt;color:black'><o:p>&nbsp;</o:p></span></font></=
p>

<div>

<p class=3DMsoNormal><st1:PersonName><b =
style=3D'mso-bidi-font-weight:normal'><i
 style=3D'mso-bidi-font-style:normal'><font size=3D4 color=3D"#993366"
 face=3D"Monotype Corsiva"><span =
style=3D'font-size:14.0pt;font-family:"Monotype Corsiva";
 =
mso-bidi-font-family:Arial;color:#993366;font-weight:bold;mso-bidi-font-=
weight:
 =
normal;font-style:italic;mso-bidi-font-style:normal;mso-no-proof:yes'>Ni=
cole
 Willson</span></font></i></b></st1:PersonName><b =
style=3D'mso-bidi-font-weight:
normal'><i style=3D'mso-bidi-font-style:normal'><font size=3D4 =
color=3D"#993366"
face=3D"Monotype Corsiva"><span =
style=3D'font-size:14.0pt;font-family:"Monotype Corsiva";
mso-bidi-font-family:Arial;color:#993366;font-weight:bold;mso-bidi-font-=
weight:
normal;font-style:italic;mso-bidi-font-style:normal;mso-no-proof:yes'><o=
:p></o:p></span></font></i></b></p>

<p class=3DMsoNormal><b style=3D'mso-bidi-font-weight:normal'><font =
size=3D2
color=3Dblack face=3D"Courier New"><span =
style=3D'font-size:10.0pt;font-family:"Courier New";
mso-bidi-font-family:Arial;color:black;font-weight:bold;mso-bidi-font-we=
ight:
normal;mso-no-proof:yes'>Consulting =
Engineer<o:p></o:p></span></font></b></p>

<p class=3DMsoNormal><b style=3D'mso-bidi-font-weight:normal'><font =
size=3D2
color=3Dblack face=3D"Courier New"><span =
style=3D'font-size:10.0pt;font-family:"Courier New";
mso-bidi-font-family:Arial;color:black;font-weight:bold;mso-bidi-font-we=
ight:
normal;mso-no-proof:yes'>Rogue Wave Software, =
Inc.<o:p></o:p></span></font></b></p>

<p class=3DMsoNormal><b style=3D'mso-bidi-font-weight:normal'><font =
size=3D2
color=3Dblack face=3D"Courier New"><span =
style=3D'font-size:10.0pt;font-family:"Courier New";
mso-bidi-font-family:Arial;color:black;font-weight:bold;mso-bidi-font-we=
ight:
normal;mso-no-proof:yes'>A Division of =
Quovadx<o:p></o:p></span></font></b></p>

<p class=3DMsoNormal><b style=3D'mso-bidi-font-weight:normal'><font =
size=3D2
color=3Dblack face=3D"Courier New"><span =
style=3D'font-size:10.0pt;font-family:"Courier New";
mso-bidi-font-family:Arial;color:black;font-weight:bold;mso-bidi-font-we=
ight:
normal;mso-no-proof:yes'>303-545-3210<o:p></o:p></span></font></b></p>

</div>

<p class=3DMsoNormal align=3Dcenter style=3D'text-align:center'><font =
size=3D2
color=3Dblack face=3D"Courier New"><span =
style=3D'font-size:10.0pt;font-family:"Courier New";
color:black'><img width=3D600 height=3D60 id=3DridImg
src=3D"cid:image002.gif@01C59905.2FBC4140" =
align=3Dbottom><o:p></o:p></span></font></p>

</div>

<span id=3D"_AthCaret"></span>
</body>

</html>

------_=_NextPart_001_01C59936.775DB200--

------_=_NextPart_000_01C59936.775DB200
Content-Type: application/octet-stream;
	name="atomic-ia64-32.s"
Content-Transfer-Encoding: quoted-printable
Content-Disposition: attachment;
	filename="atomic-ia64-32.s"

////////////////////////////////////////////////////////////////////////=
////
//
// atomic-ia64-32.s
//
// $Id: //stdlib/4.1.1-rel/source/stdlib/atomic-ia64-32.s#1 $
//
////////////////////////////////////////////////////////////////////////=
////
//
// Copyright (c) 1994-2004 Quovadx, Inc. All Rights Reserved.
//
// This computer software  is owned by Quovadx, Inc.  and is protected =
by
// U.S.  copyright laws  and other  laws and  by  international =
treaties.
// This computer  software is furnished  by Quovadx, Inc., pursuant  to =
a
// written license  agreement and may  be used, copied,  transmitted, =
and
// stored only in accordance with the terms of such license agreement =
and
// with  the inclusion  of  the above  copyright  notice.  This  =
computer
// software or any other copies  thereof may not be provided or =
otherwise
// made available to any other person.
//
//
// U.S. Government Restricted Rights.
//
// This computer software: (a) was developed at private expense and is =
in
// all respects the proprietary information of Quovadx, Inc.; (b) was =
not
// developed with  government funds;  (c) is a  trade secret  of =
Quovadx,
// Inc. for all purposes of the  Freedom of Information Act; and (d) is =
a
// commercial item  and thus, pursuant  to Section 12.212 of  the =
Federal
// Acquisition  Regulations (FAR) and  DFAR Supplement  Section =
227.7202,
// Government's use,  duplication or disclosure of  the computer =
software
// is subject to the restrictions set forth by Quovadx, Inc.
//
////////////////////////////////////////////////////////////////////////=
////

        .text
        //.pred.safe_across_calls p1-p5,p16-p63
	.psr abi32=20
        .psr msb

////////////////////////////////////////////////////////////////////////=
////
// extern "C" char __rw_atomic_xchg8 (char *x, char y);
//
// Atomically assigns the 8-bit value y to *x and returns
// the original (before assignment) 8-bit value of *x.
////////////////////////////////////////////////////////////////////////=
////

        .global __rw_atomic_xchg8#
        .proc   __rw_atomic_xchg8#

__rw_atomic_xchg8:

        .prologue
        .body
        // .mfb
	addp4 r9 =3D 0, r32 // Needed to be able to dereference a 32 bit =
pointer
	;;
        xchg1 r8 =3D [r9], r33
        nop 0
        br.ret.sptk.many b0

        .endp __rw_atomic_xchg8#

////////////////////////////////////////////////////////////////////////=
////
// extern "C" char __rw_atomic_add8 (char *x, int y);
//
// Atomically increments the 8-bit value *x by y and returns
// the new (after increment) 8-bit value of *x.
////////////////////////////////////////////////////////////////////////=
////

        .global __rw_atomic_add8#
        .proc   __rw_atomic_add8#

__rw_atomic_add8:

        .prologue
        .body
         // .mmb
        mf
	addp4 r9 =3D 0, r32 // Needed to be able to dereference a 32 bit =
pointer
	;;
        ld1.acq r15 =3D [r9]
        nop 0
        ;;
.add8_busywait:
         // .mmi
        mov ar.ccv =3D r15
        add r8 =3D r15, r33
        mov r2 =3D r15
        ;;
         // .mmb
        nop 0
        cmpxchg1.acq r15 =3D [r9], r8, ar.ccv
        nop 0
        ;;
         // .mbb
        cmp.ne p8, p9 =3D r2, r15
        (p9) br.ret.dpnt.many rp
        br .add8_busywait

        .endp __rw_atomic_add8#

////////////////////////////////////////////////////////////////////////=
////
// extern "C" short __rw_atomic_xchg16 (short *x, short y);
//
// Atomically assigns the 16-bit value y to *x and returns
// the original (before assignment) 16-bit value of *x.
////////////////////////////////////////////////////////////////////////=
////

        .global __rw_atomic_xchg16#
        .proc   __rw_atomic_xchg16#

__rw_atomic_xchg16:

        .prologue
        .body
        // .mfb
	addp4 r9 =3D 0, r32 // Needed to be able to dereference a 32 bit =
pointer
	;;
        xchg2 r8 =3D [r9], r33
        nop 0
        br.ret.sptk.many b0

        .endp __rw_atomic_xchg16#

////////////////////////////////////////////////////////////////////////=
////
// extern "C" short __rw_atomic_add16 (short *x, short y);
//
// Atomically increments the 16-bit value *x by y and returns
// the new (after increment) 16-bit value of *x.
////////////////////////////////////////////////////////////////////////=
////

        .global __rw_atomic_add16#
        .proc   __rw_atomic_add16#

__rw_atomic_add16:

        .prologue
        .body
         // .mmb
        mf
	addp4 r9 =3D 0, r32 // Needed to be able to dereference a 32 bit =
pointer
	;;
        ld2.acq r15 =3D [r9]
        nop 0
        ;;
.add16_busywait:
         // .mmi
        mov ar.ccv =3D r15
        add r8 =3D r15, r33
        mov r2 =3D r15
        ;;
         // .mmb
        nop 0
        cmpxchg2.acq r15 =3D [r9], r8, ar.ccv
        nop 0
        ;;
         // .mbb
        cmp.ne p8, p9 =3D r2, r15
        (p9) br.ret.dpnt.many rp
        br .add16_busywait

        .endp __rw_atomic_add16#

////////////////////////////////////////////////////////////////////////=
////
// extern "C" int __rw_atomic_xchg32 (int *x, int y);
//
// Atomically assigns the 32-bit value y to *x and returns
// the original (before assignment) 32-bit value of *x.
////////////////////////////////////////////////////////////////////////=
////

        .global __rw_atomic_xchg32#
        .proc   __rw_atomic_xchg32#

__rw_atomic_xchg32:

        .prologue
        .body
        // .mfb

	addp4 r9 =3D 0, r32 // Needed to be able to dereference a 32 bit =
pointer
	;;
        xchg4 r8 =3D [r9], r33
        nop 0
        br.ret.sptk.many b0

        .endp __rw_atomic_xchg32#

////////////////////////////////////////////////////////////////////////=
////
// extern "C" int __rw_atomic_add32 (int *x, int y);
//
// Atomically increments the 32-bit value *x by y and returns
// the new (after increment) 32-bit value of *x.
////////////////////////////////////////////////////////////////////////=
////

        .global __rw_atomic_add32#
        .proc   __rw_atomic_add32#

__rw_atomic_add32:

        .prologue
        .body
         // .mmb
        mf
	addp4 r9 =3D 0, r32 // Needed to be able to dereference a 32 bit =
pointer
	;;
        ld4.acq r15 =3D [r9]
        nop 0
        ;;
.add32_busywait:
         // .mmi
        mov ar.ccv =3D r15
        add r8 =3D r15, r33
        mov r2 =3D r15
        ;;
         // .mmb
        nop 0
        cmpxchg4.acq r15 =3D [r9], r8, ar.ccv
        nop 0
        ;;
         // .mbb
        cmp4.ne p8, p9 =3D r2, r15
        (p9) br.ret.dpnt.many rp
        br .add32_busywait

        .endp __rw_atomic_add32#

------_=_NextPart_000_01C59936.775DB200
Content-Type: image/jpeg;
	name="image001.jpg"
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
	filename="image001.jpg"
Content-ID: <image001.jpg@01C59905.2FBC4140>

/9j/4AAQSkZJRgABAgEASABIAAD/7QZAUGhvdG9zaG9wIDMuMAA4QklNA+0AAAAAABAASAAAAAEA
AQBIAAAAAQABOEJJTQPzAAAAAAAIAAAAAAAAAAA4QklNBAoAAAAAAAEAADhCSU0nEAAAAAAACgAB
AAAAAAAAAAI4QklNA/UAAAAAAEgAL2ZmAAEAbGZmAAYAAAAAAAEAL2ZmAAEAoZmaAAYAAAAAAAEA
MgAAAAEAWgAAAAYAAAAAAAEANQAAAAEALQAAAAYAAAAAAAE4QklNA/gAAAAAAHAAAP//////////
//////////////////8D6AAAAAD/////////////////////////////A+gAAAAA////////////
/////////////////wPoAAAAAP////////////////////////////8D6AAAOEJJTQQIAAAAAAAQ
AAAAAQAAAkAAAAJAAAAAADhCSU0ECQAAAAAEzwAAAAEAAACAAAAAgAAAAYAAAMAAAAAEswAYAAH/
2P/gABBKRklGAAECAQBIAEgAAP/+ACdGaWxlIHdyaXR0ZW4gYnkgQWRvYmUgUGhvdG9zaG9wqCA0
LjAA/+4ADkFkb2JlAGSAAAAAAf/bAIQADAgICAkIDAkJDBELCgsRFQ8MDA8VGBMTFRMTGBEMDAwM
DAwRDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAENCwsNDg0QDg4QFA4ODhQUDg4ODhQRDAwM
DAwREQwMDAwMDBEMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwM/8AAEQgAgACAAwEiAAIRAQMR
Af/dAAQACP/EAT8AAAEFAQEBAQEBAAAAAAAAAAMAAQIEBQYHCAkKCwEAAQUBAQEBAQEAAAAAAAAA
AQACAwQFBgcICQoLEAABBAEDAgQCBQcGCAUDDDMBAAIRAwQhEjEFQVFhEyJxgTIGFJGhsUIjJBVS
wWIzNHKC0UMHJZJT8OHxY3M1FqKygyZEk1RkRcKjdDYX0lXiZfKzhMPTdePzRieUpIW0lcTU5PSl
tcXV5fVWZnaGlqa2xtbm9jdHV2d3h5ent8fX5/cRAAICAQIEBAMEBQYHBwYFNQEAAhEDITESBEFR
YXEiEwUygZEUobFCI8FS0fAzJGLhcoKSQ1MVY3M08SUGFqKygwcmNcLSRJNUoxdkRVU2dGXi8rOE
w9N14/NGlKSFtJXE1OT0pbXF1eX1VmZ2hpamtsbW5vYnN0dXZ3eHl6e3x//aAAwDAQACEQMRAD8A
6/v5hJJLhPYlA/glwklMpKVolP3pp7p++iSldvNKR3+SRS8klK+SU+CRSSUrv5JSOEo7pT2SUpKN
EpMeJSJSUr4pJdkvjykp/9Dr+QkJIShKQT8E9iUEvJJLVJStfmkPw8UvglOsH70lK+PCUd0hwl8U
lK8kvhwEvNL4JKUSkEtOEklKjxS0S58vNIpKUlB+SUa6duUoSU//0evTd0/YjhL569k9iUUkktJ8
0lKSBKR5S5SUrRLVIeSY68d0lL9vimGif+KXkkpWiXhHzS4S1RUoifIJaBKdPJL4oKV5/elOmiXw
SnXQpKf/0uv14SOqQ8PuSPMp7EpLulKRn5JKUkPvT88pu89+ySlJQAl/rCRjg/JJS3h+Cf8AIkkf
E/gkpXKQ8kvuSmPJJStO6RSS/KkpXhPdJKfH5JJKf//T69LjQpf6yl+RPYlf6hLzSB/3JdklK8+3
glz/ABKSUapKVPilx/sSB8PklISUqNP70vxCRSSUrRJKI80vNJSu6RS5S0+SSlJcaH70pCUJKf/U
6/4JDwS+CXKexK+KRMJaz8Eo7JKV3SidTwkkQkpRPyS7pSEklK5SS8+6SSla8pJtDpx5J0lLaJz/
ALwl240SJhJSo1+HZL8qXmlqR8UlP//V67wP4JylH3pTrHfunsSkuPNL8vZLySUrlJNyU6SlJdpS
Snx7d0lK158UvMfclyNO6XCSlHRIJfxSSUpIpJQkpQ1SS1kSkkp//9br5180pHZKUpjT8U9iVyUu
2iXxCWqSldvBJLTsUuP4pKV2SA/2Jo08E6SlTokEuNEklKmEkw5TwOUlK8kkvwKRSUqfx4TpkuNB
80lP/9kAOEJJTQQGAAAAAAAHAAMBAQABAQD//gAnRmlsZSB3cml0dGVuIGJ5IEFkb2JlIFBob3Rv
c2hvcKggNC4wAP/uACFBZG9iZQBkAAAAAAEDABADAgMGAAAAAAAAAAAAAAAA/9sAhAAKBwcHCAcK
CAgKDwoICg8SDQoKDRIUEBASEBAUEQwMDAwMDBEMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwM
AQsMDBUTFSIYGCIUDg4OFBQODg4OFBEMDAwMDBERDAwMDAwMEQwMDAwMDAwMDAwMDAwMDAwMDAwM
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

------_=_NextPart_000_01C59936.775DB200
Content-Type: image/gif;
	name="image002.gif"
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
	filename="image002.gif"
Content-ID: <image002.gif@01C59905.2FBC4140>

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
2vGa4RxnOc+ZznW2853xnOQgAAA7

------_=_NextPart_000_01C59936.775DB200--

--jkegponklfbinbdamajo--

