[llvm] 2f5a183 - [CSKY] Migrate to new encodeInstruction that uses SmallVectorImpl<char>. NFC
Fangrui Song via llvm-commits
llvm-commits at lists.llvm.org
Wed Aug 9 09:49:17 PDT 2023
Author: Fangrui Song
Date: 2023-08-09T09:49:12-07:00
New Revision: 2f5a183ff30667ce5d596e5ddd069f99a620cbeb
URL: https://github.com/llvm/llvm-project/commit/2f5a183ff30667ce5d596e5ddd069f99a620cbeb
DIFF: https://github.com/llvm/llvm-project/commit/2f5a183ff30667ce5d596e5ddd069f99a620cbeb.diff
LOG: [CSKY] Migrate to new encodeInstruction that uses SmallVectorImpl<char>. NFC
Added:
Modified:
llvm/lib/Target/CSKY/MCTargetDesc/CSKYMCCodeEmitter.cpp
llvm/lib/Target/CSKY/MCTargetDesc/CSKYMCCodeEmitter.h
Removed:
################################################################################
diff --git a/llvm/lib/Target/CSKY/MCTargetDesc/CSKYMCCodeEmitter.cpp b/llvm/lib/Target/CSKY/MCTargetDesc/CSKYMCCodeEmitter.cpp
index ea41d53ef30fde..4437c5c998ea6e 100644
--- a/llvm/lib/Target/CSKY/MCTargetDesc/CSKYMCCodeEmitter.cpp
+++ b/llvm/lib/Target/CSKY/MCTargetDesc/CSKYMCCodeEmitter.cpp
@@ -57,17 +57,14 @@ CSKYMCCodeEmitter::getImmOpValueMSBSize(const MCInst &MI, unsigned Idx,
return MSB.getImm() - LSB.getImm();
}
-static void writeData(uint32_t Bin, unsigned Size, raw_ostream &OS) {
- uint16_t LO16 = static_cast<uint16_t>(Bin);
- uint16_t HI16 = static_cast<uint16_t>(Bin >> 16);
-
+static void writeData(uint32_t Bin, unsigned Size, SmallVectorImpl<char> &CB) {
if (Size == 4)
- support::endian::write<uint16_t>(OS, HI16, support::little);
-
- support::endian::write<uint16_t>(OS, LO16, support::little);
+ support::endian::write(CB, static_cast<uint16_t>(Bin >> 16),
+ support::little);
+ support::endian::write(CB, static_cast<uint16_t>(Bin), support::little);
}
-void CSKYMCCodeEmitter::expandJBTF(const MCInst &MI, raw_ostream &OS,
+void CSKYMCCodeEmitter::expandJBTF(const MCInst &MI, SmallVectorImpl<char> &CB,
SmallVectorImpl<MCFixup> &Fixups,
const MCSubtargetInfo &STI) const {
@@ -80,7 +77,7 @@ void CSKYMCCodeEmitter::expandJBTF(const MCInst &MI, raw_ostream &OS,
.addOperand(MI.getOperand(0))
.addImm(6);
Binary = getBinaryCodeForInstr(TmpInst, Fixups, STI);
- writeData(Binary, 2, OS);
+ writeData(Binary, 2, CB);
if (!STI.hasFeature(CSKY::Has2E3))
TmpInst = MCInstBuilder(CSKY::BR32)
@@ -90,10 +87,10 @@ void CSKYMCCodeEmitter::expandJBTF(const MCInst &MI, raw_ostream &OS,
TmpInst = MCInstBuilder(CSKY::JMPI32).addOperand(MI.getOperand(2));
Binary = getBinaryCodeForInstr(TmpInst, Fixups, STI);
Fixups[Fixups.size() - 1].setOffset(2);
- writeData(Binary, 4, OS);
+ writeData(Binary, 4, CB);
}
-void CSKYMCCodeEmitter::expandNEG(const MCInst &MI, raw_ostream &OS,
+void CSKYMCCodeEmitter::expandNEG(const MCInst &MI, SmallVectorImpl<char> &CB,
SmallVectorImpl<MCFixup> &Fixups,
const MCSubtargetInfo &STI) const {
@@ -105,17 +102,17 @@ void CSKYMCCodeEmitter::expandNEG(const MCInst &MI, raw_ostream &OS,
.addOperand(MI.getOperand(0))
.addOperand(MI.getOperand(1));
Binary = getBinaryCodeForInstr(TmpInst, Fixups, STI);
- writeData(Binary, Size, OS);
+ writeData(Binary, Size, CB);
TmpInst = MCInstBuilder(Size == 4 ? CSKY::ADDI32 : CSKY::ADDI16)
.addOperand(MI.getOperand(0))
.addOperand(MI.getOperand(0))
.addImm(1);
Binary = getBinaryCodeForInstr(TmpInst, Fixups, STI);
- writeData(Binary, Size, OS);
+ writeData(Binary, Size, CB);
}
-void CSKYMCCodeEmitter::expandRSUBI(const MCInst &MI, raw_ostream &OS,
+void CSKYMCCodeEmitter::expandRSUBI(const MCInst &MI, SmallVectorImpl<char> &CB,
SmallVectorImpl<MCFixup> &Fixups,
const MCSubtargetInfo &STI) const {
@@ -127,17 +124,18 @@ void CSKYMCCodeEmitter::expandRSUBI(const MCInst &MI, raw_ostream &OS,
.addOperand(MI.getOperand(0))
.addOperand(MI.getOperand(1));
Binary = getBinaryCodeForInstr(TmpInst, Fixups, STI);
- writeData(Binary, Size, OS);
+ writeData(Binary, Size, CB);
TmpInst = MCInstBuilder(Size == 4 ? CSKY::ADDI32 : CSKY::ADDI16)
.addOperand(MI.getOperand(0))
.addOperand(MI.getOperand(0))
.addImm(MI.getOperand(2).getImm() + 1);
Binary = getBinaryCodeForInstr(TmpInst, Fixups, STI);
- writeData(Binary, Size, OS);
+ writeData(Binary, Size, CB);
}
-void CSKYMCCodeEmitter::encodeInstruction(const MCInst &MI, raw_ostream &OS,
+void CSKYMCCodeEmitter::encodeInstruction(const MCInst &MI,
+ SmallVectorImpl<char> &CB,
SmallVectorImpl<MCFixup> &Fixups,
const MCSubtargetInfo &STI) const {
const MCInstrDesc &Desc = MII.get(MI.getOpcode());
@@ -151,17 +149,17 @@ void CSKYMCCodeEmitter::encodeInstruction(const MCInst &MI, raw_ostream &OS,
break;
case CSKY::JBT_E:
case CSKY::JBF_E:
- expandJBTF(MI, OS, Fixups, STI);
+ expandJBTF(MI, CB, Fixups, STI);
MCNumEmitted += 2;
return;
case CSKY::NEG32:
case CSKY::NEG16:
- expandNEG(MI, OS, Fixups, STI);
+ expandNEG(MI, CB, Fixups, STI);
MCNumEmitted += 2;
return;
case CSKY::RSUBI32:
case CSKY::RSUBI16:
- expandRSUBI(MI, OS, Fixups, STI);
+ expandRSUBI(MI, CB, Fixups, STI);
MCNumEmitted += 2;
return;
case CSKY::JBSR32:
@@ -229,16 +227,7 @@ void CSKYMCCodeEmitter::encodeInstruction(const MCInst &MI, raw_ostream &OS,
}
++MCNumEmitted;
-
- uint32_t Bin = getBinaryCodeForInstr(TmpInst, Fixups, STI);
-
- uint16_t LO16 = static_cast<uint16_t>(Bin);
- uint16_t HI16 = static_cast<uint16_t>(Bin >> 16);
-
- if (Size == 4)
- support::endian::write<uint16_t>(OS, HI16, support::little);
-
- support::endian::write<uint16_t>(OS, LO16, support::little);
+ writeData(getBinaryCodeForInstr(TmpInst, Fixups, STI), Size, CB);
}
unsigned
diff --git a/llvm/lib/Target/CSKY/MCTargetDesc/CSKYMCCodeEmitter.h b/llvm/lib/Target/CSKY/MCTargetDesc/CSKYMCCodeEmitter.h
index 128430197cc530..0e47d259d43f5e 100644
--- a/llvm/lib/Target/CSKY/MCTargetDesc/CSKYMCCodeEmitter.h
+++ b/llvm/lib/Target/CSKY/MCTargetDesc/CSKYMCCodeEmitter.h
@@ -32,7 +32,7 @@ class CSKYMCCodeEmitter : public MCCodeEmitter {
~CSKYMCCodeEmitter() {}
- void encodeInstruction(const MCInst &Inst, raw_ostream &OS,
+ void encodeInstruction(const MCInst &Inst, SmallVectorImpl<char> &CB,
SmallVectorImpl<MCFixup> &Fixups,
const MCSubtargetInfo &STI) const override;
@@ -172,13 +172,13 @@ class CSKYMCCodeEmitter : public MCCodeEmitter {
return 0;
}
- void expandJBTF(const MCInst &MI, raw_ostream &OS,
+ void expandJBTF(const MCInst &MI, SmallVectorImpl<char> &CB,
SmallVectorImpl<MCFixup> &Fixups,
const MCSubtargetInfo &STI) const;
- void expandNEG(const MCInst &MI, raw_ostream &OS,
+ void expandNEG(const MCInst &MI, SmallVectorImpl<char> &CB,
SmallVectorImpl<MCFixup> &Fixups,
const MCSubtargetInfo &STI) const;
- void expandRSUBI(const MCInst &MI, raw_ostream &OS,
+ void expandRSUBI(const MCInst &MI, SmallVectorImpl<char> &CB,
SmallVectorImpl<MCFixup> &Fixups,
const MCSubtargetInfo &STI) const;
};
More information about the llvm-commits
mailing list