From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mx0a-001b2d01.pphosted.com (mx0b-001b2d01.pphosted.com [148.163.158.5]) by sourceware.org (Postfix) with ESMTPS id EF7323858D38 for ; Mon, 27 Jul 2020 03:59:02 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org EF7323858D38 Received: from pps.filterd (m0098416.ppops.net [127.0.0.1]) by mx0b-001b2d01.pphosted.com (8.16.0.42/8.16.0.42) with SMTP id 06R3VCLY006236; Sun, 26 Jul 2020 23:59:00 -0400 Received: from pps.reinject (localhost [127.0.0.1]) by mx0b-001b2d01.pphosted.com with ESMTP id 32gebw1kr3-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Sun, 26 Jul 2020 23:59:00 -0400 Received: from m0098416.ppops.net (m0098416.ppops.net [127.0.0.1]) by pps.reinject (8.16.0.36/8.16.0.36) with SMTP id 06R3VdCR007064; Sun, 26 Jul 2020 23:58:59 -0400 Received: from ppma03ams.nl.ibm.com (62.31.33a9.ip4.static.sl-reverse.com [169.51.49.98]) by mx0b-001b2d01.pphosted.com with ESMTP id 32gebw1kqg-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Sun, 26 Jul 2020 23:58:59 -0400 Received: from pps.filterd (ppma03ams.nl.ibm.com [127.0.0.1]) by ppma03ams.nl.ibm.com (8.16.0.42/8.16.0.42) with SMTP id 06R3nXOi029338; Mon, 27 Jul 2020 03:58:58 GMT Received: from b06cxnps3074.portsmouth.uk.ibm.com (d06relay09.portsmouth.uk.ibm.com [9.149.109.194]) by ppma03ams.nl.ibm.com with ESMTP id 32gcpx1sfv-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 27 Jul 2020 03:58:57 +0000 Received: from d06av26.portsmouth.uk.ibm.com (d06av26.portsmouth.uk.ibm.com [9.149.105.62]) by b06cxnps3074.portsmouth.uk.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 06R3wtke21889424 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 27 Jul 2020 03:58:56 GMT Received: from d06av26.portsmouth.uk.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id D29FBAE055; Mon, 27 Jul 2020 03:58:55 +0000 (GMT) Received: from d06av26.portsmouth.uk.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 8CEE6AE056; Mon, 27 Jul 2020 03:58:53 +0000 (GMT) Received: from KewenLins-MacBook-Pro.local (unknown [9.200.54.160]) by d06av26.portsmouth.uk.ibm.com (Postfix) with ESMTP; Mon, 27 Jul 2020 03:58:53 +0000 (GMT) Subject: [PATCH v4] vect/rs6000: Support vector with length cost modeling To: GCC Patches , richard.sandiford@arm.com References: <419f1fad-05be-115c-1a53-cb710ae7b2dc@linux.ibm.com> <1aeabdc7-0cf4-055b-a3ec-74c283053cf5@linux.ibm.com> Cc: Bill Schmidt , Segher Boessenkool , Richard Biener From: "Kewen.Lin" Message-ID: Date: Mon, 27 Jul 2020 11:58:52 +0800 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:68.0) Gecko/20100101 Thunderbird/68.9.0 MIME-Version: 1.0 In-Reply-To: Content-Type: multipart/mixed; boundary="------------54BB1088465C7DA28FD4FC67" Content-Language: en-US X-TM-AS-GCONF: 00 X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.235, 18.0.687 definitions=2020-07-27_02:2020-07-24, 2020-07-27 signatures=0 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 mlxlogscore=999 phishscore=0 spamscore=0 impostorscore=0 priorityscore=1501 lowpriorityscore=0 malwarescore=0 adultscore=0 bulkscore=0 suspectscore=0 clxscore=1015 mlxscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2006250000 definitions=main-2007270021 X-Spam-Status: No, score=-11.1 required=5.0 tests=BAYES_00, GIT_PATCH_0, KAM_DMARC_STATUS, KAM_SHORT, RCVD_IN_DNSWL_LOW, RCVD_IN_MSPIKE_H2, 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: Mon, 27 Jul 2020 03:59:05 -0000 This is a multi-part message in MIME format. --------------54BB1088465C7DA28FD4FC67 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit Hi Richard, Thanks for the review again! on 2020/7/25 上午12:21, Richard Sandiford wrote: > "Kewen.Lin" writes: > > Thanks, the rearrangement of the existing code looks good. Could you > split that and the new LOOP_VINFO_FULLY_WITH_LENGTH_P (loop_vinfo) stuff > out into separate patches? > Splitted to https://gcc.gnu.org/pipermail/gcc-patches/2020-July/550691.html. errr... that subject should be with prefix "[PATCH] vect:". [snip ...] (Some comments in the snipped content will be done in v4) >> + here. */ >> + >> + /* For now we only operate length-based partial vectors on Power, >> + which has constant VF all the time, we need some tweakings below >> + if it doesn't hold in future. */ >> + gcc_assert (LOOP_VINFO_VECT_FACTOR (loop_vinfo).is_constant ()); > > Where do you rely on this? There didn't seem to be any obvious > to_constant uses. Since this is “only” a cost calculation, we should > be using assumed_vf. Sorry for the confusion. This was intended for the poly things like VF or nitems_per_ctrl which isn't constant during compilation time, then get people's attention on the possible runtime cost on things like scaling up for nitems_step etc. But I just realized that the computations like the multiply with another constant can operate on the coefficient, it looks there is no runtime cost then? If so, I think I thought too much before. ;-) >> - prologue_cost_vec.release (); >> - epilogue_cost_vec.release (); >> + (void) add_stmt_cost (loop_vinfo, target_cost_data, prol_cnt, scalar_stmt, >> + NULL, NULL_TREE, 0, vect_prologue); >> + (void) add_stmt_cost (loop_vinfo, target_cost_data, body_cnt, scalar_stmt, >> + NULL, NULL_TREE, 0, vect_body); > > IMO this seems to be reproducing too much of the functions that you > referred to. And the danger with that is that they could easily > get out of sync later. Good point! The original intention was to model as possible as we can, to avoid some bad decision due to some unmodeled pieces, like the case the loop body is small and some computation become nonnegligible. The unsync risks seems also applied for other codes. How about adding some "note" comments in those functions? The updated v4 is attached by addressing your comments as well as Segher's comments. BR, Kewen ----- gcc/ChangeLog: * config/rs6000/rs6000.c (rs6000_adjust_vect_cost_per_loop): New function. (rs6000_finish_cost): Call rs6000_adjust_vect_cost_per_loop. * tree-vect-loop.c (vect_estimate_min_profitable_iters): Add cost modeling for vector with length. * tree-vect-loop-manip.c (vect_set_loop_controls_directly): Update function comment. * tree-vect-stmts.c (vect_gen_len): Likewise. --------------54BB1088465C7DA28FD4FC67 Content-Type: text/plain; charset=UTF-8; x-mac-type="0"; x-mac-creator="0"; name="cost_v4.diff" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="cost_v4.diff" ZGlmZiAtLWdpdCBhL2djYy9jb25maWcvcnM2MDAwL3JzNjAwMC5jIGIvZ2NjL2NvbmZpZy9y czYwMDAvcnM2MDAwLmMKaW5kZXggMDA5YWZjNWY4OTQuLjg2ZWY1ODRlMDliIDEwMDY0NAot LS0gYS9nY2MvY29uZmlnL3JzNjAwMC9yczYwMDAuYworKysgYi9nY2MvY29uZmlnL3JzNjAw MC9yczYwMDAuYwpAQCAtNTE3Nyw2ICs1MTc3LDM0IEBAIHJzNjAwMF9hZGRfc3RtdF9jb3N0 IChjbGFzcyB2ZWNfaW5mbyAqdmluZm8sIHZvaWQgKmRhdGEsIGludCBjb3VudCwKICAgcmV0 dXJuIHJldHZhbDsKIH0KIAorLyogRm9yIHNvbWUgdGFyZ2V0IHNwZWNpZmljIHZlY3Rvcml6 YXRpb24gY29zdCB3aGljaCBjYW4ndCBiZSBoYW5kbGVkIHBlciBzdG10LAorICAgd2UgY2hl Y2sgdGhlIHJlcXVpc2l0ZSBjb25kaXRpb25zIGFuZCBhZGp1c3QgdGhlIHZlY3Rvcml6YXRp b24gY29zdAorICAgYWNjb3JkaW5nbHkgaWYgc2F0aXNmaWVkLiAgT25lIHR5cGljYWwgZXhh bXBsZSBpcyB0byBtb2RlbCBzaGlmdCBjb3N0IGZvcgorICAgdmVjdG9yIHdpdGggbGVuZ3Ro IGJ5IGNvdW50aW5nIG51bWJlciBvZiByZXF1aXJlZCBsZW5ndGhzIHVuZGVyIGNvbmRpdGlv bgorICAgTE9PUF9WSU5GT19GVUxMWV9XSVRIX0xFTkdUSF9QLiAgKi8KKworc3RhdGljIHZv aWQKK3JzNjAwMF9hZGp1c3RfdmVjdF9jb3N0X3Blcl9sb29wIChyczYwMDBfY29zdF9kYXRh ICpkYXRhKQoreworICBzdHJ1Y3QgbG9vcCAqbG9vcCA9IGRhdGEtPmxvb3BfaW5mbzsKKyAg Z2NjX2Fzc2VydCAobG9vcCk7CisgIGxvb3BfdmVjX2luZm8gbG9vcF92aW5mbyA9IGxvb3Bf dmVjX2luZm9fZm9yX2xvb3AgKGxvb3ApOworCisgIGlmIChMT09QX1ZJTkZPX0ZVTExZX1dJ VEhfTEVOR1RIX1AgKGxvb3BfdmluZm8pKQorICAgIHsKKyAgICAgIHJncm91cF9jb250cm9s cyAqcmdjOworICAgICAgdW5zaWduZWQgaW50IG51bV92ZWN0b3JzX20xOworICAgICAgdW5z aWduZWQgaW50IHNoaWZ0X2NudCA9IDA7CisgICAgICBGT1JfRUFDSF9WRUNfRUxUIChMT09Q X1ZJTkZPX0xFTlMgKGxvb3BfdmluZm8pLCBudW1fdmVjdG9yc19tMSwgcmdjKQorCWlmIChy Z2MtPnR5cGUpCisJICAvKiBFYWNoIGxlbmd0aCBuZWVkcyBvbmUgc2hpZnQgdG8gZmlsbCBp bnRvIGJpdHMgMC03LiAgKi8KKwkgIHNoaWZ0X2NudCArPSBudW1fdmVjdG9yc19tMSArIDE7 CisKKyAgICAgIHJzNjAwMF9hZGRfc3RtdF9jb3N0IChsb29wX3ZpbmZvLCAodm9pZCAqKSBk YXRhLCBzaGlmdF9jbnQsIHNjYWxhcl9zdG10LAorCQkJICAgIE5VTEwsIE5VTExfVFJFRSwg MCwgdmVjdF9ib2R5KTsKKyAgICB9Cit9CisKIC8qIEltcGxlbWVudCB0YXJnZXRtLnZlY3Rv cml6ZS5maW5pc2hfY29zdC4gICovCiAKIHN0YXRpYyB2b2lkCkBAIC01MTg2LDcgKzUyMTQs MTAgQEAgcnM2MDAwX2ZpbmlzaF9jb3N0ICh2b2lkICpkYXRhLCB1bnNpZ25lZCAqcHJvbG9n dWVfY29zdCwKICAgcnM2MDAwX2Nvc3RfZGF0YSAqY29zdF9kYXRhID0gKHJzNjAwMF9jb3N0 X2RhdGEqKSBkYXRhOwogCiAgIGlmIChjb3N0X2RhdGEtPmxvb3BfaW5mbykKLSAgICByczYw MDBfZGVuc2l0eV90ZXN0IChjb3N0X2RhdGEpOworICAgIHsKKyAgICAgIHJzNjAwMF9hZGp1 c3RfdmVjdF9jb3N0X3Blcl9sb29wIChjb3N0X2RhdGEpOworICAgICAgcnM2MDAwX2RlbnNp dHlfdGVzdCAoY29zdF9kYXRhKTsKKyAgICB9CiAKICAgLyogRG9uJ3QgdmVjdG9yaXplIG1p bmltdW0tdmVjdG9yaXphdGlvbi1mYWN0b3IsIHNpbXBsZSBjb3B5IGxvb3BzCiAgICAgIHRo YXQgcmVxdWlyZSB2ZXJzaW9uaW5nIGZvciBhbnkgcmVhc29uLiAgVGhlIHZlY3Rvcml6YXRp b24gaXMgYXQKZGlmZiAtLWdpdCBhL2djYy90cmVlLXZlY3QtbG9vcC1tYW5pcC5jIGIvZ2Nj L3RyZWUtdmVjdC1sb29wLW1hbmlwLmMKaW5kZXggNDkwZTdiZWZlYTMuLjlkMGUzZmM1MjVl IDEwMDY0NAotLS0gYS9nY2MvdHJlZS12ZWN0LWxvb3AtbWFuaXAuYworKysgYi9nY2MvdHJl ZS12ZWN0LWxvb3AtbWFuaXAuYwpAQCAtNDEyLDcgKzQxMiwxMCBAQCB2ZWN0X21heWJlX3Bl cm11dGVfbG9vcF9tYXNrcyAoZ2ltcGxlX3NlcSAqc2VxLCByZ3JvdXBfY29udHJvbHMgKmRl c3RfcmdtLAogCiAgICBUaGlzIG1lYW5zIHRoYXQgd2UgY2Fubm90IGd1YXJhbnRlZSB0aGF0 IHN1Y2ggYW4gaW5kdWN0aW9uIHZhcmlhYmxlCiAgICB3b3VsZCBldmVyIGhpdCBhIHZhbHVl IHRoYXQgcHJvZHVjZXMgYSBzZXQgb2YgYWxsLWZhbHNlIG1hc2tzIG9yIHplcm8KLSAgIGxl bmd0aHMgZm9yIFJHQy4gICovCisgICBsZW5ndGhzIGZvciBSR0MuCisKKyAgIE5vdGUgdGhh dCBwbGVhc2UgY2hlY2sgY29zdCBtb2RlbGluZyB3aGV0aGVyIG5lZWRlZCB0byBiZSB1cGRh dGVkIGluCisgICBmdW5jdGlvbiB2ZWN0X2VzdGltYXRlX21pbl9wcm9maXRhYmxlX2l0ZXJz IGlmIGFueSBjaGFuZ2VzLiAgKi8KIAogc3RhdGljIHRyZWUKIHZlY3Rfc2V0X2xvb3BfY29u dHJvbHNfZGlyZWN0bHkgKGNsYXNzIGxvb3AgKmxvb3AsIGxvb3BfdmVjX2luZm8gbG9vcF92 aW5mbywKZGlmZiAtLWdpdCBhL2djYy90cmVlLXZlY3QtbG9vcC5jIGIvZ2NjL3RyZWUtdmVj dC1sb29wLmMKaW5kZXggMDZjZGU0YjFkYTMuLmEwMDE2MGE3ZjJkIDEwMDY0NAotLS0gYS9n Y2MvdHJlZS12ZWN0LWxvb3AuYworKysgYi9nY2MvdHJlZS12ZWN0LWxvb3AuYwpAQCAtMzc5 OCw2ICszNzk4LDcwIEBAIHZlY3RfZXN0aW1hdGVfbWluX3Byb2ZpdGFibGVfaXRlcnMgKGxv b3BfdmVjX2luZm8gbG9vcF92aW5mbywKICAgICAgICh2b2lkKSBhZGRfc3RtdF9jb3N0IChs b29wX3ZpbmZvLCB0YXJnZXRfY29zdF9kYXRhLCBudW1fbWFza3MgLSAxLAogCQkJICAgIHZl Y3Rvcl9zdG10LCBOVUxMLCBOVUxMX1RSRUUsIDAsIHZlY3RfYm9keSk7CiAgICAgfQorICBl bHNlIGlmIChMT09QX1ZJTkZPX0ZVTExZX1dJVEhfTEVOR1RIX1AgKGxvb3BfdmluZm8pKQor ICAgIHsKKyAgICAgIC8qIFJlZmVycmluZyB0byB0aGUgZnVuY3Rpb25zIHZlY3Rfc2V0X2xv b3BfY29uZGl0aW9uX3BhcnRpYWxfdmVjdG9ycworCSBhbmQgdmVjdF9zZXRfbG9vcF9jb250 cm9sc19kaXJlY3RseSwgd2UgbmVlZCB0byBnZW5lcmF0ZSBlYWNoCisJIGxlbmd0aCBpbiB0 aGUgcHJvbG9ndWUgYW5kIGluIHRoZSBsb29wIGJvZHkgaWYgcmVxdWlyZWQuIEFsdGhvdWdo CisJIHRoZXJlIGFyZSBzb21lIHBvc3NpYmxlIG9wdGltaXphdGlvbnMsIHdlIGNvbnNpZGVy IHRoZSB3b3JzdCBjYXNlCisJIGhlcmUuICAqLworCisgICAgICAvKiBGb3Igd3JhcCBhcm91 bmQgY2hlY2tpbmcuICAqLworICAgICAgdHJlZSBjb21wYXJlX3R5cGUgPSBMT09QX1ZJTkZP X1JHUk9VUF9DT01QQVJFX1RZUEUgKGxvb3BfdmluZm8pOworICAgICAgdW5zaWduZWQgaW50 IGNvbXBhcmVfcHJlY2lzaW9uID0gVFlQRV9QUkVDSVNJT04gKGNvbXBhcmVfdHlwZSk7Cisg ICAgICB3aWRlc3RfaW50IGl2X2xpbWl0ID0gdmVjdF9pdl9saW1pdF9mb3JfcGFydGlhbF92 ZWN0b3JzIChsb29wX3ZpbmZvKTsKKworICAgICAgYm9vbCBuaXRlcnNfa25vd25fcCA9IExP T1BfVklORk9fTklURVJTX0tOT1dOX1AgKGxvb3BfdmluZm8pOworICAgICAgYm9vbCBuZWVk X2l0ZXJhdGVfcAorCT0gKCFMT09QX1ZJTkZPX0VQSUxPR1VFX1AgKGxvb3BfdmluZm8pCisJ ICAgJiYgIXZlY3Rfa25vd25fbml0ZXJzX3NtYWxsZXJfdGhhbl92ZiAobG9vcF92aW5mbykp OworCisgICAgICAvKiBJbml0IG1pbi9tYXgsIHNoaWZ0IGFuZCBtaW51cyBjb3N0IHJlbGF0 aXZlIHRvIHNpbmdsZQorCSBzY2FsYXJfc3RtdC4gRm9yIG5vdyB3ZSBvbmx5IHVzZSBsZW5n dGgtYmFzZWQgcGFydGlhbCB2ZWN0b3JzIG9uCisJIFBvd2VyLCB0YXJnZXQgc3BlY2lmaWMg Y29zdCB0d2Vha2luZyBtYXkgYmUgbmVlZGVkIGZvciBvdGhlcgorCSBwb3J0cyBpbiBmdXR1 cmUuICAqLworICAgICAgdW5zaWduZWQgaW50IG1pbl9tYXhfY29zdCA9IDI7CisgICAgICB1 bnNpZ25lZCBpbnQgc2hpZnRfY29zdCA9IDEsIG1pbnVzX2Nvc3QgPSAxOworCisgICAgICAv KiBJbml0IGNvc3QgcmVsYXRpdmUgdG8gc2luZ2xlIHNjYWxhcl9zdG10LiAgKi8KKyAgICAg IHVuc2lnbmVkIGludCBwcm9sb2d1ZV9jbnQgPSAwOworICAgICAgdW5zaWduZWQgaW50IGJv ZHlfY250ID0gMDsKKworICAgICAgcmdyb3VwX2NvbnRyb2xzICpyZ2M7CisgICAgICB1bnNp Z25lZCBpbnQgbnVtX3ZlY3RvcnNfbTE7CisgICAgICBGT1JfRUFDSF9WRUNfRUxUIChMT09Q X1ZJTkZPX0xFTlMgKGxvb3BfdmluZm8pLCBudW1fdmVjdG9yc19tMSwgcmdjKQorCWlmIChy Z2MtPnR5cGUpCisJICB7CisJICAgIHVuc2lnbmVkIG5pdGVtcyA9IHJnYy0+bWF4X25zY2Fs YXJzX3Blcl9pdGVyICogcmdjLT5mYWN0b3I7CisKKwkgICAgLyogTWF5IG5lZWQgb25lIHNo aWZ0IGZvciBuaXRlbXNfdG90YWwgY29tcHV0YXRpb24uICAqLworCSAgICBpZiAobml0ZW1z ICE9IDEgJiYgIW5pdGVyc19rbm93bl9wKQorCSAgICAgIHByb2xvZ3VlX2NudCArPSBzaGlm dF9jb3N0OworCisJICAgIC8qIE5lZWQgdG8gaGFuZGxlIHdyYXAgYXJvdW5kLiAgKi8KKwkg ICAgaWYgKGl2X2xpbWl0ID09IC0xCisJCXx8ICh3aTo6bWluX3ByZWNpc2lvbiAoaXZfbGlt aXQgKiBuaXRlbXMsIFVOU0lHTkVEKQorCQkgICAgPiBjb21wYXJlX3ByZWNpc2lvbikpCisJ ICAgICAgcHJvbG9ndWVfY250ICs9IChtaW5fbWF4X2Nvc3QgKyBtaW51c19jb3N0KTsKKwor CSAgICAvKiBOZWVkIHRvIGhhbmRsZSBiYXRjaCBsaW1pdCBleGNlcHRpbmcgZm9yIHRoZSAx c3Qgb25lLiAgKi8KKwkgICAgcHJvbG9ndWVfY250ICs9IChtaW5fbWF4X2Nvc3QgKyBtaW51 c19jb3N0KSAqIG51bV92ZWN0b3JzX20xOworCisJICAgIHVuc2lnbmVkIGludCBudW1fdmVj dG9ycyA9IG51bV92ZWN0b3JzX20xICsgMTsKKwkgICAgLyogTmVlZCB0byBzZXQgdXAgbGVu Z3RocyBpbiBwcm9sb2d1ZSwgb25seSBvbmUgTUlOIHJlcXVpcmVkCisJICAgICAgIHNpbmNl IHN0YXJ0IGluZGV4IGlzIHplcm8uICAqLworCSAgICBwcm9sb2d1ZV9jbnQgKz0gbWluX21h eF9jb3N0ICogbnVtX3ZlY3RvcnM7CisKKwkgICAgLyogTmVlZCB0byB1cGRhdGUgbGVuZ3Ro cyBpbiBib2R5IGZvciBuZXh0IGl0ZXJhdGlvbi4gICovCisJICAgIGlmIChuZWVkX2l0ZXJh dGVfcCkKKwkgICAgICBib2R5X2NudCArPSAoMiAqIG1pbl9tYXhfY29zdCArIG1pbnVzX2Nv c3QpICogbnVtX3ZlY3RvcnM7CisJICB9CisKKyAgICAgICh2b2lkKSBhZGRfc3RtdF9jb3N0 IChsb29wX3ZpbmZvLCB0YXJnZXRfY29zdF9kYXRhLCBwcm9sb2d1ZV9jbnQsCisJCQkgICAg c2NhbGFyX3N0bXQsIE5VTEwsIE5VTExfVFJFRSwgMCwgdmVjdF9wcm9sb2d1ZSk7CisgICAg ICAodm9pZCkgYWRkX3N0bXRfY29zdCAobG9vcF92aW5mbywgdGFyZ2V0X2Nvc3RfZGF0YSwg Ym9keV9jbnQsIHNjYWxhcl9zdG10LAorCQkJICAgIE5VTEwsIE5VTExfVFJFRSwgMCwgdmVj dF9ib2R5KTsKKyAgICB9CiAKICAgLyogRk9STk9XOiBUaGUgc2NhbGFyIG91dHNpZGUgY29z dCBpcyBpbmNyZW1lbnRlZCBpbiBvbmUgb2YgdGhlCiAgICAgIGZvbGxvd2luZyB3YXlzOgpA QCAtMzkzMiw4ICszOTk2LDggQEAgdmVjdF9lc3RpbWF0ZV9taW5fcHJvZml0YWJsZV9pdGVy cyAobG9vcF92ZWNfaW5mbyBsb29wX3ZpbmZvLAogICAgIH0KIAogICAvKiA/Pz8gVGhlICJp ZiIgYXJtIGlzIHdyaXR0ZW4gdG8gaGFuZGxlIGFsbCBjYXNlczsgc2VlIGJlbG93IGZvciB3 aGF0Ci0gICAgIHdlIHdvdWxkIGRvIGZvciAhTE9PUF9WSU5GT19GVUxMWV9NQVNLRURfUC4g ICovCi0gIGlmIChMT09QX1ZJTkZPX0ZVTExZX01BU0tFRF9QIChsb29wX3ZpbmZvKSkKKyAg ICAgd2Ugd291bGQgZG8gZm9yICFMT09QX1ZJTkZPX1VTSU5HX1BBUlRJQUxfVkVDVE9SU19Q LiAgKi8KKyAgaWYgKExPT1BfVklORk9fVVNJTkdfUEFSVElBTF9WRUNUT1JTX1AgKGxvb3Bf dmluZm8pKQogICAgIHsKICAgICAgIC8qIFJld3JpdGluZyB0aGUgY29uZGl0aW9uIGFib3Zl IGluIHRlcm1zIG9mIHRoZSBudW1iZXIgb2YKIAkgdmVjdG9yIGl0ZXJhdGlvbnMgKHZuaXRl cnMpIHJhdGhlciB0aGFuIHRoZSBudW1iZXIgb2YKQEAgLTM5NjAsNyArNDAyNCw3IEBAIHZl Y3RfZXN0aW1hdGVfbWluX3Byb2ZpdGFibGVfaXRlcnMgKGxvb3BfdmVjX2luZm8gbG9vcF92 aW5mbywKIAlkdW1wX3ByaW50ZiAoTVNHX05PVEUsICIgIE1pbmltdW0gbnVtYmVyIG9mIHZl Y3RvciBpdGVyYXRpb25zOiAlZFxuIiwKIAkJICAgICBtaW5fdmVjX25pdGVycyk7CiAKLSAg ICAgIGlmIChMT09QX1ZJTkZPX0ZVTExZX01BU0tFRF9QIChsb29wX3ZpbmZvKSkKKyAgICAg IGlmIChMT09QX1ZJTkZPX1VTSU5HX1BBUlRJQUxfVkVDVE9SU19QIChsb29wX3ZpbmZvKSkK IAl7CiAJICAvKiBOb3cgdGhhdCB3ZSBrbm93IHRoZSBtaW5pbXVtIG51bWJlciBvZiB2ZWN0 b3IgaXRlcmF0aW9ucywKIAkgICAgIGZpbmQgdGhlIG1pbmltdW0gbml0ZXJzIGZvciB3aGlj aCB0aGUgc2NhbGFyIGNvc3QgaXMgbGFyZ2VyOgpAQCAtNDAxNSw2ICs0MDc5LDEwIEBAIHZl Y3RfZXN0aW1hdGVfbWluX3Byb2ZpdGFibGVfaXRlcnMgKGxvb3BfdmVjX2luZm8gbG9vcF92 aW5mbywKICAgICAgICYmIG1pbl9wcm9maXRhYmxlX2l0ZXJzIDwgKGFzc3VtZWRfdmYgKyBw ZWVsX2l0ZXJzX3Byb2xvZ3VlKSkKICAgICAvKiBXZSB3YW50IHRoZSB2ZWN0b3JpemVkIGxv b3AgdG8gZXhlY3V0ZSBhdCBsZWFzdCBvbmNlLiAgKi8KICAgICBtaW5fcHJvZml0YWJsZV9p dGVycyA9IGFzc3VtZWRfdmYgKyBwZWVsX2l0ZXJzX3Byb2xvZ3VlOworICBlbHNlIGlmICht aW5fcHJvZml0YWJsZV9pdGVycyA8IHBlZWxfaXRlcnNfcHJvbG9ndWUpCisgICAgLyogRm9y IExPT1BfVklORk9fVVNJTkdfUEFSVElBTF9WRUNUT1JTX1AsIHdlIG5lZWQgdG8gZW5zdXJl IHRoZQorICAgICAgIHZlY3Rvcml6ZWQgbG9vcCB0byBleGVjdXRlIGF0IGxlYXN0IG9uY2Uu ICAqLworICAgIG1pbl9wcm9maXRhYmxlX2l0ZXJzID0gcGVlbF9pdGVyc19wcm9sb2d1ZTsK IAogICBpZiAoZHVtcF9lbmFibGVkX3AgKCkpCiAgICAgZHVtcF9wcmludGZfbG9jIChNU0df Tk9URSwgdmVjdF9sb2NhdGlvbiwKQEAgLTQwMzIsNyArNDEwMCw3IEBAIHZlY3RfZXN0aW1h dGVfbWluX3Byb2ZpdGFibGVfaXRlcnMgKGxvb3BfdmVjX2luZm8gbG9vcF92aW5mbywKIAog ICBpZiAodmVjX291dHNpZGVfY29zdCA8PSAwKQogICAgIG1pbl9wcm9maXRhYmxlX2VzdGlt YXRlID0gMDsKLSAgZWxzZSBpZiAoTE9PUF9WSU5GT19GVUxMWV9NQVNLRURfUCAobG9vcF92 aW5mbykpCisgIGVsc2UgaWYgKExPT1BfVklORk9fVVNJTkdfUEFSVElBTF9WRUNUT1JTX1Ag KGxvb3BfdmluZm8pKQogICAgIHsKICAgICAgIC8qIFRoaXMgaXMgYSByZXBlYXQgb2YgdGhl IGNvZGUgYWJvdmUsIGJ1dCB3aXRoICsgU09DIHJhdGhlcgogCSB0aGFuIC0gU09DLiAgKi8K QEAgLTQwNDQsNyArNDExMiw3IEBAIHZlY3RfZXN0aW1hdGVfbWluX3Byb2ZpdGFibGVfaXRl cnMgKGxvb3BfdmVjX2luZm8gbG9vcF92aW5mbywKICAgICAgIGlmIChvdXRzaWRlX292ZXJo ZWFkID4gMCkKIAltaW5fdmVjX25pdGVycyA9IG91dHNpZGVfb3ZlcmhlYWQgLyBzYXZpbmdf cGVyX3ZpdGVyICsgMTsKIAotICAgICAgaWYgKExPT1BfVklORk9fRlVMTFlfTUFTS0VEX1Ag KGxvb3BfdmluZm8pKQorICAgICAgaWYgKExPT1BfVklORk9fVVNJTkdfUEFSVElBTF9WRUNU T1JTX1AgKGxvb3BfdmluZm8pKQogCXsKIAkgIGludCB0aHJlc2hvbGQgPSAodmVjX2luc2lk ZV9jb3N0ICogbWluX3ZlY19uaXRlcnMKIAkJCSAgICsgdmVjX291dHNpZGVfY29zdApkaWZm IC0tZ2l0IGEvZ2NjL3RyZWUtdmVjdC1zdG10cy5jIGIvZ2NjL3RyZWUtdmVjdC1zdG10cy5j CmluZGV4IDMxYWY0NmFlMTljLi44NTUwYTI1MmY0NCAxMDA2NDQKLS0tIGEvZ2NjL3RyZWUt dmVjdC1zdG10cy5jCisrKyBiL2djYy90cmVlLXZlY3Qtc3RtdHMuYwpAQCAtMTIwOTAsNyAr MTIwOTAsMTAgQEAgdmVjdF9nZXRfdmVjdG9yX3R5cGVzX2Zvcl9zdG10ICh2ZWNfaW5mbyAq dmluZm8sIHN0bXRfdmVjX2luZm8gc3RtdF9pbmZvLAogICAgbWluX29mX3N0YXJ0X2FuZF9l bmQgPSBtaW4gKFNUQVJUX0lOREVYLCBFTkRfSU5ERVgpOwogICAgbGVmdF9sZW4gPSBFTkRf SU5ERVggLSBtaW5fb2Zfc3RhcnRfYW5kX2VuZDsKICAgIHJocyA9IG1pbiAobGVmdF9sZW4s IExFTl9MSU1JVCk7Ci0gICBMRU4gPSByaHM7ICAqLworICAgTEVOID0gcmhzOworCisgICBO b3RlIHRoYXQgcGxlYXNlIGNoZWNrIGNvc3QgbW9kZWxpbmcgd2hldGhlciBuZWVkZWQgdG8g YmUgdXBkYXRlZCBpbgorICAgZnVuY3Rpb24gdmVjdF9lc3RpbWF0ZV9taW5fcHJvZml0YWJs ZV9pdGVycyBpZiBhbnkgY2hhbmdlcy4gICovCiAKIGdpbXBsZV9zZXEKIHZlY3RfZ2VuX2xl biAodHJlZSBsZW4sIHRyZWUgc3RhcnRfaW5kZXgsIHRyZWUgZW5kX2luZGV4LCB0cmVlIGxl bl9saW1pdCkK --------------54BB1088465C7DA28FD4FC67--