<feed xmlns='http://www.w3.org/2005/Atom'>
<title>qbe.git, branch master</title>
<subtitle>Compiler Backend
</subtitle>
<link rel='alternate' type='text/html' href='https://c9x.me/git/qbe.git/'/>
<entry>
<title>fix various codegen bugs on arm64</title>
<updated>2024-10-01T17:42:50+00:00</updated>
<author>
<name>Quentin Carbonneaux</name>
</author>
<published>2024-10-01T17:38:15+00:00</published>
<link rel='alternate' type='text/html' href='https://c9x.me/git/qbe.git/commit/?id=90050202f57b22243f5d3dd434a81df2f89de9ed'/>
<id>90050202f57b22243f5d3dd434a81df2f89de9ed</id>
<content type='text'>
- dynamic allocations could generate
  bad 'and' instructions (for the
  and with -16 in salloc()).
- symbols used in w context would
  generate adrp and add instructions
  on wN registers while they seem to
  only work on xN registers.

Thanks to Rosie for reporting them.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
- dynamic allocations could generate
  bad 'and' instructions (for the
  and with -16 in salloc()).
- symbols used in w context would
  generate adrp and add instructions
  on wN registers while they seem to
  only work on xN registers.

Thanks to Rosie for reporting them.
</pre>
</div>
</content>
</entry>
<entry>
<title>skip preludes for some leaf fns</title>
<updated>2024-08-23T16:31:53+00:00</updated>
<author>
<name>Quentin Carbonneaux</name>
</author>
<published>2024-08-20T13:20:42+00:00</published>
<link rel='alternate' type='text/html' href='https://c9x.me/git/qbe.git/commit/?id=626f0b278137ff6f8b7d910d9b3fc3cbdfbb39fc'/>
<id>626f0b278137ff6f8b7d910d9b3fc3cbdfbb39fc</id>
<content type='text'>
When rbp is not necessary to compile
a leaf function, we skip saving and
restoring it.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
When rbp is not necessary to compile
a leaf function, we skip saving and
restoring it.
</pre>
</div>
</content>
</entry>
<entry>
<title>arm64/isel: Avoid signed overflow when handling immediates</title>
<updated>2024-08-15T21:21:05+00:00</updated>
<author>
<name>Alexey Yerin</name>
</author>
<published>2024-08-02T11:39:07+00:00</published>
<link rel='alternate' type='text/html' href='https://c9x.me/git/qbe.git/commit/?id=bb8de8c63362b7234db02482240d5600203225d9'/>
<id>bb8de8c63362b7234db02482240d5600203225d9</id>
<content type='text'>
Clang incorrectly optimizes this negation with -O2 and causes QBE to
emit 0 in place of INT64_MIN.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Clang incorrectly optimizes this negation with -O2 and causes QBE to
emit 0 in place of INT64_MIN.
</pre>
</div>
</content>
</entry>
<entry>
<title>align emitted code</title>
<updated>2024-08-15T21:11:41+00:00</updated>
<author>
<name>Quentin Carbonneaux</name>
</author>
<published>2024-08-15T21:11:20+00:00</published>
<link rel='alternate' type='text/html' href='https://c9x.me/git/qbe.git/commit/?id=efcb5465e597571820391bee450dd1e8def300b4'/>
<id>efcb5465e597571820391bee450dd1e8def300b4</id>
<content type='text'>
Functions are now aligned on 16-byte
boundaries. This mimics gcc and should
help reduce the maximum perf impact of
cosmetic code changes. Previously, any
change in the output of qbe could have
far reaching implications on alignment.

Thanks to Roland Paterson-Jones for
pointing out the variability issue.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Functions are now aligned on 16-byte
boundaries. This mimics gcc and should
help reduce the maximum perf impact of
cosmetic code changes. Previously, any
change in the output of qbe could have
far reaching implications on alignment.

Thanks to Roland Paterson-Jones for
pointing out the variability issue.
</pre>
</div>
</content>
</entry>
<entry>
<title>drop imul rewriting</title>
<updated>2024-06-19T10:39:26+00:00</updated>
<author>
<name>Quentin Carbonneaux</name>
</author>
<published>2024-06-19T10:39:21+00:00</published>
<link rel='alternate' type='text/html' href='https://c9x.me/git/qbe.git/commit/?id=e8fa27bcdb2872588e39b398f7857157fb249628'/>
<id>e8fa27bcdb2872588e39b398f7857157fb249628</id>
<content type='text'>
This was cute to do, but it is
largely inconsequential, as shown
by the rough timings below:

    benchmarking mul8_lea
      3.9 ticks ± 0.88 (min: 3)
    benchmarking mul8_imul
      3.3 ticks ± 0.27 (min: 3)
    benchmarking div8_udiv
      6.5 ticks ± 0.52 (min: 6)
    benchmarking div8_shr
      3.3 ticks ± 0.34 (min: 3)
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This was cute to do, but it is
largely inconsequential, as shown
by the rough timings below:

    benchmarking mul8_lea
      3.9 ticks ± 0.88 (min: 3)
    benchmarking mul8_imul
      3.3 ticks ± 0.27 (min: 3)
    benchmarking div8_udiv
      6.5 ticks ± 0.52 (min: 6)
    benchmarking div8_shr
      3.3 ticks ± 0.34 (min: 3)
</pre>
</div>
</content>
</entry>
<entry>
<title>no mul-&gt;shl as it confuses address matching</title>
<updated>2024-06-19T08:58:17+00:00</updated>
<author>
<name>Quentin Carbonneaux</name>
</author>
<published>2024-06-19T08:50:54+00:00</published>
<link rel='alternate' type='text/html' href='https://c9x.me/git/qbe.git/commit/?id=7de34d3454e0a6a4e66b414f03441723d340dec5'/>
<id>7de34d3454e0a6a4e66b414f03441723d340dec5</id>
<content type='text'>
Additionally, the strength-reduction
for small powers of two is handled
by amd64/emit.c now.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Additionally, the strength-reduction
for small powers of two is handled
by amd64/emit.c now.
</pre>
</div>
</content>
</entry>
<entry>
<title>cheaper mul by small constants on amd64</title>
<updated>2024-06-18T15:06:56+00:00</updated>
<author>
<name>Quentin Carbonneaux</name>
</author>
<published>2024-06-18T15:00:30+00:00</published>
<link rel='alternate' type='text/html' href='https://c9x.me/git/qbe.git/commit/?id=6dab93b4b236a884d56c907d741148baa15dbbc5'/>
<id>6dab93b4b236a884d56c907d741148baa15dbbc5</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>simplify 8*x as well as x*8</title>
<updated>2024-06-18T14:59:42+00:00</updated>
<author>
<name>Quentin Carbonneaux</name>
</author>
<published>2024-06-18T14:59:42+00:00</published>
<link rel='alternate' type='text/html' href='https://c9x.me/git/qbe.git/commit/?id=96f18be71d34b63ceca3e4fa5480eb9ca9afcf4e'/>
<id>96f18be71d34b63ceca3e4fa5480eb9ca9afcf4e</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>prevent bogus simplifications</title>
<updated>2024-06-17T11:24:22+00:00</updated>
<author>
<name>Quentin Carbonneaux</name>
</author>
<published>2024-06-17T11:18:05+00:00</published>
<link rel='alternate' type='text/html' href='https://c9x.me/git/qbe.git/commit/?id=0631bc4fecf9a9f96c8a520ac56371a0a86318b9'/>
<id>0631bc4fecf9a9f96c8a520ac56371a0a86318b9</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>qbe has its own magic</title>
<updated>2024-06-17T11:17:39+00:00</updated>
<author>
<name>Quentin Carbonneaux</name>
</author>
<published>2024-06-17T11:17:39+00:00</published>
<link rel='alternate' type='text/html' href='https://c9x.me/git/qbe.git/commit/?id=e7ebdc8fb66e04717b15af4cf6719ae23b03aad1'/>
<id>e7ebdc8fb66e04717b15af4cf6719ae23b03aad1</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
</feed>
