From patchwork Thu May 23 06:37:41 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Hu, Lin1" X-Patchwork-Id: 1938195 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=intel.com header.i=@intel.com header.a=rsa-sha256 header.s=Intel header.b=CZgSbyeo; dkim-atps=neutral Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=gcc.gnu.org (client-ip=2620:52:3:1:0:246e:9693:128c; helo=server2.sourceware.org; envelope-from=gcc-patches-bounces+incoming=patchwork.ozlabs.org@gcc.gnu.org; receiver=patchwork.ozlabs.org) Received: from server2.sourceware.org (server2.sourceware.org [IPv6:2620:52:3:1:0:246e:9693:128c]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (secp384r1) server-digest SHA384) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4VlJQm2PSdz20PY for ; Thu, 23 May 2024 16:38:22 +1000 (AEST) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 9CBC5386D601 for ; Thu, 23 May 2024 06:38:20 +0000 (GMT) X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.15]) by sourceware.org (Postfix) with ESMTPS id 6A4C038654A1 for ; Thu, 23 May 2024 06:37:47 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 6A4C038654A1 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 6A4C038654A1 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=192.198.163.15 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1716446270; cv=none; b=lCUfsoO0hXSNaaBXYVZVJp9gh1SgQ42lGbpy4pi6i/4kLMEqp27Z2zbWU02S8B4+xlURJz4H8Q7+SnT83j63Lhp5ci/sQZwh6iw16iZdM/w66m4ZGgAAsUuoGwymhUGHPl1i/4gBu+nW0WgS0Jd/rV/slXFPwK+gkURzB5SKTY4= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1716446270; c=relaxed/simple; bh=r6N4f1wsHb40E/2xylFh0LelKAb0HbfKhfn0eGlA6eA=; h=DKIM-Signature:From:To:Subject:Date:Message-Id:MIME-Version; b=noJgG5cFRcE865oxwQCNVepYGucLUtw03iFcL8spYO4a7rDtfRLFF4o/GSM6xiAdSUZXLveOByLM/e/ptEAwZhPivkIjjNvtW2GUgpRx/3/sZX9eTEFrbIl8NA+IME82dSyk36Gef7kUibUwvqvdc7knxmkj6URNMRix23UVvKs= 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=1716446268; x=1747982268; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=r6N4f1wsHb40E/2xylFh0LelKAb0HbfKhfn0eGlA6eA=; b=CZgSbyeoFvQiLDiiemyHXDo3PNepKnK2EbSa9wLqFCuEO7t9gLQWawEF XrVlVuQLmSIZ4TS5PtsDDjygERuUVwG4nhTFxNxxIMO5Jg21QbyHgQr9k 6hvqUW+qYvfhIQZDBlfCeSs57GbAjgRL2ItBW7UxTQzMEflAcY+LzEU+1 O2vJUp8OmNPZwddUdkwOGbFJCagvdQNH0r2EZxwia/6a6aYLLgzcPxVqK vsj7MPppzHrkp58UvCnADMuml+KnE6CBHbPJdKB6gPazv+FXuXyufDZ8B z4YnNp4oejul2dpf9WQfXLSW2ihc9IRP8ZRSZZKS0uGhPMvBEqKpbe5U9 w==; X-CSE-ConnectionGUID: pV4elXN0RqidDaMdAXDhew== X-CSE-MsgGUID: FIrCdyxrSBO7HmyK7TaYjw== X-IronPort-AV: E=McAfee;i="6600,9927,11080"; a="12918779" X-IronPort-AV: E=Sophos;i="6.08,181,1712646000"; d="scan'208";a="12918779" Received: from fmviesa010.fm.intel.com ([10.60.135.150]) by fmvoesa109.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 22 May 2024 23:37:45 -0700 X-CSE-ConnectionGUID: rrB3Pjn0T1e3/lneeVE6bg== X-CSE-MsgGUID: iNtepBmEQZKeaLKsVGvs5w== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.08,181,1712646000"; d="scan'208";a="33667871" Received: from shvmail03.sh.intel.com ([10.239.245.20]) by fmviesa010.fm.intel.com with ESMTP; 22 May 2024 23:37:43 -0700 Received: from shliclel4217.sh.intel.com (shliclel4217.sh.intel.com [10.239.240.127]) by shvmail03.sh.intel.com (Postfix) with ESMTP id 52A901007C3A; Thu, 23 May 2024 14:37:42 +0800 (CST) From: "Hu, Lin1" To: gcc-patches@gcc.gnu.org Cc: hongtao.liu@intel.com, ubizjak@gmail.com, rguenther@suse.de Subject: [PATCH 2/3] vect: Support v4hi -> v4qi. Date: Thu, 23 May 2024 14:37:41 +0800 Message-Id: <20240523063742.2333446-3-lin1.hu@intel.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20240523063742.2333446-1-lin1.hu@intel.com> References: <20240523063742.2333446-1-lin1.hu@intel.com> MIME-Version: 1.0 X-Spam-Status: No, score=-10.6 required=5.0 tests=BAYES_00, DKIMWL_WL_HIGH, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, KAM_SHORT, 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 X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: gcc-patches-bounces+incoming=patchwork.ozlabs.org@gcc.gnu.org gcc/ChangeLog: PR target/107432 * config/i386/mmx.md (truncv4hiv4qi2): New define_insn. gcc/testsuite/ChangeLog: PR target/107432 * gcc.target/i386/pr107432-6.c: Add test. --- gcc/config/i386/mmx.md | 10 ++++++++++ gcc/testsuite/gcc.target/i386/pr107432-1.c | 12 +++++++++++- gcc/testsuite/gcc.target/i386/pr107432-6.c | 19 ++++++++++++++++--- 3 files changed, 37 insertions(+), 4 deletions(-) diff --git a/gcc/config/i386/mmx.md b/gcc/config/i386/mmx.md index 5f342497885..30f0d88af9f 100644 --- a/gcc/config/i386/mmx.md +++ b/gcc/config/i386/mmx.md @@ -4883,6 +4883,16 @@ (define_insn "truncv2hiv2qi2" (set_attr "prefix" "evex") (set_attr "mode" "TI")]) +(define_insn "truncv4hiv4qi2" + [(set (match_operand:V4QI 0 "register_operand" "=v") + (truncate:V4QI + (match_operand:V4HI 1 "register_operand" "v")))] + "TARGET_AVX512VL && TARGET_AVX512BW" + "vpmovwb\t{%1, %0|%0, %1}" + [(set_attr "type" "ssemov") + (set_attr "prefix" "evex") + (set_attr "mode" "TI")]) + (define_mode_iterator V2QI_V2HI [V2QI V2HI]) (define_insn "truncv2si2" [(set (match_operand:V2QI_V2HI 0 "register_operand" "=v") diff --git a/gcc/testsuite/gcc.target/i386/pr107432-1.c b/gcc/testsuite/gcc.target/i386/pr107432-1.c index a4f37447eb4..e0c7ffc8e5b 100644 --- a/gcc/testsuite/gcc.target/i386/pr107432-1.c +++ b/gcc/testsuite/gcc.target/i386/pr107432-1.c @@ -7,7 +7,7 @@ /* { dg-final { scan-assembler-times "vpmovdw" 8 { target { ! ia32 } } } } */ /* { dg-final { scan-assembler-times "vpmovdb" 6 { target { ia32 } } } } */ /* { dg-final { scan-assembler-times "vpmovdb" 8 { target { ! ia32 } } } } */ -/* { dg-final { scan-assembler-times "vpmovwb" 8 } } */ +/* { dg-final { scan-assembler-times "vpmovwb" 10 } } */ #include @@ -113,6 +113,11 @@ __v2qi mm32_cvtepi16_epi8_builtin_convertvector(__v2hi a) return __builtin_convertvector((__v2hi)a, __v2qi); } +__v4qi mm64_cvtepi16_epi8_builtin_convertvector(__v4hi a) +{ + return __builtin_convertvector((__v4hi)a, __v4qi); +} + __v8qi mm_cvtepi16_epi8_builtin_convertvector(__m128i a) { return __builtin_convertvector((__v8hi)a, __v8qi); @@ -218,6 +223,11 @@ __v2qu mm32_cvtepu16_epu8_builtin_convertvector(__v2hu a) return __builtin_convertvector((__v2hu)a, __v2qu); } +__v4qu mm64_cvtepu16_epu8_builtin_convertvector(__v4hu a) +{ + return __builtin_convertvector((__v4hu)a, __v4qu); +} + __v8qu mm_cvtepu16_epu8_builtin_convertvector(__m128i a) { return __builtin_convertvector((__v8hu)a, __v8qu); diff --git a/gcc/testsuite/gcc.target/i386/pr107432-6.c b/gcc/testsuite/gcc.target/i386/pr107432-6.c index 4a68a10b089..7d3717d45bc 100644 --- a/gcc/testsuite/gcc.target/i386/pr107432-6.c +++ b/gcc/testsuite/gcc.target/i386/pr107432-6.c @@ -8,11 +8,14 @@ /* { dg-final { scan-assembler-times "vcvttps2dq" 4 { target { ! ia32 } } } } */ /* { dg-final { scan-assembler-times "vcvttps2udq" 3 { target { ia32 } } } } */ /* { dg-final { scan-assembler-times "vcvttps2udq" 4 { target { ! ia32 } } } } */ -/* { dg-final { scan-assembler-times "vcvttph2w" 4 } } */ -/* { dg-final { scan-assembler-times "vcvttph2uw" 4 } } */ +/* { dg-final { scan-assembler-times "vcvttph2w" 4 { target { ia32 } } } } */ +/* { dg-final { scan-assembler-times "vcvttph2w" 5 { target { ! ia32 } } } } */ +/* { dg-final { scan-assembler-times "vcvttph2uw" 4 { target { ia32 } } } } */ +/* { dg-final { scan-assembler-times "vcvttph2uw" 5 { target { ! ia32 } } } } */ /* { dg-final { scan-assembler-times "vpmovdb" 10 { target { ia32 } } } } */ /* { dg-final { scan-assembler-times "vpmovdb" 14 { target { ! ia32 } } } } */ -/* { dg-final { scan-assembler-times "vpmovwb" 8 } } */ +/* { dg-final { scan-assembler-times "vpmovwb" 8 { target { ia32 } } } } */ +/* { dg-final { scan-assembler-times "vpmovwb" 10 { target { ! ia32 } } } } */ #include @@ -103,6 +106,11 @@ __v2qi mm32_cvtph_epi8_builtin_convertvector(__v2hf a) return __builtin_convertvector((__v2hf)a, __v2qi); } +__v4qi mm64_cvtph_epi8_builtin_convertvector(__v4hf a) +{ + return __builtin_convertvector((__v4hf)a, __v4qi); +} + __v8qi mm128_cvtph_epi8_builtin_convertvector(__v8hf a) { return __builtin_convertvector((__v8hf)a, __v8qi); @@ -123,6 +131,11 @@ __v2qu mm32_cvtph_epu8_builtin_convertvector(__v2hf a) return __builtin_convertvector((__v2hf)a, __v2qu); } +__v4qu mm64_cvtph_epu8_builtin_convertvector(__v4hf a) +{ + return __builtin_convertvector((__v4hf)a, __v4qu); +} + __v8qu mm128_cvtph_epu8_builtin_convertvector(__v8hf a) { return __builtin_convertvector((__v8hf)a, __v8qu);