[llvm-dev] Question about pattern matching process

Josh Sharp via llvm-dev llvm-dev at lists.llvm.org
Sat Feb 9 12:35:24 PST 2019


Hi,
I'd like to understand the order in which patterns are searched during ISEL. In the example below, indices are searched in ascending order from 808 to 3305, then it goes back to 3259 and eventually it matches the wrong instruction. Why did go back from 3305 to 3259? In my XXXGenDAGISel.inc, I can see that the correct instruction is at index 3420 but it never got there.

ISEL: Starting pattern match
  Skipped scope entry (due to false predicate) at index 3, continuing at 808
  Skipped scope entry (due to false predicate) at index 809, continuing at 865
  Skipped scope entry (due to false predicate) at index 867, continuing at 1091
  Skipped scope entry (due to false predicate) at index 1093, continuing at 1578
  Skipped scope entry (due to false predicate) at index 1579, continuing at 1605
  Skipped scope entry (due to false predicate) at index 1606, continuing at 1668
  Skipped scope entry (due to false predicate) at index 1670, continuing at 2369
  Skipped scope entry (due to false predicate) at index 2370, continuing at 2397
  Skipped scope entry (due to false predicate) at index 2398, continuing at 2451
  Skipped scope entry (due to false predicate) at index 2452, continuing at 2562
  Skipped scope entry (due to false predicate) at index 2563, continuing at 2641
  Skipped scope entry (due to false predicate) at index 2642, continuing at 2669
  Skipped scope entry (due to false predicate) at index 2670, continuing at 2696
  Skipped scope entry (due to false predicate) at index 2697, continuing at 2779
  Skipped scope entry (due to false predicate) at index 2780, continuing at 2835
  Skipped scope entry (due to false predicate) at index 2836, continuing at 2891
  Skipped scope entry (due to false predicate) at index 2892, continuing at 2947
  Skipped scope entry (due to false predicate) at index 2948, continuing at 2999
  Skipped scope entry (due to false predicate) at index 3000, continuing at 3032
  Skipped scope entry (due to false predicate) at index 3033, continuing at 3053
  Skipped scope entry (due to false predicate) at index 3054, continuing at 3085
  Skipped scope entry (due to false predicate) at index 3086, continuing at 3114
  Skipped scope entry (due to false predicate) at index 3115, continuing at 3171
  Skipped scope entry (due to false predicate) at index 3172, continuing at 3201
  Skipped scope entry (due to false predicate) at index 3202, continuing at 3253
  Skipped scope entry (due to false predicate) at index 3261, continuing at 3272
  Skipped scope entry (due to false predicate) at index 3273, continuing at 3284
  Skipped scope entry (due to false predicate) at index 3285, continuing at 3305
  Match failed at index 3259
  Continuing at 3306
  Match failed at index 3307
  Continuing at 3327
  Match failed at index 3328
  Continuing at 3361
  Morphed node: t17: i32 = MOVRR t17
ISEL: Match complete!


Thanks.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20190209/e46a9dea/attachment.html>


More information about the llvm-dev mailing list