From patchwork Mon Aug 19 08:56:45 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Haochen Jiang X-Patchwork-Id: 1973725 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=jLS4C6hK; dkim-atps=neutral Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=gcc.gnu.org (client-ip=8.43.85.97; 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 [8.43.85.97]) (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 4WnRM85rLRz1yfj for ; Mon, 19 Aug 2024 18:57:56 +1000 (AEST) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id E2EFA3865C2D for ; Mon, 19 Aug 2024 08:57:54 +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.18]) by sourceware.org (Postfix) with ESMTPS id 1A93A3864849 for ; Mon, 19 Aug 2024 08:57:22 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 1A93A3864849 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 1A93A3864849 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=192.198.163.18 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1724057843; cv=none; b=oPa/OIxiLNaLg1vYgOCCMeFX0tX+PiguE0t4GHLr2xrMqJcm2/wu0AmY2tpxU9xH5P9WmpmfBBLonr/64vpBlvAZKNrRqVZLHPzk9n/knxr2vVJ7HqWTnrJ8951hrGKC41Lcmuc5lqoxDHqL9HNnKVTRZrUyKgNRy6ltIrRdCY4= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1724057843; c=relaxed/simple; bh=VApy9XRfKEkAB/sDANQgmcq9ax6n2GuF+7OgQ+xJrgk=; h=DKIM-Signature:From:To:Subject:Date:Message-ID:MIME-Version; b=qUzM24L2KGCn6mGB0w6n+huPf2rETOSgNtaMfN6gPrWWkF6DS5O7HG5dp1sd58XYYvNk0iAtFu2IT84ozMCBX2q0mN79oCY5ie39PxCgddJ4iRF+QUrRbpxMFHqhDjRbEES937V8XaFrwCRkgMxhLY6EMk9ucy9QXa4rePDP11w= 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=1724057842; x=1755593842; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=VApy9XRfKEkAB/sDANQgmcq9ax6n2GuF+7OgQ+xJrgk=; b=jLS4C6hKHBueGkaIJKglpPx7QSul3WCDFz4mG68t5VswLXR1Pbizt8Lj 0M1GkYc58BCc+Ftqbe1OeP2NCj1S0Z+SCKIZFg+zpIzRzlSOEtyJ3AQjQ 9Y4kr1mY10x+nIIJLWuxzu+zx5QXBWfZQCeS71B+lGWxi9WPMtaWYiEli H080bg3ctjJSe/qgZJ484v3htlqCLD3YbTxC+tx3A/nLOMjkRK4Tm8P0c nkftHWUi1aYGF8/8uzDAuUCL9k7hhALKPwy9mtJMzcpZIqdDGbf9kahJG MePiTRDvQ2noLZBHqd24ixMBh4nzi8r0rxhn3Jd+qE9fM6jRnZIIlA/ds Q==; X-CSE-ConnectionGUID: ZybTZDIZTOmP2Yjci1obIw== X-CSE-MsgGUID: qTKfeVJrRWGqtmjPxPCl+g== X-IronPort-AV: E=McAfee;i="6700,10204,11168"; a="21837739" X-IronPort-AV: E=Sophos;i="6.10,158,1719903600"; d="scan'208";a="21837739" Received: from fmviesa001.fm.intel.com ([10.60.135.141]) by fmvoesa112.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 19 Aug 2024 01:57:20 -0700 X-CSE-ConnectionGUID: C/VpMNuZSo+3blmwdk2Jyw== X-CSE-MsgGUID: uc8rwQXDRbiciH51W/7xFw== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.10,158,1719903600"; d="scan'208";a="91084183" Received: from scymds04.sc.intel.com ([10.82.73.238]) by fmviesa001.fm.intel.com with ESMTP; 19 Aug 2024 01:57:19 -0700 Received: from icl-spr-01.jf.intel.com (icl-spr-01.jf.intel.com [10.165.54.241]) by scymds04.sc.intel.com (Postfix) with ESMTP id 9B85D2003EAC; Mon, 19 Aug 2024 01:57:19 -0700 (PDT) From: Haochen Jiang To: gcc-patches@gcc.gnu.org Cc: hongtao.liu@intel.com, zewei.mo@pitt.edu, ubizjak@gmail.com Subject: [PATCH 01/12] i386: Refactor m512-check.h Date: Mon, 19 Aug 2024 01:56:45 -0700 Message-ID: <20240819085717.193256-2-haochen.jiang@intel.com> X-Mailer: git-send-email 2.43.5 In-Reply-To: <20240819085717.193256-1-haochen.jiang@intel.com> References: <20240819085717.193256-1-haochen.jiang@intel.com> MIME-Version: 1.0 X-Spam-Status: No, score=-10.7 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, 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 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 After AVX10 introduction, we still want to use AVX512 helper functions to avoid duplicate code. In order to reuse them, we need to do some refactor to make sure each function define happen under correct ISA to avoid ABI warnings. gcc/testsuite/ChangeLog: * gcc.target/i386/m512-check.h: Wrap the function define with correct vector size. --- gcc/testsuite/gcc.target/i386/m512-check.h | 66 ++++++++++++---------- 1 file changed, 35 insertions(+), 31 deletions(-) diff --git a/gcc/testsuite/gcc.target/i386/m512-check.h b/gcc/testsuite/gcc.target/i386/m512-check.h index 68e74fce68d..d5d18372947 100644 --- a/gcc/testsuite/gcc.target/i386/m512-check.h +++ b/gcc/testsuite/gcc.target/i386/m512-check.h @@ -61,6 +61,12 @@ typedef union unsigned long long a[8]; } union512i_uq; +typedef union +{ + __m512h x; + _Float16 a[32]; +} union512h; + typedef union { __m128h x; @@ -73,27 +79,6 @@ typedef union _Float16 a[16]; } union256h; -typedef union -{ - __m512h x; - _Float16 a[32]; -} union512h; - -CHECK_EXP (union512i_b, char, "%d") -CHECK_EXP (union512i_w, short, "%d") -CHECK_EXP (union512i_d, int, "0x%x") -CHECK_EXP (union512i_q, long long, "0x%llx") -CHECK_EXP (union512, float, "%f") -CHECK_EXP (union512d, double, "%f") -CHECK_EXP (union512i_ub, unsigned char, "%d") -CHECK_EXP (union512i_uw, unsigned short, "%d") -CHECK_EXP (union512i_ud, unsigned int, "0x%x") -CHECK_EXP (union512i_uq, unsigned long long, "0x%llx") - - -CHECK_FP_EXP (union512, float, ESP_FLOAT, "%f") -CHECK_FP_EXP (union512d, double, ESP_DOUBLE, "%f") - #define CHECK_ROUGH_EXP(UNION_TYPE, VALUE_TYPE, FMT) \ static int \ __attribute__((noinline, unused)) \ @@ -126,28 +111,47 @@ check_rough_##UNION_TYPE (UNION_TYPE u, const VALUE_TYPE *v, \ return err; \ } -CHECK_ROUGH_EXP (union512, float, "%f") -CHECK_ROUGH_EXP (union512d, double, "%f") +#ifndef ESP_FLOAT16 +#define ESP_FLOAT16 0.27 +#endif + CHECK_ROUGH_EXP (union256, float, "%f") CHECK_ROUGH_EXP (union256d, double, "%f") CHECK_ROUGH_EXP (union128, float, "%f") CHECK_ROUGH_EXP (union128d, double, "%f") -#ifdef AVX512FP16 +#ifndef AVX512F_LEN +CHECK_EXP (union512i_b, char, "%d") +CHECK_EXP (union512i_w, short, "%d") +CHECK_EXP (union512i_d, int, "0x%x") +CHECK_EXP (union512i_q, long long, "0x%llx") +CHECK_EXP (union512, float, "%f") +CHECK_EXP (union512d, double, "%f") +CHECK_EXP (union512i_ub, unsigned char, "%d") +CHECK_EXP (union512i_uw, unsigned short, "%d") +CHECK_EXP (union512i_ud, unsigned int, "0x%x") +CHECK_EXP (union512i_uq, unsigned long long, "0x%llx") + +CHECK_FP_EXP (union512, float, ESP_FLOAT, "%f") +CHECK_FP_EXP (union512d, double, ESP_DOUBLE, "%f") -CHECK_EXP (union128h, _Float16, "%f") -CHECK_EXP (union256h, _Float16, "%f") -CHECK_EXP (union512h, _Float16, "%f") +CHECK_ROUGH_EXP (union512, float, "%f") +CHECK_ROUGH_EXP (union512d, double, "%f") -#ifndef ESP_FLOAT16 -#define ESP_FLOAT16 0.27 +#if defined(AVX512FP16) +CHECK_EXP (union512h, _Float16, "%f") +CHECK_FP_EXP (union512h, _Float16, ESP_FLOAT16, "%f") +CHECK_ROUGH_EXP (union512h, _Float16, "%f") +#endif #endif +#if defined(AVX512FP16) +CHECK_EXP (union128h, _Float16, "%f") +CHECK_EXP (union256h, _Float16, "%f") + CHECK_FP_EXP (union128h, _Float16, ESP_FLOAT16, "%f") CHECK_FP_EXP (union256h, _Float16, ESP_FLOAT16, "%f") -CHECK_FP_EXP (union512h, _Float16, ESP_FLOAT16, "%f") CHECK_ROUGH_EXP (union128h, _Float16, "%f") CHECK_ROUGH_EXP (union256h, _Float16, "%f") -CHECK_ROUGH_EXP (union512h, _Float16, "%f") #endif