Florian Hahn
2bdc1a1337
[LV] Use frozen start value for FindLastIV if needed. (#132691)
FindLastIV introduces multiple uses of the start value, where in the
original source there was only a single use, when the epilogue is
vectorized.
Each use of undef may produce a different result, so introducing
multiple uses can produce incorrect results when the input is
undef/poison.
If the start value may be undef or poison, freeze it and use the frozen
value, which will be the same at all uses.
See the following scenarios in Alive2:
* Both main and epilogue vector loops execute, go to exit block: https://alive2.llvm.org/ce/z/_TSvRr
* Both main and epilogue vector loops execute, go to scalar loop: https://alive2.llvm.org/ce/z/CsPj5v
* Only epilogue vector loop executes, go to exit block: https://alive2.llvm.org/ce/z/5XqkNV
* Only epilogue vector loop executes, go to scalar loop: https://alive2.llvm.org/ce/z/JUpqRN
The latter 2 show requiring freezing the resume phi. That means we cannot freeze
in the preheader. We could move the freeze to the main iteration count check, but
that would be a bit fragile to find and other transforms can sink the freeze if needed.
Depends on https://github.com/llvm/llvm-project/pull/132689
and https://github.com/llvm/llvm-project/pull/132690.
Fixes https://github.com/llvm/llvm-project/issues/126836
PR: https://github.com/llvm/llvm-project/pull/132691
2025-04-04 11:48:01 +01:00
..
2024-11-19 08:55:39 +00:00
2025-01-06 10:26:51 +00:00
2025-03-25 12:57:24 +00:00
2025-03-26 21:03:50 +00:00
2025-03-25 12:57:24 +00:00
2025-03-28 14:47:40 +00:00
2025-02-09 11:20:20 +00:00
2025-03-26 21:03:50 +00:00
2025-03-25 12:57:24 +00:00
2025-03-26 12:09:59 +00:00
2025-03-25 12:57:24 +00:00
2025-04-04 11:48:01 +01:00
2025-03-26 21:03:50 +00:00
2025-03-26 21:03:50 +00:00
2025-03-25 12:57:24 +00:00
2024-11-06 11:53:33 +00:00
2024-11-21 11:21:12 +00:00
2025-03-26 21:03:50 +00:00
2025-04-02 08:46:02 +08:00
2025-03-26 21:03:50 +00:00
2025-03-27 21:15:32 +00:00
2025-03-25 12:57:24 +00:00
2025-04-03 16:24:56 +01:00
2025-03-26 21:03:50 +00:00
2025-03-26 21:03:50 +00:00
2025-03-04 08:43:08 +00:00
2025-02-09 11:20:20 +00:00
2025-01-02 14:31:36 +00:00
2025-03-25 12:57:24 +00:00
2025-03-26 21:03:50 +00:00
2025-03-26 21:03:50 +00:00
2025-02-09 11:20:20 +00:00
2024-11-21 21:11:21 +00:00
2025-01-27 21:35:36 +00:00
2025-03-25 12:57:24 +00:00
2025-01-14 22:07:38 +00:00
2025-03-28 19:31:37 +00:00
2025-03-05 18:19:39 +00:00
2025-03-21 09:24:56 +00:00
2025-03-21 09:24:56 +00:00
2025-03-27 21:15:32 +00:00
2024-11-19 08:55:39 +00:00
2025-02-03 17:01:02 +00:00
2025-02-28 12:56:12 +00:00
2024-11-20 09:33:39 +00:00
2025-01-29 08:09:50 +00:00
2025-03-28 14:47:40 +00:00
2024-12-16 11:55:48 +08:00
2024-11-06 11:53:33 +00:00
2025-03-25 12:57:24 +00:00
2025-03-25 12:57:24 +00:00
2025-03-26 21:03:50 +00:00
2025-03-26 21:03:50 +00:00
2025-04-01 14:13:30 +01:00
2025-03-26 21:03:50 +00:00
2025-03-26 21:03:50 +00:00
2025-02-09 11:20:20 +00:00
2025-03-26 21:03:50 +00:00
2025-01-20 15:05:15 +00:00
2025-03-26 21:03:50 +00:00
2025-03-19 15:13:43 +00:00
2025-03-25 12:57:24 +00:00
2024-11-21 11:21:12 +00:00
2025-03-25 12:57:24 +00:00
2025-03-25 12:57:24 +00:00
2025-03-26 21:03:50 +00:00
2025-02-17 09:51:35 +00:00
2025-01-29 08:09:50 +00:00
2025-01-29 08:09:50 +00:00
2024-11-29 17:41:05 +00:00
2024-11-28 15:07:36 +08:00
2025-03-26 12:09:59 +00:00
2025-03-26 21:03:50 +00:00
2025-03-25 12:57:24 +00:00
2025-01-29 08:09:50 +00:00
2025-02-27 17:43:24 +00:00
2025-02-17 09:51:35 +00:00
2025-03-31 12:40:41 +01:00
2024-12-05 14:36:40 +01:00
2025-01-29 08:09:50 +00:00
2025-03-31 12:40:41 +01:00
2025-03-28 21:48:59 +00:00
2025-03-31 12:40:41 +01:00
2024-11-21 11:21:12 +00:00
2025-03-31 12:40:41 +01:00
2025-03-26 21:03:50 +00:00
2025-03-31 12:40:41 +01:00
2025-03-31 12:40:41 +01:00
2024-11-20 09:33:39 +00:00
2025-03-31 12:40:41 +01:00
2025-03-31 12:40:41 +01:00
2024-11-05 22:45:56 +01:00
2025-03-31 12:40:41 +01:00
2024-11-06 11:53:33 +00:00
2025-03-26 21:03:50 +00:00
2025-03-31 12:40:41 +01:00
2025-01-21 21:37:51 +00:00
2025-03-31 12:40:41 +01:00
2025-03-31 12:40:41 +01:00
2025-03-31 12:40:41 +01:00
2024-11-21 11:21:12 +00:00
2025-03-26 21:03:50 +00:00
2024-11-21 11:21:12 +00:00
2025-03-31 12:40:41 +01:00
2025-03-31 12:40:41 +01:00
2025-03-07 21:18:49 +00:00
2024-11-29 17:41:05 +00:00
2025-03-21 09:24:56 +00:00
2025-03-31 12:40:41 +01:00
2025-03-31 12:40:41 +01:00
2025-03-31 12:40:41 +01:00
2025-03-25 12:57:24 +00:00
2025-03-31 12:40:41 +01:00
2025-03-31 12:40:41 +01:00
2025-03-31 12:40:41 +01:00
2025-03-13 07:16:04 -07:00
2025-03-28 21:48:59 +00:00
2025-03-28 21:48:59 +00:00
2025-03-28 21:48:59 +00:00
2025-03-25 12:57:24 +00:00
2025-03-25 12:57:24 +00:00
2025-03-26 21:03:50 +00:00
2025-03-29 20:14:10 +00:00
2025-03-28 14:47:40 +00:00
2025-03-29 20:14:10 +00:00
2025-03-26 21:03:50 +00:00
2025-03-25 20:57:10 +00:00
2024-11-06 11:53:33 +00:00
2025-01-29 16:56:47 +01:00
2024-12-05 14:36:40 +01:00
2024-10-24 17:53:12 -07:00
2024-11-29 17:41:05 +00:00
2024-10-24 17:53:12 -07:00
2025-04-03 22:14:15 +01:00
2024-11-06 11:53:33 +00:00
2025-03-28 21:48:59 +00:00
2025-03-28 21:48:59 +00:00
2024-11-21 11:21:12 +00:00