linux-fsdevel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: David Woodhouse <dwmw2@infradead.org>
To: Jens Axboe <jens.axboe@oracle.com>
Cc: Andrew Morton <akpm@linux-foundation.org>,
	Ric Wheeler <ricwheeler@gmail.com>,
	linux-fsdevel@vger.kernel.org, gilad@codefidence.com,
	matthew@wil.cx
Subject: Re: [PATCH 9/7] blktrace: simplify flags handling in __blk_add_trace
Date: Sun, 10 Aug 2008 12:50:15 +0100	[thread overview]
Message-ID: <1218369015.5063.50.camel@pmac.infradead.org> (raw)
In-Reply-To: <1218368902.5063.48.camel@pmac.infradead.org>

On Sun, 2008-08-10 at 12:48 +0100, David Woodhouse wrote:
> On PPC64 this reduces the size of the code calculating these bits by
> about 60%. 

(gdb) disass make_what_old
Dump of assembler code for function make_what_old:
0x0000000000000000 <make_what_old+0>:	std     r30,-16(r1)
0x0000000000000004 <make_what_old+4>:	ld      r30,0(r2)
0x0000000000000008 <make_what_old+8>:	rlwinm  r9,r3,29,30,30
0x000000000000000c <make_what_old+12>:	rlwinm  r10,r3,1,29,29
0x0000000000000010 <make_what_old+16>:	extsw   r9,r9
0x0000000000000014 <make_what_old+20>:	rlwinm  r7,r3,0,29,29
0x0000000000000018 <make_what_old+24>:	ld      r8,-32768(r30)
0x000000000000001c <make_what_old+28>:	rldicr  r9,r9,2,61
0x0000000000000020 <make_what_old+32>:	rlwinm  r11,r3,30,28,28
0x0000000000000024 <make_what_old+36>:	ld      r30,-16(r1)
0x0000000000000028 <make_what_old+40>:	extsw   r10,r10
0x000000000000002c <make_what_old+44>:	rlwinm  r0,r3,30,27,27
0x0000000000000030 <make_what_old+48>:	rldicr  r10,r10,2,61
0x0000000000000034 <make_what_old+52>:	extsw   r11,r11
0x0000000000000038 <make_what_old+56>:	lwzx    r9,r8,r9
0x000000000000003c <make_what_old+60>:	lwzx    r3,r8,r7
0x0000000000000040 <make_what_old+64>:	extsw   r0,r0
0x0000000000000044 <make_what_old+68>:	rldicr  r11,r11,2,61
0x0000000000000048 <make_what_old+72>:	or      r3,r3,r9
0x000000000000004c <make_what_old+76>:	rldicr  r0,r0,2,61
0x0000000000000050 <make_what_old+80>:	lwzx    r9,r8,r10
0x0000000000000054 <make_what_old+84>:	or      r3,r3,r4
0x0000000000000058 <make_what_old+88>:	lwzx    r11,r8,r11
0x000000000000005c <make_what_old+92>:	or      r3,r3,r9
0x0000000000000060 <make_what_old+96>:	lwzx    r0,r8,r0
0x0000000000000064 <make_what_old+100>:	or      r3,r3,r11
0x0000000000000068 <make_what_old+104>:	or      r3,r3,r0
0x000000000000006c <make_what_old+108>:	clrldi  r3,r3,32
0x0000000000000070 <make_what_old+112>:	blr
End of assembler dump.
(gdb) disass make_what_new
Dump of assembler code for function make_what_new:
0x0000000000000074 <make_what_new+0>:	mr      r0,r3
0x0000000000000078 <make_what_new+4>:	rlwinm  r3,r3,16,13,13
0x000000000000007c <make_what_new+8>:	rlwinm  r9,r0,15,12,12
0x0000000000000080 <make_what_new+12>:	rlwinm  r11,r0,26,4,4
0x0000000000000084 <make_what_new+16>:	or      r3,r3,r9
0x0000000000000088 <make_what_new+20>:	rlwinm  r9,r0,23,3,3
0x000000000000008c <make_what_new+24>:	or      r3,r3,r4
0x0000000000000090 <make_what_new+28>:	rlwinm  r0,r0,23,2,2
0x0000000000000094 <make_what_new+32>:	or      r3,r3,r11
0x0000000000000098 <make_what_new+36>:	or      r3,r3,r9
0x000000000000009c <make_what_new+40>:	or      r3,r3,r0
0x00000000000000a0 <make_what_new+44>:	clrldi  r3,r3,32
0x00000000000000a4 <make_what_new+48>:	blr
End of assembler dump.

> On x86_64 it's less of a win -- only 40%.

(gdb) disass make_what_old
Dump of assembler code for function make_what_old:
0x0000000000000000 <make_what_old+0>:	mov    %edi,%edx
0x0000000000000002 <make_what_old+2>:	mov    %rdi,%rax
0x0000000000000005 <make_what_old+5>:	push   %rbp
0x0000000000000006 <make_what_old+6>:	and    $0x10,%edx
0x0000000000000009 <make_what_old+9>:	and    $0x4,%eax
0x000000000000000c <make_what_old+12>:	sar    $0x3,%edx
0x000000000000000f <make_what_old+15>:	mov    0x0(%rax),%eax
0x0000000000000015 <make_what_old+21>:	mov    %rsp,%rbp
0x0000000000000018 <make_what_old+24>:	movslq %edx,%rdx
0x000000000000001b <make_what_old+27>:	or     0x0(,%rdx,4),%eax
0x0000000000000022 <make_what_old+34>:	mov    %edi,%edx
0x0000000000000024 <make_what_old+36>:	and    $0x2,%edx
0x0000000000000027 <make_what_old+39>:	add    %edx,%edx
0x0000000000000029 <make_what_old+41>:	movslq %edx,%rdx
0x000000000000002c <make_what_old+44>:	or     %esi,%eax
0x000000000000002e <make_what_old+46>:	or     0x0(,%rdx,4),%eax
0x0000000000000035 <make_what_old+53>:	mov    %edi,%edx
0x0000000000000037 <make_what_old+55>:	and    $0x20,%edx
0x000000000000003a <make_what_old+58>:	and    $0x40,%edi
0x000000000000003d <make_what_old+61>:	sar    $0x2,%edx
0x0000000000000040 <make_what_old+64>:	sar    $0x2,%edi
0x0000000000000043 <make_what_old+67>:	movslq %edx,%rdx
0x0000000000000046 <make_what_old+70>:	movslq %edi,%rdi
0x0000000000000049 <make_what_old+73>:	or     0x0(,%rdx,4),%eax
0x0000000000000050 <make_what_old+80>:	or     0x0(,%rdi,4),%eax
0x0000000000000057 <make_what_old+87>:	leaveq 
0x0000000000000058 <make_what_old+88>:	retq   
End of assembler dump.
(gdb) disass make_what_new
Dump of assembler code for function make_what_new:
0x0000000000000059 <make_what_new+0>:	mov    %edi,%eax
0x000000000000005b <make_what_new+2>:	mov    %edi,%edx
0x000000000000005d <make_what_new+4>:	push   %rbp
0x000000000000005e <make_what_new+5>:	and    $0x4,%eax
0x0000000000000061 <make_what_new+8>:	and    $0x10,%edx
0x0000000000000064 <make_what_new+11>:	shl    $0xf,%edx
0x0000000000000067 <make_what_new+14>:	shl    $0x10,%eax
0x000000000000006a <make_what_new+17>:	mov    %rsp,%rbp
0x000000000000006d <make_what_new+20>:	or     %edx,%eax
0x000000000000006f <make_what_new+22>:	mov    %edi,%edx
0x0000000000000071 <make_what_new+24>:	and    $0x2,%edx
0x0000000000000074 <make_what_new+27>:	or     %esi,%eax
0x0000000000000076 <make_what_new+29>:	shl    $0x1a,%edx
0x0000000000000079 <make_what_new+32>:	leaveq 
0x000000000000007a <make_what_new+33>:	or     %edx,%eax
0x000000000000007c <make_what_new+35>:	mov    %edi,%edx
0x000000000000007e <make_what_new+37>:	and    $0x40,%edi
0x0000000000000081 <make_what_new+40>:	and    $0x20,%edx
0x0000000000000084 <make_what_new+43>:	shl    $0x17,%edi
0x0000000000000087 <make_what_new+46>:	shl    $0x17,%edx
0x000000000000008a <make_what_new+49>:	or     %edx,%eax
0x000000000000008c <make_what_new+51>:	or     %edi,%eax
0x000000000000008e <make_what_new+53>:	retq   
End of assembler dump.

-- 
David Woodhouse                            Open Source Technology Centre
David.Woodhouse@intel.com                              Intel Corporation




  reply	other threads:[~2008-08-10 11:50 UTC|newest]

Thread overview: 88+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-08-09 16:26 [PATCH 0/7] Discard requests, v2 David Woodhouse
2008-08-09 16:29 ` [PATCH 1/7] [BLOCK] Fix typo causing compile error in blk_queue_bounce() David Woodhouse
2008-08-09 16:30 ` [PATCH 2/7] [BLOCK] Fix up comments about matching flags between bio and rq David Woodhouse
2008-08-09 16:30 ` [PATCH 3/7] [BLOCK] Add 'discard' request handling David Woodhouse
2008-08-09 20:39   ` OGAWA Hirofumi
2008-08-09 21:37     ` David Woodhouse
2008-08-10  6:32     ` David Woodhouse
2008-08-09 16:31 ` [PATCH 4/7] [FAT] Let the block device know when sectors can be discarded David Woodhouse
2008-08-09 16:32 ` [PATCH 5/7] [MTD] Support 'discard sectors' operation in translation layer support core David Woodhouse
2008-08-09 16:33 ` [PATCH 6/7] [MTD] [FTL] Support 'discard sectors' operation David Woodhouse
2008-08-09 16:33 ` [PATCH 7/7] [BLOCK] Allow elevators to sort/merge discard requests David Woodhouse
2008-10-03 20:29   ` Andrew Morton
2008-10-07 12:07     ` Jens Axboe
2008-08-09 22:48 ` [PATCH 0/7] Discard requests, v2 OGAWA Hirofumi
2008-08-10 10:25   ` David Woodhouse
2008-08-10 16:37     ` Jamie Lokier
2008-08-10 17:55       ` OGAWA Hirofumi
2008-08-10 20:07         ` David Woodhouse
2008-08-10 21:40           ` OGAWA Hirofumi
2008-08-11  9:40             ` David Woodhouse
2008-08-11 10:25               ` OGAWA Hirofumi
2008-08-11 13:17                 ` David Woodhouse
2008-08-11 14:21                   ` OGAWA Hirofumi
2008-08-10 10:29 ` [PATCH 8/7] blktrace: support discard requests David Woodhouse
2008-08-10 10:35   ` [USERSPACE PATCH] " David Woodhouse
2008-08-15  8:43     ` Jens Axboe
2008-08-15  9:01       ` David Woodhouse
2008-08-15  9:08         ` Jens Axboe
2008-08-10 10:41   ` [PATCH 8/7] " David Woodhouse
2008-08-13 11:17     ` Jens Axboe
2008-08-10 11:48 ` [PATCH 9/7] blktrace: simplify flags handling in __blk_add_trace David Woodhouse
2008-08-10 11:50   ` David Woodhouse [this message]
2008-08-11 15:11 ` [PATCH 10/7] [BLOCK] Add BLKDISCARD ioctl to allow userspace to discard sectors David Woodhouse
2008-08-11 18:27   ` Matthew Wilcox
2008-08-11 20:52   ` David Woodhouse
2008-08-12  9:14 ` [PATCH 0/7] Discard requests, v2 Jens Axboe
2008-08-12 10:00   ` David Woodhouse
2008-08-12 10:54     ` Jens Axboe
2008-08-12 11:16       ` David Woodhouse
2008-08-12 12:19         ` David Woodhouse
2008-08-12 12:53           ` Jens Axboe
2008-08-12 13:04             ` David Woodhouse
2008-08-12 15:47               ` David Woodhouse
2008-08-12 18:04                 ` Jamie Lokier
2008-08-13 10:22                   ` David Woodhouse
2008-08-13 12:19                     ` Jamie Lokier
2008-08-13 12:26                       ` David Woodhouse
2008-08-13 11:15                 ` Jens Axboe
2008-08-13 11:23                   ` David Woodhouse
2008-08-13 11:32                     ` Jens Axboe
2008-08-13 11:34                       ` David Woodhouse
2008-08-13 12:07                         ` David Woodhouse
2008-08-14  7:49                         ` Jens Axboe
2008-08-14  7:52                           ` David Woodhouse
2008-08-14  7:25                       ` David Woodhouse
2008-08-14  7:33                         ` Stephen Rothwell
2008-08-14  7:37                           ` David Woodhouse
2008-08-14  7:42                           ` Jens Axboe
2008-08-14  7:46                             ` Stephen Rothwell
2008-08-12 18:10     ` Jamie Lokier
2008-08-13 10:20       ` David Woodhouse
2008-08-12 11:42   ` Matthew Wilcox
2008-08-12 11:46     ` David Woodhouse
2008-08-12 19:53   ` OGAWA Hirofumi
2008-08-12 20:11     ` OGAWA Hirofumi
2008-08-13 11:39 ` [PATCH 11/7] Kill REQ_TYPE_FLUSH David Woodhouse
2008-08-13 11:58   ` Geert Uytterhoeven
2008-08-13 12:43     ` David Woodhouse
2008-08-13 15:40   ` Jens Axboe
2008-08-13 15:46     ` David Woodhouse
2008-08-16 17:08 ` [PATCH 0/2] MMC discard support (was [PATCH 0/7] Discard requests, v2) Pierre Ossman
2008-08-16 17:11   ` [PATCH 1/2] mmc_block: factor out the mmc request handling Pierre Ossman
2008-08-16 17:12   ` [PATCH 2/2] mmc_block: erase discarded blocks Pierre Ossman
2008-08-16 17:38   ` [PATCH 0/2] MMC discard support (was [PATCH 0/7] Discard requests, v2) David Woodhouse
2008-08-16 17:51     ` Pierre Ossman
2008-08-22  9:24   ` Jens Axboe
2008-08-22  9:45     ` David Woodhouse
2008-08-22 10:50       ` Jens Axboe
2008-08-22 10:58         ` David Woodhouse
2008-08-22 11:11           ` Pierre Ossman
2008-08-22 11:19             ` Jens Axboe
2008-08-22 11:13     ` Pierre Ossman
2008-08-22 11:20       ` Jens Axboe
2008-08-22 14:49         ` OGAWA Hirofumi
2008-08-22 23:02           ` Pierre Ossman
2008-08-22 23:59             ` OGAWA Hirofumi
2008-08-24 11:23               ` Pierre Ossman
2008-08-24 13:39                 ` OGAWA Hirofumi

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1218369015.5063.50.camel@pmac.infradead.org \
    --to=dwmw2@infradead.org \
    --cc=akpm@linux-foundation.org \
    --cc=gilad@codefidence.com \
    --cc=jens.axboe@oracle.com \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=matthew@wil.cx \
    --cc=ricwheeler@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).