From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 125915 invoked by alias); 7 Jun 2019 16:29:44 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Received: (qmail 125903 invoked by uid 89); 7 Jun 2019 16:29:44 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-25.6 required=5.0 tests=AWL,BAYES_00,GIT_PATCH_0,GIT_PATCH_1,GIT_PATCH_2,GIT_PATCH_3,RCVD_IN_DNSWL_NONE,SPF_PASS autolearn=ham version=3.3.1 spammy= X-HELO: mail-lj1-f194.google.com Received: from mail-lj1-f194.google.com (HELO mail-lj1-f194.google.com) (209.85.208.194) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Fri, 07 Jun 2019 16:29:41 +0000 Received: by mail-lj1-f194.google.com with SMTP id k18so2258945ljc.11 for ; Fri, 07 Jun 2019 09:29:40 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=mime-version:references:in-reply-to:from:date:message-id:subject:to; bh=OtHg10bXZN5dtZnksT+QM7ghQAmiB/0TPl/ykJqFBc8=; b=zKhnpErIhYdTqYCNTjFNQV+exceTRIj3SxyXTbM0rJAwaporqy2+wSFhLrvytmxtzx GDVCtUrFv0GWNXSVOb3mjrLkFogmNY6H5y8DZf9WK0KwnfDZy663jCrdiwPX5o37So53 E8jkt+px3LEW5fZ6ED3sYzVXioGpf+o57m8tHZTiWsGkq+EQbqWmRLa8hqW1/kFUZhEh aUD7bI6ec17X12Vwy6uvE6/mZAo0kW31H0cARCoo2OzdK/nh33Zk3RmvdyG0zhMne3WI xS4vg6p4QS+WXKs+rE3lhI+9p2348xaW0ZC5CWaHKcm87OAAHLtvEennJf2bhA16wBtH HeMw== MIME-Version: 1.0 References: <1e630d13-8020-546d-646c-1810a8413e5e@arm.com> In-Reply-To: From: Prathamesh Kulkarni Date: Fri, 07 Jun 2019 16:29:00 -0000 Message-ID: Subject: Re: [AArch64] [SVE] PR88837 - Poor vector construction code in VL-specific mode To: Prathamesh Kulkarni , Szabolcs Nagy , gcc Patches , nd , Richard Sandiford Content-Type: multipart/mixed; boundary="0000000000003ce24e058abe56ad" X-IsSubscribed: yes X-SW-Source: 2019-06/txt/msg00457.txt.bz2 --0000000000003ce24e058abe56ad Content-Type: text/plain; charset="UTF-8" Content-length: 5210 On Fri, 7 Jun 2019 at 18:26, Richard Sandiford wrote: > > Prathamesh Kulkarni writes: > > On Thu, 6 Jun 2019 at 16:54, Richard Sandiford > > wrote: > >> > >> Szabolcs Nagy writes: > >> > On 03/06/2019 08:26, Prathamesh Kulkarni wrote: > >> >> +++ b/gcc/testsuite/gcc.target/aarch64/sve/init_8.c > >> >> @@ -0,0 +1,32 @@ > >> >> +/* { dg-do assemble { target aarch64_asm_sve_ok } } */ > >> >> +/* { dg-options "-O2 -fno-schedule-insns -msve-vector-bits=256 --save-temps" } */ > >> >> + > >> >> +/* Case 5.2: Interleaved elements and constants. */ > >> >> + > >> >> +#include > >> >> + > >> >> +typedef int32_t vnx4si __attribute__((vector_size (32))); > >> >> + > >> >> +__attribute__((noipa)) > >> >> +vnx4si foo(int a, int b, int c, int d) > >> >> +{ > >> >> + return (vnx4si) { a, 1, b, 2, c, 3, d, 4 }; > >> >> +} > >> >> + > >> >> +/* > >> >> +foo: > >> >> +.LFB0: > >> >> + .cfi_startproc > >> >> + ptrue p0.s, vl8 > >> >> + mov z0.s, w3 > >> >> + adrp x3, .LANCHOR0 > >> >> + insr z0.s, w2 > >> >> + add x3, x3, :lo12:.LANCHOR0 > >> >> + insr z0.s, w1 > >> >> + ld1w z1.s, p0/z, [x3] > >> >> + insr z0.s, w0 > >> >> + zip1 z0.s, z0.s, z1.s > >> >> + ret > >> >> +*/ > >> >> + > >> >> +/* { dg-final { scan-assembler {\tmov\t(z[0-9]+\.s), w3\n\tadrp\t(x[0-9]+), \.LANCHOR0\n\tinsr\t\1, w2\n\tadd\t\2, \2, :lo12:\.LANCHOR0\n\tinsr\t\1, w1\n\tld1w\t(z[0-9]+\.s), p[0-9]+/z, \[\2\]\n\tinsr\t\1, w0\n\tzip1\t\1, \1, \3} } } */ > >> > > >> > this fails with tiny model when i'm testing aarch64-none-elf > >> > > >> > $ make check-c 'RUNTESTFLAGS=--target_board=aarch64-elf-qemu{-mcmodel=tiny} aarch64-sve.exp=init_8.c' > >> > ... > >> > FAIL: gcc.target/aarch64/sve/init_8.c -march=armv8.2-a+sve scan-assembler \\tmov\\t(z[0-9]+\\.s), w3\\n\\tadrp\\t(x[0-9]+), > >> > \\.LANCHOR0\\n\\tinsr\\t\\1, w2\\n\\tadd\\t\\2, \\2, :lo12:\\.LANCHOR0\\n\\tinsr\\t\\1, w1\\n\\tld1w\\t(z[0-9]+\\.s), p[0-9]+/z, > >> > \\[\\2\\]\\n\\tinsr\\t\\1, w0\\n\\tzip1\\t\\1, \\1, \\3 > >> > > >> > i think you need conditional scan asm for { target aarch64_small } > >> > and { target aarch64_tiny } or just skip the test for tiny, > >> > >> Maybe we should remove the address calculation and replace the ld1w > >> address with \[[^]]*\]. All that really matters for this test is that > >> the vector is loaded from memory. > >> > >> > but even then matching exact register name and instruction scheduling > >> > seems fragile. > >> > >> The only hard-coded register names are the parameters, which are > >> guaranteed by the ABI. Testing for those should be fine. > >> > >> The dg-options pass -fno-schedule-insns, but I guess they should > >> also pass -fno-schedule-insns2. Or maybe just use -O instead. > >> We can always revisit this later if even that isn't enough to make > >> the order stable. > > Thanks for the suggestions. Passing -fno-schedule-insns2 does seem to > > make the order stable. > > For init_1.c to init_4.c there were no intervening instructions, and > > for remaining tests, the patch passes -fno-schedule-insns2 > > and adjusts dg-scan accordingly. I verified the tests pass with -mcmodel=tiny. > > I think we should use consistent options for all the test though. > So either we should add -fno-schedule-insns2 to all of them, > or we should switch to -O. TBH -O seems easier :-) (I checked > that all tests do still pass with -O.) > > > diff --git a/gcc/testsuite/gcc.target/aarch64/sve/init_10.c b/gcc/testsuite/gcc.target/aarch64/sve/init_10.c > > index 9d6e2dfc876..08437e5d8f1 100644 > > --- a/gcc/testsuite/gcc.target/aarch64/sve/init_10.c > > +++ b/gcc/testsuite/gcc.target/aarch64/sve/init_10.c > > @@ -1,5 +1,5 @@ > > /* { dg-do assemble { target aarch64_asm_sve_ok } } */ > > -/* { dg-options "-O2 -fno-schedule-insns -msve-vector-bits=256 --save-temps" } */ > > +/* { dg-options "-O2 -fno-schedule-insns -fno-schedule-insns2 -msve-vector-bits=256 --save-temps" } */ > > > > /* Case 5.4: Interleaved repeating elements and non-repeating elements. */ > > > > @@ -17,13 +17,14 @@ vnx4si foo(int a, int b, int c, int f) > > foo: > > .LFB0: > > .cfi_startproc > > - mov z0.s, w2 > > mov z1.s, w3 > > + mov z0.s, w2 > > insr z0.s, w1 > > - ptrue p0.s, vl8 > > insr z0.s, w0 > > zip1 z0.s, z0.s, z1.s > > + ptrue p0.s, vl8 > > + st1w z0.s, p0, [x8] > > ret > > */ > > > > -/* { dg-final { scan-assembler {\tmov\t(z[0-9]+\.s), w3\n\tmov\t(z[0-9]+\.s), w2\n.*\n\tinsr\t\2, w1\n\tinsr\t\2, w0\n\tzip1\t\2, \2, \1} } } */ > > +/* { dg-final { scan-assembler {\tmov\t(z[0-9]+\.s), w3\n\tmov\t(z[0-9]+\.s), w2\n\tinsr\t\2, w1\n\tinsr\t\2, w0\n\tzip1\t\2, \2, \1} } } */ > > You're reintroducing the st1w as part of the asms. We should either > do that for all the tests or leave it out. Oops, sorry about that. Attached patch removes st1w and passes -O for all tests in the attached patch. OK to commit ? Thanks, Prathamesh > > Thanks, > Richard --0000000000003ce24e058abe56ad Content-Type: text/plain; charset="US-ASCII"; name="pr88837-tests-2.txt" Content-Disposition: attachment; filename="pr88837-tests-2.txt" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_jwmb0ovr0 Content-length: 16597 MjAxOS0wNi0wNyAgUHJhdGhhbWVzaCBLdWxrYXJuaSAgPHByYXRoYW1lc2gu a3Vsa2FybmlAbGluYXJvLm9yZz4KCgkqIGdjYy50YXJnZXQvYWFyY2g2NC9z dmUvaW5pdF8xLmM6IFJlbW92ZSBvcHRpb25zCgktTzIgLWZuby1zY2hlZHVs ZS1pbnNucyBhbmQgaW5zdGVhZCBwYXNzIC1PLgoJVXBkYXRlIGFzc2VtYmx5 IGluIGNvbW1lbnRzLiAKCSogZ2NjLnRhcmdldC9hYXJjaDY0L3N2ZS9pbml0 XzIuYzogTGlrZXdpc2UuCgkqIGdjYy50YXJnZXQvYWFyY2g2NC9zdmUvaW5p dF8zLmM6IExpa2V3aXNlLgoJKiBnY2MudGFyZ2V0L2FhcmNoNjQvc3ZlL2lu aXRfNC5jOiBMaWtld2lzZS4KCSogZ2NjLnRhcmdldC9hYXJjaDY0L3N2ZS9p bml0XzUuYzogTGlrZXdpc2UgYW5kIGFkZGl0aW9uYWxseQoJYWRqdXN0IGRn LXNjYW4uCgkqIGdjYy50YXJnZXQvYWFyY2g2NC9zdmUvaW5pdF82LmM6IExp a2V3aXNlLgoJKiBnY2MudGFyZ2V0L2FhcmNoNjQvc3ZlL2luaXRfNy5jOiBM aWtld2lzZS4KCSogZ2NjLnRhcmdldC9hYXJjaDY0L3N2ZS9pbml0XzguYzog TGlrZXdpc2UuCgkqIGdjYy50YXJnZXQvYWFyY2g2NC9zdmUvaW5pdF85LmM6 IExpa2V3aXNlLgoJKiBnY2MudGFyZ2V0L2FhcmNoNjQvc3ZlL2luaXRfMTAu YzogTGlrZXdpc2UuCgkqIGdjYy50YXJnZXQvYWFyY2g2NC9zdmUvaW5pdF8x MS5jOiBMaWtld2lzZS4KCSogZ2NjLnRhcmdldC9hYXJjaDY0L3N2ZS9pbml0 XzEyLmM6IExpa2V3aXNlLgoKZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUv Z2NjLnRhcmdldC9hYXJjaDY0L3N2ZS9pbml0XzEuYyBiL2djYy90ZXN0c3Vp dGUvZ2NjLnRhcmdldC9hYXJjaDY0L3N2ZS9pbml0XzEuYwppbmRleCA1YzE0 YjYwM2Y0Ni4uNGYxODA4OGYzYjAgMTAwNjQ0Ci0tLSBhL2djYy90ZXN0c3Vp dGUvZ2NjLnRhcmdldC9hYXJjaDY0L3N2ZS9pbml0XzEuYworKysgYi9nY2Mv dGVzdHN1aXRlL2djYy50YXJnZXQvYWFyY2g2NC9zdmUvaW5pdF8xLmMKQEAg LTEsNSArMSw1IEBACiAvKiB7IGRnLWRvIGFzc2VtYmxlIHsgdGFyZ2V0IGFh cmNoNjRfYXNtX3N2ZV9vayB9IH0gKi8KLS8qIHsgZGctb3B0aW9ucyAiLU8y IC1mbm8tc2NoZWR1bGUtaW5zbnMgLW1zdmUtdmVjdG9yLWJpdHM9MjU2IC0t c2F2ZS10ZW1wcyIgfSAqLworLyogeyBkZy1vcHRpb25zICItTyAtbXN2ZS12 ZWN0b3ItYml0cz0yNTYgLS1zYXZlLXRlbXBzIiB9ICovCiAKIC8qIENhc2Ug MS4xOiBUcmFpbGluZyBjb25zdGFudHMgd2l0aCBzdGVwcGVkIHNlcXVlbmNl LiAgKi8KIApAQCAtMTcsMTAgKzE3LDEwIEBAIHZueDRzaSBmb28oaW50IGEs IGludCBiKQogZm9vOgogLkxGQjA6CiAgICAgICAgIC5jZmlfc3RhcnRwcm9j Ci0gICAgICAgIHB0cnVlICAgcDAucywgdmw4CiAgICAgICAgIGluZGV4ICAg ejAucywgIzEsICMxCiAgICAgICAgIGluc3IgICAgejAucywgdzEKICAgICAg ICAgaW5zciAgICB6MC5zLCB3MAorICAgICAgICBwdHJ1ZSAgIHAwLnMsIHZs OAogICAgICAgICByZXQKICovCiAKZGlmZiAtLWdpdCBhL2djYy90ZXN0c3Vp dGUvZ2NjLnRhcmdldC9hYXJjaDY0L3N2ZS9pbml0XzEwLmMgYi9nY2MvdGVz dHN1aXRlL2djYy50YXJnZXQvYWFyY2g2NC9zdmUvaW5pdF8xMC5jCmluZGV4 IDlkNmUyZGZjODc2Li4xZWUxZGI3MjNlNiAxMDA2NDQKLS0tIGEvZ2NjL3Rl c3RzdWl0ZS9nY2MudGFyZ2V0L2FhcmNoNjQvc3ZlL2luaXRfMTAuYworKysg Yi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYWFyY2g2NC9zdmUvaW5pdF8x MC5jCkBAIC0xLDUgKzEsNSBAQAogLyogeyBkZy1kbyBhc3NlbWJsZSB7IHRh cmdldCBhYXJjaDY0X2FzbV9zdmVfb2sgfSB9ICovCi0vKiB7IGRnLW9wdGlv bnMgIi1PMiAtZm5vLXNjaGVkdWxlLWluc25zIC1tc3ZlLXZlY3Rvci1iaXRz PTI1NiAtLXNhdmUtdGVtcHMiIH0gKi8KKy8qIHsgZGctb3B0aW9ucyAiLU8g LW1zdmUtdmVjdG9yLWJpdHM9MjU2IC0tc2F2ZS10ZW1wcyIgfSAqLwogCiAv KiBDYXNlIDUuNDogSW50ZXJsZWF2ZWQgcmVwZWF0aW5nIGVsZW1lbnRzIGFu ZCBub24tcmVwZWF0aW5nIGVsZW1lbnRzLiAgKi8KIApAQCAtMTcsMTMgKzE3 LDEzIEBAIHZueDRzaSBmb28oaW50IGEsIGludCBiLCBpbnQgYywgaW50IGYp CiBmb286CiAuTEZCMDoKICAgICAgICAgLmNmaV9zdGFydHByb2MKLSAgICAg ICAgbW92ICAgICB6MC5zLCB3MgogICAgICAgICBtb3YgICAgIHoxLnMsIHcz CisgICAgICAgIG1vdiAgICAgejAucywgdzIKICAgICAgICAgaW5zciAgICB6 MC5zLCB3MQotICAgICAgICBwdHJ1ZSAgIHAwLnMsIHZsOAogICAgICAgICBp bnNyICAgIHowLnMsIHcwCiAgICAgICAgIHppcDEgICAgejAucywgejAucywg ejEucworICAgICAgICBwdHJ1ZSAgIHAwLnMsIHZsOAogICAgICAgICByZXQK ICovCiAKLS8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciB7XHRtb3Zc dCh6WzAtOV0rXC5zKSwgdzNcblx0bW92XHQoelswLTldK1wucyksIHcyXG4u KlxuXHRpbnNyXHRcMiwgdzFcblx0aW5zclx0XDIsIHcwXG5cdHppcDFcdFwy LCBcMiwgXDF9IH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1i bGVyIHtcdG1vdlx0KHpbMC05XStcLnMpLCB3M1xuXHRtb3ZcdCh6WzAtOV0r XC5zKSwgdzJcblx0aW5zclx0XDIsIHcxXG5cdGluc3JcdFwyLCB3MFxuXHR6 aXAxXHRcMiwgXDIsIFwxfSB9IH0gKi8KZGlmZiAtLWdpdCBhL2djYy90ZXN0 c3VpdGUvZ2NjLnRhcmdldC9hYXJjaDY0L3N2ZS9pbml0XzExLmMgYi9nY2Mv dGVzdHN1aXRlL2djYy50YXJnZXQvYWFyY2g2NC9zdmUvaW5pdF8xMS5jCmlu ZGV4IGU1MGNkNTRlZjEzLi4wYjNjNGE1MTE5OCAxMDA2NDQKLS0tIGEvZ2Nj L3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FhcmNoNjQvc3ZlL2luaXRfMTEuYwor KysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYWFyY2g2NC9zdmUvaW5p dF8xMS5jCkBAIC0xLDUgKzEsNSBAQAogLyogeyBkZy1kbyBhc3NlbWJsZSB7 IHRhcmdldCBhYXJjaDY0X2FzbV9zdmVfb2sgfSB9ICovCi0vKiB7IGRnLW9w dGlvbnMgIi1PMiAtZm5vLXNjaGVkdWxlLWluc25zIC1tc3ZlLXZlY3Rvci1i aXRzPTI1NiAtLXNhdmUtdGVtcHMiIH0gKi8KKy8qIHsgZGctb3B0aW9ucyAi LU8gLW1zdmUtdmVjdG9yLWJpdHM9MjU2IC0tc2F2ZS10ZW1wcyIgfSAqLwog CiAvKiBDYXNlIDUuNTogSW50ZXJsZWF2ZWQgcmVwZWF0aW5nIGVsZW1lbnRz IGFuZCB0cmFpbGluZyBzYW1lIGVsZW1lbnRzLiAgKi8KIApAQCAtMTgsMTEg KzE4LDExIEBAIGZvbzoKIC5MRkIwOgogICAgICAgICAuY2ZpX3N0YXJ0cHJv YwogICAgICAgICBtb3YgICAgIHowLnMsIHcxCi0gICAgICAgIG1vdiAgICAg ejEucywgdzIKICAgICAgICAgaW5zciAgICB6MC5zLCB3MAotICAgICAgICBw dHJ1ZSAgIHAwLnMsIHZsOAorICAgICAgICBtb3YgICAgIHoxLnMsIHcyCiAg ICAgICAgIHppcDEgICAgejAucywgejAucywgejEucworICAgICAgICBwdHJ1 ZSAgIHAwLnMsIHZsOAogICAgICAgICByZXQKICovCiAKLS8qIHsgZGctZmlu YWwgeyBzY2FuLWFzc2VtYmxlciB7XHRtb3ZcdCh6WzAtOV0rXC5zKSwgdzFc blx0bW92XHQoelswLTldK1wucyksIHcyXG5cdGluc3JcdFwxLCB3MFxuLipc dHppcDFcdFwxLCBcMSwgXDJ9IH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNj YW4tYXNzZW1ibGVyIHtcdG1vdlx0KHpbMC05XStcLnMpLCB3MVxuXHRpbnNy XHRcMSwgdzBcblx0bW92XHQoelswLTldK1wucyksIHcyXG5cdHppcDFcdFwx LCBcMSwgXDJ9IH0gfSAqLwpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9n Y2MudGFyZ2V0L2FhcmNoNjQvc3ZlL2luaXRfMTIuYyBiL2djYy90ZXN0c3Vp dGUvZ2NjLnRhcmdldC9hYXJjaDY0L3N2ZS9pbml0XzEyLmMKaW5kZXggMjFk OWU3NjQzNjAuLjI0NzNhNWVjYjgwIDEwMDY0NAotLS0gYS9nY2MvdGVzdHN1 aXRlL2djYy50YXJnZXQvYWFyY2g2NC9zdmUvaW5pdF8xMi5jCisrKyBiL2dj Yy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hYXJjaDY0L3N2ZS9pbml0XzEyLmMK QEAgLTEsNSArMSw1IEBACiAvKiB7IGRnLWRvIGFzc2VtYmxlIHsgdGFyZ2V0 IGFhcmNoNjRfYXNtX3N2ZV9vayB9IH0gKi8KLS8qIHsgZGctb3B0aW9ucyAi LU8yIC1mbm8tc2NoZWR1bGUtaW5zbnMgLW1zdmUtdmVjdG9yLWJpdHM9MjU2 IC0tc2F2ZS10ZW1wcyIgfSAqLworLyogeyBkZy1vcHRpb25zICItTyAtbXN2 ZS12ZWN0b3ItYml0cz0yNTYgLS1zYXZlLXRlbXBzIiB9ICovCiAKIC8qIENh c2UgNS41OiBJbnRlcmxlYXZlZCByZXBlYXRpbmcgZWxlbWVudHMgYW5kIHRy YWlsaW5nIHNhbWUgZWxlbWVudHMuICAqLwogCkBAIC0xNywxNCArMTcsMTQg QEAgdm54NHNpIGZvbyhpbnQgYSwgaW50IGIsIGludCBmKQogZm9vOgogLkxG QjA6CiAgICAgICAgIC5jZmlfc3RhcnRwcm9jCi0gICAgICAgIG1vdiAgICAg ejAucywgdzAKICAgICAgICAgbW92ICAgICB6MS5zLCB3MgorICAgICAgICBt b3YgICAgIHowLnMsIHcwCiAgICAgICAgIGluc3IgICAgejAucywgdzEKLSAg ICAgICAgcHRydWUgICBwMC5zLCB2bDgKICAgICAgICAgaW5zciAgICB6MC5z LCB3MQogICAgICAgICBpbnNyICAgIHowLnMsIHcxCiAgICAgICAgIHppcDEg ICAgejAucywgejAucywgejEucworICAgICAgICBwdHJ1ZSAgIHAwLnMsIHZs OAogICAgICAgICByZXQKICovCiAKLS8qIHsgZGctZmluYWwgeyBzY2FuLWFz c2VtYmxlciB7XHRtb3ZcdCh6WzAtOV0rXC5zKSwgdzJcblx0bW92XHQoelsw LTldK1wucyksIHcwXG4uKlxuXHRpbnNyXHRcMiwgdzFcblx0aW5zclx0XDIs IHcxXG5cdGluc3JcdFwyLCB3MVxuXHR6aXAxXHRcMiwgXDIsIFwxfSB9IH0g Ki8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciB7XHRtb3ZcdCh6 WzAtOV0rXC5zKSwgdzJcblx0bW92XHQoelswLTldK1wucyksIHcwXG5cdGlu c3JcdFwyLCB3MVxuXHRpbnNyXHRcMiwgdzFcblx0aW5zclx0XDIsIHcxXG5c dHppcDFcdFwyLCBcMiwgXDF9IH0gfSAqLwpkaWZmIC0tZ2l0IGEvZ2NjL3Rl c3RzdWl0ZS9nY2MudGFyZ2V0L2FhcmNoNjQvc3ZlL2luaXRfMi5jIGIvZ2Nj L3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FhcmNoNjQvc3ZlL2luaXRfMi5jCmlu ZGV4IGE4YjJhMjViMzI1Li41YjRiYTEwNWFmMiAxMDA2NDQKLS0tIGEvZ2Nj L3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FhcmNoNjQvc3ZlL2luaXRfMi5jCisr KyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hYXJjaDY0L3N2ZS9pbml0 XzIuYwpAQCAtMSw1ICsxLDUgQEAKIC8qIHsgZGctZG8gYXNzZW1ibGUgeyB0 YXJnZXQgYWFyY2g2NF9hc21fc3ZlX29rIH0gfSAqLwotLyogeyBkZy1vcHRp b25zICItTzIgLWZuby1zY2hlZHVsZS1pbnNucyAtbXN2ZS12ZWN0b3ItYml0 cz0yNTYgLS1zYXZlLXRlbXBzIiB9ICovCisvKiB7IGRnLW9wdGlvbnMgIi1P IC1tc3ZlLXZlY3Rvci1iaXRzPTI1NiAtLXNhdmUtdGVtcHMiIH0gKi8KIAog LyogQ2FzZSAxLjI6IFRyYWlsaW5nIGNvbnN0YW50cyB3aXRoIHJlcGVhdGlu ZyBzZXF1ZW5jZS4gICovCiAKZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUv Z2NjLnRhcmdldC9hYXJjaDY0L3N2ZS9pbml0XzMuYyBiL2djYy90ZXN0c3Vp dGUvZ2NjLnRhcmdldC9hYXJjaDY0L3N2ZS9pbml0XzMuYwppbmRleCA2YjAw MGI4ODdiYS4uNjJmMzFiNzVlZmQgMTAwNjQ0Ci0tLSBhL2djYy90ZXN0c3Vp dGUvZ2NjLnRhcmdldC9hYXJjaDY0L3N2ZS9pbml0XzMuYworKysgYi9nY2Mv dGVzdHN1aXRlL2djYy50YXJnZXQvYWFyY2g2NC9zdmUvaW5pdF8zLmMKQEAg LTEsNSArMSw1IEBACiAvKiB7IGRnLWRvIGFzc2VtYmxlIHsgdGFyZ2V0IGFh cmNoNjRfYXNtX3N2ZV9vayB9IH0gKi8KLS8qIHsgZGctb3B0aW9ucyAiLU8y IC1mbm8tc2NoZWR1bGUtaW5zbnMgLW1zdmUtdmVjdG9yLWJpdHM9MjU2IC0t c2F2ZS10ZW1wcyIgfSAqLworLyogeyBkZy1vcHRpb25zICItTyAtbXN2ZS12 ZWN0b3ItYml0cz0yNTYgLS1zYXZlLXRlbXBzIiB9ICovCiAKIC8qIENhc2Ug Mi4xOiBMZWFkaW5nIGNvbnN0YW50cyB3aXRoIHN0ZXBwZWQgc2VxdWVuY2Uu ICAqLwogCkBAIC0xNywxMSArMTcsMTEgQEAgdm54NHNpIGZvbyhpbnQgYSwg aW50IGIpCiBmb286CiAuTEZCMDoKICAgICAgICAgLmNmaV9zdGFydHByb2MK LSAgICAgICAgcHRydWUgICBwMC5zLCB2bDgKICAgICAgICAgaW5kZXggICB6 MC5zLCAjNiwgIy0xCiAgICAgICAgIGluc3IgICAgejAucywgdzAKICAgICAg ICAgaW5zciAgICB6MC5zLCB3MQogICAgICAgICByZXYgICAgIHowLnMsIHow LnMKKyAgICAgICAgcHRydWUgICBwMC5zLCB2bDgKICAgICAgICAgcmV0CiAq LwogCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYWFy Y2g2NC9zdmUvaW5pdF80LmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQv YWFyY2g2NC9zdmUvaW5pdF80LmMKaW5kZXggNjE5Mjc0OTI4ZTQuLjk0NDg0 YjFhNGU2IDEwMDY0NAotLS0gYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQv YWFyY2g2NC9zdmUvaW5pdF80LmMKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2Mu dGFyZ2V0L2FhcmNoNjQvc3ZlL2luaXRfNC5jCkBAIC0xLDUgKzEsNSBAQAog LyogeyBkZy1kbyBhc3NlbWJsZSB7IHRhcmdldCBhYXJjaDY0X2FzbV9zdmVf b2sgfSB9ICovCi0vKiB7IGRnLW9wdGlvbnMgIi1PMiAtZm5vLXNjaGVkdWxl LWluc25zIC1tc3ZlLXZlY3Rvci1iaXRzPTI1NiAtLXNhdmUtdGVtcHMiIH0g Ki8KKy8qIHsgZGctb3B0aW9ucyAiLU8gLW1zdmUtdmVjdG9yLWJpdHM9MjU2 IC0tc2F2ZS10ZW1wcyIgfSAqLwogCiAvKiBDYXNlIDIuMjogTGVhZGluZyBj b25zdGFudHMgd2l0aCBzdGVwcGVkIHNlcXVlbmNlLiAgKi8KIApkaWZmIC0t Z2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FhcmNoNjQvc3ZlL2lu aXRfNS5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FhcmNoNjQvc3Zl L2luaXRfNS5jCmluZGV4IGU3ZmJkZDFhMmFhLi4wYTBlOGViZDFmZSAxMDA2 NDQKLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FhcmNoNjQvc3Zl L2luaXRfNS5jCisrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hYXJj aDY0L3N2ZS9pbml0XzUuYwpAQCAtMSw1ICsxLDUgQEAKIC8qIHsgZGctZG8g YXNzZW1ibGUgeyB0YXJnZXQgYWFyY2g2NF9hc21fc3ZlX29rIH0gfSAqLwot LyogeyBkZy1vcHRpb25zICItTzIgLWZuby1zY2hlZHVsZS1pbnNucyAtbXN2 ZS12ZWN0b3ItYml0cz0yNTYgLS1zYXZlLXRlbXBzIiB9ICovCisvKiB7IGRn LW9wdGlvbnMgIi1PIC1tc3ZlLXZlY3Rvci1iaXRzPTI1NiAtLXNhdmUtdGVt cHMiIH0gKi8KIAogLyogQ2FzZSAzOiBUcmFpbGluZyBzYW1lIGVsZW1lbnQu ICAqLyAKIApAQCAtMTgsMTAgKzE4LDEwIEBAIGZvbzoKIC5MRkIwOgogICAg ICAgICAuY2ZpX3N0YXJ0cHJvYwogICAgICAgICBtb3YgICAgIHowLnMsIHcy Ci0gICAgICAgIHB0cnVlICAgcDAucywgdmw4CiAgICAgICAgIGluc3IgICAg ejAucywgdzEKICAgICAgICAgaW5zciAgICB6MC5zLCB3MAorICAgICAgICBw dHJ1ZSAgIHAwLnMsIHZsOAogICAgICAgICByZXQKICovCiAKLS8qIHsgZGct ZmluYWwgeyBzY2FuLWFzc2VtYmxlciB7XHRtb3ZcdCh6WzAtOV0rXC5zKSwg dzJcbi4qXHRpbnNyXHRcMSwgdzFcblx0aW5zclx0XDEsIHcwfSB9IH0gKi8K Ky8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciB7XHRtb3ZcdCh6WzAt OV0rXC5zKSwgdzJcblx0aW5zclx0XDEsIHcxXG5cdGluc3JcdFwxLCB3MH0g fSB9ICovCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQv YWFyY2g2NC9zdmUvaW5pdF82LmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJn ZXQvYWFyY2g2NC9zdmUvaW5pdF82LmMKaW5kZXggZjZmM2RhNTk1OGQuLjEw ZWNhM2E5MDAxIDEwMDY0NAotLS0gYS9nY2MvdGVzdHN1aXRlL2djYy50YXJn ZXQvYWFyY2g2NC9zdmUvaW5pdF82LmMKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9n Y2MudGFyZ2V0L2FhcmNoNjQvc3ZlL2luaXRfNi5jCkBAIC0xLDUgKzEsNSBA QAogLyogeyBkZy1kbyBhc3NlbWJsZSB7IHRhcmdldCBhYXJjaDY0X2FzbV9z dmVfb2sgfSB9ICovCi0vKiB7IGRnLW9wdGlvbnMgIi1PMiAtZm5vLXNjaGVk dWxlLWluc25zIC1tc3ZlLXZlY3Rvci1iaXRzPTI1NiAtLXNhdmUtdGVtcHMi IH0gKi8KKy8qIHsgZGctb3B0aW9ucyAiLU8gLW1zdmUtdmVjdG9yLWJpdHM9 MjU2IC0tc2F2ZS10ZW1wcyIgfSAqLwogCiAvKiBDYXNlIDM6IFRyYWlsaW5n IHNhbWUgZWxlbWVudC4gICovIAogCkBAIC0xOCwxMSArMTgsMTEgQEAgZm9v OgogLkxGQjA6CiAgICAgICAgIC5jZmlfc3RhcnRwcm9jCiAgICAgICAgIG1v diAgICAgejAucywgdzIKLSAgICAgICAgcHRydWUgICBwMC5zLCB2bDgKICAg ICAgICAgaW5zciAgICB6MC5zLCB3MQogICAgICAgICBpbnNyICAgIHowLnMs IHcwCiAgICAgICAgIHJldiAgICAgejAucywgejAucworICAgICAgICBwdHJ1 ZSAgIHAwLnMsIHZsOAogICAgICAgICByZXQKICovCiAKLS8qIHsgZGctZmlu YWwgeyBzY2FuLWFzc2VtYmxlciB7XHRtb3ZcdCh6WzAtOV0rXC5zKSwgdzJc bi4qXHRpbnNyXHRcMSwgdzFcblx0aW5zclx0XDEsIHcwXG5cdHJldlx0XDEs IFwxfSB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciB7 XHRtb3ZcdCh6WzAtOV0rXC5zKSwgdzJcblx0aW5zclx0XDEsIHcxXG5cdGlu c3JcdFwxLCB3MFxuXHRyZXZcdFwxLCBcMX0gfSB9ICovCmRpZmYgLS1naXQg YS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYWFyY2g2NC9zdmUvaW5pdF83 LmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYWFyY2g2NC9zdmUvaW5p dF83LmMKaW5kZXggZTMxMDRhMzVmMTMuLmQ4M2ZhOWMwOGYyIDEwMDY0NAot LS0gYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYWFyY2g2NC9zdmUvaW5p dF83LmMKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FhcmNoNjQv c3ZlL2luaXRfNy5jCkBAIC0xLDUgKzEsNSBAQAogLyogeyBkZy1kbyBhc3Nl bWJsZSB7IHRhcmdldCBhYXJjaDY0X2FzbV9zdmVfb2sgfSB9ICovCi0vKiB7 IGRnLW9wdGlvbnMgIi1PMiAtZm5vLXNjaGVkdWxlLWluc25zIC1tc3ZlLXZl Y3Rvci1iaXRzPTI1NiAtLXNhdmUtdGVtcHMiIH0gKi8KKy8qIHsgZGctb3B0 aW9ucyAiLU8gLW1zdmUtdmVjdG9yLWJpdHM9MjU2IC0tc2F2ZS10ZW1wcyIg fSAqLwogCiAvKiBDYXNlIDUuMTogQWxsIGVsZW1lbnRzLiAgKi8gCiAKQEAg LTE4LDcgKzE4LDYgQEAgZm9vOgogLkxGQjA6CiAgICAgICAgIC5jZmlfc3Rh cnRwcm9jCiAgICAgICAgIG1vdiAgICAgejAucywgdzcKLSAgICAgICAgcHRy dWUgICBwMC5zLCB2bDgKICAgICAgICAgaW5zciAgICB6MC5zLCB3NgogICAg ICAgICBpbnNyICAgIHowLnMsIHc1CiAgICAgICAgIGluc3IgICAgejAucywg dzQKQEAgLTI2LDcgKzI1LDggQEAgZm9vOgogICAgICAgICBpbnNyICAgIHow LnMsIHcyCiAgICAgICAgIGluc3IgICAgejAucywgdzEKICAgICAgICAgaW5z ciAgICB6MC5zLCB3MAorICAgICAgICBwdHJ1ZSAgIHAwLnMsIHZsOAogICAg ICAgICByZXQKICovCiAKLS8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxl ciB7XHRtb3ZcdCh6WzAtOV0rXC5zKSwgdzdcbi4qXHRpbnNyXHRcMSwgdzZc blx0aW5zclx0XDEsIHc1XG5cdGluc3JcdFwxLCB3NFxuXHRpbnNyXHRcMSwg dzNcblx0aW5zclx0XDEsIHcyXG5cdGluc3JcdFwxLCB3MVxuXHRpbnNyXHRc MSwgdzB9IH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVy IHtcdG1vdlx0KHpbMC05XStcLnMpLCB3N1xuXHRpbnNyXHRcMSwgdzZcblx0 aW5zclx0XDEsIHc1XG5cdGluc3JcdFwxLCB3NFxuXHRpbnNyXHRcMSwgdzNc blx0aW5zclx0XDEsIHcyXG5cdGluc3JcdFwxLCB3MVxuXHRpbnNyXHRcMSwg dzB9IH0gfSAqLwpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFy Z2V0L2FhcmNoNjQvc3ZlL2luaXRfOC5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2Mu dGFyZ2V0L2FhcmNoNjQvc3ZlL2luaXRfOC5jCmluZGV4IDdmZjNlMDg0OWNj Li43M2Y3YWJhM2RmMyAxMDA2NDQKLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2Mu dGFyZ2V0L2FhcmNoNjQvc3ZlL2luaXRfOC5jCisrKyBiL2djYy90ZXN0c3Vp dGUvZ2NjLnRhcmdldC9hYXJjaDY0L3N2ZS9pbml0XzguYwpAQCAtMSw1ICsx LDUgQEAKIC8qIHsgZGctZG8gYXNzZW1ibGUgeyB0YXJnZXQgYWFyY2g2NF9h c21fc3ZlX29rIH0gfSAqLwotLyogeyBkZy1vcHRpb25zICItTzIgLWZuby1z Y2hlZHVsZS1pbnNucyAtbXN2ZS12ZWN0b3ItYml0cz0yNTYgLS1zYXZlLXRl bXBzIiB9ICovCisvKiB7IGRnLW9wdGlvbnMgIi1PIC1tc3ZlLXZlY3Rvci1i aXRzPTI1NiAtLXNhdmUtdGVtcHMiIH0gKi8KIAogLyogQ2FzZSA1LjI6IElu dGVybGVhdmVkIGVsZW1lbnRzIGFuZCBjb25zdGFudHMuICAqLyAKIApAQCAt MTgsMTUgKzE4LDE1IEBAIGZvbzoKIC5MRkIwOgogICAgICAgICAuY2ZpX3N0 YXJ0cHJvYwogICAgICAgICBwdHJ1ZSAgIHAwLnMsIHZsOAorICAgICAgICBh ZHJwICAgIHg0LCAuTEFOQ0hPUjAKKyAgICAgICAgYWRkICAgICB4NCwgeDQs IDpsbzEyOi5MQU5DSE9SMAorICAgICAgICBsZDF3ICAgIHoxLnMsIHAwL3os IFt4NF0KICAgICAgICAgbW92ICAgICB6MC5zLCB3MwotICAgICAgICBhZHJw ICAgIHgzLCAuTEFOQ0hPUjAKICAgICAgICAgaW5zciAgICB6MC5zLCB3Mgot ICAgICAgICBhZGQgICAgIHgzLCB4MywgOmxvMTI6LkxBTkNIT1IwCiAgICAg ICAgIGluc3IgICAgejAucywgdzEKLSAgICAgICAgbGQxdyAgICB6MS5zLCBw MC96LCBbeDNdCiAgICAgICAgIGluc3IgICAgejAucywgdzAKICAgICAgICAg emlwMSAgICB6MC5zLCB6MC5zLCB6MS5zCiAgICAgICAgIHJldAogKi8KIAot LyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyIHtcdG1vdlx0KHpbMC05 XStcLnMpLCB3M1xuXHRhZHJwXHQoeFswLTldKyksIFwuTEFOQ0hPUjBcblx0 aW5zclx0XDEsIHcyXG5cdGFkZFx0XDIsIFwyLCA6bG8xMjpcLkxBTkNIT1Iw XG5cdGluc3JcdFwxLCB3MVxuXHRsZDF3XHQoelswLTldK1wucyksIHBbMC05 XSsveiwgXFtcMlxdXG5cdGluc3JcdFwxLCB3MFxuXHR6aXAxXHRcMSwgXDEs IFwzfSB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciB7 XHRsZDF3XHQoelswLTldK1wucyksIHBbMC05XSsveiwgXFt4WzAtOV0rXF1c blx0bW92XHQoelswLTldK1wucyksIHczXG5cdGluc3JcdFwyLCB3MlxuXHRp bnNyXHRcMiwgdzFcblx0aW5zclx0XDIsIHcwXG5cdHppcDFcdFwyLCBcMiwg XDF9IH0gfSAqLwpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFy Z2V0L2FhcmNoNjQvc3ZlL2luaXRfOS5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2Mu dGFyZ2V0L2FhcmNoNjQvc3ZlL2luaXRfOS5jCmluZGV4IDRkM2M1OWIzYmY4 Li42NjhiNGVmZGJjNSAxMDA2NDQKLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2Mu dGFyZ2V0L2FhcmNoNjQvc3ZlL2luaXRfOS5jCisrKyBiL2djYy90ZXN0c3Vp dGUvZ2NjLnRhcmdldC9hYXJjaDY0L3N2ZS9pbml0XzkuYwpAQCAtMSw1ICsx LDUgQEAKIC8qIHsgZGctZG8gYXNzZW1ibGUgeyB0YXJnZXQgYWFyY2g2NF9h c21fc3ZlX29rIH0gfSAqLwotLyogeyBkZy1vcHRpb25zICItTzIgLWZuby1z Y2hlZHVsZS1pbnNucyAtbXN2ZS12ZWN0b3ItYml0cz0yNTYgLS1zYXZlLXRl bXBzIiB9ICovCisvKiB7IGRnLW9wdGlvbnMgIi1PIC1tc3ZlLXZlY3Rvci1i aXRzPTI1NiAtLXNhdmUtdGVtcHMiIH0gKi8KIAogLyogQ2FzZSA1LjM6IFJl cGVhdGVkIGVsZW1lbnRzLiAgKi8gCiAKQEAgLTE5LDkgKzE5LDkgQEAgZm9v OgogICAgICAgICAuY2ZpX3N0YXJ0cHJvYwogICAgICAgICBtb3YgICAgIHow LnMsIHcwCiAgICAgICAgIG1vdiAgICAgejEucywgdzEKLSAgICAgICAgcHRy dWUgICBwMC5zLCB2bDgKICAgICAgICAgemlwMSAgICB6MC5zLCB6MC5zLCB6 MS5zCisgICAgICAgIHB0cnVlICAgcDAucywgdmw4CiAgICAgICAgIHJldAog Ki8KIAotLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyIHtcdG1vdlx0 KHpbMC05XStcLnMpLCB3MFxuXHRtb3ZcdCh6WzAtOV0rXC5zKSwgdzFcbi4q XHR6aXAxXHRcMSwgXDEsIFwyfSB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBz Y2FuLWFzc2VtYmxlciB7XHRtb3ZcdCh6WzAtOV0rXC5zKSwgdzBcblx0bW92 XHQoelswLTldK1wucyksIHcxXG5cdHppcDFcdFwxLCBcMSwgXDJ9IH0gfSAq Lwo= --0000000000003ce24e058abe56ad--