Sam Clegg
1b6d879ec1
[WebAssembly] Fix code generated for atomic operations in PIC mode
...
The main this this test does is to add the `IsNotPIC` predicate to the
all the atomic instructions pattern that directly refer to
`tglobaladdr`.
This is because in PIC mode we need to generate separate instruction
sequence (either a direct global.get, or __memory_base + offset) for
accessing global addresses.
As part of this change I noticed that many of the `Requires` attributes
added to the instruction in `WebAssemblyInstrAtomics.td` were being
honored. This is because the wrapped in a `let Predicates =
[HasAtomics]` block and it seems that that outer wrapping overrides any
`Requires` on defs within it. As a workaround I removed the outer
`let` and added `HasAtomics` to all the inner `Requires`. I believe
that all the instrucitons that don't have `Requires` explicit bottom out
in `ATOMIC_I` and `ATOMIC_NRI` which have `HasAtomics` so this should
not remove this predicate from any patterns (at least that is the idea).
The alternative to this approach looks like implementing something
like `PredicateControl` in `Mips.td` where we can split the predicates
into groups so they don't clobber each other.
Differential Revision: https://reviews.llvm.org/D92744
2020-12-08 18:41:32 -08:00
..
2020-11-20 17:58:26 -05:00
2020-12-04 18:11:35 -08:00
2020-06-17 16:25:50 -07:00
2020-11-13 12:04:48 -08:00
2019-02-28 18:39:08 +00:00
2020-12-08 18:41:32 -08:00
2019-02-28 18:39:08 +00:00
2020-07-06 12:49:50 -07:00
2019-09-18 23:18:16 +00:00
2020-11-20 14:00:46 -05:00
2020-02-18 15:55:20 -08:00
2020-10-29 13:37:55 -07:00
2019-03-29 19:36:51 +00:00
2020-09-08 09:27:40 -07:00
2020-06-03 14:04:59 -07:00
2018-08-27 15:45:51 +00:00
2020-02-13 10:16:06 -08:00
2019-01-14 22:03:43 +00:00
2019-01-14 22:03:43 +00:00
2019-10-15 01:11:51 +00:00
2019-01-08 06:25:55 +00:00
2019-01-08 06:25:55 +00:00
2020-06-15 08:31:56 -07:00
2019-01-18 02:47:48 +00:00
2018-05-10 17:49:11 +00:00
2018-11-19 17:10:36 +00:00
2020-04-16 16:32:17 -07:00
2020-06-04 13:25:10 -07:00
2018-08-27 15:45:51 +00:00
2020-06-06 22:30:51 -04:00
2018-10-25 23:55:10 +00:00
2020-12-04 18:11:35 -08:00
2019-12-11 11:54:57 -08:00
2020-02-18 15:55:20 -08:00
2020-02-18 15:55:20 -08:00
2020-02-18 15:55:20 -08:00
2019-01-08 06:25:55 +00:00
2018-11-19 17:10:36 +00:00
2020-08-08 15:23:11 -07:00
2019-01-08 06:25:55 +00:00
2020-02-18 15:55:20 -08:00
2020-08-26 09:20:46 +01:00
2018-11-19 17:10:36 +00:00
2019-02-23 00:07:39 +00:00
2020-10-07 09:42:49 -07:00
2019-10-09 21:42:08 +00:00
2020-11-18 13:08:46 +03:00
2020-02-18 15:55:20 -08:00
2018-05-10 17:49:11 +00:00
2019-01-09 14:20:20 +00:00
2019-02-23 00:07:39 +00:00
2018-08-27 15:45:51 +00:00
2019-03-05 20:35:34 +00:00
2019-02-01 22:27:34 +00:00
2020-11-20 17:58:26 -05:00
2020-06-11 15:11:45 -07:00
2018-08-27 15:45:51 +00:00
2019-01-08 06:25:55 +00:00
2020-11-18 17:05:58 -08:00
2019-04-26 18:45:04 +00:00
2020-02-18 15:55:20 -08:00
2015-07-06 23:14:57 +00:00
2020-02-18 15:55:20 -08:00
2020-10-29 13:37:55 -07:00
2020-10-29 13:37:55 -07:00
2020-10-29 13:37:55 -07:00
2020-12-04 23:22:47 -08:00
2020-12-04 23:22:47 -08:00
2020-06-15 08:31:56 -07:00
2020-10-07 09:42:49 -07:00
2020-10-07 09:42:49 -07:00
2020-06-20 00:06:39 -07:00
2020-01-23 18:13:52 -08:00
2020-09-25 11:45:16 -07:00
2020-04-09 18:44:50 -07:00
2020-10-07 09:42:49 -07:00
2020-10-08 11:37:19 -07:00
2020-03-26 16:19:02 -07:00
2019-02-23 00:07:39 +00:00
2019-01-29 10:53:42 +00:00
2019-01-29 10:53:42 +00:00
2020-02-18 15:55:20 -08:00
2019-01-14 18:25:29 +00:00
2020-07-06 12:49:50 -07:00
2020-01-17 17:23:56 -08:00
2020-02-18 14:56:09 -08:00
2020-02-18 14:56:09 -08:00
2020-02-18 15:55:20 -08:00
2019-03-29 22:00:18 +00:00
2019-12-24 16:27:51 -08:00
2018-11-18 11:58:47 +00:00
2020-12-08 18:41:32 -08:00
2019-01-08 06:25:55 +00:00
2020-12-04 13:51:01 -08:00
2020-05-04 14:44:39 +01:00
2019-04-23 21:17:03 +00:00
2020-09-06 15:42:21 -07:00
2019-01-14 22:03:43 +00:00
2019-01-31 00:35:37 +00:00
2019-03-21 11:18:54 +00:00
2019-05-13 19:40:18 +00:00
2020-01-24 14:26:27 -08:00
2019-10-09 21:42:08 +00:00
2020-07-15 07:34:22 +00:00
2020-02-18 15:55:20 -08:00
2020-02-18 15:55:20 -08:00
2019-11-15 16:22:01 -08:00
2020-02-18 15:55:20 -08:00
2019-02-23 00:07:39 +00:00
2020-07-10 18:27:52 -07:00
2020-02-04 18:36:32 -08:00
2020-02-04 18:36:32 -08:00
2020-10-13 04:36:59 +00:00
2020-10-29 13:37:55 -07:00
2020-05-01 17:20:49 -07:00
2020-02-04 18:36:32 -08:00
2020-10-30 17:23:30 -07:00
2020-10-15 19:32:34 +00:00
2019-10-31 20:02:24 -07:00
2020-06-09 13:46:12 -07:00
2020-08-03 13:54:00 -07:00
2018-12-21 06:58:15 +00:00
2020-06-03 15:36:44 -07:00
2019-01-02 20:43:08 +00:00
2020-07-28 17:46:45 -07:00
2019-06-19 00:02:13 +00:00
2020-02-04 18:36:32 -08:00
2020-07-16 11:37:25 -07:00
2020-02-25 13:54:48 -08:00
2020-07-10 00:18:59 -07:00
2020-07-02 16:21:54 +08:00
2020-05-19 12:50:44 -07:00
2020-07-28 18:25:55 -07:00
2020-07-10 18:27:52 -07:00
2020-06-25 15:52:44 -07:00
2020-06-03 14:04:59 -07:00
2020-07-08 01:02:05 -07:00
2020-05-14 13:14:45 -07:00
2020-10-29 13:37:55 -07:00
2020-10-29 13:37:55 -07:00
2020-06-15 08:31:56 -07:00
2020-03-19 17:39:52 -07:00
2020-06-11 15:11:45 -07:00
2020-06-17 12:34:45 -07:00
2020-07-30 10:52:16 -07:00
2020-11-20 14:00:46 -05:00
2020-05-08 13:52:39 -07:00
2020-01-24 14:27:35 -08:00
2020-11-13 07:59:29 -08:00
2020-11-13 07:59:29 -08:00
2020-02-18 15:55:20 -08:00
2020-02-18 15:55:20 -08:00
2020-11-03 14:56:25 -08:00
2019-02-26 05:20:19 +00:00
2018-07-02 16:03:49 +00:00
2019-02-28 18:39:08 +00:00
2020-04-04 07:02:50 -07:00
2020-11-19 16:57:00 -08:00