[cfe-dev] [RFC] Opt-in vector of bool type
Keane, Erich via cfe-dev
cfe-dev at lists.llvm.org
Thu May 14 07:14:13 PDT 2020
> Ok, we specifically want to lower it to <N x i1>.. what could go wrong?
I'm having trouble recalling the specifics, but we tried it on SYCL (a downstream) and had a ton of problems to the point we removed it. There isn't a good way to handle it from the ABI perspective, there is no good memory representation as a result, and many of the passes were not handling it correctly. It makes it a huge undertaking.
From: Simon Moll <Simon.Moll at EMEA.NEC.COM>
Sent: Thursday, May 14, 2020 7:09 AM
To: Keane, Erich <erich.keane at intel.com>; Clang Dev <cfe-dev at lists.llvm.org>
Cc: MARUKAWA KAZUSHI <marukawa at nec.com>; ISHIZAKA KAZUHISA <ishizaka at nec.com>; Erich Focht <Erich.Focht at EMEA.NEC.COM>
Subject: Re: [RFC] Opt-in vector of bool type
On 5/14/20 3:57 PM, Keane, Erich wrote:
> There is a temptation when doing this to try to represent these as a vector of i1 in IR. Don't do this, it still has to be i8s, otherwise it causes a number of problems.
Ok, we specifically want to lower it to <N x i1>.. what could go wrong?
> I'll leave it to the rest of the mailing list to judge whether the GCC incompatibility is justified. However, I'm curious as to why this would be opt-in on a target basis? Are there some targets that wouldn't be able to legalize this?
I'd say that some targets may value strict gcc compliance higher than supporting this type (ie if they have no use for it). Making it an opt-in simply means less disturbance. In any case, it's again completely in line with the wording of the gcc documentation to scalarize the type for targets that do not support it.
> -----Original Message-----
> From: cfe-dev <cfe-dev-bounces at lists.llvm.org> On Behalf Of Simon Moll
> via cfe-dev
> Sent: Thursday, May 14, 2020 6:39 AM
> To: cfe-dev at lists.llvm.org
> Cc: MARUKAWA KAZUSHI <marukawa at nec.com>; ISHIZAKA KAZUHISA
> <ishizaka at nec.com>; Erich Focht <Erich.Focht at EMEA.NEC.COM>
> Subject: [cfe-dev] [RFC] Opt-in vector of bool type
> We would like to extend Clang to allow 'bool' as a valid vector element type in C/C++ code for select targets.
> This is the natural type for SIMD masks and would facilitate clean SIMD intrinsic declarations in C/C++ code.
> Vectors of i1 are supported on IR level and below down to many SIMD ISAs, such as AVX512 or the VE target (NEC SX-Aurora TSUBASA).
> We understand the historical reasons for not supporting this (gcc complicance).
> However, this would be an opt-in feature and toolchains/targets that do not want this will be unaffected by the change.
> Looking forward to your feedback.
> - Simon
> cfe-dev mailing list
> cfe-dev at lists.llvm.org
More information about the cfe-dev