diff options
| author | Artem Belevich <tra@google.com> | 2018-12-01 00:21:52 +0000 |
|---|---|---|
| committer | Artem Belevich <tra@google.com> | 2018-12-01 00:21:52 +0000 |
| commit | e5664b15593d6e0302e89d96fd62b39b407eeff9 (patch) | |
| tree | d98fbe7ce67bed2c429d96847fddd533f2a6e678 /llvm/lib | |
| parent | 8e10e9423d61c530aa6a04ba97db934a6ca9b81d (diff) | |
| download | bcm5719-llvm-e5664b15593d6e0302e89d96fd62b39b407eeff9.tar.gz bcm5719-llvm-e5664b15593d6e0302e89d96fd62b39b407eeff9.zip | |
[NVPTX] Add lowering of i128 numbers as struct fields
Addition to D34555 - override VTs computation with ComputePTXValueVTs
for struct fields.
Author: Denys Zariaiev<denys.zariaiev@gmail.com>
Differential Revision: https://reviews.llvm.org/D55144
llvm-svn: 348057
Diffstat (limited to 'llvm/lib')
| -rw-r--r-- | llvm/lib/Target/NVPTX/NVPTXISelLowering.cpp | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/llvm/lib/Target/NVPTX/NVPTXISelLowering.cpp b/llvm/lib/Target/NVPTX/NVPTXISelLowering.cpp index c352b9b9c9d..eceb4fc6d88 100644 --- a/llvm/lib/Target/NVPTX/NVPTXISelLowering.cpp +++ b/llvm/lib/Target/NVPTX/NVPTXISelLowering.cpp @@ -180,6 +180,18 @@ static void ComputePTXValueVTs(const TargetLowering &TLI, const DataLayout &DL, return; } + // Given a struct type, recursively traverse the elements with custom ComputePTXValueVTs. + if (StructType *STy = dyn_cast<StructType>(Ty)) { + auto const *SL = DL.getStructLayout(STy); + auto ElementNum = 0; + for(auto *EI : STy->elements()) { + ComputePTXValueVTs(TLI, DL, EI, ValueVTs, Offsets, + StartingOffset + SL->getElementOffset(ElementNum)); + ++ElementNum; + } + return; + } + ComputeValueVTs(TLI, DL, Ty, TempVTs, &TempOffsets, StartingOffset); for (unsigned i = 0, e = TempVTs.size(); i != e; ++i) { EVT VT = TempVTs[i]; |

