From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 888 invoked by alias); 11 Oct 2004 22:05:17 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Received: (qmail 874 invoked from network); 11 Oct 2004 22:05:16 -0000 Received: from unknown (HELO mtagate1.de.ibm.com) (195.212.29.150) by sourceware.org with SMTP; 11 Oct 2004 22:05:16 -0000 Received: from d12nrmr1507.megacenter.de.ibm.com (d12nrmr1507.megacenter.de.ibm.com [9.149.167.1]) by mtagate1.de.ibm.com (8.12.10/8.12.10) with ESMTP id i9BM5DfQ147154; Mon, 11 Oct 2004 22:05:13 GMT Received: from d12ml102.megacenter.de.ibm.com (d12av02.megacenter.de.ibm.com [9.149.165.228]) by d12nrmr1507.megacenter.de.ibm.com (8.12.10/NCO/VER6.6) with ESMTP id i9BM5CZf218876; Tue, 12 Oct 2004 00:05:12 +0200 In-Reply-To: <415A7DC5.2000303@gnu.org> Subject: [patch] vectorizer: fix handling of non VECTOR_MODE_P vectypes To: gcc-patches@gcc.gnu.org Cc: mark@codesourcery.com, Richard Henderson Message-ID: From: Dorit Naishlos Date: Mon, 11 Oct 2004 22:48:00 -0000 MIME-Version: 1.0 Content-type: multipart/mixed; Boundary="0__=4DBBE5B9DFD686AB8f9e8a93df938690918c4DBBE5B9DFD686AB" Content-Disposition: inline X-SW-Source: 2004-10/txt/msg00954.txt.bz2 --0__=4DBBE5B9DFD686AB8f9e8a93df938690918c4DBBE5B9DFD686AB Content-type: text/plain; charset=US-ASCII Content-length: 4407 > > so it should return a V2SI vectype, which is not supported by the target > > and therefore should have a BLKmode. no? > > Nope. An integer mode is returned if we have one that fits. It > makes the routines in tree-complex.c happy. In this case we also need to fix the computation of the vectorization factor - currently it is set to GET_MODE_NUNITS, which is correct only if the mode is VECTOR_MODE_P. This came up on ppc-darwin compiling SPEC's crafty - build_vector_type returned TImode for a 'long long' type, and the vectorization factor was set to 1 instead of 2. Crafty failed as a result. (Ideally build_vector_type would have returned BLKmode rather than TImode; see machmode.def: "FIXME TI shouldn't be generically available either. *". I didn't fail vectorization in this case, although this type is not really supported and the vectorization will be undone later on). Bootstrapped and tested on ppc-darwin. ok for mainline? thanks, dorit * tree-vectorizer.c (get_vectype_for_scalar_type): Added debug printouts. Added checks under ENABLE_CHECKING to verify the vectorizer's assumptions on the vectype returned by build_vector_type. Check if TImode. (vect_transform_loop): Added gcc_assert under ENABLE_CHECKING. (vect_analyze_operations): Don't use GET_MODE_NUNITS to determine the vectorization factor. Make sure the vectorization factor > 1. Add gcc_assert under ENABLE_CHECKING. (vect_get_vec_def_for_operand): Remove redundant variables. (See attached file: vectfix2) |---------+----------------------------> | | Paolo Bonzini | | | | | | | | | 29/09/2004 11:17 | |---------+----------------------------> >----------------------------------------------------------------------------------------------------------------------------| | | | To: Paolo Bonzini , Richard Henderson , Dorit Naishlos/Haifa/IBM@IBMIL | | cc: Chao-ying Fu , gcc-patches@gcc.gnu.org, "Stephens, Nigel" , "Thekkath,| | Radhika" , Richard Sandiford , "Uhler, Mike" | | , Jim Wilson | | Subject: Re: [patch] extend.texi MIPS PS/3D Support | >----------------------------------------------------------------------------------------------------------------------------| > Yes, it should. Generic vectors should not be created by the vectorizer > (yet). Ah, I thought that the vectorizer created its vector types with a separate routine, but that has been fixed a while ago. The attached patch should help. It was bootstrapped and passes the vectorizer testsuite. Full regtest on i686-pc-linux-gnu is in progress. Ok for mainline? Paolo 2004-09-29 Paolo Bonzini * tree-vectorizer.c (vectorizable_operation): Only look at the optab in the case of vector modes; otherwise, bail out. Index: tree-vectorizer.c =================================================================== RCS file: /cvs/gcc/gcc/gcc/tree-vectorizer.c,v retrieving revision 2.12 diff -u -r2.12 tree-vectorizer.c --- tree-vectorizer.c 25 Sep 2004 14:48:03 -0000 2.12 +++ tree-vectorizer.c 29 Sep 2004 07:31:24 -0000 @@ -1408,6 +1408,17 @@ return false; } vec_mode = TYPE_MODE (vectype); + if (GET_MODE_CLASS (vec_mode) != MODE_VECTOR_INT + && GET_MODE_CLASS (vec_mode) != MODE_VECTOR_FLOAT) + { + /* TODO: tree-complex.c sometimes can parallelize operations + on generic vectors. We can vectorize the loop in that case, + but then we should re-run the lowering pass. */ + if (vect_debug_details (NULL)) + fprintf (dump_file, "vector mode not supported by target."); + return false; + } + if (optab->handlers[(int) vec_mode].insn_code == CODE_FOR_nothing) { if (vect_debug_details (NULL)) --0__=4DBBE5B9DFD686AB8f9e8a93df938690918c4DBBE5B9DFD686AB Content-type: application/octet-stream; name="vectfix2" Content-Disposition: attachment; filename="vectfix2" Content-transfer-encoding: base64 Content-length: 9549 SW5kZXg6IHRyZWUtdmVjdG9yaXplci5jCj09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KUkNTIGZpbGU6IC9jdnMvZ2NjL2djYy9nY2MvdHJlZS12ZWN0b3JpemVy LmMsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDIuMTQKZGlmZiAtYyAtMyAtcCAt cjIuMTQgdHJlZS12ZWN0b3JpemVyLmMKKioqIHRyZWUtdmVjdG9yaXplci5j CTEgT2N0IDIwMDQgMDk6NTk6MDAgLTAwMDAJMi4xNAotLS0gdHJlZS12ZWN0 b3JpemVyLmMJMTEgT2N0IDIwMDQgMTc6NDk6MzUgLTAwMDAKKioqKioqKioq KioqKioqIHN0YXRpYyB0cmVlCioqKiA4MzYsODQxICoqKioKLS0tIDgzNiw4 NDIgLS0tLQogIGdldF92ZWN0eXBlX2Zvcl9zY2FsYXJfdHlwZSAodHJlZSBz Y2FsYXJfdHlwZSkKICB7CiAgICBlbnVtIG1hY2hpbmVfbW9kZSBpbm5lcl9t b2RlID0gVFlQRV9NT0RFIChzY2FsYXJfdHlwZSk7CisgICBlbnVtIG1hY2hp bmVfbW9kZSB2ZWNfbW9kZTsKICAgIGludCBuYnl0ZXMgPSBHRVRfTU9ERV9T SVpFIChpbm5lcl9tb2RlKTsKICAgIGludCBudW5pdHM7CiAgICB0cmVlIHZl Y3R5cGU7CioqKioqKioqKioqKioqKiBnZXRfdmVjdHlwZV9mb3Jfc2NhbGFy X3R5cGUgKHRyZWUgc2NhbGFyCioqKiA4NDgsODU1ICoqKioKICAgIG51bml0 cyA9IFVOSVRTX1BFUl9TSU1EX1dPUkQgLyBuYnl0ZXM7CiAgCiAgICB2ZWN0 eXBlID0gYnVpbGRfdmVjdG9yX3R5cGUgKHNjYWxhcl90eXBlLCBudW5pdHMp OwohICAgaWYgKFRZUEVfTU9ERSAodmVjdHlwZSkgPT0gQkxLbW9kZSkKICAg ICAgcmV0dXJuIE5VTExfVFJFRTsKICAgIHJldHVybiB2ZWN0eXBlOwogIH0K ICAKLS0tIDg0OSw5MTYgLS0tLQogICAgbnVuaXRzID0gVU5JVFNfUEVSX1NJ TURfV09SRCAvIG5ieXRlczsKICAKICAgIHZlY3R5cGUgPSBidWlsZF92ZWN0 b3JfdHlwZSAoc2NhbGFyX3R5cGUsIG51bml0cyk7CiEgICBpZiAodmVjdF9k ZWJ1Z19kZXRhaWxzIChOVUxMKSkKISAgICAgewohICAgICAgIGZwcmludGYg KGR1bXBfZmlsZSwgImdldCB2ZWN0eXBlIHdpdGggJWQgdW5pdHMgb2YgdHlw ZSAiLCBudW5pdHMpOwohICAgICAgIHByaW50X2dlbmVyaWNfZXhwciAoZHVt cF9maWxlLCBzY2FsYXJfdHlwZSwgVERGX1NMSU0pOwohICAgICB9CiEgCiEg ICBpZiAoIXZlY3R5cGUpCiAgICAgIHJldHVybiBOVUxMX1RSRUU7CisgCisg ICBpZiAodmVjdF9kZWJ1Z19kZXRhaWxzIChOVUxMKSkKKyAgICAgeworICAg ICAgIGZwcmludGYgKGR1bXBfZmlsZSwgInZlY3R5cGU6ICIpOworICAgICAg IHByaW50X2dlbmVyaWNfZXhwciAoZHVtcF9maWxlLCB2ZWN0eXBlLCBUREZf U0xJTSk7CisgICAgIH0KKyAKKyAgIHZlY19tb2RlID0gVFlQRV9NT0RFICh2 ZWN0eXBlKTsKKyAKKyAgIC8qIElzIHR5cGUgc3VwcG9ydGVkIGJ5IHRhcmdl dD86ICAqLworICAgaWYgKHZlY19tb2RlID09IEJMS21vZGUpCisgICAgIHsK KyAgICAgICBpZiAodmVjdF9kZWJ1Z19kZXRhaWxzIChOVUxMKSkKKyAgICAg ICAgIGZwcmludGYgKGR1bXBfZmlsZSwgInZlY3R5cGUgbm90IHN1cHBvcnRl ZCBieSB0YXJnZXQuIik7CisgICAgICAgcmV0dXJuIE5VTExfVFJFRTsKKyAg ICAgfQorIAorICAgaWYgKHZlY19tb2RlID09IFRJbW9kZSkKKyAgICAgewor ICAgICAgIC8qIFNlZSBjb21tZW50IGluIG1hY2htb2RlLmRlZjoKKyAgICAg ICAgICAiRklYTUUgVEkgc2hvdWxkbid0IGJlIGdlbmVyaWNhbGx5IGF2YWls YWJsZSBlaXRoZXIuIgorICAgICAgICAgIFRoZSB2ZWN0b3JpemVyIHdpbGwg cmVwb3J0IHRoYXQgaXQgc3VjY2Vzc2Z1bGx5IHZlY3Rvcml6ZWQsCisgICAg ICAgICAgYnV0IHRoaXMgd2lsbCBhY3R1YWxseSBiZSBsb3dlcmVkIGR1cmlu ZyBSVEwgZXhwYW5kLiAqLworICAgICAgIGlmICh2ZWN0X2RlYnVnX2RldGFp bHMgKE5VTEwpKQorICAgICAgICAgZnByaW50ZiAoZHVtcF9maWxlLCAiVElt b2RlOyBub3QgcmVhbGx5IHN1cHBvcnRlZCBieSB0YXJnZXQuIik7CisgICAg ICAgLyogcmV0dXJuIE5VTExfVFJFRTsgKi8gLyogQ0hFQ0tNRSAqLworICAg ICB9CisgCisgI2lmZGVmIEVOQUJMRV9DSEVDS0lORworICAgaWYgKEdFVF9N T0RFX1NJWkUgKHZlY19tb2RlKSAhPSBVTklUU19QRVJfU0lNRF9XT1JEKQor ICAgICB7CisgICAgICAgaWYgKHZlY3RfZGVidWdfZGV0YWlscyAoTlVMTCkp CisgICAgICAgICBmcHJpbnRmIChkdW1wX2ZpbGUsICJ1bmV4cGVjdGVkIHZl Y3R5cGUgc2l6ZS4iKTsKKyAgICAgICByZXR1cm4gTlVMTF9UUkVFOworICAg ICB9CisgCisgICBpZiAoVkVDVE9SX01PREVfUCAodmVjX21vZGUpKQorICAg ICB7CisgICAgICAgaWYgKG5ieXRlcyAqIEdFVF9NT0RFX05VTklUUyAodmVj X21vZGUpICE9IFVOSVRTX1BFUl9TSU1EX1dPUkQpCisgICAgICAgICB7Cisg ICAgICAgICAgIGlmICh2ZWN0X2RlYnVnX2RldGFpbHMgKE5VTEwpKQorICAg ICAgICAgICAgIGZwcmludGYgKGR1bXBfZmlsZSwgInVuZXhwZWN0ZWQgdmVj dHlwZSBudW5pdHM6IG51bml0cyA9ICVkIiwKKyAgICAgICAgICAgICAgICAg ICAgICBHRVRfTU9ERV9OVU5JVFMgKHZlY19tb2RlKSk7CisgICAgICAgICAg IHJldHVybiBOVUxMX1RSRUU7CisgICAgICAgICB9CisgICAgICAgZWxzZQor ICAgICAgICAgaWYgKHZlY3RfZGVidWdfZGV0YWlscyAoTlVMTCkpCisgICAg ICAgICAgIGZwcmludGYgKGR1bXBfZmlsZSwgInN1cHBvcnRhYmxlIHZlY3Rv ciB0eXBlLiIpOworICAgICB9CisgICBlbHNlCisgICAgIGlmICh2ZWN0X2Rl YnVnX2RldGFpbHMgKE5VTEwpKQorICAgICAgIGZwcmludGYgKGR1bXBfZmls ZSwgInR5cGUgbm90IHJlYWxseSBhIHZlY3Rvci4iKTsKKyAjZW5kaWYKKyAK ICAgIHJldHVybiB2ZWN0eXBlOwogIH0KICAKKioqKioqKioqKioqKioqIHZl Y3RfZ2V0X3ZlY19kZWZfZm9yX29wZXJhbmQgKHRyZWUgb3AsIHQKKioqIDEx NTcsMTE2NyAqKioqCiAgICAgICAgLyogQ3JlYXRlICd2ZWN0X2NzdF8gPSB7 Y3N0LGNzdCwuLi4sY3N0fScgICovCiAgCiAgICAgICAgdHJlZSB2ZWNfY3N0 OwotICAgICAgIHN0bXRfdmVjX2luZm8gc3RtdF92aW5mbyA9IHZpbmZvX2Zv cl9zdG10IChzdG10KTsKLSAgICAgICB0cmVlIHZlY3R5cGUgPSBTVE1UX1ZJ TkZPX1ZFQ1RZUEUgKHN0bXRfdmluZm8pOwotICAgICAgIGludCBudW5pdHMg PSBHRVRfTU9ERV9OVU5JVFMgKFRZUEVfTU9ERSAodmVjdHlwZSkpOwotICAg ICAgIHRyZWUgdCA9IE5VTExfVFJFRTsKLSAgICAgICBpbnQgaTsKICAKICAg ICAgICAvKiBCdWlsZCBhIHRyZWUgd2l0aCB2ZWN0b3IgZWxlbWVudHMuICAq LwogICAgICAgIGlmICh2ZWN0X2RlYnVnX2RldGFpbHMgKE5VTEwpKQotLS0g MTIxOCwxMjIzIC0tLS0KKioqKioqKioqKioqKioqIHZlY3RfdHJhbnNmb3Jt X2xvb3AgKGxvb3BfdmVjX2luZm8gbG9vcF8KKioqIDE5MDcsMTkxMiAqKioq Ci0tLSAxOTYzLDE5NjkgLS0tLQogIAkgIGJvb2wgaXNfc3RvcmU7CiAgI2lm ZGVmIEVOQUJMRV9DSEVDS0lORwogIAkgIHRyZWUgdmVjdHlwZTsKKyAJICBl bnVtIG1hY2hpbmVfbW9kZSB2ZWNtb2RlOwogICNlbmRpZgogIAogIAkgIGlm ICh2ZWN0X2RlYnVnX2RldGFpbHMgKE5VTEwpKQoqKioqKioqKioqKioqKiog dmVjdF90cmFuc2Zvcm1fbG9vcCAobG9vcF92ZWNfaW5mbyBsb29wXwoqKiog MTkyNSwxOTMyICoqKioKICAJICAvKiBGT1JOT1c6IFZlcmlmeSB0aGF0IGFs bCBzdG10cyBvcGVyYXRlIG9uIHRoZSBzYW1lIG51bWJlciBvZgogIAkgICAg ICAgICAgICAgdW5pdHMgYW5kIG5vIGlubmVyIHVucm9sbGluZyBpcyBuZWNl c3NhcnkuICAqLwogIAkgIHZlY3R5cGUgPSBTVE1UX1ZJTkZPX1ZFQ1RZUEUg KHN0bXRfaW5mbyk7CiEgCSAgZ2NjX2Fzc2VydCAoR0VUX01PREVfTlVOSVRT IChUWVBFX01PREUgKHZlY3R5cGUpKQohIAkJICAgICAgPT0gdmVjdG9yaXph dGlvbl9mYWN0b3IpOwogICNlbmRpZgogIAkgIC8qIC0tLS0tLS0tIHZlY3Rv cml6ZSBzdGF0ZW1lbnQgLS0tLS0tLS0tLS0tICovCiAgCSAgaWYgKHZlY3Rf ZGVidWdfZGV0YWlscyAoTlVMTCkpCi0tLSAxOTgyLDE5OTEgLS0tLQogIAkg IC8qIEZPUk5PVzogVmVyaWZ5IHRoYXQgYWxsIHN0bXRzIG9wZXJhdGUgb24g dGhlIHNhbWUgbnVtYmVyIG9mCiAgCSAgICAgICAgICAgICB1bml0cyBhbmQg bm8gaW5uZXIgdW5yb2xsaW5nIGlzIG5lY2Vzc2FyeS4gICovCiAgCSAgdmVj dHlwZSA9IFNUTVRfVklORk9fVkVDVFlQRSAoc3RtdF9pbmZvKTsKISAJICB2 ZWNtb2RlID0gVFlQRV9NT0RFICh2ZWN0eXBlKTsKISAJICBnY2NfYXNzZXJ0 IChHRVRfTU9ERV9TSVpFICh2ZWNtb2RlKSA9PSBVTklUU19QRVJfU0lNRF9X T1JEKTsKISAJICBnY2NfYXNzZXJ0IChHRVRfTU9ERV9OVU5JVFMgKHZlY21v ZGUpID09IHZlY3Rvcml6YXRpb25fZmFjdG9yCiEgCQkgICAgICB8fCAhVkVD VE9SX01PREVfUCAodmVjbW9kZSkpOwogICNlbmRpZgogIAkgIC8qIC0tLS0t LS0tIHZlY3Rvcml6ZSBzdGF0ZW1lbnQgLS0tLS0tLS0tLS0tICovCiAgCSAg aWYgKHZlY3RfZGVidWdfZGV0YWlscyAoTlVMTCkpCioqKioqKioqKioqKioq KiB2ZWN0X2FuYWx5emVfb3BlcmF0aW9ucyAobG9vcF92ZWNfaW5mbyBsCioq KiAyMDQ0LDIwNTAgKioqKgogICAgaW50IHZlY3Rvcml6YXRpb25fZmFjdG9y ID0gMDsKICAgIGludCBpOwogICAgYm9vbCBvazsKLSAgIHRyZWUgc2NhbGFy X3R5cGU7CiAgCiAgICBpZiAodmVjdF9kZWJ1Z19kZXRhaWxzIChOVUxMKSkK ICAgICAgZnByaW50ZiAoZHVtcF9maWxlLCAiXG48PHZlY3RfYW5hbHl6ZV9v cGVyYXRpb25zPj5cbiIpOwotLS0gMjEwMywyMTA4IC0tLS0KKioqKioqKioq KioqKioqIHZlY3RfYW5hbHl6ZV9vcGVyYXRpb25zIChsb29wX3ZlY19pbmZv IGwKKioqIDIwNTksMjA2NCAqKioqCi0tLSAyMTE3LDIxMjQgLS0tLQogIAkg IGludCBudW5pdHM7CiAgCSAgc3RtdF92ZWNfaW5mbyBzdG10X2luZm8gPSB2 aW5mb19mb3Jfc3RtdCAoc3RtdCk7CiAgCSAgdHJlZSB2ZWN0eXBlOworIAkg IHRyZWUgc2NhbGFyX3R5cGU7CisgCSAgaW50IHNjYWxhcl9zaXplOwogIAog IAkgIGlmICh2ZWN0X2RlYnVnX2RldGFpbHMgKE5VTEwpKQogIAkgICAgewoq KioqKioqKioqKioqKiogdmVjdF9hbmFseXplX29wZXJhdGlvbnMgKGxvb3Bf dmVjX2luZm8gbAoqKiogMjEzOCwyMTQ2ICoqKioKICAJICAgICAgcmV0dXJu IGZhbHNlOwogIAkgICAgfQogIAohIAkgIG51bml0cyA9IEdFVF9NT0RFX05V TklUUyAoVFlQRV9NT0RFICh2ZWN0eXBlKSk7CiEgCSAgaWYgKHZlY3RfZGVi dWdfZGV0YWlscyAoTlVMTCkpCiEgCSAgICBmcHJpbnRmIChkdW1wX2ZpbGUs ICJudW5pdHMgPSAlZCIsIG51bml0cyk7CiAgCiAgCSAgaWYgKHZlY3Rvcml6 YXRpb25fZmFjdG9yKQogIAkgICAgewotLS0gMjE5OCwyMjE2IC0tLS0KICAJ ICAgICAgcmV0dXJuIGZhbHNlOwogIAkgICAgfQogIAohICAgICAgICAgICAv KiBOb3RlIHRoYXQ6CiEgICAgICAgICAgICAgICgqKSBHRVRfTU9ERV9OVU5J VFMgKFRZUEVfTU9ERSAodmVjdHlwZSkpID09IHZmCiEgICAgICAgICAgICAg IGlzIG5vdCBuZWNlc3NhcmlseSB0cnVlISBJdCBvbmx5IGhvbGRzIGlmIHRo ZSBtb2RlIG9mIHZlY3R5cGUKISAJICAgICAgIGlzIFZFQ1RPUl9NT0RFX1Au ICBFLmcsIFY0UUkgbWF5IGJlIHJlcHJlc2VudGVkIHdpdGggU0k7CiEgICAg ICAgICAgICAgIGluIHRoaXMgY2FzZSwgdGhlIExIUyBpcyAxLCBidXQgdGhl IHZlY3Rvcml6YXRpb24gZmFjdG9yICh2ZikKISAgICAgICAgICAgICAgc2hv dWxkIGJlIDQuCiEgCiEgICAgICAgICAgICAgIFdlIGRvbid0IHJlcXVpcmUg dGhhdCBtb2RlIGJlIGFsd2F5cyBWRUNUT1JfVFlQRV9QIGJlY2F1c2Ugd2Ug CiEgCSAgICAgICBjYW4gdmVjdG9yaXplIHN1Y2ggZGF0YXR5cGVzIGluIHNv bWUgY2FzZXMgKGZvciBleGFtcGxlLCBpZiB0aGVyZSAKISAJICAgICAgIGFy ZSBvbmx5IGRhdGEgbW92ZW1lbnRzKS4gICovCiEgCiEgCSAgc2NhbGFyX3Np emUgPSBHRVRfTU9ERV9TSVpFIChUWVBFX01PREUgKHNjYWxhcl90eXBlKSk7 CiEgCSAgbnVuaXRzID0gVU5JVFNfUEVSX1NJTURfV09SRCAvIHNjYWxhcl9z aXplOwogIAogIAkgIGlmICh2ZWN0b3JpemF0aW9uX2ZhY3RvcikKICAJICAg IHsKKioqKioqKioqKioqKioqIHZlY3RfYW5hbHl6ZV9vcGVyYXRpb25zIChs b29wX3ZlY19pbmZvIGwKKioqIDIxNTQsMjE2NSAqKioqCiAgCQl9CiAgCSAg ICB9CiAgCSAgZWxzZQohIAkgICAgdmVjdG9yaXphdGlvbl9mYWN0b3IgPSBu dW5pdHM7CiAgCX0KICAgICAgfQogIAogICAgLyogVE9ETzogQW5hbHl6ZSBj b3N0LiBEZWNpZGUgaWYgd29ydGggd2hpbGUgdG8gdmVjdG9yaXplLiAgKi8K ISAgIGlmICghdmVjdG9yaXphdGlvbl9mYWN0b3IpCiAgICAgIHsKICAgICAg ICBpZiAodmVjdF9kZWJ1Z19zdGF0cyAobG9vcCkgfHwgdmVjdF9kZWJ1Z19k ZXRhaWxzIChsb29wKSkKICAgICAgICAgIGZwcmludGYgKGR1bXBfZmlsZSwg Im5vdCB2ZWN0b3JpemVkOiB1bnN1cHBvcnRlZCBkYXRhLXR5cGUiKTsKLS0t IDIyMjQsMjI0MCAtLS0tCiAgCQl9CiAgCSAgICB9CiAgCSAgZWxzZQohICAg ICAgICAgICAgIHZlY3Rvcml6YXRpb25fZmFjdG9yID0gbnVuaXRzOwohIAoh ICNpZmRlZiBFTkFCTEVfQ0hFQ0tJTkcKISAgICAgICAgICAgZ2NjX2Fzc2Vy dCAoc2NhbGFyX3NpemUgKiB2ZWN0b3JpemF0aW9uX2ZhY3RvciA9PSBVTklU U19QRVJfU0lNRF9XT1JEKTsKISAjZW5kaWYKICAJfQogICAgICB9CiAgCiAg ICAvKiBUT0RPOiBBbmFseXplIGNvc3QuIERlY2lkZSBpZiB3b3J0aCB3aGls ZSB0byB2ZWN0b3JpemUuICAqLwohIAohICAgaWYgKHZlY3Rvcml6YXRpb25f ZmFjdG9yIDw9IDEpCiAgICAgIHsKICAgICAgICBpZiAodmVjdF9kZWJ1Z19z dGF0cyAobG9vcCkgfHwgdmVjdF9kZWJ1Z19kZXRhaWxzIChsb29wKSkKICAg ICAgICAgIGZwcmludGYgKGR1bXBfZmlsZSwgIm5vdCB2ZWN0b3JpemVkOiB1 bnN1cHBvcnRlZCBkYXRhLXR5cGUiKTsK --0__=4DBBE5B9DFD686AB8f9e8a93df938690918c4DBBE5B9DFD686AB--