bcache: Delete some slower inline asm
authorKent Overstreet <kmo@daterainc.com>
Thu, 22 Aug 2013 01:36:45 +0000 (18:36 -0700)
committerKent Overstreet <kmo@daterainc.com>
Mon, 11 Nov 2013 05:56:42 +0000 (21:56 -0800)
Never saw a profile of bset_search_tree() where it wasn't bottlenecked
on memory until I got my new Haswell machine, but when I tried it there
it was suddenly burning 20% of the cpu in the inner loop on shrd...

Turns out, the version of shrd that takes 64 bit operands has a 9 cycle
latency. hah.

Signed-off-by: Kent Overstreet <kmo@daterainc.com>
drivers/md/bcache/bset.c

index 14573391206bcd02dbf5bcf30633420c06c5cac9..7d388b8bb50e35cf154d7c082ea492a5de08235d 100644 (file)
@@ -481,16 +481,8 @@ static struct bkey *table_to_bkey(struct bset_tree *t, unsigned cacheline)
 
 static inline uint64_t shrd128(uint64_t high, uint64_t low, uint8_t shift)
 {
-#ifdef CONFIG_X86_64
-       asm("shrd %[shift],%[high],%[low]"
-           : [low] "+Rm" (low)
-           : [high] "R" (high),
-           [shift] "ci" (shift)
-           : "cc");
-#else
        low >>= shift;
        low  |= (high << 1) << (63U - shift);
-#endif
        return low;
 }