From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-ed1-x533.google.com (mail-ed1-x533.google.com [IPv6:2a00:1450:4864:20::533]) by sourceware.org (Postfix) with ESMTPS id 62F0C3858D28 for ; Thu, 28 Dec 2023 10:33:34 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 62F0C3858D28 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=gmail.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 62F0C3858D28 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=2a00:1450:4864:20::533 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1703759616; cv=none; b=J77lwXThLmhfIUyNpLxa/EFsiZ9ZS8xtnqEHGT7MkiDIcb9TrRKcCzmerrS91MXz8CN7DWIdvEgCstMH1R6bh0ONJ65Lv21GZ68Aakm8Mr519r6T0mor99aUgrVcjtqlfU2RjdUA5A2sHmyHSfejox+Cs9vDUUKqEk0FYOLPAVo= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1703759616; c=relaxed/simple; bh=CTAwIAJB9LHYuhlcDM6rkLqunxBPP62AgI/JF2DKTvA=; h=DKIM-Signature:MIME-Version:From:Date:Message-ID:Subject:To; b=Kdl8ZOqVDI1ESdhrXfyrSKaM0Oj+QixB9pYsBQLHE7wstGaaw5gzYv8rusJGdvd7uCstR3fSuzDMR5hyrb0+50/W48w/pdYt5SPxZTsb4I3ddelFpePxYMg783qUjhPOEMrC5AaDGd4UvzSpHysrV4BCOcewMvaohGcr7CkrXKE= ARC-Authentication-Results: i=1; server2.sourceware.org Received: by mail-ed1-x533.google.com with SMTP id 4fb4d7f45d1cf-554909ac877so3895991a12.1 for ; Thu, 28 Dec 2023 02:33:34 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1703759613; x=1704364413; darn=gcc.gnu.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=Q8LwdC71Et5zT7nCJN6waZWPlvww6dfYezg9d1UciiU=; b=LW97uDTNxfoSz/SuEV81LBpF1WQtvI3AOFnvXZK3/LIA62BdpEBGwZQsRjVu0qIUDk AlUSfHeKjPdLA7EW/32nKWHgQL7QANWgAC/2R3iUOhCJYsRkYcaNd2nCV/EoDUWx9IqB KLKYebINHTV2k4skD+n5uKJrkGIc7xpr3jidvl+MSoFwDN8jzfG0XI8xiKblddigQ+Ts HWKhfEbjFp9CAljECgITAoLL2oD2Z6Wr5Q1rdHjG7S3VuOKnB4yQqVohkN69Kysgm5b5 AvWY0vGXj2mYIr1hY071DOvlNPFTjjJsVJBy+768uMPUKJaZRg4W0NedW3wPiiEqI2O8 ktSg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1703759613; x=1704364413; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=Q8LwdC71Et5zT7nCJN6waZWPlvww6dfYezg9d1UciiU=; b=d/5KeiPPK/coh62tdFAD1PIkkNpz5jjRvmTJtJZuN1e7qn9LXdmNnre9E5xd5hBp6Q 6l0ATUrpfEl56eIZDnVCQkhWjST6FWTqLyHo3VSY1EwLi6qyyje8gpWS2fRjGy2zd+MQ h1hkboQfwA5AYSX8jH0U5zvAG/6YdjK2FP1sO6GLoOgj3NWVJvvoCISIdURGVCwYCvOs G+JWOzF+IfNO/tnoXHMpQtAfrHr2bohMHSR/slWrFmJ706hC6afo11XbUaJb9TyAyJC0 +fsSXXwDoJsS1buTMygDrljTJcSZTYEFpVX+yKFzeFreZL7WfzzNLOXSu7SgYtfcZJul Z8kA== X-Gm-Message-State: AOJu0Yy5ijqF0+34wOmnmAsH3hFqNI2jG+oY2YofVE18cssTWFWNqyqx v/5vMqzMNIoxxZ5iwAKOZ5Kh5b2XdkFhQozz2dlB0A3CcvIN9g== X-Google-Smtp-Source: AGHT+IESVj+Y8e1xtP7pLF+GM2voMxHjNEr4be1s6M3F4URWXU8o+RiXQx6T2P3FRPgLri1ajMjEpCdJscDbFYiUHks= X-Received: by 2002:a05:6402:4410:b0:54a:f8e9:a9a8 with SMTP id y16-20020a056402441000b0054af8e9a9a8mr7333084eda.20.1703759612704; Thu, 28 Dec 2023 02:33:32 -0800 (PST) MIME-Version: 1.0 References: <026301da34bf$9992e5f0$ccb8b1d0$@nextmovesoftware.com> In-Reply-To: <026301da34bf$9992e5f0$ccb8b1d0$@nextmovesoftware.com> From: Uros Bizjak Date: Thu, 28 Dec 2023 11:33:20 +0100 Message-ID: Subject: Re: [x86_PATCH] peephole2 to resolve failure of gcc.target/i386/pr43644-2.c To: Roger Sayle Cc: gcc-patches@gcc.gnu.org Content-Type: multipart/mixed; boundary="00000000000080579d060d8f72e5" X-Spam-Status: No, score=-8.4 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM,GIT_PATCH_0,KAM_SHORT,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS,TXREP,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: --00000000000080579d060d8f72e5 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Fri, Dec 22, 2023 at 11:14=E2=80=AFAM Roger Sayle wrote: > > > This patch resolves the failure of pr43644-2.c in the testsuite, a code > quality test I added back in July, that started failing as the code GCC > generates for 128-bit values (and their parameter passing) has been in > flux. After a few attempts at tweaking pattern constraints in the hope > of convincing reload to produce a more aggressive (but potentially > unsafe) register allocation, I think the best solution is to use a > peephole2 to catch/clean-up this specific case. > > Specifically, the function: > > unsigned __int128 foo(unsigned __int128 x, unsigned long long y) { > return x+y; > } > > currently generates: > > foo: movq %rdx, %rcx > movq %rdi, %rax > movq %rsi, %rdx > addq %rcx, %rax > adcq $0, %rdx > ret > > and with this patch/peephole2 now generates: > > foo: movq %rdx, %rax > movq %rsi, %rdx > addq %rdi, %rax > adcq $0, %rdx > ret > > which I believe is optimal. How about simply moving the assignment to the MSB in the split pattern after the LSB calculation: [(set (match_dup 0) (match_dup 4)) - (set (match_dup 5) (match_dup 2)) (parallel [(set (reg:CCC FLAGS_REG) (compare:CCC (plus:DWIH (match_dup 0) (match_dup 1)) (match_dup 0))) (set (match_dup 0) (plus:DWIH (match_dup 0) (match_dup 1)))]) + (set (match_dup 5) (match_dup 2)) (parallel [(set (match_dup 5) (plus:DWIH (plus:DWIH There is an earlyclobber on the output operand, so we are sure that assignments to (op 0) and (op 5) won't clobber anything. cprop_hardreg pass will then do the cleanup for us, resulting in: foo: movq %rdi, %rax addq %rdx, %rax movq %rsi, %rdx adcq $0, %rdx Uros. > > This patch has been tested on x86_64-pc-linux-gnu with make bootstrap > and make -k check, both with and without --target_board=3Dunix{-m32} > with no new failures. Ok for mainline? > > > 2023-12-21 Roger Sayle > > gcc/ChangeLog > PR target/43644 > * config/i386/i386.md (define_peephole2): Tweak register allocati= on > of *add3_doubleword_concat_zext. > > gcc/testsuite/ChangeLog > PR target/43644 > * gcc.target/i386/pr43644-2.c: Expect 2 movq instructions. > > > Thanks in advance, and for your patience with this testsuite noise. > Roger > -- > --00000000000080579d060d8f72e5 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_lqp1t69q0 ZGlmZiAtLWdpdCBhL2djYy9jb25maWcvaTM4Ni9pMzg2Lm1kIGIvZ2NjL2NvbmZpZy9pMzg2L2kz ODYubWQKaW5kZXggNGM2MzY4YmYzYjcuLjlmOTdkNDA3OTc1IDEwMDY0NAotLS0gYS9nY2MvY29u ZmlnL2kzODYvaTM4Ni5tZAorKysgYi9nY2MvY29uZmlnL2kzODYvaTM4Ni5tZApAQCAtNjQxMSwx MyArNjQxMSwxMyBAQCAoZGVmaW5lX2luc25fYW5kX3NwbGl0ICIqYWRkPGR3aT4zX2RvdWJsZXdv cmRfY29uY2F0X3pleHQiCiAgICIjIgogICAiJiYgcmVsb2FkX2NvbXBsZXRlZCIKICAgWyhzZXQg KG1hdGNoX2R1cCAwKSAobWF0Y2hfZHVwIDQpKQotICAgKHNldCAobWF0Y2hfZHVwIDUpIChtYXRj aF9kdXAgMikpCiAgICAocGFyYWxsZWwgWyhzZXQgKHJlZzpDQ0MgRkxBR1NfUkVHKQogCQkgICAo Y29tcGFyZTpDQ0MKIAkJICAgICAocGx1czpEV0lIIChtYXRjaF9kdXAgMCkgKG1hdGNoX2R1cCAx KSkKIAkJICAgICAobWF0Y2hfZHVwIDApKSkKIAkgICAgICAoc2V0IChtYXRjaF9kdXAgMCkKIAkJ ICAgKHBsdXM6RFdJSCAobWF0Y2hfZHVwIDApIChtYXRjaF9kdXAgMSkpKV0pCisgICAoc2V0ICht YXRjaF9kdXAgNSkgKG1hdGNoX2R1cCAyKSkKICAgIChwYXJhbGxlbCBbKHNldCAobWF0Y2hfZHVw IDUpCiAJCSAgIChwbHVzOkRXSUgKIAkJICAgICAocGx1czpEV0lICg== --00000000000080579d060d8f72e5--