From: pavenis AT lanet DOT lv Message-ID: To: Eli Zaretskii , djgpp-workers AT delorie DOT com Date: Mon, 9 Aug 1999 13:30:51 +0300 MIME-Version: 1.0 Content-type: Multipart/Mixed; boundary=Message-Boundary-3817 Subject: Re: Performance regression of 2.95 vs. 2.7, x86, loop-related (fwd) In-reply-to: X-mailer: Pegasus Mail for Win32 (v3.11) Reply-To: djgpp-workers AT delorie DOT com X-Mailing-List: djgpp-workers AT delorie DOT com X-Unsubscribes-To: listserv AT delorie DOT com Precedence: bulk --Message-Boundary-3817 Content-type: text/plain; charset=US-ASCII Content-transfer-encoding: 7BIT Content-description: Mail message body I tested DJGPP ports of gcc-2.7.2.1, gcc-2.8.1, egcs-1.1.2 and gcc- 2.95. The latest is ths only one which generates '.p2align 4,,7' (see attachments). Unfortunatelly I cannot test it easy more as no full example included (so no real benchmarking) Andris On 9 Aug 99, at 11:21, Eli Zaretskii wrote: > > Somebody posted the message below to the bug-gcc list. It seems like > this platforms had ".p2align 4,,7" even in v2.7.2.3. Andris, is this > something that is configured in a platform-dependent manner in GCC? > > ---------- Forwarded message ---------- > Date: Sun, 08 Aug 1999 17:55:40 -0700 > From: Zack Weinberg > To: gcc-bugs AT gcc DOT gnu DOT org, amylaar AT cygnus DOT co DOT uk > Cc: lm AT bitmover DOT com > Subject: Performance regression of 2.95 vs. 2.7, x86, loop-related > > > Consider this fragment: > > #include > > typedef struct > { > unsigned short cksum; > unsigned short encoding; > } sccs; > > #define E_GZIP 0x4 > > extern int zputs(void *, FILE *, unsigned char *, int, void (*)()); > extern void gzip_sum(); > > unsigned short > fpd(sccs *s, unsigned char *buf, FILE *out) > { > unsigned short sum = 0; > unsigned char *p, *q, c; > static unsigned char block[8192]; > static unsigned char *next = block; > > /* Checksum up to and including the first newline > * or the end of the string. > */ > p = buf; > q = next; > for (;;) { > for (;;) { > c = *p++; > if (c == '\0') goto done; > sum += c; > *q++ = c; > if (q == &block[8192]) break; > if (c == '\n') goto done; > } > if (s->encoding & E_GZIP) { > zputs((void *)s, out, block, 8192, gzip_sum); > } else { > fwrite(block, 8192, 1, out); > } > q = block; > if (c == '\n') break; > } > done: next = q; > if (!(s->encoding & E_GZIP)) s->cksum += sum; > return (sum); > } > > The structure of the loops is calculated to get near-optimal code > generation out of gcc 2.7.x. gcc 2.95, however, does a transformation > on it that nearly doubles the execution time of the function, which > leads to a 30% slowdown of the program this is taken from. I'm not > sure if it's loop or jump optimization. It is NOT global CSE, which > was my first hypothesis. > > Here is a side-by-side diff of assembly output for the function > (munged slightly to eliminate spurious differences). 2.7.2.3 is on > the left, 2.95 on the right. -O2 -fomit-frame-pointer was used both > times. The interesting bits are marked with stars at the left margin. > > fpd: fpd: > > subl $12,%esp > pushl %ebp pushl %ebp > pushl %edi pushl %edi > pushl %esi pushl %esi > pushl %ebx pushl %ebx > movl 20(%esp),%ebp | movl 32(%esp),%ebp > xorl %edi,%edi xorl %edi,%edi > movl 24(%esp),%esi | movl 36(%esp),%esi > movl next.23,%edx movl next.23,%edx > .p2align 4,,7 .p2align 4,,7 > .L20: .L20: > movb (%esi),%bl movb (%esi),%bl > incl %esi incl %esi > testb %bl,%bl testb %bl,%bl > je .L24 je .L24 > movzbw %bl,%ax movzbw %bl,%ax > ! addw %ax,%di | addl %eax,%edi > movb %bl,(%edx) movb %bl,(%edx) > incl %edx incl %edx > cmpl $block.22+8192,%edx cmpl $block.22+8192,%edx > * je .L21 | jne .L35 > * cmpb $10,%bl < > * je .L24 < > * jmp .L20 < > * .p2align 4,,7 < > *.L21: < > testb $4,2(%ebp) testb $4,2(%ebp) > je .L27 je .L27 > > addl $-12,%esp > pushl $gzip_sum pushl $gzip_sum > pushl $8192 pushl $8192 > pushl $block.22 pushl $block.22 > movl 40(%esp),%ecx | movl 64(%esp),%eax > pushl %ecx | pushl %eax > pushl %ebp pushl %ebp > call zputs call zputs > addl $20,%esp | addl $32,%esp > jmp .L28 jmp .L28 > .p2align 4,,7 .p2align 4,,7 > .L27: .L27: > movl 28(%esp),%ecx | movl 40(%esp),%eax > pushl %ecx | pushl %eax > pushl $1 pushl $1 > pushl $8192 pushl $8192 > pushl $block.22 pushl $block.22 > call fwrite call fwrite > addl $16,%esp addl $16,%esp > .L28: .L28: > movl $block.22,%edx movl $block.22,%edx > * > .L35: > cmpb $10,%bl cmpb $10,%bl > jne .L20 jne .L20 > .L24: .L24: > movl %edx,next.23 movl %edx,next.23 > testb $4,2(%ebp) testb $4,2(%ebp) > jne .L30 jne .L30 > addw %di,(%ebp) addw %di,(%ebp) > .L30: .L30: > movzwl %di,%eax movzwl %di,%eax > popl %ebx popl %ebx > popl %esi popl %esi > popl %edi popl %edi > popl %ebp popl %ebp > > addl $12,%esp > ret ret > > The change looks trivial but it isn't. The two places where c is > compared with '\n' have been merged into one, and that one is placed > AFTER the big block of code that is executed only rarely. The inner > loop therefore contains a jump to another cache line. It will almost > always be taken, but (if I understand x86 branch prediction correctly) > it will be mispredicted on the first few iterations - and the input > data to this function is such that the inner loop may only execute a > few times per call. > > It would be fine to merge the two comparisons if the sole instance > were contiguous with the inner loop and the outer loop code jumped > back up. > > It would be nice if I could get the code that gcc 2.7.x generated > without having to structure the source that way; it's far more natural > to write this with the "outer loop" in an if block inside the inner > loop. > > I'd also like to point out the line marked with an exclamation point. > Unless movzbw clears the high 16 bits of the destination register > (does it?), we are adding garbage to edi. > > zw > > --Message-Boundary-3817 Content-type: text/plain; charset=US-ASCII Content-disposition: inline Content-description: Attachment information. The following section of this message contains a file attachment prepared for transmission using the Internet MIME message format. If you are using Pegasus Mail, or any another MIME-compliant system, you should be able to save it or view it from within your mailer. If you cannot, please ask your system administrator for assistance. ---- File information ----------- File: z1-gcc2721.S Date: 9 Aug 1999, 13:13 Size: 1556 bytes. Type: Text --Message-Boundary-3817 Content-type: Application/Octet-stream; name="z1-gcc2721.S"; type=Text Content-disposition: attachment; filename="z1-gcc2721.S" Content-transfer-encoding: BASE64 CS5maWxlCSJ6MS5jIg0KZ2NjMl9jb21waWxlZC46DQpfX19nbnVfY29tcGlsZWRfYzoNCi5s Y29tbSBfYmxvY2suMiw4MTkyDQouZGF0YQ0KCS5hbGlnbiAyDQpfbmV4dC4zOg0KCS5sb25n IF9ibG9jay4yDQoudGV4dA0KCS5hbGlnbiAyDQouZ2xvYmwgX2ZwZA0KX2ZwZDoNCglwdXNo bCAlZWJwDQoJbW92bCAlZXNwLCVlYnANCglzdWJsICQxNiwlZXNwDQoJbW92dyAkMCwtMigl ZWJwKQ0KCW1vdmwgMTIoJWVicCksJWVheA0KCW1vdmwgJWVheCwtOCglZWJwKQ0KCW1vdmwg X25leHQuMywlZWF4DQoJbW92bCAlZWF4LC0xMiglZWJwKQ0KTDI6DQpMNToNCgltb3ZsIC04 KCVlYnApLCVlYXgNCgltb3ZiICglZWF4KSwlZGwNCgltb3ZiICVkbCwtMTMoJWVicCkNCglp bmNsIC04KCVlYnApDQoJY21wYiAkMCwtMTMoJWVicCkNCglqbmUgTDgNCglqbXAgTDkNCgku YWxpZ24gMiwweDkwDQpMODoNCgltb3Z6YncgLTEzKCVlYnApLCVheA0KCWFkZHcgJWF4LC0y KCVlYnApDQoJbW92bCAtMTIoJWVicCksJWVheA0KCW1vdmIgLTEzKCVlYnApLCVkbA0KCW1v dmIgJWRsLCglZWF4KQ0KCWluY2wgLTEyKCVlYnApDQoJY21wbCAkX2Jsb2NrLjIrODE5Miwt MTIoJWVicCkNCglqbmUgTDEwDQoJam1wIEw2DQoJLmFsaWduIDIsMHg5MA0KTDEwOg0KCWNt cGIgJDEwLC0xMyglZWJwKQ0KCWpuZSBMMTENCglqbXAgTDkNCgkuYWxpZ24gMiwweDkwDQpM MTE6DQpMNzoNCglqbXAgTDUNCgkuYWxpZ24gMiwweDkwDQpMNjoNCgltb3ZsIDgoJWVicCks JWVheA0KCW1vdncgMiglZWF4KSwlZHgNCglhbmR3ICQ0LCVkeA0KCXRlc3R3ICVkeCwlZHgN CglqZSBMMTINCglwdXNobCAkX2d6aXBfc3VtDQoJcHVzaGwgJDgxOTINCglwdXNobCAkX2Js b2NrLjINCgltb3ZsIDE2KCVlYnApLCVlYXgNCglwdXNobCAlZWF4DQoJbW92bCA4KCVlYnAp LCVlYXgNCglwdXNobCAlZWF4DQoJY2FsbCBfenB1dHMNCglhZGRsICQyMCwlZXNwDQoJam1w IEwxMw0KCS5hbGlnbiAyLDB4OTANCkwxMjoNCgltb3ZsIDE2KCVlYnApLCVlYXgNCglwdXNo bCAlZWF4DQoJcHVzaGwgJDENCglwdXNobCAkODE5Mg0KCXB1c2hsICRfYmxvY2suMg0KCWNh bGwgX2Z3cml0ZQ0KCWFkZGwgJDE2LCVlc3ANCkwxMzoNCgltb3ZsICRfYmxvY2suMiwtMTIo JWVicCkNCgljbXBiICQxMCwtMTMoJWVicCkNCglqbmUgTDE0DQoJam1wIEwzDQoJLmFsaWdu IDIsMHg5MA0KTDE0Og0KTDQ6DQoJam1wIEwyDQoJLmFsaWduIDIsMHg5MA0KTDM6DQoJbm9w DQpMOToNCgltb3ZsIC0xMiglZWJwKSwlZWF4DQoJbW92bCAlZWF4LF9uZXh0LjMNCgltb3Zs IDgoJWVicCksJWVheA0KCW1vdncgMiglZWF4KSwlZHgNCglhbmR3ICQ0LCVkeA0KCXRlc3R3 ICVkeCwlZHgNCglqbmUgTDE1DQoJbW92bCA4KCVlYnApLCVlYXgNCgltb3ZsIDgoJWVicCks JWVkeA0KCW1vdncgKCVlZHgpLCVjeA0KCWFkZHcgLTIoJWVicCksJWN4DQoJbW92dyAlY3gs KCVlYXgpDQpMMTU6DQoJbW92endsIC0yKCVlYnApLCVlZHgNCgltb3ZsICVlZHgsJWVheA0K CWptcCBMMQ0KCS5hbGlnbiAyLDB4OTANCkwxOg0KCWxlYXZlDQoJcmV0DQo= --Message-Boundary-3817 Content-type: text/plain; charset=US-ASCII Content-disposition: inline Content-description: Attachment information. The following section of this message contains a file attachment prepared for transmission using the Internet MIME message format. If you are using Pegasus Mail, or any another MIME-compliant system, you should be able to save it or view it from within your mailer. If you cannot, please ask your system administrator for assistance. ---- File information ----------- File: z1-gcc295.S Date: 9 Aug 1999, 13:03 Size: 1133 bytes. Type: Text --Message-Boundary-3817 Content-type: Application/Octet-stream; name="z1-gcc295.S"; type=Text Content-disposition: attachment; filename="z1-gcc295.S" Content-transfer-encoding: BASE64 CS5maWxlCSJ6MS5jIg0KZ2NjMl9jb21waWxlZC46DQpfX19nbnVfY29tcGlsZWRfYzoNCi5s Y29tbSBfYmxvY2suMyw4MTkyDQouZGF0YQ0KCS5wMmFsaWduIDINCl9uZXh0LjQ6DQoJLmxv bmcgX2Jsb2NrLjMNCi50ZXh0DQoJLnAyYWxpZ24gMg0KLmdsb2JsIF9mcGQNCl9mcGQ6DQoJ cHVzaGwgJWVicA0KCW1vdmwgJWVzcCwlZWJwDQoJc3VibCAkMTIsJWVzcA0KCXB1c2hsICVl ZGkNCglwdXNobCAlZXNpDQoJcHVzaGwgJWVieA0KCW1vdmwgMTIoJWVicCksJWVzaQ0KCW1v dmwgX25leHQuNCwlZWR4DQoJeG9ybCAlZWRpLCVlZGkNCgkucDJhbGlnbiA0LCw3DQpMMTk6 DQoJbW92YiAoJWVzaSksJWJsDQoJaW5jbCAlZXNpDQoJdGVzdGIgJWJsLCVibA0KCWplIEwx MA0KCXhvcmwgJWVheCwlZWF4DQoJbW92YiAlYmwsJWFsDQoJYWRkbCAlZWF4LCVlZGkNCglt b3ZiICVibCwoJWVkeCkNCglpbmNsICVlZHgNCgljbXBsICRfYmxvY2suMys4MTkyLCVlZHgN CglqbmUgTDIwDQoJbW92bCA4KCVlYnApLCVlYXgNCgl0ZXN0YiAkNCwyKCVlYXgpDQoJamUg TDE0DQoJYWRkbCAkLTEyLCVlc3ANCglwdXNobCAkX2d6aXBfc3VtDQoJcHVzaGwgJDgxOTIN CglwdXNobCAkX2Jsb2NrLjMNCgltb3ZsIDE2KCVlYnApLCVlYXgNCglwdXNobCAlZWF4DQoJ bW92bCA4KCVlYnApLCVlYXgNCglwdXNobCAlZWF4DQoJY2FsbCBfenB1dHMNCglhZGRsICQz MiwlZXNwDQoJam1wIEwxNQ0KCS5wMmFsaWduIDQsLDcNCkwxNDoNCgltb3ZsIDE2KCVlYnAp LCVlYXgNCglwdXNobCAlZWF4DQoJcHVzaGwgJDENCglwdXNobCAkODE5Mg0KCXB1c2hsICRf YmxvY2suMw0KCWNhbGwgX2Z3cml0ZQ0KCWFkZGwgJDE2LCVlc3ANCkwxNToNCgltb3ZsICRf YmxvY2suMywlZWR4DQpMMjA6DQoJY21wYiAkMTAsJWJsDQoJam5lIEwxOQ0KTDEwOg0KCW1v dmwgJWVkeCxfbmV4dC40DQoJbW92bCA4KCVlYnApLCVlYXgNCgl0ZXN0YiAkNCwyKCVlYXgp DQoJam5lIEwxNw0KCWFkZHcgJWRpLCglZWF4KQ0KTDE3Og0KCXhvcmwgJWVheCwlZWF4DQoJ bGVhbCAtMjQoJWVicCksJWVzcA0KCW1vdncgJWRpLCVheA0KCXBvcGwgJWVieA0KCXBvcGwg JWVzaQ0KCXBvcGwgJWVkaQ0KCW1vdmwgJWVicCwlZXNwDQoJcG9wbCAlZWJwDQoJcmV0DQo= --Message-Boundary-3817 Content-type: text/plain; charset=US-ASCII Content-disposition: inline Content-description: Attachment information. The following section of this message contains a file attachment prepared for transmission using the Internet MIME message format. If you are using Pegasus Mail, or any another MIME-compliant system, you should be able to save it or view it from within your mailer. If you cannot, please ask your system administrator for assistance. ---- File information ----------- File: z1-egcs.S Date: 9 Aug 1999, 13:02 Size: 1092 bytes. Type: Text --Message-Boundary-3817 Content-type: Application/Octet-stream; name="z1-egcs.S"; type=Text Content-disposition: attachment; filename="z1-egcs.S" Content-transfer-encoding: BASE64 CS5maWxlCSJ6MS5jIg0KZ2NjMl9jb21waWxlZC46DQpfX19nbnVfY29tcGlsZWRfYzoNCi5s Y29tbSBfYmxvY2suMiw4MTkyDQouZGF0YQ0KCS5wMmFsaWduIDINCl9uZXh0LjM6DQoJLmxv bmcgX2Jsb2NrLjINCi50ZXh0DQoJLnAyYWxpZ24gMg0KLmdsb2JsIF9mcGQNCl9mcGQ6DQoJ cHVzaGwgJWVicA0KCW1vdmwgJWVzcCwlZWJwDQoJcHVzaGwgJWVkaQ0KCXhvcmwgJWVkaSwl ZWRpDQoJcHVzaGwgJWVzaQ0KCXB1c2hsICVlYngNCgltb3ZsIDEyKCVlYnApLCVlc2kNCglt b3ZsIF9uZXh0LjMsJWVkeA0KCS5wMmFsaWduIDINCkwxOToNCgltb3ZiICglZXNpKSwlYmwN CglpbmNsICVlc2kNCgl0ZXN0YiAlYmwsJWJsDQoJamUgTDkNCgl4b3JsICVlYXgsJWVheA0K CW1vdmIgJWJsLCVhbA0KCW1vdmIgJWJsLCglZWR4KQ0KCWFkZGwgJWVheCwlZWRpDQoJaW5j bCAlZWR4DQoJY21wbCAkX2Jsb2NrLjIrODE5MiwlZWR4DQoJam5lIEwyMA0KCW1vdmwgOCgl ZWJwKSwlZWN4DQoJdGVzdGIgJDQsMiglZWN4KQ0KCWplIEwxMw0KCXB1c2hsICRfZ3ppcF9z dW0NCglwdXNobCAkODE5Mg0KCXB1c2hsICRfYmxvY2suMg0KCW1vdmwgMTYoJWVicCksJWVj eA0KCXB1c2hsICVlY3gNCgltb3ZsIDgoJWVicCksJWVjeA0KCXB1c2hsICVlY3gNCgljYWxs IF96cHV0cw0KCWFkZGwgJDIwLCVlc3ANCglqbXAgTDE0DQoJLnAyYWxpZ24gMg0KTDEzOg0K CW1vdmwgMTYoJWVicCksJWVjeA0KCXB1c2hsICVlY3gNCglwdXNobCAkMQ0KCXB1c2hsICQ4 MTkyDQoJcHVzaGwgJF9ibG9jay4yDQoJY2FsbCBfZndyaXRlDQoJYWRkbCAkMTYsJWVzcA0K TDE0Og0KCW1vdmwgJF9ibG9jay4yLCVlZHgNCkwyMDoNCgljbXBiICQxMCwlYmwNCglqbmUg TDE5DQpMOToNCgltb3ZsICVlZHgsX25leHQuMw0KCW1vdmwgOCglZWJwKSwlZWN4DQoJdGVz dGIgJDQsMiglZWN4KQ0KCWpuZSBMMTcNCglhZGR3ICVkaSwoJWVjeCkNCkwxNzoNCglsZWFs IC0xMiglZWJwKSwlZXNwDQoJeG9ybCAlZWF4LCVlYXgNCgltb3Z3ICVkaSwlYXgNCglwb3Bs ICVlYngNCglwb3BsICVlc2kNCglwb3BsICVlZGkNCgltb3ZsICVlYnAsJWVzcA0KCXBvcGwg JWVicA0KCXJldA0K --Message-Boundary-3817 Content-type: text/plain; charset=US-ASCII Content-disposition: inline Content-description: Attachment information. The following section of this message contains a file attachment prepared for transmission using the Internet MIME message format. If you are using Pegasus Mail, or any another MIME-compliant system, you should be able to save it or view it from within your mailer. If you cannot, please ask your system administrator for assistance. ---- File information ----------- File: z1-gcc281.S Date: 9 Aug 1999, 13:28 Size: 1629 bytes. Type: Text --Message-Boundary-3817 Content-type: Application/Octet-stream; name="z1-gcc281.S"; type=Text Content-disposition: attachment; filename="z1-gcc281.S" Content-transfer-encoding: BASE64 CS5maWxlCSJ6MS5jIg0KZ2NjMl9jb21waWxlZC46DQpfX19nbnVfY29tcGlsZWRfYzoNCi5s Y29tbSBfYmxvY2suMiw4MTkyDQouZGF0YQ0KCS5wMmFsaWduIDINCl9uZXh0LjM6DQoJLmxv bmcgX2Jsb2NrLjINCi50ZXh0DQoJLnAyYWxpZ24gMg0KLmdsb2JsIF9mcGQNCl9mcGQ6DQoJ cHVzaGwgJWVicA0KCW1vdmwgJWVzcCwlZWJwDQoJc3VibCAkMTYsJWVzcA0KCXB1c2hsICVl YngNCgltb3Z3ICQwLC0yKCVlYnApDQoJbW92bCAxMiglZWJwKSwlZWF4DQoJbW92bCAlZWF4 LC04KCVlYnApDQoJbW92bCBfbmV4dC4zLCVlYXgNCgltb3ZsICVlYXgsLTEyKCVlYnApDQpM MjoNCkw1Og0KCW1vdmwgLTgoJWVicCksJWVheA0KCW1vdmIgKCVlYXgpLCVkbA0KCW1vdmIg JWRsLC0xMyglZWJwKQ0KCWluY2wgLTgoJWVicCkNCgljbXBiICQwLC0xMyglZWJwKQ0KCWpu ZSBMOA0KCWptcCBMOQ0KCS5hbGlnbiAyLDB4OTANCkw4Og0KCW1vdnpidyAtMTMoJWVicCks JWF4DQoJYWRkdyAlYXgsLTIoJWVicCkNCgltb3ZsIC0xMiglZWJwKSwlZWF4DQoJbW92YiAt MTMoJWVicCksJWRsDQoJbW92YiAlZGwsKCVlYXgpDQoJaW5jbCAtMTIoJWVicCkNCgljbXBs ICRfYmxvY2suMis4MTkyLC0xMiglZWJwKQ0KCWpuZSBMMTANCglqbXAgTDYNCgkuYWxpZ24g MiwweDkwDQpMMTA6DQoJY21wYiAkMTAsLTEzKCVlYnApDQoJam5lIEw3DQoJam1wIEw5DQoJ LmFsaWduIDIsMHg5MA0KTDExOg0KTDc6DQoJam1wIEw1DQoJLmFsaWduIDIsMHg5MA0KTDY6 DQoJbW92bCA4KCVlYnApLCVlYXgNCgltb3Z3IDIoJWVheCksJWR4DQoJYW5kbCAkNCwlZWR4 DQoJdGVzdHcgJWR4LCVkeA0KCWplIEwxMg0KCXB1c2hsICRfZ3ppcF9zdW0NCglwdXNobCAk ODE5Mg0KCXB1c2hsICRfYmxvY2suMg0KCW1vdmwgMTYoJWVicCksJWVheA0KCXB1c2hsICVl YXgNCgltb3ZsIDgoJWVicCksJWVheA0KCXB1c2hsICVlYXgNCgljYWxsIF96cHV0cw0KCWFk ZGwgJDIwLCVlc3ANCglqbXAgTDEzDQoJLmFsaWduIDIsMHg5MA0KTDEyOg0KCW1vdmwgMTYo JWVicCksJWVheA0KCXB1c2hsICVlYXgNCglwdXNobCAkMQ0KCXB1c2hsICQ4MTkyDQoJcHVz aGwgJF9ibG9jay4yDQoJY2FsbCBfZndyaXRlDQoJYWRkbCAkMTYsJWVzcA0KTDEzOg0KCW1v dmwgJF9ibG9jay4yLC0xMiglZWJwKQ0KCWNtcGIgJDEwLC0xMyglZWJwKQ0KCWpuZSBMNA0K CWptcCBMMw0KCS5hbGlnbiAyLDB4OTANCkwxNDoNCkw0Og0KCWptcCBMMg0KCS5hbGlnbiAy LDB4OTANCkwzOg0KCW5vcA0KTDk6DQoJbW92bCAtMTIoJWVicCksJWVheA0KCW1vdmwgJWVh eCxfbmV4dC4zDQoJbW92bCA4KCVlYnApLCVlYXgNCgltb3Z3IDIoJWVheCksJWR4DQoJYW5k bCAkNCwlZWR4DQoJdGVzdHcgJWR4LCVkeA0KCWpuZSBMMTUNCgltb3ZsIDgoJWVicCksJWVh eA0KCW1vdmwgOCglZWJwKSwlZWR4DQoJbW92dyAoJWVkeCksJWN4DQoJbW92dyAtMiglZWJw KSwlZHgNCgltb3ZsICVlY3gsJWVieA0KCWFkZGwgJWVkeCwlZWJ4DQoJbW92dyAlYngsKCVl YXgpDQpMMTU6DQoJbW92endsIC0yKCVlYnApLCVlZHgNCgltb3ZsICVlZHgsJWVheA0KCWpt cCBMMQ0KCS5hbGlnbiAyLDB4OTANCkwxOg0KCW1vdmwgLTIwKCVlYnApLCVlYngNCglsZWF2 ZQ0KCXJldA0K --Message-Boundary-3817--