summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target/X86/X86CallLowering.cpp
diff options
context:
space:
mode:
authorIgor Breger <igor.breger@intel.com>2017-03-23 15:25:57 +0000
committerIgor Breger <igor.breger@intel.com>2017-03-23 15:25:57 +0000
commita8ba572dcfdb969fe1bb3381663298488891f838 (patch)
tree2b3fdc3ea6dc7bfd88779cfd484528668eeec61d /llvm/lib/Target/X86/X86CallLowering.cpp
parent5816a8bbb197a28715c77908a0dd089f0f237a93 (diff)
downloadbcm5719-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.cpp4
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;
}
OpenPOWER on IntegriCloud