llvm.org GIT mirror llvm / b968a2d
Merging r235662: ------------------------------------------------------------------------ r235662 | thomas.stellard | 2015-04-23 18:59:24 -0400 (Thu, 23 Apr 2015) | 2 lines R600: Correctly lower CONCAT_VECTOR nodes with more than 2 operands ------------------------------------------------------------------------ git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_36@236450 91177308-0d34-0410-b5e6-96231b3b80d8 Tom Stellard 4 years ago
2 changed file(s) with 14 addition(s) and 5 deletion(s). Raw diff Collapse all Expand all
825825 SDValue AMDGPUTargetLowering::LowerCONCAT_VECTORS(SDValue Op,
826826 SelectionDAG &DAG) const {
827827 SmallVector Args;
828 SDValue A = Op.getOperand(0);
829 SDValue B = Op.getOperand(1);
830
831 DAG.ExtractVectorElements(A, Args);
832 DAG.ExtractVectorElements(B, Args);
828
829 for (const SDUse &U : Op->ops())
830 DAG.ExtractVectorElements(U.get(), Args);
833831
834832 return DAG.getNode(ISD::BUILD_VECTOR, SDLoc(Op), Op.getValueType(), Args);
835833 }
282282 store <32 x i16> %concat, <32 x i16> addrspace(1)* %out, align 64
283283 ret void
284284 }
285
286 ; FUNC-LABEL: {{^}}concat_vector_crash:
287 ; SI: s_endpgm
288 define void @concat_vector_crash(<8 x float> addrspace(1)* %out, <2 x float> addrspace(1)* %in) {
289 bb:
290 %tmp = load <2 x float> addrspace(1)* %in, align 4
291 %tmp1 = shufflevector <2 x float> %tmp, <2 x float> undef, <8 x i32>
292 %tmp2 = shufflevector <8 x float> undef, <8 x float> %tmp1, <8 x i32>
293 store <8 x float> %tmp2, <8 x float> addrspace(1)* %out, align 32
294 ret void
295 }