diff options
| author | Tim Northover <tnorthover@apple.com> | 2014-12-08 17:54:58 +0000 |
|---|---|---|
| committer | Tim Northover <tnorthover@apple.com> | 2014-12-08 17:54:58 +0000 |
| commit | 67be569a31a5808e898d2f8aaaaaa1b460b6efa4 (patch) | |
| tree | de7fa3b70d5d403ea4b25610024a99b956d7b101 /llvm/lib/Target | |
| parent | d80836ed0969b3b9490a76cd6331691374ec9042 (diff) | |
| download | bcm5719-llvm-67be569a31a5808e898d2f8aaaaaa1b460b6efa4.tar.gz bcm5719-llvm-67be569a31a5808e898d2f8aaaaaa1b460b6efa4.zip | |
AArch64: treat HFAs containing "half" types as blocks too.
llvm-svn: 223669
Diffstat (limited to 'llvm/lib/Target')
| -rw-r--r-- | llvm/lib/Target/AArch64/AArch64CallingConvention.h | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/llvm/lib/Target/AArch64/AArch64CallingConvention.h b/llvm/lib/Target/AArch64/AArch64CallingConvention.h index 8c798b71bec..baf80bc5483 100644 --- a/llvm/lib/Target/AArch64/AArch64CallingConvention.h +++ b/llvm/lib/Target/AArch64/AArch64CallingConvention.h @@ -28,6 +28,9 @@ using namespace llvm; static const uint16_t XRegList[] = {AArch64::X0, AArch64::X1, AArch64::X2, AArch64::X3, AArch64::X4, AArch64::X5, AArch64::X6, AArch64::X7}; +static const uint16_t HRegList[] = {AArch64::H0, AArch64::H1, AArch64::H2, + AArch64::H3, AArch64::H4, AArch64::H5, + AArch64::H6, AArch64::H7}; static const uint16_t SRegList[] = {AArch64::S0, AArch64::S1, AArch64::S2, AArch64::S3, AArch64::S4, AArch64::S5, AArch64::S6, AArch64::S7}; @@ -88,6 +91,8 @@ static bool CC_AArch64_Custom_Block(unsigned &ValNo, MVT &ValVT, MVT &LocVT, ArrayRef<uint16_t> RegList; if (LocVT.SimpleTy == MVT::i64) RegList = XRegList; + else if (LocVT.SimpleTy == MVT::f16) + RegList = HRegList; else if (LocVT.SimpleTy == MVT::f32 || LocVT.is32BitVector()) RegList = SRegList; else if (LocVT.SimpleTy == MVT::f64 || LocVT.is64BitVector()) |

