From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by sourceware.org (Postfix) with ESMTP id 2F32A385743B for ; Fri, 2 Jul 2021 09:21:44 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 2F32A385743B Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-518-eGa5y7xnMz6xvmj4Oej07A-1; Fri, 02 Jul 2021 05:21:42 -0400 X-MC-Unique: eGa5y7xnMz6xvmj4Oej07A-1 Received: from smtp.corp.redhat.com (int-mx07.intmail.prod.int.phx2.redhat.com [10.5.11.22]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 55AC8800D62; Fri, 2 Jul 2021 09:21:41 +0000 (UTC) Received: from tucnak.zalov.cz (ovpn-112-143.ams2.redhat.com [10.36.112.143]) by smtp.corp.redhat.com (Postfix) with ESMTPS id AD63610016F8; Fri, 2 Jul 2021 09:21:40 +0000 (UTC) Received: from tucnak.zalov.cz (localhost [127.0.0.1]) by tucnak.zalov.cz (8.16.1/8.16.1) with ESMTPS id 1629LbKY995041 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT); Fri, 2 Jul 2021 11:21:37 +0200 Received: (from jakub@localhost) by tucnak.zalov.cz (8.16.1/8.16.1/Submit) id 1629LXNG995040; Fri, 2 Jul 2021 11:21:33 +0200 Date: Fri, 2 Jul 2021 11:21:33 +0200 From: Jakub Jelinek To: Richard Biener Cc: Jacob Lifshay , GNU C Library , llvm-dev , GCC Patches , IA32 System V Application Binary Interface , Joseph Myers Subject: Re: [llvm-dev] [PATCH] Add optional _Float16 support Message-ID: <20210702092133.GI7746@tucnak> Reply-To: Jakub Jelinek References: <20210701210537.51272-1-hjl.tools@gmail.com> MIME-Version: 1.0 In-Reply-To: X-Scanned-By: MIMEDefang 2.84 on 10.5.11.22 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset=us-ascii Content-Disposition: inline X-Spam-Status: No, score=-5.8 required=5.0 tests=BAYES_00, DKIMWL_WL_HIGH, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, RCVD_IN_DNSWL_LOW, RCVD_IN_MSPIKE_H4, RCVD_IN_MSPIKE_WL, SPF_HELO_NONE, SPF_NONE, TXREP autolearn=ham autolearn_force=no version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on server2.sourceware.org X-BeenThere: libc-alpha@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Libc-alpha mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 02 Jul 2021 09:21:45 -0000 On Fri, Jul 02, 2021 at 09:45:46AM +0200, Richard Biener via Gcc-patches wrote: > > > > are? (If it is restricted to SSE, we can of course ensure relevant > > > libgcc > > > > functions are built with SSE enabled, and likewise in glibc if that gains > > > > _Float16 functions, though maybe with some extra complications to get > > > > relevant testcases to run whenever possible.) > > > > > > > > > > _Float16 functions in libgcc should be compiled with SSE enabled. > > > > > > BTW, _Float16 software emulation may require more than just SSE > > > since we need to do _Float16 load and store with XMM registers. > > > There is no 16bit load/store for XMM registers without AVX512FP16. > > > > > > > Umm, if you just need to load/store 16-bit scalars in XMM registers you can > > use pextrw and pinsrw which don't require AVX. f16x8 can use any of the > > standard full-register load/stores. > > It looks like that requires SSE2, with SSE only inserts/extracts > to/from MMX regs > are supported. But of course GPR half-word loads and GPR->XMM moves of > full size would work. Loads can be done in SSE2 directly with PINSRW, that supports 16-bit load from memory to XMM reg. But SSE2 PEXTRW only supports stores into GPR and one needs SSE4.1 fo PEXTRW into memory. So, for the stores and SSE2 one needs secondary reload... Jakub