From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-qk1-x732.google.com (mail-qk1-x732.google.com [IPv6:2607:f8b0:4864:20::732]) by sourceware.org (Postfix) with ESMTPS id F01AC3858D3C for ; Sat, 15 Jan 2022 20:01:44 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org F01AC3858D3C Received: by mail-qk1-x732.google.com with SMTP id d24so2111820qkk.5 for ; Sat, 15 Jan 2022 12:01:44 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=HSWUZlbh709Rjebn9L1bl+jxUgvWdt/2By3lprjhgpo=; b=05/VoDgZb9K6WwhZJJ/s1MuAMJq8OEywg205oZA5m+Xc4l/GkFdcDqxHd8ffyGveZI T/AlF14TwZRLqmRgPtvCu73Qx8xRJ98I8Bw/fWwaibzrGKqSoDr2CKocOhK2OvwRo+dO OvokN5wy8UjXaSe2Exl8e3TWBNMgA2mlbEFDjYecPOKwC57x7U01CnGgFxUyjiFqFCbX WNi0pzuY8n/zDdBrmo7dF+B6cjUaMpzKCNJdRe/If5WBsNk12nTzzezpRuiGijqXc1/g OpKZOQzaFZBv+vMvQf+tGNYhg4k7ByKPa2RMBDUgAMlmOuHkOyFk7tKpY9Ia1Xuw3RVb H09Q== X-Gm-Message-State: AOAM5322pnahc5L1bK0C9xm1jCsz+1lhlJvQJzUQo/n+HP10RNYeOPRX fiLLJ2K4tb4776h8nRNM30bez9oQfD35XA9xiX6dJouYniLT9g== X-Google-Smtp-Source: ABdhPJx/X5ZjsBJlgVapY0TGxhTeM4tD8GYt0tVjFt95r3yemMfrBbZXk5Ky5a0x1ExOePqIpbHCg1zXbYS3ZMK1Fpk= X-Received: by 2002:a05:620a:4547:: with SMTP id u7mr6437486qkp.328.1642276904314; Sat, 15 Jan 2022 12:01:44 -0800 (PST) MIME-Version: 1.0 From: Uros Bizjak Date: Sat, 15 Jan 2022 21:01:32 +0100 Message-ID: Subject: [PATCH] i386: Improve and optimize ix86_expand_sse_movcc To: "gcc-patches@gcc.gnu.org" Content-Type: multipart/mixed; boundary="00000000000081672005d5a4631e" X-Spam-Status: No, score=-8.7 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.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: Sat, 15 Jan 2022 20:01:46 -0000 --00000000000081672005d5a4631e Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Modernize ix86_expand_sse_movcc to use expand_simple_{unop,binop} infrastructure to avoid manual twiddling with output registers. Also fix a couple of inconsistent vector_all_ones_operand usages, break a couple of unnecessary else-if chains, eliminate common subexpressions and do some general code simplifications. 2022-01-15 Uro=C5=A1 Bizjak gcc/ChangeLog: * config/i386/i386-expand.c (ix86_expand_sse_movcc): Use expand_simple_unop and expand_simple_binop instead of manually constructing NOT, AND and IOR RTXes. Use vector_all_ones_operand consistently. Eliminate common subexpressions and simplify code. * config/i386/sse.md (3): New expander. (3): Make public. Bootstrapped and regression tested on x86_64-linux-gnu {,-m32}. Pushed to master. Uros. --00000000000081672005d5a4631e Content-Type: text/plain; charset="US-ASCII"; name="p.diff.txt" Content-Disposition: attachment; filename="p.diff.txt" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_kyg998yk0 ZGlmZiAtLWdpdCBhL2djYy9jb25maWcvaTM4Ni9pMzg2LWV4cGFuZC5jIGIvZ2NjL2NvbmZpZy9p Mzg2L2kzODYtZXhwYW5kLmMKaW5kZXggYzc0MGQ2ZTVjMDQuLjEzODU4MGRhOTZlIDEwMDY0NAot LS0gYS9nY2MvY29uZmlnL2kzODYvaTM4Ni1leHBhbmQuYworKysgYi9nY2MvY29uZmlnL2kzODYv aTM4Ni1leHBhbmQuYwpAQCAtMzc4MSw2ICszNzgxLDcgQEAgaXg4Nl9leHBhbmRfc3NlX21vdmNj IChydHggZGVzdCwgcnR4IGNtcCwgcnR4IG9wX3RydWUsIHJ0eCBvcF9mYWxzZSkKIHsKICAgbWFj aGluZV9tb2RlIG1vZGUgPSBHRVRfTU9ERSAoZGVzdCk7CiAgIG1hY2hpbmVfbW9kZSBjbXBtb2Rl ID0gR0VUX01PREUgKGNtcCk7CisgIHJ0eCB4OwogCiAgIC8qIFNpbXBsaWZ5IHRyaXZpYWwgVkVD X0NPTkRfRVhQUiB0byBhdm9pZCBJQ0UgaW4gcHI5NzUwNi4gICovCiAgIGlmIChydHhfZXF1YWxf cCAob3BfdHJ1ZSwgb3BfZmFsc2UpKQpAQCAtMzc4OSw4ICszNzkwLDYgQEAgaXg4Nl9leHBhbmRf c3NlX21vdmNjIChydHggZGVzdCwgcnR4IGNtcCwgcnR4IG9wX3RydWUsIHJ0eCBvcF9mYWxzZSkK ICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgcnR4IHQyLCB0MywgeDsKLQogICAvKiBJZiB3ZSBo YXZlIGFuIGludGVnZXIgbWFzayBhbmQgRlAgdmFsdWUgdGhlbiB3ZSBuZWVkCiAgICAgIHRvIGNh c3QgbWFzayB0byBGUCBtb2RlLiAgKi8KICAgaWYgKG1vZGUgIT0gY21wbW9kZSAmJiBWRUNUT1Jf TU9ERV9QIChjbXBtb2RlKSkKQEAgLTM4MTMsMTIgKzM4MTIsMTQgQEAgaXg4Nl9leHBhbmRfc3Nl X21vdmNjIChydHggZGVzdCwgcnR4IGNtcCwgcnR4IG9wX3RydWUsIHJ0eCBvcF9mYWxzZSkKIAkJ ICA/IGZvcmNlX3JlZyAobW9kZSwgb3BfZmFsc2UpIDogb3BfZmFsc2UpOwogICAgICAgaWYgKG9w X3RydWUgPT0gQ09OU1QwX1JUWCAobW9kZSkpCiAJewotCSAgcnR4IG4gPSBnZW5fcmVnX3J0eCAo Y21wbW9kZSk7CiAJICBpZiAoY21wbW9kZSA9PSBFX0RJbW9kZSAmJiAhVEFSR0VUXzY0QklUKQot CSAgICBlbWl0X2luc24gKGdlbl9rbm90ZGkgKG4sIGNtcCkpOworCSAgICB7CisJICAgICAgeCA9 IGdlbl9yZWdfcnR4IChjbXBtb2RlKTsKKwkgICAgICBlbWl0X2luc24gKGdlbl9rbm90ZGkgKHgs IGNtcCkpOworCSAgICB9CiAJICBlbHNlCi0JICAgIGVtaXRfaW5zbiAoZ2VuX3J0eF9TRVQgKG4s IGdlbl9ydHhfZm10X2UgKE5PVCwgY21wbW9kZSwgY21wKSkpOwotCSAgY21wID0gbjsKKwkgICAg eCA9IGV4cGFuZF9zaW1wbGVfdW5vcCAoY21wbW9kZSwgTk9ULCBjbXAsIE5VTEwsIDEpOworCSAg Y21wID0geDsKIAkgIC8qIFJldmVyc2Ugb3BfdHJ1ZSBvcF9mYWxzZS4gICovCiAJICBzdGQ6OnN3 YXAgKG9wX3RydWUsIG9wX2ZhbHNlKTsKIAl9CkBAIC0zODI2LDIyICszODI3LDI0IEBAIGl4ODZf ZXhwYW5kX3NzZV9tb3ZjYyAocnR4IGRlc3QsIHJ0eCBjbXAsIHJ0eCBvcF90cnVlLCBydHggb3Bf ZmFsc2UpCiAgICAgICBpZiAobW9kZSA9PSBIRm1vZGUpCiAJZW1pdF9pbnNuIChnZW5fbW92aGZf bWFzayAoZGVzdCwgb3BfdHJ1ZSwgb3BfZmFsc2UsIGNtcCkpOwogICAgICAgZWxzZQotCXsKLQkg IHJ0eCB2ZWNfbWVyZ2UgPSBnZW5fcnR4X1ZFQ19NRVJHRSAobW9kZSwgb3BfdHJ1ZSwgb3BfZmFs c2UsIGNtcCk7Ci0JICBlbWl0X2luc24gKGdlbl9ydHhfU0VUIChkZXN0LCB2ZWNfbWVyZ2UpKTsK LQl9CisJZW1pdF9pbnNuIChnZW5fcnR4X1NFVCAoZGVzdCwKKwkJCQlnZW5fcnR4X1ZFQ19NRVJH RSAobW9kZSwKKwkJCQkJCSAgIG9wX3RydWUsIG9wX2ZhbHNlLCBjbXApKSk7CiAgICAgICByZXR1 cm47CiAgICAgfQotICBlbHNlIGlmICh2ZWN0b3JfYWxsX29uZXNfb3BlcmFuZCAob3BfdHJ1ZSwg bW9kZSkKLQkgICAmJiBvcF9mYWxzZSA9PSBDT05TVDBfUlRYIChtb2RlKSkKKworICBpZiAodmVj dG9yX2FsbF9vbmVzX29wZXJhbmQgKG9wX3RydWUsIG1vZGUpCisgICAgICAmJiBvcF9mYWxzZSA9 PSBDT05TVDBfUlRYIChtb2RlKSkKICAgICB7Ci0gICAgICBlbWl0X2luc24gKGdlbl9ydHhfU0VU IChkZXN0LCBjbXApKTsKKyAgICAgIGVtaXRfbW92ZV9pbnNuIChkZXN0LCBjbXApOwogICAgICAg cmV0dXJuOwogICAgIH0KICAgZWxzZSBpZiAob3BfZmFsc2UgPT0gQ09OU1QwX1JUWCAobW9kZSkp CiAgICAgewotICAgICAgb3BfdHJ1ZSA9IGZvcmNlX3JlZyAobW9kZSwgb3BfdHJ1ZSk7Ci0gICAg ICBpeDg2X2VtaXRfdmVjX2Jpbm9wIChBTkQsIG1vZGUsIGRlc3QsIGNtcCwgb3BfdHJ1ZSk7Cisg ICAgICB4ID0gZXhwYW5kX3NpbXBsZV9iaW5vcCAobW9kZSwgQU5ELCBjbXAsIG9wX3RydWUsCisJ CQkgICAgICAgZGVzdCwgMSwgT1BUQUJfRElSRUNUKTsKKyAgICAgIGlmICh4ICE9IGRlc3QpCisJ ZW1pdF9tb3ZlX2luc24gKGRlc3QsIHgpOwogICAgICAgcmV0dXJuOwogICAgIH0KICAgZWxzZSBp ZiAob3BfdHJ1ZSA9PSBDT05TVDBfUlRYIChtb2RlKSkKQEAgLTM4NTEsMTMgKzM4NTQsMTYgQEAg aXg4Nl9leHBhbmRfc3NlX21vdmNjIChydHggZGVzdCwgcnR4IGNtcCwgcnR4IG9wX3RydWUsIHJ0 eCBvcF9mYWxzZSkKICAgICAgIGl4ODZfZW1pdF92ZWNfYmlub3AgKEFORCwgbW9kZSwgZGVzdCwg eCwgb3BfZmFsc2UpOwogICAgICAgcmV0dXJuOwogICAgIH0KLSAgZWxzZSBpZiAoSU5URUdSQUxf TU9ERV9QIChtb2RlKSAmJiBvcF90cnVlID09IENPTlNUTTFfUlRYIChtb2RlKSkKKyAgZWxzZSBp ZiAodmVjdG9yX2FsbF9vbmVzX29wZXJhbmQgKG9wX3RydWUsIG1vZGUpKQogICAgIHsKLSAgICAg IG9wX2ZhbHNlID0gZm9yY2VfcmVnIChtb2RlLCBvcF9mYWxzZSk7Ci0gICAgICBpeDg2X2VtaXRf dmVjX2Jpbm9wIChJT1IsIG1vZGUsIGRlc3QsIGNtcCwgb3BfZmFsc2UpOworICAgICAgeCA9IGV4 cGFuZF9zaW1wbGVfYmlub3AgKG1vZGUsIElPUiwgY21wLCBvcF9mYWxzZSwKKwkJCSAgICAgICBk ZXN0LCAxLCBPUFRBQl9ESVJFQ1QpOworICAgICAgaWYgKHggIT0gZGVzdCkKKwllbWl0X21vdmVf aW5zbiAoZGVzdCwgeCk7CiAgICAgICByZXR1cm47CiAgICAgfQotICBlbHNlIGlmIChUQVJHRVRf WE9QKQorCisgIGlmIChUQVJHRVRfWE9QKQogICAgIHsKICAgICAgIG9wX3RydWUgPSBmb3JjZV9y ZWcgKG1vZGUsIG9wX3RydWUpOwogCkBAIC0zODY1LDE2ICszODcxLDE3IEBAIGl4ODZfZXhwYW5k X3NzZV9tb3ZjYyAocnR4IGRlc3QsIHJ0eCBjbXAsIHJ0eCBvcF90cnVlLCBydHggb3BfZmFsc2Up CiAJICB8fCAhbm9uaW1tZWRpYXRlX29wZXJhbmQgKG9wX2ZhbHNlLCBtb2RlKSkKIAlvcF9mYWxz ZSA9IGZvcmNlX3JlZyAobW9kZSwgb3BfZmFsc2UpOwogCi0gICAgICBlbWl0X2luc24gKGdlbl9y dHhfU0VUIChkZXN0LCBnZW5fcnR4X0lGX1RIRU5fRUxTRSAobW9kZSwgY21wLAotCQkJCQkJCSAg b3BfdHJ1ZSwKLQkJCQkJCQkgIG9wX2ZhbHNlKSkpOworICAgICAgZW1pdF9pbnNuIChnZW5fcnR4 X1NFVCAoZGVzdCwKKwkJCSAgICAgIGdlbl9ydHhfSUZfVEhFTl9FTFNFIChtb2RlLCBjbXAsCisJ CQkJCQkgICAgb3BfdHJ1ZSwgb3BfZmFsc2UpKSk7CiAgICAgICByZXR1cm47CiAgICAgfQogCiAg IHJ0eCAoKmdlbikgKHJ0eCwgcnR4LCBydHgsIHJ0eCkgPSBOVUxMOwotICBydHggZCA9IGRlc3Q7 CisgIG1hY2hpbmVfbW9kZSBibGVuZF9tb2RlID0gbW9kZTsKIAotICBpZiAoIXZlY3Rvcl9vcGVy YW5kIChvcF90cnVlLCBtb2RlKSkKKyAgaWYgKEdFVF9NT0RFX1NJWkUgKG1vZGUpIDwgMTYKKyAg ICAgIHx8ICF2ZWN0b3Jfb3BlcmFuZCAob3BfdHJ1ZSwgbW9kZSkpCiAgICAgb3BfdHJ1ZSA9IGZv cmNlX3JlZyAobW9kZSwgb3BfdHJ1ZSk7CiAKICAgb3BfZmFsc2UgPSBmb3JjZV9yZWcgKG1vZGUs IG9wX2ZhbHNlKTsKQEAgLTM4ODMsMTAgKzM4OTAsNyBAQCBpeDg2X2V4cGFuZF9zc2VfbW92Y2Mg KHJ0eCBkZXN0LCBydHggY21wLCBydHggb3BfdHJ1ZSwgcnR4IG9wX2ZhbHNlKQogICAgIHsKICAg ICBjYXNlIEVfVjJTRm1vZGU6CiAgICAgICBpZiAoVEFSR0VUX1NTRTRfMSkKLQl7Ci0JICBnZW4g PSBnZW5fbW14X2JsZW5kdnBzOwotCSAgb3BfdHJ1ZSA9IGZvcmNlX3JlZyAobW9kZSwgb3BfdHJ1 ZSk7Ci0JfQorCWdlbiA9IGdlbl9tbXhfYmxlbmR2cHM7CiAgICAgICBicmVhazsKICAgICBjYXNl IEVfVjRTRm1vZGU6CiAgICAgICBpZiAoVEFSR0VUX1NTRTRfMSkKQEAgLTM4OTgsNTQgKzM5MDIs MzIgQEAgaXg4Nl9leHBhbmRfc3NlX21vdmNjIChydHggZGVzdCwgcnR4IGNtcCwgcnR4IG9wX3Ry dWUsIHJ0eCBvcF9mYWxzZSkKICAgICAgIGJyZWFrOwogICAgIGNhc2UgRV9TRm1vZGU6CiAgICAg ICBpZiAoVEFSR0VUX1NTRTRfMSkKLQl7Ci0JICBnZW4gPSBnZW5fc3NlNF8xX2JsZW5kdnNzOwot CSAgb3BfdHJ1ZSA9IGZvcmNlX3JlZyAobW9kZSwgb3BfdHJ1ZSk7Ci0JfQorCWdlbiA9IGdlbl9z c2U0XzFfYmxlbmR2c3M7CiAgICAgICBicmVhazsKICAgICBjYXNlIEVfREZtb2RlOgogICAgICAg aWYgKFRBUkdFVF9TU0U0XzEpCi0JewotCSAgZ2VuID0gZ2VuX3NzZTRfMV9ibGVuZHZzZDsKLQkg IG9wX3RydWUgPSBmb3JjZV9yZWcgKG1vZGUsIG9wX3RydWUpOwotCX0KKwlnZW4gPSBnZW5fc3Nl NF8xX2JsZW5kdnNkOwogICAgICAgYnJlYWs7CiAgICAgY2FzZSBFX1Y4UUltb2RlOgogICAgIGNh c2UgRV9WNEhJbW9kZToKICAgICBjYXNlIEVfVjJTSW1vZGU6CiAgICAgICBpZiAoVEFSR0VUX1NT RTRfMSkKIAl7Ci0JICBvcF90cnVlID0gZm9yY2VfcmVnIChtb2RlLCBvcF90cnVlKTsKLQogCSAg Z2VuID0gZ2VuX21teF9wYmxlbmR2Yl92OHFpOwotCSAgaWYgKG1vZGUgIT0gVjhRSW1vZGUpCi0J ICAgIGQgPSBnZW5fcmVnX3J0eCAoVjhRSW1vZGUpOwotCSAgb3BfZmFsc2UgPSBnZW5fbG93cGFy dCAoVjhRSW1vZGUsIG9wX2ZhbHNlKTsKLQkgIG9wX3RydWUgPSBnZW5fbG93cGFydCAoVjhRSW1v ZGUsIG9wX3RydWUpOwotCSAgY21wID0gZ2VuX2xvd3BhcnQgKFY4UUltb2RlLCBjbXApOworCSAg YmxlbmRfbW9kZSA9IFY4UUltb2RlOwogCX0KICAgICAgIGJyZWFrOwogICAgIGNhc2UgRV9WNFFJ bW9kZToKICAgICBjYXNlIEVfVjJISW1vZGU6CiAgICAgICBpZiAoVEFSR0VUX1NTRTRfMSkKIAl7 Ci0JICBvcF90cnVlID0gZm9yY2VfcmVnIChtb2RlLCBvcF90cnVlKTsKLQogCSAgZ2VuID0gZ2Vu X21teF9wYmxlbmR2Yl92NHFpOwotCSAgaWYgKG1vZGUgIT0gVjRRSW1vZGUpCi0JICAgIGQgPSBn ZW5fcmVnX3J0eCAoVjRRSW1vZGUpOwotCSAgb3BfZmFsc2UgPSBnZW5fbG93cGFydCAoVjRRSW1v ZGUsIG9wX2ZhbHNlKTsKLQkgIG9wX3RydWUgPSBnZW5fbG93cGFydCAoVjRRSW1vZGUsIG9wX3Ry dWUpOwotCSAgY21wID0gZ2VuX2xvd3BhcnQgKFY0UUltb2RlLCBjbXApOworCSAgYmxlbmRfbW9k ZSA9IFY0UUltb2RlOwogCX0KICAgICAgIGJyZWFrOwogICAgIGNhc2UgRV9WMlFJbW9kZToKICAg ICAgIGlmIChUQVJHRVRfU1NFNF8xKQotCXsKLQkgIG9wX3RydWUgPSBmb3JjZV9yZWcgKG1vZGUs IG9wX3RydWUpOwotCi0JICBnZW4gPSBnZW5fbW14X3BibGVuZHZiX3YycWk7Ci0JfQorCWdlbiA9 IGdlbl9tbXhfcGJsZW5kdmJfdjJxaTsKICAgICAgIGJyZWFrOwogICAgIGNhc2UgRV9WMTZRSW1v ZGU6CiAgICAgY2FzZSBFX1Y4SEltb2RlOgpAQCAtMzk1NSwxMSArMzkzNyw3IEBAIGl4ODZfZXhw YW5kX3NzZV9tb3ZjYyAocnR4IGRlc3QsIHJ0eCBjbXAsIHJ0eCBvcF90cnVlLCBydHggb3BfZmFs c2UpCiAgICAgICBpZiAoVEFSR0VUX1NTRTRfMSkKIAl7CiAJICBnZW4gPSBnZW5fc3NlNF8xX3Bi bGVuZHZiOwotCSAgaWYgKG1vZGUgIT0gVjE2UUltb2RlKQotCSAgICBkID0gZ2VuX3JlZ19ydHgg KFYxNlFJbW9kZSk7Ci0JICBvcF9mYWxzZSA9IGdlbl9sb3dwYXJ0IChWMTZRSW1vZGUsIG9wX2Zh bHNlKTsKLQkgIG9wX3RydWUgPSBnZW5fbG93cGFydCAoVjE2UUltb2RlLCBvcF90cnVlKTsKLQkg IGNtcCA9IGdlbl9sb3dwYXJ0IChWMTZRSW1vZGUsIGNtcCk7CisJICBibGVuZF9tb2RlID0gVjE2 UUltb2RlOwogCX0KICAgICAgIGJyZWFrOwogICAgIGNhc2UgRV9WOFNGbW9kZToKQEAgLTM5Nzgs MTEgKzM5NTYsNyBAQCBpeDg2X2V4cGFuZF9zc2VfbW92Y2MgKHJ0eCBkZXN0LCBydHggY21wLCBy dHggb3BfdHJ1ZSwgcnR4IG9wX2ZhbHNlKQogICAgICAgaWYgKFRBUkdFVF9BVlgyKQogCXsKIAkg IGdlbiA9IGdlbl9hdngyX3BibGVuZHZiOwotCSAgaWYgKG1vZGUgIT0gVjMyUUltb2RlKQotCSAg ICBkID0gZ2VuX3JlZ19ydHggKFYzMlFJbW9kZSk7Ci0JICBvcF9mYWxzZSA9IGdlbl9sb3dwYXJ0 IChWMzJRSW1vZGUsIG9wX2ZhbHNlKTsKLQkgIG9wX3RydWUgPSBnZW5fbG93cGFydCAoVjMyUUlt b2RlLCBvcF90cnVlKTsKLQkgIGNtcCA9IGdlbl9sb3dwYXJ0IChWMzJRSW1vZGUsIGNtcCk7CisJ ICBibGVuZF9tb2RlID0gVjMyUUltb2RlOwogCX0KICAgICAgIGJyZWFrOwogCkBAIC00MDE0LDI2 ICszOTg4LDM2IEBAIGl4ODZfZXhwYW5kX3NzZV9tb3ZjYyAocnR4IGRlc3QsIHJ0eCBjbXAsIHJ0 eCBvcF90cnVlLCBydHggb3BfZmFsc2UpCiAKICAgaWYgKGdlbiAhPSBOVUxMKQogICAgIHsKLSAg ICAgIGVtaXRfaW5zbiAoZ2VuIChkLCBvcF9mYWxzZSwgb3BfdHJ1ZSwgY21wKSk7Ci0gICAgICBp ZiAoZCAhPSBkZXN0KQotCWVtaXRfbW92ZV9pbnNuIChkZXN0LCBnZW5fbG93cGFydCAoR0VUX01P REUgKGRlc3QpLCBkKSk7CisgICAgICBpZiAoYmxlbmRfbW9kZSA9PSBtb2RlKQorCXggPSBkZXN0 OworICAgICAgZWxzZQorCXsKKwkgIHggPSBnZW5fcmVnX3J0eCAoYmxlbmRfbW9kZSk7CisJICBv cF9mYWxzZSA9IGdlbl9sb3dwYXJ0IChibGVuZF9tb2RlLCBvcF9mYWxzZSk7CisJICBvcF90cnVl ID0gZ2VuX2xvd3BhcnQgKGJsZW5kX21vZGUsIG9wX3RydWUpOworCSAgY21wID0gZ2VuX2xvd3Bh cnQgKGJsZW5kX21vZGUsIGNtcCk7CisJfQorCisgICAgICBlbWl0X2luc24gKGdlbiAoeCwgb3Bf ZmFsc2UsIG9wX3RydWUsIGNtcCkpOworCisgICAgICBpZiAoeCAhPSBkZXN0KQorCWVtaXRfbW92 ZV9pbnNuIChkZXN0LCBnZW5fbG93cGFydCAobW9kZSwgeCkpOwogICAgIH0KICAgZWxzZQogICAg IHsKLSAgICAgIG9wX3RydWUgPSBmb3JjZV9yZWcgKG1vZGUsIG9wX3RydWUpOwotCi0gICAgICB0 MiA9IGdlbl9yZWdfcnR4IChtb2RlKTsKLSAgICAgIGlmIChvcHRpbWl6ZSkKLQl0MyA9IGdlbl9y ZWdfcnR4IChtb2RlKTsKLSAgICAgIGVsc2UKLQl0MyA9IGRlc3Q7CisgICAgICBydHggdDIsIHQz OwogCi0gICAgICBpeDg2X2VtaXRfdmVjX2Jpbm9wIChBTkQsIG1vZGUsIHQyLCBvcF90cnVlLCBj bXApOworICAgICAgdDIgPSBleHBhbmRfc2ltcGxlX2Jpbm9wIChtb2RlLCBBTkQsIG9wX3RydWUs IGNtcCwKKwkJCQlOVUxMLCAxLCBPUFRBQl9ESVJFQ1QpOwogCisgICAgICB0MyA9IGdlbl9yZWdf cnR4IChtb2RlKTsKICAgICAgIHggPSBnZW5fcnR4X05PVCAobW9kZSwgY21wKTsKICAgICAgIGl4 ODZfZW1pdF92ZWNfYmlub3AgKEFORCwgbW9kZSwgdDMsIHgsIG9wX2ZhbHNlKTsKIAotICAgICAg aXg4Nl9lbWl0X3ZlY19iaW5vcCAoSU9SLCBtb2RlLCBkZXN0LCB0MywgdDIpOworICAgICAgeCA9 IGV4cGFuZF9zaW1wbGVfYmlub3AgKG1vZGUsIElPUiwgdDMsIHQyLAorCQkJICAgICAgIGRlc3Qs IDEsIE9QVEFCX0RJUkVDVCk7CisgICAgICBpZiAoeCAhPSBkZXN0KQorCWVtaXRfbW92ZV9pbnNu IChkZXN0LCB4KTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL2djYy9jb25maWcvaTM4Ni9zc2Uu bWQgYi9nY2MvY29uZmlnL2kzODYvc3NlLm1kCmluZGV4IDA4NjQ3NDg4NzVlLi41MGRjNWRhOWEz OCAxMDA2NDQKLS0tIGEvZ2NjL2NvbmZpZy9pMzg2L3NzZS5tZAorKysgYi9nY2MvY29uZmlnL2kz ODYvc3NlLm1kCkBAIC00OTU2LDcgKzQ5NTYsNyBAQAogCSAgICAgIF0KIAkgICAgICAoY29uc3Rf c3RyaW5nICJUSSIpKSldKQogCi0oZGVmaW5lX2luc24gIio8Y29kZT48bW9kZT4zIgorKGRlZmlu ZV9pbnNuICI8Y29kZT48bW9kZT4zIgogICBbKHNldCAobWF0Y2hfb3BlcmFuZDpNT0RFRiAwICJy ZWdpc3Rlcl9vcGVyYW5kIiAiPXgseCx2LHYiKQogCShhbnlfbG9naWM6TU9ERUYKIAkgIChtYXRj aF9vcGVyYW5kOk1PREVGIDEgInJlZ2lzdGVyX29wZXJhbmQiICIlMCx4LHYsdiIpCg== --00000000000081672005d5a4631e--