[llvm] 131f7ba - [llvm-exegesis] Add unit test in preparation for DD109275
Clement Courbet via llvm-commits
llvm-commits at lists.llvm.org
Tue Sep 7 00:07:07 PDT 2021
Author: Clement Courbet
Date: 2021-09-07T09:06:49+02:00
New Revision: 131f7bac63b8cc1700bbae908bdac60f438e69d1
URL: https://github.com/llvm/llvm-project/commit/131f7bac63b8cc1700bbae908bdac60f438e69d1
DIFF: https://github.com/llvm/llvm-project/commit/131f7bac63b8cc1700bbae908bdac60f438e69d1.diff
LOG: [llvm-exegesis] Add unit test in preparation for DD109275
Added:
Modified:
llvm/unittests/tools/llvm-exegesis/X86/SnippetGeneratorTest.cpp
Removed:
################################################################################
diff --git a/llvm/unittests/tools/llvm-exegesis/X86/SnippetGeneratorTest.cpp b/llvm/unittests/tools/llvm-exegesis/X86/SnippetGeneratorTest.cpp
index ce6fd821d2c02..2fd278de07bb7 100644
--- a/llvm/unittests/tools/llvm-exegesis/X86/SnippetGeneratorTest.cpp
+++ b/llvm/unittests/tools/llvm-exegesis/X86/SnippetGeneratorTest.cpp
@@ -154,6 +154,29 @@ TEST_F(X86SerialSnippetGeneratorTest,
consumeError(std::move(Error));
}
+TEST_F(X86SerialSnippetGeneratorTest,
+ AvoidSerializingThroughImplicitRegisters) {
+ // MULX32rr implicitly uses EDX. We should not select that register to avoid
+ // serialization.
+ const unsigned Opcode = X86::MULX32rr;
+ randomGenerator().seed(0); // Initialize seed.
+ const Instruction &Instr = State.getIC().getInstr(Opcode);
+ // Forbid all registers but RDX/EDX/DX/DH/DL. The only option would be to
+ // choose that register, but that would serialize the instruction, so we
+ // should be returning an error.
+ auto AllRegisters = State.getRATC().emptyRegisters();
+ AllRegisters.flip();
+ AllRegisters.reset(X86::RDX);
+ AllRegisters.reset(X86::EDX);
+ AllRegisters.reset(X86::DX);
+ AllRegisters.reset(X86::DH);
+ AllRegisters.reset(X86::DL);
+ auto Error =
+ Generator.generateCodeTemplates(&Instr, AllRegisters).takeError();
+ // FIXME: EXPECT_TRUE + consumeError(std::move(Error)).
+ EXPECT_FALSE((bool)Error);
+}
+
TEST_F(X86SerialSnippetGeneratorTest, DependencyThroughOtherOpcode) {
// - CMP64rr
// - Op0 Explicit Use RegClass(GR64)
More information about the llvm-commits
mailing list