<html><head><base href="x-msg://4257/"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; ">Rotate now has an extra parameter to indicate the bytes rotated.  You do need to use TInt.Chop to treat the result as having the correct size.  (See how folding is done in m3front/src/builtinWord operations.)<div><br><div>
<span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0; "><span class="Apple-style-span" style="border-collapse: separate; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; -webkit-text-decorations-in-effect: none; text-indent: 0px; -webkit-text-size-adjust: auto; text-transform: none; orphans: 2; white-space: normal; widows: 2; word-spacing: 0px; "><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><span class="Apple-style-span" style="border-collapse: separate; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; -webkit-text-decorations-in-effect: none; text-indent: 0px; -webkit-text-size-adjust: auto; text-transform: none; orphans: 2; white-space: normal; widows: 2; word-spacing: 0px; "><span class="Apple-style-span" style="border-collapse: separate; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; -webkit-text-decorations-in-effect: none; text-indent: 0px; -webkit-text-size-adjust: auto; text-transform: none; orphans: 2; white-space: normal; widows: 2; word-spacing: 0px; "><span class="Apple-style-span" style="border-collapse: separate; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; -webkit-text-decorations-in-effect: none; text-indent: 0px; -webkit-text-size-adjust: auto; text-transform: none; orphans: 2; white-space: normal; widows: 2; word-spacing: 0px; "><span class="Apple-style-span" style="border-collapse: separate; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; -webkit-text-decorations-in-effect: none; text-indent: 0px; -webkit-text-size-adjust: auto; text-transform: none; orphans: 2; white-space: normal; widows: 2; word-spacing: 0px; "><span class="Apple-style-span" style="border-collapse: separate; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; -webkit-text-decorations-in-effect: none; text-indent: 0px; -webkit-text-size-adjust: auto; text-transform: none; orphans: 2; white-space: normal; widows: 2; word-spacing: 0px; "><span class="Apple-style-span" style="border-collapse: separate; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; -webkit-text-decorations-in-effect: none; text-indent: 0px; -webkit-text-size-adjust: auto; text-transform: none; orphans: 2; white-space: normal; widows: 2; word-spacing: 0px; "><span class="Apple-style-span" style="border-collapse: separate; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; -webkit-text-decorations-in-effect: none; text-indent: 0px; -webkit-text-size-adjust: auto; text-transform: none; orphans: 2; white-space: normal; widows: 2; word-spacing: 0px; "><span class="Apple-style-span" style="border-collapse: separate; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; -webkit-text-decorations-in-effect: none; text-indent: 0px; -webkit-text-size-adjust: auto; text-transform: none; orphans: 2; white-space: normal; widows: 2; word-spacing: 0px; "><div><font class="Apple-style-span" color="#0000FF"><font class="Apple-style-span" face="Gill Sans"><span class="Apple-style-span" style="color: rgb(0, 0, 255); font-family: 'Gill Sans'; "><span class="Apple-style-span" style="color: rgb(0, 0, 255); font-family: 'Gill Sans'; ">Antony Hosking</span></span></font></font><font class="Apple-style-span" face="Gill Sans"><span class="Apple-style-span" style="font-family: 'Gill Sans'; "><span class="Apple-style-span" style="font-family: 'Gill Sans'; "><span class="Apple-converted-space"> </span>|<span class="Apple-converted-space"> </span></span></span><span class="Apple-style-span" style="font-family: 'Gill Sans'; "><span class="Apple-style-span" style="font-family: 'Gill Sans'; ">Associate Professor</span></span><span class="Apple-style-span" style="font-family: 'Gill Sans'; "><span class="Apple-style-span" style="font-family: 'Gill Sans'; "> | Computer Science | Purdue University</span></span></font></div><div><font class="Apple-style-span" face="GillSans-Light"><span class="Apple-style-span" style="font-family: GillSans-Light; ">305 N. University Street | West Lafayette | IN 47907 | USA</span></font></div><div><font class="Apple-style-span" color="#0000FF" face="Gill Sans"><span class="Apple-style-span" style="color: rgb(0, 0, 255); font-family: 'Gill Sans'; "><span class="Apple-style-span" style="color: rgb(0, 0, 255); font-family: 'Gill Sans'; ">Office</span></span></font><font class="Apple-style-span" face="GillSans-Light"><span class="Apple-style-span" style="font-family: GillSans-Light; "><span class="Apple-style-span" style="font-family: GillSans-Light; "> +1 765 494 6001 |<span class="Apple-converted-space"> </span></span></span></font><font class="Apple-style-span" color="#0000FF" face="Gill Sans"><span class="Apple-style-span" style="color: rgb(0, 0, 255); font-family: 'Gill Sans'; "><span class="Apple-style-span" style="color: rgb(0, 0, 255); font-family: 'Gill Sans'; ">Mobile</span></span></font><font class="Apple-style-span" face="GillSans-Light"><span class="Apple-style-span" style="font-family: GillSans-Light; "><span class="Apple-style-span" style="font-family: GillSans-Light; "><span class="Apple-converted-space"> </span>+1 765 427 5484</span></span></font></div><div><font class="Apple-style-span" face="GillSans-Light"><br class="khtml-block-placeholder"></font></div></span></span></span></span></span></span></span><br class="Apple-interchange-newline"></span></div></span></span><br class="Apple-interchange-newline">
</div>
<br><div><div>On 18 Feb 2010, at 16:08, Jay K wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><span class="Apple-style-span" style="border-collapse: separate; font-family: Helvetica; font-size: medium; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; "><div class="hmmessage" style="font-size: 10pt; font-family: Verdana; ">You had changed TWord.Rotate() uses to assume Target.Integer.bytes.<br> x: M3x86Rep.Operand;<span class="Apple-converted-space"> </span><br> TWord.Rotate(x.imm, m, n) => TWord.Roate(x.imm, Target.Integer.bytes, m, n)<span class="Apple-converted-space"> </span><br>What probably would have worked is more like:<span class="Apple-converted-space"> </span><br> TWord.Rotate(x.imm, m, n) => TWord.Rotate(x.imm, TypeSize(x.optype) * 4, m, n)<span class="Apple-converted-space"> </span><br> <br> <br>Most uses of TWord/TInt are ok with the new always 8 byte precision, but Rotate is special.<span class="Apple-converted-space"> </span><br>Precision affects the intermediate results.<span class="Apple-converted-space"> </span><br> <br> <br>That's the only possible problem that stood out to me on a quick read.<br>Whatever it all was though, the compiler no longer worked, basically not at all,<br>even if I removed the assertions about integers fitting in their claimed types.<br>I wasn't too keen on debugging that right now but I should before much longer.<br>I'd rather not keep a separate copy of TInt/TWord..<br> <br> <br>  - Jay<br><br> <br>> From:<span class="Apple-converted-space"> </span><a href="mailto:hosking@cs.purdue.edu">hosking@cs.purdue.edu</a><br>> Date: Thu, 18 Feb 2010 12:07:57 -0500<br>> To:<span class="Apple-converted-space"> </span><a href="mailto:jay.krell@cornell.edu">jay.krell@cornell.edu</a><br>> CC:<span class="Apple-converted-space"> </span><a href="mailto:m3commit@elegosoft.com">m3commit@elegosoft.com</a><br>> Subject: Re: [M3commit] CVS Update: cm3<br>><span class="Apple-converted-space"> </span><br>> I'm not sure what you mean about the type size... Please elaborate. Do you have a test case?<br>> Yes, my intention here is that *no* client should presume anything about the actual precision of TInt/TWord. Indeed, we could make it larger, and should be able to without affecting clients. The only thing clients must do when manipulating Target.Int with TWord is to realise that the results are still interpreted in the TInt.Size space. To get a smaller interpretation they must explicitly use TInt.Chop to cut down to the desired number of bytes (and so sign-extend from that smaller size out to the TInt.Size). You will need to use Chop in places where you insert/extract/rotate/Xor (i.e., the sign needs extending in the result).<br>><span class="Apple-converted-space"> </span><br>> On 18 Feb 2010, at 05:05, Jay K wrote:<br>><span class="Apple-converted-space"> </span><br>> > Another problem now is that 64bit rotate of constants doesn't get the type size correct.<br>> > Anyway I'm trying to get things back to working by bringing in the old code, only in m3back, and then can find the actual problems..<br>> > I agree it is simpler now that TInt/TWord have a fixed precision of exactly 64 bits. Maybe make it even larger, say 72 bytes, a) to fix that warning a different way b) to sort of get better testing?<br>> ><span class="Apple-converted-space"> </span><br>> > - Jay<br>> ><span class="Apple-converted-space"> </span><br>> ><span class="Apple-converted-space"> </span><br>> > From:<span class="Apple-converted-space"> </span><a href="mailto:jay.krell@cornell.edu">jay.krell@cornell.edu</a><br>> > To:<span class="Apple-converted-space"> </span><a href="mailto:jkrell@elego.de">jkrell@elego.de</a>;<span class="Apple-converted-space"> </span><a href="mailto:m3commit@elegosoft.com">m3commit@elegosoft.com</a><br>> > Date: Thu, 18 Feb 2010 08:09:30 +0000<br>> > Subject: Re: [M3commit] CVS Update: cm3<br>> ><span class="Apple-converted-space"> </span><br>> > Tony there are multiple related problems here.<br>> ><span class="Apple-converted-space"> </span><br>> > 1) The front end likes to output values between 128 and 256 with type Int8 instead of Word8.<br>> > e.g. in InitTypecell.<br>> > And maybe similar for 16/32/64, I don't know.<br>> ><span class="Apple-converted-space"> </span><br>> > 2) Even if the front end used the correct Word8 for them, m3back needs to use TWord.ToBytes vs. TInt.ToBytes for unsigned types, but TWord.ToBytes doesn't exist.<br>> ><span class="Apple-converted-space"> </span><br>> > I'll see what I can do.<br>> > I'll probably add TWord.ToBytes and if the value fits using it, accept it.<br>> ><span class="Apple-converted-space"> </span><br>> > - Jay<br>> ><span class="Apple-converted-space"> </span><br>> > > Date: Thu, 18 Feb 2010 08:30:35 +0000<br>> > > To:<span class="Apple-converted-space"> </span><a href="mailto:m3commit@elegosoft.com">m3commit@elegosoft.com</a><br>> > > From:<span class="Apple-converted-space"> </span><a href="mailto:jkrell@elego.de">jkrell@elego.de</a><br>> > > Subject: [M3commit] CVS Update: cm3<br>> > ><span class="Apple-converted-space"> </span><br>> > > CVSROOT: /usr/cvs<br>> > > Changes by: jkrell@birch. 10/02/18 08:30:35<br>> > ><span class="Apple-converted-space"> </span><br>> > > Modified files:<br>> > > cm3/m3-sys/m3back/src/: M3x86.m3<span class="Apple-converted-space"> </span><br>> > ><span class="Apple-converted-space"> </span><br>> > > Log message:<br>> > > more information when this assertion fails, as it now does:<br>> > ><span class="Apple-converted-space"> </span><br>> > > == package C:\dev2\cm3.2\m3-libs\m3core ==<br>> > ><span class="Apple-converted-space"> </span><br>> > > +++ C:\cm3\bin\cm3.exe -build -DROOT=C:/dev2/cm3.2 -DCM3_VERSION_TEXT=d5.8.2<br>> > ><span class="Apple-converted-space"> </span><br>> > > new source -> compiling RTHooks.i3<br>> > > "..\src\runtime\common\RTHooks.i3", line 15: len:2 t:Int.8 CG_Bytes[t]:1 158<br>> > ><span class="Apple-converted-space"> </span><br>> > > ***<br>> > > *** runtime error:<br>> > > *** <*ASSERT*> failed.<br>> > > *** file "..\src\M3x86.m3", line 1114<br>> > > ***<br>> > ><span class="Apple-converted-space"> </span><br>> > > Stack trace:<br>> > > FP PC Procedure<br>> > > --------- --------- -------------------------------<br>> > > 0x12f5cc 0x43c230 init_int + 0x488 in ..\src\M3x86.m3<br>> > > 0x12f5f8 0x63f506 init_int + 0xa5 in ..\src\M3CG_Check.m3<br>> > > 0x12f638 0x4fe1ce Init_int + 0x1be in ..\src\misc\CG.m3<br>> > > 0x12f65c 0x4fe33e DumpInt + 0x34 in ..\src\misc\CG.m3<br>> > > 0x12f6a4 0x4fc86a DumpPendingNodes + 0x2c2 in ..\src\misc\CG.m3<br>> > > 0x12f6cc 0x4fa4c6 Bind_segment + 0xe0 in ..\src\misc\CG.m3<br>> > > 0x12f72c 0x4c71e8 GenLinkerInfo + 0x7d7 in ..\src\values\Module.m3<br>> > > 0x12f770 0x4c577c CompileInterface + 0x30a in ..\src\values\Module.m3<br>> > > 0x12f7a8 0x4c5252 Compile + 0x24d in ..\src\values\Module.m3<br>> > > 0x12f804 0x4aff65 DoCompile + 0x7cd in ..\src\misc\M3Front.m3<br>> > ><span class="Apple-converted-space"> </span><br>> > > confusion here about signed vs. unsigned integers;<br>> > > the signed number 158 requires 2 bytes but the unsigned number 158<br>> > > only requirs 1 byte<br>> > ><span class="Apple-converted-space"> </span><br>> ><span class="Apple-converted-space"> </span><br>><span class="Apple-converted-space"> </span><br></div></span></blockquote></div><br></div></body></html>