[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