Anton Blanchard
e269b08517
iommu: inline iommu_num_pages
...
A profile of a network benchmark showed iommu_num_pages rather high up:
0.52% iommu_num_pages
Looking at the profile, an integer divide is taking almost all of the time:
%
: c000000000376ea4 <.iommu_num_pages>:
1.93 : c000000000376ea4: fb e1 ff f8 std r31,-8(r1)
0.00 : c000000000376ea8: f8 21 ff c1 stdu r1,-64(r1)
0.00 : c000000000376eac: 7c 3f 0b 78 mr r31,r1
3.86 : c000000000376eb0: 38 84 ff ff addi r4,r4,-1
0.00 : c000000000376eb4: 38 05 ff ff addi r0,r5,-1
0.00 : c000000000376eb8: 7c 84 2a 14 add r4,r4,r5
46.95 : c000000000376ebc: 7c 00 18 38 and r0,r0,r3
45.66 : c000000000376ec0: 7c 84 02 14 add r4,r4,r0
0.00 : c000000000376ec4: 7c 64 2b 92 divdu r3,r4,r5
0.00 : c000000000376ec8: 38 3f 00 40 addi r1,r31,64
0.00 : c000000000376ecc: eb e1 ff f8 ld r31,-8(r1)
1.61 : c000000000376ed0: 4e 80 00 20 blr
Since every caller of iommu_num_pages passes in a constant power of two
we can inline this such that the divide is replaced by a shift. The
entire function is only a few instructions once optimised, so it is
a good candidate for inlining overall.
Signed-off-by: Anton Blanchard <anton@samba.org >
Cc: Akinobu Mita <akinobu.mita@gmail.com >
Signed-off-by: Andrew Morton <akpm@linux-foundation.org >
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org >
2010-08-09 20:45:05 -07:00
..
2010-07-31 14:20:02 +01:00
2010-05-26 08:30:15 -07:00
2010-06-20 19:46:07 -07:00
2010-07-22 18:06:25 +02:00
2010-08-02 15:03:21 -03:00
2010-07-26 01:17:41 -07:00
2010-07-31 02:37:17 -07:00
2010-05-28 01:38:00 +02:00
2010-05-31 13:11:47 +09:00
2010-07-23 14:07:47 +02:00
2010-06-28 14:16:08 +02:00
2010-06-28 14:16:08 +02:00
2010-08-05 13:26:20 +01:00
2010-07-28 15:09:26 +01:00
2010-07-03 13:13:22 -07:00
2010-06-04 16:00:42 -04:00
2010-08-07 14:24:41 -07:00
2010-08-07 17:07:31 -07:00
2010-07-24 23:26:09 -04:00
2010-06-15 09:56:01 +10:00
2010-08-01 19:36:03 -04:00
2010-05-27 09:12:53 -07:00
2010-07-09 00:09:20 -07:00
2010-07-06 08:59:53 +02:00
2010-05-30 09:00:03 -07:00
2010-06-01 12:23:18 +02:00
2010-06-24 21:30:09 -07:00
2010-08-09 20:44:55 -07:00
2010-08-02 15:34:57 +10:00
2010-08-04 11:47:58 -07:00
2010-07-27 12:40:55 +02:00
2010-05-25 08:07:00 -07:00
2010-05-27 09:12:53 -07:00
2010-06-29 15:29:31 -07:00
2010-08-09 20:45:04 -07:00
2010-06-14 16:37:26 -07:00
2010-05-29 09:12:30 -07:00
2010-08-06 15:36:47 -05:00
2010-06-29 10:07:12 +02:00
2010-08-03 13:47:04 -04:00
2010-08-09 20:45:04 -07:00
2010-06-08 21:40:36 +02:00
2010-07-29 15:16:18 -07:00
2010-08-04 11:00:45 +02:00
2010-08-05 13:53:35 -07:00
2010-05-27 09:12:53 -07:00
2010-07-30 09:36:01 -07:00
2010-08-05 17:17:51 +00:00
2010-07-21 16:01:46 +02:00
2010-06-14 12:19:41 +02:00
2010-07-04 20:17:22 -07:00
2010-06-30 15:00:50 -04:00
2010-05-25 08:07:02 -07:00
2010-07-24 20:49:29 -07:00
2010-07-07 15:59:38 -07:00
2010-07-21 16:01:47 +02:00
2010-08-05 09:22:31 -05:00
2010-08-06 09:23:07 -07:00
2010-05-27 22:03:07 -04:00
2010-06-25 21:33:12 -07:00
2010-08-02 10:09:04 +02:00
2010-07-29 23:09:18 +02:00
2010-08-09 20:44:59 -07:00
2010-07-22 22:58:58 +02:00
2010-07-11 22:22:23 +02:00
2010-08-01 17:06:44 -06:00
2010-07-20 22:05:34 -04:00
2010-07-21 11:00:25 -04:00
2010-07-12 14:41:40 +02:00
2010-05-25 08:07:01 -07:00
2010-05-27 09:12:42 -07:00
2010-07-19 11:54:16 +02:00
2010-08-09 20:44:58 -07:00
2010-06-30 01:21:38 -07:00
2010-06-16 18:08:13 +02:00
2010-06-05 02:23:17 -07:00
2010-07-01 12:45:34 -07:00
2010-06-03 03:21:52 -07:00
2010-06-03 03:21:52 -07:00
2010-06-03 03:21:52 -07:00
2010-06-03 03:21:52 -07:00
2010-08-04 15:31:02 -07:00
2010-07-27 21:01:35 -07:00
2010-06-02 05:53:56 -07:00
2010-06-03 03:21:52 -07:00
2010-06-15 11:48:58 -07:00
2010-06-23 13:16:38 -07:00
2010-06-01 08:55:52 -07:00
2010-07-15 23:52:33 -07:00
2010-08-03 09:49:09 -04:00
2010-07-29 13:24:57 +02:00
2010-08-05 08:48:53 +10:00
2010-07-09 11:42:03 -07:00
2010-08-09 20:45:05 -07:00
2010-07-19 15:44:25 +02:00
2010-06-22 08:07:01 +02:00
2010-07-19 22:01:26 -07:00
2010-06-03 03:21:52 -07:00
2010-05-25 08:07:09 -07:00
2010-08-07 13:03:53 -07:00
2010-07-11 21:41:23 +02:00
2010-08-03 00:42:17 -07:00
2010-08-05 09:22:30 -05:00
2010-08-09 20:45:05 -07:00
2010-08-05 09:22:21 -05:00
2010-05-27 09:12:45 -07:00
2010-07-27 20:48:19 -07:00
2010-08-09 20:44:58 -07:00
2010-06-29 10:07:09 +02:00
2010-08-02 06:40:39 +03:00
2010-08-02 06:39:44 +03:00
2010-08-01 10:47:00 +03:00
2010-05-26 17:34:16 +01:00
2010-05-26 13:07:55 +01:00
2010-07-02 10:59:24 +02:00
2010-05-25 08:07:07 -07:00
2010-07-06 13:45:24 -04:00
2010-06-16 18:03:15 +02:00
2010-08-02 15:35:11 +10:00
2010-08-04 11:47:58 -07:00
2010-05-25 08:07:09 -07:00
2010-07-14 17:14:00 +10:00
2010-08-09 20:45:02 -07:00
2010-05-25 08:07:00 -07:00
2010-08-09 20:44:56 -07:00
2010-05-25 08:06:59 -07:00
2010-06-09 08:50:31 -07:00
2010-06-03 03:21:52 -07:00
2010-08-01 10:35:26 +03:00
2010-08-09 20:44:58 -07:00
2010-08-09 20:45:00 -07:00
2010-06-05 11:17:36 +09:30
2010-07-30 09:41:39 -07:00
2010-06-30 13:01:11 -07:00
2010-06-03 03:21:52 -07:00
2010-06-03 03:21:52 -07:00
2010-06-03 03:21:52 -07:00
2010-07-02 21:59:08 -07:00
2010-08-04 15:31:02 -07:00
2010-06-15 21:44:29 -07:00
2010-07-30 14:46:10 -04:00
2010-06-22 13:24:02 -04:00
2010-08-07 13:19:36 -07:00
2010-08-06 13:41:39 -04:00
2010-07-30 14:41:56 -04:00
2010-07-30 14:46:10 -04:00
2010-07-25 23:29:21 +09:00
2010-06-24 15:42:37 -04:00
2010-05-30 09:00:03 -07:00
2010-05-31 00:28:35 -07:00
2010-08-01 01:42:42 -06:00
2010-07-30 00:03:58 -06:00
2010-07-05 16:14:30 -06:00
2010-07-05 16:14:52 -06:00
2010-07-05 16:14:25 -06:00
2010-07-24 09:58:22 -06:00
2010-07-30 00:03:59 -06:00
2010-07-30 00:03:58 -06:00
2010-08-08 10:02:59 -07:00
2010-08-09 20:45:02 -07:00
2010-07-31 19:53:06 +08:00
2010-05-27 09:12:44 -07:00
2010-07-16 11:13:08 +03:00
2010-08-09 20:44:58 -07:00
2010-08-06 09:20:19 -07:00
2010-07-30 09:29:35 -07:00
2010-08-09 20:44:58 -07:00
2010-06-01 08:55:52 -07:00
2010-06-27 18:50:00 +02:00
2010-08-06 09:39:22 -07:00
2010-06-04 15:21:45 -07:00
2010-06-03 03:21:52 -07:00
2010-07-18 19:15:26 -07:00
2010-06-03 14:54:39 +02:00
2010-08-05 13:53:34 -07:00
2010-07-19 01:58:48 +02:00
2010-07-19 02:00:34 +02:00
2010-07-19 01:58:48 +02:00
2010-07-19 02:01:06 +02:00
2010-07-19 01:58:48 +02:00
2010-07-18 19:15:26 -07:00
2010-05-27 18:56:27 +02:00
2010-07-23 12:50:46 +02:00
2010-08-09 20:44:59 -07:00
2010-05-27 09:12:52 -07:00
2010-08-03 09:48:50 -04:00
2010-05-25 08:07:03 -07:00
2010-07-05 14:43:50 +02:00
2010-06-14 16:37:26 -07:00
2010-06-03 03:21:52 -07:00
2010-07-19 11:02:51 +02:00
2010-05-27 09:12:50 -07:00
2010-05-27 09:12:50 -07:00
2010-05-27 09:12:51 -07:00
2010-05-30 09:02:47 -07:00
2010-08-09 20:45:02 -07:00
2010-07-22 13:46:21 -07:00
2010-08-09 20:45:02 -07:00
2010-06-03 03:21:52 -07:00
2010-05-27 09:12:39 -07:00
2010-08-02 15:33:40 +10:00
2010-05-27 09:12:49 -07:00
2010-05-25 12:22:33 +09:00
2010-05-25 11:41:43 -04:00
2010-08-09 20:44:58 -07:00
2010-08-03 00:31:48 -07:00
2010-06-09 17:31:22 +02:00
2010-07-04 19:48:33 +03:00
2010-06-09 18:55:57 +02:00
2010-06-03 03:18:19 -07:00
2010-06-16 14:55:35 -07:00
2010-06-01 08:55:52 -07:00
2010-07-19 02:00:35 +02:00
2010-08-09 20:45:04 -07:00
2010-06-07 11:59:27 -04:00
2010-07-21 21:43:06 +02:00
2010-08-05 13:53:35 -07:00
2010-07-21 19:27:07 -05:00
2010-05-27 09:12:51 -07:00
2010-07-27 12:40:55 +02:00
2010-08-03 09:48:45 -04:00
2010-08-09 20:44:57 -07:00
2010-06-21 12:23:36 -04:00
2010-08-06 09:17:02 -07:00
2010-08-06 10:37:02 -04:00
2010-06-28 23:24:30 -07:00
2010-06-16 14:55:34 -07:00
2010-07-21 09:51:15 +10:00
2010-08-02 10:37:17 -05:00
2010-07-09 11:42:03 -07:00
2010-05-25 08:06:59 -07:00
2010-06-03 03:21:52 -07:00
2010-08-07 12:42:58 -07:00
2010-07-06 08:54:08 +02:00
2010-08-02 15:34:57 +10:00