From owner-freebsd-questions@freebsd.org Wed Jun 19 06:28:32 2019 Return-Path: Delivered-To: freebsd-questions@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 20AF215D39A3 for ; Wed, 19 Jun 2019 06:28:32 +0000 (UTC) (envelope-from mayuresh@kathe.in) Received: from relay2-d.mail.gandi.net (relay2-d.mail.gandi.net [217.70.183.194]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 6CC7C772A2 for ; Wed, 19 Jun 2019 06:28:29 +0000 (UTC) (envelope-from mayuresh@kathe.in) Received: from webmail.gandi.net (webmail28.sd4.0x35.net [10.200.201.28]) (Authenticated sender: mayuresh@kathe.in) by relay2-d.mail.gandi.net (Postfix) with ESMTPA id 5982540009 for ; Wed, 19 Jun 2019 06:28:23 +0000 (UTC) MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII; format=flowed Content-Transfer-Encoding: 7bit Date: Wed, 19 Jun 2019 11:58:23 +0530 From: Mayuresh Kathe To: freebsd-questions@freebsd.org Subject: How are modern processor instructions exposed to userland? Reply-To: mayuresh@kathe.in Mail-Reply-To: mayuresh@kathe.in Message-ID: <4b320042bd82ffe9b7793b62719d06f0@kathe.in> X-Sender: mayuresh@kathe.in User-Agent: Roundcube Webmail/1.3.8 X-Rspamd-Queue-Id: 6CC7C772A2 X-Spamd-Bar: -- Authentication-Results: mx1.freebsd.org; spf=pass (mx1.freebsd.org: domain of mayuresh@kathe.in designates 217.70.183.194 as permitted sender) smtp.mailfrom=mayuresh@kathe.in X-Spamd-Result: default: False [-2.95 / 15.00]; RCVD_VIA_SMTP_AUTH(0.00)[]; HAS_REPLYTO(0.00)[mayuresh@kathe.in]; R_SPF_ALLOW(-0.20)[+ip4:217.70.176.0/21]; TO_DN_NONE(0.00)[]; REPLYTO_ADDR_EQ_FROM(0.00)[]; MX_GOOD(-0.01)[spool.mail.gandi.net,fb.mail.gandi.net]; NEURAL_HAM_SHORT(-0.58)[-0.578,0]; RCVD_IN_DNSWL_LOW(-0.10)[194.183.70.217.list.dnswl.org : 127.0.5.1]; MIME_TRACE(0.00)[0:+]; R_DKIM_NA(0.00)[]; ASN(0.00)[asn:29169, ipnet:217.70.176.0/20, country:FR]; SUBJECT_ENDS_QUESTION(1.00)[]; MID_RHS_MATCH_FROM(0.00)[]; FROM_EQ_ENVFROM(0.00)[]; ARC_NA(0.00)[]; NEURAL_HAM_MEDIUM(-1.00)[-1.000,0]; FROM_HAS_DN(0.00)[]; TO_MATCH_ENVRCPT_ALL(0.00)[]; NEURAL_HAM_LONG(-1.00)[-1.000,0]; MIME_GOOD(-0.10)[text/plain]; PREVIOUSLY_DELIVERED(0.00)[freebsd-questions@freebsd.org]; DMARC_NA(0.00)[kathe.in]; RCPT_COUNT_ONE(0.00)[1]; IP_SCORE(-0.97)[ip: (-2.64), ipnet: 217.70.176.0/20(-1.20), asn: 29169(-0.98), country: FR(-0.01)]; RCVD_TLS_LAST(0.00)[]; RCVD_COUNT_TWO(0.00)[2] X-BeenThere: freebsd-questions@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: User questions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 19 Jun 2019 06:28:32 -0000 Hello, I have been wondering about this, and couldn't find an answer on the Web because I didn't know what to search for. Let's think about the AVX-512 instruction introduced with the latest Intel Core i9 Skylake-X processor. I wanted to know how one could use such capabilities via regular C. There should be some way, someone working on the FreeBSD core who would expose that instruction capability to the userland via libc, right? If my assumption is correct, may I know who does that? And, how do they go about doing it? Obviously, knowledge of x86-64 assembler would be a must, so would knowledge of C89; right? Thanks, ~Mayuresh