Ulrich Weigand
58a9786e81
[SystemZ, TableGen] Fix shift count handling
...
The DAG combiner logic to simplify AND masks in shift counts is invalid.
While it is true that the SystemZ shift instructions ignore all but the
low 6 bits of the shift count, it is still invalid to simplify the AND
masks while the DAG still uses the standard shift operators (which are
*not* defined to match the SystemZ instruction behavior).
Instead, this patch performs equivalent operations during instruction
selection. For completely removing the AND, this now happens via
additional DAG match patterns implemented by a multi-alternative
PatFrags. For simplifying a 32-bit AND to a 16-bit AND, the existing DAG
patterns were already mostly OK, they just needed an output XForm to
actually truncate the immediate value.
Unfortunately, the latter change also exposed a bug in TableGen: it
seems XForms are currently only handled correctly for direct operands of
the outermost operation node. This patch also fixes that bug by simply
recurring through the whole pattern. This should be NFC for all other
targets.
Differential Revision: https://reviews.llvm.org/D50096
llvm-svn: 338521
2018-08-01 11:57:58 +00:00
..
2018-01-19 19:51:38 +00:00
2018-07-20 12:12:10 +00:00
2018-07-20 12:12:10 +00:00
2018-07-20 12:12:10 +00:00
2018-07-20 12:12:10 +00:00
2017-10-06 13:59:28 +00:00
2017-10-06 13:59:28 +00:00
2017-10-06 13:59:28 +00:00
2018-07-20 12:12:10 +00:00
2018-07-20 12:12:10 +00:00
2018-07-20 12:12:10 +00:00
2018-07-20 12:12:10 +00:00
2018-07-20 12:12:10 +00:00
2018-03-02 20:40:11 +00:00
2018-03-02 20:40:11 +00:00
2018-03-02 20:40:11 +00:00
2017-10-06 13:59:28 +00:00
2017-11-09 16:31:57 +00:00
2018-07-20 12:12:10 +00:00
2018-03-02 20:36:34 +00:00
2018-07-20 12:12:10 +00:00
2018-07-20 12:12:10 +00:00
2018-07-20 12:12:10 +00:00
2018-07-20 12:12:10 +00:00
2017-08-04 18:57:58 +00:00
2017-08-04 18:53:35 +00:00
2017-08-04 18:53:35 +00:00
2017-08-04 18:53:35 +00:00
2017-08-04 18:53:35 +00:00
2017-08-04 18:57:58 +00:00
2017-10-06 13:59:28 +00:00
2017-10-06 13:59:28 +00:00
2017-10-06 13:59:28 +00:00
2017-10-06 13:59:28 +00:00
2017-10-06 13:59:28 +00:00
2017-10-06 13:59:28 +00:00
2017-08-11 06:57:08 +00:00
2017-10-06 13:59:28 +00:00
2017-10-06 13:59:28 +00:00
2017-10-06 13:59:28 +00:00
2017-10-06 13:59:28 +00:00
2017-10-06 13:59:28 +00:00
2017-10-06 13:59:28 +00:00
2017-10-06 13:59:28 +00:00
2017-10-06 13:59:28 +00:00
2017-10-06 13:59:28 +00:00
2017-10-06 13:59:28 +00:00
2017-10-06 13:59:28 +00:00
2017-10-06 13:59:28 +00:00
2017-10-06 13:59:28 +00:00
2018-07-11 20:25:49 +00:00
2018-07-20 12:12:10 +00:00
2018-07-20 12:12:10 +00:00
2018-07-20 12:12:10 +00:00
2018-07-20 12:12:10 +00:00
2018-01-19 20:52:04 +00:00
2018-07-20 12:12:10 +00:00
2017-07-17 17:41:11 +00:00
2018-06-07 07:20:33 +00:00
2018-07-20 12:12:10 +00:00
2018-07-20 12:12:10 +00:00
2018-03-02 21:22:42 +00:00
2018-03-02 21:22:42 +00:00
2018-07-20 12:12:10 +00:00
2018-03-02 21:22:42 +00:00
2017-09-19 20:50:05 +00:00
2017-12-05 10:52:24 +00:00
2018-05-07 10:48:43 +00:00
2018-01-31 22:04:26 +00:00
2018-01-19 20:54:18 +00:00
2018-01-19 20:54:18 +00:00
2018-01-19 20:54:18 +00:00
2018-01-19 20:54:18 +00:00
2017-09-28 16:22:54 +00:00
2018-01-19 20:54:18 +00:00
2018-03-13 08:36:20 +00:00
2018-07-20 12:12:10 +00:00
2018-07-20 12:12:10 +00:00
2018-07-11 20:25:49 +00:00
2018-04-30 17:52:32 +00:00
2018-01-31 22:04:26 +00:00
2018-01-31 22:04:26 +00:00
2018-07-20 12:12:10 +00:00
2018-07-20 12:12:10 +00:00
2018-07-20 12:12:10 +00:00
2018-07-20 12:12:10 +00:00
2018-07-20 12:12:10 +00:00
2018-07-20 12:12:10 +00:00
2018-07-20 12:12:10 +00:00
2018-07-20 12:12:10 +00:00
2017-07-21 11:59:37 +00:00
2018-01-19 20:56:04 +00:00
2018-03-17 08:04:00 +00:00
2018-05-25 09:01:23 +00:00
2017-12-04 17:18:51 +00:00
2018-07-20 12:12:10 +00:00
2018-07-20 12:12:10 +00:00
2018-07-20 12:12:10 +00:00
2018-07-20 12:12:10 +00:00
2018-07-20 12:12:10 +00:00
2018-07-20 12:12:10 +00:00
2018-07-20 12:12:10 +00:00
2017-07-17 17:44:20 +00:00
2018-07-20 12:12:10 +00:00
2018-07-20 12:12:10 +00:00
2018-07-20 12:12:10 +00:00
2018-07-20 12:12:10 +00:00
2017-07-17 17:44:20 +00:00
2018-01-31 22:04:26 +00:00
2017-07-17 17:44:20 +00:00
2018-07-20 12:12:10 +00:00
2018-07-20 12:12:10 +00:00
2018-07-20 12:12:10 +00:00
2018-07-20 12:12:10 +00:00
2018-07-20 12:12:10 +00:00
2018-07-20 12:12:10 +00:00
2018-07-20 12:12:10 +00:00
2018-07-20 12:12:10 +00:00
2018-07-20 12:12:10 +00:00
2017-07-17 17:44:20 +00:00
2018-07-20 12:12:10 +00:00
2018-01-31 22:04:26 +00:00
2018-07-20 12:12:10 +00:00
2017-10-06 13:59:28 +00:00
2018-07-20 12:12:10 +00:00
2018-07-20 12:12:10 +00:00
2018-07-20 12:12:10 +00:00
2017-07-17 17:44:20 +00:00
2018-07-20 12:12:10 +00:00
2018-07-20 12:12:10 +00:00
2018-07-20 12:12:10 +00:00
2018-07-20 12:12:10 +00:00
2018-07-20 12:12:10 +00:00
2018-07-20 12:12:10 +00:00
2018-07-20 12:12:10 +00:00
2018-07-20 12:12:10 +00:00
2018-07-20 12:12:10 +00:00
2018-07-20 12:12:10 +00:00
2018-07-20 12:12:10 +00:00
2018-07-20 12:12:10 +00:00
2018-07-20 12:12:10 +00:00
2018-07-20 12:12:10 +00:00
2018-07-20 12:12:10 +00:00
2018-07-20 12:12:10 +00:00
2018-07-20 12:12:10 +00:00
2017-07-17 17:42:48 +00:00
2017-07-17 17:44:20 +00:00
2017-07-17 17:44:20 +00:00
2018-07-20 12:12:10 +00:00
2018-07-20 12:12:10 +00:00
2018-07-20 12:12:10 +00:00
2018-07-20 12:12:10 +00:00
2018-07-20 12:12:10 +00:00
2018-07-20 12:12:10 +00:00
2018-07-20 12:12:10 +00:00
2018-07-20 12:12:10 +00:00
2017-07-17 17:44:20 +00:00
2018-07-20 12:12:10 +00:00
2018-07-20 12:12:10 +00:00
2018-07-20 12:12:10 +00:00
2017-07-17 17:44:20 +00:00
2018-07-20 12:12:10 +00:00
2018-07-20 12:12:10 +00:00
2018-07-20 12:12:10 +00:00
2018-07-20 12:12:10 +00:00
2018-07-20 12:12:10 +00:00
2018-07-20 12:12:10 +00:00
2018-07-20 12:12:10 +00:00
2018-07-20 12:12:10 +00:00
2018-07-20 12:12:10 +00:00
2018-07-20 12:12:10 +00:00
2018-07-20 12:12:10 +00:00
2018-07-20 12:12:10 +00:00
2018-07-20 12:12:10 +00:00
2018-07-20 12:12:10 +00:00
2017-06-26 16:50:32 +00:00
2018-04-09 14:50:02 +00:00
2018-07-20 12:12:10 +00:00
2018-07-20 12:12:10 +00:00
2018-03-01 22:32:25 +00:00
2018-07-20 12:12:10 +00:00
2018-07-20 12:12:10 +00:00
2018-07-20 12:12:10 +00:00
2018-07-20 12:12:10 +00:00
2018-07-20 12:12:10 +00:00
2018-07-20 12:12:10 +00:00
2018-07-20 12:12:10 +00:00
2018-07-20 12:12:10 +00:00
2018-07-20 12:12:10 +00:00
2018-07-20 12:12:10 +00:00
2018-07-20 12:12:10 +00:00
2017-07-17 17:41:11 +00:00
2018-07-20 12:12:10 +00:00
2018-07-20 12:12:10 +00:00
2018-07-20 12:12:10 +00:00
2018-07-20 12:12:10 +00:00
2018-07-20 12:12:10 +00:00
2018-07-20 12:12:10 +00:00
2018-07-20 12:12:10 +00:00
2018-07-20 12:12:10 +00:00
2018-07-20 12:12:10 +00:00
2018-07-20 12:12:10 +00:00
2018-07-20 12:12:10 +00:00
2018-07-20 12:12:10 +00:00
2018-07-20 12:12:10 +00:00
2018-07-20 12:12:10 +00:00
2018-07-20 12:12:10 +00:00
2018-07-20 12:12:10 +00:00
2018-07-20 12:12:10 +00:00
2018-07-20 12:12:10 +00:00
2018-07-20 12:12:10 +00:00
2018-07-20 12:12:10 +00:00
2018-07-20 12:12:10 +00:00
2018-07-20 12:12:10 +00:00
2018-07-20 12:12:10 +00:00
2018-07-20 12:12:10 +00:00
2018-07-20 12:12:10 +00:00
2018-07-20 12:12:10 +00:00
2018-07-20 12:12:10 +00:00
2018-07-20 12:12:10 +00:00
2018-07-20 12:12:10 +00:00
2018-07-20 12:12:10 +00:00
2018-07-20 12:12:10 +00:00
2018-07-20 12:12:10 +00:00
2018-07-20 12:12:10 +00:00
2018-07-20 12:12:10 +00:00
2018-07-20 12:12:10 +00:00
2018-07-20 12:12:10 +00:00
2018-07-20 12:12:10 +00:00
2018-07-20 12:12:10 +00:00
2018-07-20 12:12:10 +00:00
2017-12-05 19:42:07 +00:00
2018-07-20 12:12:10 +00:00
2017-12-04 17:18:51 +00:00
2017-06-26 13:38:27 +00:00
2018-04-30 17:52:32 +00:00
2017-11-14 20:00:34 +00:00
2018-07-20 12:12:10 +00:00
2018-07-20 12:12:10 +00:00
2018-07-20 12:12:10 +00:00
2018-07-20 12:12:10 +00:00
2018-07-20 12:12:10 +00:00
2018-07-20 12:12:10 +00:00
2018-07-20 12:12:10 +00:00
2018-07-20 12:12:10 +00:00
2018-07-20 12:12:10 +00:00
2018-07-20 12:12:10 +00:00
2018-07-20 12:12:10 +00:00
2018-07-20 12:12:10 +00:00
2018-07-20 12:12:10 +00:00
2018-07-20 12:12:10 +00:00
2018-07-20 12:12:10 +00:00
2018-07-20 12:12:10 +00:00
2018-07-20 12:12:10 +00:00
2018-07-20 12:12:10 +00:00
2017-11-28 17:15:09 +00:00
2018-07-20 12:12:10 +00:00
2018-07-20 12:12:10 +00:00
2018-07-20 12:12:10 +00:00
2018-07-20 12:12:10 +00:00
2018-07-20 12:12:10 +00:00
2018-07-20 12:12:10 +00:00
2018-07-20 12:12:10 +00:00
2018-07-20 12:12:10 +00:00
2018-07-20 12:12:10 +00:00
2017-07-17 17:41:11 +00:00
2018-07-20 12:12:10 +00:00
2017-07-17 17:41:11 +00:00
2018-04-30 17:54:28 +00:00
2018-04-30 17:54:28 +00:00
2018-04-30 17:54:28 +00:00
2018-07-20 12:12:10 +00:00
2018-04-30 17:54:28 +00:00
2018-04-30 17:54:28 +00:00
2018-04-30 17:54:28 +00:00
2018-04-30 17:54:28 +00:00
2018-04-30 17:54:28 +00:00
2018-04-30 17:54:28 +00:00
2018-04-30 17:54:28 +00:00
2018-04-30 17:54:28 +00:00
2018-07-20 12:12:10 +00:00
2018-04-30 17:54:28 +00:00
2018-04-30 17:54:28 +00:00
2018-04-30 17:54:28 +00:00
2018-04-30 17:54:28 +00:00
2018-04-30 17:54:28 +00:00
2018-07-20 12:12:10 +00:00
2018-07-20 12:12:10 +00:00
2018-07-20 12:12:10 +00:00
2018-07-20 12:12:10 +00:00
2018-07-20 12:12:10 +00:00
2018-07-20 12:12:10 +00:00
2018-07-20 12:12:10 +00:00
2017-07-17 17:41:11 +00:00
2018-04-30 17:54:28 +00:00
2018-04-30 17:54:28 +00:00
2018-04-30 17:54:28 +00:00
2018-04-30 17:54:28 +00:00
2018-04-30 17:54:28 +00:00
2018-04-30 17:54:28 +00:00
2018-04-30 17:54:28 +00:00
2018-07-20 09:40:43 +00:00
2018-07-20 09:40:43 +00:00
2018-04-30 17:54:28 +00:00
2018-04-30 17:54:28 +00:00
2018-04-30 17:54:28 +00:00
2018-04-30 17:54:28 +00:00
2018-04-30 17:54:28 +00:00
2018-04-30 17:54:28 +00:00
2018-04-30 17:54:28 +00:00
2018-04-30 17:54:28 +00:00
2018-04-30 17:54:28 +00:00
2018-07-20 09:40:43 +00:00
2018-07-20 09:40:43 +00:00
2018-04-30 17:54:28 +00:00
2018-04-30 17:54:28 +00:00
2018-05-25 08:42:02 +00:00
2018-05-04 07:50:05 +00:00
2018-03-17 08:32:12 +00:00
2018-03-17 08:32:12 +00:00
2018-03-17 08:32:12 +00:00
2018-01-31 22:04:26 +00:00
2018-07-20 12:12:10 +00:00
2018-07-20 12:12:10 +00:00
2018-01-19 17:13:12 +00:00
2018-01-31 12:41:25 +00:00
2018-01-31 22:04:26 +00:00
2018-07-20 12:12:10 +00:00
2018-03-20 08:29:19 +00:00
2018-01-19 17:13:12 +00:00
2018-07-20 12:12:10 +00:00
2018-01-19 17:13:12 +00:00
2018-01-19 17:13:12 +00:00
2018-01-19 17:13:12 +00:00
2018-01-19 17:13:12 +00:00
2018-04-30 17:52:32 +00:00
2018-04-13 14:23:09 +00:00
2018-07-20 12:12:10 +00:00
2018-07-20 12:12:10 +00:00
2018-07-20 12:12:10 +00:00
2018-07-20 12:12:10 +00:00
2018-07-20 12:12:10 +00:00
2018-03-02 20:39:30 +00:00
2018-03-02 20:39:30 +00:00
2017-12-04 17:18:51 +00:00
2018-01-31 22:04:26 +00:00
2018-07-20 09:40:43 +00:00
2018-01-31 22:04:26 +00:00
2018-01-31 22:04:26 +00:00
2017-09-29 14:31:39 +00:00
2017-12-05 11:24:39 +00:00
2017-11-14 19:20:46 +00:00
2017-12-06 13:53:24 +00:00
2018-05-18 11:54:04 +00:00
2018-01-19 20:52:04 +00:00
2018-01-19 20:52:04 +00:00
2018-07-20 12:12:10 +00:00
2018-07-20 12:12:10 +00:00
2018-07-20 12:12:10 +00:00
2018-07-20 12:12:10 +00:00
2018-07-20 12:12:10 +00:00
2018-07-20 12:12:10 +00:00
2018-07-20 12:12:10 +00:00
2018-07-20 12:12:10 +00:00
2018-08-01 11:57:58 +00:00
2018-03-17 08:32:12 +00:00
2018-03-17 08:32:12 +00:00
2018-03-17 09:15:13 +00:00
2018-07-20 12:12:10 +00:00
2018-06-22 10:53:47 +00:00
2018-03-02 20:39:30 +00:00
2018-03-02 20:39:30 +00:00
2018-03-02 20:39:30 +00:00
2018-07-20 09:40:43 +00:00
2017-12-04 17:18:51 +00:00
2018-07-20 12:12:10 +00:00
2018-07-20 12:12:10 +00:00
2017-12-04 17:18:51 +00:00
2017-12-05 10:52:24 +00:00
2017-12-05 10:52:24 +00:00
2018-01-19 17:13:12 +00:00
2017-10-06 13:59:28 +00:00
2017-07-17 17:44:20 +00:00
2017-10-06 13:59:28 +00:00
2017-10-06 13:59:28 +00:00
2017-12-05 11:24:39 +00:00
2018-07-20 12:12:10 +00:00
2017-07-17 17:42:48 +00:00
2017-07-17 17:42:48 +00:00
2017-07-17 17:41:11 +00:00
2017-07-17 17:42:48 +00:00
2018-07-31 13:00:42 +00:00
2017-12-04 17:18:51 +00:00
2017-07-17 17:41:11 +00:00
2017-10-06 13:59:28 +00:00
2017-07-17 17:42:48 +00:00
2018-02-23 13:22:46 +00:00
2018-01-19 20:56:04 +00:00
2018-01-10 09:33:00 +00:00
2017-07-17 17:44:20 +00:00
2017-07-17 17:44:20 +00:00
2018-07-20 09:40:43 +00:00
2017-07-17 17:41:11 +00:00
2017-07-17 17:42:48 +00:00
2017-07-17 17:42:48 +00:00
2017-07-17 17:42:48 +00:00
2017-07-17 17:42:48 +00:00
2017-07-17 17:41:11 +00:00
2017-07-17 17:42:48 +00:00
2017-07-17 17:42:48 +00:00
2018-02-27 16:59:10 +00:00
2017-07-17 17:42:48 +00:00
2018-07-20 09:40:43 +00:00
2017-07-17 17:41:11 +00:00
2018-07-20 12:12:10 +00:00
2018-07-20 12:12:10 +00:00
2018-07-20 12:12:10 +00:00
2018-07-20 12:12:10 +00:00
2018-07-20 12:12:10 +00:00