Alexander van Heukelum
6fd92b63d0
x86: change x86 to use generic find_next_bit
...
The versions with inline assembly are in fact slower on the machines I
tested them on (in userspace) (Athlon XP 2800+, p4-like Xeon 2.8GHz, AMD
Opteron 270). The i386-version needed a fix similar to 06024f21 to avoid
crashing the benchmark.
Benchmark using: gcc -fomit-frame-pointer -Os. For each bitmap size
1...512, for each possible bitmap with one bit set, for each possible
offset: find the position of the first bit starting at offset. If you
follow ;). Times include setup of the bitmap and checking of the
results.
Athlon Xeon Opteron 32/64bit
x86-specific: 0m3.692s 0m2.820s 0m3.196s / 0m2.480s
generic: 0m2.622s 0m1.662s 0m2.100s / 0m1.572s
If the bitmap size is not a multiple of BITS_PER_LONG, and no set
(cleared) bit is found, find_next_bit (find_next_zero_bit) returns a
value outside of the range [0, size]. The generic version always returns
exactly size. The generic version also uses unsigned long everywhere,
while the x86 versions use a mishmash of int, unsigned (int), long and
unsigned long.
Using the generic version does give a slightly bigger kernel, though.
defconfig: text data bss dec hex filename
x86-specific: 4738555 481232 626688 5846475 5935cb vmlinux (32 bit)
generic: 4738621 481232 626688 5846541 59360d vmlinux (32 bit)
x86-specific: 5392395 846568 724424 6963387 6a40bb vmlinux (64 bit)
generic: 5392458 846568 724424 6963450 6a40fa vmlinux (64 bit)
Signed-off-by: Alexander van Heukelum <heukelum@fastmail.fm >
Signed-off-by: Ingo Molnar <mingo@elte.hu >
2008-04-26 19:21:16 +02:00
..
2008-04-17 17:41:07 +02:00
2008-04-26 17:35:48 +02:00
2008-04-17 17:41:33 +02:00
2008-04-17 17:41:08 +02:00
2008-04-17 17:41:08 +02:00
2008-03-27 16:08:45 +01:00
2008-04-17 17:41:08 +02:00
2008-04-17 17:41:33 +02:00
2008-02-03 16:20:13 +02:00
2008-04-17 17:41:33 +02:00
2008-04-24 23:57:32 +02:00
2008-04-17 17:41:21 +02:00
2008-02-08 09:22:29 -08:00
2008-04-17 17:41:21 +02:00
2008-01-30 13:34:07 +01:00
2007-10-17 20:16:29 +02:00
2008-04-17 17:41:21 +02:00
2008-04-17 17:41:21 +02:00
2008-04-17 17:41:33 +02:00
2008-01-30 13:30:17 +01:00
2008-02-04 16:47:56 +01:00
2008-04-17 17:41:21 +02:00
2008-04-17 17:41:21 +02:00
2007-10-17 20:17:13 +02:00
2008-04-26 17:35:47 +02:00
2008-04-26 19:21:16 +02:00
2008-04-26 19:21:16 +02:00
2008-04-26 19:21:16 +02:00
2008-04-19 19:19:54 +02:00
2008-01-30 13:31:19 +01:00
2008-04-17 17:41:22 +02:00
2008-02-04 16:48:04 +01:00
2008-04-17 17:41:22 +02:00
2007-10-17 20:17:15 +02:00
2008-04-17 17:41:31 +02:00
2008-01-30 13:32:49 +01:00
2008-04-17 17:41:22 +02:00
2008-04-17 17:41:22 +02:00
2008-04-17 17:41:22 +02:00
2008-04-17 17:41:22 +02:00
2008-04-17 17:41:22 +02:00
2008-02-01 17:49:43 +01:00
2008-04-17 17:41:19 +02:00
2007-10-17 20:17:08 +02:00
2008-04-17 17:41:22 +02:00
2008-04-17 17:41:22 +02:00
2007-10-17 20:35:37 +02:00
2008-02-06 10:41:06 -08:00
2008-04-17 17:41:22 +02:00
2008-04-17 17:41:22 +02:00
2007-10-22 08:13:19 -07:00
2008-04-17 17:41:22 +02:00
2008-04-19 19:19:57 +02:00
2008-04-17 17:41:22 +02:00
2008-01-30 13:33:44 +01:00
2008-01-30 13:32:03 +01:00
2008-04-17 17:41:22 +02:00
2008-04-19 19:19:55 +02:00
2008-04-17 17:41:22 +02:00
2008-01-30 13:34:06 +01:00
2008-04-17 17:41:23 +02:00
2008-04-17 17:41:23 +02:00
2008-04-17 17:41:23 +02:00
2008-01-30 13:32:51 +01:00
2007-10-17 20:17:08 +02:00
2007-10-17 20:17:21 +02:00
2008-04-25 19:54:07 +02:00
2008-04-25 19:54:07 +02:00
2008-04-25 19:54:07 +02:00
2008-04-17 17:41:30 +02:00
2007-10-17 20:16:29 +02:00
2008-04-17 17:41:23 +02:00
2008-01-30 13:33:09 +01:00
2008-04-19 19:19:58 +02:00
2008-04-17 17:41:33 +02:00
2008-04-17 17:41:23 +02:00
2008-01-30 13:33:35 +01:00
2007-10-17 20:16:53 +02:00
2008-04-17 17:41:23 +02:00
2008-01-30 13:33:28 +01:00
2008-02-04 16:48:03 +01:00
2008-04-17 17:41:23 +02:00
2008-04-17 17:41:23 +02:00
2008-04-19 19:19:55 +02:00
2008-01-30 13:33:14 +01:00
2008-04-17 17:41:23 +02:00
2008-01-30 13:30:28 +01:00
2008-04-17 17:41:23 +02:00
2008-04-18 00:46:35 +02:00
2008-01-30 13:30:28 +01:00
2007-10-17 20:17:10 +02:00
2008-04-24 23:40:47 +02:00
2008-04-24 23:40:47 +02:00
2008-04-26 17:35:47 +02:00
2008-04-24 23:40:47 +02:00
2008-04-17 17:41:23 +02:00
2007-10-30 00:22:22 +01:00
2008-04-17 17:41:24 +02:00
2008-04-17 17:41:24 +02:00
2008-04-17 17:41:24 +02:00
2008-04-17 17:41:24 +02:00
2008-04-17 17:41:24 +02:00
2007-10-23 15:49:47 +10:00
2008-01-30 13:30:16 +01:00
2008-04-17 17:41:33 +02:00
2008-04-18 08:37:01 -07:00
2008-04-17 17:41:24 +02:00
2008-04-17 20:05:37 +02:00
2007-10-17 20:26:13 +02:00
2008-04-17 17:41:24 +02:00
2008-04-17 17:41:24 +02:00
2008-01-30 17:52:55 +02:00
2008-04-17 17:41:24 +02:00
2008-01-30 18:01:22 +02:00
2007-10-17 20:16:47 +02:00
2008-04-17 17:41:24 +02:00
2008-04-17 17:41:24 +02:00
2008-04-17 17:40:51 +02:00
2008-04-17 17:41:24 +02:00
2008-01-30 13:31:55 +01:00
2008-04-17 17:41:24 +02:00
2008-04-17 17:41:25 +02:00
2008-01-30 13:30:56 +01:00
2007-10-17 20:26:15 +02:00
2008-04-17 17:41:25 +02:00
2008-04-17 17:41:25 +02:00
2008-04-17 17:41:25 +02:00
2008-04-17 17:41:25 +02:00
2008-04-17 17:41:25 +02:00
2008-04-17 17:41:25 +02:00
2008-01-30 13:31:43 +01:00
2008-04-17 17:41:25 +02:00
2008-04-17 17:41:35 +02:00
2007-10-23 22:37:24 +02:00
2008-04-17 17:41:25 +02:00
2008-04-17 17:41:30 +02:00
2008-04-17 17:41:30 +02:00
2008-04-17 17:41:25 +02:00
2008-04-17 17:41:25 +02:00
2008-04-17 17:41:25 +02:00
2007-10-17 20:17:10 +02:00
2008-04-17 17:41:01 +02:00
2008-04-17 17:40:58 +02:00
2008-01-30 13:34:10 +01:00
2008-04-19 19:19:55 +02:00
2008-04-17 17:41:25 +02:00
2008-04-17 17:41:25 +02:00
2008-04-17 17:41:30 +02:00
2008-04-24 23:40:47 +02:00
2008-04-17 17:41:26 +02:00
2008-04-24 23:57:31 +02:00
2008-04-17 17:41:26 +02:00
2008-04-17 17:41:19 +02:00
2007-10-12 15:03:20 -07:00
2008-04-19 19:19:55 +02:00
2008-04-17 17:41:26 +02:00
2008-04-17 17:41:26 +02:00
2008-04-17 17:41:26 +02:00
2008-04-17 17:41:26 +02:00
2008-04-24 23:57:31 +02:00
2008-04-26 17:35:48 +02:00
2008-04-24 23:57:31 +02:00
2008-04-17 17:41:26 +02:00
2007-10-16 11:51:29 -07:00
2008-04-17 17:41:26 +02:00
2008-04-25 12:48:08 -07:00
2008-04-17 17:41:26 +02:00
2008-04-17 17:41:26 +02:00
2008-04-26 17:35:46 +02:00
2008-04-26 17:35:47 +02:00
2008-04-17 17:41:30 +02:00
2008-02-29 18:55:43 +01:00
2008-04-26 17:35:47 +02:00
2008-04-17 17:41:27 +02:00
2007-10-23 22:37:24 +02:00
2007-10-17 20:17:08 +02:00
2008-04-17 17:41:27 +02:00
2008-04-26 17:35:47 +02:00
2007-10-17 20:17:08 +02:00
2008-01-30 13:30:34 +01:00
2008-04-17 17:41:27 +02:00
2008-04-19 19:19:57 +02:00
2007-10-17 20:17:08 +02:00
2008-04-17 17:41:29 +02:00
2008-04-17 10:42:34 -04:00
2007-10-17 20:17:10 +02:00
2007-10-17 20:17:09 +02:00
2008-04-17 17:41:27 +02:00
2007-10-23 22:37:24 +02:00
2007-10-17 20:17:10 +02:00
2008-04-17 17:41:27 +02:00
2008-04-17 17:41:27 +02:00
2007-10-17 20:26:17 +02:00
2008-04-17 17:41:27 +02:00
2008-04-24 23:15:44 +02:00
2008-01-31 19:27:19 -08:00
2007-10-17 20:17:09 +02:00
2008-04-17 17:41:33 +02:00
2008-01-30 13:31:21 +01:00
2008-04-17 17:41:29 +02:00
2008-04-17 17:41:27 +02:00
2008-01-30 13:33:07 +01:00
2007-10-23 22:37:24 +02:00
2007-10-23 22:37:24 +02:00
2008-04-17 17:41:27 +02:00
2008-04-17 17:41:27 +02:00
2008-04-17 17:41:27 +02:00
2008-04-17 17:41:27 +02:00
2008-04-17 17:41:27 +02:00
2008-04-17 17:41:30 +02:00
2008-01-30 13:31:08 +01:00
2008-04-17 17:41:28 +02:00
2008-04-17 17:41:28 +02:00
2007-10-17 20:17:10 +02:00
2008-02-07 08:42:16 -08:00
2008-04-19 19:19:55 +02:00
2008-04-19 19:19:55 +02:00
2008-04-19 19:19:55 +02:00
2008-01-30 13:31:10 +01:00
2008-01-30 13:30:06 +01:00
2008-02-06 10:41:02 -08:00
2007-10-17 20:26:18 +02:00
2008-04-17 17:41:28 +02:00
2008-04-19 19:45:00 +02:00
2008-04-17 17:41:37 +02:00
2008-04-24 23:15:44 +02:00
2007-10-17 20:32:07 +02:00
2008-04-17 17:41:28 +02:00
2008-04-17 17:41:28 +02:00
2007-10-17 20:17:10 +02:00
2008-04-17 17:41:28 +02:00
2008-04-17 17:41:28 +02:00
2008-04-17 17:41:28 +02:00
2008-04-26 17:35:46 +02:00
2007-10-17 20:32:38 +02:00
2008-04-17 17:41:28 +02:00
2008-04-17 17:41:28 +02:00
2008-04-17 17:41:28 +02:00
2008-02-07 08:42:30 -08:00
2008-04-17 17:41:28 +02:00
2008-04-17 17:41:28 +02:00
2008-04-17 17:41:33 +02:00
2008-04-17 17:41:28 +02:00
2008-04-17 17:41:29 +02:00
2008-01-30 13:32:39 +01:00
2008-04-17 17:41:29 +02:00
2008-04-17 17:41:29 +02:00