[UpdateTestChecks] Auto-generate stub bodies for unused prefixes
authorMircea Trofin <mtrofin@google.com>
Fri, 22 Apr 2022 19:49:15 +0000 (12:49 -0700)
committerMircea Trofin <mtrofin@google.com>
Thu, 26 May 2022 17:23:10 +0000 (10:23 -0700)
commitf15c60218d5c88c9f32942bce119e7ac25cb6d73
tree108a1cce28d7ae63b5399ba45ba5c9153896000a
parent6af5f5697c8560e09c305d5cfd74a7bda0d4d311
[UpdateTestChecks] Auto-generate stub bodies for unused prefixes

This is scoped to autogenerated tests.

The goal is to support having each RUN line specify a list of
check-prefixes where one can specify potentially redundant prefixes. For example,
for X86, if one specified prefixes for  both AVX1 and AVX2, and the codegen happened to
match today, one of the prefixes would be used and the onther one not.
If the unused prefix were dropped, and later, codegen differences were
introduced, one would have to go figure out where to add what prefix
(paraphrasing
https://lists.llvm.org/pipermail/llvm-dev/2021-February/148326.html)

To avoid getting errors due to unused prefixes, whole directories can be
opted out (as discussed on that thread), but that means that tests that
aren't autogenerated in such directories could have undetected unused
prefix bugs.

This patch proposes an alternative that both avoids the above, dir-level
optout, and supports the main autogen scenario discussed first. The autogen
tool appends at the end of the test file the list of unused prefixes,
together with a note explaining that is the case. Each prefix is set up
to always pass.

This way, unexpected unused prefixes are easily discoverable, and
expected cases "just work".

Differential Revision: https://reviews.llvm.org/D124306
14 files changed:
llvm/test/tools/UpdateTestChecks/update_llc_test_checks/Inputs/amdgpu_no_merge_comments.ll.expected
llvm/test/tools/UpdateTestChecks/update_llc_test_checks/Inputs/common-label-different-bodies-1-next.ll [new file with mode: 0644]
llvm/test/tools/UpdateTestChecks/update_llc_test_checks/Inputs/common-label-different-bodies-1.ll
llvm/test/tools/UpdateTestChecks/update_llc_test_checks/Inputs/common-label-different-bodies-2.ll
llvm/test/tools/UpdateTestChecks/update_llc_test_checks/Inputs/common-label-different-bodies-3.ll
llvm/test/tools/UpdateTestChecks/update_llc_test_checks/Inputs/redundant-and-unmatching-prefixes.ll [new file with mode: 0644]
llvm/test/tools/UpdateTestChecks/update_llc_test_checks/common-label-different-bodies.test
llvm/test/tools/UpdateTestChecks/update_llc_test_checks/prefix-never-matches.test
llvm/test/tools/UpdateTestChecks/update_llc_test_checks/redundant-and-unmatched-prefixes.test [new file with mode: 0644]
llvm/utils/UpdateTestChecks/asm.py
llvm/utils/UpdateTestChecks/common.py
llvm/utils/UpdateTestChecks/isel.py
llvm/utils/update_cc_test_checks.py
llvm/utils/update_llc_test_checks.py