[llvm] r332757 - Support: Simplify endian stream interface. NFCI.
Peter Collingbourne via llvm-commits
llvm-commits at lists.llvm.org
Fri May 18 12:46:24 PDT 2018
Author: pcc
Date: Fri May 18 12:46:24 2018
New Revision: 332757
URL: http://llvm.org/viewvc/llvm-project?rev=332757&view=rev
Log:
Support: Simplify endian stream interface. NFCI.
Provide some free functions to reduce verbosity of endian-writing
a single value, and replace the endianness template parameter with
a field.
Part of PR37466.
Differential Revision: https://reviews.llvm.org/D47032
Modified:
llvm/trunk/include/llvm/MC/MCObjectWriter.h
llvm/trunk/include/llvm/Support/EndianStream.h
llvm/trunk/include/llvm/Support/OnDiskHashTable.h
llvm/trunk/lib/MC/ELFObjectWriter.cpp
llvm/trunk/lib/MC/MCCodeView.cpp
llvm/trunk/lib/MC/MCDwarf.cpp
llvm/trunk/lib/Object/ArchiveWriter.cpp
llvm/trunk/lib/ProfileData/InstrProfWriter.cpp
llvm/trunk/lib/Target/AArch64/MCTargetDesc/AArch64MCCodeEmitter.cpp
llvm/trunk/lib/Target/AMDGPU/MCTargetDesc/R600MCCodeEmitter.cpp
llvm/trunk/lib/Target/BPF/MCTargetDesc/BPFMCCodeEmitter.cpp
llvm/trunk/lib/Target/Hexagon/MCTargetDesc/HexagonMCCodeEmitter.cpp
llvm/trunk/lib/Target/PowerPC/MCTargetDesc/PPCMCCodeEmitter.cpp
llvm/trunk/lib/Target/RISCV/MCTargetDesc/RISCVMCCodeEmitter.cpp
llvm/trunk/lib/Target/Sparc/MCTargetDesc/SparcMCCodeEmitter.cpp
llvm/trunk/lib/Target/WebAssembly/MCTargetDesc/WebAssemblyMCCodeEmitter.cpp
llvm/trunk/tools/llvm-xray/xray-converter.cpp
llvm/trunk/unittests/Support/EndianStreamTest.cpp
Modified: llvm/trunk/include/llvm/MC/MCObjectWriter.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/MC/MCObjectWriter.h?rev=332757&r1=332756&r2=332757&view=diff
==============================================================================
--- llvm/trunk/include/llvm/MC/MCObjectWriter.h (original)
+++ llvm/trunk/include/llvm/MC/MCObjectWriter.h Fri May 18 12:46:24 2018
@@ -123,27 +123,27 @@ public:
void write8(uint8_t Value) { *OS << char(Value); }
void writeLE16(uint16_t Value) {
- support::endian::Writer<support::little>(*OS).write(Value);
+ support::endian::write(*OS, Value, support::little);
}
void writeLE32(uint32_t Value) {
- support::endian::Writer<support::little>(*OS).write(Value);
+ support::endian::write(*OS, Value, support::little);
}
void writeLE64(uint64_t Value) {
- support::endian::Writer<support::little>(*OS).write(Value);
+ support::endian::write(*OS, Value, support::little);
}
void writeBE16(uint16_t Value) {
- support::endian::Writer<support::big>(*OS).write(Value);
+ support::endian::write(*OS, Value, support::big);
}
void writeBE32(uint32_t Value) {
- support::endian::Writer<support::big>(*OS).write(Value);
+ support::endian::write(*OS, Value, support::big);
}
void writeBE64(uint64_t Value) {
- support::endian::Writer<support::big>(*OS).write(Value);
+ support::endian::write(*OS, Value, support::big);
}
void write16(uint16_t Value) {
Modified: llvm/trunk/include/llvm/Support/EndianStream.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Support/EndianStream.h?rev=332757&r1=332756&r2=332757&view=diff
==============================================================================
--- llvm/trunk/include/llvm/Support/EndianStream.h (original)
+++ llvm/trunk/include/llvm/Support/EndianStream.h Fri May 18 12:46:24 2018
@@ -23,44 +23,44 @@ namespace llvm {
namespace support {
namespace endian {
-/// Adapter to write values to a stream in a particular byte order.
-template <endianness endian> struct Writer {
- raw_ostream &OS;
- Writer(raw_ostream &OS) : OS(OS) {}
- template <typename value_type> void write(ArrayRef<value_type> Vals) {
- for (value_type V : Vals)
- write(V);
- }
- template <typename value_type> void write(value_type Val) {
- Val = byte_swap<value_type, endian>(Val);
- OS.write((const char *)&Val, sizeof(value_type));
- }
-};
-template <>
-template <>
-inline void Writer<little>::write<float>(float Val) {
- write(FloatToBits(Val));
+template <typename value_type>
+inline void write(raw_ostream &os, value_type value, endianness endian) {
+ value = byte_swap<value_type>(value, endian);
+ os.write((const char *)&value, sizeof(value_type));
}
template <>
-template <>
-inline void Writer<little>::write<double>(double Val) {
- write(DoubleToBits(Val));
+inline void write<float>(raw_ostream &os, float value, endianness endian) {
+ write(os, FloatToBits(value), endian);
}
template <>
-template <>
-inline void Writer<big>::write<float>(float Val) {
- write(FloatToBits(Val));
+inline void write<double>(raw_ostream &os, double value,
+ endianness endian) {
+ write(os, DoubleToBits(value), endian);
}
-template <>
-template <>
-inline void Writer<big>::write<double>(double Val) {
- write(DoubleToBits(Val));
+template <typename value_type>
+inline void write(raw_ostream &os, ArrayRef<value_type> vals,
+ endianness endian) {
+ for (value_type v : vals)
+ write(os, v, endian);
}
+/// Adapter to write values to a stream in a particular byte order.
+struct Writer {
+ raw_ostream &OS;
+ endianness Endian;
+ Writer(raw_ostream &OS, endianness Endian) : OS(OS), Endian(Endian) {}
+ template <typename value_type> void write(ArrayRef<value_type> Val) {
+ endian::write(OS, Val, Endian);
+ }
+ template <typename value_type> void write(value_type Val) {
+ endian::write(OS, Val, Endian);
+ }
+};
+
} // end namespace endian
} // end namespace support
Modified: llvm/trunk/include/llvm/Support/OnDiskHashTable.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Support/OnDiskHashTable.h?rev=332757&r1=332756&r2=332757&view=diff
==============================================================================
--- llvm/trunk/include/llvm/Support/OnDiskHashTable.h (original)
+++ llvm/trunk/include/llvm/Support/OnDiskHashTable.h Fri May 18 12:46:24 2018
@@ -150,7 +150,7 @@ public:
/// Uses the provided Info instead of a stack allocated one.
offset_type Emit(raw_ostream &Out, Info &InfoObj) {
using namespace llvm::support;
- endian::Writer<little> LE(Out);
+ endian::Writer LE(Out, little);
// Now we're done adding entries, resize the bucket list if it's
// significantly too large. (This only happens if the number of
Modified: llvm/trunk/lib/MC/ELFObjectWriter.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/MC/ELFObjectWriter.cpp?rev=332757&r1=332756&r2=332757&view=diff
==============================================================================
--- llvm/trunk/lib/MC/ELFObjectWriter.cpp (original)
+++ llvm/trunk/lib/MC/ELFObjectWriter.cpp Fri May 18 12:46:24 2018
@@ -183,10 +183,8 @@ public:
}
template <typename T> void write(T Val) {
- if (IsLittleEndian)
- support::endian::Writer<support::little>(getStream()).write(Val);
- else
- support::endian::Writer<support::big>(getStream()).write(Val);
+ support::endian::write(getStream(), Val,
+ IsLittleEndian ? support::little : support::big);
}
void writeHeader(const MCAssembler &Asm);
Modified: llvm/trunk/lib/MC/MCCodeView.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/MC/MCCodeView.cpp?rev=332757&r1=332756&r2=332757&view=diff
==============================================================================
--- llvm/trunk/lib/MC/MCCodeView.cpp (original)
+++ llvm/trunk/lib/MC/MCCodeView.cpp Fri May 18 12:46:24 2018
@@ -632,7 +632,7 @@ void CodeViewContext::encodeDefRange(MCA
}
unsigned NumGaps = J - I - 1;
- support::endian::Writer<support::little> LEWriter(OS);
+ support::endian::Writer LEWriter(OS, support::little);
unsigned Bias = 0;
// We must split the range into chunks of MaxDefRange, this is a fundamental
Modified: llvm/trunk/lib/MC/MCDwarf.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/MC/MCDwarf.cpp?rev=332757&r1=332756&r2=332757&view=diff
==============================================================================
--- llvm/trunk/lib/MC/MCDwarf.cpp (original)
+++ llvm/trunk/lib/MC/MCDwarf.cpp Fri May 18 12:46:24 2018
@@ -1798,6 +1798,8 @@ void MCDwarfFrameEmitter::EncodeAdvanceL
// Scale the address delta by the minimum instruction length.
AddrDelta = ScaleAddrDelta(Context, AddrDelta);
+ support::endianness E =
+ Context.getAsmInfo()->isLittleEndian() ? support::little : support::big;
if (AddrDelta == 0) {
} else if (isUIntN(6, AddrDelta)) {
uint8_t Opcode = dwarf::DW_CFA_advance_loc | AddrDelta;
@@ -1807,16 +1809,10 @@ void MCDwarfFrameEmitter::EncodeAdvanceL
OS << uint8_t(AddrDelta);
} else if (isUInt<16>(AddrDelta)) {
OS << uint8_t(dwarf::DW_CFA_advance_loc2);
- if (Context.getAsmInfo()->isLittleEndian())
- support::endian::Writer<support::little>(OS).write<uint16_t>(AddrDelta);
- else
- support::endian::Writer<support::big>(OS).write<uint16_t>(AddrDelta);
+ support::endian::write<uint16_t>(OS, AddrDelta, E);
} else {
assert(isUInt<32>(AddrDelta));
OS << uint8_t(dwarf::DW_CFA_advance_loc4);
- if (Context.getAsmInfo()->isLittleEndian())
- support::endian::Writer<support::little>(OS).write<uint32_t>(AddrDelta);
- else
- support::endian::Writer<support::big>(OS).write<uint32_t>(AddrDelta);
+ support::endian::write<uint32_t>(OS, AddrDelta, E);
}
}
Modified: llvm/trunk/lib/Object/ArchiveWriter.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Object/ArchiveWriter.cpp?rev=332757&r1=332756&r2=332757&view=diff
==============================================================================
--- llvm/trunk/lib/Object/ArchiveWriter.cpp (original)
+++ llvm/trunk/lib/Object/ArchiveWriter.cpp Fri May 18 12:46:24 2018
@@ -136,10 +136,8 @@ static bool isBSDLike(object::Archive::K
template <class T>
static void print(raw_ostream &Out, object::Archive::Kind Kind, T Val) {
- if (isBSDLike(Kind))
- support::endian::Writer<support::little>(Out).write(Val);
- else
- support::endian::Writer<support::big>(Out).write(Val);
+ support::endian::write(Out, Val,
+ isBSDLike(Kind) ? support::little : support::big);
}
static void printRestOfMemberHeader(
Modified: llvm/trunk/lib/ProfileData/InstrProfWriter.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/ProfileData/InstrProfWriter.cpp?rev=332757&r1=332756&r2=332757&view=diff
==============================================================================
--- llvm/trunk/lib/ProfileData/InstrProfWriter.cpp (original)
+++ llvm/trunk/lib/ProfileData/InstrProfWriter.cpp Fri May 18 12:46:24 2018
@@ -48,9 +48,10 @@ namespace llvm {
// back patching.
class ProfOStream {
public:
- ProfOStream(raw_fd_ostream &FD) : IsFDOStream(true), OS(FD), LE(FD) {}
+ ProfOStream(raw_fd_ostream &FD)
+ : IsFDOStream(true), OS(FD), LE(FD, support::little) {}
ProfOStream(raw_string_ostream &STR)
- : IsFDOStream(false), OS(STR), LE(STR) {}
+ : IsFDOStream(false), OS(STR), LE(STR, support::little) {}
uint64_t tell() { return OS.tell(); }
void write(uint64_t V) { LE.write<uint64_t>(V); }
@@ -85,7 +86,7 @@ public:
// true. Otherwise, \c OS will be an raw_string_ostream.
bool IsFDOStream;
raw_ostream &OS;
- support::endian::Writer<support::little> LE;
+ support::endian::Writer LE;
};
class InstrProfRecordWriterTrait {
@@ -112,7 +113,7 @@ public:
EmitKeyDataLength(raw_ostream &Out, key_type_ref K, data_type_ref V) {
using namespace support;
- endian::Writer<little> LE(Out);
+ endian::Writer LE(Out, little);
offset_type N = K.size();
LE.write<offset_type>(N);
@@ -139,7 +140,7 @@ public:
void EmitData(raw_ostream &Out, key_type_ref, data_type_ref V, offset_type) {
using namespace support;
- endian::Writer<little> LE(Out);
+ endian::Writer LE(Out, little);
for (const auto &ProfileData : *V) {
const InstrProfRecord &ProfRecord = ProfileData.second;
SummaryBuilder->addRecord(ProfRecord);
Modified: llvm/trunk/lib/Target/AArch64/MCTargetDesc/AArch64MCCodeEmitter.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/AArch64/MCTargetDesc/AArch64MCCodeEmitter.cpp?rev=332757&r1=332756&r2=332757&view=diff
==============================================================================
--- llvm/trunk/lib/Target/AArch64/MCTargetDesc/AArch64MCCodeEmitter.cpp (original)
+++ llvm/trunk/lib/Target/AArch64/MCTargetDesc/AArch64MCCodeEmitter.cpp Fri May 18 12:46:24 2018
@@ -572,7 +572,7 @@ void AArch64MCCodeEmitter::encodeInstruc
}
uint64_t Binary = getBinaryCodeForInstr(MI, Fixups, STI);
- support::endian::Writer<support::little>(OS).write<uint32_t>(Binary);
+ support::endian::write<uint32_t>(OS, Binary, support::little);
++MCNumEmitted; // Keep track of the # of mi's emitted.
}
Modified: llvm/trunk/lib/Target/AMDGPU/MCTargetDesc/R600MCCodeEmitter.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/AMDGPU/MCTargetDesc/R600MCCodeEmitter.cpp?rev=332757&r1=332756&r2=332757&view=diff
==============================================================================
--- llvm/trunk/lib/Target/AMDGPU/MCTargetDesc/R600MCCodeEmitter.cpp (original)
+++ llvm/trunk/lib/Target/AMDGPU/MCTargetDesc/R600MCCodeEmitter.cpp Fri May 18 12:46:24 2018
@@ -148,11 +148,11 @@ void R600MCCodeEmitter::encodeInstructio
}
void R600MCCodeEmitter::Emit(uint32_t Value, raw_ostream &OS) const {
- support::endian::Writer<support::little>(OS).write(Value);
+ support::endian::write(OS, Value, support::little);
}
void R600MCCodeEmitter::Emit(uint64_t Value, raw_ostream &OS) const {
- support::endian::Writer<support::little>(OS).write(Value);
+ support::endian::write(OS, Value, support::little);
}
unsigned R600MCCodeEmitter::getHWReg(unsigned RegNo) const {
Modified: llvm/trunk/lib/Target/BPF/MCTargetDesc/BPFMCCodeEmitter.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/BPF/MCTargetDesc/BPFMCCodeEmitter.cpp?rev=332757&r1=332756&r2=332757&view=diff
==============================================================================
--- llvm/trunk/lib/Target/BPF/MCTargetDesc/BPFMCCodeEmitter.cpp (original)
+++ llvm/trunk/lib/Target/BPF/MCTargetDesc/BPFMCCodeEmitter.cpp Fri May 18 12:46:24 2018
@@ -122,44 +122,35 @@ void BPFMCCodeEmitter::encodeInstruction
computeAvailableFeatures(STI.getFeatureBits()));
unsigned Opcode = MI.getOpcode();
- support::endian::Writer<support::little> LE(OS);
- support::endian::Writer<support::big> BE(OS);
+ support::endian::Writer OSE(OS,
+ IsLittleEndian ? support::little : support::big);
if (Opcode == BPF::LD_imm64 || Opcode == BPF::LD_pseudo) {
uint64_t Value = getBinaryCodeForInstr(MI, Fixups, STI);
- LE.write<uint8_t>(Value >> 56);
+ OS << char(Value >> 56);
if (IsLittleEndian)
- LE.write<uint8_t>((Value >> 48) & 0xff);
+ OS << char((Value >> 48) & 0xff);
else
- LE.write<uint8_t>(SwapBits((Value >> 48) & 0xff));
- LE.write<uint16_t>(0);
- if (IsLittleEndian)
- LE.write<uint32_t>(Value & 0xffffFFFF);
- else
- BE.write<uint32_t>(Value & 0xffffFFFF);
+ OS << char(SwapBits((Value >> 48) & 0xff));
+ OSE.write<uint16_t>(0);
+ OSE.write<uint32_t>(Value & 0xffffFFFF);
const MCOperand &MO = MI.getOperand(1);
uint64_t Imm = MO.isImm() ? MO.getImm() : 0;
- LE.write<uint8_t>(0);
- LE.write<uint8_t>(0);
- LE.write<uint16_t>(0);
- if (IsLittleEndian)
- LE.write<uint32_t>(Imm >> 32);
- else
- BE.write<uint32_t>(Imm >> 32);
+ OSE.write<uint8_t>(0);
+ OSE.write<uint8_t>(0);
+ OSE.write<uint16_t>(0);
+ OSE.write<uint32_t>(Imm >> 32);
} else {
// Get instruction encoding and emit it
uint64_t Value = getBinaryCodeForInstr(MI, Fixups, STI);
- LE.write<uint8_t>(Value >> 56);
- if (IsLittleEndian) {
- LE.write<uint8_t>((Value >> 48) & 0xff);
- LE.write<uint16_t>((Value >> 32) & 0xffff);
- LE.write<uint32_t>(Value & 0xffffFFFF);
- } else {
- LE.write<uint8_t>(SwapBits((Value >> 48) & 0xff));
- BE.write<uint16_t>((Value >> 32) & 0xffff);
- BE.write<uint32_t>(Value & 0xffffFFFF);
- }
+ OS << char(Value >> 56);
+ if (IsLittleEndian)
+ OS << char((Value >> 48) & 0xff);
+ else
+ OS << char(SwapBits((Value >> 48) & 0xff));
+ OSE.write<uint16_t>((Value >> 32) & 0xffff);
+ OSE.write<uint32_t>(Value & 0xffffFFFF);
}
}
Modified: llvm/trunk/lib/Target/Hexagon/MCTargetDesc/HexagonMCCodeEmitter.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/Hexagon/MCTargetDesc/HexagonMCCodeEmitter.cpp?rev=332757&r1=332756&r2=332757&view=diff
==============================================================================
--- llvm/trunk/lib/Target/Hexagon/MCTargetDesc/HexagonMCCodeEmitter.cpp (original)
+++ llvm/trunk/lib/Target/Hexagon/MCTargetDesc/HexagonMCCodeEmitter.cpp Fri May 18 12:46:24 2018
@@ -452,7 +452,7 @@ void HexagonMCCodeEmitter::EncodeSingleI
Binary |= SubBits0 | (SubBits1 << 16);
}
- support::endian::Writer<support::little>(OS).write<uint32_t>(Binary);
+ support::endian::write<uint32_t>(OS, Binary, support::little);
++MCNumEmitted;
}
Modified: llvm/trunk/lib/Target/PowerPC/MCTargetDesc/PPCMCCodeEmitter.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/PowerPC/MCTargetDesc/PPCMCCodeEmitter.cpp?rev=332757&r1=332756&r2=332757&view=diff
==============================================================================
--- llvm/trunk/lib/Target/PowerPC/MCTargetDesc/PPCMCCodeEmitter.cpp (original)
+++ llvm/trunk/lib/Target/PowerPC/MCTargetDesc/PPCMCCodeEmitter.cpp Fri May 18 12:46:24 2018
@@ -122,25 +122,18 @@ public:
// Output the constant in big/little endian byte order.
unsigned Size = Desc.getSize();
+ support::endianness E = IsLittleEndian ? support::little : support::big;
switch (Size) {
case 0:
break;
case 4:
- if (IsLittleEndian) {
- support::endian::Writer<support::little>(OS).write<uint32_t>(Bits);
- } else {
- support::endian::Writer<support::big>(OS).write<uint32_t>(Bits);
- }
+ support::endian::write<uint32_t>(OS, Bits, E);
break;
case 8:
// If we emit a pair of instructions, the first one is
// always in the top 32 bits, even on little-endian.
- if (IsLittleEndian) {
- uint64_t Swapped = (Bits << 32) | (Bits >> 32);
- support::endian::Writer<support::little>(OS).write<uint64_t>(Swapped);
- } else {
- support::endian::Writer<support::big>(OS).write<uint64_t>(Bits);
- }
+ support::endian::write<uint32_t>(OS, Bits >> 32, E);
+ support::endian::write<uint32_t>(OS, Bits, E);
break;
default:
llvm_unreachable("Invalid instruction size");
Modified: llvm/trunk/lib/Target/RISCV/MCTargetDesc/RISCVMCCodeEmitter.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/RISCV/MCTargetDesc/RISCVMCCodeEmitter.cpp?rev=332757&r1=332756&r2=332757&view=diff
==============================================================================
--- llvm/trunk/lib/Target/RISCV/MCTargetDesc/RISCVMCCodeEmitter.cpp (original)
+++ llvm/trunk/lib/Target/RISCV/MCTargetDesc/RISCVMCCodeEmitter.cpp Fri May 18 12:46:24 2018
@@ -113,12 +113,12 @@ void RISCVMCCodeEmitter::expandFunctionC
.addReg(Ra)
.addOperand(MCOperand::createExpr(CallExpr));
Binary = getBinaryCodeForInstr(TmpInst, Fixups, STI);
- support::endian::Writer<support::little>(OS).write(Binary);
+ support::endian::write(OS, Binary, support::little);
// Emit JALR Ra, Ra, 0
TmpInst = MCInstBuilder(RISCV::JALR).addReg(Ra).addReg(Ra).addImm(0);
Binary = getBinaryCodeForInstr(TmpInst, Fixups, STI);
- support::endian::Writer<support::little>(OS).write(Binary);
+ support::endian::write(OS, Binary, support::little);
}
void RISCVMCCodeEmitter::encodeInstruction(const MCInst &MI, raw_ostream &OS,
@@ -140,12 +140,12 @@ void RISCVMCCodeEmitter::encodeInstructi
llvm_unreachable("Unhandled encodeInstruction length!");
case 2: {
uint16_t Bits = getBinaryCodeForInstr(MI, Fixups, STI);
- support::endian::Writer<support::little>(OS).write<uint16_t>(Bits);
+ support::endian::write<uint16_t>(OS, Bits, support::little);
break;
}
case 4: {
uint32_t Bits = getBinaryCodeForInstr(MI, Fixups, STI);
- support::endian::Writer<support::little>(OS).write(Bits);
+ support::endian::write(OS, Bits, support::little);
break;
}
}
Modified: llvm/trunk/lib/Target/Sparc/MCTargetDesc/SparcMCCodeEmitter.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/Sparc/MCTargetDesc/SparcMCCodeEmitter.cpp?rev=332757&r1=332756&r2=332757&view=diff
==============================================================================
--- llvm/trunk/lib/Target/Sparc/MCTargetDesc/SparcMCCodeEmitter.cpp (original)
+++ llvm/trunk/lib/Target/Sparc/MCTargetDesc/SparcMCCodeEmitter.cpp Fri May 18 12:46:24 2018
@@ -98,14 +98,9 @@ void SparcMCCodeEmitter::encodeInstructi
computeAvailableFeatures(STI.getFeatureBits()));
unsigned Bits = getBinaryCodeForInstr(MI, Fixups, STI);
-
- if (Ctx.getAsmInfo()->isLittleEndian()) {
- // Output the bits in little-endian byte order.
- support::endian::Writer<support::little>(OS).write<uint32_t>(Bits);
- } else {
- // Output the bits in big-endian byte order.
- support::endian::Writer<support::big>(OS).write<uint32_t>(Bits);
- }
+ support::endian::write(OS, Bits,
+ Ctx.getAsmInfo()->isLittleEndian() ? support::little
+ : support::big);
unsigned tlsOpNo = 0;
switch (MI.getOpcode()) {
default: break;
Modified: llvm/trunk/lib/Target/WebAssembly/MCTargetDesc/WebAssemblyMCCodeEmitter.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/WebAssembly/MCTargetDesc/WebAssemblyMCCodeEmitter.cpp?rev=332757&r1=332756&r2=332757&view=diff
==============================================================================
--- llvm/trunk/lib/Target/WebAssembly/MCTargetDesc/WebAssemblyMCCodeEmitter.cpp (original)
+++ llvm/trunk/lib/Target/WebAssembly/MCTargetDesc/WebAssemblyMCCodeEmitter.cpp Fri May 18 12:46:24 2018
@@ -118,11 +118,11 @@ void WebAssemblyMCCodeEmitter::encodeIns
// TODO: MC converts all floating point immediate operands to double.
// This is fine for numeric values, but may cause NaNs to change bits.
float f = float(MO.getFPImm());
- support::endian::Writer<support::little>(OS).write<float>(f);
+ support::endian::write<float>(OS, f, support::little);
} else {
assert(Info.OperandType == WebAssembly::OPERAND_F64IMM);
double d = MO.getFPImm();
- support::endian::Writer<support::little>(OS).write<double>(d);
+ support::endian::write<double>(OS, d, support::little);
}
} else if (MO.isExpr()) {
const MCOperandInfo &Info = Desc.OpInfo[i];
Modified: llvm/trunk/tools/llvm-xray/xray-converter.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-xray/xray-converter.cpp?rev=332757&r1=332756&r2=332757&view=diff
==============================================================================
--- llvm/trunk/tools/llvm-xray/xray-converter.cpp (original)
+++ llvm/trunk/tools/llvm-xray/xray-converter.cpp Fri May 18 12:46:24 2018
@@ -100,7 +100,7 @@ void TraceConverter::exportAsYAML(const
void TraceConverter::exportAsRAWv1(const Trace &Records, raw_ostream &OS) {
// First write out the file header, in the correct endian-appropriate format
// (XRay assumes currently little endian).
- support::endian::Writer<support::endianness::little> Writer(OS);
+ support::endian::Writer Writer(OS, support::endianness::little);
const auto &FH = Records.getFileHeader();
Writer.write(FH.Version);
Writer.write(FH.Type);
Modified: llvm/trunk/unittests/Support/EndianStreamTest.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/unittests/Support/EndianStreamTest.cpp?rev=332757&r1=332756&r2=332757&view=diff
==============================================================================
--- llvm/trunk/unittests/Support/EndianStreamTest.cpp (original)
+++ llvm/trunk/unittests/Support/EndianStreamTest.cpp Fri May 18 12:46:24 2018
@@ -21,7 +21,7 @@ TEST(EndianStream, WriteInt32LE) {
{
raw_svector_ostream OS(data);
- endian::Writer<little> LE(OS);
+ endian::Writer LE(OS, little);
LE.write(static_cast<int32_t>(-1362446643));
}
@@ -36,7 +36,7 @@ TEST(EndianStream, WriteInt32BE) {
{
raw_svector_ostream OS(data);
- endian::Writer<big> BE(OS);
+ endian::Writer BE(OS, big);
BE.write(static_cast<int32_t>(-1362446643));
}
@@ -52,7 +52,7 @@ TEST(EndianStream, WriteFloatLE) {
{
raw_svector_ostream OS(data);
- endian::Writer<little> LE(OS);
+ endian::Writer LE(OS, little);
LE.write(12345.0f);
}
@@ -67,7 +67,7 @@ TEST(EndianStream, WriteFloatBE) {
{
raw_svector_ostream OS(data);
- endian::Writer<big> BE(OS);
+ endian::Writer BE(OS, big);
BE.write(12345.0f);
}
@@ -82,7 +82,7 @@ TEST(EndianStream, WriteInt64LE) {
{
raw_svector_ostream OS(data);
- endian::Writer<little> LE(OS);
+ endian::Writer LE(OS, little);
LE.write(static_cast<int64_t>(-136244664332342323));
}
@@ -101,7 +101,7 @@ TEST(EndianStream, WriteInt64BE) {
{
raw_svector_ostream OS(data);
- endian::Writer<big> BE(OS);
+ endian::Writer BE(OS, big);
BE.write(static_cast<int64_t>(-136244664332342323));
}
@@ -120,7 +120,7 @@ TEST(EndianStream, WriteDoubleLE) {
{
raw_svector_ostream OS(data);
- endian::Writer<little> LE(OS);
+ endian::Writer LE(OS, little);
LE.write(-2349214918.58107);
}
@@ -139,7 +139,7 @@ TEST(EndianStream, WriteDoubleBE) {
{
raw_svector_ostream OS(data);
- endian::Writer<big> BE(OS);
+ endian::Writer BE(OS, big);
BE.write(-2349214918.58107);
}
@@ -158,7 +158,7 @@ TEST(EndianStream, WriteArrayLE) {
{
raw_svector_ostream OS(Data);
- endian::Writer<little> LE(OS);
+ endian::Writer LE(OS, little);
LE.write<uint16_t>({0x1234, 0x5678});
}
@@ -173,7 +173,7 @@ TEST(EndianStream, WriteVectorLE) {
{
raw_svector_ostream OS(Data);
- endian::Writer<little> LE(OS);
+ endian::Writer LE(OS, little);
std::vector<uint16_t> Vec{0x1234, 0x5678};
LE.write<uint16_t>(Vec);
}
@@ -189,7 +189,7 @@ TEST(EndianStream, WriteFloatArrayLE) {
{
raw_svector_ostream OS(Data);
- endian::Writer<little> LE(OS);
+ endian::Writer LE(OS, little);
LE.write<float>({12345.0f, 12346.0f});
}
More information about the llvm-commits
mailing list