<feed xmlns='http://www.w3.org/2005/Atom'>
<title>otp.git/lib/hipe/amd64, branch maint</title>
<subtitle>Mirror of Erlang/OTP repository.
</subtitle>
<link rel='alternate' type='text/html' href='http://git.ninenines.eu/otp.git/'/>
<entry>
<title>Update copyright year</title>
<updated>2017-05-04T13:42:21+00:00</updated>
<author>
<name>Raimo Niskanen</name>
<email>raimo@erlang.org</email>
</author>
<published>2017-05-04T13:42:21+00:00</published>
<link rel='alternate' type='text/html' href='http://git.ninenines.eu/otp.git/commit/?id=83e20c62057ebc1d8064bf57b01be560cd244e1d'/>
<id>83e20c62057ebc1d8064bf57b01be560cd244e1d</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>hipe: Add pseudo_spill_f?move instructions</title>
<updated>2017-03-16T19:49:42+00:00</updated>
<author>
<name>Magnus Lång</name>
<email>margnus1@telia.com</email>
</author>
<published>2017-03-16T14:30:00+00:00</published>
<link rel='alternate' type='text/html' href='http://git.ninenines.eu/otp.git/commit/?id=c52b2cf226cb3f1bb1b16bee28d47785506adff3'/>
<id>c52b2cf226cb3f1bb1b16bee28d47785506adff3</id>
<content type='text'>
These pseudo instructions are added to all backends and allow spill slot
to spill slot move coalescing in a clean way.

They have regular move semantics, but contain an additional scratch
register to be used if both source and destination are spilled, and can
not be move coalesced.

Additionally, a register allocator callback
Target:is_spill_move(Instr, Context) is added which allows the spill
slot allocators to check for these instructions and try to coalesce the
spill slots the two temporaries are allocated to.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
These pseudo instructions are added to all backends and allow spill slot
to spill slot move coalescing in a clean way.

They have regular move semantics, but contain an additional scratch
register to be used if both source and destination are spilled, and can
not be move coalesced.

Additionally, a register allocator callback
Target:is_spill_move(Instr, Context) is added which allows the spill
slot allocators to check for these instructions and try to coalesce the
spill slots the two temporaries are allocated to.
</pre>
</div>
</content>
</entry>
<entry>
<title>hipe_amd64: Add missing makefile dependency</title>
<updated>2017-03-06T17:18:24+00:00</updated>
<author>
<name>Magnus Lång</name>
<email>margnus1@telia.com</email>
</author>
<published>2017-02-20T13:32:54+00:00</published>
<link rel='alternate' type='text/html' href='http://git.ninenines.eu/otp.git/commit/?id=16500d689aab70017d6e6c532aef69c94b1b132a'/>
<id>16500d689aab70017d6e6c532aef69c94b1b132a</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>hipe_amd64_encode: Add test for 16-bit 'test' with REX</title>
<updated>2017-03-06T17:18:23+00:00</updated>
<author>
<name>Magnus Lång</name>
<email>margnus1@telia.com</email>
</author>
<published>2017-02-20T13:50:26+00:00</published>
<link rel='alternate' type='text/html' href='http://git.ninenines.eu/otp.git/commit/?id=7fde7799f735d2dd032b6a3157ec80b9a15cf940'/>
<id>7fde7799f735d2dd032b6a3157ec80b9a15cf940</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>hipe_amd64_registers: Cleanup exit/1 calls</title>
<updated>2017-03-06T17:18:23+00:00</updated>
<author>
<name>Magnus Lång</name>
<email>margnus1@telia.com</email>
</author>
<published>2017-02-20T13:49:44+00:00</published>
<link rel='alternate' type='text/html' href='http://git.ninenines.eu/otp.git/commit/?id=1acdb8912735e78ced00a5c995a33fd4ea5eef91'/>
<id>1acdb8912735e78ced00a5c995a33fd4ea5eef91</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Correct copyright on remaining hipe files</title>
<updated>2016-11-23T15:36:23+00:00</updated>
<author>
<name>Richard Carlsson</name>
<email>richardc@klarna.com</email>
</author>
<published>2015-07-08T19:39:51+00:00</published>
<link rel='alternate' type='text/html' href='http://git.ninenines.eu/otp.git/commit/?id=8b02979590d5a7b5f5ce8b4a0410abbf822ccf6d'/>
<id>8b02979590d5a7b5f5ce8b4a0410abbf822ccf6d</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>hipe_x86: Fix encoding of test instr w/ neg imm</title>
<updated>2016-11-16T18:48:24+00:00</updated>
<author>
<name>Magnus Lång</name>
<email>margnus1@telia.com</email>
</author>
<published>2016-11-16T17:29:16+00:00</published>
<link rel='alternate' type='text/html' href='http://git.ninenines.eu/otp.git/commit/?id=fda3c9575d77bed0250f76f17e92d18836e15d0c'/>
<id>fda3c9575d77bed0250f76f17e92d18836e15d0c</id>
<content type='text'>
Also, use byte form for immediates up to 255, since there's no sign
extension in byte form.

HiPE seems to never generate negative test immediates currently, but we
should at least not output incorrect encodings.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Also, use byte form for immediates up to 255, since there's no sign
extension in byte form.

HiPE seems to never generate negative test immediates currently, but we
should at least not output incorrect encodings.
</pre>
</div>
</content>
</entry>
<entry>
<title>hipe_{x86,amd64}: Finish test instr implementation</title>
<updated>2016-11-15T13:58:59+00:00</updated>
<author>
<name>Magnus Lång</name>
<email>margnus1@telia.com</email>
</author>
<published>2016-11-09T17:49:06+00:00</published>
<link rel='alternate' type='text/html' href='http://git.ninenines.eu/otp.git/commit/?id=3579a706ea0c0081d7dd01291990cd8d3669f195'/>
<id>3579a706ea0c0081d7dd01291990cd8d3669f195</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>hipe: Refactor ra callbacks to accept context arg</title>
<updated>2016-09-05T17:17:50+00:00</updated>
<author>
<name>Magnus Lång</name>
<email>margnus1@telia.com</email>
</author>
<published>2016-09-05T12:55:01+00:00</published>
<link rel='alternate' type='text/html' href='http://git.ninenines.eu/otp.git/commit/?id=ea710644b198f7800f0daf2de0d152cf8e3e9bb3'/>
<id>ea710644b198f7800f0daf2de0d152cf8e3e9bb3</id>
<content type='text'>
This allows us to pass around the context data that
hipe_regalloc_prepass needs cleanly, without using process dictionary or
parameterised modules (like it was previous to this change).
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This allows us to pass around the context data that
hipe_regalloc_prepass needs cleanly, without using process dictionary or
parameterised modules (like it was previous to this change).
</pre>
</div>
</content>
</entry>
<entry>
<title>hipe_x86: Add code rewrite RA callbacks</title>
<updated>2016-09-02T13:59:17+00:00</updated>
<author>
<name>Magnus Lång</name>
<email>margnus1@telia.com</email>
</author>
<published>2016-06-20T16:26:39+00:00</published>
<link rel='alternate' type='text/html' href='http://git.ninenines.eu/otp.git/commit/?id=38c10d20f7b0a83f4d94a92d30ca649b86b0a7cb'/>
<id>38c10d20f7b0a83f4d94a92d30ca649b86b0a7cb</id>
<content type='text'>
These will not only be useful for hipe_regalloc_prepass, but also, after
the introduction of a mk_move/2 (or similar) callback, for the purpose
of range splitting.

Since the substitution needed to case over all the instructions, a new
module, hipe_x86_subst, was introduced to the x86 backend.

Due to differences in the 'jtab' field of a #jmp_switch{} between x86
and amd64, it regrettably needed to be duplicated to hipe_amd64_subst.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
These will not only be useful for hipe_regalloc_prepass, but also, after
the introduction of a mk_move/2 (or similar) callback, for the purpose
of range splitting.

Since the substitution needed to case over all the instructions, a new
module, hipe_x86_subst, was introduced to the x86 backend.

Due to differences in the 'jtab' field of a #jmp_switch{} between x86
and amd64, it regrettably needed to be duplicated to hipe_amd64_subst.
</pre>
</div>
</content>
</entry>
</feed>
