diff options
author | Miloš Stojanović <Milos.Stojanovic@rt-rk.com> | 2020-01-17 14:28:54 +0100 |
---|---|---|
committer | Miloš Stojanović <Milos.Stojanovic@rt-rk.com> | 2020-01-20 16:19:13 +0100 |
commit | 24b7b99b7d68e1a234078eff639ccfbb7661eee5 (patch) | |
tree | 6682c99976c3a53d9a7090911fd464df2a538b07 /llvm/unittests | |
parent | 6ccebe004446b2b7362f96dd5cf7cbc2ed3facde (diff) | |
download | llvm-24b7b99b7d68e1a234078eff639ccfbb7661eee5.zip llvm-24b7b99b7d68e1a234078eff639ccfbb7661eee5.tar.gz llvm-24b7b99b7d68e1a234078eff639ccfbb7661eee5.tar.bz2 |
[llvm-exegesis][NFC] Disassociate snippet generators from benchmark runners
The addition of `inverse_throughput` mode highlighted the disjointedness
of snippet generators and benchmark runners because it used the
`UopsSnippetGenerator` with the `LatencyBenchmarkRunner`.
To keep the code consistent tie the snippet generators to
parallelization/serialization rather than their benchmark runners.
Renaming `LatencySnippetGenerator` -> `SerialSnippetGenerator`.
Renaming `UopsSnippetGenerator` -> `ParallelSnippetGenerator`.
Differential Revision: https://reviews.llvm.org/D72928
Diffstat (limited to 'llvm/unittests')
4 files changed, 31 insertions, 33 deletions
diff --git a/llvm/unittests/tools/llvm-exegesis/Mips/SnippetGeneratorTest.cpp b/llvm/unittests/tools/llvm-exegesis/Mips/SnippetGeneratorTest.cpp index 2ccdee36..9cb2e3b 100644 --- a/llvm/unittests/tools/llvm-exegesis/Mips/SnippetGeneratorTest.cpp +++ b/llvm/unittests/tools/llvm-exegesis/Mips/SnippetGeneratorTest.cpp @@ -7,13 +7,13 @@ //===----------------------------------------------------------------------===// #include "../Common/AssemblerUtils.h" -#include "Latency.h" #include "LlvmState.h" #include "MCInstrDescView.h" #include "MipsInstrInfo.h" +#include "ParallelSnippetGenerator.h" #include "RegisterAliasing.h" +#include "SerialSnippetGenerator.h" #include "TestBase.h" -#include "Uops.h" #include <unordered_set> @@ -48,12 +48,12 @@ protected: SnippetGeneratorT Generator; }; -using LatencySnippetGeneratorTest = - SnippetGeneratorTest<LatencySnippetGenerator>; +using SerialSnippetGeneratorTest = SnippetGeneratorTest<SerialSnippetGenerator>; -using UopsSnippetGeneratorTest = SnippetGeneratorTest<UopsSnippetGenerator>; +using ParallelSnippetGeneratorTest = + SnippetGeneratorTest<ParallelSnippetGenerator>; -TEST_F(LatencySnippetGeneratorTest, ImplicitSelfDependencyThroughExplicitRegs) { +TEST_F(SerialSnippetGeneratorTest, ImplicitSelfDependencyThroughExplicitRegs) { // - ADD // - Op0 Explicit Def RegClass(GPR32) // - Op1 Explicit Use RegClass(GPR32) @@ -77,8 +77,8 @@ TEST_F(LatencySnippetGeneratorTest, ImplicitSelfDependencyThroughExplicitRegs) { << "Op0 is either set to Op1 or to Op2"; } -TEST_F(LatencySnippetGeneratorTest, - ImplicitSelfDependencyThroughExplicitRegsForbidAll) { +TEST_F(SerialSnippetGeneratorTest, + ImplicitSelfDependencyThroughExplicitRegsForbidAll) { // - XOR // - Op0 Explicit Def RegClass(GPR32) // - Op1 Explicit Use RegClass(GPR32) @@ -96,7 +96,7 @@ TEST_F(LatencySnippetGeneratorTest, consumeError(std::move(Error)); } -TEST_F(UopsSnippetGeneratorTest, MemoryUse) { +TEST_F(ParallelSnippetGeneratorTest, MemoryUse) { // LB reads from memory. // - LB // - Op0 Explicit Def RegClass(GPR32) @@ -110,10 +110,11 @@ TEST_F(UopsSnippetGeneratorTest, MemoryUse) { const auto CodeTemplates = checkAndGetCodeTemplates(Opcode); ASSERT_THAT(CodeTemplates, SizeIs(1)); const auto &CT = CodeTemplates[0]; - EXPECT_THAT(CT.Info, HasSubstr("instruction is parallel, repeating a random one.")); + EXPECT_THAT(CT.Info, + HasSubstr("instruction is parallel, repeating a random one.")); EXPECT_THAT(CT.Execution, ExecutionMode::UNKNOWN); ASSERT_THAT(CT.Instructions, - SizeIs(UopsSnippetGenerator::kMinNumDifferentAddresses)); + SizeIs(ParallelSnippetGenerator::kMinNumDifferentAddresses)); const InstructionTemplate &IT = CT.Instructions[0]; EXPECT_THAT(IT.getOpcode(), Opcode); ASSERT_THAT(IT.getVariableValues(), SizeIs(3)); diff --git a/llvm/unittests/tools/llvm-exegesis/X86/SnippetGeneratorTest.cpp b/llvm/unittests/tools/llvm-exegesis/X86/SnippetGeneratorTest.cpp index 0f898d9..5ad4992 100644 --- a/llvm/unittests/tools/llvm-exegesis/X86/SnippetGeneratorTest.cpp +++ b/llvm/unittests/tools/llvm-exegesis/X86/SnippetGeneratorTest.cpp @@ -7,12 +7,12 @@ //===----------------------------------------------------------------------===// #include "../Common/AssemblerUtils.h" -#include "Latency.h" #include "LlvmState.h" #include "MCInstrDescView.h" +#include "ParallelSnippetGenerator.h" #include "RegisterAliasing.h" +#include "SerialSnippetGenerator.h" #include "TestBase.h" -#include "Uops.h" #include "X86InstrInfo.h" #include <unordered_set> @@ -59,12 +59,12 @@ protected: SnippetGeneratorT Generator; }; -using LatencySnippetGeneratorTest = - SnippetGeneratorTest<LatencySnippetGenerator>; +using SerialSnippetGeneratorTest = SnippetGeneratorTest<SerialSnippetGenerator>; -using UopsSnippetGeneratorTest = SnippetGeneratorTest<UopsSnippetGenerator>; +using ParallelSnippetGeneratorTest = + SnippetGeneratorTest<ParallelSnippetGenerator>; -TEST_F(LatencySnippetGeneratorTest, ImplicitSelfDependencyThroughImplicitReg) { +TEST_F(SerialSnippetGeneratorTest, ImplicitSelfDependencyThroughImplicitReg) { // - ADC16i16 // - Op0 Explicit Use Immediate // - Op1 Implicit Def Reg(AX) @@ -90,7 +90,7 @@ TEST_F(LatencySnippetGeneratorTest, ImplicitSelfDependencyThroughImplicitReg) { EXPECT_THAT(IT.getVariableValues()[0], IsInvalid()) << "Immediate is not set"; } -TEST_F(LatencySnippetGeneratorTest, ImplicitSelfDependencyThroughTiedRegs) { +TEST_F(SerialSnippetGeneratorTest, ImplicitSelfDependencyThroughTiedRegs) { // - ADD16ri // - Op0 Explicit Def RegClass(GR16) // - Op1 Explicit Use RegClass(GR16) TiedToOp0 @@ -114,7 +114,7 @@ TEST_F(LatencySnippetGeneratorTest, ImplicitSelfDependencyThroughTiedRegs) { EXPECT_THAT(IT.getVariableValues()[1], IsInvalid()) << "Operand 2 is not set"; } -TEST_F(LatencySnippetGeneratorTest, ImplicitSelfDependencyThroughExplicitRegs) { +TEST_F(SerialSnippetGeneratorTest, ImplicitSelfDependencyThroughExplicitRegs) { // - VXORPSrr // - Op0 Explicit Def RegClass(VR128) // - Op1 Explicit Use RegClass(VR128) @@ -138,7 +138,7 @@ TEST_F(LatencySnippetGeneratorTest, ImplicitSelfDependencyThroughExplicitRegs) { << "Op0 is either set to Op1 or to Op2"; } -TEST_F(LatencySnippetGeneratorTest, +TEST_F(SerialSnippetGeneratorTest, ImplicitSelfDependencyThroughExplicitRegsForbidAll) { // - VXORPSrr // - Op0 Explicit Def RegClass(VR128) @@ -158,7 +158,7 @@ TEST_F(LatencySnippetGeneratorTest, consumeError(std::move(Error)); } -TEST_F(LatencySnippetGeneratorTest, DependencyThroughOtherOpcode) { +TEST_F(SerialSnippetGeneratorTest, DependencyThroughOtherOpcode) { // - CMP64rr // - Op0 Explicit Use RegClass(GR64) // - Op1 Explicit Use RegClass(GR64) @@ -182,7 +182,7 @@ TEST_F(LatencySnippetGeneratorTest, DependencyThroughOtherOpcode) { } } -TEST_F(LatencySnippetGeneratorTest, LAHF) { +TEST_F(SerialSnippetGeneratorTest, LAHF) { // - LAHF // - Op0 Implicit Def Reg(AH) // - Op1 Implicit Use Reg(EFLAGS) @@ -198,7 +198,7 @@ TEST_F(LatencySnippetGeneratorTest, LAHF) { } } -TEST_F(UopsSnippetGeneratorTest, ParallelInstruction) { +TEST_F(ParallelSnippetGeneratorTest, ParallelInstruction) { // - BNDCL32rr // - Op0 Explicit Use RegClass(BNDR) // - Op1 Explicit Use RegClass(GR32) @@ -218,7 +218,7 @@ TEST_F(UopsSnippetGeneratorTest, ParallelInstruction) { EXPECT_THAT(IT.getVariableValues()[1], IsInvalid()); } -TEST_F(UopsSnippetGeneratorTest, SerialInstruction) { +TEST_F(ParallelSnippetGeneratorTest, SerialInstruction) { // - CDQ // - Op0 Implicit Def Reg(EAX) // - Op1 Implicit Def Reg(EDX) @@ -237,7 +237,7 @@ TEST_F(UopsSnippetGeneratorTest, SerialInstruction) { ASSERT_THAT(IT.getVariableValues(), SizeIs(0)); } -TEST_F(UopsSnippetGeneratorTest, StaticRenaming) { +TEST_F(ParallelSnippetGeneratorTest, StaticRenaming) { // CMOV32rr has tied variables, we enumerate the possible values to execute // as many in parallel as possible. @@ -268,7 +268,7 @@ TEST_F(UopsSnippetGeneratorTest, StaticRenaming) { << "Each instruction writes to a different register"; } -TEST_F(UopsSnippetGeneratorTest, NoTiedVariables) { +TEST_F(ParallelSnippetGeneratorTest, NoTiedVariables) { // CMOV_GR32 has no tied variables, we make sure def and use are different // from each other. @@ -302,7 +302,7 @@ TEST_F(UopsSnippetGeneratorTest, NoTiedVariables) { EXPECT_THAT(IT.getVariableValues()[3], IsInvalid()); } -TEST_F(UopsSnippetGeneratorTest, MemoryUse) { +TEST_F(ParallelSnippetGeneratorTest, MemoryUse) { // Mov32rm reads from memory. // - MOV32rm // - Op0 Explicit Def RegClass(GR32) @@ -326,7 +326,7 @@ TEST_F(UopsSnippetGeneratorTest, MemoryUse) { EXPECT_THAT(CT.Info, HasSubstr("no tied variables")); EXPECT_THAT(CT.Execution, ExecutionMode::UNKNOWN); ASSERT_THAT(CT.Instructions, - SizeIs(UopsSnippetGenerator::kMinNumDifferentAddresses)); + SizeIs(ParallelSnippetGenerator::kMinNumDifferentAddresses)); const InstructionTemplate &IT = CT.Instructions[0]; EXPECT_THAT(IT.getOpcode(), Opcode); ASSERT_THAT(IT.getVariableValues(), SizeIs(6)); diff --git a/llvm/unittests/tools/llvm-exegesis/X86/SnippetRepetitorTest.cpp b/llvm/unittests/tools/llvm-exegesis/X86/SnippetRepetitorTest.cpp index 562fd05..298a54a 100644 --- a/llvm/unittests/tools/llvm-exegesis/X86/SnippetRepetitorTest.cpp +++ b/llvm/unittests/tools/llvm-exegesis/X86/SnippetRepetitorTest.cpp @@ -7,12 +7,10 @@ //===----------------------------------------------------------------------===// #include "../Common/AssemblerUtils.h" -#include "Latency.h" #include "LlvmState.h" #include "MCInstrDescView.h" #include "RegisterAliasing.h" #include "TestBase.h" -#include "Uops.h" #include "X86InstrInfo.h" #include "llvm/CodeGen/MachineBasicBlock.h" @@ -34,8 +32,7 @@ protected: void SetUp() { TM = State.createTargetMachine(); Context = std::make_unique<LLVMContext>(); - Mod = - std::make_unique<Module>("X86SnippetRepetitorTest", *Context); + Mod = std::make_unique<Module>("X86SnippetRepetitorTest", *Context); Mod->setDataLayout(TM->createDataLayout()); MMI = std::make_unique<MachineModuleInfo>(TM.get()); MF = &createVoidVoidPtrMachineFunction("TestFn", Mod.get(), MMI.get()); diff --git a/llvm/unittests/tools/llvm-exegesis/X86/TestBase.h b/llvm/unittests/tools/llvm-exegesis/X86/TestBase.h index c60cd76..a7e542a 100644 --- a/llvm/unittests/tools/llvm-exegesis/X86/TestBase.h +++ b/llvm/unittests/tools/llvm-exegesis/X86/TestBase.h @@ -1,4 +1,4 @@ -//===-- TestBase.cpp --------------------------------------------*- C++ -*-===// +//===-- TestBase.h ----------------------------------------------*- C++ -*-===// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. |