OSDN Git Service

[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)
commite5bb56cb3cbdbef69082144b7b6e760287a69532
treeac30bf667483dca59cdc7691b1540b7118113e73
parentb182ab7d784ff9f8da60cc0c1329633043c0485e
[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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@358032 91177308-0d34-0410-b5e6-96231b3b80d8
include/llvm/CodeGen/GlobalISel/CallLowering.h
lib/CodeGen/GlobalISel/CallLowering.cpp
lib/Target/AArch64/AArch64CallLowering.cpp
lib/Target/ARM/ARMCallLowering.cpp
lib/Target/X86/X86CallLowering.cpp
test/CodeGen/AArch64/GlobalISel/ret-vec-promote.ll [new file with mode: 0644]
test/CodeGen/AArch64/GlobalISel/vec-s16-param.ll [new file with mode: 0644]
test/CodeGen/ARM/GlobalISel/arm-unsupported.ll