<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<id>tag:old.nabble.com,2006:forum-1717</id>
	<title>Nabble - Gnu - Lightning</title>
	<updated>2009-08-04T23:47:23Z</updated>
	<link rel="self" type="application/atom+xml" href="http://old.nabble.com/Gnu---Lightning-f1717.xml" />
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Gnu---Lightning-f1717.html" />
	<subtitle type="html">GNU lightning is a library that generates assembly language code at run-time; it is very fast, making it ideal for Just-In-Time compilers, and it abstracts over the target CPU, as it exposes to the clients a standardized RISC instruction set inspired by the MIPS and SPARC chips.</subtitle>
	
<entry>
	<id>tag:old.nabble.com,2006:post-24821598</id>
	<title>Re: Subtract with borrow</title>
	<published>2009-08-04T23:47:23Z</published>
	<updated>2009-08-04T23:47:23Z</updated>
	<author>
		<name>Mike Spivey</name>
	</author>
	<content type="html">FWIW, here's a test case to verify the bug. &amp;nbsp;It prints -3 (wring) and
&lt;br&gt;not 3 (correct).
&lt;br&gt;&lt;br&gt;I'm not using Lightning except as a quarry for useful bits of code, so I
&lt;br&gt;won't suggest a fix.
&lt;br&gt;&lt;br&gt;&amp;quot;Bad&amp;quot; is a relative term here, and a register allocator can avoid most
&lt;br&gt;of the bad cases in most instructions by making rd = rs1 wherever
&lt;br&gt;possible.
&lt;br&gt;&lt;br&gt;-- Mike
&lt;br&gt;&lt;br&gt;#include &amp;lt;stdio.h&amp;gt;
&lt;br&gt;#include &amp;quot;lightning.h&amp;quot;
&lt;br&gt;&lt;br&gt;static jit_insn codeBuffer[1024];
&lt;br&gt;&lt;br&gt;typedef int (*pifi)(int, int);
&lt;br&gt;&lt;br&gt;int main()
&lt;br&gt;{
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;pifi &amp;nbsp;subr = (pifi) (jit_set_ip(codeBuffer).iptr);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;int &amp;nbsp; in1, in2;
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;jit_leaf(2); &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;in1 = jit_arg_i(); &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;in2 = jit_arg_i(); &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;jit_getarg_i(JIT_R0, in1);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;jit_getarg_i(JIT_R1, in2);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;jit_subcr_i(JIT_R2, JIT_R2, JIT_R2); /* Clear carry */
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;jit_subxr_i(JIT_R1, JIT_R0, JIT_R1);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;jit_movr_i(JIT_RET, JIT_R1);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;jit_ret(); &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;jit_flush_code(codeBuffer, jit_get_ip().ptr);
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;/* call the generated code, passing 5 as an argument */
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;printf(&amp;quot;result = %d\n&amp;quot;, subr(5, 2));
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;return 0;
&lt;br&gt;}
&lt;br&gt;&lt;br&gt;&lt;br&gt;On Wed, 2009-08-05 at 01:10 +0200, Paolo Bonzini wrote:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; On 08/04/2009 07:19 PM, Mike Spivey wrote:
&lt;br&gt;&amp;gt; &amp;gt; The i386 implementation in GIT contains the definition for
&lt;br&gt;&amp;gt; &amp;gt; subtract-with-carry:
&lt;br&gt;&amp;gt; &amp;gt;
&lt;br&gt;&amp;gt; &amp;gt; #define jit_subxr_i(d, s1, s2)	\
&lt;br&gt;&amp;gt; &amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp;jit_opr_((d), (s1), (s2), SBBLrr((s1), (d)), SBBLrr((s2), (d)) )
&lt;br&gt;&amp;gt; &amp;gt;
&lt;br&gt;&amp;gt; &amp;gt; Please forgive my not compiling a test, but doesn't this treat
&lt;br&gt;&amp;gt; &amp;gt; subtraction as if it is commutative? &amp;nbsp;Correct code for the case where
&lt;br&gt;&amp;gt; &amp;gt; s1 != d but s2 = d will be embarrassingly bad, but (if I'm right about
&lt;br&gt;&amp;gt; &amp;gt; the error) bad code is better than wrong code, always!
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; I think you're right... :-(
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; (The code wouldn't be so bad, it just needs some push/pops).
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; Paolo
&lt;/div&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;Lightning mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=24821598&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Lightning@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://lists.gnu.org/mailman/listinfo/lightning&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://lists.gnu.org/mailman/listinfo/lightning&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Subtract-with-borrow-tp24812813p24821598.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-24817908</id>
	<title>Re: Subtract with borrow</title>
	<published>2009-08-04T16:10:35Z</published>
	<updated>2009-08-04T16:10:35Z</updated>
	<author>
		<name>Paolo Bonzini-2</name>
	</author>
	<content type="html">On 08/04/2009 07:19 PM, Mike Spivey wrote:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; The i386 implementation in GIT contains the definition for
&lt;br&gt;&amp;gt; subtract-with-carry:
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; #define jit_subxr_i(d, s1, s2)	\
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp;jit_opr_((d), (s1), (s2), SBBLrr((s1), (d)), SBBLrr((s2), (d)) )
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Please forgive my not compiling a test, but doesn't this treat
&lt;br&gt;&amp;gt; subtraction as if it is commutative? &amp;nbsp;Correct code for the case where
&lt;br&gt;&amp;gt; s1 != d but s2 = d will be embarrassingly bad, but (if I'm right about
&lt;br&gt;&amp;gt; the error) bad code is better than wrong code, always!
&lt;/div&gt;&lt;br&gt;I think you're right... :-(
&lt;br&gt;&lt;br&gt;(The code wouldn't be so bad, it just needs some push/pops).
&lt;br&gt;&lt;br&gt;Paolo
&lt;br&gt;&lt;br&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;Lightning mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=24817908&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Lightning@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://lists.gnu.org/mailman/listinfo/lightning&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://lists.gnu.org/mailman/listinfo/lightning&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Subtract-with-borrow-tp24812813p24817908.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-24812813</id>
	<title>Subtract with borrow</title>
	<published>2009-08-04T10:19:10Z</published>
	<updated>2009-08-04T10:19:10Z</updated>
	<author>
		<name>Mike Spivey</name>
	</author>
	<content type="html">The i386 implementation in GIT contains the definition for
&lt;br&gt;subtract-with-carry:
&lt;br&gt;&lt;br&gt;#define jit_subxr_i(d, s1, s2)	\
&lt;br&gt;&amp;nbsp; &amp;nbsp; jit_opr_((d), (s1), (s2), SBBLrr((s1), (d)), SBBLrr((s2), (d)) )
&lt;br&gt;&lt;br&gt;Please forgive my not compiling a test, but doesn't this treat
&lt;br&gt;subtraction as if it is commutative? &amp;nbsp;Correct code for the case where
&lt;br&gt;s1 != d but s2 = d will be embarrassingly bad, but (if I'm right about
&lt;br&gt;the error) bad code is better than wrong code, always!
&lt;br&gt;&lt;br&gt;Best wishes,
&lt;br&gt;&lt;br&gt;-- Mike
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;Lightning mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=24812813&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Lightning@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://lists.gnu.org/mailman/listinfo/lightning&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://lists.gnu.org/mailman/listinfo/lightning&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Subtract-with-borrow-tp24812813p24812813.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-23722382</id>
	<title>Re: Is anyone still here?</title>
	<published>2009-05-26T05:46:15Z</published>
	<updated>2009-05-26T05:46:15Z</updated>
	<author>
		<name>Paolo Bonzini-2</name>
	</author>
	<content type="html">David A. Cobb wrote:
&lt;br&gt;&amp;gt; &amp;nbsp;Pardon the listspam, please. &amp;nbsp;I'm new to lightning.
&lt;br&gt;&amp;gt; It appears the code hasn't been touched since 2004. &amp;nbsp;Of course, maybe
&lt;br&gt;&amp;gt; there's nothing to be done. ;-D
&lt;br&gt;&lt;br&gt;Updated code is in the git repository at
&lt;br&gt;git://git.sv.gnu.org/lightning.git but you can get a snapshot at any
&lt;br&gt;time from
&lt;br&gt;&lt;a href=&quot;http://git.savannah.gnu.org/cgit/lightning.git/snapshot/lightning-master.tar.gz&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://git.savannah.gnu.org/cgit/lightning.git/snapshot/lightning-master.tar.gz&lt;/a&gt;&lt;br&gt;&lt;br&gt;&amp;gt; On the other hand, I'm getting a batch of warnings when I make it. &amp;nbsp;I
&lt;br&gt;&amp;gt; would guess, without much research, that perhaps gcc has tightened up
&lt;br&gt;&amp;gt; some standard?
&lt;br&gt;&lt;br&gt;The warnings are expected, you can use -Wno-unused (they all come from
&lt;br&gt;the same source).
&lt;br&gt;&lt;br&gt;Regarding CLISP, post them, but chances are you should go to the CLISP
&lt;br&gt;mailing list.
&lt;br&gt;&lt;br&gt;Paolo
&lt;br&gt;&lt;br&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;Lightning mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=23722382&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Lightning@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://lists.gnu.org/mailman/listinfo/lightning&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://lists.gnu.org/mailman/listinfo/lightning&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Is-anyone-still-here--tp23722022p23722382.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-23722022</id>
	<title>Is anyone still here?</title>
	<published>2009-05-25T12:55:33Z</published>
	<updated>2009-05-25T12:55:33Z</updated>
	<author>
		<name>David A. Cobb</name>
	</author>
	<content type="html">&amp;nbsp; Pardon the listspam, please. &amp;nbsp;I'm new to lightning.
&lt;br&gt;It appears the code hasn't been touched since 2004. &amp;nbsp;Of course, maybe 
&lt;br&gt;there's nothing to be done. ;-D
&lt;br&gt;On the other hand, I'm getting a batch of warnings when I make it. &amp;nbsp;I 
&lt;br&gt;would guess, without much research, that perhaps gcc has tightened up 
&lt;br&gt;some standard?
&lt;br&gt;When I try to use lightning to build a clisp, I get errors that seem to 
&lt;br&gt;be lightning-related.
&lt;br&gt;Is it worth chasing any of these things down?
&lt;br&gt;&lt;br&gt;TIA
&lt;br&gt;-- 
&lt;br&gt;David A. Cobb, (t-rex, by any other name, is still a dinosaur)
&lt;br&gt;&lt;br&gt;&lt;br /&gt;&lt;tt&gt;[superbiskit.vcf]&lt;/tt&gt;&lt;br /&gt;&lt;hr align=&quot;left&quot; width=&quot;300&quot; /&gt;&lt;tt&gt;begin:vcard
&lt;br&gt;fn:David A. Cobb
&lt;br&gt;n:Cobb;David A.
&lt;br&gt;email;internet:&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=23722022&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;superbiskit@...&lt;/a&gt;
&lt;br&gt;tel;home:+1-401-615-3895
&lt;br&gt;tel;cell:+1-401-301-2207
&lt;br&gt;note;quoted-printable:Semi-retired T-Rex Mainframe Programmer=0D=0A=
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Orthodox Christian=0D=0A=
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 
&lt;br&gt;x-mozilla-html:TRUE
&lt;br&gt;version:2.1
&lt;br&gt;end:vcard
&lt;br&gt;&lt;br&gt;&lt;/tt&gt;&lt;hr align=&quot;left&quot; width=&quot;300&quot; /&gt;&lt;br /&gt;_______________________________________________
&lt;br&gt;Lightning mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=23722022&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Lightning@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://lists.gnu.org/mailman/listinfo/lightning&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://lists.gnu.org/mailman/listinfo/lightning&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Is-anyone-still-here--tp23722022p23722022.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-22135542</id>
	<title>Re: Let's shift again</title>
	<published>2009-02-21T04:27:16Z</published>
	<updated>2009-02-21T04:27:16Z</updated>
	<author>
		<name>Mike Spivey</name>
	</author>
	<content type="html">Alas, that patch doesn't work either in cases such as lshr_i R0 R1 R0. &amp;nbsp;I think
&lt;br&gt;I've fixed the problem, and have written more test cases, but I'll ponder it for a
&lt;br&gt;while before posting more code.
&lt;br&gt;&lt;br&gt;-- Mike
&lt;br&gt;&lt;br&gt;Mike Spivey wrote:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; Dear Paolo and all,
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; I'm sorry to say it, but the shift instructions still aren't working on i386. &amp;nbsp;In
&lt;br&gt;&amp;gt; particular, &amp;quot;lshr_i V0 R1 V2&amp;quot; results in a message saying that the instruction is
&lt;br&gt;&amp;gt; unimplemented, but in fact &amp;quot;lshr_i R1 V1 V2&amp;quot; gives the wrong answers. (The problem
&lt;br&gt;&amp;gt; arises because i386 insists on having the *third* operand in ECX aka R1, so some
&lt;br&gt;&amp;gt; moves must be inserted if any other register is used.)
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; I've attached a test case that can be compiled with -DUNFIXED or -DFIX1 or -DFIX2.
&lt;br&gt;&amp;gt; &amp;nbsp;With FIX1, the instruction &amp;quot;lshr_i V0 R1 V2&amp;quot; works correctly, and &amp;quot;lshr_i R1 V1
&lt;br&gt;&amp;gt; V2&amp;quot; is unimplemented. &amp;nbsp;The fix is a simple matter of nesting calls to jit_op_ and
&lt;br&gt;&amp;gt; jit_replace in the opposite order with a couple of adjustments.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; A better fix is provided with FIX2, because there R1 can be used as any of the
&lt;br&gt;&amp;gt; registers, but of course with varying penalties in pushes and pops and moves.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; Best wishes,
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; -- Mike
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; ------------------------------------------------------------------------
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; _______________________________________________
&lt;br&gt;&amp;gt; Lightning mailing list
&lt;br&gt;&amp;gt; &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=22135542&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Lightning@...&lt;/a&gt;
&lt;br&gt;&amp;gt; &lt;a href=&quot;http://lists.gnu.org/mailman/listinfo/lightning&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://lists.gnu.org/mailman/listinfo/lightning&lt;/a&gt;&lt;/div&gt;&lt;br&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;Lightning mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=22135542&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Lightning@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://lists.gnu.org/mailman/listinfo/lightning&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://lists.gnu.org/mailman/listinfo/lightning&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Let%27s-shift-again-tp22129334p22135542.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-22129334</id>
	<title>Let's shift again</title>
	<published>2009-02-20T13:57:24Z</published>
	<updated>2009-02-20T13:57:24Z</updated>
	<author>
		<name>Mike Spivey</name>
	</author>
	<content type="html">Dear Paolo and all,
&lt;br&gt;&lt;br&gt;I'm sorry to say it, but the shift instructions still aren't working on i386. &amp;nbsp;In
&lt;br&gt;particular, &amp;quot;lshr_i V0 R1 V2&amp;quot; results in a message saying that the instruction is
&lt;br&gt;unimplemented, but in fact &amp;quot;lshr_i R1 V1 V2&amp;quot; gives the wrong answers. (The problem
&lt;br&gt;arises because i386 insists on having the *third* operand in ECX aka R1, so some
&lt;br&gt;moves must be inserted if any other register is used.)
&lt;br&gt;&lt;br&gt;I've attached a test case that can be compiled with -DUNFIXED or -DFIX1 or -DFIX2.
&lt;br&gt;&amp;nbsp;With FIX1, the instruction &amp;quot;lshr_i V0 R1 V2&amp;quot; works correctly, and &amp;quot;lshr_i R1 V1
&lt;br&gt;V2&amp;quot; is unimplemented. &amp;nbsp;The fix is a simple matter of nesting calls to jit_op_ and
&lt;br&gt;jit_replace in the opposite order with a couple of adjustments.
&lt;br&gt;&lt;br&gt;A better fix is provided with FIX2, because there R1 can be used as any of the
&lt;br&gt;registers, but of course with varying penalties in pushes and pops and moves.
&lt;br&gt;&lt;br&gt;Best wishes,
&lt;br&gt;&lt;br&gt;-- Mike
&lt;br&gt;&lt;br&gt;&lt;br /&gt;#include &amp;lt;stdio.h&amp;gt;
&lt;br&gt;#include &amp;quot;lightning.h&amp;quot;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;#ifdef UNFIXED
&lt;br&gt;/* Existing version of lightning gives wrong results for the PART3 tests,
&lt;br&gt;&amp;nbsp; &amp;nbsp;and wrongly claims that the PART2 tests are not supported */
&lt;br&gt;#define PART3
&lt;br&gt;#endif
&lt;br&gt;&lt;br&gt;&lt;br&gt;#ifdef FIX1
&lt;br&gt;/* This simple fix makes the PART2 tests work, but does not support the 
&lt;br&gt;&amp;nbsp; &amp;nbsp;PART3 tests */
&lt;br&gt;#define PART2
&lt;br&gt;&lt;br&gt;#undef jit_lshr_i
&lt;br&gt;#undef jit_rshr_i
&lt;br&gt;#undef jit_rshr_ui
&lt;br&gt;&lt;br&gt;#define jit_lshr_i(d, r1, r2) \
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;jit_op_((d), (r1), jit_replace((d), (r2), _ECX, SHLLrr(_CL, (d))))
&lt;br&gt;#define jit_rshr_i(d, r1, r2) \
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;jit_op_((d), (r1), jit_replace((d), (r2), _ECX, SARLrr(_CL, (d))))
&lt;br&gt;#define jit_rshr_ui(d, r1, r2) \
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;jit_op_((d), (r1), jit_replace((d), (r2), _ECX, SHRLrr(_CL, (d))))
&lt;br&gt;&lt;br&gt;#endif
&lt;br&gt;&lt;br&gt;&lt;br&gt;#ifdef FIX2
&lt;br&gt;/* A better fix that additionally supports having R1 = ECX as the 
&lt;br&gt;&amp;nbsp; &amp;nbsp;destination register, passing all tests. */
&lt;br&gt;#define PART2
&lt;br&gt;#define PART3
&lt;br&gt;&lt;br&gt;#undef jit_lshr_i
&lt;br&gt;#undef jit_rshr_i
&lt;br&gt;#undef jit_rshr_ui
&lt;br&gt;&lt;br&gt;#define jit_lshr_i(d, r1, r2) jit_shift(d, r1, r2, SHLLrr)
&lt;br&gt;#define jit_rshr_i(d, r1, r2) jit_shift(d, r1, r2, SARLrr)
&lt;br&gt;#define jit_rshr_ui(d, r1, r2) jit_shift(d, r1, r2, SHRLrr)
&lt;br&gt;&lt;br&gt;#define jit_shift(d, r1, r2, m)					\
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;(((d) == _ECX)						\
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; ? (jit_pushr_i(_EAX), jit_shiftop(_EAX, r1, r2, m),	\
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;MOVLrr(_EAX, d), jit_popr_i(_EAX))			\
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; : jit_shiftop(d, r1, r2, m))
&lt;br&gt;&lt;br&gt;#define jit_shiftop(d, r1, r2, m) \
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;jit_op_((d), (r1), jit_replace((d), (r2), _ECX, m(_CL, (d))))
&lt;br&gt;&lt;br&gt;#endif
&lt;br&gt;&lt;br&gt;static jit_insn codeBuffer[1024];
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;typedef int (*pifi)(int); &amp;nbsp; &amp;nbsp;/* Pointer to Int Function of Int */
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;void test(int n, int r1, int r2, int r3, int res, int exp) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;pifi fun = (pifi) (jit_set_ip(codeBuffer).iptr);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;int in, out;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;jit_prolog(1);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;in = jit_arg_i();
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;jit_getarg_i(r2, in);
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;jit_movi_i(r3, 2);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;jit_lshr_i(r1, r2, r3);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;jit_movr_i(JIT_RET, res);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;jit_ret();
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;jit_flush_code(codeBuffer, jit_get_ip().ptr);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;out = fun(-16);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;printf(&amp;quot;test %d: %d / %d\n&amp;quot;, n, out, exp);
&lt;br&gt;}
&lt;br&gt;&lt;br&gt;int main() {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;test(11, JIT_V0, JIT_V1, JIT_V2, JIT_V0, -64);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;test(12, JIT_V0, JIT_V1, JIT_V2, JIT_V1, -16);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;test(13, JIT_V0, JIT_V1, JIT_V2, JIT_V2, 2);
&lt;br&gt;&lt;br&gt;#ifdef PART2
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;test(21, JIT_V0, JIT_R1, JIT_V2, JIT_V0, -64);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;test(22, JIT_V0, JIT_R1, JIT_V2, JIT_R1, -16);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;test(23, JIT_V0, JIT_R1, JIT_V2, JIT_V2, 2);
&lt;br&gt;#endif
&lt;br&gt;&lt;br&gt;#ifdef PART3
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;test(31, JIT_R1, JIT_V1, JIT_V2, JIT_R1, -64);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;test(32, JIT_R1, JIT_V1, JIT_V2, JIT_V1, -16);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;test(33, JIT_R1, JIT_V1, JIT_V2, JIT_V2, 2);
&lt;br&gt;#endif
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;test(41, JIT_V0, JIT_V1, JIT_R1, JIT_V0, -64);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;test(42, JIT_V0, JIT_V1, JIT_R1, JIT_V1, -16);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;test(43, JIT_V0, JIT_V1, JIT_R1, JIT_R1, 2);
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;return 0;
&lt;br&gt;} &amp;nbsp; &amp;nbsp; 
&lt;br&gt;&lt;br /&gt;_______________________________________________
&lt;br&gt;Lightning mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=22129334&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Lightning@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://lists.gnu.org/mailman/listinfo/lightning&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://lists.gnu.org/mailman/listinfo/lightning&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Let%27s-shift-again-tp22129334p22129334.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-22107834</id>
	<title>Re: Shift instructions</title>
	<published>2009-02-19T11:22:06Z</published>
	<updated>2009-02-19T11:22:06Z</updated>
	<author>
		<name>Paolo Bonzini-2</name>
	</author>
	<content type="html">Mike Spivey wrote:
&lt;br&gt;&amp;gt; I spoke five minutes too soon:
&lt;br&gt;&lt;br&gt;... and I spoke five minutes too late. :-)
&lt;br&gt;&lt;br&gt;Thanks.
&lt;br&gt;&lt;br&gt;Paolo
&lt;br&gt;&lt;br&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;Lightning mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=22107834&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Lightning@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://lists.gnu.org/mailman/listinfo/lightning&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://lists.gnu.org/mailman/listinfo/lightning&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Shift-instructions-tp22107625p22107834.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-22107826</id>
	<title>Re: Shift instructions</title>
	<published>2009-02-19T11:21:30Z</published>
	<updated>2009-02-19T11:21:30Z</updated>
	<author>
		<name>Paolo Bonzini-2</name>
	</author>
	<content type="html">&lt;br&gt;&amp;gt; I am sorry to be always the bearer of bad tidings, but there it is! &amp;nbsp;Can
&lt;br&gt;&amp;gt; anything be done?
&lt;br&gt;&lt;br&gt;I'll take a look.
&lt;br&gt;&lt;br&gt;Paolo
&lt;br&gt;&lt;br&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;Lightning mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=22107826&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Lightning@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://lists.gnu.org/mailman/listinfo/lightning&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://lists.gnu.org/mailman/listinfo/lightning&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Shift-instructions-tp22107625p22107826.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-22107750</id>
	<title>Re: Shift instructions</title>
	<published>2009-02-19T11:16:55Z</published>
	<updated>2009-02-19T11:16:55Z</updated>
	<author>
		<name>Mike Spivey</name>
	</author>
	<content type="html">I spoke five minutes too soon:
&lt;br&gt;&lt;br&gt;diff --git a/lightning/i386/core.h b/lightning/i386/core.h
&lt;br&gt;index 86aee39..2f017f9 100644
&lt;br&gt;--- a/lightning/i386/core.h
&lt;br&gt;+++ b/lightning/i386/core.h
&lt;br&gt;@@ -63,7 +63,7 @@
&lt;br&gt;&amp;nbsp;	((rd == forced) ? JITSORRY(&amp;quot;Register conflict for &amp;quot; # op) :	\
&lt;br&gt;&amp;nbsp;	 (rs == forced)	? op :						\
&lt;br&gt;&amp;nbsp;	 jit_save (forced)						\
&lt;br&gt;-	 &amp;nbsp;? (jit_pushr_i(forced), jit_movr_l(rs, forced), op,		\
&lt;br&gt;+	 &amp;nbsp;? (jit_pushr_i(forced), jit_movr_l(forced, rs), op,		\
&lt;br&gt;&amp;nbsp;	 &amp;nbsp; &amp;nbsp; jit_popr_i(forced))					\
&lt;br&gt;&amp;nbsp;	 &amp;nbsp;: (jit_movr_l(rs, forced), op))
&lt;br&gt;&lt;br&gt;Best wishes,
&lt;br&gt;&lt;br&gt;-- Mike
&lt;br&gt;&lt;br&gt;Mike Spivey wrote:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; Dear Paolo and all,
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; Attached is a program that attempts to compute (-16) &amp;lt;&amp;lt; 2. &amp;nbsp;The result
&lt;br&gt;&amp;gt; should be -64, but -16 is printed on i386.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; I've tried a number of combinations, but haven't quite tracked down the
&lt;br&gt;&amp;gt; problem yet:
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; * Use JIT_R1 instead of JIT_V0 throughout --&amp;gt; fixed.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; * Insert jit_movi_i(JIT_R1, 3); before the shift instruction (but leave
&lt;br&gt;&amp;gt; instruction referring to JIT_V0) --&amp;gt; result is -128.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; * Use a jit_mulr_i instruction instead of the shift --&amp;gt; correct result.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; * Use jit_lshi_i instead of jit_lshr_i --&amp;gt; correct result.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; So it looks like the problem concerns putting the shift amount into the
&lt;br&gt;&amp;gt; ECX register before the actual shift instruction.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; I am sorry to be always the bearer of bad tidings, but there it is! &amp;nbsp;Can
&lt;br&gt;&amp;gt; anything be done?
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; Best wishes,
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; -- Mike
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; ------------------------------------------------------------------------
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; _______________________________________________
&lt;br&gt;&amp;gt; Lightning mailing list
&lt;br&gt;&amp;gt; &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=22107750&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Lightning@...&lt;/a&gt;
&lt;br&gt;&amp;gt; &lt;a href=&quot;http://lists.gnu.org/mailman/listinfo/lightning&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://lists.gnu.org/mailman/listinfo/lightning&lt;/a&gt;&lt;/div&gt;&lt;br&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;Lightning mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=22107750&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Lightning@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://lists.gnu.org/mailman/listinfo/lightning&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://lists.gnu.org/mailman/listinfo/lightning&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Shift-instructions-tp22107625p22107750.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-22107625</id>
	<title>Shift instructions</title>
	<published>2009-02-19T11:10:02Z</published>
	<updated>2009-02-19T11:10:02Z</updated>
	<author>
		<name>Mike Spivey</name>
	</author>
	<content type="html">Dear Paolo and all,
&lt;br&gt;&lt;br&gt;Attached is a program that attempts to compute (-16) &amp;lt;&amp;lt; 2. &amp;nbsp;The result
&lt;br&gt;should be -64, but -16 is printed on i386.
&lt;br&gt;&lt;br&gt;I've tried a number of combinations, but haven't quite tracked down the
&lt;br&gt;problem yet:
&lt;br&gt;&lt;br&gt;* Use JIT_R1 instead of JIT_V0 throughout --&amp;gt; fixed.
&lt;br&gt;&lt;br&gt;* Insert jit_movi_i(JIT_R1, 3); before the shift instruction (but leave
&lt;br&gt;instruction referring to JIT_V0) --&amp;gt; result is -128.
&lt;br&gt;&lt;br&gt;* Use a jit_mulr_i instruction instead of the shift --&amp;gt; correct result.
&lt;br&gt;&lt;br&gt;* Use jit_lshi_i instead of jit_lshr_i --&amp;gt; correct result.
&lt;br&gt;&lt;br&gt;So it looks like the problem concerns putting the shift amount into the
&lt;br&gt;ECX register before the actual shift instruction.
&lt;br&gt;&lt;br&gt;I am sorry to be always the bearer of bad tidings, but there it is! &amp;nbsp;Can
&lt;br&gt;anything be done?
&lt;br&gt;&lt;br&gt;Best wishes,
&lt;br&gt;&lt;br&gt;-- Mike
&lt;br&gt;&lt;br&gt;&lt;br /&gt;#include &amp;lt;stdio.h&amp;gt;
&lt;br&gt;#include &amp;quot;lightning.h&amp;quot;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;static jit_insn codeBuffer[1024];
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;typedef int (*pifi)(int); &amp;nbsp; &amp;nbsp;/* Pointer to Int Function of Int */
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;int main()
&lt;br&gt;{
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;pifi fun = (pifi) (jit_set_ip(codeBuffer).iptr);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;int in;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;jit_prolog(1);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;in = jit_arg_i();
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;jit_getarg_i(JIT_V2, in);
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;jit_movi_i(JIT_V0, 2);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;jit_lshr_i(JIT_V1, JIT_V2, JIT_V0);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;jit_movr_i(JIT_RET, JIT_V1);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;jit_ret();
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;jit_flush_code(codeBuffer, jit_get_ip().ptr);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;printf(&amp;quot;fun(-16) = %d\n&amp;quot;, fun(-16));
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;return 0;
&lt;br&gt;}
&lt;br&gt;&lt;br&gt;&lt;br /&gt;_______________________________________________
&lt;br&gt;Lightning mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=22107625&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Lightning@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://lists.gnu.org/mailman/listinfo/lightning&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://lists.gnu.org/mailman/listinfo/lightning&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Shift-instructions-tp22107625p22107625.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-22055152</id>
	<title>Re: Floating point branches</title>
	<published>2009-02-17T03:17:30Z</published>
	<updated>2009-02-17T03:17:30Z</updated>
	<author>
		<name>Mike Spivey</name>
	</author>
	<content type="html">Paolo Bonzini wrote:
&lt;br&gt;&amp;gt; Mike Spivey wrote:
&lt;br&gt;&amp;gt;&amp;gt; I encountered three problems with floating point branches on i386 with
&lt;br&gt;&amp;gt;&amp;gt; the GIT version of lightning. &amp;nbsp;The patches shown below seem to work for
&lt;br&gt;&amp;gt;&amp;gt; me, but I haven't made extensive tests.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; Great, thanks. &amp;nbsp;I attach what I applied.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; Paolo
&lt;br&gt;&amp;gt; 
&lt;br&gt;&lt;br&gt;Sorry, one more correction that you missed in your patch. &amp;nbsp;In the
&lt;br&gt;jit_fp_btest macro:
&lt;br&gt;&lt;br&gt;diff --git a/lightning/i386/fp-32.h b/lightning/i386/fp-32.h
&lt;br&gt;index 71e5677..b957b69 100644
&lt;br&gt;--- a/lightning/i386/fp-32.h
&lt;br&gt;+++ b/lightning/i386/fp-32.h
&lt;br&gt;@@ -262,7 +262,7 @@ union jit_double_imm {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;((cmp) ? CMPLir ((cmp), _AL) : 0), &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; \
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;POPLr(_EAX), &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; \
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;res ((d)),					 &amp;nbsp; &amp;nbsp; &amp;nbsp; \
&lt;br&gt;-	_jit.x.ppc)
&lt;br&gt;+	_jit.x.pc)
&lt;br&gt;&lt;br&gt;&amp;nbsp;#define jit_nothing_needed(x)
&lt;br&gt;&lt;br&gt;-- Mike
&lt;br&gt;&lt;br&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;Lightning mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=22055152&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Lightning@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://lists.gnu.org/mailman/listinfo/lightning&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://lists.gnu.org/mailman/listinfo/lightning&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Floating-point-branches-tp22052788p22055152.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-22053060</id>
	<title>Re: Floating point branches</title>
	<published>2009-02-17T00:54:34Z</published>
	<updated>2009-02-17T00:54:34Z</updated>
	<author>
		<name>Paolo Bonzini-2</name>
	</author>
	<content type="html">Mike Spivey wrote:
&lt;br&gt;&amp;gt; I encountered three problems with floating point branches on i386 with
&lt;br&gt;&amp;gt; the GIT version of lightning. &amp;nbsp;The patches shown below seem to work for
&lt;br&gt;&amp;gt; me, but I haven't made extensive tests.
&lt;br&gt;&lt;br&gt;Great, thanks. &amp;nbsp;I attach what I applied.
&lt;br&gt;&lt;br&gt;Paolo
&lt;br&gt;&lt;br /&gt;diff --git a/ChangeLog b/ChangeLog
&lt;br&gt;index bda065e..a842218 100644
&lt;br&gt;--- a/ChangeLog
&lt;br&gt;+++ b/ChangeLog
&lt;br&gt;@@ -1,3 +1,10 @@
&lt;br&gt;+2009-02-17 &amp;nbsp;Paolo Bonzini &amp;nbsp;&amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=22053060&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;bonzini@...&lt;/a&gt;&amp;gt;
&lt;br&gt;+
&lt;br&gt;+	* lightning/fp-common.h: Define double branches if missing.
&lt;br&gt;+	* lightning/i386/asm.h: Define JC and JNC mnemonics.
&lt;br&gt;+	* lightning/i386/fp-32.h: Fix jit_fp_btest. &amp;nbsp;All reported
&lt;br&gt;+	by Mike Spivey.
&lt;br&gt;+
&lt;br&gt;&amp;nbsp;2008-10-09 &amp;nbsp;Paolo Bonzini &amp;nbsp;&amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=22053060&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;bonzini@...&lt;/a&gt;&amp;gt;
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;	* lightning/ppc/funcs.h (jit_flush_code): Subtract 1 from end.
&lt;br&gt;diff --git a/THANKS b/THANKS
&lt;br&gt;index 0276167..fe8ad1e 100644
&lt;br&gt;--- a/THANKS
&lt;br&gt;+++ b/THANKS
&lt;br&gt;@@ -5,6 +5,7 @@ Eli Barzilay &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=22053060&amp;i=2&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;eli@...&lt;/a&gt;&amp;gt;
&lt;br&gt;&amp;nbsp;Ludovic Courtes &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=22053060&amp;i=3&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;ludo@...&lt;/a&gt;&amp;gt;
&lt;br&gt;&amp;nbsp;Matthew Flatt			&amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=22053060&amp;i=4&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;mflatt@...&lt;/a&gt;&amp;gt;
&lt;br&gt;&amp;nbsp;Laurent Michel &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=22053060&amp;i=5&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;ldm@...&lt;/a&gt;&amp;gt;
&lt;br&gt;+Mike Spivey &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=22053060&amp;i=6&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;mike@...&lt;/a&gt;&amp;gt;
&lt;br&gt;&amp;nbsp;Basile Starynkevitch &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=22053060&amp;i=7&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;basile@...&lt;/a&gt;&amp;gt;
&lt;br&gt;&amp;nbsp;Sam Steingold			&amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=22053060&amp;i=8&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;sds@...&lt;/a&gt;&amp;gt;
&lt;br&gt;&amp;nbsp;Jens Troeger &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=22053060&amp;i=9&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;savage@...&lt;/a&gt;&amp;gt;
&lt;br&gt;diff --git a/doc/version.texi b/doc/version.texi
&lt;br&gt;index bbcbdc5..a763770 100644
&lt;br&gt;--- a/doc/version.texi
&lt;br&gt;+++ b/doc/version.texi
&lt;br&gt;@@ -1,4 +1,4 @@
&lt;br&gt;-@set UPDATED 9 January 2008
&lt;br&gt;-@set UPDATED-MONTH January 2008
&lt;br&gt;+@set UPDATED 13 June 2008
&lt;br&gt;+@set UPDATED-MONTH June 2008
&lt;br&gt;&amp;nbsp;@set EDITION 1.2c
&lt;br&gt;&amp;nbsp;@set VERSION 1.2c
&lt;br&gt;diff --git a/lightning/fp-common.h b/lightning/fp-common.h
&lt;br&gt;index d65d160..0847ceb 100644
&lt;br&gt;--- a/lightning/fp-common.h
&lt;br&gt;+++ b/lightning/fp-common.h
&lt;br&gt;@@ -85,6 +85,23 @@
&lt;br&gt;&amp;nbsp;#define jit_retval_f(rs)		jit_retval_d(rs)
&lt;br&gt;&amp;nbsp;#endif
&lt;br&gt;&amp;nbsp;
&lt;br&gt;+#ifndef jit_beqr_f
&lt;br&gt;+#define jit_beqr_f(lab, a, b)		jit_beqr_d(lab, a, b)
&lt;br&gt;+#define jit_bner_f(lab, a, b)		jit_bner_d(lab, a, b)
&lt;br&gt;+#define jit_bgtr_f(lab, a, b)		jit_bgtr_d(lab, a, b)
&lt;br&gt;+#define jit_bger_f(lab, a, b)		jit_bger_d(lab, a, b)
&lt;br&gt;+#define jit_bltr_f(lab, a, b)		jit_bltr_d(lab, a, b)
&lt;br&gt;+#define jit_bler_f(lab, a, b)		jit_bler_d(lab, a, b)
&lt;br&gt;+#define jit_buneqr_f(lab, a, b)		jit_buneqr_d(lab, a, b)
&lt;br&gt;+#define jit_bltgtr_f(lab, a, b)		jit_bltgtr_d(lab, a, b)
&lt;br&gt;+#define jit_bungtr_f(lab, a, b)		jit_bungtr_d(lab, a, b)
&lt;br&gt;+#define jit_bunger_f(lab, a, b)		jit_bunger_d(lab, a, b)
&lt;br&gt;+#define jit_bunltr_f(lab, a, b)		jit_bunltr_d(lab, a, b)
&lt;br&gt;+#define jit_bunler_f(lab, a, b)		jit_bunler_d(lab, a, b)
&lt;br&gt;+#define jit_bordr_f(lab, a, b)		jit_bordr_d(lab, a, b)
&lt;br&gt;+#define jit_bunordr_f(lab, a, b)	jit_bunordr_d(lab, a, b)
&lt;br&gt;+#endif
&lt;br&gt;+
&lt;br&gt;&amp;nbsp;#ifndef jit_retval_f
&lt;br&gt;&amp;nbsp;#define jit_retval_f(op1) &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;jit_movr_f((op1), JIT_FPRET)
&lt;br&gt;&amp;nbsp;#endif
&lt;br&gt;diff --git a/lightning/i386/asm.h b/lightning/i386/asm.h
&lt;br&gt;index ad404fc..2dec4b9 100644
&lt;br&gt;--- a/lightning/i386/asm.h
&lt;br&gt;+++ b/lightning/i386/asm.h
&lt;br&gt;@@ -915,8 +915,10 @@ enum {
&lt;br&gt;&amp;nbsp;#define JOSm(D)				JCCSim(0x0, D)
&lt;br&gt;&amp;nbsp;#define JNOSm(D)			JCCSim(0x1, D)
&lt;br&gt;&amp;nbsp;#define JBSm(D)				JCCSim(0x2, D)
&lt;br&gt;+#define JCSm(D)				JCCSim(0x2, D)
&lt;br&gt;&amp;nbsp;#define JNAESm(D)			JCCSim(0x2, D)
&lt;br&gt;&amp;nbsp;#define JNBSm(D)			JCCSim(0x3, D)
&lt;br&gt;+#define JNCSm(D)			JCCSim(0x3, D)
&lt;br&gt;&amp;nbsp;#define JAESm(D)			JCCSim(0x3, D)
&lt;br&gt;&amp;nbsp;#define JESm(D)				JCCSim(0x4, D)
&lt;br&gt;&amp;nbsp;#define JZSm(D)				JCCSim(0x4, D)
&lt;br&gt;@@ -946,8 +948,10 @@ enum {
&lt;br&gt;&amp;nbsp;#define JOm(D)				JCCim(0x0, D)
&lt;br&gt;&amp;nbsp;#define JNOm(D)				JCCim(0x1, D)
&lt;br&gt;&amp;nbsp;#define JBm(D)				JCCim(0x2, D)
&lt;br&gt;+#define JCm(D)				JCCim(0x2, D)
&lt;br&gt;&amp;nbsp;#define JNAEm(D)			JCCim(0x2, D)
&lt;br&gt;&amp;nbsp;#define JNBm(D)				JCCim(0x3, D)
&lt;br&gt;+#define JNCm(D)				JCCim(0x3, D)
&lt;br&gt;&amp;nbsp;#define JAEm(D)				JCCim(0x3, D)
&lt;br&gt;&amp;nbsp;#define JEm(D)				JCCim(0x4, D)
&lt;br&gt;&amp;nbsp;#define JZm(D)				JCCim(0x4, D)
&lt;br&gt;diff --git a/lightning/i386/fp-32.h b/lightning/i386/fp-32.h
&lt;br&gt;index ff59631..71e5677 100644
&lt;br&gt;--- a/lightning/i386/fp-32.h
&lt;br&gt;+++ b/lightning/i386/fp-32.h
&lt;br&gt;@@ -261,7 +261,7 @@ union jit_double_imm {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;((_and) ? ANDLir ((_and), _EAX) : 0), &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;\
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;((cmp) ? CMPLir ((cmp), _AL) : 0), &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; \
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;POPLr(_EAX), &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; \
&lt;br&gt;- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;res ((d), 0, 0, 0),				 &amp;nbsp; &amp;nbsp; &amp;nbsp; \
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;res ((d)),					 &amp;nbsp; &amp;nbsp; &amp;nbsp; \
&lt;br&gt;&amp;nbsp;	_jit.x.ppc)
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;#define jit_nothing_needed(x)
&lt;br&gt;&lt;br /&gt;_______________________________________________
&lt;br&gt;Lightning mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=22053060&amp;i=10&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Lightning@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://lists.gnu.org/mailman/listinfo/lightning&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://lists.gnu.org/mailman/listinfo/lightning&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Floating-point-branches-tp22052788p22053060.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-22052788</id>
	<title>Floating point branches</title>
	<published>2009-02-17T00:32:24Z</published>
	<updated>2009-02-17T00:32:24Z</updated>
	<author>
		<name>Mike Spivey</name>
	</author>
	<content type="html">I encountered three problems with floating point branches on i386 with
&lt;br&gt;the GIT version of lightning. &amp;nbsp;The patches shown below seem to work for
&lt;br&gt;me, but I haven't made extensive tests.
&lt;br&gt;&lt;br&gt;-- Mike
&lt;br&gt;&lt;br&gt;(i) Instructions beqr_f, ... are not defined, but only beqr_d, ... &amp;nbsp;On
&lt;br&gt;i386, they are the same, but maybe not on other architectures.
&lt;br&gt;Solution:
&lt;br&gt;&lt;br&gt;#ifndef jit_beqr_f
&lt;br&gt;#define jit_beqr_f(lab, a, b) jit_beqr_d(lab, a, b)
&lt;br&gt;#define jit_bner_f(lab, a, b) jit_bner_d(lab, a, b)
&lt;br&gt;#define jit_bgtr_f(lab, a, b) jit_bgtr_d(lab, a, b)
&lt;br&gt;#define jit_bger_f(lab, a, b) jit_bger_d(lab, a, b)
&lt;br&gt;#define jit_bltr_f(lab, a, b) jit_bltr_d(lab, a, b)
&lt;br&gt;#define jit_bler_f(lab, a, b) jit_bler_d(lab, a, b)
&lt;br&gt;#endif
&lt;br&gt;&lt;br&gt;(ii) The floating point branches depend on the existence of operations
&lt;br&gt;JCm and JNCm that don't exist. &amp;nbsp;They should be synonyms for JBm and
&lt;br&gt;JNBm. &amp;nbsp;Solution:
&lt;br&gt;&lt;br&gt;#ifndef JCm
&lt;br&gt;#define JCm JBm
&lt;br&gt;#define JNCm JNBm
&lt;br&gt;#endif
&lt;br&gt;&lt;br&gt;(iii) The macro jit_fp_btest wrongly ends with a call to
&lt;br&gt;res ((d), 0, 0, 0). &amp;nbsp;This should read res (d). &amp;nbsp;Solution:
&lt;br&gt;&lt;br&gt;#undef jit_fp_btest
&lt;br&gt;&lt;br&gt;#define jit_fp_btest(d, s1, s2, n, _and, cmp, res) &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; \
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;(((s1) == 0 ? FUCOMr((s2)) : (FLDr((s1)), FUCOMPr((s2) + 1))), &amp;nbsp; &amp;nbsp;\
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; PUSHLr(_EAX), &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;\
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; FNSTSWr(_EAX), &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; \
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; SHRLir(n, _EAX), &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; \
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ((_and) ? ANDLir ((_and), _EAX) : 0), &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;\
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ((cmp) ? CMPLir ((cmp), _AL) : 0), &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; \
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; POPLr(_EAX), &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; \
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; res (d),					 &amp;nbsp; &amp;nbsp; &amp;nbsp; \
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; _jit.x.pc)
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;Lightning mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=22052788&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Lightning@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://lists.gnu.org/mailman/listinfo/lightning&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://lists.gnu.org/mailman/listinfo/lightning&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Floating-point-branches-tp22052788p22052788.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-22062798</id>
	<title>Floating point branches</title>
	<published>2009-02-16T10:02:41Z</published>
	<updated>2009-02-16T10:02:41Z</updated>
	<author>
		<name>Mike Spivey</name>
	</author>
	<content type="html">I encountered three problems with floating point branches on i386 with
&lt;br&gt;the GIT version of lightning. &amp;nbsp;The patches shown below seem to work for
&lt;br&gt;me, but I haven't made extensive tests.
&lt;br&gt;&lt;br&gt;-- Mike
&lt;br&gt;&lt;br&gt;(i) Instructions beqr_f, ... are not defined, but only beqr_d, ... &amp;nbsp;On
&lt;br&gt;i386, they are the same, but maybe not on other architectures.
&lt;br&gt;Solution:
&lt;br&gt;&lt;br&gt;#ifndef jit_beqr_f
&lt;br&gt;#define jit_beqr_f(lab, a, b) jit_beqr_d(lab, a, b)
&lt;br&gt;#define jit_bner_f(lab, a, b) jit_bner_d(lab, a, b)
&lt;br&gt;#define jit_bgtr_f(lab, a, b) jit_bgtr_d(lab, a, b)
&lt;br&gt;#define jit_bger_f(lab, a, b) jit_bger_d(lab, a, b)
&lt;br&gt;#define jit_bltr_f(lab, a, b) jit_bltr_d(lab, a, b)
&lt;br&gt;#define jit_bler_f(lab, a, b) jit_bler_d(lab, a, b)
&lt;br&gt;#endif
&lt;br&gt;&lt;br&gt;(ii) The floating point branches depend on the existence of operations
&lt;br&gt;JCm and JNCm that don't exist. &amp;nbsp;They should be synonyms for JBm and
&lt;br&gt;JNBm. &amp;nbsp;Solution:
&lt;br&gt;&lt;br&gt;#ifndef JCm
&lt;br&gt;#define JCm JBm
&lt;br&gt;#define JNCm JNBm
&lt;br&gt;#endif
&lt;br&gt;&lt;br&gt;(iii) The macro jit_fp_btest wrongly ends with a call to
&lt;br&gt;res ((d), 0, 0, 0). &amp;nbsp;This should read res (d). &amp;nbsp;Solution:
&lt;br&gt;&lt;br&gt;#undef jit_fp_btest
&lt;br&gt;&lt;br&gt;#define jit_fp_btest(d, s1, s2, n, _and, cmp, res) &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; \
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;(((s1) == 0 ? FUCOMr((s2)) : (FLDr((s1)), FUCOMPr((s2) + 1))), &amp;nbsp; &amp;nbsp;\
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; PUSHLr(_EAX), &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;\
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; FNSTSWr(_EAX), &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; \
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; SHRLir(n, _EAX), &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; \
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ((_and) ? ANDLir ((_and), _EAX) : 0), &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;\
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ((cmp) ? CMPLir ((cmp), _AL) : 0), &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; \
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; POPLr(_EAX), &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; \
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; res (d),					 &amp;nbsp; &amp;nbsp; &amp;nbsp; \
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; _jit.x.pc)
&lt;br&gt;&lt;br&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;Lightning mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=22062798&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Lightning@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://lists.gnu.org/mailman/listinfo/lightning&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://lists.gnu.org/mailman/listinfo/lightning&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Floating-point-branches-tp22062798p22062798.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-21806036</id>
	<title>Re: Releases?</title>
	<published>2009-02-03T00:58:56Z</published>
	<updated>2009-02-03T00:58:56Z</updated>
	<author>
		<name>Ludovic Courtès-3</name>
	</author>
	<content type="html">Hi,
&lt;br&gt;&lt;br&gt;&amp;quot;Tobias C. Rittweiler&amp;quot; &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=21806036&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;tcr@...&lt;/a&gt;&amp;gt;
&lt;br&gt;writes:
&lt;br&gt;&lt;br&gt;&amp;gt; In that thread, it's mentioned there's a release 1.2c, but I cannot find
&lt;br&gt;&amp;gt; any newer release on
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;nbsp; &lt;a href=&quot;http://ftp.gnu.org/gnu/lightning/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://ftp.gnu.org/gnu/lightning/&lt;/a&gt;&lt;br&gt;&lt;br&gt;Try ftp://alpha.gnu.org/gnu/lightning/.
&lt;br&gt;&lt;br&gt;Thanks,
&lt;br&gt;Ludo'.
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;Lightning mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=21806036&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Lightning@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://lists.gnu.org/mailman/listinfo/lightning&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://lists.gnu.org/mailman/listinfo/lightning&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Releases--tp21800639p21806036.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-21800639</id>
	<title>Releases?</title>
	<published>2009-02-02T11:20:53Z</published>
	<updated>2009-02-02T11:20:53Z</updated>
	<author>
		<name>Tobias C. Rittweiler</name>
	</author>
	<content type="html">&lt;br&gt;I'm using the Lightning's Debian package which says it's version
&lt;br&gt;&amp;quot;1.2-4&amp;quot;; it seems to be from 2004.
&lt;br&gt;&lt;br&gt;I encountered the same problem as the the OP in
&lt;br&gt;&lt;br&gt;&amp;nbsp; &lt;a href=&quot;http://www.nabble.com/jit_allocai-instruction-macro-td18253220.html&quot; target=&quot;_top&quot;&gt;http://www.nabble.com/jit_allocai-instruction-macro-td18253220.html&lt;/a&gt;&lt;br&gt;&lt;br&gt;In that thread, it's mentioned there's a release 1.2c, but I cannot find
&lt;br&gt;any newer release on
&lt;br&gt;&lt;br&gt;&amp;nbsp; &lt;a href=&quot;http://ftp.gnu.org/gnu/lightning/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://ftp.gnu.org/gnu/lightning/&lt;/a&gt;&lt;br&gt;&lt;br&gt;What do I miss?
&lt;br&gt;&lt;br&gt;&amp;nbsp; -T.
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;Lightning mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=21800639&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Lightning@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://lists.gnu.org/mailman/listinfo/lightning&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://lists.gnu.org/mailman/listinfo/lightning&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Releases--tp21800639p21800639.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-20661428</id>
	<title>Re: how does one implement exceptions?</title>
	<published>2008-11-23T07:09:34Z</published>
	<updated>2008-11-23T07:09:34Z</updated>
	<author>
		<name>Paolo Bonzini-2</name>
	</author>
	<content type="html">&lt;br&gt;&lt;br&gt;&amp;gt; (Based on what I've read in the
&lt;br&gt;&amp;gt; mailing list archives, another alternative would be doing a full
&lt;br&gt;&amp;gt; conversion into CPS, having all stack frames in the heap etc.. but I'd
&lt;br&gt;&amp;gt; like to avoid this if at all possible.)
&lt;br&gt;&lt;br&gt;Well, this is just what GNU Smalltalk does. &amp;nbsp;It does not have all stack
&lt;br&gt;frames in the heap, it has stack frames on a separate stack that *are*
&lt;br&gt;allocated/deallocated LIFO. &amp;nbsp;This is what you meant by &amp;quot;using another
&lt;br&gt;memory area for a custom data stack&amp;quot;.
&lt;br&gt;&lt;br&gt;&amp;gt; &amp;nbsp;Actually, it seemed to me that Lightning doesn't even let one have
&lt;br&gt;&amp;gt; direct access to the stack pointer and push/pop operations (I suppose
&lt;br&gt;&amp;gt; for platform independence reasons).
&lt;br&gt;&lt;br&gt;It has access to the native stack via a frame pointer. &amp;nbsp;See jit_allocai
&lt;br&gt;and JIT_FP in the manual.
&lt;br&gt;&lt;br&gt;Paolo
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;Lightning mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=20661428&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Lightning@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://lists.gnu.org/mailman/listinfo/lightning&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://lists.gnu.org/mailman/listinfo/lightning&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/how-does-one-implement-exceptions--tp20641605p20661428.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-20641605</id>
	<title>how does one implement exceptions?</title>
	<published>2008-11-22T15:18:47Z</published>
	<updated>2008-11-22T15:18:47Z</updated>
	<author>
		<name>Mate Nagy</name>
	</author>
	<content type="html">Hiho,
&lt;br&gt;&amp;nbsp;so I'm toying with my Lisp interpreter (yes, another one...), and
&lt;br&gt;thought of using Lightning as a JIT solution. I have no previous
&lt;br&gt;experience with JIT or Lightning, so bear with me :)
&lt;br&gt;&lt;br&gt;&amp;nbsp;I have mostly read the Lightning info pages and documentation I saw,
&lt;br&gt;and I haven't found any hints on how people would implement exceptions
&lt;br&gt;with this toolset. At the very least, this would require something like
&lt;br&gt;setjmp/longjmp, or access to stack frames (reading return IPs, and
&lt;br&gt;doing lookups in tables based on them, oslt). I haven't found anything
&lt;br&gt;in the docs that looked like these.. &amp;nbsp;(Based on what I've read in the
&lt;br&gt;mailing list archives, another alternative would be doing a full
&lt;br&gt;conversion into CPS, having all stack frames in the heap etc.. but I'd
&lt;br&gt;like to avoid this if at all possible.)
&lt;br&gt;&lt;br&gt;&amp;nbsp;Actually, it seemed to me that Lightning doesn't even let one have
&lt;br&gt;direct access to the stack pointer and push/pop operations (I suppose
&lt;br&gt;for platform independence reasons). At least with the naive ways I can
&lt;br&gt;come up with, this makes it hard to generate code for a language with
&lt;br&gt;full lexical scoping and closure support, in such a way that the
&lt;br&gt;generated code used the process' own stack. (Using another memory area
&lt;br&gt;for a custom data stack is a solution for this, of course.)
&lt;br&gt;&lt;br&gt;&amp;nbsp;So, does anyone have any pointers for me regarding these issues?
&lt;br&gt;Thanks,
&lt;br&gt;&amp;nbsp;Mate
&lt;br&gt;&lt;br&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;Lightning mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=20641605&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Lightning@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://lists.gnu.org/mailman/listinfo/lightning&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://lists.gnu.org/mailman/listinfo/lightning&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/how-does-one-implement-exceptions--tp20641605p20641605.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-19912057</id>
	<title>Re: PPC problem</title>
	<published>2008-10-09T22:02:00Z</published>
	<updated>2008-10-09T22:02:00Z</updated>
	<author>
		<name>Paolo Bonzini-2</name>
	</author>
	<content type="html">&lt;br&gt;&amp;gt; Hmm, we have:
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; &amp;nbsp; start -= ((long) start) &amp; (cache_line_size - 1);
&lt;br&gt;&amp;gt; &amp;nbsp; end -= ((long) end - 1) &amp; (cache_line_size - 1);
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; which is different. &amp;nbsp;(I'm not too familiar with this code, so I'm
&lt;br&gt;&amp;gt; CCing Matthew too, in case there is something wrong in our version of
&lt;br&gt;&amp;gt; the file.)
&lt;br&gt;&lt;br&gt;No, it was this change:
&lt;br&gt;&lt;br&gt;2008-07-02 &amp;nbsp;Laurent Michel &amp;nbsp;&amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=19912057&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;ldm@...&lt;/a&gt;&amp;gt;
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; * lightning/ppc/funcs.h (jit_flush_code): modified the computation
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; of start/end. The pointer arithmetic was done without casting. It
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; prevented compilation with recent gcc versions.
&lt;br&gt;&lt;br&gt;If you have time, I think syncing MzScheme's lightning now would not be
&lt;br&gt;a bad idea.
&lt;br&gt;&lt;br&gt;Paolo
&lt;br&gt;&lt;br&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;Lightning mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=19912057&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Lightning@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://lists.gnu.org/mailman/listinfo/lightning&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://lists.gnu.org/mailman/listinfo/lightning&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/PPC-problem-tp19881741p19912057.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-19911967</id>
	<title>Re: PPC problem</title>
	<published>2008-10-09T21:49:57Z</published>
	<updated>2008-10-09T21:49:57Z</updated>
	<author>
		<name>Eli Barzilay</name>
	</author>
	<content type="html">On Oct &amp;nbsp;9, Paolo Bonzini wrote:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; Eli Barzilay wrote:
&lt;br&gt;&amp;gt; &amp;gt; 
&lt;br&gt;&amp;gt; &amp;gt; The fix is in &amp;quot;lightning/ppc/funcs.h&amp;quot;: subtract 1 from `end' here:
&lt;br&gt;&amp;gt; &amp;gt; 
&lt;br&gt;&amp;gt; &amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp;end -= ((long) end - 1) &amp; (cache_line_size - 1);
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; Thanks, here's what I applied:
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; diff --git a/lightning/ppc/funcs.h b/lightning/ppc/funcs.h
&lt;br&gt;&amp;gt; index 9f3df90..ae9301f 100644
&lt;br&gt;&amp;gt; --- a/lightning/ppc/funcs.h
&lt;br&gt;&amp;gt; +++ b/lightning/ppc/funcs.h
&lt;br&gt;&amp;gt; @@ -67,6 +67,9 @@ jit_flush_code(void *start, void *end)
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;break;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; + &amp;nbsp;/* Point end to the last byte being flushed. &amp;nbsp;*/
&lt;br&gt;&amp;gt; + &amp;nbsp;end &amp;nbsp; =(void*)( (long)(end - 1));
&lt;br&gt;&amp;gt; +
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;start =(void*)( (long)start - (((long) start) &amp; (cache_line_size - 1)));
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;end &amp;nbsp; =(void*)( (long)end &amp;nbsp; - (((long) end) &amp; (cache_line_size - 1)));
&lt;/div&gt;&lt;br&gt;Hmm, we have:
&lt;br&gt;&lt;br&gt;&amp;nbsp; start -= ((long) start) &amp; (cache_line_size - 1);
&lt;br&gt;&amp;nbsp; end -= ((long) end - 1) &amp; (cache_line_size - 1);
&lt;br&gt;&lt;br&gt;which is different. &amp;nbsp;(I'm not too familiar with this code, so I'm
&lt;br&gt;CCing Matthew too, in case there is something wrong in our version of
&lt;br&gt;the file.)
&lt;br&gt;&lt;br&gt;-- 
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ((lambda (x) (x x)) (lambda (x) (x x))) &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Eli Barzilay:
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;a href=&quot;http://www.barzilay.org/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.barzilay.org/&lt;/a&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Maze is Life!
&lt;br&gt;&lt;br&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;Lightning mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=19911967&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Lightning@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://lists.gnu.org/mailman/listinfo/lightning&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://lists.gnu.org/mailman/listinfo/lightning&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/PPC-problem-tp19881741p19911967.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-19894479</id>
	<title>Re: PPC problem</title>
	<published>2008-10-09T01:19:35Z</published>
	<updated>2008-10-09T01:19:35Z</updated>
	<author>
		<name>Paolo Bonzini-2</name>
	</author>
	<content type="html">Eli Barzilay wrote:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; There was a PPC problem that we've just fixed, and I'm forwarding it
&lt;br&gt;&amp;gt; here in case it's not fixed in the lightning repository:
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; (Quoting Matthew Flatt)
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; The problem was a bug in lightning's icache-flushing code (used by the
&lt;br&gt;&amp;gt; JIT) It could walk one word past the end of an allocated page onto an
&lt;br&gt;&amp;gt; unallocated page. The bug was exposed by yesterday's change to the way
&lt;br&gt;&amp;gt; that memory is allocated to hold JIT-generated native code.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; The fix is in &amp;quot;lightning/ppc/funcs.h&amp;quot;: subtract 1 from `end' here:
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp;end -= ((long) end - 1) &amp; (cache_line_size - 1);
&lt;/div&gt;&lt;br&gt;Thanks, here's what I applied:
&lt;br&gt;&lt;br&gt;diff --git a/lightning/ppc/funcs.h b/lightning/ppc/funcs.h
&lt;br&gt;index 9f3df90..ae9301f 100644
&lt;br&gt;--- a/lightning/ppc/funcs.h
&lt;br&gt;+++ b/lightning/ppc/funcs.h
&lt;br&gt;@@ -67,6 +67,9 @@ jit_flush_code(void *start, void *end)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;break;
&lt;br&gt;&amp;nbsp; &amp;nbsp;}
&lt;br&gt;&lt;br&gt;+ &amp;nbsp;/* Point end to the last byte being flushed. &amp;nbsp;*/
&lt;br&gt;+ &amp;nbsp;end &amp;nbsp; =(void*)( (long)(end - 1));
&lt;br&gt;+
&lt;br&gt;&amp;nbsp; &amp;nbsp;start =(void*)( (long)start - (((long) start) &amp; (cache_line_size - 1)));
&lt;br&gt;&amp;nbsp; &amp;nbsp;end &amp;nbsp; =(void*)( (long)end &amp;nbsp; - (((long) end) &amp; (cache_line_size - 1)));
&lt;br&gt;&lt;br&gt;Paolo
&lt;br&gt;&lt;br&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;Lightning mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=19894479&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Lightning@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://lists.gnu.org/mailman/listinfo/lightning&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://lists.gnu.org/mailman/listinfo/lightning&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/PPC-problem-tp19881741p19894479.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-19881741</id>
	<title>PPC problem</title>
	<published>2008-10-08T08:53:02Z</published>
	<updated>2008-10-08T08:53:02Z</updated>
	<author>
		<name>Eli Barzilay</name>
	</author>
	<content type="html">There was a PPC problem that we've just fixed, and I'm forwarding it
&lt;br&gt;here in case it's not fixed in the lightning repository:
&lt;br&gt;&lt;br&gt;(Quoting Matthew Flatt)
&lt;br&gt;&lt;br&gt;The problem was a bug in lightning's icache-flushing code (used by the
&lt;br&gt;JIT) It could walk one word past the end of an allocated page onto an
&lt;br&gt;unallocated page. The bug was exposed by yesterday's change to the way
&lt;br&gt;that memory is allocated to hold JIT-generated native code.
&lt;br&gt;&lt;br&gt;The fix is in &amp;quot;lightning/ppc/funcs.h&amp;quot;: subtract 1 from `end' here:
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;end -= ((long) end - 1) &amp; (cache_line_size - 1);
&lt;br&gt;&lt;br&gt;-- 
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ((lambda (x) (x x)) (lambda (x) (x x))) &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Eli Barzilay:
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;a href=&quot;http://www.barzilay.org/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.barzilay.org/&lt;/a&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Maze is Life!
&lt;br&gt;&lt;br&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;Lightning mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=19881741&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Lightning@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://lists.gnu.org/mailman/listinfo/lightning&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://lists.gnu.org/mailman/listinfo/lightning&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/PPC-problem-tp19881741p19881741.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-19532580</id>
	<title>Re: attempt to build clisp on mingw without debug with lightning is crash</title>
	<published>2008-09-17T06:51:27Z</published>
	<updated>2008-09-17T06:51:27Z</updated>
	<author>
		<name>Sam Steingold</name>
	</author>
	<content type="html">Yaroslav Kavenchuk wrote:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; ;; &amp;nbsp;Loading file C:\gnu\home\src\clisp\clisp\src\clos-genfun1.lisp ...
&lt;br&gt;&amp;gt; *** - handle_fault error2 ! address = 0x9ef50021 not in 
&lt;br&gt;&amp;gt; [0x5fde75d8,0x60000000) !
&lt;br&gt;&amp;gt; SIGSEGV cannot be cured. Fault address = 0x9ef50021.
&lt;br&gt;&amp;gt; GC count: 51
&lt;br&gt;&amp;gt; Space collected by GC: 0 23993120
&lt;br&gt;&amp;gt; Run time: 0 66718750
&lt;br&gt;&amp;gt; Real time: 0 72656250
&lt;br&gt;&amp;gt; GC time: 0 3593750
&lt;br&gt;&amp;gt; Permanently allocated: 90304 bytes.
&lt;br&gt;&amp;gt; Currently in use: 3158036 bytes.
&lt;br&gt;&amp;gt; Free space: 752430 bytes.
&lt;br&gt;&amp;gt; make: *** [interpreted.mem] Error 5
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; with debug - all ok.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; Any suggestions - how debug it?
&lt;/div&gt;&lt;br&gt;rm -f *.o
&lt;br&gt;edit Makefile and replace -O2 with -g in the CFLAGS and run under gdb.
&lt;br&gt;&lt;br&gt;also, take a look at the porting suggestions at the end of unix/PLATFORMS.
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;Lightning mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=19532580&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Lightning@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://lists.gnu.org/mailman/listinfo/lightning&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://lists.gnu.org/mailman/listinfo/lightning&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/attempt-to-build-clisp-on-mingw-without-debug-with-lightning-is-crash-tp19529250p19532580.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-19529250</id>
	<title>attempt to build clisp on mingw without debug with lightning is crash</title>
	<published>2008-09-17T02:41:36Z</published>
	<updated>2008-09-17T02:41:36Z</updated>
	<author>
		<name>Yaroslav Kavenchuk</name>
	</author>
	<content type="html">;; &amp;nbsp;Loading file C:\gnu\home\src\clisp\clisp\src\clos-genfun1.lisp ...
&lt;br&gt;*** - handle_fault error2 ! address = 0x9ef50021 not in 
&lt;br&gt;[0x5fde75d8,0x60000000) !
&lt;br&gt;SIGSEGV cannot be cured. Fault address = 0x9ef50021.
&lt;br&gt;GC count: 51
&lt;br&gt;Space collected by GC: 0 23993120
&lt;br&gt;Run time: 0 66718750
&lt;br&gt;Real time: 0 72656250
&lt;br&gt;GC time: 0 3593750
&lt;br&gt;Permanently allocated: 90304 bytes.
&lt;br&gt;Currently in use: 3158036 bytes.
&lt;br&gt;Free space: 752430 bytes.
&lt;br&gt;make: *** [interpreted.mem] Error 5
&lt;br&gt;&lt;br&gt;&lt;br&gt;with debug - all ok.
&lt;br&gt;&lt;br&gt;Any suggestions - how debug it?
&lt;br&gt;&lt;br&gt;-- 
&lt;br&gt;WBR, Yaroslav Kavenchuk.
&lt;br&gt;&lt;br&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;Lightning mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=19529250&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Lightning@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://lists.gnu.org/mailman/listinfo/lightning&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://lists.gnu.org/mailman/listinfo/lightning&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/attempt-to-build-clisp-on-mingw-without-debug-with-lightning-is-crash-tp19529250p19529250.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-18357686</id>
	<title>Re: jit_allocai instruction macro</title>
	<published>2008-07-09T02:32:37Z</published>
	<updated>2008-07-09T02:32:37Z</updated>
	<author>
		<name>Ludovic Courtès-3</name>
	</author>
	<content type="html">Hello,
&lt;br&gt;&lt;br&gt;PieSquared &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=18357686&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;piesquared@...&lt;/a&gt;&amp;gt; writes:
&lt;br&gt;&lt;br&gt;&amp;gt; The GNU Lightning manual (here:
&lt;br&gt;&amp;gt; &lt;a href=&quot;http://www.gnu.org/software/lightning/manual/lightning.html&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.gnu.org/software/lightning/manual/lightning.html&lt;/a&gt;) mentions and
&lt;br&gt;&amp;gt; uses the jit_allocai instruction macro, for example in the reverse polish
&lt;br&gt;&amp;gt; notation calculator. However, I cannot seem to find that anywhere...
&lt;br&gt;&lt;br&gt;Make sure you use the latest version of lightning, which must be 1.2c
&lt;br&gt;(1.2c does include it for sure).
&lt;br&gt;&lt;br&gt;&amp;gt; Instead, I see uses of jit_push... and jit_pop..., which aren't really
&lt;br&gt;&amp;gt; documented anywhere, it seems. In a previous mailing list post, it is
&lt;br&gt;&amp;gt; suggested that you use JIT_SP (and subtract from it) in order to achieve
&lt;br&gt;&amp;gt; similar functionality. Am I missing something, or using an out-dated
&lt;br&gt;&amp;gt; version of lightning? Or of it's manual?
&lt;br&gt;&lt;br&gt;Use of `jit_{push,pop} ()' is discouraged because that can't work
&lt;br&gt;portably on all arches, most notably on SPARC (see [0,1] for details).
&lt;br&gt;Likewise, fiddling with `JIT_SP' is not a good idea. &amp;nbsp;So `jit_allocai'
&lt;br&gt;is the recommended way to allocate room on the stack.
&lt;br&gt;&lt;br&gt;Thanks,
&lt;br&gt;Ludovic.
&lt;br&gt;&lt;br&gt;[0] &lt;a href=&quot;http://lists.gnu.org/archive/html/lightning/2006-10/msg00046.html&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://lists.gnu.org/archive/html/lightning/2006-10/msg00046.html&lt;/a&gt;&lt;br&gt;[1] &lt;a href=&quot;http://lists.gnu.org/archive/html/lightning/2006-10/msg00047.html&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://lists.gnu.org/archive/html/lightning/2006-10/msg00047.html&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;Lightning mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=18357686&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Lightning@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://lists.gnu.org/mailman/listinfo/lightning&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://lists.gnu.org/mailman/listinfo/lightning&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/jit_allocai-instruction-macro-tp18253220p18357686.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-18253220</id>
	<title>jit_allocai instruction macro</title>
	<published>2008-07-03T00:18:01Z</published>
	<updated>2008-07-03T00:18:01Z</updated>
	<author>
		<name>Pie Squared</name>
	</author>
	<content type="html">The GNU Lightning manual (here: &lt;a href=&quot;http://www.gnu.org/software/lightning/manual/lightning.html&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.gnu.org/software/lightning/manual/lightning.html&lt;/a&gt;) mentions and uses the jit_allocai instruction macro, for example in the reverse polish notation calculator. However, I cannot seem to find that anywhere... Instead, I see uses of jit_push... and jit_pop..., which aren&amp;#39;t really documented anywhere, it seems. In a previous mailing list post, it is suggested that you use JIT_SP (and subtract from it) in order to achieve similar functionality. Am I missing something, or using an out-dated version of lightning? Or of it&amp;#39;s manual?&lt;br&gt;
&lt;br&gt;Thanks.&lt;br&gt;&lt;br&gt;PS. Here is where I downloaded lightning from: &lt;a href=&quot;http://ftp.gnu.org/gnu/lightning/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://ftp.gnu.org/gnu/lightning/&lt;/a&gt; (the previous to last link)&lt;br clear=&quot;all&quot;&gt;&lt;br&gt;-- &lt;br&gt;~Andrew Gibiansky
&lt;br /&gt;_______________________________________________
&lt;br&gt;Lightning mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=18253220&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Lightning@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://lists.gnu.org/mailman/listinfo/lightning&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://lists.gnu.org/mailman/listinfo/lightning&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/jit_allocai-instruction-macro-tp18253220p18253220.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-18238774</id>
	<title>Patch for PPC-32</title>
	<published>2008-07-02T07:28:02Z</published>
	<updated>2008-07-02T07:28:02Z</updated>
	<author>
		<name>Laurent Michel-2</name>
	</author>
	<content type="html">&lt;html&gt;&lt;body style=&quot;word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; &quot;&gt;&lt;span&gt;&lt;div&gt;Good morning Paolo,&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;I attach below a patch containing two bug fixes for PPC.&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;1) The first is related to a compilation problem with a recent gcc version. Fixed by simply adding more casting.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;2) The macros for push/pop on PPC were using incorrect offsets.&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;/span&gt;&lt;/body&gt;&lt;/html&gt;&lt;br /&gt; &lt;br /&gt;&lt;html&gt;&lt;body style=&quot;word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; &quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;br&gt;&lt;br&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;PS/The x86_64 works great for me now! With the patches sent in the past weeks, everything works!&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;div&gt; &lt;span class=&quot;Apple-style-span&quot; style=&quot;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; &quot;&gt;&lt;div style=&quot;word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; &quot;&gt;&lt;div&gt;&lt;div&gt;--&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;Laurent&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;/div&gt;&lt;br&gt;&lt;/div&gt;&lt;/span&gt;&lt;br class=&quot;Apple-interchange-newline&quot;&gt; &lt;/div&gt;&lt;br&gt;&lt;/div&gt;&lt;/body&gt;&lt;/html&gt;&lt;br /&gt; &lt;br /&gt;_______________________________________________
&lt;br&gt;Lightning mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=18238774&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Lightning@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://lists.gnu.org/mailman/listinfo/lightning&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://lists.gnu.org/mailman/listinfo/lightning&lt;/a&gt;&lt;br&gt;&lt;div class=&quot;small&quot;&gt;&lt;br/&gt;&lt;img src=&quot;http://old.nabble.com/images/icon_attachment.gif&quot; &gt; &lt;strong&gt;patch-ppc32&lt;/strong&gt; (2K) &lt;a href=&quot;http://old.nabble.com/attachment/18238774/0/patch-ppc32&quot; target=&quot;_top&quot;&gt;Download Attachment&lt;/a&gt;&lt;br/&gt;&lt;img src=&quot;http://old.nabble.com/images/icon_attachment.gif&quot; &gt; &lt;strong&gt;smime.p7s&lt;/strong&gt; (5K) &lt;a href=&quot;http://old.nabble.com/attachment/18238774/1/smime.p7s&quot; target=&quot;_top&quot;&gt;Download Attachment&lt;/a&gt;&lt;/div&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Patch-for-PPC-32-tp18238774p18238774.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-18052274</id>
	<title>Fwd: [patch/rfa]: Add _setjmp/_longjmp macros</title>
	<published>2008-06-22T01:21:48Z</published>
	<updated>2008-06-22T01:21:48Z</updated>
	<author>
		<name>Reini Urban</name>
	</author>
	<content type="html">This recent cygwin change will clarify recent discussion.
&lt;br&gt;&lt;br&gt;---------- Forwarded message ----------
&lt;br&gt;From: Corinna Vinschen &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=18052274&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;vinschen@...&lt;/a&gt;&amp;gt;
&lt;br&gt;Date: 2008/6/21
&lt;br&gt;Subject: Re: [patch/rfa]: Add _setjmp/_longjmp macros
&lt;br&gt;To: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=18052274&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;newlib@...&lt;/a&gt;
&lt;br&gt;&lt;br&gt;&lt;br&gt;On Jan 13 17:32, Corinna Vinschen wrote:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; Hi,
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; SUSv3 defines a _setjmp/_longjmp pair of functions, which are equivalent
&lt;br&gt;&amp;gt; to setjmp/longjmp, except that they shall never manipulate the signal
&lt;br&gt;&amp;gt; mask:
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &lt;a href=&quot;http://www.opengroup.org/onlinepubs/009695399/functions/_setjmp.html&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.opengroup.org/onlinepubs/009695399/functions/_setjmp.html&lt;/a&gt;&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; The below patch adds _setjmp and _longjmp as macros calling
&lt;br&gt;&amp;gt; sigsetjmp/siglongjmp.
&lt;/div&gt;&lt;br&gt;I applied the below additional patch as obvious. &amp;nbsp;It defines both
&lt;br&gt;interfaces as functions when building for Cygwin.
&lt;br&gt;&lt;br&gt;&lt;br&gt;Corinna
&lt;br&gt;&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;* libc/include/machine/setjmp.h (_longjmp): Define as function on
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Cygwin.
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;(_setjmp): Ditto.
&lt;br&gt;&lt;br&gt;&lt;br&gt;Index: libc/include/machine/setjmp.h
&lt;br&gt;===================================================================
&lt;br&gt;RCS file: /cvs/src/src/newlib/libc/include/machine/setjmp.h,v
&lt;br&gt;retrieving revision 1.35
&lt;br&gt;diff -u -p -r1.35 setjmp.h
&lt;br&gt;--- libc/include/machine/setjmp.h &amp;nbsp; &amp;nbsp; &amp;nbsp; 15 Jan 2008 09:41:06 -0000 &amp;nbsp; &amp;nbsp; &amp;nbsp;1.35
&lt;br&gt;+++ libc/include/machine/setjmp.h &amp;nbsp; &amp;nbsp; &amp;nbsp; 21 Jun 2008 18:45:53 -0000
&lt;br&gt;@@ -307,11 +307,16 @@ typedef int sigjmp_buf[_JBLEN+2];
&lt;br&gt;&lt;br&gt;&amp;nbsp;#endif
&lt;br&gt;&lt;br&gt;-/* POSIX _setjmp/_longjmp macros, maintained for XSI compatibility. &amp;nbsp;These
&lt;br&gt;+/* POSIX _setjmp/_longjmp, maintained for XSI compatibility. &amp;nbsp;These
&lt;br&gt;&amp;nbsp; &amp;nbsp;are equivalent to sigsetjmp/siglongjmp when not saving the signal mask.
&lt;br&gt;&amp;nbsp; &amp;nbsp;New applications should use sigsetjmp/siglongjmp instead. */
&lt;br&gt;+#ifdef __CYGWIN__
&lt;br&gt;+extern void _longjmp(jmp_buf, int);
&lt;br&gt;+extern int _setjmp(jmp_buf);
&lt;br&gt;+#else
&lt;br&gt;&amp;nbsp;#define _setjmp(env) &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; sigsetjmp ((env), 0)
&lt;br&gt;&amp;nbsp;#define _longjmp(env, val) &amp;nbsp; &amp;nbsp; siglongjmp ((env), (val))
&lt;br&gt;+#endif
&lt;br&gt;&lt;br&gt;&amp;nbsp;#ifdef __cplusplus
&lt;br&gt;&amp;nbsp;}
&lt;br&gt;&lt;br&gt;--
&lt;br&gt;Corinna Vinschen
&lt;br&gt;Cygwin Project Co-Leader
&lt;br&gt;Red Hat
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;-- 
&lt;br&gt;Reini Urban
&lt;br&gt;&lt;a href=&quot;http://phpwiki.org/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://phpwiki.org/&lt;/a&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;a href=&quot;http://murbreak.at/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://murbreak.at/&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;Lightning mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=18052274&amp;i=2&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Lightning@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://lists.gnu.org/mailman/listinfo/lightning&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://lists.gnu.org/mailman/listinfo/lightning&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Fwd%3A--patch-rfa-%3A-Add-_setjmp-_longjmp-macros-tp18052274p18052274.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-17904747</id>
	<title>Re: Re: Still problems.</title>
	<published>2008-06-17T06:50:57Z</published>
	<updated>2008-06-17T06:50:57Z</updated>
	<author>
		<name>Laurent Michel</name>
	</author>
	<content type="html">You're the King &amp;nbsp;;-)
&lt;br&gt;&lt;br&gt;Thanks!
&lt;br&gt;&lt;br&gt;---
&lt;br&gt;&amp;nbsp; &amp;nbsp;Laurent
&lt;br&gt;&lt;br&gt;On Jun 17, 2008, at 9:25 AM, Paolo Bonzini wrote:
&lt;br&gt;&lt;div class='shrinkable-quote'&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; Here is the relevant macro. &amp;nbsp;Both references to RD use the same &amp;nbsp;
&lt;br&gt;&amp;gt;&amp;gt; masking
&lt;br&gt;&amp;gt;&amp;gt; #define IMULQir(IM, RD) (_REXQrr(0, RD), _Os_Mrm_sL &amp;nbsp;
&lt;br&gt;&amp;gt;&amp;gt; (0x69 ,_b11,_r8(RD),_r8(RD) ,IM ))
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; As Murphy's law goes, the only wrong ones were IMULQir and IMULQirr-- 
&lt;br&gt;&amp;gt; checked against as+objdump with the following assembly source code &amp;nbsp;
&lt;br&gt;&amp;gt; (stuff after # is a comment):
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; movq %r10, %rdx &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; #define MOVQrr(RS, RD) (_REXQrr(RS, RD)
&lt;br&gt;&amp;gt; testq %r10, %rdx &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;#define TESTQrr(RS, RD) (_REXQrr(RS, RD)
&lt;br&gt;&amp;gt; cmpxchgq %r10, %rdx &amp;nbsp; &amp;nbsp; #define CMPXCHGQrr(RS, RD) (_REXQrr(RS, RD)
&lt;br&gt;&amp;gt; xaddq %r10, %rdx &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;#define XADDQrr(RS, RD) (_REXQrr(RS, RD)
&lt;br&gt;&amp;gt; xchgq %r10, %rdx &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;#define XCHGQrr(RS, RD) (_REXQrr(RS, RD)
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; imulq %r10, %rdx &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;#define IMULQrr(RS, RD) (_REXQrr(RD, RS)
&lt;br&gt;&amp;gt; imulq $10, %r10, %rdx &amp;nbsp; #define IMULQirr(IM,RS,RD) (_REXQrr(RS, RD) &amp;nbsp; 
&lt;br&gt;&amp;gt; &amp;lt;&amp;lt;&amp;lt; WRONG!
&lt;br&gt;&amp;gt; cmovbq %r10, %rdx &amp;nbsp; &amp;nbsp; &amp;nbsp; #define CMOVQrr(CC,RS,RD) (_REXQrr(RD, RS)
&lt;br&gt;&amp;gt; bsfq %r10, %rdx &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; #define BSFQrr(RS, RD) (_REXQrr(RD, RS)
&lt;br&gt;&amp;gt; bsrq %r10, %rdx &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; #define BSRQrr(RS, RD) (_REXQrr(RD, RS)
&lt;br&gt;&amp;gt; movsbq %r10b, %rdx &amp;nbsp; &amp;nbsp; &amp;nbsp;#define MOVSBQrr(RS, RD) (_REXQrr(RD, RS)
&lt;br&gt;&amp;gt; movzbq %r10b, %rdx &amp;nbsp; &amp;nbsp; &amp;nbsp;#define MOVZBQrr(RS, RD) (_REXQrr(RD, RS)
&lt;br&gt;&amp;gt; movswq %r10w, %rdx &amp;nbsp; &amp;nbsp; &amp;nbsp;#define MOVSWQrr(RS, RD) (_REXQrr(RD, RS)
&lt;br&gt;&amp;gt; movzwq %r10w, %rdx &amp;nbsp; &amp;nbsp; &amp;nbsp;#define MOVZWQrr(RS, RD) (_REXQrr(RD, RS)
&lt;br&gt;&amp;gt; movslq %r10d, %rdx &amp;nbsp; &amp;nbsp; &amp;nbsp;#define MOVSLQrr(RS, RD) &amp;nbsp;
&lt;br&gt;&amp;gt; _m64only((_REXQrr(RD, RS)
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Fix committed &amp; pushed.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Paolo
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; _______________________________________________
&lt;br&gt;&amp;gt; Lightning mailing list
&lt;br&gt;&amp;gt; &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=17904747&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Lightning@...&lt;/a&gt;
&lt;br&gt;&amp;gt; &lt;a href=&quot;http://lists.gnu.org/mailman/listinfo/lightning&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://lists.gnu.org/mailman/listinfo/lightning&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;--
&lt;br&gt;&amp;nbsp; &amp;nbsp;Laurent
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br /&gt; &lt;br /&gt;_______________________________________________
&lt;br&gt;Lightning mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=17904747&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Lightning@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://lists.gnu.org/mailman/listinfo/lightning&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://lists.gnu.org/mailman/listinfo/lightning&lt;/a&gt;&lt;br&gt;&lt;div class=&quot;small&quot;&gt;&lt;br/&gt;&lt;img src=&quot;http://old.nabble.com/images/icon_attachment.gif&quot; &gt; &lt;strong&gt;smime.p7s&lt;/strong&gt; (6K) &lt;a href=&quot;http://old.nabble.com/attachment/17904747/0/smime.p7s&quot; target=&quot;_top&quot;&gt;Download Attachment&lt;/a&gt;&lt;/div&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Re%3A-Still-problems.-tp17879713p17904747.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-17902243</id>
	<title>Re: Still problems.</title>
	<published>2008-06-17T06:25:31Z</published>
	<updated>2008-06-17T06:25:31Z</updated>
	<author>
		<name>Paolo Bonzini-2</name>
	</author>
	<content type="html">&lt;br&gt;&amp;gt; Here is the relevant macro. &amp;nbsp;Both references to RD use the same masking
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; #define IMULQir(IM, RD) (_REXQrr(0, RD), _Os_Mrm_sL (0x69 
&lt;br&gt;&amp;gt; ,_b11,_r8(RD),_r8(RD) ,IM ))
&lt;br&gt;&lt;br&gt;As Murphy's law goes, the only wrong ones were IMULQir and 
&lt;br&gt;IMULQirr--checked against as+objdump with the following assembly source 
&lt;br&gt;code (stuff after # is a comment):
&lt;br&gt;&lt;br&gt;movq %r10, %rdx &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; #define MOVQrr(RS, RD) 
&lt;br&gt;(_REXQrr(RS, RD)
&lt;br&gt;testq %r10, %rdx &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;#define TESTQrr(RS, RD) 
&lt;br&gt;(_REXQrr(RS, RD)
&lt;br&gt;cmpxchgq %r10, %rdx &amp;nbsp; &amp;nbsp; #define CMPXCHGQrr(RS, RD) 
&lt;br&gt;(_REXQrr(RS, RD)
&lt;br&gt;xaddq %r10, %rdx &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;#define XADDQrr(RS, RD) 
&lt;br&gt;(_REXQrr(RS, RD)
&lt;br&gt;xchgq %r10, %rdx &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;#define XCHGQrr(RS, RD) 
&lt;br&gt;(_REXQrr(RS, RD)
&lt;br&gt;&lt;br&gt;imulq %r10, %rdx &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;#define IMULQrr(RS, RD) 
&lt;br&gt;(_REXQrr(RD, RS)
&lt;br&gt;imulq $10, %r10, %rdx &amp;nbsp; #define IMULQirr(IM,RS,RD) 
&lt;br&gt;(_REXQrr(RS, RD) &amp;nbsp;&amp;lt;&amp;lt;&amp;lt; WRONG!
&lt;br&gt;cmovbq %r10, %rdx &amp;nbsp; &amp;nbsp; &amp;nbsp; #define CMOVQrr(CC,RS,RD) 
&lt;br&gt;(_REXQrr(RD, RS)
&lt;br&gt;bsfq %r10, %rdx &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; #define BSFQrr(RS, RD) 
&lt;br&gt;(_REXQrr(RD, RS)
&lt;br&gt;bsrq %r10, %rdx &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; #define BSRQrr(RS, RD) 
&lt;br&gt;(_REXQrr(RD, RS)
&lt;br&gt;movsbq %r10b, %rdx &amp;nbsp; &amp;nbsp; &amp;nbsp;#define MOVSBQrr(RS, RD) 
&lt;br&gt;(_REXQrr(RD, RS)
&lt;br&gt;movzbq %r10b, %rdx &amp;nbsp; &amp;nbsp; &amp;nbsp;#define MOVZBQrr(RS, RD) 
&lt;br&gt;(_REXQrr(RD, RS)
&lt;br&gt;movswq %r10w, %rdx &amp;nbsp; &amp;nbsp; &amp;nbsp;#define MOVSWQrr(RS, RD) 
&lt;br&gt;(_REXQrr(RD, RS)
&lt;br&gt;movzwq %r10w, %rdx &amp;nbsp; &amp;nbsp; &amp;nbsp;#define MOVZWQrr(RS, RD) 
&lt;br&gt;(_REXQrr(RD, RS)
&lt;br&gt;movslq %r10d, %rdx &amp;nbsp; &amp;nbsp; &amp;nbsp;#define MOVSLQrr(RS, RD) 
&lt;br&gt;_m64only((_REXQrr(RD, RS)
&lt;br&gt;&lt;br&gt;Fix committed &amp; pushed.
&lt;br&gt;&lt;br&gt;Paolo
&lt;br&gt;&lt;br&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;Lightning mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=17902243&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Lightning@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://lists.gnu.org/mailman/listinfo/lightning&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://lists.gnu.org/mailman/listinfo/lightning&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Re%3A-Still-problems.-tp17879713p17902243.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-17899923</id>
	<title>Re: Still problems.</title>
	<published>2008-06-17T06:05:22Z</published>
	<updated>2008-06-17T06:05:22Z</updated>
	<author>
		<name>Paolo Bonzini-2</name>
	</author>
	<content type="html">&lt;br&gt;&amp;gt; Here is the relevant macro. &amp;nbsp;Both references to RD use the same masking
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; #define IMULQir(IM, RD) (_REXQrr(0, RD), _Os_Mrm_sL (0x69 
&lt;br&gt;&amp;gt; ,_b11,_r8(RD),_r8(RD) ,IM ))
&lt;br&gt;&lt;br&gt;Even better, as the disassembly suggests:
&lt;br&gt;&lt;br&gt;#define IMULQir(IM, RD) &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; IMULQir(IM, (RD), (RD))
&lt;br&gt;&lt;br&gt;There seem to be other problems in the encoding of the REX bits though.
&lt;br&gt;&lt;br&gt;Paolo
&lt;br&gt;&lt;br&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;Lightning mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=17899923&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Lightning@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://lists.gnu.org/mailman/listinfo/lightning&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://lists.gnu.org/mailman/listinfo/lightning&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Re%3A-Still-problems.-tp17879713p17899923.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-17899222</id>
	<title>Re: Still problems.</title>
	<published>2008-06-17T05:59:32Z</published>
	<updated>2008-06-17T05:59:32Z</updated>
	<author>
		<name>Paolo Bonzini-2</name>
	</author>
	<content type="html">&lt;br&gt;&amp;gt; #define IMULQir(IM, RD) (_REXQrr(0, RD), _Os_Mrm_sL (0x69 
&lt;br&gt;&amp;gt; ,_b11,_r8(RD),_r8(RD) ,IM ))
&lt;br&gt;&lt;br&gt;I tried assembling two instructions and got;
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; 0: &amp;nbsp; 4d 6b d2 0a &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; imul &amp;nbsp; $0xa,%r10,%r10
&lt;br&gt;&amp;nbsp; &amp;nbsp; 4: &amp;nbsp; 49 6b d2 0a &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; imul &amp;nbsp; $0xa,%r10,%rdx
&lt;br&gt;&lt;br&gt;I think the _REXQrr arguments should be &amp;quot;RD, RD&amp;quot;.
&lt;br&gt;&lt;br&gt;Paolo
&lt;br&gt;&lt;br&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;Lightning mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=17899222&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Lightning@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://lists.gnu.org/mailman/listinfo/lightning&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://lists.gnu.org/mailman/listinfo/lightning&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Re%3A-Still-problems.-tp17879713p17899222.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-17898217</id>
	<title>Re: Still problems.</title>
	<published>2008-06-17T05:52:31Z</published>
	<updated>2008-06-17T05:52:31Z</updated>
	<author>
		<name>Laurent Michel</name>
	</author>
	<content type="html">&lt;html&gt;&lt;body style=&quot;word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; &quot;&gt;I tried the patch. The call goes through, but I'm afraid something else is interfering. The code fragment:&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; _code-&gt;getarg_p(CJIT_V0, ofs4); &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; _code-&gt;ldxi_l(CJIT_R0,CJIT_V2,LocRuntime::offsetOfST());&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; _code-&gt;ldxi_l(CJIT_R1,CJIT_R0,LocRTStackI::offsetOfMX());&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; _code-&gt;ldxi_l(CJIT_R2,CJIT_R0,LocRTStackI::offsetOfST());&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; _code-&gt;muli_l(CJIT_R1,CJIT_R1,sizeof(ColSlotI)); &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Now generates:&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;0x1000300002:&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;mov &amp;nbsp; &amp;nbsp;%rcx,%rbx&lt;/div&gt;&lt;div&gt;0x1000300005:&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;mov &amp;nbsp; &amp;nbsp;0x48(%r13),%rax&lt;/div&gt;&lt;div&gt;0x1000300009:&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;mov &amp;nbsp; &amp;nbsp;0x8(%rax),%r10&lt;/div&gt;&lt;div&gt;0x100030000d:&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;mov &amp;nbsp; &amp;nbsp;0x10(%rax),%r11&lt;/div&gt;&lt;div&gt;0x1000300011:&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;imul &amp;nbsp; $0x10,%r10,%rdx&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;The last instruction is of interest. It should be &amp;nbsp;R1 &amp;lt;- R1 * $0x10. Now it somehow gets translated into a write into RDX rather than into R10. I checked the macro in core-64.h&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;#define jit_muli_l(d, rs, is)&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;jit_op_ ((d), (rs), &amp;nbsp; &amp;nbsp; &amp;nbsp; IMULQir((is), (d)) &lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;		&lt;/span&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; )&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;and it looks fine.&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;The jit_op_ looks fine too:&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;/* 3-parameter operation, with immediate */&lt;/div&gt;&lt;div&gt;#define jit_op_(d, s1, op2d)&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;				&lt;/span&gt;\&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;((s1 == d) ? op2d : (MOVLrr(s1, d), op2d))&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;I double checked and the first arguments to the macro &amp;nbsp;are indeed equal and equal to 0x4A (R10).&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Here is the relevant macro. &amp;nbsp;Both references to RD use the same masking&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;#define IMULQir(IM, RD)&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;			&lt;/span&gt;(_REXQrr(0, RD),&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;		&lt;/span&gt;_Os_Mrm_sL&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;(0x69&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;		&lt;/span&gt;,_b11,_r8(RD),_r8(RD)&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;			&lt;/span&gt;,IM&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;))&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;The _r8(RD) macro tests RD to decide how to mask it and it appears that it elects to use _r4(RD) for its encoding. Which produces:&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;(gdb) p /t CJIT_R1 &amp;amp; 0x07&lt;/div&gt;&lt;div&gt;$19 = 10&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;I checked how RDX would be masked and of course I get:&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;(gdb) p /t 0x52 &amp;amp; 0x07&lt;/div&gt;&lt;div&gt;&lt;div&gt;$20 = 10&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;So it would sound like R10 is not really a GPR. It cannot appear anywhere ? Either that is the case, or the instruction should use _r4 to encode the destination register. I'll try to get the intel spec to check, but I thought I'd report now anyhow.&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;On Jun 17, 2008, at 3:34 AM, Paolo Bonzini wrote:&lt;/div&gt;&lt;br class=&quot;Apple-interchange-newline&quot;&gt;&lt;blockquote type=&quot;cite&quot;&gt;&lt;div&gt;&lt;br&gt;&lt;blockquote type=&quot;cite&quot;&gt;3) modified jit_shift_args to use nbargs instead.&lt;br&gt;&lt;/blockquote&gt;&lt;blockquote type=&quot;cite&quot;&gt;#define jit_shift_args() \&lt;br&gt;&lt;/blockquote&gt;&lt;blockquote type=&quot;cite&quot;&gt; &amp;nbsp;&amp;nbsp;((_jitl.nbargs &gt;= 3 ? (void) (MOVQrr(_R10D, _RDX)) : (void) 0), \&lt;br&gt;&lt;/blockquote&gt;&lt;blockquote type=&quot;cite&quot;&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;(_jitl.nbargs &gt;= 4 ? (void) (MOVQrr(_R11D, _RCX)) : (void) 0))&lt;br&gt;&lt;/blockquote&gt;&lt;blockquote type=&quot;cite&quot;&gt;With this change, it moves the values as expected.&lt;br&gt;&lt;/blockquote&gt;&lt;br&gt;It turns out that with JIT_Rx mapped to RAX/R10/R11 there is no need for jit_shift_args anymore. &amp;nbsp;That's good!&lt;br&gt;&lt;br&gt;I attach the patch I committed so that you can see what's going on.&lt;br&gt;&lt;br&gt;Paolo&lt;br&gt;diff --git a/ChangeLog b/ChangeLog&lt;br&gt;index 1e05fe1..0d0f86a 100644&lt;br&gt;--- a/ChangeLog&lt;br&gt;+++ b/ChangeLog&lt;br&gt;@@ -1,3 +1,13 @@&lt;br&gt;+2008-06-16 &amp;nbsp;Paolo Bonzini &amp;nbsp;&amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=17898217&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;bonzini@...&lt;/a&gt;&gt;&lt;br&gt;+&lt;br&gt;+&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;* lightning/i386/core.h: Use jit_save in jit_replace. &amp;nbsp;Move JIT_R&lt;br&gt;+&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;definition...&lt;br&gt;+&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;* lightning/i386/core-32.h: ... here; define jit_save so that&lt;br&gt;+&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;the core.h has no effect on the 32-bit backend.&lt;br&gt;+&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;* lightning/i386/core-64.h: Place JIT_R1/JIT_R2 in R10/R11,&lt;br&gt;+&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;place outgoing arguments in the right spot from the beginning,&lt;br&gt;+&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;define jit_save, fix jit_reg8/jit_reg16.&lt;br&gt;+&lt;br&gt; 2008-06-15 &amp;nbsp;Paolo Bonzini &amp;nbsp;&amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=17898217&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;bonzini@...&lt;/a&gt;&gt;&lt;br&gt;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;* lightning/i386/core-64.h: Rewrite argument passing to&lt;br&gt;diff --git a/lightning/i386/core-32.h b/lightning/i386/core-32.h&lt;br&gt;index 9775fc8..46b3516 100644&lt;br&gt;--- a/lightning/i386/core-32.h&lt;br&gt;+++ b/lightning/i386/core-32.h&lt;br&gt;@@ -36,6 +36,9 @@&lt;br&gt;&lt;br&gt; #define JIT_CAN_16 1&lt;br&gt; #define JIT_AP&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;_EBP&lt;br&gt;+&lt;br&gt;+#define JIT_R_NUM&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;3&lt;br&gt;+#define JIT_R(i)&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;(_EAX + (i))&lt;br&gt; #define JIT_V_NUM&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;3&lt;br&gt; #define JIT_V(i)&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;((i) == 0 ? _EBX : _ESI + (i) - 1)&lt;br&gt;&lt;br&gt;@@ -46,6 +49,9 @@ struct jit_local_state {&lt;br&gt; &amp;nbsp;&amp;nbsp;int&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;alloca_slack;&lt;br&gt; };&lt;br&gt;&lt;br&gt;+/* Whether a register is used for the user-accessible registers. &amp;nbsp;*/&lt;br&gt;+#define jit_save(reg)&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;1&lt;br&gt;+&lt;br&gt; #define jit_base_prolog() (_jitl.framesize = 20, _jitl.alloca_offset = 0, \&lt;br&gt; &amp;nbsp;&amp;nbsp;PUSHLr(_EBX), PUSHLr(_ESI), PUSHLr(_EDI), PUSHLr(_EBP), MOVLrr(_ESP, _EBP))&lt;br&gt; #define jit_base_ret(ofs)&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt; &amp;nbsp;\&lt;br&gt;diff --git a/lightning/i386/core-64.h b/lightning/i386/core-64.h&lt;br&gt;index 173a229..5da7535 100644&lt;br&gt;--- a/lightning/i386/core-64.h&lt;br&gt;+++ b/lightning/i386/core-64.h&lt;br&gt;@@ -38,6 +38,8 @@&lt;br&gt; #define JIT_CAN_16 0&lt;br&gt; #define JIT_REXTMP&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;_R9D&lt;br&gt;&lt;br&gt;+#define JIT_R_NUM&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;3&lt;br&gt;+#define JIT_R(i) &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;((i) == 0 ? _EAX : _R9D + (i))&lt;br&gt; #define JIT_V_NUM &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;3&lt;br&gt; #define JIT_V(i) &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;((i) == 0 ? _EBX : _R11D + (i))&lt;br&gt;&lt;br&gt;@@ -51,6 +53,9 @@ struct jit_local_state {&lt;br&gt; &amp;nbsp;&amp;nbsp;int &amp;nbsp;&amp;nbsp;alloca_slack;&lt;br&gt; };&lt;br&gt;&lt;br&gt;+/* Whether a register in the &quot;low&quot; bank is used for the user-accessible&lt;br&gt;+ &amp;nbsp;&amp;nbsp;registers. &amp;nbsp;*/&lt;br&gt;+#define jit_save(reg)&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;((reg) == _EAX || (reg) == _EBX)&lt;br&gt;&lt;br&gt; /* Keep the stack 16-byte aligned, the SSE hardware prefers it this way. &amp;nbsp;*/&lt;br&gt; #define jit_allocai_internal(amount, slack) &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;\&lt;br&gt;@@ -128,19 +133,13 @@ struct jit_local_state {&lt;br&gt; /* Stack isn't used for arguments: */&lt;br&gt; #define jit_prepare_i(ni)&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;(_jitl.argssize = (ni))&lt;br&gt;&lt;br&gt;-#define jit_pusharg_i(rs)&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;(--_jitl.argssize, MOVQrr(rs, jit_arg_reg_temp[_jitl.argssize]))&lt;br&gt;-#define jit_finish(sub) &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;(jit_shift_args(), \&lt;br&gt;-&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt; MOVQir((long) (sub), JIT_REXTMP), \&lt;br&gt;+#define jit_pusharg_i(rs)&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;(--_jitl.argssize, MOVQrr(rs, jit_arg_reg_order[_jitl.argssize]))&lt;br&gt;+#define jit_finish(sub) &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;(MOVQir((long) (sub), JIT_REXTMP), \&lt;br&gt; &lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt; CALLsr(JIT_REXTMP))&lt;br&gt; #define jit_reg_is_arg(reg) &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;((reg) == _ECX || (reg) == _EDX)&lt;br&gt; #define jit_finishr(reg)&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;((jit_reg_is_arg((reg)) ? MOVQrr(reg, JIT_REXTMP) : (void)0), \&lt;br&gt;- &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;jit_shift_args(), \&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;CALLsr(jit_reg_is_arg((reg)) ? JIT_REXTMP : (reg)))&lt;br&gt;&lt;br&gt;-#define jit_shift_args() \&lt;br&gt;- &amp;nbsp;&amp;nbsp;((_jitl.argssize &gt;= 3 ? (void) (MOVQrr(_R10D, _RDX)) : (void) 0), \&lt;br&gt;- &amp;nbsp;&amp;nbsp;&amp;nbsp;(_jitl.argssize &gt;= 4 ? (void) (MOVQrr(_R11D, _RCX)) : (void) 0))&lt;br&gt;-&lt;br&gt; #define jit_retval_l(rd)&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;((void)jit_movr_l ((rd), _EAX))&lt;br&gt; #define&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;jit_arg_c()&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;(jit_arg_reg_order[_jitl.nextarg_geti++])&lt;br&gt; #define&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;jit_arg_uc()&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;(jit_arg_reg_order[_jitl.nextarg_geti++])&lt;br&gt;@@ -152,7 +151,6 @@ struct jit_local_state {&lt;br&gt; #define&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;jit_arg_ul()&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;(jit_arg_reg_order[_jitl.nextarg_geti++])&lt;br&gt; #define&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;jit_arg_p()&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;(jit_arg_reg_order[_jitl.nextarg_geti++])&lt;br&gt;&lt;br&gt;-static int jit_arg_reg_temp[] = { _EDI, _ESI, _R10D, _R11D, _R8D, _R9D };&lt;br&gt; static int jit_arg_reg_order[] = { _EDI, _ESI, _EDX, _ECX, _R8D, _R9D };&lt;br&gt;&lt;br&gt; #define jit_negr_l(d, rs)&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;jit_opi_((d), (rs), NEGQr(d), (XORQrr((d), (d)), SUBQrr((rs), (d))) )&lt;br&gt;@@ -185,8 +183,8 @@ static int jit_arg_reg_order[] = { _EDI, _ESI, _EDX, _ECX, _R8D, _R9D };&lt;br&gt;&lt;br&gt; /* Used to implement ldc, stc, ... We have SIL and friends which simplify it all. &amp;nbsp;*/&lt;br&gt; #define jit_check8(rs) &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;1&lt;br&gt;-#define jit_reg8(rs) &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;(_rN(rs) | _AL )&lt;br&gt;-#define jit_reg16(rs) &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;(_rN(rs) | _AX )&lt;br&gt;+#define jit_reg8(rs) &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;(_rR(rs) | _AL )&lt;br&gt;+#define jit_reg16(rs) &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;(_rR(rs) | _AX )&lt;br&gt; #define jit_movbrm(rs, dd, db, di, ds) &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;MOVBrm(jit_reg8(rs), dd, db, di, ds)&lt;br&gt;&lt;br&gt; #define jit_ldi_c(d, is) &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;(_u32P((long)(is)) ? MOVSBLmr((is), 0, &amp;nbsp;&amp;nbsp;&amp;nbsp;0, &amp;nbsp;&amp;nbsp;&amp;nbsp;0, (d)) : &amp;nbsp;(jit_movi_l(JIT_REXTMP, is), jit_ldr_c(d, JIT_REXTMP)))&lt;br&gt;diff --git a/lightning/i386/core.h b/lightning/i386/core.h&lt;br&gt;index ad99d4d..64f8e80 100644&lt;br&gt;--- a/lightning/i386/core.h&lt;br&gt;+++ b/lightning/i386/core.h&lt;br&gt;@@ -38,9 +38,6 @@&lt;br&gt; #define JIT_SP&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;_ESP&lt;br&gt; #define JIT_RET&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;_EAX&lt;br&gt;&lt;br&gt;-#define JIT_R_NUM&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;3&lt;br&gt;-#define JIT_R(i)&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;(_EAX + (i))&lt;br&gt;-&lt;br&gt;&lt;br&gt; /* 3-parameter operation */&lt;br&gt; #define jit_opr_(d, s1, s2, op1d, op2d)&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;\&lt;br&gt;@@ -64,7 +61,11 @@&lt;br&gt; /* An operand is forced into a register */&lt;br&gt; #define jit_replace(rd, rs, forced, op)&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;\&lt;br&gt; &lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;((rd == forced) ? JITSORRY(&quot;Register conflict for &quot; # op) :&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;\&lt;br&gt;-&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt; (rs == forced) ? op : (jit_pushr_i(forced), MOVLrr(rs, forced), op, jit_popr_i(forced)))&lt;br&gt;+&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt; (rs == forced)&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;? op :&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;\&lt;br&gt;+&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt; jit_save (forced)&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;\&lt;br&gt;+&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt; &amp;nbsp;? (jit_pushr_i(forced), jit_movr_l(rs, forced), op,&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;\&lt;br&gt;+&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;jit_popr_i(forced))&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;\&lt;br&gt;+&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt; &amp;nbsp;: (jit_movr_l(rs, forced), op))&lt;br&gt;&lt;br&gt; /* For LT, LE, ... */&lt;br&gt; #define jit_replace8(d, cmp, op)&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;\&lt;br&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;br&gt;&lt;div&gt; &lt;span class=&quot;Apple-style-span&quot; style=&quot;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; &quot;&gt;&lt;div style=&quot;word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; &quot;&gt;&lt;div&gt;&lt;div&gt;--&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;Laurent&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;/div&gt;&lt;br&gt;&lt;/div&gt;&lt;/span&gt;&lt;br class=&quot;Apple-interchange-newline&quot;&gt; &lt;/div&gt;&lt;br&gt;&lt;/div&gt;&lt;/body&gt;&lt;/html&gt;&lt;br /&gt; &lt;br /&gt;_______________________________________________
&lt;br&gt;Lightning mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=17898217&amp;i=2&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Lightning@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://lists.gnu.org/mailman/listinfo/lightning&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://lists.gnu.org/mailman/listinfo/lightning&lt;/a&gt;&lt;br&gt;&lt;div class=&quot;small&quot;&gt;&lt;br/&gt;&lt;img src=&quot;http://old.nabble.com/images/icon_attachment.gif&quot; &gt; &lt;strong&gt;smime.p7s&lt;/strong&gt; (5K) &lt;a href=&quot;http://old.nabble.com/attachment/17898217/0/smime.p7s&quot; target=&quot;_top&quot;&gt;Download Attachment&lt;/a&gt;&lt;/div&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Re%3A-Still-problems.-tp17879713p17898217.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-17884371</id>
	<title>Re: Still problems.</title>
	<published>2008-06-17T04:14:08Z</published>
	<updated>2008-06-17T04:14:08Z</updated>
	<author>
		<name>Laurent Michel</name>
	</author>
	<content type="html">&lt;html&gt;&lt;body style=&quot;word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; &quot;&gt;&lt;br&gt;&lt;div&gt;&lt;div&gt;On Jun 17, 2008, at 3:34 AM, Paolo Bonzini wrote:&lt;/div&gt;&lt;br class=&quot;Apple-interchange-newline&quot;&gt;&lt;blockquote type=&quot;cite&quot;&gt;&lt;div&gt;&lt;br&gt;&lt;blockquote type=&quot;cite&quot;&gt;3) modified jit_shift_args to use nbargs instead.&lt;br&gt;&lt;/blockquote&gt;&lt;blockquote type=&quot;cite&quot;&gt;#define jit_shift_args() \&lt;br&gt;&lt;/blockquote&gt;&lt;blockquote type=&quot;cite&quot;&gt; &amp;nbsp;&amp;nbsp;((_jitl.nbargs &gt;= 3 ? (void) (MOVQrr(_R10D, _RDX)) : (void) 0), \&lt;br&gt;&lt;/blockquote&gt;&lt;blockquote type=&quot;cite&quot;&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;(_jitl.nbargs &gt;= 4 ? (void) (MOVQrr(_R11D, _RCX)) : (void) 0))&lt;br&gt;&lt;/blockquote&gt;&lt;blockquote type=&quot;cite&quot;&gt;With this change, it moves the values as expected.&lt;br&gt;&lt;/blockquote&gt;&lt;br&gt;It turns out that with JIT_Rx mapped to RAX/R10/R11 there is no need for jit_shift_args anymore. &amp;nbsp;That's good!&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;Wonderful. I'll update. Looks like the other small patch is no longer necessary since there is no shifting ;-) Good all around!&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;blockquote type=&quot;cite&quot;&gt;&lt;div&gt;&lt;br&gt;&lt;br&gt;I attach the patch I committed so that you can see what's going on.&lt;br&gt;&lt;br&gt;Paolo&lt;br&gt;diff --git a/ChangeLog b/ChangeLog&lt;br&gt;index 1e05fe1..0d0f86a 100644&lt;br&gt;--- a/ChangeLog&lt;br&gt;+++ b/ChangeLog&lt;br&gt;@@ -1,3 +1,13 @@&lt;br&gt;+2008-06-16 &amp;nbsp;Paolo Bonzini &amp;nbsp;&amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=17884371&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;bonzini@...&lt;/a&gt;&gt;&lt;br&gt;+&lt;br&gt;+&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;* lightning/i386/core.h: Use jit_save in jit_replace. &amp;nbsp;Move JIT_R&lt;br&gt;+&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;definition...&lt;br&gt;+&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;* lightning/i386/core-32.h: ... here; define jit_save so that&lt;br&gt;+&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;the core.h has no effect on the 32-bit backend.&lt;br&gt;+&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;* lightning/i386/core-64.h: Place JIT_R1/JIT_R2 in R10/R11,&lt;br&gt;+&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;place outgoing arguments in the right spot from the beginning,&lt;br&gt;+&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;define jit_save, fix jit_reg8/jit_reg16.&lt;br&gt;+&lt;br&gt; 2008-06-15 &amp;nbsp;Paolo Bonzini &amp;nbsp;&amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=17884371&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;bonzini@...&lt;/a&gt;&gt;&lt;br&gt;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;* lightning/i386/core-64.h: Rewrite argument passing to&lt;br&gt;diff --git a/lightning/i386/core-32.h b/lightning/i386/core-32.h&lt;br&gt;index 9775fc8..46b3516 100644&lt;br&gt;--- a/lightning/i386/core-32.h&lt;br&gt;+++ b/lightning/i386/core-32.h&lt;br&gt;@@ -36,6 +36,9 @@&lt;br&gt;&lt;br&gt; #define JIT_CAN_16 1&lt;br&gt; #define JIT_AP&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;_EBP&lt;br&gt;+&lt;br&gt;+#define JIT_R_NUM&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;3&lt;br&gt;+#define JIT_R(i)&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;(_EAX + (i))&lt;br&gt; #define JIT_V_NUM&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;3&lt;br&gt; #define JIT_V(i)&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;((i) == 0 ? _EBX : _ESI + (i) - 1)&lt;br&gt;&lt;br&gt;@@ -46,6 +49,9 @@ struct jit_local_state {&lt;br&gt; &amp;nbsp;&amp;nbsp;int&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;alloca_slack;&lt;br&gt; };&lt;br&gt;&lt;br&gt;+/* Whether a register is used for the user-accessible registers. &amp;nbsp;*/&lt;br&gt;+#define jit_save(reg)&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;1&lt;br&gt;+&lt;br&gt; #define jit_base_prolog() (_jitl.framesize = 20, _jitl.alloca_offset = 0, \&lt;br&gt; &amp;nbsp;&amp;nbsp;PUSHLr(_EBX), PUSHLr(_ESI), PUSHLr(_EDI), PUSHLr(_EBP), MOVLrr(_ESP, _EBP))&lt;br&gt; #define jit_base_ret(ofs)&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt; &amp;nbsp;\&lt;br&gt;diff --git a/lightning/i386/core-64.h b/lightning/i386/core-64.h&lt;br&gt;index 173a229..5da7535 100644&lt;br&gt;--- a/lightning/i386/core-64.h&lt;br&gt;+++ b/lightning/i386/core-64.h&lt;br&gt;@@ -38,6 +38,8 @@&lt;br&gt; #define JIT_CAN_16 0&lt;br&gt; #define JIT_REXTMP&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;_R9D&lt;br&gt;&lt;br&gt;+#define JIT_R_NUM&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;3&lt;br&gt;+#define JIT_R(i) &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;((i) == 0 ? _EAX : _R9D + (i))&lt;br&gt; #define JIT_V_NUM &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;3&lt;br&gt; #define JIT_V(i) &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;((i) == 0 ? _EBX : _R11D + (i))&lt;br&gt;&lt;br&gt;@@ -51,6 +53,9 @@ struct jit_local_state {&lt;br&gt; &amp;nbsp;&amp;nbsp;int &amp;nbsp;&amp;nbsp;alloca_slack;&lt;br&gt; };&lt;br&gt;&lt;br&gt;+/* Whether a register in the &quot;low&quot; bank is used for the user-accessible&lt;br&gt;+ &amp;nbsp;&amp;nbsp;registers. &amp;nbsp;*/&lt;br&gt;+#define jit_save(reg)&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;((reg) == _EAX || (reg) == _EBX)&lt;br&gt;&lt;br&gt; /* Keep the stack 16-byte aligned, the SSE hardware prefers it this way. &amp;nbsp;*/&lt;br&gt; #define jit_allocai_internal(amount, slack) &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;\&lt;br&gt;@@ -128,19 +133,13 @@ struct jit_local_state {&lt;br&gt; /* Stack isn't used for arguments: */&lt;br&gt; #define jit_prepare_i(ni)&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;(_jitl.argssize = (ni))&lt;br&gt;&lt;br&gt;-#define jit_pusharg_i(rs)&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;(--_jitl.argssize, MOVQrr(rs, jit_arg_reg_temp[_jitl.argssize]))&lt;br&gt;-#define jit_finish(sub) &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;(jit_shift_args(), \&lt;br&gt;-&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt; MOVQir((long) (sub), JIT_REXTMP), \&lt;br&gt;+#define jit_pusharg_i(rs)&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;(--_jitl.argssize, MOVQrr(rs, jit_arg_reg_order[_jitl.argssize]))&lt;br&gt;+#define jit_finish(sub) &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;(MOVQir((long) (sub), JIT_REXTMP), \&lt;br&gt; &lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt; CALLsr(JIT_REXTMP))&lt;br&gt; #define jit_reg_is_arg(reg) &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;((reg) == _ECX || (reg) == _EDX)&lt;br&gt; #define jit_finishr(reg)&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;((jit_reg_is_arg((reg)) ? MOVQrr(reg, JIT_REXTMP) : (void)0), \&lt;br&gt;- &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;jit_shift_args(), \&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;CALLsr(jit_reg_is_arg((reg)) ? JIT_REXTMP : (reg)))&lt;br&gt;&lt;br&gt;-#define jit_shift_args() \&lt;br&gt;- &amp;nbsp;&amp;nbsp;((_jitl.argssize &gt;= 3 ? (void) (MOVQrr(_R10D, _RDX)) : (void) 0), \&lt;br&gt;- &amp;nbsp;&amp;nbsp;&amp;nbsp;(_jitl.argssize &gt;= 4 ? (void) (MOVQrr(_R11D, _RCX)) : (void) 0))&lt;br&gt;-&lt;br&gt; #define jit_retval_l(rd)&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;((void)jit_movr_l ((rd), _EAX))&lt;br&gt; #define&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;jit_arg_c()&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;(jit_arg_reg_order[_jitl.nextarg_geti++])&lt;br&gt; #define&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;jit_arg_uc()&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;(jit_arg_reg_order[_jitl.nextarg_geti++])&lt;br&gt;@@ -152,7 +151,6 @@ struct jit_local_state {&lt;br&gt; #define&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;jit_arg_ul()&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;(jit_arg_reg_order[_jitl.nextarg_geti++])&lt;br&gt; #define&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;jit_arg_p()&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;(jit_arg_reg_order[_jitl.nextarg_geti++])&lt;br&gt;&lt;br&gt;-static int jit_arg_reg_temp[] = { _EDI, _ESI, _R10D, _R11D, _R8D, _R9D };&lt;br&gt; static int jit_arg_reg_order[] = { _EDI, _ESI, _EDX, _ECX, _R8D, _R9D };&lt;br&gt;&lt;br&gt; #define jit_negr_l(d, rs)&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;jit_opi_((d), (rs), NEGQr(d), (XORQrr((d), (d)), SUBQrr((rs), (d))) )&lt;br&gt;@@ -185,8 +183,8 @@ static int jit_arg_reg_order[] = { _EDI, _ESI, _EDX, _ECX, _R8D, _R9D };&lt;br&gt;&lt;br&gt; /* Used to implement ldc, stc, ... We have SIL and friends which simplify it all. &amp;nbsp;*/&lt;br&gt; #define jit_check8(rs) &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;1&lt;br&gt;-#define jit_reg8(rs) &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;(_rN(rs) | _AL )&lt;br&gt;-#define jit_reg16(rs) &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;(_rN(rs) | _AX )&lt;br&gt;+#define jit_reg8(rs) &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;(_rR(rs) | _AL )&lt;br&gt;+#define jit_reg16(rs) &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;(_rR(rs) | _AX )&lt;br&gt; #define jit_movbrm(rs, dd, db, di, ds) &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;MOVBrm(jit_reg8(rs), dd, db, di, ds)&lt;br&gt;&lt;br&gt; #define jit_ldi_c(d, is) &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;(_u32P((long)(is)) ? MOVSBLmr((is), 0, &amp;nbsp;&amp;nbsp;&amp;nbsp;0, &amp;nbsp;&amp;nbsp;&amp;nbsp;0, (d)) : &amp;nbsp;(jit_movi_l(JIT_REXTMP, is), jit_ldr_c(d, JIT_REXTMP)))&lt;br&gt;diff --git a/lightning/i386/core.h b/lightning/i386/core.h&lt;br&gt;index ad99d4d..64f8e80 100644&lt;br&gt;--- a/lightning/i386/core.h&lt;br&gt;+++ b/lightning/i386/core.h&lt;br&gt;@@ -38,9 +38,6 @@&lt;br&gt; #define JIT_SP&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;_ESP&lt;br&gt; #define JIT_RET&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;_EAX&lt;br&gt;&lt;br&gt;-#define JIT_R_NUM&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;3&lt;br&gt;-#define JIT_R(i)&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;(_EAX + (i))&lt;br&gt;-&lt;br&gt;&lt;br&gt; /* 3-parameter operation */&lt;br&gt; #define jit_opr_(d, s1, s2, op1d, op2d)&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;\&lt;br&gt;@@ -64,7 +61,11 @@&lt;br&gt; /* An operand is forced into a register */&lt;br&gt; #define jit_replace(rd, rs, forced, op)&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;\&lt;br&gt; &lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;((rd == forced) ? JITSORRY(&quot;Register conflict for &quot; # op) :&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;\&lt;br&gt;-&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt; (rs == forced) ? op : (jit_pushr_i(forced), MOVLrr(rs, forced), op, jit_popr_i(forced)))&lt;br&gt;+&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt; (rs == forced)&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;? op :&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;\&lt;br&gt;+&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt; jit_save (forced)&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;\&lt;br&gt;+&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt; &amp;nbsp;? (jit_pushr_i(forced), jit_movr_l(rs, forced), op,&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;\&lt;br&gt;+&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;jit_popr_i(forced))&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;\&lt;br&gt;+&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt; &amp;nbsp;: (jit_movr_l(rs, forced), op))&lt;br&gt;&lt;br&gt; /* For LT, LE, ... */&lt;br&gt; #define jit_replace8(d, cmp, op)&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;\&lt;br&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;br&gt;&lt;div&gt; &lt;span class=&quot;Apple-style-span&quot; style=&quot;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; &quot;&gt;&lt;div style=&quot;word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; &quot;&gt;&lt;div&gt;&lt;div&gt;--&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;Laurent&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;/div&gt;&lt;br&gt;&lt;/div&gt;&lt;/span&gt;&lt;br class=&quot;Apple-interchange-newline&quot;&gt; &lt;/div&gt;&lt;br&gt;&lt;/body&gt;&lt;/html&gt;&lt;br /&gt; &lt;br /&gt;_______________________________________________
&lt;br&gt;Lightning mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=17884371&amp;i=2&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Lightning@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://lists.gnu.org/mailman/listinfo/lightning&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://lists.gnu.org/mailman/listinfo/lightning&lt;/a&gt;&lt;br&gt;&lt;div class=&quot;small&quot;&gt;&lt;br/&gt;&lt;img src=&quot;http://old.nabble.com/images/icon_attachment.gif&quot; &gt; &lt;strong&gt;smime.p7s&lt;/strong&gt; (5K) &lt;a href=&quot;http://old.nabble.com/attachment/17884371/0/smime.p7s&quot; target=&quot;_top&quot;&gt;Download Attachment&lt;/a&gt;&lt;/div&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Re%3A-Still-problems.-tp17879713p17884371.html" />
</entry>

</feed>
