simon_tatham added a comment.

In D85009#2187643 <https://reviews.llvm.org/D85009#2187643>, @jfb wrote:

> Language-wise I think https://wg21.link/p1467 is where C++ is going, and C is 
> taking a similar approach.

That doesn't seem to mention vectors at all. As I said on Friday, I wouldn't 
disagree with the idea that //scalar// bfloat should have consistent semantics 
across compiler targets.

> I'd like to make sure this is well thought out. Not just "the ISA does this, 
> let's do the same". We know other ISAs act differently, and I'm not clear on 
> what the intended behavior will be for people writing C and C++ code.

But C-language bindings for vector subsystems have //always// been strongly 
tied to the capabilities of the ISA. You enable them in the first place by 
including some target-specific header such as `arm_neon.h` or `wmmintrin.h` or 
what have you, and then the available operations are whatever are defined by 
the organization that specified that header.

In this case, `bfloat16x4_t` and `bfloat16x8_t` are type names defined in 
`arm_neon.h`. That header is defined by Arm (in the ACLE spec), and you only 
include it and use its definitions if you know you're targeting the Arm ISA. So 
it makes sense that the available operations should correspond to the things 
you can do efficiently on that ISA.

If you wanted //cross-platform// vector bfloat code, you'd include some other 
header that nobody has defined yet. Or, more likely, you'd just write scalar 
bfloat source code, and rely on the compiler to vectorise it for each target.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D85009/new/

https://reviews.llvm.org/D85009

_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to