Gergo Stomfai
0fb8f7f9c3
[DAG] Fold away identity FSHL and FSHR patterns (#185667)
Fold away identity FSHL and FSHR patterns
Came up in #185175, this seems to be the cleanest way to get rid of this
pattern
Alive2 proofs:
`fshl(lshr(x, amnt), shl(c, BW - amnt), amnt) -> x`:
✓ https://alive2.llvm.org/ce/z/AEzthY
`fshl(lshr(x, amnt), fshl(x, _, BW - amnt), amnt) -> x`:
✓ https://alive2.llvm.org/ce/z/oDpaqF
`fshl(lshr(x, amnt), fshr(x, _, amnt), amnt) -> x`:
✓ https://alive2.llvm.org/ce/z/aCxQch
`fshl(fshr(_, x, amnt), shl(c, BW - amnt), amnt) -> x`:
✓ https://alive2.llvm.org/ce/z/89NQME
`fshl(fshr(_, x, amnt), fshl(x, _, BW - amnt), amnt) -> x`:
✓ https://alive2.llvm.org/ce/z/KdR3Mp
`fshl(fshr(_, x, amnt), fshr(x, _, amnt), amnt) -> x`:
✓ https://alive2.llvm.org/ce/z/2Gkc7m
`fshl(fshl(_, x, BW - amnt), shl(c, BW - amnt), amnt) -> x`:
✓ https://alive2.llvm.org/ce/z/LNjr_R
`fshl(fshl(_, x, BW - amnt), fshl(x, _, BW - amnt), amnt) -> x`:
✓ https://alive2.llvm.org/ce/z/cwGjhL
`fshl(fshl(_, x, BW - amnt), fshr(x, _, amnt), amnt) -> x`:
✓ https://alive2.llvm.org/ce/z/UChZW4
`fshr(lshr(x, BW - amnt), shl(c, amnt), amnt) -> x`:
✓ https://alive2.llvm.org/ce/z/uiSBEQ
`fshr(lshr(x, BW - amnt), fshl(x, _, amnt), amnt) -> x`:
✓ https://alive2.llvm.org/ce/z/11pXpJ
`fshr(lshr(x, BW - amnt), fshr(x, _, BW - amnt), amnt) -> x`:
✓ https://alive2.llvm.org/ce/z/7mvxH7
`fshr(fshr(_, x, BW - amnt), shl(c, amnt), amnt) -> x`:
✓ https://alive2.llvm.org/ce/z/ybswip
`fshr(fshr(_, x, BW - amnt), fshl(x, _, amnt), amnt) -> x`:
✓ https://alive2.llvm.org/ce/z/fNUQQv
`fshr(fshr(_, x, BW - amnt), fshr(x, _, BW - amnt), amnt) -> x`:
✓ https://alive2.llvm.org/ce/z/9bFnec
`fshr(fshl(_, x, amnt), shl(c, amnt), amnt) -> x`:
✓ https://alive2.llvm.org/ce/z/vuYAYn
`fshr(fshl(_, x, amnt), fshl(x, _, amnt), amnt) -> x`:
✓ https://alive2.llvm.org/ce/z/kP94MG
`fshr(fshl(_, x, amnt), fshr(x, _, BW - amnt), amnt) -> x`:
✓ https://alive2.llvm.org/ce/z/X8u__v
2026-03-12 11:21:29 +00:00
..
2026-03-03 09:51:12 +01:00
2026-02-04 17:35:21 +00:00
2026-02-12 17:42:13 +08:00
2026-03-06 14:16:50 +01:00
2026-02-09 09:48:07 +08:00
2026-03-12 11:00:32 +00:00
2026-01-30 18:46:41 +00:00
2026-02-04 16:07:59 +00:00
2026-02-19 18:29:34 +00:00
2026-03-06 15:24:55 +00:00
2026-02-26 14:36:47 +00:00
2026-03-04 10:40:47 +01:00
2026-03-04 10:40:47 +01:00
2026-03-10 17:55:59 +00:00
2026-03-10 17:55:59 +00:00
2026-02-17 00:18:45 +02:00
2026-01-30 18:21:32 +01:00
2026-03-10 15:04:37 -07:00
2026-03-10 15:04:37 -07:00
2026-03-10 15:04:37 -07:00
2026-02-09 09:48:07 +08:00
2026-03-10 14:58:54 +08:00
2026-03-05 08:47:01 +00:00
2026-03-08 23:28:56 +00:00
2026-02-23 14:38:07 +01:00
2026-02-23 14:38:07 +01:00
2026-02-01 14:00:53 +00:00
2026-02-19 18:37:14 +00:00
2026-03-12 13:00:08 +08:00
2026-02-11 09:49:29 +08:00
2026-03-12 13:00:08 +08:00
2026-03-12 13:00:08 +08:00
2026-03-12 13:00:08 +08:00
2026-02-23 14:38:07 +01:00
2026-03-12 13:00:08 +08:00
2026-02-23 14:38:07 +01:00
2026-02-23 14:38:07 +01:00
2026-02-09 09:48:07 +08:00
2026-03-09 12:15:38 -07:00
2026-02-19 15:25:06 +00:00
2026-03-10 11:56:31 +08:00
2026-03-05 16:13:56 +00:00
2026-03-12 08:40:49 +00:00
2026-02-23 14:38:07 +01:00
2026-02-23 14:38:07 +01:00
2026-02-23 14:38:07 +01:00
2026-02-23 14:38:07 +01:00
2026-02-23 15:44:14 +00:00
2026-02-19 18:29:34 +00:00
2026-02-16 12:59:15 +00:00
2026-02-23 14:38:07 +01:00
2026-02-07 09:38:10 +05:30
2026-02-04 17:35:21 +00:00
2026-02-04 17:35:21 +00:00
2026-02-19 10:21:53 -08:00
2026-02-06 12:54:42 -08:00
2026-02-06 12:54:42 -08:00
2026-02-06 12:54:42 -08:00
2026-02-06 12:54:42 -08:00
2026-02-06 12:54:42 -08:00
2026-02-06 12:54:42 -08:00
2026-02-05 13:31:26 +00:00
2026-03-02 21:50:40 -08:00
2026-03-02 21:50:40 -08:00
2026-03-09 23:21:44 +00:00
2026-02-22 19:20:16 -08:00
2026-02-20 17:56:21 +00:00
2026-02-07 09:38:10 +05:30
2026-02-04 17:35:21 +00:00
2026-02-04 17:35:21 +00:00
2026-02-27 20:12:50 -08:00
2026-02-09 11:43:56 +05:30
2026-03-11 13:02:17 +00:00
2026-02-04 10:55:23 +00:00
2026-03-02 10:52:51 +00:00
2026-03-04 10:50:19 +00:00
2026-02-23 14:38:07 +01:00
2026-02-25 10:03:15 +00:00
2026-02-17 17:12:43 +01:00
2026-02-23 14:38:07 +01:00
2026-02-23 14:38:07 +01:00
2026-02-23 14:38:07 +01:00
2026-02-23 14:38:07 +01:00
2026-02-23 14:38:07 +01:00
2026-02-23 14:38:07 +01:00
2026-02-23 14:38:07 +01:00
2026-02-26 14:05:11 +05:30
2026-02-06 17:11:15 -08:00
2026-02-07 09:38:10 +05:30
2026-02-14 21:05:31 +08:00
2026-02-20 17:56:21 +00:00
2026-02-23 14:38:07 +01:00
2026-03-04 20:32:12 +01:00
2026-03-10 15:04:37 -07:00
2026-02-19 15:25:06 +00:00
2026-03-12 13:00:08 +08:00
2026-02-02 10:49:08 +00:00
2026-03-10 15:04:37 -07:00
2026-02-04 17:35:21 +00:00
2026-02-23 14:38:07 +01:00
2026-02-04 17:35:21 +00:00
2026-02-20 17:56:21 +00:00
2026-02-02 10:49:08 +00:00
2026-03-03 12:45:26 +00:00
2026-03-12 13:00:08 +08:00
2026-03-12 13:00:08 +08:00
2026-03-03 12:45:26 +00:00
2026-02-27 10:03:21 +00:00
2026-02-03 17:07:09 +00:00
2026-02-03 17:07:09 +00:00
2026-02-16 09:24:58 +01:00
2026-02-16 09:24:58 +01:00
2026-02-23 14:38:07 +01:00
2026-03-06 15:18:34 -08:00
2026-03-10 15:04:37 -07:00
2026-02-04 17:35:21 +00:00
2026-02-20 17:56:21 +00:00
2026-02-25 12:23:42 +00:00
2026-02-25 12:23:42 +00:00
2026-02-25 12:23:42 +00:00
2026-02-25 12:23:42 +00:00
2026-02-25 12:23:42 +00:00
2026-03-10 10:47:51 +00:00
2026-03-10 10:08:02 +00:00
2026-03-11 10:58:13 +00:00
2026-02-23 14:38:07 +01:00
2026-02-23 14:38:07 +01:00
2026-02-04 09:14:32 +00:00
2026-02-04 09:14:32 +00:00
2026-02-27 13:08:25 +00:00
2026-02-27 13:08:25 +00:00
2026-02-06 09:49:14 -08:00
2026-02-18 09:31:29 +00:00
2026-02-23 14:38:07 +01:00
2026-02-25 22:54:34 +01:00
2026-03-10 18:53:40 -07:00
2026-02-23 14:38:07 +01:00
2026-02-14 15:59:04 +01:00
2026-02-12 10:58:29 +01:00
2026-01-30 06:49:25 +00:00
2026-02-02 09:31:39 +00:00
2026-02-05 13:31:26 +00:00
2026-02-02 10:49:08 +00:00
2026-02-02 10:49:08 +00:00
2026-02-02 10:49:08 +00:00
2026-02-02 10:49:08 +00:00
2026-02-02 10:49:08 +00:00
2026-02-02 10:49:08 +00:00
2026-02-02 10:49:08 +00:00
2026-02-02 10:49:08 +00:00
2026-02-02 10:49:08 +00:00
2026-02-02 10:49:08 +00:00
2026-02-02 10:49:08 +00:00
2026-02-02 10:49:08 +00:00
2026-02-02 10:49:08 +00:00
2026-02-02 10:49:08 +00:00
2026-02-02 10:49:08 +00:00
2026-02-02 10:49:08 +00:00
2026-02-02 10:49:08 +00:00
2026-02-02 10:49:08 +00:00
2026-02-06 15:50:17 +00:00
2026-03-07 12:21:30 +00:00
2026-03-09 13:13:42 +00:00
2026-02-23 14:38:07 +01:00
2026-02-23 14:38:07 +01:00
2026-02-19 14:23:32 +00:00
2026-03-10 15:04:37 -07:00
2026-02-04 11:45:13 +00:00
2026-02-24 16:39:28 +00:00
2026-02-14 14:33:52 +05:30
2026-02-02 10:49:08 +00:00
2026-03-12 11:21:29 +00:00
2026-02-14 14:33:52 +05:30
2026-02-02 10:49:08 +00:00
2026-02-02 10:49:08 +00:00
2026-03-12 13:00:08 +08:00
2026-02-23 14:38:07 +01:00
2026-01-29 18:37:49 +00:00
2026-02-17 08:39:08 -08:00
2026-03-08 13:10:01 +00:00
2026-03-08 13:10:01 +00:00
2026-02-08 12:04:16 +01:00
2026-02-08 12:04:16 +01:00
2026-02-23 14:38:07 +01:00
2026-01-29 15:52:09 +00:00
2026-02-26 14:58:51 +00:00
2026-02-26 14:58:51 +00:00
2026-02-26 14:58:51 +00:00
2026-03-10 15:04:37 -07:00
2026-02-23 14:38:07 +01:00
2026-02-23 14:38:07 +01:00
2026-03-04 15:19:16 +00:00
2026-03-07 18:16:00 +00:00
2026-03-11 08:14:27 +08:00
2026-01-30 06:49:25 +00:00
2026-02-19 15:25:06 +00:00
2026-02-23 17:28:15 -08:00
2026-02-17 15:37:35 -08:00
2026-02-23 14:38:07 +01:00
2026-02-04 17:35:21 +00:00
2026-02-17 15:37:35 -08:00
2026-03-08 13:10:01 +00:00
2026-03-08 13:10:01 +00:00
2026-02-04 17:35:21 +00:00
2026-02-04 17:35:21 +00:00
2026-02-23 14:38:07 +01:00
2026-02-23 14:38:07 +01:00
2026-02-05 13:31:26 +00:00
2026-02-02 10:49:08 +00:00
2026-01-30 18:21:32 +01:00
2026-03-10 15:04:37 -07:00
2026-02-23 14:38:07 +01:00
2026-01-30 18:21:32 +01:00
2026-03-10 15:04:37 -07:00
2026-02-23 14:38:07 +01:00
2026-02-23 14:38:07 +01:00
2026-03-10 15:04:37 -07:00
2026-02-23 14:38:07 +01:00
2026-02-23 14:38:07 +01:00
2026-03-10 15:04:37 -07:00
2026-02-04 17:35:21 +00:00
2026-02-23 14:38:07 +01:00
2026-02-23 14:38:07 +01:00
2026-02-12 10:58:29 +01:00
2026-02-06 08:33:51 -08:00
2026-02-23 14:38:07 +01:00
2026-02-23 14:38:07 +01:00
2026-02-12 10:58:29 +01:00
2026-03-10 11:56:31 +08:00
2026-02-23 14:38:07 +01:00
2026-02-24 12:52:17 -08:00
2026-02-19 15:25:06 +00:00
2026-02-23 14:38:07 +01:00
2026-02-23 14:38:07 +01:00
2026-02-23 14:38:07 +01:00
2026-02-07 09:38:10 +05:30
2026-02-04 17:35:21 +00:00
2026-03-04 15:06:23 +08:00
2026-02-23 14:38:07 +01:00
2026-03-10 15:04:37 -07:00
2026-02-23 14:38:07 +01:00
2026-02-23 14:38:07 +01:00
2026-03-10 15:04:37 -07:00
2026-03-12 11:21:29 +00:00
2026-02-23 14:38:07 +01:00
2026-02-20 17:56:21 +00:00
2026-02-09 10:34:02 +00:00
2026-02-23 15:30:13 +00:00
2026-03-08 23:28:56 +00:00
2026-03-10 15:04:37 -07:00
2026-03-11 16:54:22 +00:00
2026-03-12 08:40:49 +00:00
2026-02-23 14:38:07 +01:00
2026-02-07 09:38:10 +05:30
2026-02-26 15:49:18 +00:00
2026-02-07 09:38:10 +05:30
2026-03-10 15:04:37 -07:00
2026-03-10 15:04:37 -07:00
2026-02-05 13:31:26 +00:00
2026-02-07 09:38:10 +05:30
2026-02-05 13:31:26 +00:00
2026-02-23 14:38:07 +01:00
2026-02-20 17:56:21 +00:00
2026-02-09 09:48:07 +08:00
2026-03-12 13:00:08 +08:00
2026-03-05 08:47:01 +00:00
2026-02-23 14:38:07 +01:00
2026-02-23 14:38:07 +01:00
2026-02-27 10:09:35 +00:00
2026-03-12 13:00:08 +08:00
2026-03-12 13:00:08 +08:00
2026-01-30 18:10:08 +00:00
2026-02-04 17:35:21 +00:00
2026-02-04 17:35:21 +00:00
2026-02-27 10:55:20 -08:00
2026-02-27 10:55:20 -08:00
2026-02-04 17:35:21 +00:00
2026-02-04 16:07:59 +00:00
2026-02-04 17:35:21 +00:00
2026-02-19 15:25:06 +00:00
2026-02-04 17:35:21 +00:00
2026-02-04 17:35:21 +00:00
2026-02-16 09:24:58 +01:00
2026-02-23 14:38:07 +01:00
2026-02-07 09:38:10 +05:30
2026-02-07 09:38:10 +05:30
2026-02-07 09:38:10 +05:30
2026-02-07 09:38:10 +05:30
2026-02-23 14:38:07 +01:00
2026-03-12 11:21:29 +00:00
2026-03-06 15:18:34 -08:00
2026-02-23 14:38:07 +01:00
2026-03-10 15:04:37 -07:00
2026-03-10 15:04:37 -07:00
2026-02-23 14:38:07 +01:00
2026-03-06 15:18:34 -08:00
2026-02-23 14:38:07 +01:00
2026-02-23 14:38:07 +01:00
2026-02-23 14:38:07 +01:00
2026-02-23 14:38:07 +01:00
2026-02-27 10:20:57 +00:00
2026-02-23 14:38:07 +01:00
2026-02-23 14:38:07 +01:00
2026-02-23 14:38:07 +01:00
2026-02-23 14:38:07 +01:00
2026-02-23 14:38:07 +01:00
2026-02-27 10:20:57 +00:00
2026-02-23 14:38:07 +01:00
2026-03-03 10:44:12 +00:00
2026-02-23 14:38:07 +01:00
2026-02-23 14:38:07 +01:00
2026-02-23 14:38:07 +01:00
2026-02-23 14:38:07 +01:00
2026-02-10 09:01:13 +00:00
2026-02-23 14:38:07 +01:00
2026-02-23 14:38:07 +01:00
2026-02-12 10:58:29 +01:00
2026-02-23 14:38:07 +01:00
2026-02-23 14:38:07 +01:00
2026-02-12 10:58:29 +01:00
2026-02-23 14:38:07 +01:00
2026-02-23 14:38:07 +01:00
2026-02-12 10:58:29 +01:00
2026-02-23 14:38:07 +01:00
2026-02-23 14:38:07 +01:00
2026-02-12 10:58:29 +01:00
2026-03-10 21:24:48 +00:00
2026-02-24 09:37:58 +00:00
2026-02-24 09:37:58 +00:00
2026-02-23 14:38:07 +01:00
2026-02-23 14:38:07 +01:00
2026-02-14 14:33:52 +05:30
2026-02-14 14:33:52 +05:30
2026-03-11 18:46:03 +00:00
2026-02-23 14:38:07 +01:00
2026-02-23 14:38:07 +01:00
2026-02-23 14:38:07 +01:00
2026-02-23 14:38:07 +01:00
2026-02-23 14:38:07 +01:00
2026-02-23 14:38:07 +01:00
2026-02-23 14:38:07 +01:00
2026-02-26 15:49:00 +00:00
2026-02-23 14:38:07 +01:00
2026-02-23 14:38:07 +01:00
2026-02-12 10:58:29 +01:00
2026-03-10 15:04:37 -07:00
2026-02-23 14:38:07 +01:00
2026-02-23 14:38:07 +01:00
2026-02-23 14:38:07 +01:00
2026-02-23 14:38:07 +01:00
2026-02-24 17:52:54 +00:00
2026-02-09 16:15:41 +00:00
2026-02-23 14:38:07 +01:00
2026-02-23 14:38:07 +01:00
2026-03-03 20:52:38 +00:00
2026-02-23 14:38:07 +01:00
2026-02-26 14:36:47 +00:00
2026-02-07 09:38:10 +05:30
2026-02-10 14:25:40 +00:00
2026-02-23 14:38:07 +01:00
2026-02-23 14:38:07 +01:00
2026-02-23 14:38:07 +01:00
2026-02-23 14:38:07 +01:00
2026-03-10 15:04:37 -07:00
2026-01-30 18:21:32 +01:00
2026-02-07 09:38:10 +05:30
2026-02-25 10:03:15 +00:00
2026-03-06 11:45:59 +00:00
2026-02-10 18:50:34 -08:00
2026-02-02 07:24:23 -08:00
2026-02-02 07:24:23 -08:00
2026-02-02 07:24:23 -08:00
2026-02-02 07:24:23 -08:00
2026-02-17 11:24:43 +00:00
2026-02-07 09:38:10 +05:30
2026-02-24 09:37:58 +00:00
2026-02-26 14:36:47 +00:00
2026-02-26 14:36:47 +00:00