10 Commits

Author SHA1 Message Date
Dylan McKay
ae27a7ca66 [AVR] Implement TargetLoweing::getRegisterByName
This allows the use of the 'read_register' intrinsics used by clang's
named register globals features.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@291375 91177308-0d34-0410-b5e6-96231b3b80d8
2017-01-07 23:39:47 +00:00
Dylan McKay
056a448d96 [AVR] Use references rather than pointers in AVRISelLowering
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@283636 91177308-0d34-0410-b5e6-96231b3b80d8
2016-10-08 01:06:21 +00:00
Dylan McKay
942ffca25d Allow a maximum of 64 bits to be returned in registers
The rest spills to the stack

Authored by Jake Goulding

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@283635 91177308-0d34-0410-b5e6-96231b3b80d8
2016-10-08 01:05:09 +00:00
Dylan McKay
2884d8d5ee [AVR] Expand MULHS for all types
Once MULHS was expanded, this exposed an issue where the condition
register was thought to be 16-bit. This caused an attempt to copy a
16-bit register to an 8-bit register.

Authored by Jake Goulding

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@283634 91177308-0d34-0410-b5e6-96231b3b80d8
2016-10-08 01:01:49 +00:00
Dylan McKay
22a65ba593 Revert "[AVR] Add instruction selection lowering code"
I accidentally comitted it.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@282712 91177308-0d34-0410-b5e6-96231b3b80d8
2016-09-29 12:49:18 +00:00
Dylan McKay
da4f4c9f4f [AVR] Add instruction selection lowering code
Summary: This adds AVRISelLowering.cpp

Reviewers: kparzysz, arsenm

Subscribers: wdng, beanz, mgorny

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@282711 91177308-0d34-0410-b5e6-96231b3b80d8
2016-09-29 12:44:38 +00:00
Duncan P. N. Exon Smith
a204da23db CodeGen: Use MachineInstr& in TargetLowering, NFC
This is a mechanical change to make TargetLowering API take MachineInstr&
(instead of MachineInstr*), since the argument is expected to be a valid
MachineInstr.  In one case, changed a parameter from MachineInstr* to
MachineBasicBlock::iterator, since it was used as an insertion point.

As a side effect, this removes a bunch of MachineInstr* to
MachineBasicBlock::iterator implicit conversions, a necessary step
toward fixing PR26753.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@274287 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-30 22:52:52 +00:00
Benjamin Kramer
af18e017d2 Pass DebugLoc and SDLoc by const ref.
This used to be free, copying and moving DebugLocs became expensive
after the metadata rewrite. Passing by reference eliminates a ton of
track/untrack operations. No functionality change intended.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@272512 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-12 15:39:02 +00:00
Dylan McKay
f313ca4a81 [AVR] Remove the 'AVRConfig.h' header
It defined the LLVM_AVR_GCC_COMPAT constant, which would enable/disable
certain GCC-specific behaviours.

There is no point conditionally turning it on/off, as it will always be
turned on, and we have to maintain both code paths anyway.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@269904 91177308-0d34-0410-b5e6-96231b3b80d8
2016-05-18 11:20:48 +00:00
Dylan McKay
31372e2522 [AVR] Add a majority of the backend code
Summary: This adds the majority of the AVR backend.

Reviewers: hfinkel, dsanders, vkalintiris, arsenm

Subscribers: dylanmckay

Differential Revision: http://reviews.llvm.org/D17906

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@268722 91177308-0d34-0410-b5e6-96231b3b80d8
2016-05-06 10:12:31 +00:00