[GlobalISel][AArch64] Allow CallLowering to handle types which are normally
authorAmara Emerson <aemerson@apple.com>
Tue, 9 Apr 2019 21:22:33 +0000 (21:22 +0000)
committerAmara Emerson <aemerson@apple.com>
Tue, 9 Apr 2019 21:22:33 +0000 (21:22 +0000)
commit2b523f81625b455fd3c0676156f109fa5f83c023
treea9d174b32721f6d1342d9dea3466f671563f9af1
parentc176b708e45eda157720e1d55d1abbedc7a0eb8b
[GlobalISel][AArch64] Allow CallLowering to handle types which are normally
required to be passed as different register types. E.g. <2 x i16> may need to
be passed as a larger <2 x i32> type, so formal arg lowering needs to be able
truncate it back. Likewise, when dealing with returns of these types, they need
to be widened in the appropriate way back.

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

llvm-svn: 358032
llvm/include/llvm/CodeGen/GlobalISel/CallLowering.h
llvm/lib/CodeGen/GlobalISel/CallLowering.cpp
llvm/lib/Target/AArch64/AArch64CallLowering.cpp
llvm/lib/Target/ARM/ARMCallLowering.cpp
llvm/lib/Target/X86/X86CallLowering.cpp
llvm/test/CodeGen/AArch64/GlobalISel/ret-vec-promote.ll [new file with mode: 0644]
llvm/test/CodeGen/AArch64/GlobalISel/vec-s16-param.ll [new file with mode: 0644]
llvm/test/CodeGen/ARM/GlobalISel/arm-unsupported.ll