From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-wr1-x42a.google.com (mail-wr1-x42a.google.com [IPv6:2a00:1450:4864:20::42a]) by sourceware.org (Postfix) with ESMTPS id E678E3857422 for ; Fri, 2 Jul 2021 03:16:50 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org E678E3857422 Received: by mail-wr1-x42a.google.com with SMTP id f14so10308580wrs.6 for ; Thu, 01 Jul 2021 20:16:50 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=6ZO3giOean9nGTJUyQbGYy9Io2s9bbnNZhB3cxKCRuw=; b=CNF93LC5h6GFuBKtUnXOLYMDCM87OY6OecInhFDPkqQBduikZU1kAHMSEbLHx1I7dF VQiNFMjYTqEgaffk7sVPLlr56kZxlillZMNmQgDUmZkiUcGiJFKFe78frtWJRBoqAr4i hHsdZ6/Y6yYFwhVsYzH7LK4xUTS1KSgDtQZXu8UcZi2rHE7oNSqkYTgr7nCd6aE8Yk62 opKJgu7L+pxCCOVZ/a15tQkSPGHGf/jEyVoAAFdePJG0L/A+PywpQFMEQoLOBoQbRd/p 1mIvFFsfpIQ42SyTiPxto5JpFf6zqkCBvwmIMyiZUwV1xPbXehyyUb2MO5ciikfL2beJ ASGQ== X-Gm-Message-State: AOAM5300ZhW/RYtZIGWCHwRC8ZQMvNcc/n7HcWQ5ludngXBOgc8zVZpn 1g+IK0J5Ts3aF8NcrG72sfsQqzh28LyJcNDmQiY= X-Google-Smtp-Source: ABdhPJyek+57/R80aP4TlKSAuaX+G3puQmW0vZ3Lm+J5wEpyl2tQdR3gQEJLRWSIuJzipIiaNOnc04BMIM7dsHfSQ/w= X-Received: by 2002:adf:fe12:: with SMTP id n18mr3010084wrr.219.1625195809330; Thu, 01 Jul 2021 20:16:49 -0700 (PDT) MIME-Version: 1.0 References: <20210701075149.1619883-1-hongyu.wang@intel.com> In-Reply-To: From: Hongyu Wang Date: Fri, 2 Jul 2021 11:12:26 +0800 Message-ID: Subject: Re: [PATCH] [i386] Clear odata for aes(enc|dec)(wide)?kl intrinsics To: Hongtao Liu Cc: Hongyu Wang , GCC Patches Content-Type: multipart/mixed; boundary="000000000000e7f6b905c61b6264" X-Spam-Status: No, score=-7.6 required=5.0 tests=BAYES_00, BODY_8BITS, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FREEMAIL_ENVFROM_END_DIGIT, FREEMAIL_FROM, GIT_PATCH_0, KAM_SHORT, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on server2.sourceware.org X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 02 Jul 2021 03:16:54 -0000 --000000000000e7f6b905c61b6264 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Updated patch with minor change to move the variable declaration after comm= ent. Hongtao, could you help check-in the patch? Hongyu Wang =E4=BA=8E2021=E5=B9=B47=E6=9C=881=E6= =97=A5=E5=91=A8=E5=9B=9B =E4=B8=8B=E5=8D=884:16=E5=86=99=E9=81=93=EF=BC=9A > > > Change some keylocker insn to Keylocker aesenc/aesdec in comments. > > others LGTM. > > Changed. > > Forgot to mention bootstrapped and regression tested on > x86_64-linux-gnu {,-m32}. > > Attached file is the patch i'm going to check-in. > > Hongtao Liu via Gcc-patches =E4=BA=8E2021=E5=B9= =B47=E6=9C=881=E6=97=A5=E5=91=A8=E5=9B=9B =E4=B8=8B=E5=8D=884:07=E5=86=99= =E9=81=93=EF=BC=9A > > > > On Thu, Jul 1, 2021 at 3:51 PM Hongyu Wang wrot= e: > > > > > > For Keylocker aesenc/aesdec intrinsics, current implementation > > > moves idata to odata unconditionally, which causes safety issue when > > > the instruction meets runtime error. So we add a branch to clear > > > odata when ZF is set after instruction exectution. > > > > > > gcc/ChangeLog: > > > > > > * config/i386/i386-expand.c (ix86_expand_builtin): > > > Add branch to clear odata when ZF is set for asedecenc_expand > > > and wideaesdecenc_expand. > > > > > > gcc/testsuite/ChangeLog: > > > > > > * gcc.target/i386/keylocker-aesdec128kl.c: Update test. > > > * gcc.target/i386/keylocker-aesdec256kl.c: Likewise. > > > * gcc.target/i386/keylocker-aesdecwide128kl.c: Likewise. > > > * gcc.target/i386/keylocker-aesdecwide256kl.c: Likewise. > > > * gcc.target/i386/keylocker-aesenc128kl.c: Likewise. > > > * gcc.target/i386/keylocker-aesenc256kl.c: Likewise. > > > * gcc.target/i386/keylocker-aesencwide128kl.c: Likewise. > > > * gcc.target/i386/keylocker-aesencwide256kl.c: Likewise. > > > --- > > > gcc/config/i386/i386-expand.c | 33 ++++++++++++++++-= -- > > > .../gcc.target/i386/keylocker-aesdec128kl.c | 2 ++ > > > .../gcc.target/i386/keylocker-aesdec256kl.c | 2 ++ > > > .../i386/keylocker-aesdecwide128kl.c | 9 +++++ > > > .../i386/keylocker-aesdecwide256kl.c | 9 +++++ > > > .../gcc.target/i386/keylocker-aesenc128kl.c | 2 ++ > > > .../gcc.target/i386/keylocker-aesenc256kl.c | 2 ++ > > > .../i386/keylocker-aesencwide128kl.c | 9 +++++ > > > .../i386/keylocker-aesencwide256kl.c | 9 +++++ > > > 9 files changed, 72 insertions(+), 5 deletions(-) > > > > > > diff --git a/gcc/config/i386/i386-expand.c b/gcc/config/i386/i386-exp= and.c > > > index e9763eb5b3e..de85f256fee 100644 > > > --- a/gcc/config/i386/i386-expand.c > > > +++ b/gcc/config/i386/i386-expand.c > > > @@ -11556,6 +11556,9 @@ ix86_expand_builtin (tree exp, rtx target, rt= x subtarget, > > > > > > aesdecenc_expand: > > > > > > + rtx_code_label *ok_label; > > > + rtx tmp; > > > + > > > arg0 =3D CALL_EXPR_ARG (exp, 0); // __m128i *odata > > > arg1 =3D CALL_EXPR_ARG (exp, 1); // __m128i idata > > > arg2 =3D CALL_EXPR_ARG (exp, 2); // const void *p > > > @@ -11586,10 +11589,21 @@ ix86_expand_builtin (tree exp, rtx target, = rtx subtarget, > > > if (target =3D=3D 0) > > > target =3D gen_reg_rtx (QImode); > > > > > > - pat =3D gen_rtx_EQ (QImode, gen_rtx_REG (CCZmode, FLAGS_REG), > > > - const0_rtx); > > > - emit_insn (gen_rtx_SET (target, pat)); > > > + /* NB: For some keylocker insn, ZF will be set when runtime > > > + error occurs. Then the output should be cleared for safety. = */ > > Change some keylocker insn to Keylocker aesenc/aesdec in comments. > > others LGTM. > > > + tmp =3D gen_rtx_REG (CCZmode, FLAGS_REG); > > > + pat =3D gen_rtx_EQ (QImode, tmp, const0_rtx); > > > + ok_label =3D gen_label_rtx (); > > > + emit_cmp_and_jump_insns (tmp, const0_rtx, NE, 0, GET_MODE (tmp= ), > > > + true, ok_label); > > > + /* Usually the runtime error seldom occur, so predict OK path = as > > > + hotspot to optimize it as fallthrough block. */ > > > + predict_jump (REG_BR_PROB_BASE * 90 / 100); > > > + > > > + emit_insn (gen_rtx_SET (op1, const0_rtx)); > > > > > > + emit_label (ok_label); > > > + emit_insn (gen_rtx_SET (target, pat)); > > > emit_insn (gen_rtx_SET (op0, op1)); > > > > > > return target; > > > @@ -11644,8 +11658,17 @@ ix86_expand_builtin (tree exp, rtx target, r= tx subtarget, > > > if (target =3D=3D 0) > > > target =3D gen_reg_rtx (QImode); > > > > > > - pat =3D gen_rtx_EQ (QImode, gen_rtx_REG (CCZmode, FLAGS_REG), > > > - const0_rtx); > > > + tmp =3D gen_rtx_REG (CCZmode, FLAGS_REG); > > > + pat =3D gen_rtx_EQ (QImode, tmp, const0_rtx); > > > + ok_label =3D gen_label_rtx (); > > > + emit_cmp_and_jump_insns (tmp, const0_rtx, NE, 0, GET_MODE (tmp= ), > > > + true, ok_label); > > > + predict_jump (REG_BR_PROB_BASE * 90 / 100); > > > + > > > + for (i =3D 0; i < 8; i++) > > > + emit_insn (gen_rtx_SET (xmm_regs[i], const0_rtx)); > > > + > > > + emit_label (ok_label); > > > emit_insn (gen_rtx_SET (target, pat)); > > > > > > for (i =3D 0; i < 8; i++) > > > diff --git a/gcc/testsuite/gcc.target/i386/keylocker-aesdec128kl.c b/= gcc/testsuite/gcc.target/i386/keylocker-aesdec128kl.c > > > index d134612beea..71111c3206c 100644 > > > --- a/gcc/testsuite/gcc.target/i386/keylocker-aesdec128kl.c > > > +++ b/gcc/testsuite/gcc.target/i386/keylocker-aesdec128kl.c > > > @@ -2,8 +2,10 @@ > > > /* { dg-options "-mkl -O2" } */ > > > /* { dg-final { scan-assembler "movdqa\[ \\t\]+\[^\\n\\r\]*, %xmm0" = } } */ > > > /* { dg-final { scan-assembler "aesdec128kl\[ \\t\]+\[^\\n\\r\]*, %x= mm0" } } */ > > > +/* { dg-final { scan-assembler "j\[ez\]" } } */ > > > /* { dg-final { scan-assembler "sete" } } */ > > > /* { dg-final { scan-assembler "(?:movdqu|movups)\[ \\t\]+\[^\\n\\r\= ]*%xmm0,\[^\\n\\r\]*" } } */ > > > +/* { dg-final { scan-assembler "pxor\[ \t\]+%xmm0, %xmm0" } } */ > > > > > > #include > > > > > > diff --git a/gcc/testsuite/gcc.target/i386/keylocker-aesdec256kl.c b/= gcc/testsuite/gcc.target/i386/keylocker-aesdec256kl.c > > > index 34736d2d61a..30189d6ae06 100644 > > > --- a/gcc/testsuite/gcc.target/i386/keylocker-aesdec256kl.c > > > +++ b/gcc/testsuite/gcc.target/i386/keylocker-aesdec256kl.c > > > @@ -2,8 +2,10 @@ > > > /* { dg-options "-mkl -O2" } */ > > > /* { dg-final { scan-assembler "movdqa\[ \\t\]+\[^\\n\\r\]*, %xmm0" = } } */ > > > /* { dg-final { scan-assembler "aesdec256kl\[ \\t\]+\[^\\n\\r\]*, %x= mm0" } } */ > > > +/* { dg-final { scan-assembler "j\[ez\]" } } */ > > > /* { dg-final { scan-assembler "sete" } } */ > > > /* { dg-final { scan-assembler "(?:movdqu|movups)\[ \\t\]+\[^\\n\\r\= ]*%xmm0,\[^\\n\\r\]*" } } */ > > > +/* { dg-final { scan-assembler "pxor\[ \t\]+%xmm0, %xmm0" } } */ > > > > > > #include > > > > > > diff --git a/gcc/testsuite/gcc.target/i386/keylocker-aesdecwide128kl.= c b/gcc/testsuite/gcc.target/i386/keylocker-aesdecwide128kl.c > > > index d23cf4b6517..93806e51508 100644 > > > --- a/gcc/testsuite/gcc.target/i386/keylocker-aesdecwide128kl.c > > > +++ b/gcc/testsuite/gcc.target/i386/keylocker-aesdecwide128kl.c > > > @@ -9,6 +9,7 @@ > > > /* { dg-final { scan-assembler "movdqu\[ \\t\]+\[^\\n\\r\]*96\[^\\n\= \r\]*, %xmm6" } } */ > > > /* { dg-final { scan-assembler "movdqu\[ \\t\]+\[^\\n\\r\]*112\[^\\n= \\r\]*, %xmm7" } } */ > > > /* { dg-final { scan-assembler "aesdecwide128kl\[ \\t\]+\[^\\n\\r\]*= " } } */ > > > +/* { dg-final { scan-assembler "j\[ez\]" } } */ > > > /* { dg-final { scan-assembler "sete" } } */ > > > /* { dg-final { scan-assembler "(?:movdqu|movups)\[ \\t\]+\[^\\n\\r\= ]*%xmm0,\[^\\n\\r\]*" } } */ > > > /* { dg-final { scan-assembler "(?:movdqu|movups)\[ \\t\]+\[^\\n\\r\= ]*%xmm1,\[^\\n\\r\]*16\[^\\n\\r\]*" } } */ > > > @@ -18,6 +19,14 @@ > > > /* { dg-final { scan-assembler "(?:movdqu|movups)\[ \\t\]+\[^\\n\\r\= ]*%xmm5,\[^\\n\\r\]*80\[^\\n\\r\]*" } } */ > > > /* { dg-final { scan-assembler "(?:movdqu|movups)\[ \\t\]+\[^\\n\\r\= ]*%xmm6,\[^\\n\\r\]*96\[^\\n\\r\]*" } } */ > > > /* { dg-final { scan-assembler "(?:movdqu|movups)\[ \\t\]+\[^\\n\\r\= ]*%xmm7,\[^\\n\\r\]*112\[^\\n\\r\]*" } } */ > > > +/* { dg-final { scan-assembler "pxor\[ \t\]+%xmm0, %xmm0" } } */ > > > +/* { dg-final { scan-assembler "pxor\[ \t\]+%xmm1, %xmm1" } } */ > > > +/* { dg-final { scan-assembler "pxor\[ \t\]+%xmm2, %xmm2" } } */ > > > +/* { dg-final { scan-assembler "pxor\[ \t\]+%xmm3, %xmm3" } } */ > > > +/* { dg-final { scan-assembler "pxor\[ \t\]+%xmm4, %xmm4" } } */ > > > +/* { dg-final { scan-assembler "pxor\[ \t\]+%xmm5, %xmm5" } } */ > > > +/* { dg-final { scan-assembler "pxor\[ \t\]+%xmm6, %xmm6" } } */ > > > +/* { dg-final { scan-assembler "pxor\[ \t\]+%xmm7, %xmm7" } } */ > > > > > > #include > > > > > > diff --git a/gcc/testsuite/gcc.target/i386/keylocker-aesdecwide256kl.= c b/gcc/testsuite/gcc.target/i386/keylocker-aesdecwide256kl.c > > > index 44c3252ab47..f9ccc82c7ca 100644 > > > --- a/gcc/testsuite/gcc.target/i386/keylocker-aesdecwide256kl.c > > > +++ b/gcc/testsuite/gcc.target/i386/keylocker-aesdecwide256kl.c > > > @@ -9,6 +9,7 @@ > > > /* { dg-final { scan-assembler "movdqu\[ \\t\]+\[^\\n\\r\]*96\[^\\n\= \r\]*, %xmm6" } } */ > > > /* { dg-final { scan-assembler "movdqu\[ \\t\]+\[^\\n\\r\]*112\[^\\n= \\r\]*, %xmm7" } } */ > > > /* { dg-final { scan-assembler "aesdecwide256kl\[ \\t\]+\[^\\n\\r\]*= " } } */ > > > +/* { dg-final { scan-assembler "j\[ez\]" } } */ > > > /* { dg-final { scan-assembler "sete" } } */ > > > /* { dg-final { scan-assembler "(?:movdqu|movups)\[ \\t\]+\[^\\n\\r\= ]*%xmm0,\[^\\n\\r\]*" } } */ > > > /* { dg-final { scan-assembler "(?:movdqu|movups)\[ \\t\]+\[^\\n\\r\= ]*%xmm1,\[^\\n\\r\]*16\[^\\n\\r\]*" } } */ > > > @@ -18,6 +19,14 @@ > > > /* { dg-final { scan-assembler "(?:movdqu|movups)\[ \\t\]+\[^\\n\\r\= ]*%xmm5,\[^\\n\\r\]*80\[^\\n\\r\]*" } } */ > > > /* { dg-final { scan-assembler "(?:movdqu|movups)\[ \\t\]+\[^\\n\\r\= ]*%xmm6,\[^\\n\\r\]*96\[^\\n\\r\]*" } } */ > > > /* { dg-final { scan-assembler "(?:movdqu|movups)\[ \\t\]+\[^\\n\\r\= ]*%xmm7,\[^\\n\\r\]*112\[^\\n\\r\]*" } } */ > > > +/* { dg-final { scan-assembler "pxor\[ \t\]+%xmm0, %xmm0" } } */ > > > +/* { dg-final { scan-assembler "pxor\[ \t\]+%xmm1, %xmm1" } } */ > > > +/* { dg-final { scan-assembler "pxor\[ \t\]+%xmm2, %xmm2" } } */ > > > +/* { dg-final { scan-assembler "pxor\[ \t\]+%xmm3, %xmm3" } } */ > > > +/* { dg-final { scan-assembler "pxor\[ \t\]+%xmm4, %xmm4" } } */ > > > +/* { dg-final { scan-assembler "pxor\[ \t\]+%xmm5, %xmm5" } } */ > > > +/* { dg-final { scan-assembler "pxor\[ \t\]+%xmm6, %xmm6" } } */ > > > +/* { dg-final { scan-assembler "pxor\[ \t\]+%xmm7, %xmm7" } } */ > > > > > > #include > > > > > > diff --git a/gcc/testsuite/gcc.target/i386/keylocker-aesenc128kl.c b/= gcc/testsuite/gcc.target/i386/keylocker-aesenc128kl.c > > > index 9ff483656fd..61a9cc279fc 100644 > > > --- a/gcc/testsuite/gcc.target/i386/keylocker-aesenc128kl.c > > > +++ b/gcc/testsuite/gcc.target/i386/keylocker-aesenc128kl.c > > > @@ -2,8 +2,10 @@ > > > /* { dg-options "-mkl -O2" } */ > > > /* { dg-final { scan-assembler "movdqa\[ \\t\]+\[^\\n\\r\]*, %xmm0" = } } */ > > > /* { dg-final { scan-assembler "aesenc128kl\[ \\t\]+\[^\\n\\r\]*, %x= mm0" } } */ > > > +/* { dg-final { scan-assembler "j\[ez\]" } } */ > > > /* { dg-final { scan-assembler "sete" } } */ > > > /* { dg-final { scan-assembler "(?:movdqu|movups)\[ \\t\]+\[^\\n\\r\= ]*%xmm0,\[^\\n\\r\]*" } } */ > > > +/* { dg-final { scan-assembler "pxor\[ \t\]+%xmm0, %xmm0" } } */ > > > > > > #include > > > > > > diff --git a/gcc/testsuite/gcc.target/i386/keylocker-aesenc256kl.c b/= gcc/testsuite/gcc.target/i386/keylocker-aesenc256kl.c > > > index 1c5e0765c07..f8e6bb7321f 100644 > > > --- a/gcc/testsuite/gcc.target/i386/keylocker-aesenc256kl.c > > > +++ b/gcc/testsuite/gcc.target/i386/keylocker-aesenc256kl.c > > > @@ -2,8 +2,10 @@ > > > /* { dg-options "-mkl -O2" } */ > > > /* { dg-final { scan-assembler "movdqa\[ \\t\]+\[^\\n\\r\]*, %xmm0" = } } */ > > > /* { dg-final { scan-assembler "aesenc256kl\[ \\t\]+\[^\\n\\r\]*, %x= mm0" } } */ > > > +/* { dg-final { scan-assembler "j\[ez\]" } } */ > > > /* { dg-final { scan-assembler "sete" } } */ > > > /* { dg-final { scan-assembler "(?:movdqu|movups)\[ \\t\]+\[^\\n\\r\= ]*%xmm0,\[^\\n\\r\]*" } } */ > > > +/* { dg-final { scan-assembler "pxor\[ \t\]+%xmm0, %xmm0" } } */ > > > > > > #include > > > > > > diff --git a/gcc/testsuite/gcc.target/i386/keylocker-aesencwide128kl.= c b/gcc/testsuite/gcc.target/i386/keylocker-aesencwide128kl.c > > > index 9fb9c49314f..c0fcd28fb07 100644 > > > --- a/gcc/testsuite/gcc.target/i386/keylocker-aesencwide128kl.c > > > +++ b/gcc/testsuite/gcc.target/i386/keylocker-aesencwide128kl.c > > > @@ -9,6 +9,7 @@ > > > /* { dg-final { scan-assembler "movdqu\[ \\t\]+\[^\\n\\r\]*96\[^\\n\= \r\]*, %xmm6" } } */ > > > /* { dg-final { scan-assembler "movdqu\[ \\t\]+\[^\\n\\r\]*112\[^\\n= \\r\]*, %xmm7" } } */ > > > /* { dg-final { scan-assembler "aesencwide128kl\[ \\t\]+\[^\\n\\r\]*= " } } */ > > > +/* { dg-final { scan-assembler "j\[ez\]" } } */ > > > /* { dg-final { scan-assembler "sete" } } */ > > > /* { dg-final { scan-assembler "(?:movdqu|movups)\[ \\t\]+\[^\\n\\r\= ]*%xmm0,\[^\\n\\r\]*" } } */ > > > /* { dg-final { scan-assembler "(?:movdqu|movups)\[ \\t\]+\[^\\n\\r\= ]*%xmm1,\[^\\n\\r\]*16\[^\\n\\r\]*" } } */ > > > @@ -18,6 +19,14 @@ > > > /* { dg-final { scan-assembler "(?:movdqu|movups)\[ \\t\]+\[^\\n\\r\= ]*%xmm5,\[^\\n\\r\]*80\[^\\n\\r\]*" } } */ > > > /* { dg-final { scan-assembler "(?:movdqu|movups)\[ \\t\]+\[^\\n\\r\= ]*%xmm6,\[^\\n\\r\]*96\[^\\n\\r\]*" } } */ > > > /* { dg-final { scan-assembler "(?:movdqu|movups)\[ \\t\]+\[^\\n\\r\= ]*%xmm7,\[^\\n\\r\]*112\[^\\n\\r\]*" } } */ > > > +/* { dg-final { scan-assembler "pxor\[ \t\]+%xmm0, %xmm0" } } */ > > > +/* { dg-final { scan-assembler "pxor\[ \t\]+%xmm1, %xmm1" } } */ > > > +/* { dg-final { scan-assembler "pxor\[ \t\]+%xmm2, %xmm2" } } */ > > > +/* { dg-final { scan-assembler "pxor\[ \t\]+%xmm3, %xmm3" } } */ > > > +/* { dg-final { scan-assembler "pxor\[ \t\]+%xmm4, %xmm4" } } */ > > > +/* { dg-final { scan-assembler "pxor\[ \t\]+%xmm5, %xmm5" } } */ > > > +/* { dg-final { scan-assembler "pxor\[ \t\]+%xmm6, %xmm6" } } */ > > > +/* { dg-final { scan-assembler "pxor\[ \t\]+%xmm7, %xmm7" } } */ > > > > > > #include > > > > > > diff --git a/gcc/testsuite/gcc.target/i386/keylocker-aesencwide256kl.= c b/gcc/testsuite/gcc.target/i386/keylocker-aesencwide256kl.c > > > index 125a787dcd9..31463a8b2da 100644 > > > --- a/gcc/testsuite/gcc.target/i386/keylocker-aesencwide256kl.c > > > +++ b/gcc/testsuite/gcc.target/i386/keylocker-aesencwide256kl.c > > > @@ -9,6 +9,7 @@ > > > /* { dg-final { scan-assembler "movdqu\[ \\t\]+\[^\\n\\r\]*96\[^\\n\= \r\]*, %xmm6" } } */ > > > /* { dg-final { scan-assembler "movdqu\[ \\t\]+\[^\\n\\r\]*112\[^\\n= \\r\]*, %xmm7" } } */ > > > /* { dg-final { scan-assembler "aesencwide256kl\[ \\t\]+\[^\\n\\r\]*= " } } */ > > > +/* { dg-final { scan-assembler "j\[ez\]" } } */ > > > /* { dg-final { scan-assembler "sete" } } */ > > > /* { dg-final { scan-assembler "(?:movdqu|movups)\[ \\t\]+\[^\\n\\r\= ]*%xmm0,\[^\\n\\r\]*" } } */ > > > /* { dg-final { scan-assembler "(?:movdqu|movups)\[ \\t\]+\[^\\n\\r\= ]*%xmm1,\[^\\n\\r\]*16\[^\\n\\r\]*" } } */ > > > @@ -18,6 +19,14 @@ > > > /* { dg-final { scan-assembler "(?:movdqu|movups)\[ \\t\]+\[^\\n\\r\= ]*%xmm5,\[^\\n\\r\]*80\[^\\n\\r\]*" } } */ > > > /* { dg-final { scan-assembler "(?:movdqu|movups)\[ \\t\]+\[^\\n\\r\= ]*%xmm6,\[^\\n\\r\]*96\[^\\n\\r\]*" } } */ > > > /* { dg-final { scan-assembler "(?:movdqu|movups)\[ \\t\]+\[^\\n\\r\= ]*%xmm7,\[^\\n\\r\]*112\[^\\n\\r\]*" } } */ > > > +/* { dg-final { scan-assembler "pxor\[ \t\]+%xmm0, %xmm0" } } */ > > > +/* { dg-final { scan-assembler "pxor\[ \t\]+%xmm1, %xmm1" } } */ > > > +/* { dg-final { scan-assembler "pxor\[ \t\]+%xmm2, %xmm2" } } */ > > > +/* { dg-final { scan-assembler "pxor\[ \t\]+%xmm3, %xmm3" } } */ > > > +/* { dg-final { scan-assembler "pxor\[ \t\]+%xmm4, %xmm4" } } */ > > > +/* { dg-final { scan-assembler "pxor\[ \t\]+%xmm5, %xmm5" } } */ > > > +/* { dg-final { scan-assembler "pxor\[ \t\]+%xmm6, %xmm6" } } */ > > > +/* { dg-final { scan-assembler "pxor\[ \t\]+%xmm7, %xmm7" } } */ > > > > > > #include > > > > > > -- > > > 2.18.2 > > > > > > > > > -- > > BR, > > Hongtao --=20 Regards, Hongyu, Wang --000000000000e7f6b905c61b6264 Content-Type: text/x-patch; charset="US-ASCII"; name="0001-i386-Clear-odata-for-aes-enc-dec-wide-kl-intrinsics-.patch" Content-Disposition: attachment; filename="0001-i386-Clear-odata-for-aes-enc-dec-wide-kl-intrinsics-.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_kqlre2950 RnJvbSA3ZTc0N2Q3ZmM0N2YwNTBmMGMwMjVjYWIwZTFjN2U1YTZhNWQ1Njg1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIb25neXUgV2FuZyA8aG9uZ3l1LndhbmdAaW50ZWwuY29tPgpE YXRlOiBXZWQsIDMwIEp1biAyMDIxIDE0OjM4OjMxICswODAwClN1YmplY3Q6IFtQQVRDSF0gW2kz ODZdIENsZWFyIG9kYXRhIGZvciBhZXMoZW5jfGRlYykod2lkZSk/a2wgaW50cmluc2ljcyB3aGVu CiBaRiBpcyBzZXQuCgpGb3IgS2V5bG9ja2VyIGFlc2VuYy9hZXNkZWMgaW50cmluc2ljcywgY3Vy cmVudCBpbXBsZW1lbnRhdGlvbgptb3ZlcyBpZGF0YSB0byBvZGF0YSB1bmNvbmRpdGlvbmFsbHks IHdoaWNoIGNhdXNlcyBzYWZldHkgaXNzdWUgd2hlbgp0aGUgaW5zdHJ1Y3Rpb24gbWVldHMgcnVu dGltZSBlcnJvci4gU28gd2UgYWRkIGEgYnJhbmNoIHRvIGNsZWFyCm9kYXRhIHdoZW4gWkYgaXMg c2V0IGFmdGVyIGluc3RydWN0aW9uIGV4ZWN0dXRpb24uCgpnY2MvQ2hhbmdlTG9nOgoKCSogY29u ZmlnL2kzODYvaTM4Ni1leHBhbmQuYyAoaXg4Nl9leHBhbmRfYnVpbHRpbik6CglBZGQgYnJhbmNo IHRvIGNsZWFyIG9kYXRhIHdoZW4gWkYgaXMgc2V0IGZvciBhc2VkZWNlbmNfZXhwYW5kCglhbmQg d2lkZWFlc2RlY2VuY19leHBhbmQuCgpnY2MvdGVzdHN1aXRlL0NoYW5nZUxvZzoKCgkqIGdjYy50 YXJnZXQvaTM4Ni9rZXlsb2NrZXItYWVzZGVjMTI4a2wuYzogVXBkYXRlIHRlc3QuCgkqIGdjYy50 YXJnZXQvaTM4Ni9rZXlsb2NrZXItYWVzZGVjMjU2a2wuYzogTGlrZXdpc2UuCgkqIGdjYy50YXJn ZXQvaTM4Ni9rZXlsb2NrZXItYWVzZGVjd2lkZTEyOGtsLmM6IExpa2V3aXNlLgoJKiBnY2MudGFy Z2V0L2kzODYva2V5bG9ja2VyLWFlc2RlY3dpZGUyNTZrbC5jOiBMaWtld2lzZS4KCSogZ2NjLnRh cmdldC9pMzg2L2tleWxvY2tlci1hZXNlbmMxMjhrbC5jOiBMaWtld2lzZS4KCSogZ2NjLnRhcmdl dC9pMzg2L2tleWxvY2tlci1hZXNlbmMyNTZrbC5jOiBMaWtld2lzZS4KCSogZ2NjLnRhcmdldC9p Mzg2L2tleWxvY2tlci1hZXNlbmN3aWRlMTI4a2wuYzogTGlrZXdpc2UuCgkqIGdjYy50YXJnZXQv aTM4Ni9rZXlsb2NrZXItYWVzZW5jd2lkZTI1NmtsLmM6IExpa2V3aXNlLgotLS0KIGdjYy9jb25m aWcvaTM4Ni9pMzg2LWV4cGFuZC5jICAgICAgICAgICAgICAgICB8IDMzICsrKysrKysrKysrKysr KystLS0KIC4uLi9nY2MudGFyZ2V0L2kzODYva2V5bG9ja2VyLWFlc2RlYzEyOGtsLmMgICB8ICAy ICsrCiAuLi4vZ2NjLnRhcmdldC9pMzg2L2tleWxvY2tlci1hZXNkZWMyNTZrbC5jICAgfCAgMiAr KwogLi4uL2kzODYva2V5bG9ja2VyLWFlc2RlY3dpZGUxMjhrbC5jICAgICAgICAgIHwgIDkgKysr KysKIC4uLi9pMzg2L2tleWxvY2tlci1hZXNkZWN3aWRlMjU2a2wuYyAgICAgICAgICB8ICA5ICsr KysrCiAuLi4vZ2NjLnRhcmdldC9pMzg2L2tleWxvY2tlci1hZXNlbmMxMjhrbC5jICAgfCAgMiAr KwogLi4uL2djYy50YXJnZXQvaTM4Ni9rZXlsb2NrZXItYWVzZW5jMjU2a2wuYyAgIHwgIDIgKysK IC4uLi9pMzg2L2tleWxvY2tlci1hZXNlbmN3aWRlMTI4a2wuYyAgICAgICAgICB8ICA5ICsrKysr CiAuLi4vaTM4Ni9rZXlsb2NrZXItYWVzZW5jd2lkZTI1NmtsLmMgICAgICAgICAgfCAgOSArKysr KwogOSBmaWxlcyBjaGFuZ2VkLCA3MiBpbnNlcnRpb25zKCspLCA1IGRlbGV0aW9ucygtKQoKZGlm ZiAtLWdpdCBhL2djYy9jb25maWcvaTM4Ni9pMzg2LWV4cGFuZC5jIGIvZ2NjL2NvbmZpZy9pMzg2 L2kzODYtZXhwYW5kLmMKaW5kZXggNWM5MTcwZTNhMWQuLmE2MzMxOWFiYTI2IDEwMDY0NAotLS0g YS9nY2MvY29uZmlnL2kzODYvaTM4Ni1leHBhbmQuYworKysgYi9nY2MvY29uZmlnL2kzODYvaTM4 Ni1leHBhbmQuYwpAQCAtMTE3NTMsMTAgKzExNzUzLDI0IEBAIGl4ODZfZXhwYW5kX2J1aWx0aW4g KHRyZWUgZXhwLCBydHggdGFyZ2V0LCBydHggc3VidGFyZ2V0LAogICAgICAgaWYgKHRhcmdldCA9 PSAwKQogCXRhcmdldCA9IGdlbl9yZWdfcnR4IChRSW1vZGUpOwogCi0gICAgICBwYXQgPSBnZW5f cnR4X0VRIChRSW1vZGUsIGdlbl9ydHhfUkVHIChDQ1ptb2RlLCBGTEFHU19SRUcpLAotCQkJY29u c3QwX3J0eCk7Ci0gICAgICBlbWl0X2luc24gKGdlbl9ydHhfU0VUICh0YXJnZXQsIHBhdCkpOwor ICAgICAgLyogTkI6IEZvciBhZXNlbmMvYWVzZGVjIGtleWxvY2tlciBpbnNuLCBaRiB3aWxsIGJl IHNldCB3aGVuIHJ1bnRpbWUKKwkgZXJyb3Igb2NjdXJzLiBUaGVuIHRoZSBvdXRwdXQgc2hvdWxk IGJlIGNsZWFyZWQgZm9yIHNhZmV0eS4gKi8KKyAgICAgIHJ0eF9jb2RlX2xhYmVsICpva19sYWJl bDsKKyAgICAgIHJ0eCB0bXA7CisKKyAgICAgIHRtcCA9IGdlbl9ydHhfUkVHIChDQ1ptb2RlLCBG TEFHU19SRUcpOworICAgICAgcGF0ID0gZ2VuX3J0eF9FUSAoUUltb2RlLCB0bXAsIGNvbnN0MF9y dHgpOworICAgICAgb2tfbGFiZWwgPSBnZW5fbGFiZWxfcnR4ICgpOworICAgICAgZW1pdF9jbXBf YW5kX2p1bXBfaW5zbnMgKHRtcCwgY29uc3QwX3J0eCwgTkUsIDAsIEdFVF9NT0RFICh0bXApLAor CQkJICAgICAgIHRydWUsIG9rX2xhYmVsKTsKKyAgICAgIC8qIFVzdWFsbHkgdGhlIHJ1bnRpbWUg ZXJyb3Igc2VsZG9tIG9jY3VyLCBzbyBwcmVkaWN0IE9LIHBhdGggYXMKKwkgaG90c3BvdCB0byBv cHRpbWl6ZSBpdCBhcyBmYWxsdGhyb3VnaCBibG9jay4gKi8KKyAgICAgIHByZWRpY3RfanVtcCAo UkVHX0JSX1BST0JfQkFTRSAqIDkwIC8gMTAwKTsKKworICAgICAgZW1pdF9pbnNuIChnZW5fcnR4 X1NFVCAob3AxLCBjb25zdDBfcnR4KSk7CiAKKyAgICAgIGVtaXRfbGFiZWwgKG9rX2xhYmVsKTsK KyAgICAgIGVtaXRfaW5zbiAoZ2VuX3J0eF9TRVQgKHRhcmdldCwgcGF0KSk7CiAgICAgICBlbWl0 X2luc24gKGdlbl9ydHhfU0VUIChvcDAsIG9wMSkpOwogCiAgICAgICByZXR1cm4gdGFyZ2V0OwpA QCAtMTE4MTEsOCArMTE4MjUsMTcgQEAgaXg4Nl9leHBhbmRfYnVpbHRpbiAodHJlZSBleHAsIHJ0 eCB0YXJnZXQsIHJ0eCBzdWJ0YXJnZXQsCiAgICAgICBpZiAodGFyZ2V0ID09IDApCiAJdGFyZ2V0 ID0gZ2VuX3JlZ19ydHggKFFJbW9kZSk7CiAKLSAgICAgIHBhdCA9IGdlbl9ydHhfRVEgKFFJbW9k ZSwgZ2VuX3J0eF9SRUcgKENDWm1vZGUsIEZMQUdTX1JFRyksCi0JCQljb25zdDBfcnR4KTsKKyAg ICAgIHRtcCA9IGdlbl9ydHhfUkVHIChDQ1ptb2RlLCBGTEFHU19SRUcpOworICAgICAgcGF0ID0g Z2VuX3J0eF9FUSAoUUltb2RlLCB0bXAsIGNvbnN0MF9ydHgpOworICAgICAgb2tfbGFiZWwgPSBn ZW5fbGFiZWxfcnR4ICgpOworICAgICAgZW1pdF9jbXBfYW5kX2p1bXBfaW5zbnMgKHRtcCwgY29u c3QwX3J0eCwgTkUsIDAsIEdFVF9NT0RFICh0bXApLAorCQkJICAgICAgIHRydWUsIG9rX2xhYmVs KTsKKyAgICAgIHByZWRpY3RfanVtcCAoUkVHX0JSX1BST0JfQkFTRSAqIDkwIC8gMTAwKTsKKwor ICAgICAgZm9yIChpID0gMDsgaSA8IDg7IGkrKykKKwllbWl0X2luc24gKGdlbl9ydHhfU0VUICh4 bW1fcmVnc1tpXSwgY29uc3QwX3J0eCkpOworCisgICAgICBlbWl0X2xhYmVsIChva19sYWJlbCk7 CiAgICAgICBlbWl0X2luc24gKGdlbl9ydHhfU0VUICh0YXJnZXQsIHBhdCkpOwogCiAgICAgICBm b3IgKGkgPSAwOyBpIDwgODsgaSsrKQpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFy Z2V0L2kzODYva2V5bG9ja2VyLWFlc2RlYzEyOGtsLmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJn ZXQvaTM4Ni9rZXlsb2NrZXItYWVzZGVjMTI4a2wuYwppbmRleCBkMTM0NjEyYmVlYS4uNzExMTFj MzIwNmMgMTAwNjQ0Ci0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2tleWxvY2tl ci1hZXNkZWMxMjhrbC5jCisrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2tleWxv Y2tlci1hZXNkZWMxMjhrbC5jCkBAIC0yLDggKzIsMTAgQEAKIC8qIHsgZGctb3B0aW9ucyAiLW1r bCAtTzIiIH0gKi8KIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAibW92ZHFhXFsgXFx0 XF0rXFteXFxuXFxyXF0qLCAleG1tMCIgfSB9ICovCiAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3Nl bWJsZXIgImFlc2RlYzEyOGtsXFsgXFx0XF0rXFteXFxuXFxyXF0qLCAleG1tMCIgfSB9ICovCisv KiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImpcW2V6XF0iIH0gfSAqLwogLyogeyBkZy1m aW5hbCB7IHNjYW4tYXNzZW1ibGVyICJzZXRlIiB9IH0gKi8KIC8qIHsgZGctZmluYWwgeyBzY2Fu LWFzc2VtYmxlciAiKD86bW92ZHF1fG1vdnVwcylcWyBcXHRcXStcW15cXG5cXHJcXSoleG1tMCxc W15cXG5cXHJcXSoiIH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJweG9y XFsgXHRcXSsleG1tMCwgJXhtbTAiIH0gfSAqLwogCiAjaW5jbHVkZSA8aW1taW50cmluLmg+CiAK ZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2tleWxvY2tlci1hZXNk ZWMyNTZrbC5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYva2V5bG9ja2VyLWFlc2Rl YzI1NmtsLmMKaW5kZXggMzQ3MzZkMmQ2MWEuLjMwMTg5ZDZhZTA2IDEwMDY0NAotLS0gYS9nY2Mv dGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9rZXlsb2NrZXItYWVzZGVjMjU2a2wuYworKysgYi9n Y2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9rZXlsb2NrZXItYWVzZGVjMjU2a2wuYwpAQCAt Miw4ICsyLDEwIEBACiAvKiB7IGRnLW9wdGlvbnMgIi1ta2wgLU8yIiB9ICovCiAvKiB7IGRnLWZp bmFsIHsgc2Nhbi1hc3NlbWJsZXIgIm1vdmRxYVxbIFxcdFxdK1xbXlxcblxcclxdKiwgJXhtbTAi IH0gfSAqLwogLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJhZXNkZWMyNTZrbFxbIFxc dFxdK1xbXlxcblxcclxdKiwgJXhtbTAiIH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNz ZW1ibGVyICJqXFtlelxdIiB9IH0gKi8KIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAi c2V0ZSIgfSB9ICovCiAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgIig/Om1vdmRxdXxt b3Z1cHMpXFsgXFx0XF0rXFteXFxuXFxyXF0qJXhtbTAsXFteXFxuXFxyXF0qIiB9IH0gKi8KKy8q IHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAicHhvclxbIFx0XF0rJXhtbTAsICV4bW0wIiB9 IH0gKi8KIAogI2luY2x1ZGUgPGltbWludHJpbi5oPgogCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1 aXRlL2djYy50YXJnZXQvaTM4Ni9rZXlsb2NrZXItYWVzZGVjd2lkZTEyOGtsLmMgYi9nY2MvdGVz dHN1aXRlL2djYy50YXJnZXQvaTM4Ni9rZXlsb2NrZXItYWVzZGVjd2lkZTEyOGtsLmMKaW5kZXgg ZDIzY2Y0YjY1MTcuLjkzODA2ZTUxNTA4IDEwMDY0NAotLS0gYS9nY2MvdGVzdHN1aXRlL2djYy50 YXJnZXQvaTM4Ni9rZXlsb2NrZXItYWVzZGVjd2lkZTEyOGtsLmMKKysrIGIvZ2NjL3Rlc3RzdWl0 ZS9nY2MudGFyZ2V0L2kzODYva2V5bG9ja2VyLWFlc2RlY3dpZGUxMjhrbC5jCkBAIC05LDYgKzks NyBAQAogLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJtb3ZkcXVcWyBcXHRcXStcW15c XG5cXHJcXSo5NlxbXlxcblxcclxdKiwgJXhtbTYiIH0gfSAqLwogLyogeyBkZy1maW5hbCB7IHNj YW4tYXNzZW1ibGVyICJtb3ZkcXVcWyBcXHRcXStcW15cXG5cXHJcXSoxMTJcW15cXG5cXHJcXSos ICV4bW03IiB9IH0gKi8KIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiYWVzZGVjd2lk ZTEyOGtsXFsgXFx0XF0rXFteXFxuXFxyXF0qIiB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2Fu LWFzc2VtYmxlciAialxbZXpcXSIgfSB9ICovCiAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJs ZXIgInNldGUiIH0gfSAqLwogLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICIoPzptb3Zk cXV8bW92dXBzKVxbIFxcdFxdK1xbXlxcblxcclxdKiV4bW0wLFxbXlxcblxcclxdKiIgfSB9ICov CiAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgIig/Om1vdmRxdXxtb3Z1cHMpXFsgXFx0 XF0rXFteXFxuXFxyXF0qJXhtbTEsXFteXFxuXFxyXF0qMTZcW15cXG5cXHJcXSoiIH0gfSAqLwpA QCAtMTgsNiArMTksMTQgQEAKIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiKD86bW92 ZHF1fG1vdnVwcylcWyBcXHRcXStcW15cXG5cXHJcXSoleG1tNSxcW15cXG5cXHJcXSo4MFxbXlxc blxcclxdKiIgfSB9ICovCiAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgIig/Om1vdmRx dXxtb3Z1cHMpXFsgXFx0XF0rXFteXFxuXFxyXF0qJXhtbTYsXFteXFxuXFxyXF0qOTZcW15cXG5c XHJcXSoiIH0gfSAqLwogLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICIoPzptb3ZkcXV8 bW92dXBzKVxbIFxcdFxdK1xbXlxcblxcclxdKiV4bW03LFxbXlxcblxcclxdKjExMlxbXlxcblxc clxdKiIgfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgInB4b3JcWyBcdFxd KyV4bW0wLCAleG1tMCIgfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgInB4 b3JcWyBcdFxdKyV4bW0xLCAleG1tMSIgfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3Nl bWJsZXIgInB4b3JcWyBcdFxdKyV4bW0yLCAleG1tMiIgfSB9ICovCisvKiB7IGRnLWZpbmFsIHsg c2Nhbi1hc3NlbWJsZXIgInB4b3JcWyBcdFxdKyV4bW0zLCAleG1tMyIgfSB9ICovCisvKiB7IGRn LWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgInB4b3JcWyBcdFxdKyV4bW00LCAleG1tNCIgfSB9ICov CisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgInB4b3JcWyBcdFxdKyV4bW01LCAleG1t NSIgfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgInB4b3JcWyBcdFxdKyV4 bW02LCAleG1tNiIgfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgInB4b3Jc WyBcdFxdKyV4bW03LCAleG1tNyIgfSB9ICovCiAKICNpbmNsdWRlIDxpbW1pbnRyaW4uaD4KIApk aWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYva2V5bG9ja2VyLWFlc2Rl Y3dpZGUyNTZrbC5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYva2V5bG9ja2VyLWFl c2RlY3dpZGUyNTZrbC5jCmluZGV4IDQ0YzMyNTJhYjQ3Li5mOWNjYzgyYzdjYSAxMDA2NDQKLS0t IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYva2V5bG9ja2VyLWFlc2RlY3dpZGUyNTZr bC5jCisrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2tleWxvY2tlci1hZXNkZWN3 aWRlMjU2a2wuYwpAQCAtOSw2ICs5LDcgQEAKIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxl ciAibW92ZHF1XFsgXFx0XF0rXFteXFxuXFxyXF0qOTZcW15cXG5cXHJcXSosICV4bW02IiB9IH0g Ki8KIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAibW92ZHF1XFsgXFx0XF0rXFteXFxu XFxyXF0qMTEyXFteXFxuXFxyXF0qLCAleG1tNyIgfSB9ICovCiAvKiB7IGRnLWZpbmFsIHsgc2Nh bi1hc3NlbWJsZXIgImFlc2RlY3dpZGUyNTZrbFxbIFxcdFxdK1xbXlxcblxcclxdKiIgfSB9ICov CisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImpcW2V6XF0iIH0gfSAqLwogLyogeyBk Zy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJzZXRlIiB9IH0gKi8KIC8qIHsgZGctZmluYWwgeyBz Y2FuLWFzc2VtYmxlciAiKD86bW92ZHF1fG1vdnVwcylcWyBcXHRcXStcW15cXG5cXHJcXSoleG1t MCxcW15cXG5cXHJcXSoiIH0gfSAqLwogLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICIo Pzptb3ZkcXV8bW92dXBzKVxbIFxcdFxdK1xbXlxcblxcclxdKiV4bW0xLFxbXlxcblxcclxdKjE2 XFteXFxuXFxyXF0qIiB9IH0gKi8KQEAgLTE4LDYgKzE5LDE0IEBACiAvKiB7IGRnLWZpbmFsIHsg c2Nhbi1hc3NlbWJsZXIgIig/Om1vdmRxdXxtb3Z1cHMpXFsgXFx0XF0rXFteXFxuXFxyXF0qJXht bTUsXFteXFxuXFxyXF0qODBcW15cXG5cXHJcXSoiIH0gfSAqLwogLyogeyBkZy1maW5hbCB7IHNj YW4tYXNzZW1ibGVyICIoPzptb3ZkcXV8bW92dXBzKVxbIFxcdFxdK1xbXlxcblxcclxdKiV4bW02 LFxbXlxcblxcclxdKjk2XFteXFxuXFxyXF0qIiB9IH0gKi8KIC8qIHsgZGctZmluYWwgeyBzY2Fu LWFzc2VtYmxlciAiKD86bW92ZHF1fG1vdnVwcylcWyBcXHRcXStcW15cXG5cXHJcXSoleG1tNyxc W15cXG5cXHJcXSoxMTJcW15cXG5cXHJcXSoiIH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4t YXNzZW1ibGVyICJweG9yXFsgXHRcXSsleG1tMCwgJXhtbTAiIH0gfSAqLworLyogeyBkZy1maW5h bCB7IHNjYW4tYXNzZW1ibGVyICJweG9yXFsgXHRcXSsleG1tMSwgJXhtbTEiIH0gfSAqLworLyog eyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJweG9yXFsgXHRcXSsleG1tMiwgJXhtbTIiIH0g fSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJweG9yXFsgXHRcXSsleG1tMywg JXhtbTMiIH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJweG9yXFsgXHRc XSsleG1tNCwgJXhtbTQiIH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJw eG9yXFsgXHRcXSsleG1tNSwgJXhtbTUiIH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNz ZW1ibGVyICJweG9yXFsgXHRcXSsleG1tNiwgJXhtbTYiIH0gfSAqLworLyogeyBkZy1maW5hbCB7 IHNjYW4tYXNzZW1ibGVyICJweG9yXFsgXHRcXSsleG1tNywgJXhtbTciIH0gfSAqLwogCiAjaW5j bHVkZSA8aW1taW50cmluLmg+CiAKZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdl dC9pMzg2L2tleWxvY2tlci1hZXNlbmMxMjhrbC5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0 L2kzODYva2V5bG9ja2VyLWFlc2VuYzEyOGtsLmMKaW5kZXggOWZmNDgzNjU2ZmQuLjYxYTljYzI3 OWZjIDEwMDY0NAotLS0gYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9rZXlsb2NrZXIt YWVzZW5jMTI4a2wuYworKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9rZXlsb2Nr ZXItYWVzZW5jMTI4a2wuYwpAQCAtMiw4ICsyLDEwIEBACiAvKiB7IGRnLW9wdGlvbnMgIi1ta2wg LU8yIiB9ICovCiAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgIm1vdmRxYVxbIFxcdFxd K1xbXlxcblxcclxdKiwgJXhtbTAiIH0gfSAqLwogLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1i bGVyICJhZXNlbmMxMjhrbFxbIFxcdFxdK1xbXlxcblxcclxdKiwgJXhtbTAiIH0gfSAqLworLyog eyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJqXFtlelxdIiB9IH0gKi8KIC8qIHsgZGctZmlu YWwgeyBzY2FuLWFzc2VtYmxlciAic2V0ZSIgfSB9ICovCiAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1h c3NlbWJsZXIgIig/Om1vdmRxdXxtb3Z1cHMpXFsgXFx0XF0rXFteXFxuXFxyXF0qJXhtbTAsXFte XFxuXFxyXF0qIiB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAicHhvclxb IFx0XF0rJXhtbTAsICV4bW0wIiB9IH0gKi8KIAogI2luY2x1ZGUgPGltbWludHJpbi5oPgogCmRp ZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9rZXlsb2NrZXItYWVzZW5j MjU2a2wuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2tleWxvY2tlci1hZXNlbmMy NTZrbC5jCmluZGV4IDFjNWUwNzY1YzA3Li5mOGU2YmI3MzIxZiAxMDA2NDQKLS0tIGEvZ2NjL3Rl c3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYva2V5bG9ja2VyLWFlc2VuYzI1NmtsLmMKKysrIGIvZ2Nj L3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYva2V5bG9ja2VyLWFlc2VuYzI1NmtsLmMKQEAgLTIs OCArMiwxMCBAQAogLyogeyBkZy1vcHRpb25zICItbWtsIC1PMiIgfSAqLwogLyogeyBkZy1maW5h bCB7IHNjYW4tYXNzZW1ibGVyICJtb3ZkcWFcWyBcXHRcXStcW15cXG5cXHJcXSosICV4bW0wIiB9 IH0gKi8KIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiYWVzZW5jMjU2a2xcWyBcXHRc XStcW15cXG5cXHJcXSosICV4bW0wIiB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2Vt YmxlciAialxbZXpcXSIgfSB9ICovCiAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgInNl dGUiIH0gfSAqLwogLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICIoPzptb3ZkcXV8bW92 dXBzKVxbIFxcdFxdK1xbXlxcblxcclxdKiV4bW0wLFxbXlxcblxcclxdKiIgfSB9ICovCisvKiB7 IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgInB4b3JcWyBcdFxdKyV4bW0wLCAleG1tMCIgfSB9 ICovCiAKICNpbmNsdWRlIDxpbW1pbnRyaW4uaD4KIApkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0 ZS9nY2MudGFyZ2V0L2kzODYva2V5bG9ja2VyLWFlc2VuY3dpZGUxMjhrbC5jIGIvZ2NjL3Rlc3Rz dWl0ZS9nY2MudGFyZ2V0L2kzODYva2V5bG9ja2VyLWFlc2VuY3dpZGUxMjhrbC5jCmluZGV4IDlm YjljNDkzMTRmLi5jMGZjZDI4ZmIwNyAxMDA2NDQKLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFy Z2V0L2kzODYva2V5bG9ja2VyLWFlc2VuY3dpZGUxMjhrbC5jCisrKyBiL2djYy90ZXN0c3VpdGUv Z2NjLnRhcmdldC9pMzg2L2tleWxvY2tlci1hZXNlbmN3aWRlMTI4a2wuYwpAQCAtOSw2ICs5LDcg QEAKIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAibW92ZHF1XFsgXFx0XF0rXFteXFxu XFxyXF0qOTZcW15cXG5cXHJcXSosICV4bW02IiB9IH0gKi8KIC8qIHsgZGctZmluYWwgeyBzY2Fu LWFzc2VtYmxlciAibW92ZHF1XFsgXFx0XF0rXFteXFxuXFxyXF0qMTEyXFteXFxuXFxyXF0qLCAl eG1tNyIgfSB9ICovCiAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgImFlc2VuY3dpZGUx MjhrbFxbIFxcdFxdK1xbXlxcblxcclxdKiIgfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1h c3NlbWJsZXIgImpcW2V6XF0iIH0gfSAqLwogLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVy ICJzZXRlIiB9IH0gKi8KIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiKD86bW92ZHF1 fG1vdnVwcylcWyBcXHRcXStcW15cXG5cXHJcXSoleG1tMCxcW15cXG5cXHJcXSoiIH0gfSAqLwog LyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICIoPzptb3ZkcXV8bW92dXBzKVxbIFxcdFxd K1xbXlxcblxcclxdKiV4bW0xLFxbXlxcblxcclxdKjE2XFteXFxuXFxyXF0qIiB9IH0gKi8KQEAg LTE4LDYgKzE5LDE0IEBACiAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgIig/Om1vdmRx dXxtb3Z1cHMpXFsgXFx0XF0rXFteXFxuXFxyXF0qJXhtbTUsXFteXFxuXFxyXF0qODBcW15cXG5c XHJcXSoiIH0gfSAqLwogLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICIoPzptb3ZkcXV8 bW92dXBzKVxbIFxcdFxdK1xbXlxcblxcclxdKiV4bW02LFxbXlxcblxcclxdKjk2XFteXFxuXFxy XF0qIiB9IH0gKi8KIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiKD86bW92ZHF1fG1v dnVwcylcWyBcXHRcXStcW15cXG5cXHJcXSoleG1tNyxcW15cXG5cXHJcXSoxMTJcW15cXG5cXHJc XSoiIH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJweG9yXFsgXHRcXSsl eG1tMCwgJXhtbTAiIH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJweG9y XFsgXHRcXSsleG1tMSwgJXhtbTEiIH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1i bGVyICJweG9yXFsgXHRcXSsleG1tMiwgJXhtbTIiIH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNj YW4tYXNzZW1ibGVyICJweG9yXFsgXHRcXSsleG1tMywgJXhtbTMiIH0gfSAqLworLyogeyBkZy1m aW5hbCB7IHNjYW4tYXNzZW1ibGVyICJweG9yXFsgXHRcXSsleG1tNCwgJXhtbTQiIH0gfSAqLwor LyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJweG9yXFsgXHRcXSsleG1tNSwgJXhtbTUi IH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJweG9yXFsgXHRcXSsleG1t NiwgJXhtbTYiIH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJweG9yXFsg XHRcXSsleG1tNywgJXhtbTciIH0gfSAqLwogCiAjaW5jbHVkZSA8aW1taW50cmluLmg+CiAKZGlm ZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2tleWxvY2tlci1hZXNlbmN3 aWRlMjU2a2wuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2tleWxvY2tlci1hZXNl bmN3aWRlMjU2a2wuYwppbmRleCAxMjVhNzg3ZGNkOS4uMzE0NjNhOGIyZGEgMTAwNjQ0Ci0tLSBh L2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2tleWxvY2tlci1hZXNlbmN3aWRlMjU2a2wu YworKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9rZXlsb2NrZXItYWVzZW5jd2lk ZTI1NmtsLmMKQEAgLTksNiArOSw3IEBACiAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIg Im1vdmRxdVxbIFxcdFxdK1xbXlxcblxcclxdKjk2XFteXFxuXFxyXF0qLCAleG1tNiIgfSB9ICov CiAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgIm1vdmRxdVxbIFxcdFxdK1xbXlxcblxc clxdKjExMlxbXlxcblxcclxdKiwgJXhtbTciIH0gfSAqLwogLyogeyBkZy1maW5hbCB7IHNjYW4t YXNzZW1ibGVyICJhZXNlbmN3aWRlMjU2a2xcWyBcXHRcXStcW15cXG5cXHJcXSoiIH0gfSAqLwor LyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJqXFtlelxdIiB9IH0gKi8KIC8qIHsgZGct ZmluYWwgeyBzY2FuLWFzc2VtYmxlciAic2V0ZSIgfSB9ICovCiAvKiB7IGRnLWZpbmFsIHsgc2Nh bi1hc3NlbWJsZXIgIig/Om1vdmRxdXxtb3Z1cHMpXFsgXFx0XF0rXFteXFxuXFxyXF0qJXhtbTAs XFteXFxuXFxyXF0qIiB9IH0gKi8KIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiKD86 bW92ZHF1fG1vdnVwcylcWyBcXHRcXStcW15cXG5cXHJcXSoleG1tMSxcW15cXG5cXHJcXSoxNlxb XlxcblxcclxdKiIgfSB9ICovCkBAIC0xOCw2ICsxOSwxNCBAQAogLyogeyBkZy1maW5hbCB7IHNj YW4tYXNzZW1ibGVyICIoPzptb3ZkcXV8bW92dXBzKVxbIFxcdFxdK1xbXlxcblxcclxdKiV4bW01 LFxbXlxcblxcclxdKjgwXFteXFxuXFxyXF0qIiB9IH0gKi8KIC8qIHsgZGctZmluYWwgeyBzY2Fu LWFzc2VtYmxlciAiKD86bW92ZHF1fG1vdnVwcylcWyBcXHRcXStcW15cXG5cXHJcXSoleG1tNixc W15cXG5cXHJcXSo5NlxbXlxcblxcclxdKiIgfSB9ICovCiAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1h c3NlbWJsZXIgIig/Om1vdmRxdXxtb3Z1cHMpXFsgXFx0XF0rXFteXFxuXFxyXF0qJXhtbTcsXFte XFxuXFxyXF0qMTEyXFteXFxuXFxyXF0qIiB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFz c2VtYmxlciAicHhvclxbIFx0XF0rJXhtbTAsICV4bW0wIiB9IH0gKi8KKy8qIHsgZGctZmluYWwg eyBzY2FuLWFzc2VtYmxlciAicHhvclxbIFx0XF0rJXhtbTEsICV4bW0xIiB9IH0gKi8KKy8qIHsg ZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAicHhvclxbIFx0XF0rJXhtbTIsICV4bW0yIiB9IH0g Ki8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAicHhvclxbIFx0XF0rJXhtbTMsICV4 bW0zIiB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAicHhvclxbIFx0XF0r JXhtbTQsICV4bW00IiB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAicHhv clxbIFx0XF0rJXhtbTUsICV4bW01IiB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2Vt YmxlciAicHhvclxbIFx0XF0rJXhtbTYsICV4bW02IiB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBz Y2FuLWFzc2VtYmxlciAicHhvclxbIFx0XF0rJXhtbTcsICV4bW03IiB9IH0gKi8KIAogI2luY2x1 ZGUgPGltbWludHJpbi5oPgogCi0tIAoyLjE4LjIKCg== --000000000000e7f6b905c61b6264--