[llvm-exegesis] Refactor how forbidden registers are computed.
authorClement Courbet <courbet@google.com>
Fri, 27 Sep 2019 08:04:10 +0000 (08:04 +0000)
committerClement Courbet <courbet@google.com>
Fri, 27 Sep 2019 08:04:10 +0000 (08:04 +0000)
commit8ef97e1aad77bfb8f562c2b5ee0944a5eca44e84
tree6ff028c7bf4191eaa23937c17e701eda6fcf34bf
parente0fad09f6c287ee26f6450da16ac8500c6bc8368
[llvm-exegesis] Refactor how forbidden registers are computed.

Summary:
Right now latency generation can incorrectly select the scratch register
as a dependency-carrying register.
 - Move the logic for preventing register selection from Uops
   implementation to common SnippetGenerator class.
 - Aliasing detection now takes a set of forbidden registers just like
   random register assignment does.

Reviewers: gchatelet

Subscribers: tschuett, llvm-commits

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D68084

llvm-svn: 373048
llvm/tools/llvm-exegesis/lib/Latency.cpp
llvm/tools/llvm-exegesis/lib/Latency.h
llvm/tools/llvm-exegesis/lib/MCInstrDescView.cpp
llvm/tools/llvm-exegesis/lib/MCInstrDescView.h
llvm/tools/llvm-exegesis/lib/SnippetGenerator.cpp
llvm/tools/llvm-exegesis/lib/SnippetGenerator.h
llvm/tools/llvm-exegesis/lib/Uops.cpp
llvm/tools/llvm-exegesis/lib/Uops.h
llvm/tools/llvm-exegesis/lib/X86/Target.cpp
llvm/unittests/tools/llvm-exegesis/X86/SnippetGeneratorTest.cpp