From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-qk1-x734.google.com (mail-qk1-x734.google.com [IPv6:2607:f8b0:4864:20::734]) by sourceware.org (Postfix) with ESMTPS id 76CE33851C16 for ; Thu, 29 Apr 2021 20:05:07 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org 76CE33851C16 Received: by mail-qk1-x734.google.com with SMTP id 66so28944698qkf.2 for ; Thu, 29 Apr 2021 13:05:07 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=5ZytmfWc4MVnWvquKqRv95UsMO6COTzKJjEPM8zpJhc=; b=gcIWugG8GXBPF7LYE7bBo4ebWpSoquHL8Jex9CJcUkUbASg0l1QkADBVtGlDsY2v2N yEkyCWgBJm+Zosys7Ysv1/F/FQVDYu83iy1nIDVbUvzKIbviZAm93i6dPCyHe2gRogma bCzzm10ENATFFRe7bVtp6G8US7CpM/pfnyZZ1LXVSmDhmHO/YXTzPfWYnPfzKakdEPaU mCevCm3ww/qF0Y76QXJGP3Dmo/1Hzd8+E6QySml5KxbHmHrmpwvHR5x7tDpD8dplvkBm UJU1r1frJ0q82ikRFB2piI7vugjE0qjWYRCh8UqlGvmJ0nUR5uXf/8Pu2KXFqO5mcbpm rqqQ== X-Gm-Message-State: AOAM532vHwRRlXYSJonnkZbcA59osnQnJIpD84n2Lx5gtLZvvG55CE1f NjzHmigCEJGpihn36mJ6yIZPqXy4rYV/xBcgIRc78vS5C6hkBQ== X-Google-Smtp-Source: ABdhPJwgxkI5hrJF+qhD9g58hXJPhtZXb8iGcf6tHsZwAe13JNej4p/yZ5b7d748chypujKySFUJasndyIySSKAMGxI= X-Received: by 2002:a37:de0e:: with SMTP id h14mr1460148qkj.465.1619726706770; Thu, 29 Apr 2021 13:05:06 -0700 (PDT) MIME-Version: 1.0 From: Uros Bizjak Date: Thu, 29 Apr 2021 22:04:55 +0200 Message-ID: Subject: [PATCH] i386: Optimize carry flag comparisons a bit To: "gcc-patches@gcc.gnu.org" Content-Type: multipart/mixed; boundary="000000000000fd9bd405c1220242" X-Spam-Status: No, score=-8.5 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.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: Thu, 29 Apr 2021 20:05:08 -0000 --000000000000fd9bd405c1220242 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable In ix86_int_compare, opportunistically swap operands of GTU and LEU compari= sons to emit carry flag comparison, with the expectation that the comparison wil= l combine to *add3_carry_0 or *sub3_carry_0 insn pattern. Do not use ix86_expand_carry_flag_compare because this function prefers carry flag comparisons too much - it forces the constants into registers and/or emits additional arithmetic instructions to convert simple comparisons into carry flag comparisons - but simply swap operands to convert GTU and LEU comparisons into GEU and LTU ones. Also, change the insn predicates of *add3_carry_0 and *sub3_carry_0 insn patterns to allow more combine opportunities with memory operands. 2021-04-29 Uro=C5=A1 Bizjak gcc/ * config/i386/i386-expand.c (ix86_expand_int_compare): Swap operands of GTU and LEU comparison to emit carry flag comparison. * config/i386/i386.md (*add3_carry_0): Change insn predicate to allow more combine opportunities with memory operands. (*sub3_carry_0): Ditto. Bootstrapped and regression tested on x86_64-linux-gnu {,-m32}. Pushed to master. Uros. --000000000000fd9bd405c1220242 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_ko3bg5vm0 ZGlmZiAtLWdpdCBhL2djYy9jb25maWcvaTM4Ni9pMzg2LWV4cGFuZC5jIGIvZ2NjL2NvbmZpZy9p Mzg2L2kzODYtZXhwYW5kLmMKaW5kZXggNzY5OTA2MjgxNTAuLmZlZTRkMDdiN2ZkIDEwMDY0NAot LS0gYS9nY2MvY29uZmlnL2kzODYvaTM4Ni1leHBhbmQuYworKysgYi9nY2MvY29uZmlnL2kzODYv aTM4Ni1leHBhbmQuYwpAQCAtMjY1OCw2ICsyNjU4LDE0IEBAIGl4ODZfZXhwYW5kX2ludF9jb21w YXJlIChlbnVtIHJ0eF9jb2RlIGNvZGUsIHJ0eCBvcDAsIHJ0eCBvcDEpCiAgIG1hY2hpbmVfbW9k ZSBjbXBtb2RlOwogICBydHggdG1wLCBmbGFnczsKIAorICAvKiBTd2FwIG9wZXJhbmRzIHRvIGVt aXQgY2FycnkgZmxhZyBjb21wYXJpc29uLiAgKi8KKyAgaWYgKChjb2RlID09IEdUVSB8fCBjb2Rl ID09IExFVSkKKyAgICAgICYmIG5vbmltbWVkaWF0ZV9vcGVyYW5kIChvcDEsIFZPSURtb2RlKSkK KyAgICB7CisgICAgICBzdGQ6OnN3YXAgKG9wMCwgb3AxKTsKKyAgICAgIGNvZGUgPSBzd2FwX2Nv bmRpdGlvbiAoY29kZSk7CisgICAgfQorCiAgIGNtcG1vZGUgPSBTRUxFQ1RfQ0NfTU9ERSAoY29k ZSwgb3AwLCBvcDEpOwogICBmbGFncyA9IGdlbl9ydHhfUkVHIChjbXBtb2RlLCBGTEFHU19SRUcp OwogCmRpZmYgLS1naXQgYS9nY2MvY29uZmlnL2kzODYvaTM4Ni5tZCBiL2djYy9jb25maWcvaTM4 Ni9pMzg2Lm1kCmluZGV4IGVmZjE4OWYxN2I0Li5iN2YzZTM2YTcwYyAxMDA2NDQKLS0tIGEvZ2Nj L2NvbmZpZy9pMzg2L2kzODYubWQKKysrIGIvZ2NjL2NvbmZpZy9pMzg2L2kzODYubWQKQEAgLTY3 NzcsNyArNjc3Nyw3IEBAIChkZWZpbmVfaW5zbiAiKmFkZDxtb2RlPjNfY2FycnlfMCIKIAkgICAg WyhtYXRjaF9vcGVyYW5kIDIgImZsYWdzX3JlZ19vcGVyYW5kIikgKGNvbnN0X2ludCAwKV0pCiAJ ICAobWF0Y2hfb3BlcmFuZDpTV0kgMSAibm9uaW1tZWRpYXRlX29wZXJhbmQiICIwIikpKQogICAg KGNsb2JiZXIgKHJlZzpDQyBGTEFHU19SRUcpKV0KLSAgIml4ODZfdW5hcnlfb3BlcmF0b3Jfb2sg KFBMVVMsIDxNT0RFPm1vZGUsIG9wZXJhbmRzKSIKKyAgIiFNRU1fUCAob3BlcmFuZHNbMF0pIHx8 IHJ0eF9lcXVhbF9wIChvcGVyYW5kc1swXSwgb3BlcmFuZHNbMV0pIgogICAiYWRjezxpbW9kZXN1 ZmZpeD59XHR7JDAsICUwfCUwLCAwfSIKICAgWyhzZXRfYXR0ciAidHlwZSIgImFsdSIpCiAgICAo c2V0X2F0dHIgInVzZV9jYXJyeSIgIjEiKQpAQCAtNjkxOSw3ICs2OTE5LDcgQEAgKGRlZmluZV9p bnNuICIqc3ViPG1vZGU+M19jYXJyeV8wIgogCSAgKG1hdGNoX29wZXJhdG9yOlNXSSAzICJpeDg2 X2NhcnJ5X2ZsYWdfb3BlcmF0b3IiCiAJICAgIFsobWF0Y2hfb3BlcmFuZCAyICJmbGFnc19yZWdf b3BlcmFuZCIpIChjb25zdF9pbnQgMCldKSkpCiAgICAoY2xvYmJlciAocmVnOkNDIEZMQUdTX1JF RykpXQotICAiaXg4Nl91bmFyeV9vcGVyYXRvcl9vayAoTUlOVVMsIDxNT0RFPm1vZGUsIG9wZXJh bmRzKSIKKyAgIiFNRU1fUCAob3BlcmFuZHNbMF0pIHx8IHJ0eF9lcXVhbF9wIChvcGVyYW5kc1sw XSwgb3BlcmFuZHNbMV0pIgogICAic2JiezxpbW9kZXN1ZmZpeD59XHR7JDAsICUwfCUwLCAwfSIK ICAgWyhzZXRfYXR0ciAidHlwZSIgImFsdSIpCiAgICAoc2V0X2F0dHIgInVzZV9jYXJyeSIgIjEi KQo= --000000000000fd9bd405c1220242--