mirror of
https://github.com/RPCS3/llvm.git
synced 2024-12-25 05:25:53 +00:00
R600/SI: Remove assertion in SIInstrInfo::areLoadsFromSameBasePtr()
Added a FIXME coment instead, we need to handle the case where the two DS instructions being compared have different numbers of operands. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@219236 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
63cdf9f8da
commit
b8fee4f1d9
@ -88,7 +88,10 @@ bool SIInstrInfo::areLoadsFromSameBasePtr(SDNode *Load0, SDNode *Load1,
|
||||
return false;
|
||||
|
||||
if (isDS(Opc0) && isDS(Opc1)) {
|
||||
assert(getNumOperandsNoGlue(Load0) == getNumOperandsNoGlue(Load1));
|
||||
|
||||
// FIXME: Handle this case:
|
||||
if (getNumOperandsNoGlue(Load0) != getNumOperandsNoGlue(Load1))
|
||||
return false;
|
||||
|
||||
// Check base reg.
|
||||
if (Load0->getOperand(1) != Load1->getOperand(1))
|
||||
|
@ -701,3 +701,21 @@ entry:
|
||||
store <2 x float> %0, <2 x float> addrspace(1)* %out
|
||||
ret void
|
||||
}
|
||||
|
||||
; Test loading a i32 and v2i32 value from the same base pointer.
|
||||
; FUNC-LABEL: {{^}}load_i32_v2i32_local:
|
||||
; R600-CHECK: LDS_READ_RET
|
||||
; R600-CHECK: LDS_READ_RET
|
||||
; R600-CHECK: LDS_READ_RET
|
||||
; SI-CHECK-DAG: DS_READ_B32
|
||||
; SI-CHECK-DAG: DS_READ2_B32
|
||||
define void @load_i32_v2i32_local(<2 x i32> addrspace(1)* %out, i32 addrspace(3)* %in) {
|
||||
%scalar = load i32 addrspace(3)* %in
|
||||
%tmp0 = bitcast i32 addrspace(3)* %in to <2 x i32> addrspace(3)*
|
||||
%vec_ptr = getelementptr <2 x i32> addrspace(3)* %tmp0, i32 2
|
||||
%vec0 = load <2 x i32> addrspace(3)* %vec_ptr, align 4
|
||||
%vec1 = insertelement <2 x i32> <i32 0, i32 0>, i32 %scalar, i32 0
|
||||
%vec = add <2 x i32> %vec0, %vec1
|
||||
store <2 x i32> %vec, <2 x i32> addrspace(1)* %out
|
||||
ret void
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user