From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.16]) by sourceware.org (Postfix) with ESMTPS id 64D283858D20 for ; Sun, 28 Apr 2024 06:00:23 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 64D283858D20 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=intel.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=intel.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 64D283858D20 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=192.198.163.16 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1714284025; cv=none; b=c1qUcJtFSKAerWOrs9YnU/GeXTqPjuoX2hiEJ95g2mknk3N1wj/ox+jQ/IFQFC9dA58nVQknfPnqkrAPh0fgWZLWMNTLiEkZ7Kzs+BYvQl6Vhgpl2oY5sgd55Lh+K/LVpkFNVEY+YExnolHVAo1K7lYhHrCEkR3WBgZDkGugjrc= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1714284025; c=relaxed/simple; bh=Vfo2Qynmc1QKClUiNW3VMjAlhLCkWoE3RXCU/RvDQLs=; h=DKIM-Signature:From:To:Subject:Date:Message-Id:MIME-Version; b=u7oPHAsHnjNKpu7U+TnHsCUg6ev0vNRWE0L8hhKSj5xNSkcf3v/U56bQ2gDCBFoBQmnTTKyOJ5qLSK9aYAXXgoR/6a6vfuUXe/pcEutn+GMY9E0UJFwtsvTmh0C6dt4xRp3dqFawnEhFsviyxDF+VCtflB1dw+CxT4w4TdVCrF4= ARC-Authentication-Results: i=1; server2.sourceware.org DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1714284024; x=1745820024; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=Vfo2Qynmc1QKClUiNW3VMjAlhLCkWoE3RXCU/RvDQLs=; b=g54g6/OuDI3WtTbyM/lfo5YSBzGcYIldYboPdRoxeX59YaKdlOkcKQNx lrP5GK0YHu1lUDoWxKQJhxJiGnLG+0W94KqLRAGuXZeQPWl9OumqpfS2F SBzEgEtRhpRK6bw/vQjIo+XvfVD+cdO2t8/N47vrcTpuLiONy+9JlCQKX rKh1g+nrLLyYHH1L/tdvDb7O4UyU+ZXrLnq8eyYsbGitwWt8v7WsW7K/5 0+lXpbrUqGQFUxHR/yA/a203MB3P/O1ge0ddqcXeS0aNBODrVPQXsAm4s onVM5U4jVHKwlR2eJA03h+y1Yqlw4rtMQINxVXgfuuq0F8Q3RgAaAEQDt w==; X-CSE-ConnectionGUID: XTD77IubTW+m89Yr5e8b7w== X-CSE-MsgGUID: e0kTqQXJQ9+oTC6idx66Rw== X-IronPort-AV: E=McAfee;i="6600,9927,11057"; a="10508288" X-IronPort-AV: E=Sophos;i="6.07,236,1708416000"; d="scan'208";a="10508288" Received: from orviesa002.jf.intel.com ([10.64.159.142]) by fmvoesa110.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 27 Apr 2024 23:00:23 -0700 X-CSE-ConnectionGUID: ef0DFvBDRwezdf0nA2FLWQ== X-CSE-MsgGUID: I1VbB4x9QQWHm8wmTYiiZA== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.07,236,1708416000"; d="scan'208";a="56719504" Received: from shvmail03.sh.intel.com ([10.239.245.20]) by orviesa002.jf.intel.com with ESMTP; 27 Apr 2024 23:00:21 -0700 Received: from shliclel4217.sh.intel.com (shliclel4217.sh.intel.com [10.239.240.127]) by shvmail03.sh.intel.com (Postfix) with ESMTP id 1BEBD1009146; Sun, 28 Apr 2024 14:00:20 +0800 (CST) From: liuhongt To: gcc-patches@gcc.gnu.org Cc: crazylht@gmail.com, hjl.tools@gmail.com Subject: [PATCH 2/2] Extend usdot_prodv*qi with vpmaddwd when AVXVNNI/AVX512VNNI is not available. Date: Sun, 28 Apr 2024 13:58:19 +0800 Message-Id: <20240428055819.2313356-2-hongtao.liu@intel.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20240428055819.2313356-1-hongtao.liu@intel.com> References: <20240428055819.2313356-1-hongtao.liu@intel.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-12.2 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,GIT_PATCH_0,SPF_HELO_NONE,SPF_NONE,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: Bootstrapped and regtested on x86_64-pc-linux-gnu{-m32,}. Ready push to trunk. gcc/ChangeLog: * config/i386/sse.md (usdot_prodv*qi): Extend to VI1_AVX512 with vpmaddwd when avxvnni/avx512vnni is not available. --- gcc/config/i386/sse.md | 55 +++++++++++++++++++++++++++++++----------- 1 file changed, 41 insertions(+), 14 deletions(-) diff --git a/gcc/config/i386/sse.md b/gcc/config/i386/sse.md index 1bf50726e83..f57f36ae380 100644 --- a/gcc/config/i386/sse.md +++ b/gcc/config/i386/sse.md @@ -29955,21 +29955,48 @@ (define_insn "vpshldv__maskz_1" (define_expand "usdot_prod" [(match_operand: 0 "register_operand") - (match_operand:VI1_AVX512VNNI 1 "register_operand") - (match_operand:VI1_AVX512VNNI 2 "register_operand") + (match_operand:VI1_AVX512 1 "register_operand") + (match_operand:VI1_AVX512 2 "register_operand") (match_operand: 3 "register_operand")] - "(( == 64 && TARGET_EVEX512) - || ((TARGET_AVX512VNNI && TARGET_AVX512VL) - || TARGET_AVXVNNI))" -{ - operands[1] = lowpart_subreg (mode, - force_reg (mode, operands[1]), - mode); - operands[2] = lowpart_subreg (mode, - force_reg (mode, operands[2]), - mode); - emit_insn (gen_vpdpbusd_ (operands[0], operands[3], - operands[1], operands[2])); + "TARGET_SSE2" +{ + if ( == 64 + ? TARGET_AVX512VNNI + : ((TARGET_AVX512VNNI && TARGET_AVX512VL) || TARGET_AVXVNNI)) + { + operands[1] = lowpart_subreg (mode, + force_reg (mode, operands[1]), + mode); + operands[2] = lowpart_subreg (mode, + force_reg (mode, operands[2]), + mode); + emit_insn (gen_vpdpbusd_ (operands[0], operands[3], + operands[1], operands[2])); + } + else + { + /* Emulate with vpdpwssd. */ + rtx op1_lo = gen_reg_rtx (mode); + rtx op1_hi = gen_reg_rtx (mode); + rtx op2_lo = gen_reg_rtx (mode); + rtx op2_hi = gen_reg_rtx (mode); + + emit_insn (gen_vec_unpacku_lo_ (op1_lo, operands[1])); + emit_insn (gen_vec_unpacks_lo_ (op2_lo, operands[2])); + emit_insn (gen_vec_unpacku_hi_ (op1_hi, operands[1])); + emit_insn (gen_vec_unpacks_hi_ (op2_hi, operands[2])); + + rtx res1 = gen_reg_rtx (mode); + rtx res2 = gen_reg_rtx (mode); + rtx sum = gen_reg_rtx (mode); + + emit_move_insn (sum, CONST0_RTX (mode)); + emit_insn (gen_sdot_prod (res1, op1_lo, + op2_lo, sum)); + emit_insn (gen_sdot_prod (res2, op1_hi, + op2_hi, operands[3])); + emit_insn (gen_add3 (operands[0], res1, res2)); + } DONE; }) -- 2.31.1