From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-wr1-x434.google.com (mail-wr1-x434.google.com [IPv6:2a00:1450:4864:20::434]) by sourceware.org (Postfix) with ESMTPS id DFF2A3858D39 for ; Mon, 8 Apr 2024 12:24:08 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org DFF2A3858D39 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=baylibre.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=baylibre.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org DFF2A3858D39 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=2a00:1450:4864:20::434 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1712579054; cv=none; b=gyCIvKvrIT8BplbzWEAoWs5+KwG0LVjnKbvjnwxDYhHUaGuPb28QSU2hliOwPwkPyZ2+jimMgyfqtQ3a7b76tac4k2dlJi+3qp7mmt9J2F3f+y1bp3cQXUMFD1C9NJMdvPbx7OtrDIzTMKshSOze5ElGx0zFzLPUX/ZWhVOFDd8= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1712579054; c=relaxed/simple; bh=jKWcFmXoj3DOqmkghGkvFI3jUQzYE5TONXN6w46s0ck=; h=DKIM-Signature:Message-ID:Date:MIME-Version:Subject:To:From; b=nrC5CzIDPE2N0UCr1mm3Zm7wIT9WouopLDDwDxVVWtDPbs5UDRV3jYUcQddpqMnDL1FM844IPnMSDi1ZgA/4TuH9GznepMAyMOlaomOqnHy83uFADHunF+MnjxzIcdsAROFqjKSGATM3ER1swMwdIDc2j+Rs44sM3N1KzSHNfkg= ARC-Authentication-Results: i=1; server2.sourceware.org Received: by mail-wr1-x434.google.com with SMTP id ffacd0b85a97d-345e4097cb9so245284f8f.3 for ; Mon, 08 Apr 2024 05:24:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20230601.gappssmtp.com; s=20230601; t=1712579047; x=1713183847; darn=gcc.gnu.org; h=content-transfer-encoding:in-reply-to:from:content-language :references:to:subject:user-agent:mime-version:date:message-id:from :to:cc:subject:date:message-id:reply-to; bh=JhE8acgrh3I/lyC/HDZetBAUwb5s+m1xxcAkdOfFmSU=; b=IuhmKuNlpLuRebsw/i6+R1u85my3o6oUMvXPjLqdwQ03ItMN5ENjjYPmxSbc615Gxf 8c9hi/T1Uwv5P3cGrzRqjV/wVehFFEf5BhKn4jgox5brlt25b/eAEtCDvrfbO2y8ZJmX 69aZnWzbAMTqHyGy05itxWfSao6AJA0P4qc6v5z8I1lP/gODIBXrxu5RckerfTAHe+/N Sz1JgNVjoliKkGPHol+RKWtOCCiGRhjd64LZsURIgccDtY+Fh6/PaCo/gO02826RR/NP c8So+gswS7RlaIWph/T6vVgfKInITdM1rENS5QTGfkz5xC6BZj0V1iWJ8aHaow2mVB3F XZCg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1712579047; x=1713183847; h=content-transfer-encoding:in-reply-to:from:content-language :references:to:subject:user-agent:mime-version:date:message-id :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=JhE8acgrh3I/lyC/HDZetBAUwb5s+m1xxcAkdOfFmSU=; b=xLS4HC3VtMEiOvSnOcggX6do5H9DgOKEe7KuPEuecsiMbXT89VI6fMOILaZ8YJZ25Q 84xDAK1z+6ow8MkD9ZXFCCH1UpmCYWoALuU77bJT+rKvckcO3p6dvtKp0PlBYiH4L0fz epUgSmRn22TkMEl5SxxqoTsAHmyWS1/fnAE4ullpcFYibv5FtRr86kijqykEfaoWz/TF 61Oqfp/sA5Ojx/zouciaKz5AFoGhi47Q8Q0wCHxU3K37iB5MK/3W9AMdkvkse+eF+BE4 ftE4PugZVh+qXeSR2ziwCIro+GAWFzIp0C+eUsrpxtC4t0jY6pqRVlYybNEJHbpvE+3B 0rrQ== X-Forwarded-Encrypted: i=1; AJvYcCVUMwNvWhtOwvtX2ckQBVaWtbchADGBzq9BW6qpZZUsDMUtjWkMGnDKDh0SfTBpp1F6Lxw0lFkOFnNR6UOPnZGC4LyGRB+/xA== X-Gm-Message-State: AOJu0YwTzlFmgS8Vkrob+tK92H1FBrf4vVA5UzhOO75gJjZnvdrg/ph6 3YRz4SeXFGWinl2CXBL7ijrZxni0SuM8OetOGKP30093jHIINQpPSl8Ypzm27CKGsCSbdaNMFKO sBik= X-Google-Smtp-Source: AGHT+IGxZkw/FVSJE7dN/ePRmSmhQ9iUIGTWgoHIZ7d3siOQsUA2ls0At+ydDXWrj8Gb0ZmGZh7omA== X-Received: by 2002:adf:fe89:0:b0:343:d35d:71d with SMTP id l9-20020adffe89000000b00343d35d071dmr5763392wrr.8.1712579046900; Mon, 08 Apr 2024 05:24:06 -0700 (PDT) Received: from [192.168.0.118] (hawk-18-b2-v4wan-167765-cust1304.vm26.cable.virginm.net. [82.41.69.25]) by smtp.gmail.com with ESMTPSA id j3-20020adfff83000000b00341e2146b53sm8867792wrr.106.2024.04.08.05.24.06 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Mon, 08 Apr 2024 05:24:06 -0700 (PDT) Message-ID: <1ed1ad62-b821-4754-892d-8c8cde2fc041@baylibre.com> Date: Mon, 8 Apr 2024 13:24:06 +0100 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: GCN: '--param=gcn-preferred-vector-lane-width=[default,32,64]' To: Thomas Schwinge , gcc-patches@gcc.gnu.org References: <20240322155449.747518-1-ams@baylibre.com> <87bk6yali5.fsf@dem-tschwing-1.schwinge.ddns.net> <87zfu4m8ue.fsf@euler.schwinge.ddns.net> Content-Language: en-GB From: Andrew Stubbs In-Reply-To: <87zfu4m8ue.fsf@euler.schwinge.ddns.net> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-8.4 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,GIT_PATCH_0,KAM_SHORT,RCVD_IN_BARRACUDACENTRAL,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS,TXREP 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: On 08/04/2024 11:45, Thomas Schwinge wrote: > Hi! > > On 2024-03-28T08:00:50+0100, I wrote: >> On 2024-03-22T15:54:48+0000, Andrew Stubbs wrote: >>> This patch alters the default (preferred) vector size to 32 on RDNA devices to >>> better match the actual hardware. 64-lane vectors will continue to be >>> used where they are hard-coded (such as function prologues). >>> >>> We run these devices in wavefrontsize64 for compatibility, but they actually >>> only have 32-lane vectors, natively. If the upper part of a V64 is masked >>> off (as it is in V32) then RDNA devices will skip execution of the upper part >>> for most operations, so this adjustment shouldn't leave too much performance on >>> the table. One exception is memory instructions, so full wavefrontsize32 >>> support would be better. >>> >>> The advantage is that we avoid the missing V64 operations (such as permute and >>> vec_extract). >>> >>> Committed to mainline. >> >> In my GCN target '-march=gfx1100' testing, this commit >> "amdgcn: Prefer V32 on RDNA devices" does resolve (or, make latent?) a >> number of execution test FAILs (that is, regressions compared to earlier >> '-march=gfx90a' etc. testing). >> >> This commit also resolves (for my '-march=gfx1100' testing) one >> pre-existing FAIL (that is, already seen in '-march=gfx90a' earlier >> etc. testing): >> >> PASS: gcc.dg/tree-ssa/scev-14.c (test for excess errors) >> [-FAIL:-]{+PASS:+} gcc.dg/tree-ssa/scev-14.c scan-tree-dump ivopts "Overflowness wrto loop niter:\tNo-overflow" >> >> That means, this test case specifically (or, just its 'scan-tree-dump'?) >> needs to be adjusted for GCN V64 testing? >> >> This commit, as you'd also mentioned elsewhere, however also causes a >> number of regressions in 'gcc.target/gcn/gcn.exp', see list below. >> >> Those can be "fixed" with 'dg-additional-options -march=gfx90a' (or >> similar) in the affected test cases (let me know if you'd like me to >> 'git push' that), but I suppose something more elaborate may be in order? >> (Conditionalize those on 'target { ! gcn_rdna }', and add respective >> scanning for 'target gcn_rdna'? I can help with effective-target >> 'gcn_rdna' (or similar), if you'd like me to.) >> >> And/or, have a '-mpreferred-simd-mode=v64' (or similar) to be used for >> such test cases, to override 'if (TARGET_RDNA2_PLUS)' etc. in >> 'gcn_vectorize_preferred_simd_mode'? > > The latter I have quickly implemented, see attached > "GCN: '--param=gcn-preferred-vector-lane-width=[default,32,64]'". OK to > push to trunk branch? > > (This '--param' will also be useful for another bug/regression I'm about > to file.) > >> Best, probably, both these things, to properly test both V32 and V64? > > That part remains to be done, but is best done by someone who actually > knowns "GCN" assembly/GCC back end -- that is, not me. I'm not sure that this is *best* solution to the problem (in general, it's probably best to test the actual code that will be generated in practice), but I think this option will be useful for testing performance in each configuration and other correctness issues, and these tests are not testing that feature. However, "vector lane width" sounds like it's configuring the number of bits in each lane. I think "vectorization factor" is unambigous. OK to commit, with the name change. Andrew > > Grüße > Thomas > > >> PASS: gcc.target/gcn/cond_fmaxnm_1.c (test for excess errors) >> [-PASS:-]{+FAIL:+} gcc.target/gcn/cond_fmaxnm_1.c scan-assembler-not \\tv_writelane_b32\\tv[0-9]+, vcc_.. >> [-PASS:-]{+FAIL:+} gcc.target/gcn/cond_fmaxnm_1.c scan-assembler-times smaxv64df3_exec 3 >> [-PASS:-]{+FAIL:+} gcc.target/gcn/cond_fmaxnm_1.c scan-assembler-times smaxv64sf3_exec 3 >> PASS: gcc.target/gcn/cond_fmaxnm_1_run.c (test for excess errors) >> PASS: gcc.target/gcn/cond_fmaxnm_1_run.c execution test >> >> PASS: gcc.target/gcn/cond_fmaxnm_2.c (test for excess errors) >> [-PASS:-]{+FAIL:+} gcc.target/gcn/cond_fmaxnm_2.c scan-assembler-not \\tv_writelane_b32\\tv[0-9]+, vcc_.. >> [-PASS:-]{+FAIL:+} gcc.target/gcn/cond_fmaxnm_2.c scan-assembler-times smaxv64df3_exec 3 >> [-PASS:-]{+FAIL:+} gcc.target/gcn/cond_fmaxnm_2.c scan-assembler-times smaxv64sf3_exec 3 >> PASS: gcc.target/gcn/cond_fmaxnm_2_run.c (test for excess errors) >> PASS: gcc.target/gcn/cond_fmaxnm_2_run.c execution test >> >> PASS: gcc.target/gcn/cond_fmaxnm_3.c (test for excess errors) >> [-PASS:-]{+FAIL:+} gcc.target/gcn/cond_fmaxnm_3.c scan-assembler-not \\tv_writelane_b32\\tv[0-9]+, vcc_.. >> [-PASS:-]{+FAIL:+} gcc.target/gcn/cond_fmaxnm_3.c scan-assembler-times movv64df_exec 3 >> [-PASS:-]{+FAIL:+} gcc.target/gcn/cond_fmaxnm_3.c scan-assembler-times movv64sf_exec 3 >> [-PASS:-]{+FAIL:+} gcc.target/gcn/cond_fmaxnm_3.c scan-assembler-times smaxv64sf3 3 >> [-PASS:-]{+FAIL:+} gcc.target/gcn/cond_fmaxnm_3.c scan-assembler-times smaxv64sf3 3 >> PASS: gcc.target/gcn/cond_fmaxnm_3_run.c (test for excess errors) >> PASS: gcc.target/gcn/cond_fmaxnm_3_run.c execution test >> >> PASS: gcc.target/gcn/cond_fmaxnm_4.c (test for excess errors) >> [-PASS:-]{+FAIL:+} gcc.target/gcn/cond_fmaxnm_4.c scan-assembler-not \\tv_writelane_b32\\tv[0-9]+, vcc_.. >> [-PASS:-]{+FAIL:+} gcc.target/gcn/cond_fmaxnm_4.c scan-assembler-times movv64df_exec 3 >> [-PASS:-]{+FAIL:+} gcc.target/gcn/cond_fmaxnm_4.c scan-assembler-times movv64sf_exec 3 >> [-PASS:-]{+FAIL:+} gcc.target/gcn/cond_fmaxnm_4.c scan-assembler-times smaxv64sf3 3 >> [-PASS:-]{+FAIL:+} gcc.target/gcn/cond_fmaxnm_4.c scan-assembler-times smaxv64sf3 3 >> PASS: gcc.target/gcn/cond_fmaxnm_4_run.c (test for excess errors) >> PASS: gcc.target/gcn/cond_fmaxnm_4_run.c execution test >> >> PASS: gcc.target/gcn/cond_fmaxnm_5.c (test for excess errors) >> [-PASS:-]{+FAIL:+} gcc.target/gcn/cond_fmaxnm_5.c scan-assembler-not \\tv_writelane_b32\\tv[0-9]+, vcc_.. >> [-PASS:-]{+FAIL:+} gcc.target/gcn/cond_fmaxnm_5.c scan-assembler-times smaxv64df3_exec 3 >> [-PASS:-]{+FAIL:+} gcc.target/gcn/cond_fmaxnm_5.c scan-assembler-times smaxv64sf3_exec 3 >> PASS: gcc.target/gcn/cond_fmaxnm_5_run.c (test for excess errors) >> PASS: gcc.target/gcn/cond_fmaxnm_5_run.c execution test >> >> PASS: gcc.target/gcn/cond_fmaxnm_6.c (test for excess errors) >> [-PASS:-]{+FAIL:+} gcc.target/gcn/cond_fmaxnm_6.c scan-assembler-not \\tv_writelane_b32\\tv[0-9]+, vcc_.. >> [-PASS:-]{+FAIL:+} gcc.target/gcn/cond_fmaxnm_6.c scan-assembler-times smaxv64df3_exec 3 >> [-PASS:-]{+FAIL:+} gcc.target/gcn/cond_fmaxnm_6.c scan-assembler-times smaxv64sf3_exec 3 >> PASS: gcc.target/gcn/cond_fmaxnm_6_run.c (test for excess errors) >> PASS: gcc.target/gcn/cond_fmaxnm_6_run.c execution test >> >> PASS: gcc.target/gcn/cond_fmaxnm_7.c (test for excess errors) >> [-PASS:-]{+FAIL:+} gcc.target/gcn/cond_fmaxnm_7.c scan-assembler-not \\tv_writelane_b32\\tv[0-9]+, vcc_.. >> [-PASS:-]{+FAIL:+} gcc.target/gcn/cond_fmaxnm_7.c scan-assembler-times smaxv64df3_exec 3 >> [-PASS:-]{+FAIL:+} gcc.target/gcn/cond_fmaxnm_7.c scan-assembler-times smaxv64sf3_exec 3 >> PASS: gcc.target/gcn/cond_fmaxnm_7_run.c (test for excess errors) >> PASS: gcc.target/gcn/cond_fmaxnm_7_run.c execution test >> >> PASS: gcc.target/gcn/cond_fmaxnm_8.c (test for excess errors) >> [-PASS:-]{+FAIL:+} gcc.target/gcn/cond_fmaxnm_8.c scan-assembler-not \\tv_writelane_b32\\tv[0-9]+, vcc_.. >> [-PASS:-]{+FAIL:+} gcc.target/gcn/cond_fmaxnm_8.c scan-assembler-times smaxv64df3_exec 3 >> [-PASS:-]{+FAIL:+} gcc.target/gcn/cond_fmaxnm_8.c scan-assembler-times smaxv64sf3_exec 3 >> PASS: gcc.target/gcn/cond_fmaxnm_8_run.c (test for excess errors) >> PASS: gcc.target/gcn/cond_fmaxnm_8_run.c execution test >> >> PASS: gcc.target/gcn/cond_fminnm_1.c (test for excess errors) >> [-PASS:-]{+FAIL:+} gcc.target/gcn/cond_fminnm_1.c scan-assembler-not \\tv_writelane_b32\\tv[0-9]+, vcc_.. >> [-PASS:-]{+FAIL:+} gcc.target/gcn/cond_fminnm_1.c scan-assembler-times sminv64df3_exec 3 >> [-PASS:-]{+FAIL:+} gcc.target/gcn/cond_fminnm_1.c scan-assembler-times sminv64sf3_exec 3 >> PASS: gcc.target/gcn/cond_fminnm_1_run.c (test for excess errors) >> PASS: gcc.target/gcn/cond_fminnm_1_run.c execution test >> >> PASS: gcc.target/gcn/cond_fminnm_2.c (test for excess errors) >> [-PASS:-]{+FAIL:+} gcc.target/gcn/cond_fminnm_2.c scan-assembler-not \\tv_writelane_b32\\tv[0-9]+, vcc_.. >> [-PASS:-]{+FAIL:+} gcc.target/gcn/cond_fminnm_2.c scan-assembler-times sminv64df3_exec 3 >> [-PASS:-]{+FAIL:+} gcc.target/gcn/cond_fminnm_2.c scan-assembler-times sminv64sf3_exec 3 >> PASS: gcc.target/gcn/cond_fminnm_2_run.c (test for excess errors) >> PASS: gcc.target/gcn/cond_fminnm_2_run.c execution test >> >> PASS: gcc.target/gcn/cond_fminnm_3.c (test for excess errors) >> [-PASS:-]{+FAIL:+} gcc.target/gcn/cond_fminnm_3.c scan-assembler-not \\tv_writelane_b32\\tv[0-9]+, vcc_.. >> [-PASS:-]{+FAIL:+} gcc.target/gcn/cond_fminnm_3.c scan-assembler-times movv64df_exec 3 >> [-PASS:-]{+FAIL:+} gcc.target/gcn/cond_fminnm_3.c scan-assembler-times movv64sf_exec 3 >> [-PASS:-]{+FAIL:+} gcc.target/gcn/cond_fminnm_3.c scan-assembler-times sminv64sf3 3 >> [-PASS:-]{+FAIL:+} gcc.target/gcn/cond_fminnm_3.c scan-assembler-times sminv64sf3 3 >> PASS: gcc.target/gcn/cond_fminnm_3_run.c (test for excess errors) >> PASS: gcc.target/gcn/cond_fminnm_3_run.c execution test >> >> PASS: gcc.target/gcn/cond_fminnm_4.c (test for excess errors) >> [-PASS:-]{+FAIL:+} gcc.target/gcn/cond_fminnm_4.c scan-assembler-not \\tv_writelane_b32\\tv[0-9]+, vcc_.. >> [-PASS:-]{+FAIL:+} gcc.target/gcn/cond_fminnm_4.c scan-assembler-times movv64df_exec 3 >> [-PASS:-]{+FAIL:+} gcc.target/gcn/cond_fminnm_4.c scan-assembler-times movv64sf_exec 3 >> [-PASS:-]{+FAIL:+} gcc.target/gcn/cond_fminnm_4.c scan-assembler-times sminv64sf3 3 >> [-PASS:-]{+FAIL:+} gcc.target/gcn/cond_fminnm_4.c scan-assembler-times sminv64sf3 3 >> PASS: gcc.target/gcn/cond_fminnm_4_run.c (test for excess errors) >> PASS: gcc.target/gcn/cond_fminnm_4_run.c execution test >> >> PASS: gcc.target/gcn/cond_fminnm_5.c (test for excess errors) >> [-PASS:-]{+FAIL:+} gcc.target/gcn/cond_fminnm_5.c scan-assembler-not \\tv_writelane_b32\\tv[0-9]+, vcc_.. >> [-PASS:-]{+FAIL:+} gcc.target/gcn/cond_fminnm_5.c scan-assembler-times sminv64df3_exec 3 >> [-PASS:-]{+FAIL:+} gcc.target/gcn/cond_fminnm_5.c scan-assembler-times sminv64sf3_exec 3 >> PASS: gcc.target/gcn/cond_fminnm_5_run.c (test for excess errors) >> PASS: gcc.target/gcn/cond_fminnm_5_run.c execution test >> >> PASS: gcc.target/gcn/cond_fminnm_6.c (test for excess errors) >> [-PASS:-]{+FAIL:+} gcc.target/gcn/cond_fminnm_6.c scan-assembler-not \\tv_writelane_b32\\tv[0-9]+, vcc_.. >> [-PASS:-]{+FAIL:+} gcc.target/gcn/cond_fminnm_6.c scan-assembler-times sminv64df3_exec 3 >> [-PASS:-]{+FAIL:+} gcc.target/gcn/cond_fminnm_6.c scan-assembler-times sminv64sf3_exec 3 >> PASS: gcc.target/gcn/cond_fminnm_6_run.c (test for excess errors) >> PASS: gcc.target/gcn/cond_fminnm_6_run.c execution test >> >> PASS: gcc.target/gcn/cond_fminnm_7.c (test for excess errors) >> [-PASS:-]{+FAIL:+} gcc.target/gcn/cond_fminnm_7.c scan-assembler-not \\tv_writelane_b32\\tv[0-9]+, vcc_.. >> [-PASS:-]{+FAIL:+} gcc.target/gcn/cond_fminnm_7.c scan-assembler-times sminv64df3_exec 3 >> [-PASS:-]{+FAIL:+} gcc.target/gcn/cond_fminnm_7.c scan-assembler-times sminv64sf3_exec 3 >> PASS: gcc.target/gcn/cond_fminnm_7_run.c (test for excess errors) >> PASS: gcc.target/gcn/cond_fminnm_7_run.c execution test >> >> PASS: gcc.target/gcn/cond_fminnm_8.c (test for excess errors) >> [-PASS:-]{+FAIL:+} gcc.target/gcn/cond_fminnm_8.c scan-assembler-not \\tv_writelane_b32\\tv[0-9]+, vcc_.. >> [-PASS:-]{+FAIL:+} gcc.target/gcn/cond_fminnm_8.c scan-assembler-times sminv64df3_exec 3 >> [-PASS:-]{+FAIL:+} gcc.target/gcn/cond_fminnm_8.c scan-assembler-times sminv64sf3_exec 3 >> PASS: gcc.target/gcn/cond_fminnm_8_run.c (test for excess errors) >> PASS: gcc.target/gcn/cond_fminnm_8_run.c execution test >> >> @@ -124634,12 +124634,12 @@ PASS: gcc.target/gcn/cond_shift_3.c scan-assembler-not movv64di_exec/2 >> PASS: gcc.target/gcn/cond_shift_3.c scan-assembler-not v_cndmask_b32 >> PASS: gcc.target/gcn/cond_shift_3.c scan-assembler-times \\tv_ashrrev_i32\\tv[0-9]+, 3, v[0-9]+ 1 >> PASS: gcc.target/gcn/cond_shift_3.c scan-assembler-times \\tv_lshlrev_b32\\tv[0-9]+, 3, v[0-9]+ 10 >> [-PASS:-]{+FAIL:+} gcc.target/gcn/cond_shift_3.c scan-assembler-times vashlv64di3_exec 2 >> [-PASS:-]{+FAIL:+} gcc.target/gcn/cond_shift_3.c scan-assembler-times vashlv64si3_exec 18 >> [-PASS:-]{+FAIL:+} gcc.target/gcn/cond_shift_3.c scan-assembler-times vashrv64di3_exec 1 >> [-PASS:-]{+FAIL:+} gcc.target/gcn/cond_shift_3.c scan-assembler-times vashrv64si3_exec 1 >> [-PASS:-]{+FAIL:+} gcc.target/gcn/cond_shift_3.c scan-assembler-times vlshrv64di3_exec 1 >> [-PASS:-]{+FAIL:+} gcc.target/gcn/cond_shift_3.c scan-assembler-times vlshrv64si3_exec 1 >> PASS: gcc.target/gcn/cond_shift_3_run.c (test for excess errors) >> PASS: gcc.target/gcn/cond_shift_3_run.c execution test >> >> PASS: gcc.target/gcn/cond_shift_4.c (test for excess errors) >> @@ -124647,77 +124647,77 @@ PASS: gcc.target/gcn/cond_shift_4.c scan-assembler-not movv64di_exec/2 >> PASS: gcc.target/gcn/cond_shift_4.c scan-assembler-not v_cndmask_b32 >> PASS: gcc.target/gcn/cond_shift_4.c scan-assembler-times \\tv_ashrrev_i32\\tv[0-9]+, 3, v[0-9]+ 1 >> PASS: gcc.target/gcn/cond_shift_4.c scan-assembler-times \\tv_lshlrev_b32\\tv[0-9]+, 3, v[0-9]+ 10 >> [-PASS:-]{+FAIL:+} gcc.target/gcn/cond_shift_4.c scan-assembler-times vashlv64di3_exec 2 >> [-PASS:-]{+FAIL:+} gcc.target/gcn/cond_shift_4.c scan-assembler-times vashlv64si3_exec 18 >> [-PASS:-]{+FAIL:+} gcc.target/gcn/cond_shift_4.c scan-assembler-times vashrv64di3_exec 1 >> [-PASS:-]{+FAIL:+} gcc.target/gcn/cond_shift_4.c scan-assembler-times vashrv64si3_exec 1 >> [-PASS:-]{+FAIL:+} gcc.target/gcn/cond_shift_4.c scan-assembler-times vlshrv64di3_exec 1 >> [-PASS:-]{+FAIL:+} gcc.target/gcn/cond_shift_4.c scan-assembler-times vlshrv64si3_exec 1 >> PASS: gcc.target/gcn/cond_shift_4_run.c (test for excess errors) >> PASS: gcc.target/gcn/cond_shift_4_run.c execution test >> >> PASS: gcc.target/gcn/cond_shift_8.c (test for excess errors) >> PASS: gcc.target/gcn/cond_shift_8.c scan-assembler-not movv64di_exec/0 >> PASS: gcc.target/gcn/cond_shift_8.c scan-assembler-not movv64si_exec/0 >> [-PASS:-]{+FAIL:+} gcc.target/gcn/cond_shift_8.c scan-assembler-times vashlv64di3_exec 2 >> [-PASS:-]{+FAIL:+} gcc.target/gcn/cond_shift_8.c scan-assembler-times vashlv64si3_exec 18 >> [-PASS:-]{+FAIL:+} gcc.target/gcn/cond_shift_8.c scan-assembler-times vashrv64di3_exec 1 >> [-PASS:-]{+FAIL:+} gcc.target/gcn/cond_shift_8.c scan-assembler-times vashrv64si3_exec 1 >> [-PASS:-]{+FAIL:+} gcc.target/gcn/cond_shift_8.c scan-assembler-times vlshrv64di3_exec 1 >> [-PASS:-]{+FAIL:+} gcc.target/gcn/cond_shift_8.c scan-assembler-times vlshrv64si3_exec 1 >> PASS: gcc.target/gcn/cond_shift_8_run.c (test for excess errors) >> PASS: gcc.target/gcn/cond_shift_8_run.c execution test >> >> PASS: gcc.target/gcn/cond_shift_9.c (test for excess errors) >> PASS: gcc.target/gcn/cond_shift_9.c scan-assembler-not movv64di_exec/1 >> PASS: gcc.target/gcn/cond_shift_9.c scan-assembler-not movv64si_exec/2 >> PASS: gcc.target/gcn/cond_shift_9.c scan-assembler-not v_cndmask_b32 >> [-PASS:-]{+FAIL:+} gcc.target/gcn/cond_shift_9.c scan-assembler-times vashlv64di3_exec 2 >> [-PASS:-]{+FAIL:+} gcc.target/gcn/cond_shift_9.c scan-assembler-times vashlv64si3_exec 18 >> [-PASS:-]{+FAIL:+} gcc.target/gcn/cond_shift_9.c scan-assembler-times vashrv64di3_exec 1 >> [-PASS:-]{+FAIL:+} gcc.target/gcn/cond_shift_9.c scan-assembler-times vashrv64si3_exec 1 >> [-PASS:-]{+FAIL:+} gcc.target/gcn/cond_shift_9.c scan-assembler-times vlshrv64di3_exec 1 >> [-PASS:-]{+FAIL:+} gcc.target/gcn/cond_shift_9.c scan-assembler-times vlshrv64si3_exec 1 >> PASS: gcc.target/gcn/cond_shift_9_run.c (test for excess errors) >> PASS: gcc.target/gcn/cond_shift_9_run.c execution test >> >> PASS: gcc.target/gcn/cond_smax_1.c (test for excess errors) >> [-PASS:-]{+FAIL:+} gcc.target/gcn/cond_smax_1.c scan-assembler-not \\ts_cmpk_lg_u32\\tvcc_lo, 0 >> PASS: gcc.target/gcn/cond_smax_1.c scan-assembler-not \\tv_cmpx_gt_i32\\tvcc, s[0-9]+, v[0-9]+ >> PASS: gcc.target/gcn/cond_smax_1.c scan-assembler-not \\tv_writelane_b32\\tv[0-9]+, vcc_??, 0 >> PASS: gcc.target/gcn/cond_smax_1.c scan-assembler-not smaxv64si3/0 >> PASS: gcc.target/gcn/cond_smax_1.c scan-assembler-times \\tv_cmp_gt_i32\\tvcc, s[0-9]+, v[0-9]+ 80 >> PASS: gcc.target/gcn/cond_smax_1.c scan-assembler-times \\tv_cmp_gt_i64\\tvcc, v[[0-9]+:[0-9]+], v[[0-9]+:[0-9]+] 10 >> PASS: gcc.target/gcn/cond_smax_1.c scan-assembler-times \\tv_cmp_ne_u64\\ts\\[[0-9]+:[0-9]+\\], v\\[[0-9]+:[0-9]+\\], -1 10 >> [-PASS:-]{+FAIL:+} gcc.target/gcn/cond_smax_1.c scan-assembler-times smaxv64si3_exec 30 >> PASS: gcc.target/gcn/cond_smax_1_run.c (test for excess errors) >> PASS: gcc.target/gcn/cond_smax_1_run.c execution test >> >> PASS: gcc.target/gcn/cond_smin_1.c (test for excess errors) >> [-PASS:-]{+FAIL:+} gcc.target/gcn/cond_smin_1.c scan-assembler-not \\ts_cmpk_lg_u32\\tvcc_lo, 0 >> PASS: gcc.target/gcn/cond_smin_1.c scan-assembler-not \\tv_cmpx_gt_i32\\tvcc, s[0-9]+, v[0-9]+ >> PASS: gcc.target/gcn/cond_smin_1.c scan-assembler-not \\tv_writelane_b32\\tv[0-9]+, vcc_??, 0 >> PASS: gcc.target/gcn/cond_smin_1.c scan-assembler-not sminv64si3/0 >> PASS: gcc.target/gcn/cond_smin_1.c scan-assembler-times \\tv_cmp_gt_i32\\tvcc, s[0-9]+, v[0-9]+ 80 >> PASS: gcc.target/gcn/cond_smin_1.c scan-assembler-times \\tv_cmp_lt_i64\\tvcc, v[[0-9]+:[0-9]+], v[[0-9]+:[0-9]+] 10 >> PASS: gcc.target/gcn/cond_smin_1.c scan-assembler-times \\tv_cmp_ne_u64\\ts\\[[0-9]+:[0-9]+\\], v\\[[0-9]+:[0-9]+\\], -1 10 >> [-PASS:-]{+FAIL:+} gcc.target/gcn/cond_smin_1.c scan-assembler-times sminv64si3_exec 30 >> PASS: gcc.target/gcn/cond_smin_1_run.c (test for excess errors) >> PASS: gcc.target/gcn/cond_smin_1_run.c execution test >> >> PASS: gcc.target/gcn/cond_umax_1.c (test for excess errors) >> [-PASS:-]{+FAIL:+} gcc.target/gcn/cond_umax_1.c scan-assembler-not \\ts_cmpk_lg_u32\\tvcc_lo, 0 >> PASS: gcc.target/gcn/cond_umax_1.c scan-assembler-not \\tv_writelane_b32\\tv[0-9]+, vcc_??, 0 >> PASS: gcc.target/gcn/cond_umax_1.c scan-assembler-not umaxv64si3/0 >> [-PASS:-]{+FAIL:+} gcc.target/gcn/cond_umax_1.c scan-assembler-times \\tv_cmp_gt_i32\\tvcc, s[0-9]+, v[0-9]+ 56 >> PASS: gcc.target/gcn/cond_umax_1.c scan-assembler-times \\tv_cmp_gt_u64\\tvcc, v[[0-9]+:[0-9]+], v[[0-9]+:[0-9]+] 8 >> PASS: gcc.target/gcn/cond_umax_1.c scan-assembler-times \\tv_cmp_ne_u64\\ts\\[[0-9]+:[0-9]+\\], v\\[[0-9]+:[0-9]+\\], 1 8 >> [-PASS:-]{+FAIL:+} gcc.target/gcn/cond_umax_1.c scan-assembler-times umaxv64si3_exec 20 >> PASS: gcc.target/gcn/cond_umax_1_run.c (test for excess errors) >> PASS: gcc.target/gcn/cond_umax_1_run.c execution test >> >> PASS: gcc.target/gcn/cond_umin_1.c (test for excess errors) >> [-PASS:-]{+FAIL:+} gcc.target/gcn/cond_umin_1.c scan-assembler-not \\ts_cmpk_lg_u32\\tvcc_lo, 0 >> PASS: gcc.target/gcn/cond_umin_1.c scan-assembler-not \\tv_writelane_b32\\tv[0-9]+, vcc_??, 0 >> PASS: gcc.target/gcn/cond_umin_1.c scan-assembler-not uminv64si3/0 >> [-PASS:-]{+FAIL:+} gcc.target/gcn/cond_umin_1.c scan-assembler-times \\tv_cmp_gt_i32\\tvcc, s[0-9]+, v[0-9]+ 56 >> PASS: gcc.target/gcn/cond_umin_1.c scan-assembler-times \\tv_cmp_lt_u64\\tvcc, v[[0-9]+:[0-9]+], v[[0-9]+:[0-9]+] 8 >> PASS: gcc.target/gcn/cond_umin_1.c scan-assembler-times \\tv_cmp_ne_u64\\ts\\[[0-9]+:[0-9]+\\], v\\[[0-9]+:[0-9]+\\], 1 8 >> [-PASS:-]{+FAIL:+} gcc.target/gcn/cond_umin_1.c scan-assembler-times uminv64si3_exec 20 >> PASS: gcc.target/gcn/cond_umin_1_run.c (test for excess errors) >> PASS: gcc.target/gcn/cond_umin_1_run.c execution test >> >> PASS: gcc.target/gcn/simd-math-1.c (test for excess errors) >> [-PASS:-]{+FAIL:+} gcc.target/gcn/simd-math-1.c scan-tree-dump vect "v64df_acos" >> [-PASS:-]{+FAIL:+} gcc.target/gcn/simd-math-1.c scan-tree-dump vect "v64df_acosh" >> [-PASS:-]{+FAIL:+} gcc.target/gcn/simd-math-1.c scan-tree-dump vect "v64df_asin" >> [-PASS:-]{+FAIL:+} gcc.target/gcn/simd-math-1.c scan-tree-dump vect "v64df_asinh" >> [-PASS:-]{+FAIL:+} gcc.target/gcn/simd-math-1.c scan-tree-dump vect "v64df_atan" >> [-PASS:-]{+FAIL:+} gcc.target/gcn/simd-math-1.c scan-tree-dump vect "v64df_atan2" >> [-PASS:-]{+FAIL:+} gcc.target/gcn/simd-math-1.c scan-tree-dump vect "v64df_atanh" >> [-PASS:-]{+FAIL:+} gcc.target/gcn/simd-math-1.c scan-tree-dump vect "v64df_copysign" >> [-PASS:-]{+FAIL:+} gcc.target/gcn/simd-math-1.c scan-tree-dump vect "v64df_cos" >> [-PASS:-]{+FAIL:+} gcc.target/gcn/simd-math-1.c scan-tree-dump vect "v64df_cosh" >> [-PASS:-]{+FAIL:+} gcc.target/gcn/simd-math-1.c scan-tree-dump vect "v64df_erf" >> [-PASS:-]{+FAIL:+} gcc.target/gcn/simd-math-1.c scan-tree-dump vect "v64df_exp" >> [-PASS:-]{+FAIL:+} gcc.target/gcn/simd-math-1.c scan-tree-dump vect "v64df_exp2" >> [-PASS:-]{+FAIL:+} gcc.target/gcn/simd-math-1.c scan-tree-dump vect "v64df_fmod" >> XFAIL: gcc.target/gcn/simd-math-1.c scan-tree-dump vect "v64df_gamma" >> [-PASS:-]{+FAIL:+} gcc.target/gcn/simd-math-1.c scan-tree-dump vect "v64df_hypot" >> XFAIL: gcc.target/gcn/simd-math-1.c scan-tree-dump vect "v64df_lgamma" >> [-PASS:-]{+FAIL:+} gcc.target/gcn/simd-math-1.c scan-tree-dump vect "v64df_log" >> [-PASS:-]{+FAIL:+} gcc.target/gcn/simd-math-1.c scan-tree-dump vect "v64df_log10" >> XFAIL: gcc.target/gcn/simd-math-1.c scan-tree-dump vect "v64df_log2" >> [-PASS:-]{+FAIL:+} gcc.target/gcn/simd-math-1.c scan-tree-dump vect "v64df_pow" >> [-PASS:-]{+FAIL:+} gcc.target/gcn/simd-math-1.c scan-tree-dump vect "v64df_remainder" >> [-PASS:-]{+FAIL:+} gcc.target/gcn/simd-math-1.c scan-tree-dump vect "v64df_rint" >> [-PASS:-]{+FAIL:+} gcc.target/gcn/simd-math-1.c scan-tree-dump vect "v64df_scalb" >> [-PASS:-]{+FAIL:+} gcc.target/gcn/simd-math-1.c scan-tree-dump vect "v64df_significand" >> [-PASS:-]{+FAIL:+} gcc.target/gcn/simd-math-1.c scan-tree-dump vect "v64df_sin" >> [-PASS:-]{+FAIL:+} gcc.target/gcn/simd-math-1.c scan-tree-dump vect "v64df_sinh" >> [-PASS:-]{+FAIL:+} gcc.target/gcn/simd-math-1.c scan-tree-dump vect "v64df_sqrt" >> [-PASS:-]{+FAIL:+} gcc.target/gcn/simd-math-1.c scan-tree-dump vect "v64df_tan" >> [-PASS:-]{+FAIL:+} gcc.target/gcn/simd-math-1.c scan-tree-dump vect "v64df_tanh" >> [-PASS:-]{+FAIL:+} gcc.target/gcn/simd-math-1.c scan-tree-dump vect "v64df_tgamma" >> [-PASS:-]{+FAIL:+} gcc.target/gcn/simd-math-1.c scan-tree-dump vect "v64sf_acosf" >> [-PASS:-]{+FAIL:+} gcc.target/gcn/simd-math-1.c scan-tree-dump vect "v64sf_acoshf" >> [-PASS:-]{+FAIL:+} gcc.target/gcn/simd-math-1.c scan-tree-dump vect "v64sf_asinf" >> [-PASS:-]{+FAIL:+} gcc.target/gcn/simd-math-1.c scan-tree-dump vect "v64sf_asinhf" >> [-PASS:-]{+FAIL:+} gcc.target/gcn/simd-math-1.c scan-tree-dump vect "v64sf_atan2f" >> [-PASS:-]{+FAIL:+} gcc.target/gcn/simd-math-1.c scan-tree-dump vect "v64sf_atanf" >> [-PASS:-]{+FAIL:+} gcc.target/gcn/simd-math-1.c scan-tree-dump vect "v64sf_atanhf" >> [-PASS:-]{+FAIL:+} gcc.target/gcn/simd-math-1.c scan-tree-dump vect "v64sf_copysignf" >> [-PASS:-]{+FAIL:+} gcc.target/gcn/simd-math-1.c scan-tree-dump vect "v64sf_cosf" >> [-PASS:-]{+FAIL:+} gcc.target/gcn/simd-math-1.c scan-tree-dump vect "v64sf_coshf" >> [-PASS:-]{+FAIL:+} gcc.target/gcn/simd-math-1.c scan-tree-dump vect "v64sf_erff" >> [-PASS:-]{+FAIL:+} gcc.target/gcn/simd-math-1.c scan-tree-dump vect "v64sf_exp2f" >> [-PASS:-]{+FAIL:+} gcc.target/gcn/simd-math-1.c scan-tree-dump vect "v64sf_expf" >> [-PASS:-]{+FAIL:+} gcc.target/gcn/simd-math-1.c scan-tree-dump vect "v64sf_fmodf" >> XFAIL: gcc.target/gcn/simd-math-1.c scan-tree-dump vect "v64sf_gammaf" >> [-PASS:-]{+FAIL:+} gcc.target/gcn/simd-math-1.c scan-tree-dump vect "v64sf_hypotf" >> XFAIL: gcc.target/gcn/simd-math-1.c scan-tree-dump vect "v64sf_lgammaf" >> [-PASS:-]{+FAIL:+} gcc.target/gcn/simd-math-1.c scan-tree-dump vect "v64sf_log10f" >> [-PASS:-]{+FAIL:+} gcc.target/gcn/simd-math-1.c scan-tree-dump vect "v64sf_log2f" >> [-PASS:-]{+FAIL:+} gcc.target/gcn/simd-math-1.c scan-tree-dump vect "v64sf_logf" >> [-PASS:-]{+FAIL:+} gcc.target/gcn/simd-math-1.c scan-tree-dump vect "v64sf_powf" >> [-PASS:-]{+FAIL:+} gcc.target/gcn/simd-math-1.c scan-tree-dump vect "v64sf_remainderf" >> [-PASS:-]{+FAIL:+} gcc.target/gcn/simd-math-1.c scan-tree-dump vect "v64sf_rintf" >> [-PASS:-]{+FAIL:+} gcc.target/gcn/simd-math-1.c scan-tree-dump vect "v64sf_scalbf" >> [-PASS:-]{+FAIL:+} gcc.target/gcn/simd-math-1.c scan-tree-dump vect "v64sf_significandf" >> [-PASS:-]{+FAIL:+} gcc.target/gcn/simd-math-1.c scan-tree-dump vect "v64sf_sinf" >> [-PASS:-]{+FAIL:+} gcc.target/gcn/simd-math-1.c scan-tree-dump vect "v64sf_sinhf" >> [-PASS:-]{+FAIL:+} gcc.target/gcn/simd-math-1.c scan-tree-dump vect "v64sf_sqrtf" >> [-PASS:-]{+FAIL:+} gcc.target/gcn/simd-math-1.c scan-tree-dump vect "v64sf_tanf" >> [-PASS:-]{+FAIL:+} gcc.target/gcn/simd-math-1.c scan-tree-dump vect "v64sf_tanhf" >> [-PASS:-]{+FAIL:+} gcc.target/gcn/simd-math-1.c scan-tree-dump vect "v64sf_tgammaf" >> >> @@ -125130,7 +125130,7 @@ PASS: gcc.target/gcn/simd-math-5-char-run.c (test for excess errors) >> PASS: gcc.target/gcn/simd-math-5-char-run.c execution test >> PASS: gcc.target/gcn/simd-math-5-char.c (test for excess errors) >> XFAIL: gcc.target/gcn/simd-math-5-char.c scan-assembler-times __divmodv64si4@rel32@lo 1 >> [-PASS:-]{+FAIL:+} gcc.target/gcn/simd-math-5-char.c scan-assembler-times __divv64hi3@rel32@lo 1 >> PASS: gcc.target/gcn/simd-math-5-char.c scan-assembler-times __divv64qi3@rel32@lo 0 >> FAIL: gcc.target/gcn/simd-math-5-char.c scan-assembler-times __modv64qi3@rel32@lo 1 >> PASS: gcc.target/gcn/simd-math-5-char.c scan-assembler-times __udivv64qi3@rel32@lo 0 >> >> @@ -125171,8 +125171,8 @@ PASS: gcc.target/gcn/simd-math-5-long-run.c (test for excess errors) >> PASS: gcc.target/gcn/simd-math-5-long-run.c execution test >> PASS: gcc.target/gcn/simd-math-5-long.c (test for excess errors) >> XFAIL: gcc.target/gcn/simd-math-5-long.c scan-assembler-times __divmodv64di4@rel32@lo 1 >> [-PASS:-]{+FAIL:+} gcc.target/gcn/simd-math-5-long.c scan-assembler-times __divv64di3@rel32@lo 1 >> [-PASS:-]{+FAIL:+} gcc.target/gcn/simd-math-5-long.c scan-assembler-times __modv64di3@rel32@lo 1 >> PASS: gcc.target/gcn/simd-math-5-long.c scan-assembler-times __udivv64di3@rel32@lo 0 >> PASS: gcc.target/gcn/simd-math-5-long.c scan-assembler-times __umodv64di3@rel32@lo 0 >> >> PASS: gcc.target/gcn/simd-math-5-short.c (test for excess errors) >> XFAIL: gcc.target/gcn/simd-math-5-short.c scan-assembler-times __divmodv64si4@rel32@lo 1 >> PASS: gcc.target/gcn/simd-math-5-short.c scan-assembler-times __divv64hi3@rel32@lo 0 >> [-PASS:-]{+FAIL:+} gcc.target/gcn/simd-math-5-short.c scan-assembler-times __divv64si3@rel32@lo 1 >> FAIL: gcc.target/gcn/simd-math-5-short.c scan-assembler-times __modv64hi3@rel32@lo 1 >> PASS: gcc.target/gcn/simd-math-5-short.c scan-assembler-times __udivv64hi3@rel32@lo 0 >> PASS: gcc.target/gcn/simd-math-5-short.c scan-assembler-times __umodv64hi3@rel32@lo 0 >> >> PASS: gcc.target/gcn/simd-math-5.c (test for excess errors) >> XFAIL: gcc.target/gcn/simd-math-5.c scan-assembler-times __divmodv64si4@rel32@lo 1 >> PASS: gcc.target/gcn/simd-math-5.c scan-assembler-times __divsi3@rel32@lo 1 >> [-PASS:-]{+FAIL:+} gcc.target/gcn/simd-math-5.c scan-assembler-times __divv64si3@rel32@lo 1 >> [-PASS:-]{+FAIL:+} gcc.target/gcn/simd-math-5.c scan-assembler-times __modv64si3@rel32@lo 1 >> PASS: gcc.target/gcn/simd-math-5.c scan-assembler-times __udivmodv64si4@rel32@lo 0 >> PASS: gcc.target/gcn/simd-math-5.c scan-assembler-times __udivsi3@rel32@lo 0 >> PASS: gcc.target/gcn/simd-math-5.c scan-assembler-times __udivv64si3@rel32@lo 0 >> @@ -125242,13 +125242,13 @@ PASS: gcc.target/gcn/simd-math-5.c scan-assembler-times __umodv64si3@rel32@lo 0 >> >> PASS: gcc.target/gcn/smax_1.c (test for excess errors) >> PASS: gcc.target/gcn/smax_1.c scan-assembler-times \\tv_cmp_gt_i64\\tvcc, v[[0-9]+:[0-9]+], v[[0-9]+:[0-9]+] 10 >> FAIL: gcc.target/gcn/smax_1.c scan-assembler-times \\tv_cmpx_gt_i32\\tvcc, s[0-9]+, v[0-9]+ 80 >> [-PASS:-]{+FAIL:+} gcc.target/gcn/smax_1.c scan-assembler-times vec_cmpv64didi 10 >> PASS: gcc.target/gcn/smax_1_run.c (test for excess errors) >> PASS: gcc.target/gcn/smax_1_run.c execution test >> >> PASS: gcc.target/gcn/smin_1.c (test for excess errors) >> PASS: gcc.target/gcn/smin_1.c scan-assembler-times \\tv_cmp_lt_i64\\tvcc, v[[0-9]+:[0-9]+], v[[0-9]+:[0-9]+] 10 >> FAIL: gcc.target/gcn/smin_1.c scan-assembler-times \\tv_cmpx_gt_i32\\tvcc, s[0-9]+, v[0-9]+ 80 >> [-PASS:-]{+FAIL:+} gcc.target/gcn/smin_1.c scan-assembler-times vec_cmpv64didi 10 >> PASS: gcc.target/gcn/smin_1_run.c (test for excess errors) >> PASS: gcc.target/gcn/smin_1_run.c execution test >> >> PASS: gcc.target/gcn/sram-ecc-3.c (test for excess errors) >> [-PASS:-]{+FAIL:+} gcc.target/gcn/sram-ecc-3.c scan-assembler (\\*zero_extendv64qiv64si_sdwa|\\*zero_extendv64qiv64si_shift) >> >> PASS: gcc.target/gcn/sram-ecc-4.c (test for excess errors) >> [-PASS:-]{+FAIL:+} gcc.target/gcn/sram-ecc-4.c scan-assembler (\\*zero_extendv64hiv64si_sdwa|\\*zero_extendv64hiv64si_shift) >> >> PASS: gcc.target/gcn/sram-ecc-7.c (test for excess errors) >> [-PASS:-]{+FAIL:+} gcc.target/gcn/sram-ecc-7.c scan-assembler (\\*zero_extendv64qiv64si_sdwa|\\*zero_extendv64qiv64si_shift) >> >> PASS: gcc.target/gcn/sram-ecc-8.c (test for excess errors) >> [-PASS:-]{+FAIL:+} gcc.target/gcn/sram-ecc-8.c scan-assembler (\\*zero_extendv64hiv64si_sdwa|\\*zero_extendv64hiv64si_shift) >> >> PASS: gcc.target/gcn/umax_1.c (test for excess errors) >> PASS: gcc.target/gcn/umax_1.c scan-assembler-times \\tv_cmp_gt_u64\\tvcc, v[[0-9]+:[0-9]+], v[[0-9]+:[0-9]+] 8 >> FAIL: gcc.target/gcn/umax_1.c scan-assembler-times \\tv_cmpx_gt_i32\\tvcc, s[0-9]+, v[0-9]+ 56 >> [-PASS:-]{+FAIL:+} gcc.target/gcn/umax_1.c scan-assembler-times vec_cmpv64didi 8 >> PASS: gcc.target/gcn/umax_1_run.c (test for excess errors) >> PASS: gcc.target/gcn/umax_1_run.c execution test >> >> PASS: gcc.target/gcn/umin_1.c (test for excess errors) >> PASS: gcc.target/gcn/umin_1.c scan-assembler-times \\tv_cmp_lt_u64\\tvcc, v[[0-9]+:[0-9]+], v[[0-9]+:[0-9]+] 8 >> FAIL: gcc.target/gcn/umin_1.c scan-assembler-times \\tv_cmpx_gt_i32\\tvcc, s[0-9]+, v[0-9]+ 56 >> [-PASS:-]{+FAIL:+} gcc.target/gcn/umin_1.c scan-assembler-times vec_cmpv64didi 8 >> PASS: gcc.target/gcn/umin_1_run.c (test for excess errors) >> PASS: gcc.target/gcn/umin_1_run.c execution test >> >> >> Grüße >> Thomas >> >> >>> gcc/ChangeLog: >>> >>> * config/gcn/gcn.cc (gcn_vectorize_preferred_simd_mode): Prefer V32 on >>> RDNA devices. >>> --- >>> gcc/config/gcn/gcn.cc | 26 ++++++++++++++++++++++++++ >>> 1 file changed, 26 insertions(+) >>> >>> diff --git a/gcc/config/gcn/gcn.cc b/gcc/config/gcn/gcn.cc >>> index 498146dcde9..efb73af50c4 100644 >>> --- a/gcc/config/gcn/gcn.cc >>> +++ b/gcc/config/gcn/gcn.cc >>> @@ -5226,6 +5226,32 @@ gcn_vector_mode_supported_p (machine_mode mode) >>> static machine_mode >>> gcn_vectorize_preferred_simd_mode (scalar_mode mode) >>> { >>> + /* RDNA devices have 32-lane vectors with limited support for 64-bit vectors >>> + (in particular, permute operations are only available for cases that don't >>> + span the 32-lane boundary). >>> + >>> + From the RDNA3 manual: "Hardware may choose to skip either half if the >>> + EXEC mask for that half is all zeros...". This means that preferring >>> + 32-lanes is a good stop-gap until we have proper wave32 support. */ >>> + if (TARGET_RDNA2_PLUS) >>> + switch (mode) >>> + { >>> + case E_QImode: >>> + return V32QImode; >>> + case E_HImode: >>> + return V32HImode; >>> + case E_SImode: >>> + return V32SImode; >>> + case E_DImode: >>> + return V32DImode; >>> + case E_SFmode: >>> + return V32SFmode; >>> + case E_DFmode: >>> + return V32DFmode; >>> + default: >>> + return word_mode; >>> + } >>> + >>> switch (mode) >>> { >>> case E_QImode: >>> -- >>> 2.41.0 > >