Ruixin(Peter) Bao
b2790a2838
cmd/compile: allow floating point Ops to produce flags on s390x
...
On s390x, some floating point arithmetic instructions (FSUB, FADD) generate flag.
This patch allows those related SSA ops to return a tuple, where the second argument of
the tuple is the generated flag. We can use the flag and remove the
subsequent comparison instruction (e.g: LTDBR).
This CL also reduces the .text section for math.test binary by 0.4KB.
Benchmarks:
name old time/op new time/op delta
Acos-18 12.1ns ± 0% 12.1ns ± 0% ~ (all equal)
Acosh-18 18.5ns ± 0% 18.5ns ± 0% ~ (all equal)
Asin-18 13.1ns ± 0% 13.1ns ± 0% ~ (all equal)
Asinh-18 19.4ns ± 0% 19.5ns ± 1% ~ (p=0.444 n=5+5)
Atan-18 10.0ns ± 0% 10.0ns ± 0% ~ (all equal)
Atanh-18 19.1ns ± 1% 19.2ns ± 2% ~ (p=0.841 n=5+5)
Atan2-18 16.4ns ± 0% 16.4ns ± 0% ~ (all equal)
Cbrt-18 14.8ns ± 0% 14.8ns ± 0% ~ (all equal)
Ceil-18 0.78ns ± 0% 0.78ns ± 0% ~ (all equal)
Copysign-18 0.80ns ± 0% 0.80ns ± 0% ~ (all equal)
Cos-18 7.19ns ± 0% 7.19ns ± 0% ~ (p=0.556 n=4+5)
Cosh-18 12.4ns ± 0% 12.4ns ± 0% ~ (all equal)
Erf-18 10.8ns ± 0% 10.8ns ± 0% ~ (all equal)
Erfc-18 11.0ns ± 0% 11.0ns ± 0% ~ (all equal)
Erfinv-18 23.0ns ±16% 26.8ns ± 1% +16.90% (p=0.008 n=5+5)
Erfcinv-18 23.3ns ±15% 26.1ns ± 7% ~ (p=0.087 n=5+5)
Exp-18 8.67ns ± 0% 8.67ns ± 0% ~ (p=1.000 n=4+4)
ExpGo-18 50.8ns ± 3% 52.4ns ± 2% ~ (p=0.063 n=5+5)
Expm1-18 9.49ns ± 1% 9.47ns ± 0% ~ (p=1.000 n=5+5)
Exp2-18 52.7ns ± 1% 50.5ns ± 3% -4.10% (p=0.024 n=5+5)
Exp2Go-18 50.6ns ± 1% 48.4ns ± 3% -4.39% (p=0.008 n=5+5)
Abs-18 0.67ns ± 0% 0.67ns ± 0% ~ (p=0.444 n=5+5)
Dim-18 1.02ns ± 0% 1.03ns ± 0% +0.98% (p=0.008 n=5+5)
Floor-18 0.78ns ± 0% 0.78ns ± 0% ~ (all equal)
Max-18 3.09ns ± 1% 3.05ns ± 0% -1.42% (p=0.008 n=5+5)
Min-18 3.32ns ± 1% 3.30ns ± 0% -0.72% (p=0.016 n=5+4)
Mod-18 62.3ns ± 1% 65.8ns ± 3% +5.55% (p=0.008 n=5+5)
Frexp-18 5.05ns ± 2% 4.98ns ± 0% ~ (p=0.683 n=5+5)
Gamma-18 24.4ns ± 0% 24.1ns ± 0% -1.23% (p=0.008 n=5+5)
Hypot-18 10.3ns ± 0% 10.3ns ± 0% ~ (all equal)
HypotGo-18 10.2ns ± 0% 10.2ns ± 0% ~ (all equal)
Ilogb-18 3.56ns ± 1% 3.54ns ± 0% ~ (p=0.595 n=5+5)
J0-18 113ns ± 0% 108ns ± 1% -4.42% (p=0.016 n=4+5)
J1-18 115ns ± 0% 109ns ± 1% -4.87% (p=0.016 n=4+5)
Jn-18 240ns ± 0% 230ns ± 2% -4.41% (p=0.008 n=5+5)
Ldexp-18 6.19ns ± 0% 6.19ns ± 0% ~ (p=0.444 n=5+5)
Lgamma-18 32.2ns ± 0% 32.2ns ± 0% ~ (all equal)
Log-18 13.1ns ± 0% 13.1ns ± 0% ~ (all equal)
Logb-18 4.23ns ± 0% 4.22ns ± 0% ~ (p=0.444 n=5+5)
Log1p-18 12.7ns ± 0% 12.7ns ± 0% ~ (all equal)
Log10-18 18.1ns ± 0% 18.2ns ± 0% ~ (p=0.167 n=5+5)
Log2-18 14.0ns ± 0% 14.0ns ± 0% ~ (all equal)
Modf-18 10.4ns ± 0% 10.5ns ± 0% +0.96% (p=0.016 n=4+5)
Nextafter32-18 11.3ns ± 0% 11.3ns ± 0% ~ (all equal)
Nextafter64-18 4.01ns ± 1% 3.97ns ± 0% ~ (p=0.333 n=5+4)
PowInt-18 32.7ns ± 0% 32.7ns ± 0% ~ (all equal)
PowFrac-18 33.2ns ± 0% 33.1ns ± 0% ~ (p=0.095 n=4+5)
Pow10Pos-18 1.58ns ± 0% 1.58ns ± 0% ~ (all equal)
Pow10Neg-18 5.81ns ± 0% 5.81ns ± 0% ~ (all equal)
Round-18 0.78ns ± 0% 0.78ns ± 0% ~ (all equal)
RoundToEven-18 0.78ns ± 0% 0.78ns ± 0% ~ (all equal)
Remainder-18 40.6ns ± 0% 40.7ns ± 0% ~ (p=0.238 n=5+4)
Signbit-18 1.57ns ± 0% 1.57ns ± 0% ~ (all equal)
Sin-18 6.75ns ± 0% 6.74ns ± 0% ~ (p=0.333 n=5+4)
Sincos-18 29.5ns ± 0% 29.5ns ± 0% ~ (all equal)
Sinh-18 14.4ns ± 0% 14.4ns ± 0% ~ (all equal)
SqrtIndirect-18 3.97ns ± 0% 4.15ns ± 0% +4.59% (p=0.008 n=5+5)
SqrtLatency-18 8.01ns ± 0% 8.01ns ± 0% ~ (all equal)
SqrtIndirectLatency-18 11.6ns ± 0% 11.6ns ± 0% ~ (all equal)
SqrtGoLatency-18 44.7ns ± 0% 45.0ns ± 0% +0.67% (p=0.008 n=5+5)
SqrtPrime-18 1.26µs ± 0% 1.27µs ± 0% +0.63% (p=0.029 n=4+4)
Tan-18 11.1ns ± 0% 11.1ns ± 0% ~ (all equal)
Tanh-18 15.8ns ± 0% 15.8ns ± 0% ~ (all equal)
Trunc-18 0.78ns ± 0% 0.78ns ± 0% ~ (all equal)
Y0-18 113ns ± 2% 108ns ± 3% -5.11% (p=0.008 n=5+5)
Y1-18 112ns ± 3% 107ns ± 0% -4.29% (p=0.000 n=5+4)
Yn-18 229ns ± 0% 220ns ± 1% -3.76% (p=0.016 n=4+5)
Float64bits-18 1.09ns ± 0% 1.09ns ± 0% ~ (all equal)
Float64frombits-18 0.55ns ± 0% 0.55ns ± 0% ~ (all equal)
Float32bits-18 0.96ns ±16% 0.86ns ± 0% ~ (p=0.563 n=5+5)
Float32frombits-18 1.03ns ±28% 0.84ns ± 0% ~ (p=0.167 n=5+5)
FMA-18 1.60ns ± 0% 1.60ns ± 0% ~ (all equal)
[Geo mean] 10.0ns 9.9ns -0.41%
Change-Id: Ief7e63ea5a8ba404b0a4696e12b9b7e0b05a9a03
Reviewed-on: https://go-review.googlesource.com/c/go/+/209160
Reviewed-by: Michael Munday <mike.munday@ibm.com>
Run-TryBot: Michael Munday <mike.munday@ibm.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
2020-04-08 20:57:58 +00:00
..
2017-01-20 05:55:53 +00:00
2019-03-06 18:53:12 +00:00
2020-03-25 22:22:20 +00:00
2019-04-02 16:34:03 +00:00
2020-04-08 20:57:58 +00:00
2016-05-02 13:43:18 +00:00
2020-04-08 18:35:43 +00:00
2016-05-02 13:43:18 +00:00
2015-10-07 14:37:44 +00:00
2019-11-06 09:09:59 +00:00
2017-03-16 02:44:16 +00:00
2019-09-08 17:28:20 +00:00
2019-09-16 15:30:51 +00:00
2014-01-07 13:26:48 +01:00
2019-04-16 16:20:39 +00:00
2018-03-01 21:11:16 +00:00
2019-08-28 19:27:20 +00:00
2016-05-02 13:43:18 +00:00
2020-02-21 22:57:52 +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
2020-03-29 17:12:56 +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
2020-03-29 17:12:56 +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
2019-09-08 17:28:20 +00:00
2018-10-06 15:40:03 +00:00
2018-08-14 09:19:38 +00:00
2014-01-31 00:30:56 +01: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
2019-09-26 18:45:53 +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
2019-09-26 23:54:29 +00:00
2016-05-02 13:43:18 +00:00
2016-10-04 17:10:47 +00:00
2019-09-06 23:15:48 +00:00
2019-03-14 21:00:20 +00:00
2019-09-06 23:15:48 +00:00
2016-05-02 13:43:18 +00:00
2016-05-02 13:43:18 +00:00
2020-02-26 16:54:17 +00:00
2014-01-24 22:35:11 +04:00
2019-10-16 00:05:37 +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-09-25 17:06:15 +00:00
2019-09-25 17:06:15 +00:00
2016-05-02 13:43:18 +00:00
2019-04-02 16:34:03 +00:00
2019-09-03 17:52:06 +00:00
2019-09-16 15:30:51 +00:00
2019-09-16 15:30:51 +00:00
2019-09-16 15:30:51 +00:00
2019-09-16 15:30:51 +00:00
2019-09-06 01:35:46 +00:00
2019-11-16 20:31:45 +00:00
2019-09-25 17:07:09 +00:00
2019-09-16 15:30:51 +00:00
2019-09-03 17:52:06 +00:00
2019-09-03 17:52:06 +00:00
2019-10-07 18:50:14 +00:00
2019-04-17 22:55:26 +00:00
2019-04-17 16:36:56 +00:00
2020-03-31 21:51:51 +00:00
2019-09-16 15:30:51 +00:00
2019-09-16 15:30:51 +00:00
2019-08-28 19:27:20 +00:00
2019-04-17 19:09:15 +00:00
2019-09-03 17:52:06 +00:00
2014-12-08 22:22:58 +00:00
2019-09-08 17:28:20 +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
2019-10-10 19:38:06 +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
2019-09-08 17:28:20 +00:00
2016-05-02 13:43:18 +00:00
2019-03-18 20:10:55 +00:00
2019-11-04 20:19:15 +00:00
2017-04-24 12:37:49 +00:00
2015-09-05 02:25:01 +00:00
2020-02-26 14:44:24 +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
2020-03-25 01:11:15 +00:00
2018-03-13 20:34:03 +00:00
2020-04-03 21:43:52 +00:00
2020-03-25 01:11:15 +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
2019-11-18 14:40:07 +00:00
2016-05-02 13:43:18 +00:00
2019-08-28 19:27:20 +00:00
2018-04-30 19:39:18 +00:00
2019-10-03 18:08:32 +00:00
2019-11-01 20:13:05 +00:00
2019-02-19 22:45:09 +00:00
2016-05-02 13:43:18 +00:00
2019-09-03 19:33:04 +00:00
2019-09-16 15:30:51 +00:00
2020-01-29 16:34:44 +00:00
2018-04-05 10:53:40 +00:00
2019-09-26 18:47:12 +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
2019-05-11 03:02:33 +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
2020-04-07 21:51:03 +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
2020-04-03 21:43:52 +00:00
2016-10-25 22:28:40 +00:00
2019-09-08 17:28:20 +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
2020-02-26 13:11:53 +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
2019-09-03 20:41:29 +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
2019-09-06 23:15:48 +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
2020-03-25 14:19:25 +00:00
2016-05-02 13:43:18 +00:00
2017-03-01 01:06:32 +00:00
2019-09-06 23:15:48 +00:00
2016-05-02 13:43:18 +00:00
2018-05-31 17:36:45 +00:00
2019-11-18 14:40:07 +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
2019-09-08 17:28:20 +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
2019-09-11 23:33:11 +00:00
2019-10-28 23:34:13 +00:00
2018-10-04 00:49:49 +00:00
2019-11-05 00:26:30 +00:00
2019-11-05 00:26:30 +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
2020-03-22 08:42:38 +00:00
2019-03-18 21:16:19 +00:00
2016-12-23 17:35:24 +00:00