From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-vk1-xa36.google.com (mail-vk1-xa36.google.com [IPv6:2607:f8b0:4864:20::a36]) by sourceware.org (Postfix) with ESMTPS id 0ECC73858D29 for ; Thu, 7 Jan 2021 05:19:19 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org 0ECC73858D29 Received: by mail-vk1-xa36.google.com with SMTP id v3so1360821vkb.1 for ; Wed, 06 Jan 2021 21:19:19 -0800 (PST) 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=vB0mzUJBmZJoBg1dVFd+ghRTiLKm511rDZRYm9xOmbw=; b=qT067xUIFrAWYRvJq/na1rfb8fue2Wzg6/I8kMjDeTZbdPWoq1lrwDQbNYP6t3vABh BkNfgScSPtYn/6+/CSnLjBlWBpW0ENPJ1yG5EuEq8VvZK8IG6MI4pEqrl84WWOPozO/r yup5V9ZMYlzJpLroJEtplrBRM7xxZ4SybybM2zXjDBliVXHcMPgpfTBluSb36RjuY+e4 0/oTLWhCsrX2UTUV1pfN0JFCWTxdcJoT0m6Xu5yIMJTTwhuc+Sa0b7OVcvs+cek0P8CH OiSvSTDsSFj1WxWSR/oY3i8cJ9NiOibnPoN3WRM4V4ly1n49kjEdxqvqw/m3S1ne1eLp b1wA== X-Gm-Message-State: AOAM532BUE5ZmgLG6++RGbkaDFDTJDS9QL1MymgT4eISjJ1aI0moHhVg I7TfMeBuSqqSHVKYNgfH1OYjEfE5EyLglHHdSO4= X-Google-Smtp-Source: ABdhPJyg9Yg6gn5Eyv6dnqzB/8uPgjRtj4siD4tNMkIn4Xc2m7HkRQ8rlv+sGupbBKdlrTPtRqHiSwDOaOxMLHPFfU4= X-Received: by 2002:a05:6122:31a:: with SMTP id c26mr6698753vko.0.1609996758609; Wed, 06 Jan 2021 21:19:18 -0800 (PST) MIME-Version: 1.0 References: <20210106143931.GC725145@tucnak> In-Reply-To: <20210106143931.GC725145@tucnak> From: Hongtao Liu Date: Thu, 7 Jan 2021 13:22:00 +0800 Message-ID: Subject: Re: [PATCH] [AVX512] Fix ICE: Convert integer mask to vector in ix86_expand_fp_vec_cmp/ix86_expand_int_vec_cmp [PR98537] To: Jakub Jelinek Cc: GCC Patches , Kirill Yukhin , "H. J. Lu" Content-Type: multipart/mixed; boundary="000000000000e307de05b848948b" X-Spam-Status: No, score=-10.0 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FREEMAIL_FROM, GIT_PATCH_0, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) 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: Thu, 07 Jan 2021 05:19:21 -0000 --000000000000e307de05b848948b Content-Type: text/plain; charset="UTF-8" On Wed, Jan 6, 2021 at 10:39 PM Jakub Jelinek wrote: > > On Wed, Jan 06, 2021 at 02:49:13PM +0800, Hongtao Liu wrote: > > ix86_expand_fp_vec_cmp/ix86_expand_int_vec_cmp are used by vec_cmpmn > > for vector comparison to vector mask, but ix86_expand_sse_cmp(which is > > called in upper 2 functions.) may return integer mask whenever integer > > mask is available, so convert integer mask back to vector mask if > > needed. > > > > gcc/ChangeLog: > > > > PR target/98537 > > * config/i386/i386-expand.c (ix86_expand_fp_vec_cmp): > > When cmp is integer mask, convert it to vector. > > (ix86_expand_int_vec_cmp): Ditto. > > > > gcc/testsuite/ChangeLog: > > > > PR target/98537 > > * g++.target/i386/avx512bw-pr98537-1.C: New test. > > * g++.target/i386/avx512vl-pr98537-1.C: New test. > > * g++.target/i386/avx512vl-pr98537-2.C: New test. > > Do we optimize it then to an AVX/AVX2 comparison if possible? > When i'm looking at the code, i find there's other places which require comparison dest to be vector(i.e. ix86_expand_sse_unpack, ix86_expand_mul_widen_evenodd). It's a potential bug. So I fix this bug in another way which won't generate an integer mask when the comparison dest is required to a vector mask. Update patch: ix86_expand_sse_cmp/ix86_expand_int_sse_cmp is used for vector comparison, considering that avx512 introduces integer mask, but some original callers require the dest of comparison to be a vector. So add a new parameter vector_mask_p to control the result of vector comparison to be vector or not. regtested/bootstrapped on x86_64-linux-gnu{-m32,}. gcc/ChangeLog: PR target/98537 * config/i386/i386-expand.c (ix86_expand_sse_cmp): Add a new parameter vector_mask_p to control whether the comparison result should be a vector or not. (ix86_expand_int_sse_cmp): Ditto. (ix86_expand_sse_movcc): cmpmode should be MODE_INT. (ix86_expand_fp_movcc): Allow vector comparison dest as integer mask. (ix86_expand_fp_vcond): Ditto. (ix86_expand_int_vcond): Ditto. (ix86_expand_fp_vec_cmp): Require vector comparison dest as vector. (ix86_expand_int_vec_cmp): Ditto. (ix86_expand_sse_unpack): Ditto. (ix86_expand_mul_widen_evenodd): Ditto. gcc/testsuite/ChangeLog: PR target/98537 * g++.target/i386/avx512bw-pr98537-1.C: New test. * g++.target/i386/avx512vl-pr98537-1.C: New test. * g++.target/i386/avx512vl-pr98537-2.C: New test. > @@ -4024,8 +4025,18 @@ ix86_expand_fp_vec_cmp (rtx operands[]) > cmp = ix86_expand_sse_cmp (operands[0], code, operands[2], operands[3], > operands[1], operands[2]); > > - if (operands[0] != cmp) > - emit_move_insn (operands[0], cmp); > + if (operands[0] != cmp) > + { > > The indentation of the if above looks wrong. > Otherwise LGTM. > > Jakub > -- BR, Hongtao --000000000000e307de05b848948b Content-Type: text/x-patch; charset="US-ASCII"; name="0001-Fix-ICE-Convert-integer-mask-to-vector-in-ix86_expan_V2.patch" Content-Disposition: attachment; filename="0001-Fix-ICE-Convert-integer-mask-to-vector-in-ix86_expan_V2.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_kjmelf000 RnJvbSBiYWU0NTAwZTE3Zjc1OTBhNDU1MDRjOGM5ZTNhYjBmZTYyMDA2ODFkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBsaXVob25ndCA8aG9uZ3Rhby5saXVAaW50ZWwuY29tPgpEYXRl OiBUaHUsIDcgSmFuIDIwMjEgMTA6MTU6MzMgKzA4MDAKU3ViamVjdDogW1BBVENIXSBGaXggSUNF OiBDb252ZXJ0IGludGVnZXIgbWFzayB0byB2ZWN0b3IgaW4KIGl4ODZfZXhwYW5kX2ZwX3ZlY19j bXAvaXg4Nl9leHBhbmRfaW50X3ZlY19jbXAgW1BSOTg1MzddCgppeDg2X2V4cGFuZF9zc2VfY21w L2l4ODZfZXhwYW5kX2ludF9zc2VfY21wIGlzIHVzZWQgZm9yIHZlY3Rvcgpjb21wYXJpc29uLCBj b25zaWRlcmluZyB0aGF0IGF2eDUxMiBpbnRyb2R1Y2VzIGludGVnZXIgbWFzaywgYnV0IHNvbWUK b3JpZ2luYWwgY2FsbGVycyByZXF1aXJlIHRoZSBkZXN0IG9mIGNvbXBhcmlzb24gdG8gYmUgYSB2 ZWN0b3IuClNvIGFkZCBhIG5ldyBwYXJhbWV0ZXIgdmVjdG9yX21hc2tfcCB0byBjb250cm9sIHRo ZSByZXN1bHQKb2YgdmVjdG9yIGNvbXBhcmlzb24gdG8gYmUgdmVjdG9yIG9yIG5vdC4KCmdjYy9D aGFuZ2VMb2c6CgoJUFIgdGFyZ2V0Lzk4NTM3CgkqIGNvbmZpZy9pMzg2L2kzODYtZXhwYW5kLmMg KGl4ODZfZXhwYW5kX3NzZV9jbXApOiBBZGQgYSBuZXcKCXBhcmFtZXRlciB2ZWN0b3JfbWFza19w IHRvIGNvbnRyb2wgd2hldGhlciB0aGUgY29tcGFyaXNvbgoJcmVzdWx0IHNob3VsZCBiZSBhIHZl Y3RvciBvciBub3QuCgkoaXg4Nl9leHBhbmRfaW50X3NzZV9jbXApOiBEaXR0by4KCShpeDg2X2V4 cGFuZF9zc2VfbW92Y2MpOiBjbXBtb2RlIHNob3VsZCBiZSBNT0RFX0lOVC4KCShpeDg2X2V4cGFu ZF9mcF9tb3ZjYyk6IEFsbG93IHZlY3RvciBjb21wYXJpc29uIGRlc3QgYXMKCWludGVnZXIgbWFz ay4KCShpeDg2X2V4cGFuZF9mcF92Y29uZCk6IERpdHRvLgoJKGl4ODZfZXhwYW5kX2ludF92Y29u ZCk6IERpdHRvLgoJKGl4ODZfZXhwYW5kX2ZwX3ZlY19jbXApOiBSZXF1aXJlIHZlY3RvciBjb21w YXJpc29uIGRlc3QgYXMKCXZlY3Rvci4KCShpeDg2X2V4cGFuZF9pbnRfdmVjX2NtcCk6IERpdHRv LgoJKGl4ODZfZXhwYW5kX3NzZV91bnBhY2spOiBEaXR0by4KCShpeDg2X2V4cGFuZF9tdWxfd2lk ZW5fZXZlbm9kZCk6IERpdHRvLgoKZ2NjL3Rlc3RzdWl0ZS9DaGFuZ2VMb2c6CgoJUFIgdGFyZ2V0 Lzk4NTM3CgkqIGcrKy50YXJnZXQvaTM4Ni9hdng1MTJidy1wcjk4NTM3LTEuQzogTmV3IHRlc3Qu CgkqIGcrKy50YXJnZXQvaTM4Ni9hdng1MTJ2bC1wcjk4NTM3LTEuQzogTmV3IHRlc3QuCgkqIGcr Ky50YXJnZXQvaTM4Ni9hdng1MTJ2bC1wcjk4NTM3LTIuQzogTmV3IHRlc3QuCi0tLQogZ2NjL2Nv bmZpZy9pMzg2L2kzODYtZXhwYW5kLmMgICAgICAgICAgICAgICAgIHwgNjMgKysrKysrKysrKy0t LS0tLS0tLQogLi4uL2crKy50YXJnZXQvaTM4Ni9hdng1MTJidy1wcjk4NTM3LTEuQyAgICAgIHwg MTEgKysrKwogLi4uL2crKy50YXJnZXQvaTM4Ni9hdng1MTJ2bC1wcjk4NTM3LTEuQyAgICAgIHwg NDAgKysrKysrKysrKysrCiAuLi4vZysrLnRhcmdldC9pMzg2L2F2eDUxMnZsLXByOTg1MzctMi5D ICAgICAgfCAgOCArKysKIDQgZmlsZXMgY2hhbmdlZCwgOTMgaW5zZXJ0aW9ucygrKSwgMjkgZGVs ZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nKysudGFyZ2V0L2kz ODYvYXZ4NTEyYnctcHI5ODUzNy0xLkMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRl L2crKy50YXJnZXQvaTM4Ni9hdng1MTJ2bC1wcjk4NTM3LTEuQwogY3JlYXRlIG1vZGUgMTAwNjQ0 IGdjYy90ZXN0c3VpdGUvZysrLnRhcmdldC9pMzg2L2F2eDUxMnZsLXByOTg1MzctMi5DCgpkaWZm IC0tZ2l0IGEvZ2NjL2NvbmZpZy9pMzg2L2kzODYtZXhwYW5kLmMgYi9nY2MvY29uZmlnL2kzODYv aTM4Ni1leHBhbmQuYwppbmRleCA2ZTA4ZmQzMjcyNi4uMWU0ZWYzYjlmM2YgMTAwNjQ0Ci0tLSBh L2djYy9jb25maWcvaTM4Ni9pMzg2LWV4cGFuZC5jCisrKyBiL2djYy9jb25maWcvaTM4Ni9pMzg2 LWV4cGFuZC5jCkBAIC0zNDY5LDExICszNDY5LDEyIEBAIGl4ODZfdmFsaWRfbWFza19jbXBfbW9k ZSAobWFjaGluZV9tb2RlIG1vZGUpCiAgIHJldHVybiB2ZWN0b3Jfc2l6ZSA9PSA2NCB8fCBUQVJH RVRfQVZYNTEyVkw7CiB9CiAKLS8qIEV4cGFuZCBhbiBTU0UgY29tcGFyaXNvbi4gIFJldHVybiB0 aGUgcmVnaXN0ZXIgd2l0aCB0aGUgcmVzdWx0LiAgKi8KKy8qIEV4cGFuZCBhbiBTU0UgY29tcGFy aXNvbi4gIFJldHVybiB0aGUgcmVnaXN0ZXIgd2l0aCB0aGUgcmVzdWx0LgorICAgSWYgdmVjdG9y X21hc2tfcCBpcyB0cnVlLCByZXN1bHQgb2YgY29tcGFyaXNvbiBzaG91bGQgYmUgYSB2ZWN0b3Ig bWFzay4gICovCiAKIHN0YXRpYyBydHgKIGl4ODZfZXhwYW5kX3NzZV9jbXAgKHJ0eCBkZXN0LCBl bnVtIHJ0eF9jb2RlIGNvZGUsIHJ0eCBjbXBfb3AwLCBydHggY21wX29wMSwKLQkJICAgICBydHgg b3BfdHJ1ZSwgcnR4IG9wX2ZhbHNlKQorCQkgICAgIHJ0eCBvcF90cnVlLCBydHggb3BfZmFsc2Us IGJvb2wgdmVjdG9yX21hc2tfcCkKIHsKICAgbWFjaGluZV9tb2RlIG1vZGUgPSBHRVRfTU9ERSAo ZGVzdCk7CiAgIG1hY2hpbmVfbW9kZSBjbXBfb3BzX21vZGUgPSBHRVRfTU9ERSAoY21wX29wMCk7 CkBAIC0zNDg1LDcgKzM0ODYsNyBAQCBpeDg2X2V4cGFuZF9zc2VfY21wIChydHggZGVzdCwgZW51 bSBydHhfY29kZSBjb2RlLCBydHggY21wX29wMCwgcnR4IGNtcF9vcDEsCiAgIGJvb2wgbWFza2Nt cCA9IGZhbHNlOwogICBydHggeDsKIAotICBpZiAoaXg4Nl92YWxpZF9tYXNrX2NtcF9tb2RlIChj bXBfb3BzX21vZGUpKQorICBpZiAoIXZlY3Rvcl9tYXNrX3AgJiYgaXg4Nl92YWxpZF9tYXNrX2Nt cF9tb2RlIChjbXBfb3BzX21vZGUpKQogICAgIHsKICAgICAgIHVuc2lnbmVkIGludCBuYml0cyA9 IEdFVF9NT0RFX05VTklUUyAoY21wX29wc19tb2RlKTsKICAgICAgIG1hc2tjbXAgPSB0cnVlOwpA QCAtMzUxNyw3ICszNTE4LDcgQEAgaXg4Nl9leHBhbmRfc3NlX2NtcCAocnR4IGRlc3QsIGVudW0g cnR4X2NvZGUgY29kZSwgcnR4IGNtcF9vcDAsIHJ0eCBjbXBfb3AxLAogCiAgIHggPSBnZW5fcnR4 X2ZtdF9lZSAoY29kZSwgY21wX21vZGUsIGNtcF9vcDAsIGNtcF9vcDEpOwogCi0gIGlmIChjbXBf bW9kZSAhPSBtb2RlICYmICFtYXNrY21wKQorICBpZiAoY21wX21vZGUgIT0gbW9kZSkKICAgICB7 CiAgICAgICB4ID0gZm9yY2VfcmVnIChjbXBfb3BzX21vZGUsIHgpOwogICAgICAgY29udmVydF9t b3ZlIChkZXN0LCB4LCBmYWxzZSk7CkBAIC0zNTQ0LDkgKzM1NDUsNiBAQCBpeDg2X2V4cGFuZF9z c2VfbW92Y2MgKHJ0eCBkZXN0LCBydHggY21wLCBydHggb3BfdHJ1ZSwgcnR4IG9wX2ZhbHNlKQog ICAgICAgcmV0dXJuOwogICAgIH0KIAotICAvKiBJbiBBVlg1MTJGIHRoZSByZXN1bHQgb2YgY29t cGFyaXNvbiBpcyBhbiBpbnRlZ2VyIG1hc2suICAqLwotICBib29sIG1hc2tjbXAgPSBtb2RlICE9 IGNtcG1vZGUgJiYgaXg4Nl92YWxpZF9tYXNrX2NtcF9tb2RlIChtb2RlKTsKLQogICBydHggdDIs IHQzLCB4OwogCiAgIC8qIElmIHdlIGhhdmUgYW4gaW50ZWdlciBtYXNrIGFuZCBGUCB2YWx1ZSB0 aGVuIHdlIG5lZWQKQEAgLTM1NTcsNyArMzU1NSwxMCBAQCBpeDg2X2V4cGFuZF9zc2VfbW92Y2Mg KHJ0eCBkZXN0LCBydHggY21wLCBydHggb3BfdHJ1ZSwgcnR4IG9wX2ZhbHNlKQogICAgICAgY21w ID0gZ2VuX3J0eF9TVUJSRUcgKG1vZGUsIGNtcCwgMCk7CiAgICAgfQogCi0gIGlmIChtYXNrY21w KQorICAvKiBJbiBBVlg1MTJGIHRoZSByZXN1bHQgb2YgY29tcGFyaXNvbiBpcyBhbiBpbnRlZ2Vy IG1hc2suICAqLworICBpZiAobW9kZSAhPSBjbXBtb2RlCisgICAgICAmJiBHRVRfTU9ERV9DTEFT UyAoY21wbW9kZSkgPT0gTU9ERV9JTlQKKyAgICAgICYmIGl4ODZfdmFsaWRfbWFza19jbXBfbW9k ZSAobW9kZSkpCiAgICAgewogICAgICAgLyogVXNpbmcgdmVjdG9yIG1vdmUgd2l0aCBtYXNrIHJl Z2lzdGVyLiAgKi8KICAgICAgIGNtcCA9IGZvcmNlX3JlZyAoY21wbW9kZSwgY21wKTsKQEAgLTM4 NDYsNyArMzg0Nyw3IEBAIGl4ODZfZXhwYW5kX2ZwX21vdmNjIChydHggb3BlcmFuZHNbXSkKIAly ZXR1cm4gdHJ1ZTsKIAogICAgICAgdG1wID0gaXg4Nl9leHBhbmRfc3NlX2NtcCAob3BlcmFuZHNb MF0sIGNvZGUsIG9wMCwgb3AxLAotCQkJCSBvcGVyYW5kc1syXSwgb3BlcmFuZHNbM10pOworCQkJ CSBvcGVyYW5kc1syXSwgb3BlcmFuZHNbM10sIGZhbHNlKTsKICAgICAgIGl4ODZfZXhwYW5kX3Nz ZV9tb3ZjYyAob3BlcmFuZHNbMF0sIHRtcCwgb3BlcmFuZHNbMl0sIG9wZXJhbmRzWzNdKTsKICAg ICAgIHJldHVybiB0cnVlOwogICAgIH0KQEAgLTQwMDIsMTYgKzQwMDMsMTYgQEAgaXg4Nl9leHBh bmRfZnBfdmVjX2NtcCAocnR4IG9wZXJhbmRzW10pCiAJewogCWNhc2UgTFRHVDoKIAkgIHRlbXAg PSBpeDg2X2V4cGFuZF9zc2VfY21wIChvcGVyYW5kc1swXSwgT1JERVJFRCwgb3BlcmFuZHNbMl0s Ci0JCQkJICAgICAgb3BlcmFuZHNbM10sIE5VTEwsIE5VTEwpOworCQkJCSAgICAgIG9wZXJhbmRz WzNdLCBOVUxMLCBOVUxMLCB0cnVlKTsKIAkgIGNtcCA9IGl4ODZfZXhwYW5kX3NzZV9jbXAgKG9w ZXJhbmRzWzBdLCBORSwgb3BlcmFuZHNbMl0sCi0JCQkJICAgICBvcGVyYW5kc1szXSwgTlVMTCwg TlVMTCk7CisJCQkJICAgICBvcGVyYW5kc1szXSwgTlVMTCwgTlVMTCwgdHJ1ZSk7CiAJICBjb2Rl ID0gQU5EOwogCSAgYnJlYWs7CiAJY2FzZSBVTkVROgogCSAgdGVtcCA9IGl4ODZfZXhwYW5kX3Nz ZV9jbXAgKG9wZXJhbmRzWzBdLCBVTk9SREVSRUQsIG9wZXJhbmRzWzJdLAotCQkJCSAgICAgIG9w ZXJhbmRzWzNdLCBOVUxMLCBOVUxMKTsKKwkJCQkgICAgICBvcGVyYW5kc1szXSwgTlVMTCwgTlVM TCwgdHJ1ZSk7CiAJICBjbXAgPSBpeDg2X2V4cGFuZF9zc2VfY21wIChvcGVyYW5kc1swXSwgRVEs IG9wZXJhbmRzWzJdLAotCQkJCSAgICAgb3BlcmFuZHNbM10sIE5VTEwsIE5VTEwpOworCQkJCSAg ICAgb3BlcmFuZHNbM10sIE5VTEwsIE5VTEwsIHRydWUpOwogCSAgY29kZSA9IElPUjsKIAkgIGJy ZWFrOwogCWRlZmF1bHQ6CkBAIC00MDIyLDcgKzQwMjMsNyBAQCBpeDg2X2V4cGFuZF9mcF92ZWNf Y21wIChydHggb3BlcmFuZHNbXSkKICAgICB9CiAgIGVsc2UKICAgICBjbXAgPSBpeDg2X2V4cGFu ZF9zc2VfY21wIChvcGVyYW5kc1swXSwgY29kZSwgb3BlcmFuZHNbMl0sIG9wZXJhbmRzWzNdLAot CQkJICAgICAgIG9wZXJhbmRzWzFdLCBvcGVyYW5kc1syXSk7CisJCQkgICAgICAgb3BlcmFuZHNb MV0sIG9wZXJhbmRzWzJdLCB0cnVlKTsKIAogICBpZiAob3BlcmFuZHNbMF0gIT0gY21wKQogICAg IGVtaXRfbW92ZV9pbnNuIChvcGVyYW5kc1swXSwgY21wKTsKQEAgLTQwMzIsNyArNDAzMyw3IEBA IGl4ODZfZXhwYW5kX2ZwX3ZlY19jbXAgKHJ0eCBvcGVyYW5kc1tdKQogCiBzdGF0aWMgcnR4CiBp eDg2X2V4cGFuZF9pbnRfc3NlX2NtcCAocnR4IGRlc3QsIGVudW0gcnR4X2NvZGUgY29kZSwgcnR4 IGNvcDAsIHJ0eCBjb3AxLAotCQkJIHJ0eCBvcF90cnVlLCBydHggb3BfZmFsc2UsIGJvb2wgKm5l Z2F0ZSkKKwkJCSBydHggb3BfdHJ1ZSwgcnR4IG9wX2ZhbHNlLCBib29sICpuZWdhdGUsIGJvb2wg dmVjdG9yX21hc2tfcCkKIHsKICAgbWFjaGluZV9tb2RlIGRhdGFfbW9kZSA9IEdFVF9NT0RFIChk ZXN0KTsKICAgbWFjaGluZV9tb2RlIG1vZGUgPSBHRVRfTU9ERSAoY29wMCk7CkBAIC00MDQ3LDcg KzQwNDgsNyBAQCBpeDg2X2V4cGFuZF9pbnRfc3NlX2NtcCAocnR4IGRlc3QsIGVudW0gcnR4X2Nv ZGUgY29kZSwgcnR4IGNvcDAsIHJ0eCBjb3AxLAogICAgIDsKICAgLyogQVZYNTEyRiBzdXBwb3J0 cyBhbGwgb2YgdGhlIGNvbXBhcnNpb25zCiAgICAgIG9uIGFsbCAxMjgvMjU2LzUxMi1iaXQgdmVj dG9yIGludCB0eXBlcy4gICovCi0gIGVsc2UgaWYgKGl4ODZfdmFsaWRfbWFza19jbXBfbW9kZSAo bW9kZSkpCisgIGVsc2UgaWYgKCF2ZWN0b3JfbWFza19wICYmIGl4ODZfdmFsaWRfbWFza19jbXBf bW9kZSAobW9kZSkpCiAgICAgOwogICBlbHNlCiAgICAgewpAQCAtNDI2NiwxMyArNDI2NywxMyBA QCBpeDg2X2V4cGFuZF9pbnRfc3NlX2NtcCAocnR4IGRlc3QsIGVudW0gcnR4X2NvZGUgY29kZSwg cnR4IGNvcDAsIHJ0eCBjb3AxLAogICBpZiAoZGF0YV9tb2RlID09IG1vZGUpCiAgICAgewogICAg ICAgeCA9IGl4ODZfZXhwYW5kX3NzZV9jbXAgKGRlc3QsIGNvZGUsIGNvcDAsIGNvcDEsCi0JCQkg ICAgICAgb3BfdHJ1ZSwgb3BfZmFsc2UpOworCQkJICAgICAgIG9wX3RydWUsIG9wX2ZhbHNlLCB2 ZWN0b3JfbWFza19wKTsKICAgICB9CiAgIGVsc2UKICAgICB7CiAgICAgICBnY2NfYXNzZXJ0IChH RVRfTU9ERV9TSVpFIChkYXRhX21vZGUpID09IEdFVF9NT0RFX1NJWkUgKG1vZGUpKTsKICAgICAg IHggPSBpeDg2X2V4cGFuZF9zc2VfY21wIChnZW5fcmVnX3J0eCAobW9kZSksIGNvZGUsIGNvcDAs IGNvcDEsCi0JCQkgICAgICAgb3BfdHJ1ZSwgb3BfZmFsc2UpOworCQkJICAgICAgIG9wX3RydWUs IG9wX2ZhbHNlLCB2ZWN0b3JfbWFza19wKTsKICAgICAgIGlmIChHRVRfTU9ERSAoeCkgPT0gbW9k ZSkKIAl4ID0gZ2VuX2xvd3BhcnQgKGRhdGFfbW9kZSwgeCk7CiAgICAgfQpAQCAtNDI4OCw3ICs0 Mjg5LDcgQEAgaXg4Nl9leHBhbmRfaW50X3ZlY19jbXAgKHJ0eCBvcGVyYW5kc1tdKQogICBydHhf Y29kZSBjb2RlID0gR0VUX0NPREUgKG9wZXJhbmRzWzFdKTsKICAgYm9vbCBuZWdhdGUgPSBmYWxz ZTsKICAgcnR4IGNtcCA9IGl4ODZfZXhwYW5kX2ludF9zc2VfY21wIChvcGVyYW5kc1swXSwgY29k ZSwgb3BlcmFuZHNbMl0sCi0JCQkJICAgICBvcGVyYW5kc1szXSwgTlVMTCwgTlVMTCwgJm5lZ2F0 ZSk7CisJCQkJICAgICBvcGVyYW5kc1szXSwgTlVMTCwgTlVMTCwgJm5lZ2F0ZSwgdHJ1ZSk7CiAK ICAgaWYgKCFjbXApCiAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNDI5Niw3ICs0Mjk3LDcgQEAgaXg4 Nl9leHBhbmRfaW50X3ZlY19jbXAgKHJ0eCBvcGVyYW5kc1tdKQogICBpZiAobmVnYXRlKQogICAg IGNtcCA9IGl4ODZfZXhwYW5kX2ludF9zc2VfY21wIChvcGVyYW5kc1swXSwgRVEsIGNtcCwKIAkJ CQkgICBDT05TVDBfUlRYIChHRVRfTU9ERSAoY21wKSksCi0JCQkJICAgTlVMTCwgTlVMTCwgJm5l Z2F0ZSk7CisJCQkJICAgTlVMTCwgTlVMTCwgJm5lZ2F0ZSwgdHJ1ZSk7CiAKICAgZ2NjX2Fzc2Vy dCAoIW5lZ2F0ZSk7CiAKQEAgLTQzMjQsMTYgKzQzMjUsMjAgQEAgaXg4Nl9leHBhbmRfZnBfdmNv bmQgKHJ0eCBvcGVyYW5kc1tdKQogCXsKIAljYXNlIExUR1Q6CiAJICB0ZW1wID0gaXg4Nl9leHBh bmRfc3NlX2NtcCAob3BlcmFuZHNbMF0sIE9SREVSRUQsIG9wZXJhbmRzWzRdLAotCQkJCSAgICAg IG9wZXJhbmRzWzVdLCBvcGVyYW5kc1swXSwgb3BlcmFuZHNbMF0pOworCQkJCSAgICAgIG9wZXJh bmRzWzVdLCBvcGVyYW5kc1swXSwgb3BlcmFuZHNbMF0sCisJCQkJICAgICAgZmFsc2UpOwogCSAg Y21wID0gaXg4Nl9leHBhbmRfc3NlX2NtcCAob3BlcmFuZHNbMF0sIE5FLCBvcGVyYW5kc1s0XSwK LQkJCQkgICAgIG9wZXJhbmRzWzVdLCBvcGVyYW5kc1sxXSwgb3BlcmFuZHNbMl0pOworCQkJCSAg ICAgb3BlcmFuZHNbNV0sIG9wZXJhbmRzWzFdLCBvcGVyYW5kc1syXSwKKwkJCQkgICAgIGZhbHNl KTsKIAkgIGNvZGUgPSBBTkQ7CiAJICBicmVhazsKIAljYXNlIFVORVE6CiAJICB0ZW1wID0gaXg4 Nl9leHBhbmRfc3NlX2NtcCAob3BlcmFuZHNbMF0sIFVOT1JERVJFRCwgb3BlcmFuZHNbNF0sCi0J CQkJICAgICAgb3BlcmFuZHNbNV0sIG9wZXJhbmRzWzBdLCBvcGVyYW5kc1swXSk7CisJCQkJICAg ICAgb3BlcmFuZHNbNV0sIG9wZXJhbmRzWzBdLCBvcGVyYW5kc1swXSwKKwkJCQkgICAgICBmYWxz ZSk7CiAJICBjbXAgPSBpeDg2X2V4cGFuZF9zc2VfY21wIChvcGVyYW5kc1swXSwgRVEsIG9wZXJh bmRzWzRdLAotCQkJCSAgICAgb3BlcmFuZHNbNV0sIG9wZXJhbmRzWzFdLCBvcGVyYW5kc1syXSk7 CisJCQkJICAgICBvcGVyYW5kc1s1XSwgb3BlcmFuZHNbMV0sIG9wZXJhbmRzWzJdLAorCQkJCSAg ICAgZmFsc2UpOwogCSAgY29kZSA9IElPUjsKIAkgIGJyZWFrOwogCWRlZmF1bHQ6CkBAIC00MzUw LDcgKzQzNTUsNyBAQCBpeDg2X2V4cGFuZF9mcF92Y29uZCAocnR4IG9wZXJhbmRzW10pCiAgICAg cmV0dXJuIHRydWU7CiAKICAgY21wID0gaXg4Nl9leHBhbmRfc3NlX2NtcCAob3BlcmFuZHNbMF0s IGNvZGUsIG9wZXJhbmRzWzRdLCBvcGVyYW5kc1s1XSwKLQkJCSAgICAgb3BlcmFuZHNbMV0sIG9w ZXJhbmRzWzJdKTsKKwkJCSAgICAgb3BlcmFuZHNbMV0sIG9wZXJhbmRzWzJdLCBmYWxzZSk7CiAg IGl4ODZfZXhwYW5kX3NzZV9tb3ZjYyAob3BlcmFuZHNbMF0sIGNtcCwgb3BlcmFuZHNbMV0sIG9w ZXJhbmRzWzJdKTsKICAgcmV0dXJuIHRydWU7CiB9CkBAIC00NDA5LDcgKzQ0MTQsNyBAQCBpeDg2 X2V4cGFuZF9pbnRfdmNvbmQgKHJ0eCBvcGVyYW5kc1tdKQogICAgIG9wZXJhbmRzWzJdID0gZm9y Y2VfcmVnIChkYXRhX21vZGUsIG9wZXJhbmRzWzJdKTsKIAogICB4ID0gaXg4Nl9leHBhbmRfaW50 X3NzZV9jbXAgKG9wZXJhbmRzWzBdLCBjb2RlLCBjb3AwLCBjb3AxLAotCQkJICAgICAgIG9wZXJh bmRzWzFdLCBvcGVyYW5kc1syXSwgJm5lZ2F0ZSk7CisJCQkgICAgICAgb3BlcmFuZHNbMV0sIG9w ZXJhbmRzWzJdLCAmbmVnYXRlLCBmYWxzZSk7CiAKICAgaWYgKCF4KQogICAgIHJldHVybiBmYWxz ZTsKQEAgLTUwNzYsNyArNTA4MSw3IEBAIGl4ODZfZXhwYW5kX3NzZV91bnBhY2sgKHJ0eCBkZXN0 LCBydHggc3JjLCBib29sIHVuc2lnbmVkX3AsIGJvb2wgaGlnaF9wKQogCXRtcCA9IGZvcmNlX3Jl ZyAoaW1vZGUsIENPTlNUMF9SVFggKGltb2RlKSk7CiAgICAgICBlbHNlCiAJdG1wID0gaXg4Nl9l eHBhbmRfc3NlX2NtcCAoZ2VuX3JlZ19ydHggKGltb2RlKSwgR1QsIENPTlNUMF9SVFggKGltb2Rl KSwKLQkJCQkgICBzcmMsIHBjX3J0eCwgcGNfcnR4KTsKKwkJCQkgICBzcmMsIHBjX3J0eCwgcGNf cnR4LCB0cnVlKTsKIAogICAgICAgcnR4IHRtcDIgPSBnZW5fcmVnX3J0eCAoaW1vZGUpOwogICAg ICAgZW1pdF9pbnNuICh1bnBhY2sgKHRtcDIsIHNyYywgdG1wKSk7CkBAIC0yMDM3NCw5ICsyMDM3 OSw5IEBAIGl4ODZfZXhwYW5kX211bF93aWRlbl9ldmVub2RkIChydHggZGVzdCwgcnR4IG9wMSwg cnR4IG9wMiwKIAogICAgICAgLyogQ29tcHV0ZSB0aGUgc2lnbi1leHRlbnNpb24sIGFrYSBoaWdo cGFydHMsIG9mIHRoZSB0d28gb3BlcmFuZHMuICAqLwogICAgICAgczEgPSBpeDg2X2V4cGFuZF9z c2VfY21wIChnZW5fcmVnX3J0eCAobW9kZSksIEdULCBDT05TVDBfUlRYIChtb2RlKSwKLQkJCQlv cDEsIHBjX3J0eCwgcGNfcnR4KTsKKwkJCQlvcDEsIHBjX3J0eCwgcGNfcnR4LCB0cnVlKTsKICAg ICAgIHMyID0gaXg4Nl9leHBhbmRfc3NlX2NtcCAoZ2VuX3JlZ19ydHggKG1vZGUpLCBHVCwgQ09O U1QwX1JUWCAobW9kZSksCi0JCQkJb3AyLCBwY19ydHgsIHBjX3J0eCk7CisJCQkJb3AyLCBwY19y dHgsIHBjX3J0eCwgdHJ1ZSk7CiAKICAgICAgIC8qIE11bHRpcGx5IExPKEEpICogSEkoQiksIGFu ZCB2aWNlLXZlcnNhLiAgKi8KICAgICAgIHQxID0gZ2VuX3JlZ19ydHggKHdtb2RlKTsKZGlmZiAt LWdpdCBhL2djYy90ZXN0c3VpdGUvZysrLnRhcmdldC9pMzg2L2F2eDUxMmJ3LXByOTg1MzctMS5D IGIvZ2NjL3Rlc3RzdWl0ZS9nKysudGFyZ2V0L2kzODYvYXZ4NTEyYnctcHI5ODUzNy0xLkMKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjk2OTY4NGEyMjJiCi0tLSAvZGV2 L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nKysudGFyZ2V0L2kzODYvYXZ4NTEyYnctcHI5ODUz Ny0xLkMKQEAgLTAsMCArMSwxMSBAQAorLyogUFIgdGFyZ2V0Lzk4NTM3ICovCisvKiB7IGRnLWRv IGNvbXBpbGUgfSAqLworLyogeyBkZy1vcHRpb25zICItTzIgLW1hcmNoPXg4Ni02NCAtc3RkPWMr KzExIiB9ICovCisKKyNkZWZpbmUgVFlQRVYgY2hhcgorI2RlZmluZSBUWVBFVyBzaG9ydAorCisj ZGVmaW5lIFRfQVJSCQkJCQkJXAorICBfX2F0dHJpYnV0ZV9fICgodGFyZ2V0ICgiYXZ4NTEydmws YXZ4NTEyYnciKSkpCisKKyNpbmNsdWRlICJhdng1MTJ2bC1wcjk4NTM3LTEuQyIKZGlmZiAtLWdp dCBhL2djYy90ZXN0c3VpdGUvZysrLnRhcmdldC9pMzg2L2F2eDUxMnZsLXByOTg1MzctMS5DIGIv Z2NjL3Rlc3RzdWl0ZS9nKysudGFyZ2V0L2kzODYvYXZ4NTEydmwtcHI5ODUzNy0xLkMKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmIyYmE5MTExMWRhCi0tLSAvZGV2L251 bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nKysudGFyZ2V0L2kzODYvYXZ4NTEydmwtcHI5ODUzNy0x LkMKQEAgLTAsMCArMSw0MCBAQAorLyogUFIgdGFyZ2V0Lzk4NTM3ICovCisvKiB7IGRnLWRvIGNv bXBpbGUgfSAqLworLyogeyBkZy1vcHRpb25zICItTzIgLW1hcmNoPXg4Ni02NCAtc3RkPWMrKzEx IiB9ICovCisKKyNpZm5kZWYgVFlQRVYKKyNkZWZpbmUgVFlQRVYgaW50CisjZW5kaWYKKworI2lm bmRlZiBUWVBFVworI2RlZmluZSBUWVBFVyBsb25nIGxvbmcKKyNlbmRpZgorCisjaWZuZGVmIFRf QVJSCisjZGVmaW5lIFRfQVJSCQkJCQlcCisgIF9fYXR0cmlidXRlX18gKCh0YXJnZXQgKCJhdng1 MTJ2bCIpKSkKKyNlbmRpZgorCit0eXBlZGVmIFRZUEVWIFYgX19hdHRyaWJ1dGVfXygoX192ZWN0 b3Jfc2l6ZV9fKDMyKSkpOwordHlwZWRlZiBUWVBFVyBXIF9fYXR0cmlidXRlX18oKF9fdmVjdG9y X3NpemVfXygzMikpKTsKKworVyBjLCBkOworc3RydWN0IEIge307CitCIGU7CitzdHJ1Y3QgQyB7 IFcgaTsgfTsKK3ZvaWQgZm9vIChDKTsKKworQworb3BlcmF0b3I9PSAoQiwgQikKK3sKKyAgVyBy ID0gKFYpYyA9PSAoVilkOworICByZXR1cm4ge3J9OworfQorCit2b2lkCitUX0FSUgorYmFyICgp Cit7CisgIEIgYTsKKyAgZm9vIChhID09IGUpOworfQpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0 ZS9nKysudGFyZ2V0L2kzODYvYXZ4NTEydmwtcHI5ODUzNy0yLkMgYi9nY2MvdGVzdHN1aXRlL2cr Ky50YXJnZXQvaTM4Ni9hdng1MTJ2bC1wcjk4NTM3LTIuQwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwMDAwMC4uNDJjOTY4Mjc0NmQKLS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVz dHN1aXRlL2crKy50YXJnZXQvaTM4Ni9hdng1MTJ2bC1wcjk4NTM3LTIuQwpAQCAtMCwwICsxLDgg QEAKKy8qIFBSIHRhcmdldC85ODUzNyAqLworLyogeyBkZy1kbyBjb21waWxlIH0gKi8KKy8qIHsg ZGctb3B0aW9ucyAiLU8yIC1tYXJjaD14ODYtNjQgLXN0ZD1jKysxMSIgfSAqLworCisjZGVmaW5l IFRZUEVWIGZsb2F0CisjZGVmaW5lIFRZUEVXIGRvdWJsZQorCisjaW5jbHVkZSAiYXZ4NTEydmwt cHI5ODUzNy0xLkMiCi0tIAoyLjE4LjEKCg== --000000000000e307de05b848948b--