James Molloy
14cceb3342
[Thumb] Reapply r272251 with a fix for PR28348 (mk 2)
...
The important thing I was missing was ensuring newly added constants were kept in topological order. Repositioning the node is correct if the constant is newly added (so it has no topological ordering) but wrong if it already existed - positioning it next in the worklist would break the topological ordering.
Original commit message:
[Thumb] Select a BIC instead of AND if the immediate can be encoded more optimally negated
If an immediate is only used in an AND node, it is possible that the immediate can be more optimally materialized when negated. If this is the case, we can negate the immediate and use a BIC instead;
int i(int a) {
return a & 0xfffffeec;
}
Used to produce:
ldr r1, [CONSTPOOL]
ands r0, r1
CONSTPOOL: 0xfffffeec
And now produces:
movs r1, #255
adds r1, #20 ; Less costly immediate generation
bics r0, r1
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@274543 91177308-0d34-0410-b5e6-96231b3b80d8
2016-07-05 12:37:13 +00:00
..
2015-02-27 21:17:42 +00:00
2015-04-16 23:24:18 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-04-16 23:24:18 +00:00
2015-04-16 23:24:18 +00:00
2015-04-16 23:24:18 +00:00
2015-02-27 21:17:42 +00:00
2015-11-19 05:56:52 +00:00
2015-04-23 20:31:26 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-04-16 23:24:18 +00:00
2016-06-23 16:07:10 +00:00
2015-02-27 21:17:42 +00:00
2013-07-14 06:24:09 +00:00
2015-02-27 21:17:42 +00:00
2016-02-04 01:27:38 +00:00
2015-03-13 18:20:45 +00:00
2015-02-27 19:29:02 +00:00
2016-05-10 19:17:47 +00:00
2015-03-13 18:20:45 +00:00
2016-05-10 19:17:47 +00:00
2014-05-30 10:09:59 +00:00
2015-04-16 23:24:18 +00:00
2015-02-27 21:17:42 +00:00
2015-03-13 18:20:45 +00:00
2015-04-16 23:24:18 +00:00
2014-05-30 10:09:59 +00:00
2010-12-04 04:40:19 +00:00
2013-07-14 06:24:09 +00:00
2015-04-23 20:31:30 +00:00
2015-02-27 21:17:42 +00:00
2015-11-19 05:56:52 +00:00
2015-02-27 21:17:42 +00:00
2015-03-19 22:48:57 +00:00
2013-07-13 20:38:47 +00:00
2015-07-21 00:18:59 +00:00
2016-01-26 00:03:25 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2014-04-03 23:47:24 +00:00
2016-07-05 12:37:13 +00:00
2014-05-30 10:09:59 +00:00
2016-01-28 18:59:04 +00:00
2015-04-23 20:31:35 +00:00
2015-05-31 19:22:07 +00:00
2015-02-27 21:17:42 +00:00
2014-11-13 17:58:53 +00:00
2015-06-17 20:52:32 +00:00
2014-10-01 09:02:17 +00:00
2015-09-30 10:56:37 +00:00
2015-02-27 21:17:42 +00:00
2015-04-09 14:07:28 +00:00
2016-04-11 22:27:40 +00:00
2015-07-15 08:39:35 +00:00
2015-11-12 01:02:47 +00:00
2015-10-07 16:58:49 +00:00
2015-06-24 20:03:27 +00:00
2015-02-27 21:17:42 +00:00
2015-11-18 00:40:54 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2012-05-09 19:07:04 +00:00
2015-04-16 23:24:18 +00:00
2015-04-23 20:31:26 +00:00
2016-03-29 00:23:41 +00:00
2014-06-09 22:42:55 +00:00
2014-04-03 23:47:24 +00:00
2015-02-27 21:17:42 +00:00
2015-09-30 10:56:37 +00:00
2014-04-03 23:47:24 +00:00
2015-07-17 23:18:26 +00:00
2014-04-10 22:58:43 +00:00
2015-07-16 22:34:20 +00:00
2015-02-27 19:29:02 +00:00
2015-02-27 21:17:42 +00:00
2014-04-03 23:47:24 +00:00
2014-04-03 23:47:24 +00:00
2014-04-03 23:47:24 +00:00
2014-04-03 23:47:24 +00:00
2014-04-03 23:47:24 +00:00
2014-04-03 23:47:24 +00:00
2014-04-03 23:47:24 +00:00
2014-04-03 23:47:24 +00:00
2014-04-03 23:47:24 +00:00
2014-04-03 23:47:24 +00:00
2014-04-03 23:47:24 +00:00
2014-04-03 23:47:24 +00:00
2014-04-03 23:47:24 +00:00
2014-04-03 23:47:24 +00:00
2014-05-30 10:09:59 +00:00
2015-02-27 21:17:42 +00:00
2016-05-10 19:17:47 +00:00
2016-06-24 18:16:36 +00:00
2014-04-03 23:47:24 +00:00
2014-04-03 23:47:24 +00:00
2014-12-15 19:07:53 +00:00
2014-04-03 23:47:24 +00:00
2014-04-03 23:47:24 +00:00
2016-05-10 17:57:27 +00:00
2014-04-03 23:47:24 +00:00
2014-04-03 23:47:24 +00:00
2015-02-27 21:17:42 +00:00
2015-11-18 00:40:54 +00:00
2015-11-18 00:40:54 +00:00
2015-02-27 21:17:42 +00:00
2014-04-03 23:47:24 +00:00
2016-05-10 19:17:47 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2014-04-03 23:47:24 +00:00
2014-04-03 23:47:24 +00:00
2014-04-03 23:47:24 +00:00
2014-04-03 23:47:24 +00:00
2014-04-03 23:47:24 +00:00
2014-04-04 01:19:56 +00:00
2014-04-03 23:47:24 +00:00
2014-04-03 23:47:24 +00:00
2014-04-03 23:47:24 +00:00
2015-10-23 17:19:19 +00:00
2014-04-03 23:47:24 +00:00
2014-04-03 23:47:24 +00:00
2014-04-03 23:47:24 +00:00
2014-04-03 23:47:24 +00:00
2014-04-03 23:47:24 +00:00
2014-04-03 23:47:24 +00:00
2014-04-03 23:47:24 +00:00
2014-04-03 23:47:24 +00:00
2013-12-13 11:16:00 +00:00
2014-04-03 23:47:24 +00:00
2014-04-03 23:47:24 +00:00
2014-04-03 23:47:24 +00:00
2014-04-03 23:47:24 +00:00
2014-04-03 23:47:24 +00:00
2014-04-03 23:47:24 +00:00
2014-04-03 17:35:22 +00:00
2014-04-03 23:47:24 +00:00
2015-10-23 17:19:19 +00:00
2015-10-23 17:19:19 +00:00
2015-09-30 10:56:37 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 19:29:02 +00:00
2015-02-27 19:29:02 +00:00
2015-02-27 19:29:02 +00:00
2014-04-03 23:47:24 +00:00
2014-04-03 23:47:24 +00:00
2014-04-03 23:47:24 +00:00
2014-04-03 23:47:24 +00:00
2014-04-03 23:47:24 +00:00
2014-07-23 13:59:12 +00:00
2014-04-03 23:47:24 +00:00
2016-01-26 00:03:25 +00:00
2015-05-31 19:22:07 +00:00
2014-04-03 23:47:24 +00:00
2014-04-03 23:47:24 +00:00
2014-04-03 23:47:24 +00:00
2014-04-03 23:47:24 +00:00
2015-11-20 20:24:49 +00:00
2014-04-03 23:47:24 +00:00
2015-02-27 21:17:42 +00:00
2016-06-16 16:09:53 +00:00
2015-04-23 20:31:26 +00:00
2015-09-30 10:56:37 +00:00
2015-02-27 21:17:42 +00:00
2015-09-01 01:42:16 +00:00
2013-11-13 18:29:49 +00:00
2016-06-24 18:16:36 +00:00
2014-02-26 11:27:28 +00:00