SelectionDAG: Use correct pointer size when splitting vector stores
authorTom Stellard <thomas.stellard@amd.com>
Mon, 26 Aug 2013 15:05:55 +0000 (15:05 +0000)
committerTom Stellard <thomas.stellard@amd.com>
Mon, 26 Aug 2013 15:05:55 +0000 (15:05 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189224 91177308-0d34-0410-b5e6-96231b3b80d8

lib/CodeGen/SelectionDAG/LegalizeVectorTypes.cpp
test/CodeGen/R600/store.ll

index fd5f97718f55a6278b6104ea92fe3dff4cfddfdd..52990c3dd76d3fb631d64a7573e3cc49eb423960 100644 (file)
@@ -1270,7 +1270,7 @@ SDValue DAGTypeLegalizer::SplitVecOp_STORE(StoreSDNode *N, unsigned OpNo) {
 
   // Increment the pointer to the other half.
   Ptr = DAG.getNode(ISD::ADD, DL, Ptr.getValueType(), Ptr,
-                    DAG.getIntPtrConstant(IncrementSize));
+                    DAG.getConstant(IncrementSize, Ptr.getValueType()));
 
   if (isTruncating)
     Hi = DAG.getTruncStore(Ch, DL, Hi, Ptr,
index 50c91b42fa15d1edadd28199c156714024fb0248..2609dab422f36d7b03899844db279b000b85f9e1 100644 (file)
@@ -202,6 +202,21 @@ entry:
   ret void
 }
 
+; EG-CHECK: @store_local_v4i8
+; EG-CHECK: LDS_WRITE
+; CM-CHECK: @store_local_v4i8
+; CM-CHECK: LDS_WRITE
+; SI-CHECK: @store_local_v4i8
+; SI-CHECK: DS_WRITE_B8
+; SI-CHECK: DS_WRITE_B8
+; SI-CHECK: DS_WRITE_B8
+; SI-CHECK: DS_WRITE_B8
+define void @store_local_v4i8(<4 x i8> addrspace(3)* %out, <4 x i8> %in) {
+entry:
+  store <4 x i8> %in, <4 x i8> addrspace(3)* %out
+  ret void
+}
+
 ; EG-CHECK: @store_local_v2i32
 ; EG-CHECK: LDS_WRITE
 ; EG-CHECK: LDS_WRITE