Yanqin Wei
a0f7bf2220
util: implement count_1bits with Neon intrinsics or gcc built-in for aarch64.
...
Userspace datapath needs to traverse through miniflow values many times. In
this process, 'count_1bits' operation for 'Flowmap' significantly impact
performance. On arm, this function was defined by portable implementation
because gcc for arm does not support popcnt feature.
But in the aarch64, VCNT neon instruction can accelerate "count_1bits".
From Gcc-7, the built-in function is implemented with neon intruction.
In this patch, count_1bits function will be impelmented with gcc built-in
from gcc-7 on, and with neon intrinsics in gcc-6.
Performance test was run in two aarch64 machines. In the NIC2NIC test, one
tuple dpcls lookup case achieves around 4% throughput improvement and
10(average) tuples case achieves around 5% improvement.
Tested-by: Malvika Gupta <malvika.gupta@arm.com >
Signed-off-by: Yanqin Wei <Yanqin.Wei@arm.com >
Signed-off-by: Ben Pfaff <blp@ovn.org >
2019-06-13 10:22:12 -07:00
..
2018-07-09 20:53:06 -07:00
2019-01-15 09:52:33 -08:00
2019-06-11 09:39:36 +03:00
2019-01-25 13:09:52 -08:00
2018-10-03 15:12:11 -07:00
2016-06-29 15:24:18 -07:00
2019-04-24 08:33:38 -07:00
2019-03-26 14:12:37 -07:00
2017-12-22 12:58:02 -08:00
2017-12-22 12:58:02 -08:00
2017-11-03 13:33:05 -07:00
2016-05-16 17:46:55 -07:00
2018-06-11 15:31:42 -07:00
2016-07-22 17:09:17 -07:00
2016-07-29 16:52:01 -07:00
2019-04-23 09:08:51 -07:00
2018-03-31 11:32:10 -07:00
2018-12-24 09:31:23 -08:00
2018-07-24 17:01:03 +01:00
2017-11-29 08:37:52 -08:00
2018-10-30 07:24:55 -07:00
2018-08-07 12:26:25 -07:00
2018-08-07 12:26:25 -07:00
2018-10-30 07:24:55 -07:00
2016-08-08 09:11:21 -07:00
2019-04-08 12:38:55 -07:00
2019-05-09 15:18:25 -07:00
2019-05-09 15:18:25 -07:00
2019-06-05 14:58:43 -07:00
2019-05-09 15:18:25 -07:00
2019-06-07 11:29:13 -07:00
2019-05-09 15:18:25 -07:00
2019-05-24 11:37:29 -07:00
2019-05-24 11:37:29 -07:00
2016-09-14 16:51:27 -07:00
2017-12-22 12:58:02 -08:00
2017-01-04 16:31:06 -08:00
2019-05-24 09:50:53 -07:00
2019-05-24 09:50:53 -07:00
2016-06-27 20:36:16 -07:00
2018-09-06 11:02:48 -07:00
2018-10-24 14:39:04 +03:00
2016-06-27 20:36:16 -07:00
2018-10-24 14:39:04 +03:00
2018-03-31 12:48:36 -07:00
2018-03-31 12:48:36 -07:00
2018-08-03 17:37:05 -07:00
2018-07-23 16:09:43 -07:00
2017-04-05 15:35:31 -07:00
2018-06-04 14:31:15 -07:00
2018-12-12 11:51:13 -08:00
2018-06-06 07:55:55 -07:00
2017-05-18 15:19:05 -07:00
2017-12-01 13:22:18 -08:00
2018-07-06 15:04:33 -07:00
2018-11-09 13:20:06 -08:00
2018-07-06 13:50:00 -07:00
2019-03-13 11:08:00 +00:00
2019-03-13 11:07:24 +00:00
2019-06-11 09:39:36 +03:00
2017-06-23 16:28:26 +08:00
2019-06-11 09:39:36 +03:00
2019-05-24 15:31:28 +03:00
2019-06-11 09:39:36 +03:00
2019-05-24 15:31:28 +03:00
2019-03-22 21:52:25 +00:00
2018-10-12 11:40:28 +01:00
2018-10-12 15:22:54 +01:00
2019-06-11 09:39:36 +03:00
2016-11-14 13:35:22 -08:00
2018-07-06 13:38:01 -07:00
2017-05-19 12:51:58 -07:00
2019-06-11 09:39:36 +03:00
2018-03-31 12:48:33 -07:00
2019-02-14 14:18:56 -08:00
2019-04-22 12:56:50 -07:00
2019-06-01 10:12:02 -07:00
2016-04-27 15:00:37 -07:00
2016-04-27 15:00:37 -07:00
2016-08-10 13:54:07 -07:00
2017-07-11 13:05:34 -07:00
2017-11-03 10:47:55 -07:00
2019-06-07 11:21:26 -07:00
2019-02-14 11:39:18 -08:00
2019-01-25 12:57:16 -08:00
2019-02-27 10:22:52 -08:00
2019-01-25 13:09:52 -08:00
2016-07-18 22:45:51 -07:00
2019-03-26 13:29:55 -07:00
2018-02-01 11:21:34 -08:00
2016-07-22 17:09:17 -07:00
2017-07-13 15:47:38 -07:00
2017-03-08 16:52:06 -08:00
2019-02-25 09:44:52 -08:00
2019-02-14 14:18:56 -08:00
2018-07-05 15:08:20 -07:00
2019-04-15 12:54:41 -07:00
2018-03-24 12:04:53 -07:00
2019-06-10 09:12:02 -07:00
2019-06-10 09:12:02 -07:00
2017-11-03 10:47:55 -07:00
2017-11-03 10:47:55 -07:00
2019-03-26 14:12:37 -07:00
2018-02-01 10:08:32 -08:00
2018-05-23 21:18:12 -07:00
2018-02-13 10:43:13 -08:00
2016-06-07 08:22:33 -07:00
2016-06-07 08:22:33 -07:00
2016-07-22 17:09:17 -07:00
2018-07-06 14:26:20 -07:00
2018-07-06 14:26:20 -07:00
2019-02-04 13:34:41 -08:00
2017-11-03 10:47:55 -07:00
2017-03-03 11:33:22 -08:00
2017-11-03 10:47:55 -07:00
2019-04-12 15:08:02 -07:00
2019-03-07 08:02:49 -08:00
2019-06-09 16:01:55 -07:00
2017-03-08 17:22:27 -08:00
2018-02-13 10:43:13 -08:00
2019-01-25 13:09:52 -08:00
2017-12-20 21:07:46 +00:00
2019-06-11 09:39:36 +03:00
2019-06-11 09:39:36 +03:00
2019-06-11 09:39:36 +03:00
2019-06-11 09:39:36 +03:00
2019-06-11 09:39:36 +03:00
2018-07-09 20:53:06 -07:00
2018-05-21 20:33:30 -07:00
2019-06-11 09:39:36 +03:00
2019-06-11 09:39:36 +03:00
2019-06-13 09:05:11 +02:00
2019-06-11 09:39:36 +03:00
2019-06-11 09:39:36 +03:00
2019-06-11 09:39:36 +03:00
2016-06-02 11:50:34 -07:00
2019-06-11 09:39:36 +03:00
2017-06-27 17:28:30 -04:00
2017-11-03 10:47:55 -07:00
2019-06-11 09:39:36 +03:00
2019-06-11 09:39:36 +03:00
2019-05-24 09:50:53 -07:00
2017-12-07 13:49:40 -08:00
2018-03-31 12:48:31 -07:00
2018-02-05 09:21:36 -08:00
2018-03-31 12:48:36 -07:00
2018-09-20 14:31:34 +03:00
2018-03-31 12:48:36 -07:00
2017-07-27 14:13:03 -07:00
2017-12-22 12:58:02 -08:00
2018-03-31 12:48:31 -07:00
2019-02-04 16:33:30 -08:00
2019-02-04 16:33:30 -08:00
2016-07-29 16:52:02 -07:00
2016-08-30 10:47:24 -07:00
2019-04-22 12:56:50 -07:00
2018-05-23 11:36:47 -07:00
2019-05-09 13:56:15 -07:00
2019-02-25 15:38:25 -08:00
2019-06-09 16:01:55 -07:00
2019-02-05 09:21:19 -08:00
2018-06-18 15:25:44 -07:00
2018-08-16 12:56:54 -07:00
2019-02-05 09:21:19 -08:00
2019-02-05 09:21:19 -08:00
2019-06-09 16:19:30 -07:00
2018-06-18 15:25:44 -07:00
2019-02-05 09:21:19 -08:00
2018-06-27 07:08:02 -07:00
2019-02-05 09:21:19 -08:00
2019-02-05 09:21:19 -08:00
2019-02-05 09:21:19 -08:00
2019-04-22 12:56:50 -07:00
2019-02-05 09:21:19 -08:00
2019-02-05 09:21:19 -08:00
2016-04-14 16:38:31 -07:00
2019-02-05 09:21:19 -08:00
2019-02-05 09:21:19 -08:00
2019-02-05 09:21:19 -08:00
2019-02-05 09:21:19 -08:00
2019-02-05 09:21:19 -08:00
2018-02-13 10:43:13 -08:00
2018-02-13 10:43:13 -08:00
2019-02-05 09:21:19 -08:00
2019-03-14 08:45:05 +00:00
2019-05-10 12:39:08 -07:00
2017-10-17 16:53:58 -07:00
2018-01-10 20:39:50 +02:00
2019-02-14 11:39:20 -08:00
2018-06-11 15:31:51 -07:00
2016-07-22 17:09:17 -07:00
2018-02-28 14:53:34 -08:00
2018-02-28 14:53:34 -08:00
2018-02-01 11:26:58 -08:00
2018-02-01 11:26:58 -08:00
2018-04-18 16:31:15 -07:00
2018-04-18 16:31:15 -07:00
2019-03-14 08:45:05 +00:00
2018-12-10 09:51:46 -08:00
2016-07-18 22:58:45 -07:00
2016-07-18 22:58:45 -07:00
2018-10-03 18:13:48 -07:00
2018-03-24 12:04:52 -07:00
2017-12-13 11:32:54 -08:00
2017-12-13 11:32:54 -08:00
2019-05-24 11:37:29 -07:00
2019-05-24 11:37:29 -07:00
2019-04-15 12:54:41 -07:00
2016-07-22 17:09:17 -07:00
2017-12-01 13:22:18 -08:00
2018-05-25 13:36:05 -07:00
2017-12-13 11:33:07 -08:00
2018-03-24 12:04:53 -07:00
2018-03-24 12:04:53 -07:00
2018-03-24 12:04:53 -07:00
2016-08-14 16:51:06 -07:00
2017-12-01 13:22:18 -08:00
2018-05-25 13:36:05 -07:00
2018-10-04 13:29:53 -07:00
2018-05-16 15:29:46 -07:00
2018-05-16 15:29:46 -07:00
2019-02-22 17:32:49 -08:00
2019-03-25 14:46:13 -07:00
2018-11-16 10:55:20 -08:00
2018-10-05 17:35:07 -07:00
2019-04-24 08:37:08 -07:00
2019-01-17 16:36:38 -08:00
2017-11-28 15:55:15 -08:00
2017-11-28 15:55:15 -08:00
2016-08-10 14:58:51 -07:00
2019-04-15 12:29:31 -07:00
2019-03-01 10:51:16 -08:00
2018-03-14 16:29:34 -07:00
2019-03-22 13:46:42 -07:00
2018-03-24 12:04:51 -07:00
2018-04-18 16:31:15 -07:00
2018-06-05 11:17:13 -07:00
2018-06-05 11:17:13 -07:00
2018-06-11 15:31:53 -07:00
2017-06-08 14:13:53 -07:00
2019-01-25 13:09:52 -08:00
2018-06-29 14:57:32 +02:00
2018-11-10 11:29:56 -08:00
2018-03-31 12:08:15 -07:00
2019-01-25 13:09:52 -08:00
2016-09-02 11:46:59 -07:00
2017-12-22 12:58:02 -08:00
2018-03-31 12:22:58 -07:00
2017-11-03 10:47:55 -07:00
2016-04-14 13:48:05 -07:00
2017-05-05 08:52:32 -07:00
2017-05-05 08:52:32 -07:00
2019-02-04 16:22:04 -08:00
2017-08-03 14:48:33 -07:00
2018-03-24 12:04:53 -07:00
2018-03-24 12:04:53 -07:00
2016-09-15 10:40:35 -07:00
2019-01-25 13:09:52 -08:00
2018-11-05 07:11:10 -08:00
2018-02-01 11:21:34 -08:00
2016-07-22 17:09:17 -07:00
2017-01-19 07:57:13 -08:00
2016-11-10 10:36:42 -08:00
2016-11-10 10:36:42 -08:00
2018-05-09 14:40:49 -07:00
2018-10-30 07:24:55 -07:00
2016-08-08 09:11:21 -07:00
2019-05-08 10:26:26 -07:00
2018-04-06 12:55:51 -07:00
2018-06-11 15:31:53 -07:00
2017-03-20 10:23:04 -07:00
2017-11-03 10:47:55 -07:00
2017-07-17 10:05:46 -07:00
2016-11-10 10:36:42 -08:00
2017-07-17 10:05:46 -07:00
2019-04-16 14:27:58 -07:00
2018-08-07 12:26:31 -07:00
2018-04-16 14:51:09 -07:00
2017-12-08 14:21:19 -08:00
2018-05-08 18:28:51 +03:00
2019-01-10 15:39:48 -08:00
2019-01-10 15:39:48 -08:00
2017-08-07 11:17:42 -07:00
2017-08-07 11:17:42 -07:00
2018-03-24 12:04:51 -07:00
2018-03-24 12:04:51 -07:00
2016-06-26 20:31:28 -07:00
2018-08-09 15:40:09 -07:00
2018-08-09 15:40:09 -07:00
2018-10-08 12:38:03 -07:00
2018-10-08 12:38:03 -07:00
2017-12-22 11:50:33 -08:00
2017-04-06 08:13:03 -07:00
2019-04-09 17:34:07 +02:00
2019-04-09 17:34:07 +02:00
2017-11-03 10:47:55 -07:00
2017-11-28 15:53:23 -08:00
2017-11-28 15:53:23 -08:00
2018-04-10 16:19:14 -07:00
2018-05-21 20:33:30 -07:00
2017-11-28 16:46:19 -08:00
2017-11-03 10:47:55 -07:00
2018-03-31 11:31:36 -07:00
2016-09-19 09:52:22 -07:00
2017-12-19 14:25:06 -08:00
2019-01-10 15:39:48 -08:00
2018-08-07 12:26:20 -07:00
2016-08-03 07:23:30 -07:00
2018-02-01 13:03:44 -08:00
2019-05-24 15:31:28 +03:00
2019-06-13 10:22:12 -07:00
2017-10-24 16:09:16 -07:00
2018-03-24 12:04:53 -07:00
2018-07-06 13:50:00 -07:00
2018-07-06 13:50:00 -07:00
2017-11-03 10:47:55 -07:00
2019-01-15 16:59:37 -08:00
2016-07-29 16:52:01 -07:00
2017-03-15 14:45:40 -07:00
2018-10-30 07:24:55 -07:00
2018-08-09 15:40:09 -07:00
2018-10-30 07:24:55 -07:00
2018-08-09 15:40:09 -07:00
2017-05-19 15:19:32 -07:00
2016-12-20 12:21:24 -08:00