mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-15 04:30:12 +00:00
Lower ConstantAggregateZero into zeros
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24890 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
8263c5e920
commit
3b841e9f52
@ -306,16 +306,29 @@ public:
|
||||
// Constant or ConstantFP node onto the ops list for each element of
|
||||
// the packed constant.
|
||||
std::vector<SDOperand> Ops;
|
||||
for (unsigned i = 0; i < NumElements; ++i) {
|
||||
const Constant *CEl = C->getOperand(i);
|
||||
if (ConstantPacked *CP = dyn_cast<ConstantPacked>(C)) {
|
||||
if (MVT::isFloatingPoint(PVT)) {
|
||||
for (unsigned i = 0; i != NumElements; ++i) {
|
||||
const ConstantFP *El = cast<ConstantFP>(CP->getOperand(i));
|
||||
Ops.push_back(DAG.getConstantFP(El->getValue(), PVT));
|
||||
}
|
||||
} else {
|
||||
for (unsigned i = 0; i != NumElements; ++i) {
|
||||
const ConstantIntegral *El =
|
||||
cast<ConstantIntegral>(CP->getOperand(i));
|
||||
Ops.push_back(DAG.getConstant(El->getRawValue(), PVT));
|
||||
}
|
||||
}
|
||||
} else {
|
||||
assert(isa<ConstantAggregateZero>(C) && "Unknown packed constant!");
|
||||
SDOperand Op;
|
||||
if (MVT::isFloatingPoint(PVT))
|
||||
Ops.push_back(DAG.getConstantFP(cast<ConstantFP>(CEl)->getValue(),
|
||||
PVT));
|
||||
Op = DAG.getConstantFP(0, PVT);
|
||||
else
|
||||
Ops.push_back(
|
||||
DAG.getConstant(cast<ConstantIntegral>(CEl)->getRawValue(),
|
||||
PVT));
|
||||
Op = DAG.getConstant(0, PVT);
|
||||
Ops.assign(NumElements, Op);
|
||||
}
|
||||
|
||||
// Handle the case where we have a 1-element vector, in which
|
||||
// case we want to immediately turn it into a scalar constant.
|
||||
if (Ops.size() == 1) {
|
||||
|
Loading…
Reference in New Issue
Block a user