mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-01-26 07:34:06 +00:00
Fix handling of 'load' nodes.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105269 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
21330544df
commit
11fe24624a
@ -611,13 +611,7 @@ SPUDAGToDAGISel::DFormAddressPredicate(SDNode *Op, SDValue N, SDValue &Base,
|
||||
|
||||
if (OpOpc == ISD::STORE || OpOpc == ISD::LOAD) {
|
||||
// Direct load/store without getelementptr
|
||||
SDValue Addr, Offs;
|
||||
|
||||
// Get the register from CopyFromReg
|
||||
if (Opc == ISD::CopyFromReg)
|
||||
Addr = N.getOperand(1);
|
||||
else
|
||||
Addr = N; // Register
|
||||
SDValue Offs;
|
||||
|
||||
Offs = ((OpOpc == ISD::STORE) ? Op->getOperand(3) : Op->getOperand(2));
|
||||
|
||||
@ -626,7 +620,7 @@ SPUDAGToDAGISel::DFormAddressPredicate(SDNode *Op, SDValue N, SDValue &Base,
|
||||
Offs = CurDAG->getTargetConstant(0, Offs.getValueType());
|
||||
|
||||
Base = Offs;
|
||||
Index = Addr;
|
||||
Index = N;
|
||||
return true;
|
||||
}
|
||||
} else {
|
||||
|
@ -18,3 +18,16 @@ entry:
|
||||
ret <4 x float> %tmp1
|
||||
; CHECK: lqd $3, 16($3)
|
||||
}
|
||||
|
||||
|
||||
declare <4 x i32>* @getv4f32ptr()
|
||||
define <4 x i32> @func() {
|
||||
;CHECK: brasl
|
||||
;CHECK: lr {{\$[0-9]*, \$3}}
|
||||
;CHECK: brasl
|
||||
%rv1 = call <4 x i32>* @getv4f32ptr()
|
||||
%rv2 = call <4 x i32>* @getv4f32ptr()
|
||||
%rv3 = load <4 x i32>* %rv1
|
||||
ret <4 x i32> %rv3
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user