From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1KGHYj-0007fz-F0 for mharc-grub-devel@gnu.org; Tue, 08 Jul 2008 14:05:01 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1KGHYi-0007fc-1o for grub-devel@gnu.org; Tue, 08 Jul 2008 14:05:00 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1KGHYg-0007fA-Fo for grub-devel@gnu.org; Tue, 08 Jul 2008 14:04:59 -0400 Received: from [199.232.76.173] (port=44619 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1KGHYg-0007f7-C2 for grub-devel@gnu.org; Tue, 08 Jul 2008 14:04:58 -0400 Received: from mailout09.t-online.de ([194.25.134.84]:36132) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1KGHYf-0000eK-KL for grub-devel@gnu.org; Tue, 08 Jul 2008 14:04:58 -0400 Received: from fwd30.aul.t-online.de by mailout09.sul.t-online.de with smtp id 1KGHYd-0006DG-00; Tue, 08 Jul 2008 20:04:55 +0200 Received: from [10.3.2.2] (XeSfygZQQhwsXSbb6PduMSpo9RNSjmMCixOm6fVF9MPZSizLMl-MelrolnfUBG+Qbn@[217.235.218.135]) by fwd30.aul.t-online.de with esmtp id 1KGHYJ-0XXxw00; Tue, 8 Jul 2008 20:04:35 +0200 Message-ID: <4873AC32.3060004@t-online.de> Date: Tue, 08 Jul 2008 20:04:34 +0200 From: Christian Franke User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.11) Gecko/20071128 SeaMonkey/1.1.7 MIME-Version: 1.0 To: The development of GRUB 2 References: <1215264476.26019.160.camel@localhost> <1215293427.17114.2.camel@dv> <1215298499.26019.192.camel@localhost> <20080706183042.GA22023@thorin> <1215374534.26019.194.camel@localhost> <48726DB3.9000809@t-online.de> In-Reply-To: <48726DB3.9000809@t-online.de> Content-Type: multipart/mixed; boundary="------------070001050801070508000705" X-ID: XeSfygZQQhwsXSbb6PduMSpo9RNSjmMCixOm6fVF9MPZSizLMl-MelrolnfUBG+Qbn X-TOI-MSGID: bd6c635d-8b72-46d2-b74b-19189c46cfcb X-detected-kernel: by monty-python.gnu.org: Linux 2.6 (newer, 3) Subject: Re: Endianness macros capitalization X-BeenThere: grub-devel@gnu.org X-Mailman-Version: 2.1.5 Precedence: list Reply-To: The development of GRUB 2 List-Id: The development of GRUB 2 List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 08 Jul 2008 18:05:00 -0000 This is a multi-part message in MIME format. --------------070001050801070508000705 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Christian Franke wrote: >>> > > Assembly code for grub_swap_bytes16 from Debian gcc 4.1.2-7: > > Macro or Inline: 4 bytes (minus possible additional benefit from > register level optimizations) > > 66 c1 c0 08 rol $0x8,%ax > > > Function call: 11 bytes > > 0f b7 c0 movzwl %ax,%eax > e8 xx xx xx xx call grub_swap_bytes16 > 0f b7 c0 movzwl %ax,%eax > > The break even is possibly at grub_swap_bytes64() :-) > I take that back. For i386, even grub_swap_bytes32() should possibly be a function. The attached script compares the sizes of 8 inline expansions of grub_swap_bytesNN() vs. function calls. Sample output (Debian gcc 4.1.2-7): /* 16 bit: inline=88, function=128 */ /* 32 bit: inline=357, function=104 */ #define GRUB_DONT_INLINE_GRUB_SWAP_BYTES32 1 /* 64 bit: inline=2621, function=167 */ #define GRUB_DONT_INLINE_GRUB_SWAP_BYTES64 1 With old gcc versions without the "rol" optimization, even the 16 bit swap should be a function: (Cygwin gcc 3.4.4): /* 16 bit: inline=148, function=116 */ #define GRUB_DONT_INLINE_GRUB_SWAP_BYTES16 1 /* 32 bit: inline=340, function=96 */ #define GRUB_DONT_INLINE_GRUB_SWAP_BYTES32 1 /* 64 bit: inline=2876, function=164 */ #define GRUB_DONT_INLINE_GRUB_SWAP_BYTES64 1 Interestingly, the 64bit inline result is much smaller if '-fomit-frame-pointer' is added: (Cygwin gcc 3.4.4): /* 16 bit: inline=144, function=112 */ #define GRUB_DONT_INLINE_GRUB_SWAP_BYTES16 1 /* 32 bit: inline=336, function=92 */ #define GRUB_DONT_INLINE_GRUB_SWAP_BYTES32 1 /* 64 bit: inline=1372, function=160 */ #define GRUB_DONT_INLINE_GRUB_SWAP_BYTES64 1 Christian --------------070001050801070508000705 Content-Type: text/plain; name="testsizes.sh.txt" Content-Transfer-Encoding: base64 Content-Disposition: inline; filename="testsizes.sh.txt" IyEvYmluL3NoDQoNCnNldCAtZQ0KDQpzcmNkaXI9Li4NCg0KY2F0IDw8RU9GID4gdGVzdC5j DQojaW5jbHVkZSA8Z3J1Yi90eXBlcy5oPg0KDQojaWZkZWYgZXh0Zg0KdHlwZSBleHRmKHR5 cGUpOw0KI2RlZmluZSBmdW5jIGV4dGYNCiNlbHNlDQojZGVmaW5lIGZ1bmMgaW5sZg0KI2Vu ZGlmDQoNCmV4dGVybiB0eXBlIHgxLHgyLHgzLHg0Ow0KDQp0eXBlIHRlc3QodHlwZSB4LCB0 eXBlICpwKQ0Kew0KICB4NCA9IGZ1bmMoZnVuYyh4MSkgKyBmdW5jKHgyKSArIGZ1bmMoeDMp KTsNCiAgKnAgPSBmdW5jKGZ1bmMoKnApICogMTMpOw0KICByZXR1cm4gZnVuYyhmdW5jKHgp ICsgNDIpOyANCn0NCkVPRg0KDQpDQz0iZ2NjIC1jIC1JLiAtSWluY2x1ZGUgLUkke3NyY2Rp cn0vaW5jbHVkZSAtT3MgLWZhbGlnbi1qdW1wcz0xIC1mYWxpZ24tbG9vcHM9MSAtZmFsaWdu LWZ1bmN0aW9ucz0xIC1tcmVncGFybT0zIC1tcnRkICQqIg0KDQpmb3IgYml0cyBpbiAxNiAz MiA2NDsgZG8NCiAgJHtDQ30gLUR0eXBlPWdydWJfdWludCR7Yml0c31fdCAtRGlubGY9Z3J1 Yl9zd2FwX2J5dGVzJHtiaXRzfSAgIC1vIHRlc3Qke2JpdHN9aS5vIHRlc3QuYw0KICBzaT0k KHNpemUgdGVzdCR7Yml0c31pLm8gfCBzZWQgLW4gJzJzLF4gKlwoWzAtOV0qXCkuKiQsXDEs cCcpDQogICR7Q0N9IC1EdHlwZT1ncnViX3VpbnQke2JpdHN9X3QgLURleHRmPWdydWJfc3dh cF9ieXRlcyR7Yml0c31fZiAtbyB0ZXN0JHtiaXRzfWYubyB0ZXN0LmMNCiAgc2Y9JChzaXpl IHRlc3Qke2JpdHN9Zi5vIHwgc2VkIC1uICcycyxeICpcKFswLTldKlwpLiokLFwxLHAnKQ0K ICBlY2hvICIvKiAke2JpdHN9IGJpdDogaW5saW5lPSRzaSwgZnVuY3Rpb249JHNmICovIg0K ICBbICRzaSAtZ3QgJHNmIF0gJiYgZWNobyAiI2RlZmluZSBHUlVCX0RPTlRfSU5MSU5FX0dS VUJfU1dBUF9CWVRFUyR7Yml0c30gMSINCiAgI3JtIC1mIHRlc3Qke2JpdHN9e2ksZn0ubw0K ZG9uZQ0KDQpybSAtZiB0ZXN0LmMNCg0K --------------070001050801070508000705--