10 Commits

Author SHA1 Message Date
Petar Jovanovic
46304bd3ad [MIPS GlobalISel] Lower i64 arguments
Lower integer arguments larger then 32 bits for MIPS32.
setMostSignificantFirst is used in order for G_UNMERGE_VALUES and
G_MERGE_VALUES to always hold registers in same order, regardless of
endianness.

Patch by Petar Avramovic.

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



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@343315 91177308-0d34-0410-b5e6-96231b3b80d8
2018-09-28 13:28:47 +00:00
Petar Jovanovic
81dfd7dbac [MIPS GlobalISel] Lower i8 and i16 arguments
Lower integer arguments smaller than i32.
Support both register and stack arguments.
Define setLocInfo function for setting LocInfo field in ArgLocs vector.

Patch by Petar Avramovic.

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


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@340572 91177308-0d34-0410-b5e6-96231b3b80d8
2018-08-23 20:41:09 +00:00
Alexander Ivchenko
8c575a1c2e [GlobalISel] Rewrite CallLowering::lowerReturn to accept multiple VRegs per Value
This is logical continuation of https://reviews.llvm.org/D46018 (r332449)

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



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@338685 91177308-0d34-0410-b5e6-96231b3b80d8
2018-08-02 08:33:31 +00:00
Matt Arsenault
f02d879e99 DAG: Add calling convention argument to calling convention funcs
This seems like a pretty glaring omission, and AMDGPU
wants to treat kernels differently from other calling
conventions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@338194 91177308-0d34-0410-b5e6-96231b3b80d8
2018-07-28 13:25:19 +00:00
Petar Jovanovic
3de71f627e [MIPS GlobalISel] Lower pointer arguments
Add support for lowering pointer arguments.
Changing type from pointer to integer is already done in
MipsTargetLowering::getRegisterTypeForCallingConv.

Patch by Petar Avramovic.

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


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@337912 91177308-0d34-0410-b5e6-96231b3b80d8
2018-07-25 12:35:01 +00:00
Petar Jovanovic
c95c8c872b [MIPS GlobalISel] Lower arguments using stack
Lower more than 4 arguments using stack. This patch targets MIPS32.
It supports only functions with arguments of type i32.

Patch by Petar Avramovic.

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


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@336185 91177308-0d34-0410-b5e6-96231b3b80d8
2018-07-03 09:31:48 +00:00
Petar Jovanovic
e2b017e8ff [MIPS GlobalISel] Add lowerCall
Add minimal support to lower function calls.
Support only functions with arguments/return that go through registers
and have type i32.

Patch by Petar Avramovic.

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


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@334071 91177308-0d34-0410-b5e6-96231b3b80d8
2018-06-06 07:24:52 +00:00
Petar Jovanovic
91e3c3b9cc [MIPS GlobalISel] remove superfluous #includes (NFC)
Remove superfluous #includes.
Minor code style change in MipsCallLowering::lowerFormalArguments().


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@329926 91177308-0d34-0410-b5e6-96231b3b80d8
2018-04-12 17:01:46 +00:00
Petar Jovanovic
92ffece499 [MIPS GlobalISel] Select add i32, i32
Add the minimal support necessary to lower a function that returns the
sum of two i32 values.
Support argument/return lowering of i32 values through registers only.
Add tablegen for regbankselect and instructionselect.

Patch by Petar Avramovic.

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


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@329819 91177308-0d34-0410-b5e6-96231b3b80d8
2018-04-11 15:12:32 +00:00
Petar Jovanovic
581db4c3f6 [MIPS GlobalISel] Adding GlobalISel
Add GlobalISel infrastructure up to the point where we can select a ret
void.

Patch by Petar Avramovic.

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


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@325888 91177308-0d34-0410-b5e6-96231b3b80d8
2018-02-23 11:06:40 +00:00