<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class=""><br class=""><div><br class=""><blockquote type="cite" class=""><div class="">Am 30.12.2021 um 21:07 schrieb Jonas Maebe via fpc-devel <<a href="mailto:fpc-devel@lists.freepascal.org" class="">fpc-devel@lists.freepascal.org</a>>:</div><br class="Apple-interchange-newline"><div class=""><meta charset="UTF-8" class=""><span style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; float: none; display: inline !important;" class="">On 30/12/2021 21:03, Florian Klämpfl via fpc-devel wrote:</span><br style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><blockquote type="cite" style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><blockquote type="cite" class="">Am 30.12.2021 um 20:57 schrieb Jonas Maebe via fpc-devel <<a href="mailto:fpc-devel@lists.freepascal.org" class="">fpc-devel@lists.freepascal.org</a>>:<br class=""><br class="">On 30/12/2021 20:55, Martin Frb via fpc-devel wrote:<br class=""><blockquote type="cite" class="">On 30/12/2021 20:46, Jonas Maebe via fpc-devel wrote:<br class=""><blockquote type="cite" class="">On 30/12/2021 18:06, Florian Klämpfl via fpc-devel wrote:<br class=""><blockquote type="cite" class=""><br class="">Ah yes, or like this. Nevertheless, the question is whether the ldrsb w0,[x0] is correct or not.<br class=""></blockquote><br class="">Yes, I was unclear: with the "I don't know/remember where this is done" I meant "changing the load of the unsigned byte type into a signed load". I can't think immediately of a reason either why this is done.<br class=""></blockquote>"unsigned byte"? The pointer in the pascal code is a pint8 => signed.<br class=""></blockquote><br class="">Oh, I thought it was puint8. Then it makes sense. c90616944d3bde7b36e924d27a0790195d61f95c applies both to OS_8 and OS_S8.<br class=""></blockquote>Yes, but the question is: if we load a shortint into a register, do we need to sign extend it to 32/64 bit or not? I tend more and more to say that we shouldn’t require this.<br class="">Neither clang nor gcc seem to expect this for arguments/return values: <a href="https://godbolt.org/z/sv5fPP6GM" class="">https://godbolt.org/z/sv5fPP6GM</a><br class=""></blockquote><br style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><span style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; float: none; display: inline !important;" class="">This is not related to arguments/return values. </span></div></blockquote><div><br class=""></div><div>Yes and no.</div><div><br class=""></div><div>Gcc compiles</div><div><br class=""></div><div><div style="background-color: rgb(255, 255, 254); font-family: Consolas, "Liberation Mono", Courier, monospace, Menlo, Monaco, "Courier New", monospace; font-size: 14px; line-height: 21px; white-space: pre;" class=""><div class=""><span style="color: #0000ff;" class="">unsigned</span> <span style="color: #0000ff;" class="">char</span> f(<span style="color: #0000ff;" class="">int</span> i)</div><div class="">{</div><div class="">    <span style="color: #0000ff;" class="">return</span> i;</div><div class="">}</div></div><div style="background-color: rgb(255, 255, 254); font-family: Consolas, "Liberation Mono", Courier, monospace, Menlo, Monaco, "Courier New", monospace; font-size: 14px; line-height: 21px; white-space: pre;" class=""><br class=""></div></div>into a single ret.</div><div><br class=""></div><div>This means, that we cannot assume that the upper part of registers is cleared. Of course, we could limit this to function calls but I guess doing it consistently is easier to handle.</div><div><br class=""><blockquote type="cite" class=""><div class=""><span style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; float: none; display: inline !important;" class="">We do the same on on PPC, and afaik on all architectures that don't have 8/16 bit subregisters. I initially did it on PPC because it simplified code generation a lot and solved all kinds of small issues I got otherwise because non-cleared higher parts of registers were used. Maybe with our current code generators it would work better.</span><br style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><br style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><br style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><span style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; float: none; display: inline !important;" class="">Jonas</span><br style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><span style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; float: none; display: inline !important;" class="">_______________________________________________</span><br style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><span style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; float: none; display: inline !important;" class="">fpc-devel maillist  -  </span><a href="mailto:fpc-devel@lists.freepascal.org" style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px;" class="">fpc-devel@lists.freepascal.org</a><br style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><a href="https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-devel" style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px;" class="">https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-devel</a></div></blockquote></div><br class=""></body></html>