148 changes: 72 additions & 76 deletions llvm/lib/Target/AMDGPU/AMDGPUHSAMetadataStreamer.cpp

Large diffs are not rendered by default.

27 changes: 12 additions & 15 deletions llvm/lib/Target/AMDGPU/AMDGPUHSAMetadataStreamer.h
Original file line number Diff line number Diff line change
Expand Up @@ -60,8 +60,7 @@ class MetadataStreamer {
msgpack::ArrayDocNode Args) = 0;
};

// TODO: Rename MetadataStreamerV3 -> MetadataStreamerMsgPackV3.
class MetadataStreamerV3 : public MetadataStreamer {
class MetadataStreamerMsgPackV3 : public MetadataStreamer {
protected:
std::unique_ptr<msgpack::Document> HSAMetadataDoc =
std::make_unique<msgpack::Document>();
Expand Down Expand Up @@ -116,8 +115,8 @@ class MetadataStreamerV3 : public MetadataStreamer {
}

public:
MetadataStreamerV3() = default;
~MetadataStreamerV3() = default;
MetadataStreamerMsgPackV3() = default;
~MetadataStreamerMsgPackV3() = default;

bool emitTo(AMDGPUTargetStreamer &TargetStreamer) override;

Expand All @@ -130,34 +129,32 @@ class MetadataStreamerV3 : public MetadataStreamer {
const SIProgramInfo &ProgramInfo) override;
};

// TODO: Rename MetadataStreamerV4 -> MetadataStreamerMsgPackV4.
class MetadataStreamerV4 : public MetadataStreamerV3 {
class MetadataStreamerMsgPackV4 : public MetadataStreamerMsgPackV3 {
protected:
void emitVersion() override;
void emitTargetID(const IsaInfo::AMDGPUTargetID &TargetID);

public:
MetadataStreamerV4() = default;
~MetadataStreamerV4() = default;
MetadataStreamerMsgPackV4() = default;
~MetadataStreamerMsgPackV4() = default;

void begin(const Module &Mod,
const IsaInfo::AMDGPUTargetID &TargetID) override;
};

// TODO: Rename MetadataStreamerV5 -> MetadataStreamerMsgPackV5.
class MetadataStreamerV5 final : public MetadataStreamerV4 {
class MetadataStreamerMsgPackV5 final : public MetadataStreamerMsgPackV4 {
protected:
void emitVersion() override;
void emitHiddenKernelArgs(const MachineFunction &MF, unsigned &Offset,
msgpack::ArrayDocNode Args) override;

public:
MetadataStreamerV5() = default;
~MetadataStreamerV5() = default;
MetadataStreamerMsgPackV5() = default;
~MetadataStreamerMsgPackV5() = default;
};

// TODO: Rename MetadataStreamerV2 -> MetadataStreamerYamlV2.
class MetadataStreamerV2 final : public MetadataStreamer {
class MetadataStreamerYamlV2 final : public MetadataStreamer {
private:
Metadata HSAMetadata;

Expand Down Expand Up @@ -213,8 +210,8 @@ class MetadataStreamerV2 final : public MetadataStreamer {
}

public:
MetadataStreamerV2() = default;
~MetadataStreamerV2() = default;
MetadataStreamerYamlV2() = default;
~MetadataStreamerYamlV2() = default;

bool emitTo(AMDGPUTargetStreamer &TargetStreamer) override;

Expand Down
27 changes: 27 additions & 0 deletions llvm/unittests/Support/Path.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1463,6 +1463,33 @@ TEST_F(FileSystemTest, FileMapping) {
ASSERT_NO_ERROR(fs::remove(TempPath));
}

TEST_F(FileSystemTest, FileMappingSync) {
// Create a temp file.
int FD;
SmallString<64> TempPath;
ASSERT_NO_ERROR(fs::createTemporaryFile("prefix", "temp", FD, TempPath));
StringRef Content("hello there");
ASSERT_NO_ERROR(fs::resize_file_before_mapping_readwrite(FD, Content.size()));

{
// Map in the file and write some content.
std::error_code EC;
fs::mapped_file_region mfr(fs::convertFDToNativeFile(FD),
fs::mapped_file_region::readwrite,
Content.size(), 0, EC);
ASSERT_NO_ERROR(EC);
ASSERT_EQ(close(FD), 0);
std::copy(Content.begin(), Content.end(), mfr.data());

// Synchronize and check the contents before unmapping.
mfr.sync();
auto Buffer = MemoryBuffer::getFile(TempPath);
ASSERT_TRUE((bool)Buffer);
ASSERT_EQ(Content, Buffer->get()->getBuffer());
}
ASSERT_NO_ERROR(fs::remove(TempPath));
}

TEST(Support, NormalizePath) {
// Input, Expected Win, Expected Posix
using TestTuple = std::tuple<const char *, const char *, const char *>;
Expand Down