forked from OSchip/llvm-project
AMDGPU: Fix assertion with bitcast from i64 constant to v4i16
llvm-svn: 345922
This commit is contained in:
parent
fdddd8e734
commit
8e0269ba0b
|
@ -3817,9 +3817,10 @@ SDValue AMDGPUTargetLowering::PerformDAGCombine(SDNode *N,
|
|||
if (Src.getValueType() == MVT::i64) {
|
||||
SDLoc SL(N);
|
||||
uint64_t CVal = C->getZExtValue();
|
||||
return DAG.getNode(ISD::BUILD_VECTOR, SL, DestVT,
|
||||
DAG.getConstant(Lo_32(CVal), SL, MVT::i32),
|
||||
DAG.getConstant(Hi_32(CVal), SL, MVT::i32));
|
||||
SDValue BV = DAG.getNode(ISD::BUILD_VECTOR, SL, MVT::v2i32,
|
||||
DAG.getConstant(Lo_32(CVal), SL, MVT::i32),
|
||||
DAG.getConstant(Hi_32(CVal), SL, MVT::i32));
|
||||
return DAG.getNode(ISD::BITCAST, SL, DestVT, BV);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -0,0 +1,38 @@
|
|||
; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx900 -verify-machineinstrs < %s | FileCheck -check-prefix=GCN %s
|
||||
|
||||
; GCN-LABEL: {{^}}cast_constant_i64_to_build_vector_v4i16:
|
||||
; GCN: global_store_dwordx2
|
||||
; GCN: global_store_dword v
|
||||
; GCN: global_store_short
|
||||
define amdgpu_kernel void @cast_constant_i64_to_build_vector_v4i16(i8 addrspace(1)* nocapture %data) {
|
||||
entry:
|
||||
store i8 72, i8 addrspace(1)* %data, align 1
|
||||
%arrayidx1 = getelementptr inbounds i8, i8 addrspace(1)* %data, i64 1
|
||||
store i8 101, i8 addrspace(1)* %arrayidx1, align 1
|
||||
%arrayidx2 = getelementptr inbounds i8, i8 addrspace(1)* %data, i64 2
|
||||
store i8 108, i8 addrspace(1)* %arrayidx2, align 1
|
||||
%arrayidx3 = getelementptr inbounds i8, i8 addrspace(1)* %data, i64 3
|
||||
store i8 108, i8 addrspace(1)* %arrayidx3, align 1
|
||||
%arrayidx4 = getelementptr inbounds i8, i8 addrspace(1)* %data, i64 4
|
||||
store i8 111, i8 addrspace(1)* %arrayidx4, align 1
|
||||
%arrayidx5 = getelementptr inbounds i8, i8 addrspace(1)* %data, i64 5
|
||||
store i8 44, i8 addrspace(1)* %arrayidx5, align 1
|
||||
%arrayidx6 = getelementptr inbounds i8, i8 addrspace(1)* %data, i64 6
|
||||
store i8 32, i8 addrspace(1)* %arrayidx6, align 1
|
||||
%arrayidx7 = getelementptr inbounds i8, i8 addrspace(1)* %data, i64 7
|
||||
store i8 87, i8 addrspace(1)* %arrayidx7, align 1
|
||||
%arrayidx8 = getelementptr inbounds i8, i8 addrspace(1)* %data, i64 8
|
||||
store i8 111, i8 addrspace(1)* %arrayidx8, align 1
|
||||
%arrayidx9 = getelementptr inbounds i8, i8 addrspace(1)* %data, i64 9
|
||||
store i8 114, i8 addrspace(1)* %arrayidx9, align 1
|
||||
%arrayidx10 = getelementptr inbounds i8, i8 addrspace(1)* %data, i64 10
|
||||
store i8 108, i8 addrspace(1)* %arrayidx10, align 1
|
||||
%arrayidx11 = getelementptr inbounds i8, i8 addrspace(1)* %data, i64 11
|
||||
store i8 100, i8 addrspace(1)* %arrayidx11, align 1
|
||||
%arrayidx12 = getelementptr inbounds i8, i8 addrspace(1)* %data, i64 12
|
||||
store i8 33, i8 addrspace(1)* %arrayidx12, align 1
|
||||
%arrayidx13 = getelementptr inbounds i8, i8 addrspace(1)* %data, i64 13
|
||||
store i8 72, i8 addrspace(1)* %arrayidx13, align 1
|
||||
ret void
|
||||
}
|
||||
|
Loading…
Reference in New Issue