From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 89697 invoked by alias); 5 Aug 2016 12:22:55 -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 89627 invoked by uid 89); 5 Aug 2016 12:22:52 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-2.6 required=5.0 tests=BAYES_00,FREEMAIL_FROM,RCVD_IN_DNSWL_LOW,SPF_PASS autolearn=ham version=3.3.2 spammy=or, target_64bit, TARGET_64BIT, ree X-HELO: mail-ua0-f170.google.com Received: from mail-ua0-f170.google.com (HELO mail-ua0-f170.google.com) (209.85.217.170) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES128-GCM-SHA256 encrypted) ESMTPS; Fri, 05 Aug 2016 12:22:42 +0000 Received: by mail-ua0-f170.google.com with SMTP id 74so11339980uau.0 for ; Fri, 05 Aug 2016 05:22:42 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:from:date:message-id:subject:to:cc; bh=fJa1hhEJMjAhm3BqKjc8Gnyi3y+Yfu8AERyLrFs1fC0=; b=Q/oJGIKkD5LCanREZrEDgoWACNv6UoeUEt4/6I/IWVYA4OptBTocpy2qHSf8To/qlY DuG27mqE/52DnEbubt1XpLipMiGoqdExU1xO2e+fvs1AthZGT9G/amg1zSwl3AYsr78N Z5zV2d4oTEWAj/C+s43JeNkBKfuANie3vqDc1MiYtolK/sz81pdF08Gy4EBKI3RMzRRG zTpCDv99RHAcFpvkjaIPxna+FaOkG2wBb0bSGJl+vGNu6+Pk+WPFhhPo6/z6fAZqb3qh wbfPRGPcjIVUrnC45v7pVHOHZd1rDhtMll1DeRNDbH0j36alDPafZqwF1Ei7TW0QqVdg WJGA== X-Gm-Message-State: AEkoouvKI55j5JedGloeimtM0k9zTEWsA19Cg9g1C8BOhWe0vzzsZL5fdhTNlSEhGAlrm5DlBqpLTWuleH976g== X-Received: by 10.176.0.115 with SMTP id 106mr4332870uai.43.1470399760117; Fri, 05 Aug 2016 05:22:40 -0700 (PDT) MIME-Version: 1.0 Received: by 10.103.20.193 with HTTP; Fri, 5 Aug 2016 05:22:39 -0700 (PDT) From: Uros Bizjak Date: Fri, 05 Aug 2016 12:22:00 -0000 Message-ID: Subject: [RFT PATCH, i386]: Optimize zero-extensions from mask registers To: "gcc-patches@gcc.gnu.org" Cc: Kirill Yukhin Content-Type: multipart/mixed; boundary=001a11351e2c614a4c0539521f05 X-SW-Source: 2016-08/txt/msg00444.txt.bz2 --001a11351e2c614a4c0539521f05 Content-Type: text/plain; charset=UTF-8 Content-length: 1303 Hello! Attached patch was inspired by assembly from PR 72805 testcase. Currently, the compiler generates: test: vpternlogd $0xFF, %zmm0, %zmm0, %zmm0 vpxord %zmm1, %zmm1, %zmm1 vpcmpd $1, %zmm1, %zmm0, %k1 kmovw %k1, %eax movzwl %ax, %eax ret Please note that kmovw already zero-extended from a mask register. Attached patch allows ree pass to propagate mask registers to zext insn patterns, resulting in: test: vpternlogd $0xFF, %zmm0, %zmm0, %zmm0 # 24 movv16si_internal/2 [length = 6] vpxord %zmm1, %zmm1, %zmm1 # 25 movv16si_internal/1 [length = 6] vpcmpd $1, %zmm1, %zmm0, %k1 # 13 avx512f_cmpv16si3 [length = 7] kmovw %k1, %eax # 27 *zero_extendhisi2/2 [length = 4] ret # 30 simple_return_internal [length = 1] 2016-08-05 Uros Bizjak * config/i386/i386.md (*zero_extendsidi2): Add (*r,*k) alternative. (zero_extenddi2): Ditto. (*zero_extendsi2): Ditto. (*zero_extendqihi2): Ditto. Patch was bootstrapped and regression tested on x86_64-linux-gnu {,-m32}. The patch is in RFT state, since I have no means to test AVX512 stuff. Kirill, can someone from Intel please test the patch? Uros. --001a11351e2c614a4c0539521f05 Content-Type: text/plain; charset=US-ASCII; name="p.diff.txt" Content-Disposition: attachment; filename="p.diff.txt" Content-Transfer-Encoding: base64 X-Attachment-Id: f_irhq1gi00 Content-length: 4889 SW5kZXg6IGNvbmZpZy9pMzg2L2kzODYubWQKPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQotLS0gY29uZmlnL2kzODYvaTM4Ni5tZAkocmV2aXNpb24gMjM5MTY2 KQorKysgY29uZmlnL2kzODYvaTM4Ni5tZAkod29ya2luZyBjb3B5KQpAQCAt MzY4OCwxMCArMzY4OCwxMCBAQAogCiAoZGVmaW5lX2luc24gIip6ZXJvX2V4 dGVuZHNpZGkyIgogICBbKHNldCAobWF0Y2hfb3BlcmFuZDpESSAwICJub25p bW1lZGlhdGVfb3BlcmFuZCIKLQkJCSI9ciw/ciw/byxyICAgLG8sPypZbSw/ ISp5LD9yICw/ciw/KllpLD8qeCIpCisJCQkiPXIsP3IsP28sciAgICxvLD8q WW0sPyEqeSw/ciAsP3IsPypZaSw/KngsKnIiKQogCSh6ZXJvX2V4dGVuZDpE SQogCSAobWF0Y2hfb3BlcmFuZDpTSSAxICJ4ODZfNjRfemV4dF9vcGVyYW5k IgotCSAgICAgICAgCSIwICxybSxyICxybVd6LDAsciAgICxtICAgLCpZaiwq eCxyICAgLG0iKSkpXQorCSAgICAgICAgCSIwICxybSxyICxybVd6LDAsciAg ICxtICAgLCpZaiwqeCxyICAgLG0gICwqayIpKSldCiAgICIiCiB7CiAgIHN3 aXRjaCAoZ2V0X2F0dHJfdHlwZSAoaW5zbikpCkBAIC0zNzE3LDYgKzM3MTcs OSBAQAogCiAgICAgICByZXR1cm4gIiV2bW92ZFx0eyUxLCAlMHwlMCwgJTF9 IjsKIAorICAgIGNhc2UgVFlQRV9NU0tNT1Y6CisgICAgICByZXR1cm4gImtt b3ZkXHR7JTEsICVrMHwlazAsICUxfSI7CisKICAgICBkZWZhdWx0OgogICAg ICAgZ2NjX3VucmVhY2hhYmxlICgpOwogICAgIH0KQEAgLTM3MjQsNyArMzcy Nyw3IEBACiAgIFsoc2V0IChhdHRyICJpc2EiKQogICAgICAoY29uZCBbKGVx X2F0dHIgImFsdGVybmF0aXZlIiAiMCwxLDIiKQogCSAgICAgIChjb25zdF9z dHJpbmcgIm5veDY0IikKLQkgICAgKGVxX2F0dHIgImFsdGVybmF0aXZlIiAi Myw3IikKKwkgICAgKGVxX2F0dHIgImFsdGVybmF0aXZlIiAiMyw3LDExIikK IAkgICAgICAoY29uc3Rfc3RyaW5nICJ4NjQiKQogCSAgICAoZXFfYXR0ciAi YWx0ZXJuYXRpdmUiICI4IikKIAkgICAgICAoY29uc3Rfc3RyaW5nICJ4NjRf c3NlNCIpCkBAIC0zNzQxLDYgKzM3NDQsOCBAQAogCSAgICAgIChjb25zdF9z dHJpbmcgInNzZW1vdiIpCiAJICAgIChlcV9hdHRyICJhbHRlcm5hdGl2ZSIg IjgiKQogCSAgICAgIChjb25zdF9zdHJpbmcgInNzZWxvZzEiKQorCSAgICAo ZXFfYXR0ciAiYWx0ZXJuYXRpdmUiICIxMSIpCisJICAgICAgKGNvbnN0X3N0 cmluZyAibXNrbW92IikKIAkgICBdCiAJICAgKGNvbnN0X3N0cmluZyAiaW1v dngiKSkpCiAgICAoc2V0IChhdHRyICJwcmVmaXhfZXh0cmEiKQpAQCAtMzc5 MiwxMiArMzc5NywxNCBAQAogICAic3BsaXRfZG91YmxlX21vZGUgKERJbW9k ZSwgJm9wZXJhbmRzWzBdLCAxLCAmb3BlcmFuZHNbM10sICZvcGVyYW5kc1s0 XSk7IikKIAogKGRlZmluZV9pbnNuICJ6ZXJvX2V4dGVuZDxtb2RlPmRpMiIK LSAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6REkgMCAicmVnaXN0ZXJfb3BlcmFu ZCIgIj1yIikKKyAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6REkgMCAicmVnaXN0 ZXJfb3BlcmFuZCIgIj1yLCpyIikKIAkoemVyb19leHRlbmQ6REkKLQkgKG1h dGNoX29wZXJhbmQ6U1dJMTIgMSAibm9uaW1tZWRpYXRlX29wZXJhbmQiICI8 cj5tIikpKV0KKwkgKG1hdGNoX29wZXJhbmQ6U1dJMTIgMSAibm9uaW1tZWRp YXRlX29wZXJhbmQiICI8cj5tLCprIikpKV0KICAgIlRBUkdFVF82NEJJVCIK LSAgIm1vdnp7PGltb2Rlc3VmZml4Pmx8eH1cdHslMSwgJWswfCVrMCwgJTF9 IgotICBbKHNldF9hdHRyICJ0eXBlIiAiaW1vdngiKQorICAiQAorICAgbW92 ens8aW1vZGVzdWZmaXg+bHx4fVx0eyUxLCAlazB8JWswLCAlMX0KKyAgIGtt b3Y8bXNrbW9kZXN1ZmZpeD5cdHslMSwgJWswfCVrMCwgJTF9IgorICBbKHNl dF9hdHRyICJ0eXBlIiAiaW1vdngsbXNrbW92IikKICAgIChzZXRfYXR0ciAi bW9kZSIgIlNJIildKQogCiAoZGVmaW5lX2V4cGFuZCAiemVyb19leHRlbmQ8 bW9kZT5zaTIiCkBAIC0zODQxLDEzICszODQ4LDE1IEBACiAgICAoc2V0X2F0 dHIgIm1vZGUiICJTSSIpXSkKIAogKGRlZmluZV9pbnNuICIqemVyb19leHRl bmQ8bW9kZT5zaTIiCi0gIFsoc2V0IChtYXRjaF9vcGVyYW5kOlNJIDAgInJl Z2lzdGVyX29wZXJhbmQiICI9ciIpCisgIFsoc2V0IChtYXRjaF9vcGVyYW5k OlNJIDAgInJlZ2lzdGVyX29wZXJhbmQiICI9ciwqciIpCiAJKHplcm9fZXh0 ZW5kOlNJCi0JICAobWF0Y2hfb3BlcmFuZDpTV0kxMiAxICJub25pbW1lZGlh dGVfb3BlcmFuZCIgIjxyPm0iKSkpXQorCSAgKG1hdGNoX29wZXJhbmQ6U1dJ MTIgMSAibm9uaW1tZWRpYXRlX29wZXJhbmQiICI8cj5tLCprIikpKV0KICAg IiEoVEFSR0VUX1pFUk9fRVhURU5EX1dJVEhfQU5EICYmIG9wdGltaXplX2Z1 bmN0aW9uX2Zvcl9zcGVlZF9wIChjZnVuKSkiCi0gICJtb3Z6ezxpbW9kZXN1 ZmZpeD5sfHh9XHR7JTEsICUwfCUwLCAlMX0iCi0gIFsoc2V0X2F0dHIgInR5 cGUiICJpbW92eCIpCi0gICAoc2V0X2F0dHIgIm1vZGUiICJTSSIpXSkKKyAg IkAKKyAgIG1vdnp7PGltb2Rlc3VmZml4Pmx8eH1cdHslMSwgJTB8JTAsICUx fQorICAga21vdjxtc2ttb2Rlc3VmZml4Plx0eyUxLCAlMHwlMCwgJTF9Igor ICBbKHNldF9hdHRyICJ0eXBlIiAiaW1vdngsbXNrbW92IikKKyAgIChzZXRf YXR0ciAibW9kZSIgIlNJLDxNT0RFPiIpXSkKIAogKGRlZmluZV9leHBhbmQg Inplcm9fZXh0ZW5kcWloaTIiCiAgIFsoc2V0IChtYXRjaF9vcGVyYW5kOkhJ IDAgInJlZ2lzdGVyX29wZXJhbmQiKQpAQCAtMzg5MCwxMiArMzg5OSwxNCBA QAogCiA7IHplcm8gZXh0ZW5kIHRvIFNJbW9kZSB0byBhdm9pZCBwYXJ0aWFs IHJlZ2lzdGVyIHN0YWxscwogKGRlZmluZV9pbnNuICIqemVyb19leHRlbmRx aWhpMiIKLSAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6SEkgMCAicmVnaXN0ZXJf b3BlcmFuZCIgIj1yIikKLQkoemVyb19leHRlbmQ6SEkgKG1hdGNoX29wZXJh bmQ6UUkgMSAibm9uaW1tZWRpYXRlX29wZXJhbmQiICJxbSIpKSldCisgIFso c2V0IChtYXRjaF9vcGVyYW5kOkhJIDAgInJlZ2lzdGVyX29wZXJhbmQiICI9 ciwqciIpCisJKHplcm9fZXh0ZW5kOkhJIChtYXRjaF9vcGVyYW5kOlFJIDEg Im5vbmltbWVkaWF0ZV9vcGVyYW5kIiAicW0sKmsiKSkpXQogICAiIShUQVJH RVRfWkVST19FWFRFTkRfV0lUSF9BTkQgJiYgb3B0aW1pemVfZnVuY3Rpb25f Zm9yX3NwZWVkX3AgKGNmdW4pKSIKLSAgIm1vdnp7Ymx8eH1cdHslMSwgJWsw fCVrMCwgJTF9IgotICBbKHNldF9hdHRyICJ0eXBlIiAiaW1vdngiKQotICAg KHNldF9hdHRyICJtb2RlIiAiU0kiKV0pCisgICJACisgICBtb3Z6e2JsfHh9 XHR7JTEsICVrMHwlazAsICUxfQorICAga21vdmJcdHslMSwgJWswfCVrMCwg JTF9IgorICBbKHNldF9hdHRyICJ0eXBlIiAiaW1vdngsbXNrbW92IikKKyAg IChzZXRfYXR0ciAibW9kZSIgIlNJLFFJIildKQogCiAoZGVmaW5lX2luc25f YW5kX3NwbGl0ICIqemV4dDxtb2RlPl9kb3VibGV3b3JkX2FuZCIKICAgWyhz ZXQgKG1hdGNoX29wZXJhbmQ6REkgMCAicmVnaXN0ZXJfb3BlcmFuZCIgIj0m PHI+IikK --001a11351e2c614a4c0539521f05--