[PATCH] D99460: [X86][update_llc_test_checks] Use a less greedy regular expression for replacing constant pool labels in tests.

Craig Topper via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Sat Mar 27 20:54:50 PDT 2021


craig.topper added a comment.

In D99460#2654420 <https://reviews.llvm.org/D99460#2654420>, @pengfei wrote:

> Are these changed manually? Can we update them with `--no_x86_scrub_rip`, i.e.
>
>   llvm/utils/update_llc_test_checks.py llvm/test/CodeGen/X86/WidenArith.ll --no_x86_scrub_rip

I modified asm.py and made it print this now. Most of the affected tests are 32-bit tests that don't use %rip so -no_x86_scrub_rip wouldn't affect them.

For 64-bit tests scrubbing rip replaces any tests before (%rip) with a regular expression like {{.*}}(%rip). The test check line will always contain %rip if it is part of the assembly. This matches before the LCP match. So for most 64-bit tests the presence of %rip prevents the LCP from being replaced with {{\.LCPI.*}}.

For cases affected by D97208 <https://reviews.llvm.org/D97208>, %rip is not currently present so the LCP scrub kicks in. Producing {{\.LCPI.*}} followed by a comma. Because that regex is greedy it will match up to the next comma. So whether there is an %rip in asm or not the regex will alway match. If you apply the X86InstrInfo.cpp and run the script on avx-cmp.ll and mmx-fold-zero.ll you'll get

  {{.*}}(%rip)

If you add -no_x86_scrub_rip you'll get

  {{LCPI.*}}(%rip)


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D99460/new/

https://reviews.llvm.org/D99460



More information about the llvm-commits mailing list