Michael Munday
2c1b5130aa
cmd/compile: add math/bits.{Add,Sub}64 intrinsics on s390x
...
This CL adds intrinsics for the 64-bit addition and subtraction
functions in math/bits. These intrinsics use the condition code
to propagate the carry or borrow bit.
To make the carry chains more efficient I've removed the
'clobberFlags' property from most of the load and store
operations. Originally these ops did clobber flags when using
offsets that didn't fit in a signed 20-bit integer, however
that is no longer true.
As with other platforms the intrinsics are faster when executed
in a chain rather than a loop because currently we need to spill
and restore the carry bit between each loop iteration. We may
be able to reduce the need to do this on s390x (e.g. by using
compare-and-branch instructions that do not clobber flags) in the
future.
name old time/op new time/op delta
Add64 1.21ns ± 2% 2.03ns ± 2% +67.18% (p=0.000 n=7+10)
Add64multiple 2.98ns ± 3% 1.03ns ± 0% -65.39% (p=0.000 n=10+9)
Sub64 1.23ns ± 4% 2.03ns ± 1% +64.85% (p=0.000 n=10+10)
Sub64multiple 3.73ns ± 4% 1.04ns ± 1% -72.28% (p=0.000 n=10+8)
Change-Id: I913bbd5e19e6b95bef52f5bc4f14d6fe40119083
Reviewed-on: https://go-review.googlesource.com/c/go/+/174303
Run-TryBot: Michael Munday <mike.munday@ibm.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Cherry Zhang <cherryyz@google.com>
2019-05-03 10:41:15 +00:00
..
2017-01-20 05:55:53 +00:00
2019-03-06 18:53:12 +00:00
2019-02-06 20:54:16 +00:00
2019-04-02 16:34:03 +00:00
2019-05-03 10:41:15 +00:00
2016-05-02 13:43:18 +00:00
2019-05-03 03:49:11 +00:00
2016-05-02 13:43:18 +00:00
2015-10-07 14:37:44 +00:00
2017-04-24 12:37:49 +00:00
2017-03-16 02:44:16 +00:00
2018-05-31 17:36:45 +00:00
2019-04-16 16:20:39 +00:00
2019-04-16 16:20:39 +00:00
2018-03-01 21:11:16 +00:00
2019-04-19 20:18:29 +00:00
2016-05-02 13:43:18 +00:00
2018-04-03 05:34:20 +00:00
2016-07-06 20:48:41 +00:00
2016-04-24 21:36:52 +00:00
2016-05-02 13:43:18 +00:00
2018-04-05 22:01:17 +00:00
2017-01-20 05:55:53 +00:00
2016-05-02 13:43:18 +00:00
2018-04-09 18:57:37 +00:00
2018-05-06 04:28:23 +00:00
2018-05-06 04:28:23 +00:00
2017-05-11 13:53:54 +00:00
2014-10-06 17:16:39 -04:00
2016-03-17 04:20:02 +00:00
2015-12-02 18:26:38 +00:00
2016-05-02 13:43:18 +00:00
2018-05-29 02:39:16 +00:00
2018-11-26 14:06:28 +00:00
2014-12-08 22:18:17 +00:00
2019-03-06 20:04:07 +00:00
2014-10-31 11:08:27 -04:00
2015-01-29 13:07:30 +00:00
2015-02-03 15:48:48 +00:00
2018-10-06 15:40:03 +00:00
2018-08-14 09:19:38 +00:00
2015-06-26 03:38:21 +00:00
2019-03-14 21:00:20 +00:00
2017-03-15 22:45:17 +00:00
2017-03-15 22:45:17 +00:00
2017-03-15 22:45:17 +00:00
2017-04-24 12:37:49 +00:00
2016-05-02 13:43:18 +00:00
2019-03-28 17:46:55 +00:00
2015-07-11 14:36:33 +00:00
2015-07-11 14:36:33 +00:00
2016-05-02 13:43:18 +00:00
2016-09-17 01:12:24 +00:00
2016-05-02 13:43:18 +00:00
2016-10-04 17:10:47 +00:00
2015-05-07 23:54:28 +00:00
2019-03-14 21:00:20 +00:00
2017-08-11 17:41:17 +00:00
2016-05-02 13:43:18 +00:00
2016-05-02 13:43:18 +00:00
2018-05-31 17:36:45 +00:00
2017-03-14 18:49:23 +00:00
2016-05-02 13:43:18 +00:00
2016-05-02 13:43:18 +00:00
2016-05-02 13:43:18 +00:00
2016-05-02 13:43:18 +00:00
2019-04-16 16:20:39 +00:00
2019-04-16 16:20:39 +00:00
2016-05-02 13:43:18 +00:00
2019-04-02 16:34:03 +00:00
2019-04-16 21:01:30 +00:00
2019-04-02 18:00:32 +00:00
2019-04-16 16:20:39 +00:00
2019-04-16 16:20:39 +00:00
2019-04-16 16:20:39 +00:00
2019-04-16 16:20:39 +00:00
2019-04-16 16:20:39 +00:00
2019-04-02 16:34:03 +00:00
2019-04-02 16:34:03 +00:00
2019-04-02 16:34:03 +00:00
2019-04-16 16:20:39 +00:00
2019-04-17 22:55:26 +00:00
2019-04-17 16:36:56 +00:00
2019-04-02 16:34:03 +00:00
2019-04-02 16:34:03 +00:00
2019-04-02 16:34:03 +00:00
2019-04-16 16:20:39 +00:00
2019-04-17 19:09:15 +00:00
2019-04-03 16:03:55 +00:00
2014-12-08 22:22:58 +00:00
2015-11-03 18:57:18 +00:00
2016-09-14 16:39:47 +00:00
2016-05-02 13:43:18 +00:00
2016-05-02 13:43:18 +00:00
2016-05-02 13:43:18 +00:00
2016-05-02 13:43:18 +00:00
2016-05-02 13:43:18 +00:00
2016-05-02 13:43:18 +00:00
2018-04-30 19:39:18 +00:00
2018-05-08 21:15:48 +00:00
2016-05-02 13:43:18 +00:00
2018-05-31 17:36:45 +00:00
2017-04-19 02:27:58 +00:00
2019-03-07 21:05:15 +00:00
2018-05-31 17:36:45 +00:00
2016-05-02 13:43:18 +00:00
2017-03-24 20:07:15 +00:00
2017-02-10 01:22:30 +00:00
2016-05-02 13:43:18 +00:00
2016-05-02 13:43:18 +00:00
2016-05-02 13:43:18 +00:00
2016-05-02 13:43:18 +00:00
2016-05-02 13:43:18 +00:00
2019-03-18 20:10:55 +00:00
2017-04-24 12:37:49 +00:00
2015-09-05 02:25:01 +00:00
2018-07-24 16:11:08 +00:00
2019-01-08 21:54:04 +00:00
2019-01-08 21:54:04 +00:00
2017-03-03 21:29:32 +00:00
2018-08-30 22:48:28 +00:00
2019-04-02 16:34:03 +00:00
2018-03-13 20:34:03 +00:00
2019-04-02 16:34:03 +00:00
2017-10-10 19:43:38 +00:00
2016-09-19 19:03:01 +00:00
2017-04-12 14:27:45 +00:00
2016-05-02 13:43:18 +00:00
2018-04-30 19:39:18 +00:00
2016-05-02 13:43:18 +00:00
2019-04-16 16:20:39 +00:00
2018-04-30 19:39:18 +00:00
2018-04-30 19:39:18 +00:00
2016-05-02 13:43:18 +00:00
2019-02-19 22:45:09 +00:00
2016-05-02 13:43:18 +00:00
2018-10-03 19:54:16 +00:00
2019-04-02 16:34:03 +00:00
2019-03-06 20:04:07 +00:00
2018-04-05 10:53:40 +00:00
2019-03-09 00:52:45 +00:00
2017-08-15 05:54:24 +00:00
2018-03-14 08:36:15 +00:00
2017-04-24 12:37:49 +00:00
2017-04-24 12:37:49 +00:00
2014-08-06 17:02:55 -04:00
2018-05-08 21:15:16 +00:00
2014-10-27 18:59:02 -04:00
2017-09-03 14:29:38 +00:00
2016-03-17 00:38:15 +00:00
2017-10-12 20:50:20 +00:00
2016-05-02 13:43:18 +00:00
2017-10-12 20:50:20 +00:00
2018-04-06 15:39:11 +00:00
2016-05-02 13:43:18 +00:00
2016-05-02 13:43:18 +00:00
2016-05-02 13:43:18 +00:00
2016-05-02 13:43:18 +00:00
2018-11-26 14:13:53 +00:00
2016-05-02 13:43:18 +00:00
2018-11-27 15:36:08 +00:00
2018-11-26 14:13:53 +00:00
2018-11-26 14:13:53 +00:00
2018-11-26 14:13:53 +00:00
2018-11-26 14:13:53 +00:00
2019-03-12 20:46:29 +00:00
2016-10-15 17:58:14 +00:00
2018-12-05 21:54:54 +00:00
2018-11-02 19:53:59 +00:00
2017-10-29 19:36:44 +00:00
2016-10-25 22:28:40 +00:00
2019-04-16 16:20:39 +00:00
2019-04-16 16:20:39 +00:00
2019-04-16 16:20:39 +00:00
2019-04-16 16:20:39 +00:00
2019-04-16 16:20:39 +00:00
2019-04-16 16:20:39 +00:00
2019-04-16 16:20:39 +00:00
2019-04-16 16:20:39 +00:00
2019-04-16 16:20:39 +00:00
2019-04-16 16:20:39 +00:00
2017-01-09 21:01:29 +00:00
2018-04-30 19:39:18 +00:00
2016-09-13 20:06:13 +00:00
2018-05-31 17:36:45 +00:00
2017-09-26 04:08:38 +00:00
2018-05-31 17:36:45 +00:00
2019-03-30 23:22:02 +00:00
2017-09-12 05:50:54 +00:00
2018-03-03 19:52:00 +00:00
2016-05-02 13:43:18 +00:00
2016-05-02 13:43:18 +00:00
2016-05-02 13:43:18 +00:00
2018-01-10 01:35:45 +00:00
2017-04-24 12:37:49 +00:00
2016-05-02 13:43:18 +00:00
2016-03-11 21:19:20 +00:00
2016-03-11 21:19:20 +00:00
2016-03-11 21:19:20 +00:00
2016-03-11 22:07:02 +00:00
2017-08-22 13:44:35 +00:00
2016-05-02 13:43:18 +00:00
2016-05-02 13:43:18 +00:00
2017-02-11 21:46:21 +00:00
2018-03-01 21:11:16 +00:00
2016-05-02 13:43:18 +00:00
2016-05-02 13:43:18 +00:00
2016-05-02 13:43:18 +00:00
2016-05-02 13:43:18 +00:00
2016-05-02 13:43:18 +00:00
2016-05-02 13:43:18 +00:00
2019-04-19 20:18:29 +00:00
2016-05-02 13:43:18 +00:00
2017-03-01 01:06:32 +00:00
2017-12-01 20:39:50 +00:00
2016-05-02 13:43:18 +00:00
2018-05-31 17:36:45 +00:00
2018-04-30 19:39:18 +00:00
2018-12-03 16:48:21 +00:00
2016-05-02 13:43:18 +00:00
2016-05-02 13:43:18 +00:00
2016-05-02 13:43:18 +00:00
2016-05-02 13:43:18 +00:00
2018-03-08 22:25:25 +00:00
2018-10-03 19:54:29 +00:00
2018-10-03 19:54:16 +00:00
2018-10-03 19:54:16 +00:00
2018-06-12 19:10:34 +00:00
2016-03-30 22:27:13 +00:00
2016-05-02 13:43:18 +00:00
2016-08-19 01:10:21 +00:00
2018-10-16 21:54:35 +00:00
2017-02-02 17:36:43 +00:00
2017-05-19 18:11:51 +00:00
2015-11-03 18:57:18 +00:00
2014-07-01 09:20:51 +02:00
2015-09-06 23:50:51 +00:00
2018-10-04 00:49:49 +00:00
2018-10-04 00:49:49 +00:00
2019-04-02 16:34:03 +00:00
2016-07-06 20:48:41 +00:00
2016-05-02 13:43:18 +00:00
2016-05-02 13:43:18 +00:00
2019-03-18 21:16:19 +00:00
2016-12-23 17:35:24 +00:00