mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-08-09 11:25:55 +00:00
R600: Calculate store mask instead of using switch.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@203527 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -630,17 +630,8 @@ SDValue AMDGPUTargetLowering::MergeVectorStore(const SDValue &Op,
|
|||||||
unsigned MemEltBits = MemEltVT.getSizeInBits();
|
unsigned MemEltBits = MemEltVT.getSizeInBits();
|
||||||
unsigned MemNumElements = MemVT.getVectorNumElements();
|
unsigned MemNumElements = MemVT.getVectorNumElements();
|
||||||
EVT PackedVT = EVT::getIntegerVT(*DAG.getContext(), MemVT.getSizeInBits());
|
EVT PackedVT = EVT::getIntegerVT(*DAG.getContext(), MemVT.getSizeInBits());
|
||||||
SDValue Mask;
|
SDValue Mask = DAG.getConstant((1 << MemEltBits) - 1, PackedVT);
|
||||||
switch(MemEltBits) {
|
|
||||||
case 8:
|
|
||||||
Mask = DAG.getConstant(0xFF, PackedVT);
|
|
||||||
break;
|
|
||||||
case 16:
|
|
||||||
Mask = DAG.getConstant(0xFFFF, PackedVT);
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
llvm_unreachable("Cannot lower this vector store");
|
|
||||||
}
|
|
||||||
SDValue PackedValue;
|
SDValue PackedValue;
|
||||||
for (unsigned i = 0; i < MemNumElements; ++i) {
|
for (unsigned i = 0; i < MemNumElements; ++i) {
|
||||||
EVT ElemVT = VT.getVectorElementType();
|
EVT ElemVT = VT.getVectorElementType();
|
||||||
@@ -725,12 +716,7 @@ SDValue AMDGPUTargetLowering::LowerLOAD(SDValue Op, SelectionDAG &DAG) const {
|
|||||||
return SDValue();
|
return SDValue();
|
||||||
|
|
||||||
|
|
||||||
unsigned Mask = 0;
|
unsigned Mask = (1 << Load->getMemoryVT().getSizeInBits()) - 1;
|
||||||
if (Load->getMemoryVT() == MVT::i8) {
|
|
||||||
Mask = 0xff;
|
|
||||||
} else if (Load->getMemoryVT() == MVT::i16) {
|
|
||||||
Mask = 0xffff;
|
|
||||||
}
|
|
||||||
SDValue Ptr = DAG.getNode(ISD::SRL, DL, MVT::i32, Load->getBasePtr(),
|
SDValue Ptr = DAG.getNode(ISD::SRL, DL, MVT::i32, Load->getBasePtr(),
|
||||||
DAG.getConstant(2, MVT::i32));
|
DAG.getConstant(2, MVT::i32));
|
||||||
SDValue Ret = DAG.getNode(AMDGPUISD::REGISTER_LOAD, DL, Op.getValueType(),
|
SDValue Ret = DAG.getNode(AMDGPUISD::REGISTER_LOAD, DL, Op.getValueType(),
|
||||||
|
Reference in New Issue
Block a user