diff options
author | Igor Breger <igor.breger@intel.com> | 2017-03-23 15:25:57 +0000 |
---|---|---|
committer | Igor Breger <igor.breger@intel.com> | 2017-03-23 15:25:57 +0000 |
commit | a8ba572dcfdb969fe1bb3381663298488891f838 (patch) | |
tree | 2b3fdc3ea6dc7bfd88779cfd484528668eeec61d /llvm/lib/Target/X86/X86CallLowering.cpp | |
parent | 5816a8bbb197a28715c77908a0dd089f0f237a93 (diff) | |
download | bcm5719-llvm-a8ba572dcfdb969fe1bb3381663298488891f838.tar.gz bcm5719-llvm-a8ba572dcfdb969fe1bb3381663298488891f838.zip |
[GlobalISel][X86] Support G_STORE/G_LOAD operation
Summary:
1. Support pointer type as function argumnet and return value
2. G_STORE/G_LOAD - set legal action for i8/i16/i32/i64/f32/f64/vec128
3. RegisterBank - support typeless operations like G_STORE/G_LOAD, for scalar use GPR bank.
4. Support instruction selection for G_LOAD/G_STORE
Reviewers: zvi, rovka, ab, qcolombet
Reviewed By: rovka
Subscribers: llvm-commits, dberris, kristof.beyls, eladcohen, guyblank
Differential Revision: https://reviews.llvm.org/D30973
llvm-svn: 298609
Diffstat (limited to 'llvm/lib/Target/X86/X86CallLowering.cpp')
-rw-r--r-- | llvm/lib/Target/X86/X86CallLowering.cpp | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/llvm/lib/Target/X86/X86CallLowering.cpp b/llvm/lib/Target/X86/X86CallLowering.cpp index 5f8d7f46f39..137ef166aae 100644 --- a/llvm/lib/Target/X86/X86CallLowering.cpp +++ b/llvm/lib/Target/X86/X86CallLowering.cpp @@ -47,7 +47,9 @@ void X86CallLowering::splitToValueTypes(const ArgInfo &OrigArg, unsigned NumParts = TLI.getNumRegisters(Context, VT); if (NumParts == 1) { - SplitArgs.push_back(OrigArg); + // replace the original type ( pointer -> GPR ). + SplitArgs.emplace_back(OrigArg.Reg, VT.getTypeForEVT(Context), + OrigArg.Flags, OrigArg.IsFixed); return; } |