Benjamin Maxwell
7fad04e94b
[LSR] Fix matching vscale immediates ( #100080 )
...
Somewhat confusingly a `SCEVMulExpr` is a `SCEVNAryExpr`, so can have
> 2 operands. Previously, the vscale immediate matching did not check
the number of operands of the `SCEVMulExpr`, so would ignore any
operands after the first two.
This led to incorrect codegen (and results) for ArmSME in IREE
(https://github.com/iree-org/iree ), which sometimes addresses things
that are a `vscale * vscale` multiple away. The test added with this
change shows an example reduced from IREE. The second write should
be offset from the first `16 * vscale * vscale` (* 4 bytes), however,
previously LSR dropped the second vscale and instead offset the write by
`#4, mul vl`, which is an offset of `16 * vscale` (* 4 bytes).
2024-07-24 10:06:34 +01:00
..
2024-05-04 12:33:12 -07:00
2023-12-07 17:35:35 +01:00
2024-06-28 08:36:49 +02:00
2024-04-18 15:27:36 +09:00
2024-03-12 14:53:13 +00:00
2024-02-10 01:12:46 -08:00
2024-06-28 14:30:47 +02:00
2024-07-10 21:59:59 +02:00
2024-07-09 21:05:53 +02:00
2023-11-25 15:42:55 -08:00
2024-07-12 08:31:49 +02:00
2024-06-06 13:13:46 +05:30
2024-06-23 17:24:15 +08:00
2024-06-28 08:36:49 +02:00
2024-01-25 16:05:54 +08:00
2024-06-28 08:36:49 +02:00
2024-06-29 15:05:04 +02:00
2024-06-28 08:36:49 +02:00
2024-05-15 07:44:34 -07:00
2024-05-27 20:32:51 +08:00
2024-04-26 16:25:33 +08:00
2024-06-28 08:36:49 +02:00
2024-07-03 09:39:17 +08:00
2024-06-28 08:36:49 +02:00
2024-06-28 08:36:49 +02:00
2024-06-28 08:36:49 +02:00
2024-07-04 17:28:09 +02:00
2024-07-23 12:01:22 +02:00
2024-06-28 08:36:49 +02:00
2024-06-27 16:38:15 +02:00
2024-06-30 12:16:31 +01:00
2024-07-11 22:17:28 -07:00
2024-07-04 21:06:44 +08:00
2024-06-30 11:59:58 +01:00
2024-07-16 13:58:07 +01:00
2024-06-27 16:38:15 +02:00
2024-04-12 14:33:35 -07:00
2024-07-23 12:52:20 +01:00
2023-11-30 10:21:35 +01:00
2024-06-24 18:00:22 +01:00
2024-07-16 16:09:57 +02:00
2024-03-12 16:03:18 +01:00
2023-11-20 00:59:42 -08:00
2024-07-24 10:06:34 +01:00
2024-06-06 13:13:46 +05:30
2024-06-06 13:13:46 +05:30
2024-05-10 11:47:13 +01:00
2024-01-25 16:05:54 +08:00
2024-07-04 21:06:25 +08:00
2024-06-12 12:52:28 -07:00
2024-06-28 08:36:49 +02:00
2023-11-20 01:03:10 -08:00
2024-06-28 14:30:47 +02:00
2024-07-15 09:41:11 +02:00
2024-06-27 16:38:15 +02:00
2024-06-27 16:38:15 +02:00
2024-07-09 16:14:16 +02:00
2024-07-12 11:17:45 +01:00
2024-06-24 18:00:22 +01:00
2024-06-28 14:30:47 +02:00
2024-07-14 13:44:50 -07:00
2024-03-04 13:14:39 +00:00
2024-06-28 08:36:49 +02:00
2024-05-31 12:48:45 -07:00
2024-06-28 08:36:49 +02:00
2024-07-02 16:20:44 -07:00
2024-06-28 08:36:49 +02:00
2024-07-01 14:03:25 +08:00
2024-07-19 13:17:21 +08:00
2024-07-23 07:47:21 +08:00
2024-07-08 11:05:00 +08:00
2024-07-18 09:08:25 +01:00
2024-07-22 09:47:37 +02:00
2024-06-28 08:36:49 +02:00
2024-06-28 08:36:49 +02:00
2023-12-03 23:01:26 -08:00