mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-09-24 23:28:41 +00:00
ARM refactor more NEON VLD/VST instructions to use composite physregs
Register pair VLD1/VLD2 all-lanes instructions. Kill off more of the pseudos as a result. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@152150 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -1025,7 +1025,7 @@ void ARMInstPrinter::printVectorListOne(const MCInst *MI, unsigned OpNum,
|
||||
O << "{" << getRegisterName(MI->getOperand(OpNum).getReg()) << "}";
|
||||
}
|
||||
|
||||
void ARMInstPrinter::printVectorListDPair(const MCInst *MI, unsigned OpNum,
|
||||
void ARMInstPrinter::printVectorListTwo(const MCInst *MI, unsigned OpNum,
|
||||
raw_ostream &O) {
|
||||
unsigned Reg = MI->getOperand(OpNum).getReg();
|
||||
unsigned Reg0 = MRI.getSubReg(Reg, ARM::dsub_0);
|
||||
@@ -1033,9 +1033,9 @@ void ARMInstPrinter::printVectorListDPair(const MCInst *MI, unsigned OpNum,
|
||||
O << "{" << getRegisterName(Reg0) << ", " << getRegisterName(Reg1) << "}";
|
||||
}
|
||||
|
||||
void ARMInstPrinter::printVectorListDPairSpaced(const MCInst *MI,
|
||||
unsigned OpNum,
|
||||
raw_ostream &O) {
|
||||
void ARMInstPrinter::printVectorListTwoSpaced(const MCInst *MI,
|
||||
unsigned OpNum,
|
||||
raw_ostream &O) {
|
||||
unsigned Reg = MI->getOperand(OpNum).getReg();
|
||||
unsigned Reg0 = MRI.getSubReg(Reg, ARM::dsub_0);
|
||||
unsigned Reg1 = MRI.getSubReg(Reg, ARM::dsub_2);
|
||||
@@ -1072,11 +1072,10 @@ void ARMInstPrinter::printVectorListOneAllLanes(const MCInst *MI,
|
||||
void ARMInstPrinter::printVectorListTwoAllLanes(const MCInst *MI,
|
||||
unsigned OpNum,
|
||||
raw_ostream &O) {
|
||||
// Normally, it's not safe to use register enum values directly with
|
||||
// addition to get the next register, but for VFP registers, the
|
||||
// sort order is guaranteed because they're all of the form D<n>.
|
||||
O << "{" << getRegisterName(MI->getOperand(OpNum).getReg()) << "[], "
|
||||
<< getRegisterName(MI->getOperand(OpNum).getReg() + 1) << "[]}";
|
||||
unsigned Reg = MI->getOperand(OpNum).getReg();
|
||||
unsigned Reg0 = MRI.getSubReg(Reg, ARM::dsub_0);
|
||||
unsigned Reg1 = MRI.getSubReg(Reg, ARM::dsub_1);
|
||||
O << "{" << getRegisterName(Reg0) << "[], " << getRegisterName(Reg1) << "[]}";
|
||||
}
|
||||
|
||||
void ARMInstPrinter::printVectorListThreeAllLanes(const MCInst *MI,
|
||||
@@ -1102,15 +1101,6 @@ void ARMInstPrinter::printVectorListFourAllLanes(const MCInst *MI,
|
||||
<< getRegisterName(MI->getOperand(OpNum).getReg() + 3) << "[]}";
|
||||
}
|
||||
|
||||
void ARMInstPrinter::printVectorListTwoSpaced(const MCInst *MI, unsigned OpNum,
|
||||
raw_ostream &O) {
|
||||
// Normally, it's not safe to use register enum values directly with
|
||||
// addition to get the next register, but for VFP registers, the
|
||||
// sort order is guaranteed because they're all of the form D<n>.
|
||||
O << "{" << getRegisterName(MI->getOperand(OpNum).getReg()) << ", "
|
||||
<< getRegisterName(MI->getOperand(OpNum).getReg() + 2) << "}";
|
||||
}
|
||||
|
||||
void ARMInstPrinter::printVectorListTwoSpacedAllLanes(const MCInst *MI,
|
||||
unsigned OpNum,
|
||||
raw_ostream &O) {
|
||||
|
Reference in New Issue
Block a user