diff options
Diffstat (limited to 'llvm/lib/Target/AMDGPU/AMDGPUISelLowering.cpp')
| -rw-r--r-- | llvm/lib/Target/AMDGPU/AMDGPUISelLowering.cpp | 59 | 
1 files changed, 0 insertions, 59 deletions
| diff --git a/llvm/lib/Target/AMDGPU/AMDGPUISelLowering.cpp b/llvm/lib/Target/AMDGPU/AMDGPUISelLowering.cpp index 923494e42f9..11f31563924 100644 --- a/llvm/lib/Target/AMDGPU/AMDGPUISelLowering.cpp +++ b/llvm/lib/Target/AMDGPU/AMDGPUISelLowering.cpp @@ -980,65 +980,6 @@ SDValue AMDGPUTargetLowering::SplitVectorLoad(const SDValue Op,    return DAG.getMergeValues(Ops, SL);  } -// FIXME: This isn't doing anything for SI. This should be used in a target -// combine during type legalization. -SDValue AMDGPUTargetLowering::MergeVectorStore(const SDValue &Op, -                                               SelectionDAG &DAG) const { -  StoreSDNode *Store = cast<StoreSDNode>(Op); -  EVT MemVT = Store->getMemoryVT(); -  unsigned MemBits = MemVT.getSizeInBits(); - -  // Byte stores are really expensive, so if possible, try to pack 32-bit vector -  // truncating store into an i32 store. -  // XXX: We could also handle optimize other vector bitwidths. -  if (!MemVT.isVector() || MemBits > 32) { -    return SDValue(); -  } - -  SDLoc DL(Op); -  SDValue Value = Store->getValue(); -  EVT VT = Value.getValueType(); -  EVT ElemVT = VT.getVectorElementType(); -  SDValue Ptr = Store->getBasePtr(); -  EVT MemEltVT = MemVT.getVectorElementType(); -  unsigned MemEltBits = MemEltVT.getSizeInBits(); -  unsigned MemNumElements = MemVT.getVectorNumElements(); -  unsigned PackedSize = MemVT.getStoreSizeInBits(); -  SDValue Mask = DAG.getConstant((1 << MemEltBits) - 1, DL, MVT::i32); - -  assert(Value.getValueType().getScalarSizeInBits() >= 32); - -  SDValue PackedValue; -  for (unsigned i = 0; i < MemNumElements; ++i) { -    SDValue Elt = DAG.getNode(ISD::EXTRACT_VECTOR_ELT, DL, ElemVT, Value, -                              DAG.getConstant(i, DL, MVT::i32)); -    Elt = DAG.getZExtOrTrunc(Elt, DL, MVT::i32); -    Elt = DAG.getNode(ISD::AND, DL, MVT::i32, Elt, Mask); // getZeroExtendInReg - -    SDValue Shift = DAG.getConstant(MemEltBits * i, DL, MVT::i32); -    Elt = DAG.getNode(ISD::SHL, DL, MVT::i32, Elt, Shift); - -    if (i == 0) { -      PackedValue = Elt; -    } else { -      PackedValue = DAG.getNode(ISD::OR, DL, MVT::i32, PackedValue, Elt); -    } -  } - -  if (PackedSize < 32) { -    EVT PackedVT = EVT::getIntegerVT(*DAG.getContext(), PackedSize); -    return DAG.getTruncStore(Store->getChain(), DL, PackedValue, Ptr, -                             Store->getMemOperand()->getPointerInfo(), PackedVT, -                             Store->getAlignment(), -                             Store->getMemOperand()->getFlags()); -  } - -  return DAG.getStore(Store->getChain(), DL, PackedValue, Ptr, -                      Store->getMemOperand()->getPointerInfo(), -                      Store->getAlignment(), -                      Store->getMemOperand()->getFlags()); -} -  SDValue AMDGPUTargetLowering::SplitVectorStore(SDValue Op,                                                 SelectionDAG &DAG) const {    StoreSDNode *Store = cast<StoreSDNode>(Op); | 

