R600: Add support for vector local memory loads
[oota-llvm.git] / lib / Target / R600 / R600ISelLowering.cpp
index 9bc8e8a818fa839a3305b259e32a8a3d3ec672b5..f0242b86c0b724f507968c1f993bdddae641a7f4 100644 (file)
@@ -1155,6 +1155,14 @@ SDValue R600TargetLowering::LowerLOAD(SDValue Op, SelectionDAG &DAG) const
   SDValue Ptr = Op.getOperand(1);
   SDValue LoweredLoad;
 
+  if (LoadNode->getAddressSpace() == AMDGPUAS::LOCAL_ADDRESS && VT.isVector()) {
+    SDValue MergedValues[2] = {
+      SplitVectorLoad(Op, DAG),
+      Chain
+    };
+    return DAG.getMergeValues(MergedValues, 2, DL);
+  }
+
   int ConstantBlock = ConstantAddressBlock(LoadNode->getAddressSpace());
   if (ConstantBlock > -1) {
     SDValue Result;