From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 1039) id 4F8743858D37; Mon, 29 Aug 2022 14:46:21 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 4F8743858D37 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1661784381; bh=PBAnLEdaKkz0IfS4TluqWlglO9WLlMKbrkdUlV99ghA=; h=From:To:Subject:Date:From; b=nXF77GwXLPJCAxQUP2Ln9tFFd4gSKfEAjfcUBJbk8TJNDMDkOUSN9QqTeT4Y+s81L j61mFtmQ2b56TTSGLXOF8qLx6QjsWVxU1gzwKvUNRiID3ib3Vms8UDfrDVUfbc02ui Kmqqhi/UgU8Yf4ARDW1Bc0x7W37o3DRUpZfzooqk= MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset="utf-8" From: H.J. Lu To: gcc-cvs@gcc.gnu.org Subject: [gcc r13-2253] x86: Handle V16BF in ix86_avx256_split_vector_move_misalign X-Act-Checkin: gcc X-Git-Author: H.J. Lu X-Git-Refname: refs/heads/master X-Git-Oldrev: feeb9314002a5e304dc552781ed93f06d7f51c93 X-Git-Newrev: 60d1d296b42b22b08d4eaa38bea02100c07261ac Message-Id: <20220829144621.4F8743858D37@sourceware.org> Date: Mon, 29 Aug 2022 14:46:21 +0000 (GMT) List-Id: https://gcc.gnu.org/g:60d1d296b42b22b08d4eaa38bea02100c07261ac commit r13-2253-g60d1d296b42b22b08d4eaa38bea02100c07261ac Author: H.J. Lu Date: Fri Aug 26 10:26:06 2022 -0700 x86: Handle V16BF in ix86_avx256_split_vector_move_misalign Handle E_V16BFmode in ix86_avx256_split_vector_move_misalign and add V16BF to V_256H iterator. gcc/ PR target/106748 * config/i386/i386-expand.cc (ix86_avx256_split_vector_move_misalign): Handle E_V16BFmode. * config/i386/sse.md (V_256H): Add V16BF. gcc/testsuite/ PR target/106748 * gcc.target/i386/pr106748.c: New test. Diff: --- gcc/config/i386/i386-expand.cc | 4 ++++ gcc/config/i386/sse.md | 4 ++-- gcc/testsuite/gcc.target/i386/pr106748.c | 20 ++++++++++++++++++++ 3 files changed, 26 insertions(+), 2 deletions(-) diff --git a/gcc/config/i386/i386-expand.cc b/gcc/config/i386/i386-expand.cc index 4b216308a18..836ebc82d67 100644 --- a/gcc/config/i386/i386-expand.cc +++ b/gcc/config/i386/i386-expand.cc @@ -745,6 +745,10 @@ ix86_avx256_split_vector_move_misalign (rtx op0, rtx op1) extract = gen_avx_vextractf128v32qi; mode = V16QImode; break; + case E_V16BFmode: + extract = gen_avx_vextractf128v16bf; + mode = V8BFmode; + break; case E_V16HFmode: extract = gen_avx_vextractf128v16hf; mode = V8HFmode; diff --git a/gcc/config/i386/sse.md b/gcc/config/i386/sse.md index e6ab3c92dcf..259048481b6 100644 --- a/gcc/config/i386/sse.md +++ b/gcc/config/i386/sse.md @@ -297,9 +297,9 @@ (define_mode_iterator V_256 [V32QI V16HI V8SI V4DI V8SF V4DF]) -;; All 256bit vector modes including HF vector mode +;; All 256bit vector modes including HF/BF vector modes (define_mode_iterator V_256H - [V32QI V16HI V8SI V4DI V8SF V4DF V16HF]) + [V32QI V16HI V8SI V4DI V8SF V4DF V16HF V16BF]) ;; All 128bit and 256bit vector modes (define_mode_iterator V_128_256 diff --git a/gcc/testsuite/gcc.target/i386/pr106748.c b/gcc/testsuite/gcc.target/i386/pr106748.c new file mode 100644 index 00000000000..6388b1deb23 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/pr106748.c @@ -0,0 +1,20 @@ +/* { dg-do compile } */ +/* { dg-options "-O0 -mavx256-split-unaligned-store -mavx -fpack-struct" } */ + +typedef __bf16 __m256bf16 __attribute__((__vector_size__(32))); +typedef struct { + __m256bf16 _m256bf16[1]; +} YMM_T; + +struct { + YMM_T ymm0; +} fregs; + +__m256bf16 do_test_u3b_0_0; +int do_test_i; + +void +do_test() +{ + (&fregs.ymm0)[do_test_i]._m256bf16[0] = do_test_u3b_0_0; +}