<feed xmlns='http://www.w3.org/2005/Atom'>
<title>bcm5719-llvm/llvm/test/CodeGen/AVR, branch meklort-10.0.1</title>
<subtitle>Project Ortega BCM5719 LLVM</subtitle>
<id>https://git.raptorcs.com/git/bcm5719-llvm/atom?h=meklort-10.0.1</id>
<link rel='self' href='https://git.raptorcs.com/git/bcm5719-llvm/atom?h=meklort-10.0.1'/>
<link rel='alternate' type='text/html' href='https://git.raptorcs.com/git/bcm5719-llvm/'/>
<updated>2019-12-23T03:41:28+00:00</updated>
<entry>
<title>[AVR] Fix codegen for rotate instructions</title>
<updated>2019-12-23T03:41:28+00:00</updated>
<author>
<name>Jim Lin</name>
<email>tclin914@gmail.com</email>
</author>
<published>2019-12-23T03:24:20+00:00</published>
<link rel='alternate' type='text/html' href='https://git.raptorcs.com/git/bcm5719-llvm/commit/?id=da0fe5db999baa659c2e386e5b0636dadfbbf759'/>
<id>urn:sha1:da0fe5db999baa659c2e386e5b0636dadfbbf759</id>
<content type='text'>
Summary:
    This patch introduces the ROLBRd and RORBRd pseudo-instructions,
    which implemenent the "traditional" rotate operations; instead of
    the AVR rotate instructions that use the carry bit.

    The code is not optimized at all. Especially when dealing with
    loops of rotate instructions, this codegen should be improved some
    day.

Related bug: 41358 &lt;https://bugs.llvm.org/show_bug.cgi?id=41358&gt;

//Note//: This is my first submitted patch.

Reviewers: dylanmckay, Jim

Reviewed By: dylanmckay

Subscribers: hiraditya, llvm-commits, dylanmckay, dsprenkels

Tags: #llvm

Patched by dsprenkels (Daan Sprenkels)

Differential Revision: https://reviews.llvm.org/D60365
</content>
</entry>
<entry>
<title>[AVR] Fix tests after r363757</title>
<updated>2019-07-04T06:12:47+00:00</updated>
<author>
<name>Dylan McKay</name>
<email>me@dylanmckay.io</email>
</author>
<published>2019-07-04T06:12:47+00:00</published>
<link rel='alternate' type='text/html' href='https://git.raptorcs.com/git/bcm5719-llvm/commit/?id=80728d1d75908840225149457c1ba8fb1d74e656'/>
<id>urn:sha1:80728d1d75908840225149457c1ba8fb1d74e656</id>
<content type='text'>
r363757 renamed ExpandISelPseudo to FinalizeISel, so the RUN line in
select-must-add-unconditional-jump.mir needed updating to refer to finalize-isel.

llvm-svn: 365108
</content>
</entry>
<entry>
<title>[lit] Delete empty lines at the end of lit.local.cfg NFC</title>
<updated>2019-06-17T09:51:07+00:00</updated>
<author>
<name>Fangrui Song</name>
<email>maskray@google.com</email>
</author>
<published>2019-06-17T09:51:07+00:00</published>
<link rel='alternate' type='text/html' href='https://git.raptorcs.com/git/bcm5719-llvm/commit/?id=ac14f7b10cffe2be548607269e036244cd16acc3'/>
<id>urn:sha1:ac14f7b10cffe2be548607269e036244cd16acc3</id>
<content type='text'>
llvm-svn: 363538
</content>
</entry>
<entry>
<title>[AVR] Fix the 'avr-tiny.ll' and 'avr25.ll' subtarget feature tests</title>
<updated>2019-06-12T08:31:07+00:00</updated>
<author>
<name>Dylan McKay</name>
<email>me@dylanmckay.io</email>
</author>
<published>2019-06-12T08:31:07+00:00</published>
<link rel='alternate' type='text/html' href='https://git.raptorcs.com/git/bcm5719-llvm/commit/?id=f8b4e60c7f514d70e9b603673fbc351c5df141e1'/>
<id>urn:sha1:f8b4e60c7f514d70e9b603673fbc351c5df141e1</id>
<content type='text'>
When these tests were originally written, the middle end would introduce
an unnecessary copy from r24:r23-&gt;GPR16-&gt;r24:r23, and these tests
mistakenly relied on it.

The most optimal codegen for the functions in the test cases before this patch
would be NOPs. This is because the first i16 argument always gets the same register
allocation as an i16 return value in the AVR calling convention.

These tests broke in r362963 when the codegen was improved and the
redundant copy was eliminated. After this, the test functions
were lowered to their optimal form - a 'ret' and nothing else.

This patch prepends an extra i16 operand to each of the test functions
so that a 16-bit copy must be inserted for the program to be correct.

llvm-svn: 363131
</content>
</entry>
<entry>
<title>[AVR] Fix the 'load.ll' test after r362351</title>
<updated>2019-06-06T08:06:50+00:00</updated>
<author>
<name>Dylan McKay</name>
<email>me@dylanmckay.io</email>
</author>
<published>2019-06-06T08:06:50+00:00</published>
<link rel='alternate' type='text/html' href='https://git.raptorcs.com/git/bcm5719-llvm/commit/?id=3c82c57d2b50c6d7ac69e4d69c8914a02eeda0b7'/>
<id>urn:sha1:3c82c57d2b50c6d7ac69e4d69c8914a02eeda0b7</id>
<content type='text'>
In that commit, the 'load.ll' test was modified, but still failed.

This commit updates the test so that it now passes.

llvm-svn: 362684
</content>
</entry>
<entry>
<title>[AVR] Fix incorrect source regclass of LDWRdPtr</title>
<updated>2019-06-03T02:31:07+00:00</updated>
<author>
<name>Jim Lin</name>
<email>tclin914@gmail.com</email>
</author>
<published>2019-06-03T02:31:07+00:00</published>
<link rel='alternate' type='text/html' href='https://git.raptorcs.com/git/bcm5719-llvm/commit/?id=20b14dacbbbf9fedc90c732b6dde9361b7b2283c'/>
<id>urn:sha1:20b14dacbbbf9fedc90c732b6dde9361b7b2283c</id>
<content type='text'>
Summary:
LDWRdPtr would be expanded to ld+ldd. ldd only accepts the pointer register is Y or Z.
So the register class of pointer of LDWRdPtr should be PTRDISPREGS instead of PTRREGS.

Reviewers: dylanmckay

Reviewed By: dylanmckay

Subscribers: dylanmckay, llvm-commits

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D62300

llvm-svn: 362351
</content>
</entry>
<entry>
<title>[AVR] Disable register coalescing to the PTRDISPREGS class</title>
<updated>2019-06-01T12:38:56+00:00</updated>
<author>
<name>Dylan McKay</name>
<email>me@dylanmckay.io</email>
</author>
<published>2019-06-01T12:38:56+00:00</published>
<link rel='alternate' type='text/html' href='https://git.raptorcs.com/git/bcm5719-llvm/commit/?id=45eb4c7e55341c0b83a21dedecc092e273795eda'/>
<id>urn:sha1:45eb4c7e55341c0b83a21dedecc092e273795eda</id>
<content type='text'>
If we would allow register coalescing on PTRDISPREGS class then register
allocator can lock Z register to some virtual register. Larger instructions
requiring a memory acces then fail during the register allocation phase since
there is no available register to hold a pointer if Y register was already
taken for a stack frame. This patch prevents it by keeping Z register
spillable. It does it by not allowing coalescer to lock it.

Original discussion on https://github.com/avr-rust/rust/issues/128.

llvm-svn: 362298
</content>
</entry>
<entry>
<title>Add TargetLoweringInfo hook for explicitly setting the ABI calling convention endianess</title>
<updated>2019-05-21T06:38:02+00:00</updated>
<author>
<name>Dylan McKay</name>
<email>me@dylanmckay.io</email>
</author>
<published>2019-05-21T06:38:02+00:00</published>
<link rel='alternate' type='text/html' href='https://git.raptorcs.com/git/bcm5719-llvm/commit/?id=e967308da43213c9c61696d77897f1d5dbc9eb94'/>
<id>urn:sha1:e967308da43213c9c61696d77897f1d5dbc9eb94</id>
<content type='text'>
Summary:
The endianess used in the calling convention does not always match the
endianess of the target on all architectures, namely AVR.

When an argument is too large to be legalised by the architecture and is
split for the ABI, a new hook TargetLoweringInfo::shouldSplitFunctionArgumentsAsLittleEndian
is queried to find the endianess that function arguments must be laid
out in.

This approach was recommended by Eli Friedman.

Originally reported in https://github.com/avr-rust/rust/issues/129.

Patch by Carl Peto.

Reviewers: bogner, t.p.northover, RKSimon, niravd, efriedma

Reviewed By: efriedma

Subscribers: JDevlieghere, llvm-commits

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D62003

llvm-svn: 361222
</content>
</entry>
<entry>
<title>[DAGCombiner] If a TokenFactor would be merged into its user, consider the user later.</title>
<updated>2019-03-13T17:07:09+00:00</updated>
<author>
<name>Nirav Dave</name>
<email>niravd@google.com</email>
</author>
<published>2019-03-13T17:07:09+00:00</published>
<link rel='alternate' type='text/html' href='https://git.raptorcs.com/git/bcm5719-llvm/commit/?id=d6351340bb9bf7703fb79629efdba5886d434694'/>
<id>urn:sha1:d6351340bb9bf7703fb79629efdba5886d434694</id>
<content type='text'>
Summary:
A number of optimizations are inhibited by single-use TokenFactors not
being merged into the TokenFactor using it. This makes we consider if
we can do the merge immediately.

Most tests changes here are due to the change in visitation causing
minor reorderings and associated reassociation of paired memory
operations.

CodeGen tests with non-reordering changes:

  X86/aligned-variadic.ll -- memory-based add folded into stored leaq
  value.

  X86/constant-combiners.ll -- Optimizes out overlap between stores.

  X86/pr40631_deadstore_elision -- folds constant byte store into
  preceding quad word constant store.

Reviewers: RKSimon, craig.topper, spatel, efriedma, courbet

Reviewed By: courbet

Subscribers: dylanmckay, sdardis, nemanjai, jvesely, nhaehnle, javed.absar, eraman, hiraditya, kbarton, jrtc27, atanasyan, jsji, llvm-commits

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D59260

llvm-svn: 356068
</content>
</entry>
<entry>
<title>[AVR] Insert unconditional branch when inserting MBBs between blocks with fallthrough</title>
<updated>2019-01-21T04:32:02+00:00</updated>
<author>
<name>Dylan McKay</name>
<email>me@dylanmckay.io</email>
</author>
<published>2019-01-21T04:32:02+00:00</published>
<link rel='alternate' type='text/html' href='https://git.raptorcs.com/git/bcm5719-llvm/commit/?id=5c23410fdfae1b9bd63f71703513b74f392ee4d1'/>
<id>urn:sha1:5c23410fdfae1b9bd63f71703513b74f392ee4d1</id>
<content type='text'>
This updates the AVR Select8/Select16 expansion code so that, when
inserting the two basic blocks for true and false conditions, any
existing fallthrough on the previous block is preserved.

Prior to this patch, if the block before the Select pseudo fell through
to the subsequent block, two new basic blocks would be inserted at the
prior fallthrough point, changing the fallthrough destination.

The predecessor or successor lists were not updated, causing the
BranchFolding pass at -O1 and above the rearrange basic blocks, causing
an infinite loop. Not to mention the unconditional fallthrough to the
true block is incorrect in of itself.

This patch modifies the Select8/16 expansion so that, if inserting true
and false basic blocks at a fallthrough point, the implicit branch is
preserved by means of an explicit, unconditional branch to the previous
fallthrough destination.

Thanks to Carl Peto for reporting this bug.

This fixes avr-rust bug https://github.com/avr-rust/rust/issues/123.

llvm-svn: 351721
</content>
</entry>
</feed>
