From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 103872 invoked by alias); 9 Jul 2019 21:44:34 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Received: (qmail 103863 invoked by uid 89); 9 Jul 2019 21:44:34 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-0.7 required=5.0 tests=BAYES_00,FREEMAIL_ENVFROM_END_DIGIT,FREEMAIL_FROM,HK_RANDOM_ENVFROM,HK_RANDOM_FROM,RCVD_IN_DNSWL_NONE,SPF_PASS autolearn=no version=3.3.1 spammy= X-HELO: mail-wm1-f49.google.com Received: from mail-wm1-f49.google.com (HELO mail-wm1-f49.google.com) (209.85.128.49) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Tue, 09 Jul 2019 21:44:32 +0000 Received: by mail-wm1-f49.google.com with SMTP id s3so257462wms.2 for ; Tue, 09 Jul 2019 14:44:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:from:date:message-id:subject:to:cc; bh=FZsmmoCJvoVWFvDp6WXNwJL+qMmOU+wIRDxg2hwQ5Kg=; b=mavVH7JwnMsEvngLD/rKdcjX4uHivJzzs8aCzyl9ua98svNR43RYCESWZQ+mgBd+CA wpASbdUzX1DVvjtF/+4Z8TioJjIuboSNY4WH7sjFU0OrJxwe4c1LqU4apPWTAhJA0Oia 0sfRHt1vq1Z4S5J4ibwau0JeufUJ1IUbYqMc5qVqgA3nGewxLoeGOJtRg2LNoUqxfeMm FcFxUIsu6C8zo0G3f94wmmBYho14QTOjki/mJswBl9tQ4QZCimHflXVFn421O8Jap+XQ VaiRmqNTEm582GZ2s+h3RrrjkMF0foV9tBIJpN86qwuGyyWk7wUoOoSnSUt6IgaarqkG ZPww== MIME-Version: 1.0 From: Sunil Pandey Date: Tue, 09 Jul 2019 22:03:00 -0000 Message-ID: Subject: [PATCH] i386: Add AVX512 unaligned intrinsics To: gcc-patches@gcc.gnu.org Cc: hjl.tools@gmail.com, ubizjak@gmail.com Content-Type: multipart/mixed; boundary="0000000000002dbe61058d4677d0" X-SW-Source: 2019-07/txt/msg00744.txt.bz2 --0000000000002dbe61058d4677d0 Content-Type: text/plain; charset="UTF-8" Content-length: 1130 __m512i _mm512_loadu_epi32( void * sa); __m512i _mm512_loadu_epi64( void * sa); void _mm512_storeu_epi32(void * d, __m512i a); void _mm256_storeu_epi32(void * d, __m256i a); void _mm_storeu_epi32(void * d, __m128i a); void _mm512_storeu_epi64(void * d, __m512i a); void _mm256_storeu_epi64(void * d, __m256i a); void _mm_storeu_epi64(void * d, __m128i a); Tested on x86-64. OK for trunk? --Sunil Pandey gcc/ PR target/90980 * config/i386/avx512fintrin.h (__v16si_u): New data type (__v8di_u): Likewise (_mm512_loadu_epi32): New. (_mm512_loadu_epi64): Likewise. (_mm512_storeu_epi32): Likewise. (_mm512_storeu_epi64): Likewise. * config/i386/avx512vlintrin.h (_mm_storeu_epi32): New. (_mm256_storeu_epi32): Likewise. (_mm_storeu_epi64): Likewise. (_mm256_storeu_epi64): Likewise. gcc/testsuite/ PR target/90980 * gcc.target/i386/avx512f-vmovdqu32-3.c: New test. * gcc.target/i386/avx512f-vmovdqu64-3.c: Likewise. * gcc.target/i386/pr90980-1.c: Likewise. * gcc.target/i386/pr90980-2.c: Likewise. --0000000000002dbe61058d4677d0 Content-Type: application/octet-stream; name="0001-i386-Add-AVX512-unaligned-intrinsics.patch" Content-Disposition: attachment; filename="0001-i386-Add-AVX512-unaligned-intrinsics.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_jxwc951c0 Content-length: 10566 RnJvbSA2YjgxOTMzODU3ZDQxNTAxZWZkZTU2YmVmMTZjNDBmZWEzMjAxODk5 IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBTdW5pbCBLIFBhbmRl eSA8c2twZ2twMUBnbWFpbC5jb20+CkRhdGU6IE1vbiwgOCBKdWwgMjAxOSAx MjozNjowMiAtMDcwMApTdWJqZWN0OiBbUEFUQ0hdIGkzODY6IEFkZCBBVlg1 MTIgdW5hbGlnbmVkIGludHJpbnNpY3MKCl9fbTUxMmkgX21tNTEyX2xvYWR1 X2VwaTMyKCB2b2lkICogc2EpOwpfX201MTJpIF9tbTUxMl9sb2FkdV9lcGk2 NCggdm9pZCAqIHNhKTsKdm9pZCBfbW01MTJfc3RvcmV1X2VwaTMyKHZvaWQg KiBkLCBfX201MTJpIGEpOwp2b2lkIF9tbTI1Nl9zdG9yZXVfZXBpMzIodm9p ZCAqIGQsIF9fbTI1NmkgYSk7CnZvaWQgX21tX3N0b3JldV9lcGkzMih2b2lk ICogZCwgX19tMTI4aSBhKTsKdm9pZCBfbW01MTJfc3RvcmV1X2VwaTY0KHZv aWQgKiBkLCBfX201MTJpIGEpOwp2b2lkIF9tbTI1Nl9zdG9yZXVfZXBpNjQo dm9pZCAqIGQsIF9fbTI1NmkgYSk7CnZvaWQgX21tX3N0b3JldV9lcGk2NCh2 b2lkICogZCwgX19tMTI4aSBhKTsKClRlc3RlZCBvbiB4ODYtNjQuCgpnY2Mv CgogICAgICAgIFBSIHRhcmdldC85MDk4MAogICAgICAgICogY29uZmlnL2kz ODYvYXZ4NTEyZmludHJpbi5oIChfX3YxNnNpX3UpOiBOZXcgZGF0YSB0eXBl CiAgICAgICAgKF9fdjhkaV91KTogTGlrZXdpc2UKICAgICAgICAoX21tNTEy X2xvYWR1X2VwaTMyKTogTmV3LgogICAgICAgIChfbW01MTJfbG9hZHVfZXBp NjQpOiBMaWtld2lzZS4KICAgICAgICAoX21tNTEyX3N0b3JldV9lcGkzMik6 IExpa2V3aXNlLgogICAgICAgIChfbW01MTJfc3RvcmV1X2VwaTY0KTogTGlr ZXdpc2UuCiAgICAgICAgKiBjb25maWcvaTM4Ni9hdng1MTJ2bGludHJpbi5o IChfbW1fc3RvcmV1X2VwaTMyKTogTmV3LgogICAgICAgIChfbW0yNTZfc3Rv cmV1X2VwaTMyKTogTGlrZXdpc2UuCiAgICAgICAgKF9tbV9zdG9yZXVfZXBp NjQpOiBMaWtld2lzZS4KICAgICAgICAoX21tMjU2X3N0b3JldV9lcGk2NCk6 IExpa2V3aXNlLgoKZ2NjL3Rlc3RzdWl0ZS8KCiAgICAgICAgUFIgdGFyZ2V0 LzkwOTgwCiAgICAgICAgKiBnY2MudGFyZ2V0L2kzODYvYXZ4NTEyZi12bW92 ZHF1MzItMy5jOiBOZXcgdGVzdC4KICAgICAgICAqIGdjYy50YXJnZXQvaTM4 Ni9hdng1MTJmLXZtb3ZkcXU2NC0zLmM6IExpa2V3aXNlLgogICAgICAgICog Z2NjLnRhcmdldC9pMzg2L3ByOTA5ODAtMS5jOiBMaWtld2lzZS4KICAgICAg ICAqIGdjYy50YXJnZXQvaTM4Ni9wcjkwOTgwLTIuYzogTGlrZXdpc2UuCi0t LQogZ2NjL2NvbmZpZy9pMzg2L2F2eDUxMmZpbnRyaW4uaCAgICAgICAgICAg ICAgIHwgMzUgKysrKysrKysrKysrKysrKysrKwogZ2NjL2NvbmZpZy9pMzg2 L2F2eDUxMnZsaW50cmluLmggICAgICAgICAgICAgIHwgMjggKysrKysrKysr KysrKysrCiAuLi4vZ2NjLnRhcmdldC9pMzg2L2F2eDUxMmYtdm1vdmRxdTMy LTMuYyAgICAgfCAxNiArKysrKysrKysKIC4uLi9nY2MudGFyZ2V0L2kzODYv YXZ4NTEyZi12bW92ZHF1NjQtMy5jICAgICB8IDE2ICsrKysrKysrKwogZ2Nj L3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcHI5MDk4MC0xLmMgICAgIHwg MTcgKysrKysrKysrCiBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9w cjkwOTgwLTIuYyAgICAgfCAxNyArKysrKysrKysKIDYgZmlsZXMgY2hhbmdl ZCwgMTI5IGluc2VydGlvbnMoKykKIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2Mv dGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9hdng1MTJmLXZtb3ZkcXUzMi0z LmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2djYy50YXJn ZXQvaTM4Ni9hdng1MTJmLXZtb3ZkcXU2NC0zLmMKIGNyZWF0ZSBtb2RlIDEw MDY0NCBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9wcjkwOTgwLTEu YwogY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdl dC9pMzg2L3ByOTA5ODAtMi5jCgpkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9p Mzg2L2F2eDUxMmZpbnRyaW4uaCBiL2djYy9jb25maWcvaTM4Ni9hdng1MTJm aW50cmluLmgKaW5kZXggZTM1ZWVkYjkyNjguLjlhNGQ2NTdjMTA4IDEwMDY0 NAotLS0gYS9nY2MvY29uZmlnL2kzODYvYXZ4NTEyZmludHJpbi5oCisrKyBi L2djYy9jb25maWcvaTM4Ni9hdng1MTJmaW50cmluLmgKQEAgLTQ2LDYgKzQ2 LDEyIEBAIHR5cGVkZWYgdW5zaWduZWQgc2hvcnQgX192MzJodSBfX2F0dHJp YnV0ZV9fICgoX192ZWN0b3Jfc2l6ZV9fICg2NCkpKTsKIHR5cGVkZWYgY2hh ciBfX3Y2NHFpIF9fYXR0cmlidXRlX18gKChfX3ZlY3Rvcl9zaXplX18gKDY0 KSkpOwogdHlwZWRlZiB1bnNpZ25lZCBjaGFyIF9fdjY0cXUgX19hdHRyaWJ1 dGVfXyAoKF9fdmVjdG9yX3NpemVfXyAoNjQpKSk7CiAKKy8qIEludGVybmFs IGRhdGEgdHlwZXMgZm9yIGltcGxlbWVudGluZyB1bmFsaWduZWQgdmVyc2lv biBvZiBpbnRyaW5zaWNzLiAgKi8KK3R5cGVkZWYgaW50IF9fdjE2c2lfdSBf X2F0dHJpYnV0ZV9fICgoX192ZWN0b3Jfc2l6ZV9fICg2NCksCisJCQkJICAg ICAgX19hbGlnbmVkX18gKDEpKSk7Cit0eXBlZGVmIGxvbmcgbG9uZyBfX3Y4 ZGlfdSBfX2F0dHJpYnV0ZV9fICgoX192ZWN0b3Jfc2l6ZV9fICg2NCksCisJ CQkJCSAgIF9fYWxpZ25lZF9fICgxKSkpOworCiAvKiBUaGUgSW50ZWwgQVBJ IGlzIGZsZXhpYmxlIGVub3VnaCB0aGF0IHdlIG11c3QgYWxsb3cgYWxpYXNp bmcgd2l0aCBvdGhlcgogICAgdmVjdG9yIHR5cGVzLCBhbmQgdGhlaXIgc2Nh bGFyIGNvbXBvbmVudHMuICAqLwogdHlwZWRlZiBmbG9hdCBfX201MTIgX19h dHRyaWJ1dGVfXyAoKF9fdmVjdG9yX3NpemVfXyAoNjQpLCBfX21heV9hbGlh c19fKSk7CkBAIC00MDUsNiArNDExLDM1IEBAIF9tbTUxMl9tYXNrel9sb2Fk X3BkIChfX21tYXNrOCBfX1UsIHZvaWQgY29uc3QgKl9fUCkKIAkJCQkJCSAg IChfX21tYXNrOCkgX19VKTsKIH0KIAorZXh0ZXJuIF9faW5saW5lIF9fbTUx MmkKK19fYXR0cmlidXRlX18gKChfX2dudV9pbmxpbmVfXywgX19hbHdheXNf aW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKK19tbTUxMl9sb2FkdV9lcGkz MiAodm9pZCBjb25zdCAqX19QKQoreworICBfX3YxNnNpX3UgX19YID0gKihf X3YxNnNpX3UgKikgX19QOworICByZXR1cm4gKF9fbTUxMmkpIF9fWDsKK30K KworZXh0ZXJuIF9faW5saW5lIF9fbTUxMmkKK19fYXR0cmlidXRlX18gKChf X2dudV9pbmxpbmVfXywgX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lh bF9fKSkKK19tbTUxMl9sb2FkdV9lcGk2NCAodm9pZCBjb25zdCAqX19QKQor eworICByZXR1cm4gKihfX3Y4ZGlfdSAqKSBfX1A7Cit9CisKK2V4dGVybiBf X2lubGluZSB2b2lkCitfX2F0dHJpYnV0ZV9fICgoX19nbnVfaW5saW5lX18s IF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCitfbW01MTJf c3RvcmV1X2VwaTMyICh2b2lkICpfX1AsIF9fbTUxMmkgX19BKQoreworICAq KF9fdjE2c2lfdSAqKSBfX1AgPSAoX192MTZzaV91KSBfX0E7Cit9CisKK2V4 dGVybiBfX2lubGluZSB2b2lkCitfX2F0dHJpYnV0ZV9fICgoX19nbnVfaW5s aW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCitf bW01MTJfc3RvcmV1X2VwaTY0ICh2b2lkICpfX1AsIF9fbTUxMmkgX19BKQor eworICAqKF9fdjhkaV91ICopIF9fUCA9IChfX3Y4ZGlfdSkgX19BOworfQor CiBleHRlcm4gX19pbmxpbmUgdm9pZAogX19hdHRyaWJ1dGVfXyAoKF9fZ251 X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18p KQogX21tNTEyX3N0b3JlX3BkICh2b2lkICpfX1AsIF9fbTUxMmQgX19BKQpk aWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9pMzg2L2F2eDUxMnZsaW50cmluLmgg Yi9nY2MvY29uZmlnL2kzODYvYXZ4NTEydmxpbnRyaW4uaAppbmRleCAzZWFm ODE3Zjg5OC4uMDZiY2M1MGI2YjQgMTAwNjQ0Ci0tLSBhL2djYy9jb25maWcv aTM4Ni9hdng1MTJ2bGludHJpbi5oCisrKyBiL2djYy9jb25maWcvaTM4Ni9h dng1MTJ2bGludHJpbi5oCkBAIC01OTgsNiArNTk4LDM0IEBAIF9tbTI1Nl9z dG9yZV9lcGk2NCAodm9pZCAqX19QLCBfX20yNTZpIF9fQSkKICAgKihfX20y NTZpICopIF9fUCA9IF9fQTsKIH0KIAorZXh0ZXJuIF9faW5saW5lIHZvaWQK K19fYXR0cmlidXRlX18gKChfX2dudV9pbmxpbmVfXywgX19hbHdheXNfaW5s aW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKK19tbV9zdG9yZXVfZXBpMzIgKHZv aWQgKl9fUCwgX19tMTI4aSBfX0EpCit7CisgICooX19tMTI4aV91ICopIF9f UCA9IChfX20xMjhpX3UpIF9fQTsKK30KKworZXh0ZXJuIF9faW5saW5lIHZv aWQKK19fYXR0cmlidXRlX18gKChfX2dudV9pbmxpbmVfXywgX19hbHdheXNf aW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKK19tbTI1Nl9zdG9yZXVfZXBp MzIgKHZvaWQgKl9fUCwgX19tMjU2aSBfX0EpCit7CisgICooX19tMjU2aV91 ICopIF9fUCA9IChfX20yNTZpX3UpIF9fQTsKK30KKworZXh0ZXJuIF9faW5s aW5lIHZvaWQKK19fYXR0cmlidXRlX18gKChfX2dudV9pbmxpbmVfXywgX19h bHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKK19tbV9zdG9yZXVf ZXBpNjQgKHZvaWQgKl9fUCwgX19tMTI4aSBfX0EpCit7CisgICooX19tMTI4 aV91ICopIF9fUCA9IChfX20xMjhpX3UpIF9fQTsKK30KKworZXh0ZXJuIF9f aW5saW5lIHZvaWQKK19fYXR0cmlidXRlX18gKChfX2dudV9pbmxpbmVfXywg X19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKK19tbTI1Nl9z dG9yZXVfZXBpNjQgKHZvaWQgKl9fUCwgX19tMjU2aSBfX0EpCit7CisgICoo X19tMjU2aV91ICopIF9fUCA9IChfX20yNTZpX3UpIF9fQTsKK30KKwogZXh0 ZXJuIF9faW5saW5lIHZvaWQKIF9fYXR0cmlidXRlX18gKChfX2dudV9pbmxp bmVfXywgX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKIF9t bV9zdG9yZV9lcGk2NCAodm9pZCAqX19QLCBfX20xMjhpIF9fQSkKZGlmZiAt LWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2F2eDUxMmYt dm1vdmRxdTMyLTMuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2 L2F2eDUxMmYtdm1vdmRxdTMyLTMuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwMDAwMC4uOGYwN2I2ZTk4NmEKLS0tIC9kZXYvbnVsbAor KysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9hdng1MTJmLXZt b3ZkcXUzMi0zLmMKQEAgLTAsMCArMSwxNiBAQAorLyogeyBkZy1kbyBjb21w aWxlIH0gKi8KKy8qIHsgZGctb3B0aW9ucyAiLW1hcmNoPXNreWxha2UtYXZ4 NTEyIC1PMiIgfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVy LXRpbWVzICJ2bW92ZHF1MzJcWyBcXHRcXStcW15ce1xuXF0qXFwpXFteXG5c XSolem1tXFswLTlcXSsoPzpcbnxcWyBcXHRcXSsjKSIgMSB9IH0gKi8KKy8q IHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyAidm1vdmRxdTMy XFsgXFx0XF0rXFteXHtcblxdKiV6bW1cWzAtOVxdK1xbXlxuXF0qXFwpKD86 XG58XFsgXFx0XF0rIykiIDEgfSB9ICovCisKKyNpbmNsdWRlIDxpbW1pbnRy aW4uaD4KKworaW50ICphLCpiOwordm9sYXRpbGUgX19tNTEyaSB6ejsKKwor dm9pZCBleHRlcm4KK2F2eDUxMmZfdGVzdCAodm9pZCkKK3sKKyAgenogPSBf bW01MTJfbG9hZHVfZXBpMzIgKGEpOworICBfbW01MTJfc3RvcmV1X2VwaTMy IChiLCB6eik7Cit9CmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50 YXJnZXQvaTM4Ni9hdng1MTJmLXZtb3ZkcXU2NC0zLmMgYi9nY2MvdGVzdHN1 aXRlL2djYy50YXJnZXQvaTM4Ni9hdng1MTJmLXZtb3ZkcXU2NC0zLmMKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmMyODA1MTE2 ZWFlCi0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFy Z2V0L2kzODYvYXZ4NTEyZi12bW92ZHF1NjQtMy5jCkBAIC0wLDAgKzEsMTYg QEAKKy8qIHsgZGctZG8gY29tcGlsZSB9ICovCisvKiB7IGRnLW9wdGlvbnMg Ii1tYXJjaD1za3lsYWtlLWF2eDUxMiAtTzIiIH0gKi8KKy8qIHsgZGctZmlu YWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyAidm1vdmRxdTY0XFsgXFx0XF0r XFteXHtcblxdKlxcKVxbXlxuXF0qJXptbVxbMC05XF0rKD86XG58XFsgXFx0 XF0rIykiIDEgfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJs ZXItdGltZXMgInZtb3ZkcXU2NFxbIFxcdFxdK1xbXlx7XG5cXSolem1tXFsw LTlcXStcW15cblxdKlxcKSg/OlxufFxbIFxcdFxdKyMpIiAxIH0gfSAqLwor CisjaW5jbHVkZSA8aW1taW50cmluLmg+CisKK2xvbmcgbG9uZyAqYTsKK3Zv bGF0aWxlIF9fbTUxMmkgeno7CisKK3ZvaWQgZXh0ZXJuCithdng1MTJmX3Rl c3QgKHZvaWQpCit7CisgIHp6ID0gX21tNTEyX2xvYWR1X2VwaTY0IChhKTsK KyAgX21tNTEyX3N0b3JldV9lcGk2NCAoYSwgenopOworfQpkaWZmIC0tZ2l0 IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcHI5MDk4MC0xLmMg Yi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9wcjkwOTgwLTEuYwpu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uNzJhMzBk YzhkYTIKLS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2djYy50 YXJnZXQvaTM4Ni9wcjkwOTgwLTEuYwpAQCAtMCwwICsxLDE3IEBACisvKiB7 IGRnLWRvIGNvbXBpbGUgfSAqLworLyogeyBkZy1vcHRpb25zICItbWFyY2g9 c2t5bGFrZS1hdng1MTIgLU8yIiB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nh bi1hc3NlbWJsZXItdGltZXMgIig/OnZtb3Z1cHN8dm1vdmRxdSlcWyBcXHRc XStcW15ce1xuXF0qJXhtbVxbMC05XF0rXFteXG5cXSpcXCkoPzpcbnxcWyBc XHRcXSsjKSIgMiB9IH0gKi8KKworI2luY2x1ZGUgPGltbWludHJpbi5oPgor CitpbnQgKmE7Citsb25nIGxvbmcgKmI7Cit2b2xhdGlsZSBfX20xMjhpIHh4 Owordm9sYXRpbGUgX19tMTI4aSB4eDE7CisKK3ZvaWQgZXh0ZXJuCithdng1 MTJ2bF90ZXN0ICh2b2lkKQoreworICBfbW1fc3RvcmV1X2VwaTMyIChhLCB4 eCk7CisgIF9tbV9zdG9yZXVfZXBpNjQgKGIsIHh4MSk7Cit9CmRpZmYgLS1n aXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9wcjkwOTgwLTIu YyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3ByOTA5ODAtMi5j Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5iMTk4 MGU2NTE0MAotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUvZ2Nj LnRhcmdldC9pMzg2L3ByOTA5ODAtMi5jCkBAIC0wLDAgKzEsMTcgQEAKKy8q IHsgZGctZG8gY29tcGlsZSB9ICovCisvKiB7IGRnLW9wdGlvbnMgIi1tYXJj aD1za3lsYWtlLWF2eDUxMiAtTzIiIH0gKi8KKy8qIHsgZGctZmluYWwgeyBz Y2FuLWFzc2VtYmxlci10aW1lcyAidm1vdmRxdVxbMC05XF0qXFsgXFx0XF0r XFteXHtcblxdKiV5bW1cWzAtOVxdK1xbXlxuXF0qXFwpKD86XG58XFsgXFx0 XF0rIykiIDIgfSB9ICovCisKKyNpbmNsdWRlIDxpbW1pbnRyaW4uaD4KKwor aW50ICphOworbG9uZyBsb25nICpiOwordm9sYXRpbGUgX19tMjU2aSB5eTsK K3ZvbGF0aWxlIF9fbTI1NmkgeXkxOworCit2b2lkIGV4dGVybgorYXZ4NTEy dmxfdGVzdCAodm9pZCkKK3sKKyAgX21tMjU2X3N0b3JldV9lcGkzMiAoYSwg eXkpOworICBfbW0yNTZfc3RvcmV1X2VwaTY0IChiLCB5eTEpOworfQotLSAK Mi4yMC4xCgo= --0000000000002dbe61058d4677d0--