Jonas Paulsson
cbf682cb1c
[SystemZ] Improve codegen for memset.
...
Memset with a constant length was implemented with a single store followed by
a series of MVC:s. This patch changes this so that one store of the byte is
emitted for each MVC, which avoids data dependencies between the MVCs. An
MVI/STC + MVC(len-1) is done for each block.
In addition, memset with a variable length is now also handled without a
libcall. Since the byte is first stored and then MVC is used from that
address, a length of two must now be subtracted instead of one for the loop
and EXRL. This requires an extra check for the one-byte case, which is
handled in a special block with just a single MVI/STC (like GCC).
Review: Ulrich Weigand
Differential Revision: https://reviews.llvm.org/D112004
2021-12-06 12:10:58 -06:00
..
2021-07-06 18:46:36 -07:00
2021-07-07 10:21:07 +01:00
2021-07-07 10:21:07 +01:00
2020-12-30 15:26:09 -08:00
2021-05-18 14:30:22 -07:00
2021-05-18 14:30:22 -07:00
2021-03-02 12:56:47 -06:00
2020-12-14 12:39:38 -06:00
2020-12-30 15:26:09 -08:00
2021-06-30 16:54:13 -04:00
2021-10-21 09:48:59 -04:00
2021-10-21 09:48:59 -04:00
2021-10-21 09:48:59 -04:00
2021-06-30 16:54:13 -04:00
2021-03-03 14:04:32 -06:00
2021-03-03 14:04:32 -06:00
2021-03-03 14:04:32 -06:00
2021-05-25 10:24:14 -05:00
2021-06-08 15:42:46 -05:00
2021-06-30 16:54:13 -04:00
2021-02-17 16:11:58 -05:00
2021-06-30 16:54:13 -04:00
2021-06-30 16:54:13 -04:00
2021-06-30 16:54:13 -04:00
2021-06-30 16:54:13 -04:00
2021-06-30 16:54:13 -04:00
2020-12-23 22:47:36 +07:00
2020-12-09 00:59:01 +01:00
2020-12-09 00:59:01 +01:00
2021-06-30 16:54:13 -04:00
2021-06-30 16:54:13 -04:00
2021-06-30 16:54:13 -04:00
2021-06-30 16:54:13 -04:00
2021-06-30 16:54:13 -04:00
2021-06-30 16:54:13 -04:00
2021-06-30 16:54:13 -04:00
2021-06-30 16:54:13 -04:00
2021-09-24 10:26:45 +02:00
2021-06-17 09:38:28 +02:00
2021-06-30 16:54:13 -04:00
2021-05-06 12:50:49 +02:00
2020-12-04 13:51:01 -08:00
2021-07-12 15:04:08 +02:00
2020-12-30 15:26:09 -08:00
2020-12-30 15:26:09 -08:00
2020-12-30 15:26:09 -08:00
2020-12-30 15:26:09 -08:00
2020-12-30 15:26:09 -08:00
2020-12-30 15:26:09 -08:00
2020-12-30 15:26:09 -08:00
2020-12-30 15:26:09 -08:00
2021-08-04 01:47:39 +03:00
2021-06-30 16:54:13 -04:00
2021-10-11 15:28:31 -07:00
2021-06-30 16:54:13 -04:00
2021-06-08 16:27:28 -05:00
2021-10-15 19:08:45 +02:00
2021-11-29 19:01:59 -08:00
2021-11-29 19:01:59 -08:00
2021-11-29 19:01:59 -08:00
2020-12-30 15:26:09 -08:00
2020-12-30 15:26:09 -08:00
2020-12-30 15:26:09 -08:00
2021-11-29 19:01:59 -08:00
2020-12-04 13:51:01 -08:00
2021-06-30 16:54:13 -04:00
2020-12-30 15:26:09 -08:00
2021-06-30 16:54:13 -04:00
2021-10-14 10:37:33 +02:00
2021-10-14 10:37:33 +02:00
2021-10-14 10:37:33 +02:00
2020-12-30 15:26:09 -08:00
2021-12-06 12:10:58 -06:00
2021-12-06 12:10:58 -06:00
2021-12-06 12:10:58 -06:00
2021-10-26 17:03:01 +02:00
2021-09-21 14:32:28 +02:00
2021-12-06 12:10:58 -06:00
2021-01-14 15:46:27 +00:00
2021-06-30 16:54:13 -04:00
2021-10-14 10:37:33 +02:00
2021-05-24 19:43:40 +02:00
2021-10-26 12:07:22 +02:00
2020-12-30 15:26:09 -08:00
2021-06-30 16:54:13 -04:00
2020-12-30 15:26:09 -08:00
2021-06-30 16:54:13 -04:00
2021-06-30 16:54:13 -04:00
2021-02-17 16:11:58 -05:00
2021-06-30 16:54:13 -04:00
2020-12-23 16:16:26 -08:00
2021-05-06 18:14:41 +02:00
2020-12-30 15:26:09 -08:00
2020-12-11 18:25:47 -06:00
2020-12-11 18:25:47 -06:00
2021-09-28 08:10:16 +01:00
2021-05-24 19:43:40 +02:00
2021-05-24 19:43:40 +02:00
2021-05-24 19:43:40 +02:00
2021-05-24 19:43:40 +02:00
2021-08-10 13:56:54 -04:00
2021-06-30 16:54:13 -04:00
2020-11-20 17:58:26 -05:00
2021-12-06 12:10:58 -06:00
2020-12-30 15:26:09 -08:00
2021-10-07 10:10:11 +01:00
2021-05-30 11:40:55 +01:00
2021-07-26 16:57:28 +02:00
2021-10-13 12:57:57 -04:00
2021-07-27 11:29:15 -04:00