mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-13 20:32:21 +00:00
R600: Add comments to subword private address load lowering code
v2: Use C++ comments and end with periods Signed-off-by: Jan Vesely <jan.vesely@rutgers.edu> Reviewed-by: Matt Arsenault <Matthew.Arsenault@amd.com> git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@238228 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
9c24c958f1
commit
0704171907
@ -1451,22 +1451,34 @@ SDValue AMDGPUTargetLowering::LowerLOAD(SDValue Op, SelectionDAG &DAG) const {
|
||||
ExtType == ISD::NON_EXTLOAD || Load->getMemoryVT().bitsGE(MVT::i32))
|
||||
return SDValue();
|
||||
|
||||
// <SI && AS=PRIVATE && EXTLOAD && size < 32bit,
|
||||
// register (2-)byte extract.
|
||||
|
||||
// Get Register holding the target.
|
||||
SDValue Ptr = DAG.getNode(ISD::SRL, DL, MVT::i32, Load->getBasePtr(),
|
||||
DAG.getConstant(2, DL, MVT::i32));
|
||||
// Load the Register.
|
||||
SDValue Ret = DAG.getNode(AMDGPUISD::REGISTER_LOAD, DL, Op.getValueType(),
|
||||
Load->getChain(), Ptr,
|
||||
DAG.getTargetConstant(0, DL, MVT::i32),
|
||||
Op.getOperand(2));
|
||||
|
||||
// Get offset within the register.
|
||||
SDValue ByteIdx = DAG.getNode(ISD::AND, DL, MVT::i32,
|
||||
Load->getBasePtr(),
|
||||
DAG.getConstant(0x3, DL, MVT::i32));
|
||||
|
||||
// Bit offset of target byte (byteIdx * 8).
|
||||
SDValue ShiftAmt = DAG.getNode(ISD::SHL, DL, MVT::i32, ByteIdx,
|
||||
DAG.getConstant(3, DL, MVT::i32));
|
||||
|
||||
// Shift to the right.
|
||||
Ret = DAG.getNode(ISD::SRL, DL, MVT::i32, Ret, ShiftAmt);
|
||||
|
||||
// Eliminate the upper bits by setting them to ...
|
||||
EVT MemEltVT = MemVT.getScalarType();
|
||||
|
||||
// ... ones.
|
||||
if (ExtType == ISD::SEXTLOAD) {
|
||||
SDValue MemEltVTNode = DAG.getValueType(MemEltVT);
|
||||
|
||||
@ -1478,6 +1490,7 @@ SDValue AMDGPUTargetLowering::LowerLOAD(SDValue Op, SelectionDAG &DAG) const {
|
||||
return DAG.getMergeValues(Ops, DL);
|
||||
}
|
||||
|
||||
// ... or zeros.
|
||||
SDValue Ops[] = {
|
||||
DAG.getZeroExtendInReg(Ret, DL, MemEltVT),
|
||||
Load->getChain()
|
||||
|
Loading…
Reference in New Issue
Block a user